[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: Bug report\ndescription: Create a report to help us improve.\nbody:\n - type: markdown\n   attributes: \n     value: |\n      ### Bug Report\n      Your issue might have been already reported. Please check the [frequently asked questions](https://github.com/HigherOrderCO/Bend/blob/main/FAQ.md) first, especially if you're having trouble installing or running the GPU runtime.\n      Then, please check the [existing issues](https://github.com/HigherOrderCO/Bend/issues) to see if someone else already reported it. If you find a similar issue, respond with a reaction or any additional information that you feel may be helpful.\n      Before opening a new issue, make sure that your Bend and HVM versions are up-to-date.\n\n      ### For Windows Users\n      There is currently no native way to make Bend work on windows, as a temporary workaround, please use [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install).\n  \n - type: textarea\n   attributes:\n    label: Reproducing the behavior\n    description: A clear and concise description of what the bug is.\n    value: |\n      Example:\n       Running command...\n       With code....\n       Error...\n       Expected behavior....\n   validations:\n    required: true\n \n - type: textarea\n   attributes:\n    label: System Settings\n    description: Your System's settings\n    value: |\n     Example:\n      - HVM: [e.g. HVM 2.0.13]\n      - Bend: [e.g. 0.2.11]\n      - OS: [e.g. Linux (Ubuntu 22.04)]\n      - CPU: [e.g. Intel i9-14900KF]\n      - GPU: [e.g. RTX 4090]\n      - Cuda Version [e.g. release 12.4, V12.4.131]\n   validations:\n     required: true\n\n - type: textarea\n   attributes:\n    label: Additional context\n    description: Add any other context about the problem here (Optional). \n   \n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links: \n    - name: HVM Related Issues\n      url: https://github.com/HigherOrderCO/HVM/issues/new/choose\n      about: For HVM related Issues, please Report them on the HVM repository.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest a feature that you think should be added.\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/workflows/checks.yml",
    "content": "name: Checks\n\non:\n  pull_request:\n  merge_group:\n  push:\n    branches:\n      - main\n\njobs:\n  check:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - uses: actions/checkout@v3\n      - uses: dtolnay/rust-toolchain@stable\n      - uses: actions/cache@v2\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: ${{ runner.os }}-check-${{ hashFiles('**/Cargo.lock') }}\n      - run: RUSTFLAGS=\"-D warnings\" cargo check --all-targets\n  test:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - uses: actions/checkout@v3\n      - uses: dtolnay/rust-toolchain@stable\n      - uses: actions/cache@v2\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: ${{ runner.os }}-test-${{ hashFiles('**/Cargo.lock') }}\n      - run: cargo install hvm\n      - run: cargo test -- --test-threads=1\n  clippy:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - uses: actions/checkout@v3\n      - uses: dtolnay/rust-toolchain@stable\n        with:\n          components: clippy\n      - uses: actions/cache@v2\n        with:\n          path: |\n            ~/.cargo/registry\n            ~/.cargo/git\n            target\n          key: ${{ runner.os }}-clippy-${{ hashFiles('**/Cargo.lock') }}\n      - run: RUSTFLAGS=\"-D warnings\" cargo clippy\n  fmt:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - uses: actions/checkout@v3\n      - uses: dtolnay/rust-toolchain@stable\n        with:\n          components: rustfmt\n      - run: cargo fmt --check\n  cspell:\n    runs-on: ubuntu-latest\n    timeout-minutes: 10\n    steps:\n      - uses: actions/checkout@v3\n      - uses: streetsidesoftware/cspell-action@v5\n        with:\n          incremental_files_only: false\n          config: ./cspell.json\n          files: |\n            **/*.rs\n            **/*.md\n"
  },
  {
    "path": ".gitignore",
    "content": "/target\n*.snap.new\n.out.hvm\n.DS_Store\n.vscode"
  },
  {
    "path": ".rustfmt.toml",
    "content": "edition = \"2021\"\nmax_width = 110\n# won't add \\r\\n on windows machines, better on diffs\nnewline_style = \"Unix\"\nuse_small_heuristics = \"Max\"\ntab_spaces = 2\nuse_field_init_shorthand = true\nuse_try_shorthand = true\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),\nand this project does not currently adhere to a particular versioning scheme.\n\n## [0.2.38] - 2025-02-23\n\n### Added\n\n- Emit a warning when a rule in a pattern matching function is unreachable. ([#736][gh-736])\n\n### Fixed\n- Fix type checker not properly unifying all the arms of a match expression. ([#734][gh-734])\n- Fix signed numbers (i24 and f24) not being parsed after parenthesis `(`. ([#748][gh-748])\n\n## [0.2.37] - 2024-10-18\n\n### Fixed\n\n- Fix variable binding in pattern matching when the irrefutable pattern optimization occurs. ([#618][gh-618])\n- Don't warn on unused generated definitions. ([#514][gh-514])\n- Fix local definitions not being desugared properly. ([#623][gh-623])\n- Expand references to functions generated by the `float_combinators` pass inside the main function. ([#642][gh-642])\n- Expand references inside constructors in the main function. ([#643][gh-643])\n- Fix readback when hvm net has `a{n}` or `x{n}` vars. ([#659][gh-659])\n- Fix imported constructors not being updated to Constructor expression. ([#674][gh-674])\n- Fix parse error on parenthesized eraser. ([#675][gh-675])\n- Fix IO/FS/read_line when the line ends with a EOF. ([#638][gh-638])\n- Fix lambda body being parsed as tuple in imp syntax. ([#706][gh-706])\n\n### Added\n\n- Add type system for Bend. ([#615][gh-615], [#679][gh-679], see [Type Checking](docs/type-checking.md))\n- Add import system. ([#544][gh-544])\n- Add multi line comment `#{ ... #}` syntax. ([#595][gh-595])\n- Add error message when input file is not found. ([#513][gh-513])\n- Add `List/filter` and `String/{equals, filter}` builtins.\n- Add IO functions for loading dynamically linked libraries (`IO/DyLib/open`, `IO/DyLib/call`, `IO/DyLib/close`). ([#621][gh-621])\n\n### Changed\n\n- Change tuple syntax to not require parentheses in some cases. ([#554][gh-554])\n- Improve error messages in branching statements. ([#464][gh-464])\n- Change branches to support ending with ask statements. ([#629][gh-629])\n- Improve hexadecimal and binary floating numbers. ([#648][gh-648])\n- Change IO functions to return Result. ([#657][gh-657])\n- Revamp the diagnostics system and parser to show more error and warning messages ([#673][gh-673])\n\n## [0.2.36] - 2024-07-04\n\n### Changed\n\n- Improve error messages for redefinition of types and objects. ([#485][gh-485])\n- Don't allow tabs to be used for indentation or spacing. ([#463][gh-463])\n- Rename builtin function `sleep` to `IO/nanosleep`. ([#581][gh-581])\n- Equational number pattern compilation to use the predecessor variable when possible. ([#470][gh-470])\n- Rename `Bytes/decode_utf8` to `String/decode_utf8` and `Bytes/decode_ascii` to `String/decode_ascii`.\n- Rename `log` to `Math/log` and `atan2` to `Math/atan2`.\n\n### Fixed\n\n- Fix readback of numeric operations. ([#467][gh-467])\n- Propagate the \"builtin\" attribute of definitions when extracting functions from `bend` and `fold` syntax.\n- Panic while using unscoped variables on definition patterns. ([#468][gh-468])\n\n### Added\n\n- Create new type of top-level definition for writing native HVM definitions. ([#586][gh-586])\n- Add `log` and `atan2` builtin functions. ([#583][gh-583])\n- Add `to_f24`, `to_u24` and `to_i24` number casting builtin functions. ([#582][gh-582])\n- Add `IO/sleep` builtin function to sleep for a given amount of seconds as a float. ([#581][gh-581])\n- Add primitive file IO functions `IO/FS/{read, write, seek, open, close}`. ([#573][gh-573])\n- Add encoding/decoding builtin functions `Bytes/{decode_utf8, decode_ascii} String/{encode_ascii, decode_ascii} Utf8/{decode_character, REPLACEMENT_CHARACTER}`. ([#580][gh-580])\n- Add `IO/print` function to print to stdout. ([#579][gh-579])\n- Add `IO/input` function to read a line of input from stdin. ([#579][gh-579])\n- Add file IO utilities `IO/FS/{read_file, write_file, read_line, read_to_end}`. ([#578][gh-578])\n- Add list utilities `List/{length, reverse, flatten, concat}`.\n- Add `elif` chains to functional syntax. ([#596][gh-596])\n- Add local definitions to imperative syntax. ([#562][gh-562])\n- Add local definitions to functional syntax.\n- Add repeated field name error message.\n- Add `Math` builtin functions. ([#570][gh-570])\n- Add primitive file IO function `IO/FS/flush`. ([#598][gh-598])\n- Changed `bend run` to `bend run-rs` and `bend run` defaults to the C implementation. ([#620][gh-620])\n\n## [0.2.35] - 2024-06-06\n\n### Changed\n\n- Make lambda `Term` with bind patterns display as `let` terms. ([#466][gh-466])\n\n## [0.2.34] - 2024-06-05\n\n### Added\n\n- Add syntax for \"less than or equal\" `<=` and \"greater than or equal\" `>=` numeric operators. ([#451][gh-451])\n\n## [0.2.33] - 2024-06-05\n\n### Added\n\n- Implement `expand_main`, a compilation pass that expands references in the entry point function. ([#424][gh-424])\n\n### Changed\n\n- Make the `float_combinators` pass no longer extract in the entry point function. ([#424][gh-424])\n\n## [0.2.32] - 2024-06-05\n\n### Added\n\n- Implement the built-in `Tree` datatype. ([#528][gh-528])\n- Implement `![]` and `!` syntax for `Tree` literals. ([#528][gh-528])\n- Create a changelog.\n\n### Changed\n\n- Move the builtins documentation to `/docs`.\n\n## [0.2.30] - 2024-06-04\n\n### Changed\n\n- No longer expand generated recursive definitions. ([#502][gh-502])\n\n## [0.2.29] - 2024-06-04\n\n### Added\n\n- Support custom HVM binaries. ([#479][gh-479])\n\n### Changed\n\n- Make monadic blocks lazy by deferring execution of continuations with free vars. ([#526][gh-526])\n\n## [0.2.28] - 2024-05-30\n\n### Added\n\n- Support mapper statements. ([#465][gh-465])\n\n## [0.2.27] - 2024-05-29\n\n### Changed\n\n- Make `with` clauses take a bind and an argument. ([#516][gh-516])\n\n## [0.2.26] - 2024-05-28\n\n### Changed\n\n- `do` keyword to `with`. ([#494][gh-494])\n\n### Added\n\n- `wrap` alias inside `with` blocks. ([#494][gh-494])\n\n## [0.2.25] - 2024-05-28\n\n### Added\n\n- Generated constructor tags. ([#512][gh-512])\n\n## [0.2.24] - 2024-05-27\n\n### Added\n\n- `elif` chains. ([#427][gh-427])\n\n## [0.2.23] - 2024-05-27\n\n### Fixed\n\n- `gen-cu` and `gen-c` commands after move to HVM syntax tree.\n\n## [0.2.22] - 2024-05-26\n\n### Changed\n\n- Rust channel from `nightly` to `stable`. ([#486][gh-486])\n\n## [0.2.21] - 2024-05-25\n\n### Changed\n\n- HVM syntax tree for representing inets inside the compiler. ([#475][gh-475])\n\n## [0.2.20] - 2024-05-24\n\n### Fixed\n\n- Map getters generation inside map setters. ([#489][gh-489])\n\n## [0.2.19] - 2024-05-24\n\n### Changed\n\n- Variable names to not allow `__`. ([#478][gh-478])\n\n## [0.2.18] - 2024-05-24\n\n### Fixed\n\n- Nested map getters generation. ([#483][gh-483])\n\n## [0.2.17] - 2024-05-23\n\n### Changed\n\n- Top-level names to not start with `//`. ([#443][gh-443])\n\n## [0.2.16] - 2024-05-23\n\n### Added\n\n- New `IO` builtins.\n\n### Fixed\n\n- Definition pruning transformation.\n\n## [0.2.15] - 2024-05-22\n\n### Fixed\n\n- Exponentiation miscompilation. ([#444][gh-444])\n\n## [0.2.14] - 2024-05-22\n\n### Changed\n\n- Inet level eta-reduction pass to not reduce number nodes.\n\n## [0.2.13] - 2024-05-22\n\n### Fixed\n\n- Scope of `fork`.\n\n## [0.2.12] - 2024-05-22\n\n### Changed\n\n- Functional syntax `data` keyword to `type`.\n\n## [0.2.11] - 2024-05-22\n\n### Added\n\n- List comprehension.\n- Bit shift left and Bit shift right.\n\n## [0.2.10] - 2024-05-21\n\n### Changed\n\n- Numbers to new HVM number operation format.\n- Rules definition to be in a single block.\n- Disabled `net-size` check by default.\n\n## [0.2.9] - 2024-05-19\n\n### Changed\n\n- Readback error messages.\n\n## [0.2.8] - 2024-05-19\n\n### Changed\n\n- Increase max net size.\n- `check-net-size` to be optional.\n\n## [0.2.7] - 2024-05-17\n\n### Added\n\n- Apache-2.0 License.\n\n## [0.2.6] - 2024-05-17\n\n### Added\n\n- Simple readback of tuples.\n\n### Changed\n\n- Imperative syntax to require `,` in list-like builtins.\n\n### Fixed\n\n- Empty map parsing.\n\n## [0.2.5] - 2024-05-16\n\n### Added\n\n- Exponentiation `**` operator.\n\n### Changed\n\n- `go` to `fork` inside `bend` statement.\n\n## [0.2.4] - 2024-05-15\n\n### Changed\n\n- New version for hvm-core compatibility.\n\n## [0.2.3] - 2024-05-15\n\n### Changed\n\n- Rename to `bend-lang`.\n- Use crates.io HVM.\n\n### Added\n\n- List readback.\n\n## [0.2.2] - 2024-05-15\n\n### Changed\n\n- Comments from `//` to `#`.\n- Lambda syntax and built-in constructor names.\n- Fold to require explicit state passing.\n\n### Added\n\n- Record types and destructuring.\n- String readback.\n\n## [0.2.1] - 2024-05-15\n\n### Fixed\n\n- Number parsing in imperative syntax.\n\n### Changed\n\n- Require `\\n` after return.\n\n## [0.2.0] - 2024-05-14\n\n- Initial public release of Bend.\n\n[0.2.0]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.0\n[0.2.1]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.1\n[0.2.2]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.2\n[0.2.3]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.3\n[0.2.4]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.4\n[0.2.5]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.5\n[0.2.6]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.6\n[0.2.7]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.7\n[0.2.8]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.8\n[0.2.9]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.9\n[0.2.10]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.10\n[0.2.11]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.11\n[0.2.12]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.12\n[0.2.13]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.13\n[0.2.14]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.14\n[0.2.15]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.15\n[0.2.16]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.16\n[0.2.17]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.17\n[0.2.18]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.18\n[0.2.19]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.19\n[0.2.20]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.20\n[0.2.21]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.21\n[0.2.22]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.22\n[0.2.23]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.23\n[0.2.24]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.24\n[0.2.25]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.25\n[0.2.26]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.26\n[0.2.27]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.27\n[0.2.28]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.28\n[0.2.29]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.29\n[0.2.30]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.30\n[0.2.32]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.32\n[0.2.33]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.33\n[0.2.34]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.34\n[0.2.35]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.35\n[0.2.36]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.36\n[0.2.37]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.37\n[0.2.38]: https://github.com/HigherOrderCO/Bend/releases/tag/0.2.38\n[gh-424]: https://github.com/HigherOrderCO/Bend/issues/424\n[gh-427]: https://github.com/HigherOrderCO/Bend/issues/427\n[gh-443]: https://github.com/HigherOrderCO/Bend/issues/443\n[gh-444]: https://github.com/HigherOrderCO/Bend/issues/444\n[gh-451]: https://github.com/HigherOrderCO/Bend/issues/451\n[gh-463]: https://github.com/HigherOrderCO/Bend/issues/463\n[gh-464]: https://github.com/HigherOrderCO/Bend/issues/464\n[gh-465]: https://github.com/HigherOrderCO/Bend/issues/465\n[gh-466]: https://github.com/HigherOrderCO/Bend/issues/466\n[gh-467]: https://github.com/HigherOrderCO/Bend/issues/467\n[gh-468]: https://github.com/HigherOrderCO/Bend/issues/468\n[gh-470]: https://github.com/HigherOrderCO/Bend/issues/470\n[gh-475]: https://github.com/HigherOrderCO/Bend/issues/475\n[gh-478]: https://github.com/HigherOrderCO/Bend/issues/478\n[gh-479]: https://github.com/HigherOrderCO/Bend/issues/479\n[gh-483]: https://github.com/HigherOrderCO/Bend/issues/483\n[gh-485]: https://github.com/HigherOrderCO/Bend/issues/485\n[gh-486]: https://github.com/HigherOrderCO/Bend/issues/486\n[gh-489]: https://github.com/HigherOrderCO/Bend/issues/489\n[gh-494]: https://github.com/HigherOrderCO/Bend/issues/494\n[gh-502]: https://github.com/HigherOrderCO/Bend/issues/502\n[gh-512]: https://github.com/HigherOrderCO/Bend/issues/512\n[gh-513]: https://github.com/HigherOrderCO/Bend/issues/513\n[gh-514]: https://github.com/HigherOrderCO/Bend/issues/514\n[gh-516]: https://github.com/HigherOrderCO/Bend/issues/516\n[gh-526]: https://github.com/HigherOrderCO/Bend/issues/526\n[gh-528]: https://github.com/HigherOrderCO/Bend/issues/528\n[gh-544]: https://github.com/HigherOrderCO/Bend/pull/544\n[gh-554]: https://github.com/HigherOrderCO/Bend/issues/554\n[gh-562]: https://github.com/HigherOrderCO/Bend/issues/562\n[gh-570]: https://github.com/HigherOrderCO/Bend/issues/570\n[gh-573]: https://github.com/HigherOrderCO/Bend/issues/573\n[gh-578]: https://github.com/HigherOrderCO/Bend/issues/578\n[gh-579]: https://github.com/HigherOrderCO/Bend/issues/579\n[gh-580]: https://github.com/HigherOrderCO/Bend/issues/580\n[gh-581]: https://github.com/HigherOrderCO/Bend/issues/581\n[gh-582]: https://github.com/HigherOrderCO/Bend/issues/582\n[gh-583]: https://github.com/HigherOrderCO/Bend/issues/583\n[gh-586]: https://github.com/HigherOrderCO/Bend/issues/586\n[gh-595]: https://github.com/HigherOrderCO/Bend/issues/595\n[gh-596]: https://github.com/HigherOrderCO/Bend/issues/596\n[gh-598]: https://github.com/HigherOrderCO/Bend/issues/598\n[gh-618]: https://github.com/HigherOrderCO/Bend/issues/618\n[gh-620]: https://github.com/HigherOrderCO/Bend/issues/620\n[gh-621]: https://github.com/HigherOrderCO/Bend/issues/621\n[gh-623]: https://github.com/HigherOrderCO/Bend/issues/623\n[gh-629]: https://github.com/HigherOrderCO/Bend/issues/629\n[gh-638]: https://github.com/HigherOrderCO/Bend/issues/638\n[gh-642]: https://github.com/HigherOrderCO/Bend/issues/642\n[gh-643]: https://github.com/HigherOrderCO/Bend/issues/643\n[gh-648]: https://github.com/HigherOrderCO/Bend/issues/648\n[gh-657]: https://github.com/HigherOrderCO/Bend/issues/657\n[gh-659]: https://github.com/HigherOrderCO/Bend/pull/659\n[gh-673]: https://github.com/HigherOrderCO/Bend/pull/673\n[gh-674]: https://github.com/HigherOrderCO/Bend/issues/674\n[gh-675]: https://github.com/HigherOrderCO/Bend/issues/675\n[gh-706]: https://github.com/HigherOrderCO/Bend/issues/706\n[gh-734]: https://github.com/HigherOrderCO/Bend/issues/734\n[gh-736]: https://github.com/HigherOrderCO/Bend/issues/736\n[gh-748]: https://github.com/HigherOrderCO/Bend/issues/748\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to Bend\n\nThank you for considering contributing to Bend!\n\n## How to Contribute\n\n### Reporting bugs\n\n1. **Check for existing issues:** Before you create a new issue, please do a search in [our issues](https://github.com/HigherOrderCO/Bend/issues) to see if the issue or feature request has already been filed.\n2. **Create a new issue:** If you find no issue or your issue differs, [create a new issue](https://github.com/HigherOrderCO/Bend/issues/new?template=bug_report.yml) and provide detailed information, including steps to reproduce the problem.\n\n### Suggesting Enhancements\n\n1. **Check for existing suggestions:** Before suggesting a new feature, please check if it's already been suggested in [our issues](https://github.com/HigherOrderCO/Bend/issues).\n2. **Create a new suggestion:** If you find no similar suggestion, [create a new suggestion issue](https://github.com/HigherOrderCO/Bend/issues/new?template=feature_request.md) and provide detailed information about the enhancement and why it would be useful.\n\n### Checking HVM Issues\n\nSince Bend depends on HVM, some issues might be related to HVM rather than Bend itself. Please also check the [HVM issues page](https://github.com/HigherOrderCO/HVM/issues) to see if your issue has already been reported there.\n\n### Submitting Changes\n\n1. **Fork the repository:** Create your own fork of the repository on GitHub.\n2. **Create a new branch:** Make your changes in a new branch in your forked repository.\n3. **Run formatting and linting checks:** Before submitting your changes, ensure your code is properly formatted and linted:\n   - Run `cargo fmt` to format your code.\n   - Run `cargo clippy` to lint your code.\n4. **Run tests:** Ensure all tests pass and update any test results:\n   - Run `cargo insta test` to run the tests.\n      > If insta is not available as a cargo command, install it using `cargo install cargo-insta`.\n   - Run `cargo insta review` to save any changes to the test results.\n5. **Submit a pull request:** Once your changes are ready, submit a pull request from your branch to the `main` branch of the Bend Repository\n\nWe appreciate every contribution!\n"
  },
  {
    "path": "Cargo.toml",
    "content": "[package]\nname = \"bend-lang\"\ndescription = \"A high-level, massively parallel programming language\"\nlicense = \"Apache-2.0\"\nversion = \"0.2.38\"\nedition = \"2021\"\nrust-version = \"1.74\"\nexclude = [\"tests/\"]\n\n[lib]\nname = \"bend\"\npath = \"src/lib.rs\"\n\n[[bin]]\nname = \"bend\"\npath = \"src/main.rs\"\nrequired-features = [\"cli\"]\n\n[profile.release]\nlto = true\n\n[features]\ndefault = [\"cli\"]\ncli = [\"dep:clap\"]\n\n[dependencies]\nTSPL = \"0.0.13\"\nclap = { version = \"4.4.1\", features = [\"derive\"], optional = true }\nhighlight_error = \"0.1.1\"\nhvm = \"=2.0.22\"\nindexmap = \"2.2.3\"\ninterner = \"0.2.1\"\nitertools = \"0.11.0\"\nloaned = \"0.1.0\"\nstacker = \"0.1\"\n\n[dev-dependencies]\ninsta = \"1.34.0\"\nstdext = \"0.3.1\"\nwalkdir = \"2.3.3\"\n\n[profile.test]\nopt-level = 2\n"
  },
  {
    "path": "FAQ.md",
    "content": "# Known Issues and Frequently Asked Questions\n\n## Installation and Setup\n\n### Can I run this on Windows?\n- We're still working on the windows support, for the moment, please use [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install).\n\n### I'm getting a `CUDA not available!` error even though I have it installed?\n- CUDA support is enable only during installation. If you first installed HVM and then installed CUDA and `nvcc`, please try to install HVM again.\n\n### I'm getting a `Failed to launch kernels (error code invalid argument)!` error.\n- The current iteration of the `hvm.cu` was written with the RTX 4090 in mind, and won't work on older GPUs, since they contain about half of the newer GPUs shared memory, for better understanding please refer to [HVM#283](https://github.com/HigherOrderCO/HVM/issues/283). We are working on support for older GPUs and will release it soon.\n\n### I get \"Command `bend` not found\" after installing, what do I do?\n- If you are on Unix system (or WSL) then most likely bend did not add itself to the PATH variable in your rc file. To remedy this:\n  - Determine if you are using bash or zsh (check for presence of `~/.bashrc` or `~/.zshrc`)\n  - Make change to the relevant file by running `echo -n 'export PATH=$PATH:$HOME/.cargo/bin' >> ~/.bashrc`\n    - use `~/.zshrc` in place of `~/.bashrc` in the case you are on zsh system\n  - You will then need to run `source ~/.bashrc` or `source ~/.zshrc` for the changes to take effect immediately\n  - Try running `bend` once more - it should work now! \n\n### I got an error when installing HVM on Linux\n- If the error happens when compiling the CUDA runtime or contains anything regarding `ccbin`, please refer to [HVM#291](https://github.com/HigherOrderCO/HVM/issues/291).\n\n- If the error contains anything regarding `libc` missing, please refer to [HVM#355](https://github.com/HigherOrderCO/Bend/issues/355)\n\n### Can I run this on AMD/Intel/Apple GPUs?\n- We plan on adding support to many other GPUs as soon as the CUDA version is sufficiently stable.\n\n### What GPUs are supported?\nGPUs with >=96KB L1 cache per SM *should* work. This includes the following:\n| GPU                         | Tested? |\n|-----------------------------|---------|\n| RTX 4090                    | Yes     |\n| All Other Desktop 40 Series | No      |\n| All Desktop 30 Series       | No      |\n| All Mobile 40 Series        | No      |\n| All Mobile 30 Series        | No      |\n\n## Using Bend\n\n### How do I use IO?\n- IO is still being developed and is expected to come soon.\n\n### How to do FFI?\n- Not as soon as basic IO, but planned or at least something similar to FFI.\n\n### Are there any Libraries, Packages etc?\n- A package manager will be added soon.\n\n### Why are my numbers giving me wrong results?\nSome possibilities:\n- Your program is causing an overflow on 24-bit number values.\n- Your program is doing operations on numbers of different types. (e.g. `2.0 + 1` is not allowed, you must use `2.0 + 1.0`)\n- Floating point numbers are currently bugged and are interpreted incorrectly in some cases.\n- There's a bug with signed integers numbers that flips that sometimes flips the order of the operations.\n\n### I'm getting an error of failed assertion\n- HVM currently has a bug in its conversion of f32 to f24 and it's unable to read the number 0.0. We already have a fix that we're working on.\n"
  },
  {
    "path": "FEATURES.md",
    "content": "## Features\n\nBend offers two flavors of syntax, the user-friendly python-like syntax \"Imp\" (the default) and the core ML/Haskell-like syntax \"Fun\".\nYou can read the full reference for both of them [here](docs/syntax.md), but these examples will use the first one.\n\nTo see some more complex examples programs, check out the [examples](examples/) folder.\n\n### Basic features\n\nWe can start with a basic program that adds the numbers 3 and 2.\n```py\ndef main() -> u24:\n  return 2 + 3\n```\n\nRunning this program will show the number 5.\nBe careful with `run` since it will not show any warnings by default. Before running a new program, it's useful to first `check` it.\n\nBend programs consist of a series of function definitions, always starting with a function called `main` or `Main`.\n\nFunctions can receive arguments both directly and using a lambda abstraction.\n\n```py\n# These two are equivalent\ndef add(x: u24, y: u24) -> u24:\n  return x + y\n\ndef add2() -> (u24 -> u24 -> u24): \n  return lambda x, y: x + y\n```\n\nYou can then call this function like this:\n\n```py\ndef main() -> u24:\n  sum = add(2, 3)\n  return sum\n```\n\n### Data types\n\nYou can bundle multiple values into a single value using a tuple or a struct.\n\n```py\n# With a tuple\ndef tuple_fst(x: (a, b)) -> a:\n  # This destructures the tuple into the two values it holds.\n  # '*' means that the value is discarded and not bound to any variable.\n  (fst, *) = x\n  return fst\n\n# With an object (similar to what other languages call a struct, a class or a record)\nobject Pair(a, b) { fst: a, snd: b }\n\ndef Pair/fst(x: Pair(a, b)) -> a:\n  match x:\n    case Pair:\n      return x.fst\n\n# We can also access the fields of an object after we `open` it.\ndef Pair/fst_2(x: Pair(a, b)) -> a:\n  open Pair: x\n  return x.fst\n\n# This is how we can create new objects.\ndef Pair/with_one(x: a) -> Pair(a, u24):\n  return Pair{ fst: x, snd: 1 }\n\n# The function can be named anything, but by convention we use Type/function_name.\ndef Pair/swap(x: Pair(a, b)) -> Pair(b, a):\n  open Pair: x\n  # We can also call the constructor like any normal function.\n  return Pair(x.snd, x.fst)\n```\n\nFor more complicated data structures, we can use `type` to define algebraic data types.\n\n```py\ntype MyTree:\n  Node { val, ~left, ~right }\n  Leaf\n```\n\nThis defines a constructor function for each variant of the type, with names `MyTree/Node` and `MyTree/Leaf`.\n\nLike most things in bend (except tuples and numbers), types defined with `type` and `object` become lambda encoded functions.\nYou can read how this is done internally by the compiler in [Defining data types](docs/defining-data-types.md) and [Pattern matching](docs/pattern-matching.md).\n\n### Optional typing\n\nTypes in Bend are completely optional - you can write programs without any type annotations, but we'll be typing every function for clarity. For instace:\n```py\ndef main():\n  sum = add(2, 3)\n  return sum\n```\nHere, this program will run just fine and return the exact same result as the example shown in [Basic features](#basic-features)\n\n### Pattern matching\n\nWe can pattern match on values of a data type to perform different actions depending on the variant of the value.\n\n```py\ndef Maybe/or_default(x: Maybe(T), default: T) -> T:\n  match x:\n    case Maybe/Some:\n      # We can access the fields of the variant using 'matched.field'\n      return x.value\n    case Maybe/None:\n      return default\n```\n\n### Folding and bending\n\nWe use `~` to indicate that a field is recursive.\nThis allows us to easily create and consume these recursive data structures with `bend` and `fold`.\n\n`fold` is a recursive `match` that you can use to transform and consume data structures.\n`bend` is a pure recursive loop that is very useful for generating data structures.\n\n```py\n#{\n  Sum all the values in the tree.\n#}\ndef MyTree.sum(x: MyTree) -> u24:\n  fold x:\n    # The fold is implicitly called for fields marked with '~' in their definition.\n    case MyTree/Node:\n      return x.val + x.left + x.right\n    case MyTree/Leaf:\n      return 0\n\ndef main() -> u24:\n  bend val = 0:\n    when val < 10:\n      # 'fork' calls the bend recursively with the provided values.\n      x = MyTree/Node { val:val, left:fork(val + 1), right:fork(val + 1) }\n    else:\n      # 'else' is the base case, when the condition fails.\n      x = MyTree/Leaf\n\n  return MyTree.sum(x)\n```\n> Note: since MyTree has no type annotations, its fields will be considered of type `Any`, which partially disables the type checker for these values. Thus the fact that `x` is holding a tree of u24 and not a tree of anything else won't be checked and it's up to the user to make sure it's correct.\n\n\nThese are equivalent to inline recursive functions that create a tree and consume it.\n\n```py\ndef MyTree.sum(x: MyTree) -> u24:\n  match x:\n    case MyTree/Node:\n      return x.val + MyTree.sum(x.left) + MyTree.sum(x.right)\n    case MyTree/Leaf:\n      return 0\n\ndef main_bend(val: u24) -> MyTree:\n  if val < 10:\n    return MyTree/Node(val, main_bend(val + 1), main_bend(val + 1))\n  else:\n    return MyTree/Leaf\n\ndef main() -> u24:\n  x = main_bend(0)\n  return MyTree.sum(x)\n```\n\nMaking your program around folding trees is a very good way of making it parallelizable, since each core can be dispatched to work on a different branch of the tree.\n\nYou can also pass some state variables to `fold` just like the variables used in a `bend`.\nIf you give a `fold` some state, then you necessarily need to pass it by calling the folded fields of the matched value, like passing an additional argument to the fold call.\n\n```py\n# This function substitutes each value in the tree with the sum of all the values before it.\ndef MyTree.map_sum(x: MyTree) -> MyTree:\n  acc = 0\n  fold x with acc:\n    case MyTree/Node:\n      # `x.left` and `x.right` are called with the new state value.\n      # Note that values are copied if you use them more than once, so you don't want to pass something very large.\n      return MyTree/Node{ val: x.val + acc, left: x.left(x.val + acc), right: x.right(x.val + acc) }\n    case MyTree/Leaf:\n      return x\n```\n\nThis allows `fold` to be a very powerful and generic tool that can be used to implement most pure data transformations.\n\n### Some caveats and limitations\n\n_Attention_: Note that despite the ADT syntax sugars, Bend is an _untyped_ language and the compiler will not stop you from using values incorrectly, which can lead to very unexpected results.\nFor example, the following program will compile just fine even though `!=` is only defined for native numbers:\n\n```py\ndef main():\n  bend val = [0, 1, 2, 3]:\n    when val != []:\n      match val:\n        case List/Cons:\n          x = val.head + fork(val.tail)\n        case List/Nil:\n          x = 0\n    else:\n      x = 0\n  return x\n```\n\nRunning this program will show `λ* *` and not the expected `6`.\n\nIt's also important to note that Bend is linear (technically affine), meaning that every variable is only used once. When a variable is used more than once, the compiler will automatically insert a duplication.\nDuplications efficiently share the same value between two locations, only cloning a value when it's actually needed, but their exact behaviour is slightly more complicated than that and escapes normal lambda-calculus rules.\nYou can read more about it in [Dups and sups](docs/dups-and-sups.md) and learn how pattern matching avoids this problem in [Pattern matching](docs/pattern-matching.md).\n\nTo use a variable twice without duplicating it, you can use a `use` statement.\nIt inlines clones of some value in the statements that follow it.\n\n```py\ndef foo(x):\n  use result = (1, x)\n  return (result, result)\n\n# Is equivalent to\ndef foo(x):\n  return ((1, x), (1, x))\n```\n\nNote that any variable in the `use` will end up being duplicated.\n\nBend supports recursive functions of unrestricted depth:\n\n```py\ndef native_num_to_adt(n: u24) -> Nat:\n  if n == 0:\n    return Nat/Zero\n  else:\n    return Nat/Succ(native_num_to_adt(n - 1))\n```\n\nIf your recursive function is not based on pattern matching syntax (like `if`, `match`, `fold`, etc) you have to be careful to avoid an infinite loop.\n\n```py\n# A scott-encoded list folding function.\n# Writing it like this will cause an infinite loop.\ndef scott_list.add(xs, add):\n  return xs( λxs.head xs.tail: λc n: (c (xs.head + add), scott_list.add(xs.tail, add)))\n\n# Instead we want to write it like this;\ndef scott_list.add(xs, add):\n  return xs(\n    λxs.head xs.tail: λadd: λc n: (c (xs.head + add) scott_list.sum(xs.tail, add)),\n    λadd: λc λn: n,\n    add\n  )\n# These functions can't be typed with bend's type system.\n```\n\nSince Bend is eagerly executed, some situations will cause function applications to always be expanded, which can lead to looping situations.\nYou can read how to avoid this in [Lazy definitions](docs/lazy-definitions.md).\n\n### Numbers\n\nBend has native numbers and operations.\n\n```py\ndef main() -> (u24, i24, f24):\n  a = 1      # A 24 bit unsigned integer.\n  b = +2     # A 24 bit signed integer.\n  c = -3     # Another signed integer, but with negative value.\n  d = 1.0    # A 24 bit floating point number.\n  e = +0.001 # Also a float.\n  return (a * 2, b - c, d / e)\n```\n\nUnsigned numbers are written as just the number.\nSigned numbers are written with a `+` or `-` sign.\nFloating point numbers must have the decimal point `.` and can optionally take a sign `+` or `-`.\n\nThe three number types are fundamentally different.\nIf you mix two numbers of different types HVM will interpret the binary representation of one of them incorrectly, leading to incorrect results. Which number is interpreted incorrectly depends on the situation and shouldn't be relied on for now.\n\nYou can use `switch` to pattern match on unsigned native numbers:\n\n```py\nswitch x = 4:\n  # From '0' to n, ending with the default case '_'.\n  case 0:  \"zero\"\n  case 1:  \"one\"\n  case 2:  \"two\"\n  # The default case binds the name <arg>-<n>\n  # where 'arg' is the name of the argument and 'n' is the next number.\n  # In this case, it's 'x-3', which will have value (4 - 3) = 1\n  case _:  String.concat(\"other: \", (String.from_num x-3))\n```\n\nYou can also convert between the number types using the builtin casting functions.\nHere's some of the builtin functions you can use to cast any native number into the corresponding type:\n\n```py\ndef main() -> _:\n  x = f24/to_i24(1.0)\n  y = u24/to_f24(2)\n  z = i24/to_u24(-3)\n\n  return (x, y, z)\n```\nYou can find the other casting functions and their declarations at [builtins.md](docs/builtins.md).\n### Other builtin types\n\nBend has Lists and Strings, which support Unicode characters.\nThis is how they are defined:\n```py\ntype String:\n  Nil\n  Cons { head: u24, ~tail: String }\ntype List(T):\n  Nil\n  Cons { head: T, ~tail: List(T) }\n```\n\n```py\n# Here's an example of a List of Strings\ndef main() -> List(String):\n  return [\"You: Hello, 🌎\", \"🌎: Hello, user\"]\n```\n\nA string is desugared to a String data type containing two constructors, `String/Cons` and `String/Nil`.\nList also becomes a type with two constructors, `List/Cons` and `List/Nil`.\n\n```py\n# When you write this\ndef StrEx() -> String:\n  return \"Hello\"\ndef ids() -> List(u24):\n  return [1, 2, 3]\n\n# The compiler converts it to this\ndef StrEx() -> String:\n  return String/Cons('H', String/Cons('e', String/Cons('l', String/Cons('l', String/Cons('o', String/Nil)))))\ndef ids() -> List(u24):\n  return List/Cons(1, List/Cons(2, List/Cons(3, List/Nil)))\n```\n\nCharacters are delimited by `'` `'` and support Unicode escape sequences. They are encoded as a U24 with the unicode codepoint as their value.\n\n```py\n# These two are equivalent\ndef chars() -> List(u24):\n  return ['A', '\\u{4242}', '🌎']\n\ndef chars2()  -> List(u24):\n  return [65, 0x4242, 0x1F30E]\n```\n\nBend has a built-in binary tree Map data structure where the key is a `u24` value, meaning you can use numbers, characters, and symbols as keys.\n\nMaps are delimited by `{` `}` and its entries are separated by commas. A key-value entry in a map is denoted using a colon `:`. For example:\n\n```py\n{ 42: [4, 2] } # 42 is the key and [4, 2] is the value\n```\n\nA Map is desugared to a Map data type containing two constructors `Map/Leaf` and `Map/Node`.\n\n```py\n# When you write this\ndef empty_map() -> Map(T):\n  return {}\n\ndef init_map() -> Map(String):\n  return { 1: \"one\", 2: \"two\", `blue`: \"0x0000FF\" }\n\ndef main() -> String:\n  map = init_map\n  one = map[1]    # map getter syntax\n  map[0] = \"zero\" # map setter syntax\n  return one\n\n# The compiler converts it to this\ndef empty_map() -> Map(T):\n  return Map/Leaf\n\ndef init_map() -> Map(String): \n  map = Map/set(Map/Leaf, 1, \"one\")\n  map = Map/set(map, 2, \"two\")\n  return map\n\ndef main() -> String:\n  map = init_map\n  (one, map) = Map/get(map, 1)\n  map = Map/set(map, 0, \"zero\")\n  return one\n\n# The builtin Map type definition\ntype Map(T):\n  Node { value: Maybe(T), ~left: Map(T), ~right: Map(T) }\n  Leaf \n```\n\nNotice that the getter and setter syntax induces an order on things using the map, since every get or set operation depends on the value of the previous map.\n> **_NOTE:_** Do not get mistaken with lists creation syntax, that also uses `[` `]`.\n\n### Mixing syntaxes\n\nAs was said in the beginning, Bend offers two flavors of syntax.\nYou can mix and match them freely in your program, as long as each function uses only one flavor.\n\n```py\ntype Bool:\n  True\n  False\n\ndef is_odd(x: u24) -> Bool:\n  switch x:\n    case 0:\n      return Bool/False\n    case _:\n      return is_even(x-1)\n\nis_even(n: u24): u24 = switch n {\n  0: Bool/True\n  _: (is_odd n-1)\n}\n\nmain = (is_odd 20)\n```\n\n### More features\n\nKey:\n\n- &#128215;: Basic resources\n- &#128217;: Intermediate resources\n- &#128213;: Advanced resources\n\nOther features are described in the following documentation files:\n\n- &#128215; Lazy definitions: [Making recursive definitions lazy](docs/lazy-definitions.md)\n- &#128215; Data types: [Defining data types](docs/defining-data-types.md)\n- &#128215; Pattern matching: [Pattern matching](docs/pattern-matching.md)\n- &#128215; Native numbers and operations: [Native numbers](docs/native-numbers.md)\n- &#128215; Builtin definitions: [Builtins](docs/builtins.md)\n- &#128215; CLI arguments: [CLI arguments](docs/cli-arguments.md)\n- &#128217; Duplications and superpositions: [Dups and sups](docs/dups-and-sups.md)\n- &#128217; Scopeless lambdas: [Using scopeless lambdas](docs/using-scopeless-lambdas.md)\n- &#128213; Fusing functions: [Writing fusing functions](docs/writing-fusing-functions.md)\n\n## Further reading\n\n- &#128217; [Compilation and readback](docs/compilation-and-readback.md)\n- &#128217; [Old HVM wiki learning material](https://github.com/HigherOrderCO/HVM/wiki/HVM-Wiki). It is outdated, but it can still teach you some of the basics.\n"
  },
  {
    "path": "GUIDE.md",
    "content": "# Bend in X minutes - the ultimate guide!\n\nBend is a high-level, massively parallel programming language. That means it\nfeels like Python, but scales like CUDA. It runs on CPUs and GPUs, and you don't\nhave to do anything to make it parallel: as long as your code isn't \"helplessly\nsequential\", it **will** use 1000's of threads!\n\nWhile cool, Bend is far from perfect. In absolute terms it is still not so fast.\nCompared to SOTA compilers like GCC or GHC, our code gen is still embarrassingly\nbad, and there is a lot to improve. And, of course, in this beginning, there\nwill be tons of instability and bugs. That said, it does what it promises:\nscaling horizontally with cores. And that's really cool! If you'd like to be an\nearly adopter of this interesting tech, this guide will teach you how to apply\nBend to build parallel programs in a new way!\n\nFor a more technical dive, check HVM2's\n[paper](http://paper.HigherOrderCO.com/). For an entertaining, intuitive\nexplanation, see HVM1's classic\n[HOW.md](https://github.com/HigherOrderCO/HVM/blob/master/guide/HOW.md). But if\nyou just want to dive straight into action - this guide is for you. Let's go!\n\n## Installation\n\n### Install dependencies\n\n#### On Linux\n\n```sh\n# Install Rust if you haven't it already.\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\n# For the C version of Bend, use GCC. We recommend a version up to 12.x.\nsudo apt install gcc\n```\n\nFor the CUDA runtime [install the CUDA toolkit for Linux](https://developer.nvidia.com/cuda-downloads?target_os=Linux) version 12.x.\n\n#### On Mac\n\n```sh\n# Install Rust if you haven't it already.\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\n# For the C version of Bend, use GCC. We recommend a version up to 12.x.\nbrew install gcc\n```\n\n### Install Bend\n\n1. Install HVM2 by running:\n\n```sh\n# HVM2 is HOC's massively parallel Interaction Combinator evaluator.\ncargo install hvm\n\n# This ensures HVM is correctly installed and accessible.\nhvm --version\n```\n\n2. Install Bend by running:\n\n```sh\n# This command will install Bend\ncargo install bend-lang\n\n# This ensures Bend is correctly installed and accessible.\nbend --version\n```\n\n## Hello, World!\n\nAs we said, Bend _feels_ like Python - in some ways. It is high-level, you can\neasily create objects and lists, there are ifs and loops. Yet, it is different:\nthere is some Haskell in it, in the sense algebraic datatypes, pattern-matching\nand recursion play an important role. This is how its `\"Hello, world!\"` looks:\n\n```python\ndef main():\n  return \"Hello, world!\"\n```\nTo run the program above, type:\n```\nbend run-rs main.bend\n```\nWait - there is something strange there. Why `return`, not `print`? Well, _for\nnow_ (you'll read these words a lot), Bend's IO is in an experimental stage. We plan on\nfully introducing it very soon! Nevertheless, here's an example on how you can use IO on bend to print `\"Hello, world!\"`:\n\n```python\ndef main() -> IO(u24):\n  with IO:\n    * <- IO/print(\"Hello, world!\\n\")\n    return wrap(0)\n```\nTo run the program above, type:\n\n```\nbend run-c main.bend\n```\n\nIf all goes well, you should see `\"Hello, world!\"` in both cases. The `bend run-rs` command uses\nthe reference interpreter, which is slow, whereas the `bend run-c` command uses the much faster C interpreter, but bend can run even faster! In a few moments, we'll teach you how to run your code in parallel, on both CPUs and GPUs. For now, let's learn some\nfundamentals!\n\n## Basic Functions and Datatypes\n\nIn Bend, functions are pure: they receive something, and they return something.\nThat's all. Here is a function that tells you how old you are:\n\n```python\ndef am_i_old(age: u24) -> String:\n  if age < 18:\n    return \"you're a kid\"\n  else:\n    return \"you're an adult\"\n\ndef main() -> String:\n  return am_i_old(32)\n```\n\nThat is simple enough, isn't it? Here is one that returns the euclidean distance between\ntwo points:\n\n```python\ndef distance(ax: f24, ay: f24, bx: f24, by: f24) -> f24:\n  dx = bx - ax\n  dy = by - ay\n  return (dx * dx + dy * dy) ** 0.5\n\ndef main() -> f24:\n  return distance(10.0, 10.0, 20.0, 20.0)\n```\n\nThis isn't so pretty. Could we use tuples instead? Yes:\n\n```python\ndef distance(a: (f24, f24), b: (f24, f24)) -> f24:\n  (ax, ay) = a\n  (bx, by) = b\n  dx = bx - ax\n  dy = by - ay\n  return (dx * dx + dy * dy) ** 0.5\n\ndef main() -> f24:\n  return distance((10.0, 10.0), (20.0, 20.0))\n```\n\nSo far, this does look like Python, doesn't it? What about objects? Well - here,\nthere is a difference. In Python, we have classes. In Bend, we just have the\nobjects themselves. This is how we create a 2D vector:\n\n```python\nobject V2 { x, y }\n\ndef distance(a: V2, b: V2) -> f24:\n  open V2: a\n  open V2: b\n  dx = b.x - a.x\n  dy = b.y - a.y\n  return (dx * dx + dy * dy) ** 0.5\n\ndef main() -> f24:\n  return distance(V2 { x: 10.0, y: 10.0 }, V2 { x: 20.0, y: 20.0 })\n```\n\nThis doesn't look too different, does it? What is that `open` thing, though? It\njust tells Bend to _consume_ the vector, `a`, \"splitting\" it into its\ncomponents, `a.x` and `a.y`. Is that really necessary? Actually, no - not\nreally. But, _for now_, it is. This has to do with the fact Bend is an affine\nlanguage, which... well, let's not get into that. For now, just remember we\nneed `open` to access fields.\n\nBend comes with 3 built-in numeric types: `u24`, `i24`, `f24`. That's quite\nsmall, we admit. Soon, we'll have larger types. For now, that's what we got.\nThe `u24` type is written like `123` or `0xF`. The `i24` type requires a sign,\nas in, `+7` or `-7`. The `f24` type uses `.`, like `3.14`.\n\nOther than tuples, Bend has another, very general, way to encode data:\ndatatypes! These are just \"objects with tags\". A classic example of this is a\n\"shape\", which can be either a circle or a rectangle. It is defined like this:\n\n```python\ntype Shape:\n  Circle { radius }\n  Rectangle { width, height }\n\ndef area(shape: Shape) -> f24:\n  match shape:\n    case Shape/Circle:\n      return 3.14 * shape.radius ** 2.0\n    case Shape/Rectangle:\n      return shape.width * shape.height\n\ndef main() -> f24:\n  return area(Shape/Circle { radius: 10.0 })\n```\n\nIn this example, `Shape` is a datatype with two variants: `Circle` and\n`Rectangle`. The `area` function uses pattern matching to handle each variant\nappropriately. Just like objects need `open`, datatypes need `match`, which\ngive us access to fields in each respective case.\n\nDatatypes are very general. From matrices, to JSON, to quadtrees, every type of\ndata can be represented as a datatype (I mean, that's the name!). In fact,\nlists - which, on Python, are actually stored as arrays - are represented using\ndatatypes on Bend. Specifically, the type:\n\n```python\ntype List:\n  Nil\n  Cons { head, ~tail }\n```\n\nHere, the `Nil` variant represents an empty list, and the `Cons` variant\nrepresents a concatenation between an element (`head`) and another list\n(`tail`). That way, the `[1,2,3]` list could be written as:\n\n```python\ndef main() -> List(u24):\n  my_list = List/Cons{head: 1, tail: List/Cons{head: 2, tail: List/Cons{head: 3, tail: List/Nil}}}\n  return my_list\n```\n\nObviously - that's terrible. So, you can write just instead:\n\n```python\ndef main() -> List(u24):\n  my_list = [1, 2, 3]\n  return my_list\n```\n\nWhich is decent. But while it is written the same as in Python, it is important\nto understand it is just the `List` datatype, which means we can operate on it\nusing the `match` notation. For example:\n\n```python\ndef main() -> u24:\n  my_list = [1, 2, 3]\n  match my_list:\n    case List/Cons:\n      return my_list.head\n    case List/Nil:\n      return 0\n```\n\nWill return `1`, which is the first element.\n\n> **_NOTE:_** Despite creating lists with `[` `]`, the syntax used for accessing values as in `type[key]` is actually related to the `Map` built-in type.\n\nWe also have a syntax sugar for strings in Bend, which is just a list of `u24`\ncharacters (UTF-16 encoded). The `\"Hello, world!\"` type we've seen used it!\n\n> **_NOTE:_** The actual type used for strings is `String`, which has `String/Cons` and `String/Nil` just like `List` does.\n\nBend also has inline functions, which work just like Python:\n\n```python\ndef main() -> u24:\n  mul_2 = lambda x: x * 2\n  return mul_2(7)\n```\n\nExcept without the annoying syntax restrictions. You can also shorten it as `λ`,\nif you can somehow type that.\n\nYou can also match on native numbers (`u24`) using the `switch` statement:\n\n```python\ndef slow_mul2(n: u24) -> u24:\n  switch n:\n    case 0:\n      return 0\n    case _:\n      return 2 + slow_mul2(n-1)\n\ndef main() -> u24:\n  return slow_mul2(7)\n```\n\nThe `if-else` syntax is a third option to branch, other than `match` and\n`switch`. It expects a `u24` (`1` for `true` and `0` for `false`):\n\n```python\ndef is_even(n: u24) -> u24:\n  if n % 2 == 0:\n    return 1\n  else:\n    return 0\n\ndef main() -> u24:\n  return is_even(7)\n```\n\n_note - some types, like tuples, aren't being pretty-printed correctly after\ncomputation. This will be fixed in the future (TM)_\n\n## The Dreaded Immutability\n\nFinally, let's get straight to the fun part: how do we implement parallel\nalgorithms with Bend? Just kidding. Before we get there, let's talk about loops.\nYou might have noticed we have avoided them so far. That wasn't by accident.\nThere is an important aspect on which Bend diverges from Python, and aligns with\nHaskell: **variables are immutable**. Not \"by default\". They just **are**. For\nexample, in Bend, we're not allowed to write:\n\n```python\ndef parity(x: u24) -> String:\n  result = \"odd\"\n  if x % 2 == 0:\n    result = \"even\"\n  return result\n```\n\n... because that would require mutating the `result` variable. Instead, we should write:\n\n```python\ndef is_even(x: u24) -> String:\n  if x % 2 == 0:\n    return \"even\"\n  else:\n    return \"odd\"\n\ndef main() -> String:\n  return is_even(7)\n```\n\nWhich is immutable. If that sounds annoying, that's because **it is**. Don't\nlet anyone tell you otherwise. We are aware of that, and we have many ideas on\nhow to improve this, making Bend feel even more Python-like. For now, we have to\nlive with it. But, wait... if variables are immutable... how do we even do\nloops? For example:\n\n```python\ndef sum(x: u24) -> u24:\n  total = 0\n  for i in range(10)\n    total += i\n  return total\n```\n\nHere, the entire way the algorithm works is by mutating the `total` variable.\nWithout mutability, loops don't make sense. The good news is Bend has _something\nelse_ that is equally as - actually, more - powerful. And learning it is really\nworth your time. Let's do it!\n\n## Folds and Bends\n\n### Recursive Datatypes\n\nLet's start by implementing a recursive datatype in Bend:\n\n```python\ntype Tree:\n  Node { ~left, ~right }\n  Leaf { value }\n```\n\nThis defines a binary tree, with elements on leaves. Here, `~` flags a field as\n_recursive_. For example, the tree:\n\n```\n  __/\\__\n /\\     /\\\n1  2   3  4\n```\n\nCould be represented as:\n\n```\ntree = Tree/Node{\n  left:  Tree/Node{left: Tree/Leaf {value: 1}, right: Tree/Leaf {value: 2}},\n  right: Tree/Node{left: Tree/Leaf {value: 3}, right: Tree/Leaf {value: 4}},\n}\n```\n\nBinary trees are so useful in Bend that this type is already pre-defined in the\nlanguage and has its own dedicated syntax:\n\n```py\n# ![a, b] => Equivalent to Tree/Node { left: a, right: b }\n# !x      => Equivalent to Tree/Leaf { value: x }\ntree = ![![!1, !2],![!3, !4]]\n```\n\n### Fold: consuming recursive datatypes\n\nNow, here's a question: how do we _sum_ the elements of a tree? In Python, we\ncould just use a loop. In Bend, we don't have loops. Fortunately, there is\nanother construct we can use: it's called `fold`, and it works like a _search\nand replace_ for datatypes. For example, consider the code below:\n\n```python\ndef sum(tree: Tree(u24)) -> u24:\n  fold tree:\n    case Tree/Node:\n      return tree.left + tree.right\n    case Tree/Leaf:\n      return tree.value\n\ndef main() -> u24:\n  tree = ![![!1, !2],![!3, !4]]\n  return sum(tree)\n```\n\nIt accomplishes the task by replacing every `Tree/Node { left, right }` by `left +\nright`, and replacing every `Tree/Leaf` by `value`. As a result, the entire \"tree of\nvalues\" is turned into a \"tree of additions\", and it evaluates as follows:\n\n```python\nnums = ((1 + 2) + (3 + 4))\nnums = (3 + 7)\nnums = 10\n```\n\nNow, this may look limiting, but it actually isn't. Folds are known for being\nuniversal: _any algorithm that can be implemented with a loop, can be\nimplemented with a fold_. So, we can do much more than just compute an\n\"aggregated value\". Suppose we wanted, for example, to transform every element\ninto a tuple of `(index,value)`, returning a new tree. Here's how to do it:\n\n```python\ndef enum(tree):\n  idx = 0\n  fold tree with idx:\n    case Tree/Node:\n      return ![tree.left(idx * 2 + 0), tree.right(idx * 2 + 1)]\n    case Tree/Leaf:\n      return !(idx, tree.value)\n\ndef main() -> Tree(u24):\n  tree = ![![!1, !2],![!3, !4]]\n  return enum(tree)\n```\n\nCompared to the `sum` algorithm, 3 important things changed:\n\n1. We initialize a state, `idx`, as `0`.\n\n2. We pass new states down as `tree.xyz(new_idx)`\n\n3. The base case receives the final state: the element index\n\nSo, in the end, we'll have computed a copy of the original tree, except that\nevery element has now became a tuple of index and value.\n\nNow, please take a moment to think about this fact: **everything can be computed\nwith a fold.** This idea often takes some time to get used to, but, once you do,\nit is really liberating, and will let you write better algorithms. As an\nexercise, use `fold` to implement a \"reverse\" algorithm for lists:\n\n```python\ndef reverse(list: List(T)) -> List(T):\n  # exercise\n  ?\n\ndef main() -> List(u24):\n  return reverse([1,2,3])\n```\n\n## Bend: generating recursive datatypes\n\nBending is the opposite of folding. Whatever `fold` consumes, `bend` creates.\nThe idea is that, by defining an _initial state_ and a _halting condition_, we\ncan \"grow\" a recursive structure, layer by layer, until the condition is met.\nFor example, consider the code below:\n\n```python\ndef main() -> Tree(u24):\n  bend x = 0:\n    when x < 3:\n      tree = ![fork(x + 1), fork(x + 1)]\n    else:\n      tree = !7\n  return tree\n```\n\nThe program above will initialize a state (`x = 0`), and then, for as long as `x\n< 3`, it will \"fork\" that state in two, creating a `Tree/Node`, and continuing\nwith `x + 1`. When `x >= 3`, it will halt and return a `Tree/Leaf` with `7`.\nWhen all is done, the result will be assigned to the `tree` variable:\n\n```python\ntree = fork(0)\ntree = ![fork(1), fork(1)]\ntree = ![![fork(2),fork(2)], ![fork(2),fork(2)]]\ntree = ![![![fork(3),fork(3)], ![fork(3),fork(3)]], ![![fork(3),fork(3)], ![fork(3),fork(3)]]]\ntree = ![![![!7, !7], ![!7, !7]], ![![!7, !7], ![!7, !7]]]\n```\n\nWith some imagination, we can easily see that, by recursively unrolling a state\nthis way, we can generate any structure we'd like. In fact, `bend` is so general\nwe can even use it to emulate a loop. For example, this Python program:\n\n```python\nsum = 0\nidx = 0\nwhile idx < 10:\n  sum = idx + sum\n  idx = idx + 1\n```\n\nCould be emulated in Bend with a \"sequential bend\":\n\n```python\nbend idx = 0:\n  when idx < 10:\n    sum = idx + fork(idx + 1)\n  else:\n    sum = 0\n```\n\nOf course, if you do it, Bend's devs will be very disappointed with you. Why?\nBecause everyone is here for one thing. Let's do it!\n\n## Parallel \"Hello, World\"\n\nSo, after all this learning, we're now ready to answer the ultimate question:\n\n**How do we write parallel algorithms in Bend?**\n\nAt this point, you might have the idea: by using _folds_ and _bends_, right?\nWell... actually not! You do not need to use these constructs at all to make it\nhappen. Anything that _can_ be parallelized _will_ be parallelized on Bend. To\nbe more precise, this:\n\n```\nf(g(x))\n```\n\nCan NOT be parallelized, because `f` **depends** on the result of `g`. But this:\n\n```\nH(f(x), g(y))\n```\n\nCan be parallelized, because `f(x)` and `g(y)` are **independent**. Traditional\nloops, on the other hands, are inherently sequential. A loop like:\n\n```python\nsum = 0\nfor i in range(8):\n  sum += i\n```\n\nIs actually just a similar way to write:\n\n```python\nsum = (0 + (1 + (2 + (3 + (4 + (5 + (6 + 7)))))))\n```\n\nWhich is _really bad_ for parallelism, because the only way to compute this is\nby evaluating the expressions one after the other, in order:\n\n```python\nsum = (0 + (1 + (2 + (3 + (4 + (5 + (6 + 7)))))))\nsum = (0 + (1 + (2 + (3 + (4 + (5 + 13))))))\nsum = (0 + (1 + (2 + (3 + (4 + 18)))))\nsum = (0 + (1 + (2 + (3 + 22))))\nsum = (0 + (1 + (2 + 25)))\nsum = (0 + (1 + 27))\nsum = (0 + 28)\nsum = 28\n```\n\nThere is nothing Bend could do to save this program: sequentialism is an\ninherent part of its logic. Now, if we had written, instead:\n\n```python\nsum = (((0 + 1) + (2 + 3)) + ((4 + 5) + (6 + 7)))\n```\n\nThen, we'd have a much easier time evaluating that in parallel. Look at it:\n\n```python\nsum = (((0 + 1) + (2 + 3)) + ((4 + 5) + (6 + 7)))\nsum = ((1 + 5) + (9 + 13))\nsum = (6 + 22)\nsum = 28\n```\n\nThat's so much better that even the _line count_ is shorter!\n\nSo, how do you write a parallel program in Bend?\n\n**Just write algorithms that aren't helplessly sequential.**\n\nThat's all there is to it. As long as you write programs like that one, then\nunlike the former one, they will run in parallel. And that's why `bend` and\n`fold` are core features: they're, essentially, parallelizable loops. For\nexample, to add numbers in parallel, we can write:\n\n```python\ndef main() -> u24:\n  bend d = 0, i = 0:\n    when d < 28:\n      sum = fork(d+1, i*2+0) + fork(d+1, i*2+1)\n    else:\n      sum = i\n  return sum\n```\n\nAnd that's the parallel \"Hello, world\"! Now, let's finally run it. But first,\nlet's measure its single-core performance. Also, remember that, for now, Bend\nonly supports 24-bit numbers (`u24`), thus, the results will always be in `mod\n16777216`.\n\n```\nbend run-rs main.bend\n```\n\nOn my machine (Apple M3 Max), it completes after `147s`, at `65 MIPS` (Million\nInteractions Per Second - Bend's version of the FLOPS). That's too long. Let's\nrun it in parallel, by using the **C interpreter** instead:\n\n```\nbend run main.bend\n```\n\n> Note: `run` is an alias to the `run-c` command.\n\nAnd, just like that, the same program now runs in `8.49s`, at `1137 MIPS`.\nThat's **18x faster**! Can we do better? Sure: let's use the **C compiler** now:\n\n```\nbend gen-c main.bend >> main.c\n```\n\nThis command converts your `bend` file into a small, dependency-free C file\nthat does the same computation much faster. You can compile it to an executable:\n\n```\ngcc main.c -o main -O2 -lm -lpthread # if you're on Linux\ngcc main.c -o main -O2               # if you're on OSX\n./main\n```\n\nNow, the same program runs in `5.81s`, at `1661.91 MIPS`. That's now **25x\nfaster** than the original! Can we do better? Let's now enter the unexplored\nrealms of arbitrary high-level programs on... GPUs. How hard that could be?\nWell, for us... it was. A lot. For you... just call the **CUDA interpreter**:\n\n```\nbend run-cu main.bend\n```\n\nAnd, simply as that, the same program now runs in `0.82s`, at a blistering\n`11803.24 MIPS`. That's **181x faster** than the original. Congratulations!\nYou're now a thread bender.\n\n~\n\nAs a last note, you may have noticed that the compiled version isn't much faster\nthan the interpreted one. Our compiler is still on its infancy, and the assembly\ngenerated is quite abysmal. Most of our effort went into setting up a foundation\nfor the parallel evaluator, which was no easy task. With that out of our way,\nimproving the compiler is a higher priority now. You can expect it to improve\ncontinuously over time. For now, it is important to understand the state of\nthings, and set up reasonable expectations.\n\n## A Parallel Bitonic Sort\n\nThe bitonic sort is a popular algorithm that sorts a set of numbers by moving\nthem through a \"circuit\" (sorting network) and swapping as they pass through:\n\n![bitonic-sort](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/BitonicSort1.svg/1686px-BitonicSort1.svg.png)\n\nIn CUDA, this can be implemented by using mutable arrays and synchronization\nprimitives. This is well known. What is less known is that it can also be\nimplemented as a series of _immutable tree rotations_, with pattern-matching and\nrecursion. Don't bother trying to understand it, but, here's the code:\n\n```python\ndef gen(d: u24, x: u24) -> Any:\n  switch d:\n    case 0:\n      return x\n    case _:\n      return (gen(d-1, x * 2 + 1), gen(d-1, x * 2))\n```\n> Note: The type of this function can't be expressed with Bend's type system, but we can still write it using `Any`.\n\n```python\ndef sum(d: u24, t: u24) -> u24:\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return sum(d-1, t.a) + sum(d-1, t.b)\n\ndef swap(s: u24, a: Any, b: Any) -> (Any, Any):\n  switch s:\n    case 0:\n      return (a,b)\n    case _:\n      return (b,a)\n\ndef warp(d: u24, s: u24, a: Any, b: Any) -> (Any, Any):\n  switch d:\n    case 0:\n      return swap(s ^ (a > b), a, b)\n    case _:\n      (a.a,a.b) = a\n      (b.a,b.b) = b\n      (A.a,A.b) = warp(d-1, s, a.a, b.a)\n      (B.a,B.b) = warp(d-1, s, a.b, b.b)\n      return ((A.a,B.a),(A.b,B.b))\n\ndef flow(d: u24, s: u24, t: Any) -> Any:\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return down(d, s, warp(d-1, s, t.a, t.b))\n\ndef down(d: u24, s: u24, t: Any) -> Any:\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return (flow(d-1, s, t.a), flow(d-1, s, t.b))\n\ndef sort(d: u24, s: u24, t: Any) -> Any:\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return flow(d, s, (sort(d-1, 0, t.a), sort(d-1, 1, t.b)))\n\ndef main() -> u24:\n  return sum(18, sort(18, 0, gen(18, 0)))\n```\n\nAs a test of Bend's ability to parallelize the most insanely high-level\ncomputations possible, let's benchmark this program. Here are the results:\n\n- 12.33s / 102 MIPS (Apple M3 Max, 1 thread)\n\n- 0.96s / 1315 MIPS (Apple M3 Max, 16 threads) - 12x speedup\n\n- 0.24s / 5334 MIPS (NVIDIA RTX 4090, 16k threads) - 51x speedup\n\nAnd, just like magic, it works! 51x faster on RTX. How cool is that?\n\nOf course, you would absolutely **not** want to sort numbers like that,\nspecially when mutable arrays exist. But there are many algorithms that _can\nnot_ be implemented easily with buffers. Evolutionary and genetic algorithms,\nproof checkers, compilers, interpreters. For the first time ever, you can\nimplement these algorithms as high-level functions, in a language that runs on\nGPUs. That's the magic of Bend!\n\n## Graphics Rendering\n\nWhile the algorithm above does parallelize well, it is very memory-hungry. It is\na nice demo of Bend's potential, but isn't a great way to sort lists. Currently,\nBend has a 4GB memory limit (for being a 32-bit architecture). When the memory\nis filled, its performance will degrade considerably. But we can do better.\n\nSince Bend is GC-free, we can express low memory footprint programs using `bend`\nor tail calls. For maximum possible performance, one should first create enough\n\"parallel room\" to fill all available cores, and then spend some time doing\ncompute-heavy, but less memory-hungry, computations. For example, consider:\n\n```python\n# given a shader, returns a square image\ndef render(depth: u24) -> Any:\n  bend d = 0, i = 0:\n    when d < depth:\n      color = (fork(d+1, i*2+0), fork(d+1, i*2+1))\n    else:\n      width = depth / 2\n      color = demo_shader(i % width, i / width)\n  return color\n\n# given a position, returns a color\n# for this demo, it just busy loops\ndef demo_shader(x: Any, y: Any) -> Any:\n  bend i = 0:\n    when i < 100000:\n      color = fork(i + 1)\n    else:\n      color = 0x000001\n  return color\n\n# renders a 256x256 image using demo_shader\ndef main() -> Any:\n  return render(16, demo_shader)\n```\n\nIt emulates an OpenGL fragment shader by building an \"image\" as a perfect binary\ntree, and then calling the `demo_shader` function on each pixel. Since the tree\nhas a depth of 16, we have `2^16 = 65536 pixels`, which is enough to fill all\ncores of an RTX 4090. Moreover, since `demo_shader` isn't doing many\nallocations, it can operate entirely inside the GPU's \"shared memory\" (L1\ncache). Each GPU thread has a local space of 64 IC nodes. Functions that don't\nneed more than that, like `demo_shader`, can run up to 5x faster!\n\nOn my GPU, it performs `22,000 MIPS` out of the box, and `40000+ MIPS` with a\ntweak on the generated CUDA file (doubling the `TPC`, which doubles the number\nof threads per block). In the near future, we plan to add immutable textures,\nallowing for single-interaction sampling. With some napkin math, this should be\nenough to render 3D games in real-time. Imagine a future where game engines are\nwritten in Python-like languages? That's the future we're building, with Bend!\n\nYou can see your programs total cost (number of interactions) and performance\n(MIPS) by adding the `-s` flag. This is a good way to check if your algorithm is\nparallelizing. For example, on my Apple M3 Max, sequential algorithms will\nperform about 100 MIPS on interpreted mode, and 130 MIPS on compiled mode\n(remember our compiler is still **very** immature, which is why it isn't much\nfaster than the interpreter). A well-parallelizable program, though, will easily\nreach 1000+ MIPS.\n\n## To be continued...\n\nThis guide isn't extensive, and there's a lot uncovered. For example, Bend also\nhas an entire Haskell-like functional syntax that is compatible with old HVM1, you can find it documented [here](https://github.com/HigherOrderCO/Bend/blob/main/docs/syntax.md#fun-syntax). You can also check [this](https://gist.github.com/VictorTaelin/9cbb43e2b1f39006bae01238f99ff224) out, it's an implementation of the Bitonic Sort with Haskell-like equations. \n\n## Community\n\nRemember: Bend is very new and experimental. Bugs and imperfections should be\nexpected. That said, [HOC](https://HigherOrderCO.com/) will provide long-term\nsupport to Bend (and its runtime, HVM2). So, if you believe this paradigm will\nbe big someday, and want to be part of it in these early stages, join us on\n[Discord](https://Discord.HigherOrderCO.com/). Report bugs, bring your\nsuggestions, and let's chat and build this future together!\n"
  },
  {
    "path": "LICENSE-APACHE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n\n   Copyright 2023-2024 Higher Order Company\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "<h1 >Bend</h1>\n<p>A high-level, massively parallel programming language</p>\n\n## Index\n1. [Introduction](#introduction)\n2. [Important Notes](#important-notes)\n3. [Install](#install)\n4. [Getting Started](#getting-started)\n5. [Speedup Example](#speedup-examples)\n6. [Additional Resources](#additional-resources)\n\n## Introduction\n\nBend offers the feel and features of expressive languages like Python and Haskell. This includes fast object allocations, full support for higher-order functions with closures, unrestricted recursion, and even continuations.                             \nBend scales like CUDA, it runs on massively parallel hardware like GPUs, with nearly linear acceleration based on core count, and without explicit parallelism annotations: no thread creation, locks, mutexes, or atomics.                     \nBend is powered by the [HVM2](https://github.com/higherorderco/hvm) runtime.\n\n\n## Important Notes\n\n* Bend is designed to excel in scaling performance with cores, supporting over 10000 concurrent threads.\n* The current version may have lower single-core performance.\n* You can expect substantial improvements in performance as we advance our code generation and optimization techniques.\n* We are still working to support Windows. Use [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install) as an alternative solution.\n* [We only support NVIDIA Gpus currently](https://github.com/HigherOrderCO/Bend/issues/341).\n\n\n\n\n## Install\n\n### Install dependencies\n\n#### On Linux\n```sh\n# Install Rust if you haven't already.\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\n# For the C version of Bend, use GCC. We recommend a version up to 12.x.\nsudo apt install gcc\n```\nFor the CUDA runtime [install the CUDA toolkit for Linux](https://developer.nvidia.com/cuda-downloads?target_os=Linux) version 12.x.\n\n\n#### On Mac\n```sh\n# Install Rust if you haven't it already.\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n\n# For the C version of Bend, use GCC. We recommend a version up to 12.x.\nbrew install gcc\n```\n\n\n### Install Bend\n\n1. Install HVM2 by running:\n```sh\n# HVM2 is HOC's massively parallel Interaction Combinator evaluator.\ncargo install hvm\n\n# This ensures HVM is correctly installed and accessible.\nhvm --version\n```\n2. Install Bend by running:\n```sh\n# This command will install Bend\ncargo install bend-lang\n\n# This ensures Bend is correctly installed and accessible.\nbend --version\n```\n\n### Getting Started\n#### Running Bend Programs\n```sh\nbend run    <file.bend> # uses the C interpreter by default (parallel)\nbend run-rs <file.bend> # uses the Rust interpreter (sequential)\nbend run-c  <file.bend> # uses the C interpreter (parallel)\nbend run-cu <file.bend> # uses the CUDA interpreter (massively parallel)\n\n# Notes\n# You can also compile Bend to standalone C/CUDA files using gen-c and gen-cu for maximum performance.\n# The code generator is still in its early stages and not as mature as compilers like GCC and GHC.\n# You can use the -s flag to have more information on\n  # Reductions\n  # Time the code took to run\n  # Interaction per second (In millions)\n```\n\n#### Testing Bend Programs\nThe example below sums all the numbers in the range from `start` to `target`. It can be written in two different methods: one that is inherently sequential (and thus cannot be parallelized), and another that is easily parallelizable. (We will be using the `-s`flag in most examples, for the sake of visibility)\n\n#### Sequential version:\nFirst, create a file named `sequential_sum.bend`\n```sh\n# Write this command on your terminal\ntouch sequential_sum.bend\n```\nThen with your text editor, open the file `sequential_sum.bend`, copy the code below and paste in the file.\n\n```py\n# Defines the function Sum with two parameters: start and target\ndef Sum(start, target):\n  if start == target:\n    # If the value of start is the same as target, returns start.\n    return start\n  else:\n    # If start is not equal to target, recursively call Sum with\n    # start incremented by 1, and add the result to start.\n    return start + Sum(start + 1, target)  \n\ndef main():\n  # This translates to (1 + (2 + (3 + (...... + (999999 + 1000000)))))\n  # Note that this will overflow the maximum value of a number in Bend\n  return Sum(1, 1_000_000)\n```\n\n##### Running the file\nYou can run it using Rust interpreter (Sequential)\n```sh\nbend run-rs sequential_sum.bend -s\n```\n\nOr you can run it using C interpreter (Sequential)\n```sh\nbend run-c sequential_sum.bend -s\n```\n\nIf you have a NVIDIA GPU, you can also run in CUDA (Sequential)\n```sh\nbend run-cu sequential_sum.bend -s\n```\n\nIn this version, the next value to be calculated depends on the previous sum, meaning that it cannot proceed until the current computation is complete. Now, let's look at the easily parallelizable version.\n\n\n#### Parallelizable version:\nFirst close the old file and then proceed to your terminal to create `parallel_sum.bend`\n```sh\n# Write this command on your terminal\ntouch parallel_sum.bend\n```\nThen with your text editor, open the file `parallel_sum.bend`, copy the code below and paste in the file.\n\n```py\n# Defines the function Sum with two parameters: start and target\ndef Sum(start, target):\n  if start == target:\n    # If the value of start is the same as target, returns start.\n    return start\n  else:\n    # If start is not equal to target, calculate the midpoint (half),\n    # then recursively call Sum on both halves.\n    half = (start + target) / 2\n    left = Sum(start, half)  # (Start -> Half)\n    right = Sum(half + 1, target)\n    return left + right\n\n# A parallelizable sum of numbers from 1 to 1000000\ndef main():\n  # This translates to (((1 + 2) + (3 + 4)) + ... (999999 + 1000000)...)\n  return Sum(1, 1_000_000)\n```\n\nIn this example, the (3 + 4) sum does not depend on the (1 + 2), meaning that it can run in parallel because both computations can happen at the same time. \n\n##### Running the file\nYou can run it using Rust interpreter (Sequential)\n```sh\nbend run-rs parallel_sum.bend -s\n```\n\nOr you can run it using C interpreter (Parallel)\n```sh\nbend run-c parallel_sum.bend -s\n```\n\nIf you have a NVIDIA GPU, you can also run in CUDA (Massively parallel)\n```sh\nbend run-cu parallel_sum.bend -s\n```\n\nIn Bend, it can be parallelized by just changing the run command. If your code **can** run in parallel it **will** run in parallel.\n\n\n### Speedup Examples\nThe code snippet below implements a [bitonic sorter](https://en.wikipedia.org/wiki/Bitonic_sorter) with *immutable tree rotations*. It's not the type of algorithm you would expect to run fast on GPUs. However, since it uses a divide and conquer approach, which is inherently parallel, Bend will execute it on multiple threads, no thread creation, no explicit lock management.\n\n#### Bitonic Sorter Benchmark\n\n- `bend run-rs`: CPU, Apple M3 Max: 12.15 seconds\n- `bend run-c`: CPU, Apple M3 Max: 0.96 seconds\n- `bend run-cu`: GPU, NVIDIA RTX 4090: 0.21 seconds\n\n <details>\n  <summary><b>Click here for the Bitonic Sorter code</b></summary>\n   \n\n```py\n# Sorting Network = just rotate trees!\ndef sort(d, s, tree):\n  switch d:\n    case 0:\n      return tree\n    case _:\n      (x,y) = tree\n      lft   = sort(d-1, 0, x)\n      rgt   = sort(d-1, 1, y)\n      return rots(d, s, (lft, rgt))\n\n# Rotates sub-trees (Blue/Green Box)\ndef rots(d, s, tree):\n  switch d:\n    case 0:\n      return tree\n    case _:\n      (x,y) = tree\n      return down(d, s, warp(d-1, s, x, y))\n\n# Swaps distant values (Red Box)\ndef warp(d, s, a, b):\n  switch d:\n    case 0:\n      return swap(s ^ (a > b), a, b)\n    case _:\n      (a.a, a.b) = a\n      (b.a, b.b) = b\n      (A.a, A.b) = warp(d-1, s, a.a, b.a)\n      (B.a, B.b) = warp(d-1, s, a.b, b.b)\n      return ((A.a,B.a),(A.b,B.b))\n\n# Propagates downwards\ndef down(d,s,t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return (rots(d-1, s, t.a), rots(d-1, s, t.b))\n\n# Swaps a single pair\ndef swap(s, a, b):\n  switch s:\n    case 0:\n      return (a,b)\n    case _:\n      return (b,a)\n\n# Testing\n# -------\n\n# Generates a big tree\ndef gen(d, x):\n  switch d:\n    case 0:\n      return x\n    case _:\n      return (gen(d-1, x * 2 + 1), gen(d-1, x * 2))\n\n# Sums a big tree\ndef sum(d, t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return sum(d-1, t.a) + sum(d-1, t.b)\n\n# Sorts a big tree\ndef main:\n  return sum(20, sort(20, 0, gen(20, 0)))\n\n```\n\n</details>\n  \nif you are interested in some other algorithms, you can check our [examples folder](https://github.com/HigherOrderCO/Bend/tree/main/examples)\n\n\n### Additional Resources\n - To understand the technology behind Bend, check out the HVM2 [paper](https://paper.higherorderco.com/).\n - We are working on an official documentation, meanwhile for a more in depth\n     explanation check [GUIDE.md](https://github.com/HigherOrderCO/Bend/blob/main/GUIDE.md)\n - Read about our features at [FEATURES.md](https://github.com/HigherOrderCO/Bend/blob/main/FEATURES.md)\n - Bend is developed by [HigherOrderCO](https://higherorderco.com/) - join our [Discord](https://discord.higherorderco.com)!\n"
  },
  {
    "path": "cspell.json",
    "content": "{\n  \"version\": \"0.2\",\n  \"language\": \"en\",\n  \"words\": [\n    \"anni\",\n    \"annihilations\",\n    \"arities\",\n    \"arity\",\n    \"arrayvec\",\n    \"behaviour\",\n    \"bitand\",\n    \"Bitonic\",\n    \"builtins\",\n    \"callcc\",\n    \"chumsky\",\n    \"clippy\",\n    \"codegen\",\n    \"codepoint\",\n    \"codepoints\",\n    \"combinators\",\n    \"concat\",\n    \"ctrs\",\n    \"cuda\",\n    \"datatypes\",\n    \"Deque\",\n    \"destructures\",\n    \"desugared\",\n    \"desugars\",\n    \"devs\",\n    \"dups\",\n    \"effectful\",\n    \"elif\",\n    \"elifs\",\n    \"foldl\",\n    \"hasher\",\n    \"hexdigit\",\n    \"Hindley\",\n    \"hvm's\",\n    \"indexmap\",\n    \"inet\",\n    \"inets\",\n    \"inlineable\",\n    \"inlineables\",\n    \"inlinees\",\n    \"inlines\",\n    \"inodes\",\n    \"insta\",\n    \"interner\",\n    \"ints\",\n    \"itertools\",\n    \"ITRS\",\n    \"kwarg\",\n    \"kwargs\",\n    \"lcons\",\n    \"linearization\",\n    \"linearizes\",\n    \"linearizing\",\n    \"lnil\",\n    \"lpthread\",\n    \"mant\",\n    \"Milner\",\n    \"miscompilation\",\n    \"mult\",\n    \"namegen\",\n    \"nams\",\n    \"nanosleep\",\n    \"nats\",\n    \"newtype\",\n    \"nilary\",\n    \"nullary\",\n    \"numop\",\n    \"nums\",\n    \"OOM's\",\n    \"oper\",\n    \"opers\",\n    \"parallelizable\",\n    \"peekable\",\n    \"postcondition\",\n    \"powi\",\n    \"prec\",\n    \"proto\",\n    \"Pythonish\",\n    \"quadtree\",\n    \"quadtrees\",\n    \"rbag\",\n    \"readback\",\n    \"recursively\",\n    \"redex\",\n    \"redexes\",\n    \"repr\",\n    \"resugar\",\n    \"resugared\",\n    \"resugaring\",\n    \"rfold\",\n    \"rsplit\",\n    \"rwts\",\n    \"scons\",\n    \"scopeless\",\n    \"scrutinee\",\n    \"sequentialism\",\n    \"snil\",\n    \"SOTA\",\n    \"stdext\",\n    \"struct\",\n    \"subcmd\",\n    \"submatch\",\n    \"subpattern\",\n    \"subpatterns\",\n    \"subterm\",\n    \"subterms\",\n    \"succ\",\n    \"supercombinator\",\n    \"supercombinators\",\n    \"Tarjan's\",\n    \"tlsv\",\n    \"TSPL\",\n    \"tunr\",\n    \"unbounds\",\n    \"undefer\",\n    \"vectorize\",\n    \"vectorizes\",\n    \"walkdir\"\n  ],\n  \"files\": [\n    \"**/*.rs\",\n    \"**/*.md\"\n  ],\n  \"ignoreRegExpList\": [\n    \"HexValues\",\n    \"/λ/g\",\n    \"/-O/g\",\n    \"/`.`/g\",\n    \"/`..`/g\",\n    \"/`...`/g\",\n    \"/`....`/g\",\n    \"/`.....`/g\",\n    \"/```(.*\\n)*```/g\"\n  ]\n}\n"
  },
  {
    "path": "docs/builtins.md",
    "content": "> this is a WIP based on [Builtins.bend](https://github.com/HigherOrderCO/Bend/blob/main/src/fun/builtins.bend).\n\n# Built-in Types and Functions\n\n**Bend** built-in types and functions, this document serves as a reference guide. Read more at [FEATURES.md](https://github.com/HigherOrderCO/Bend/blob/main/FEATURES.md).\n\n## String\n\n```python\ntype String:\n  Nil\n  Cons { head: u24, ~tail: String }\n```\n\n- **Nil**: Represents an empty string.\n- **Cons head ~tail**: Represents a string with a `head` character and a `tail` string.\n\n### Syntax\n\nA String literal is surrounded with `\"`. Accepts the same values as characters literals.\n\n```\n\"Hello, World!\"\n```\n\n### Functions\n\n#### String/equals\n\n```python\n#{\n  Checks if two strings are equal.\n#}\ndef String/equals (s1: String) (s2: String) : u24\n```\n\n#### String/split\n\n```python\n#{\n  Splits a string into a list of strings based on the given delimiter.\n#}\nString/split (s: String) (delimiter: u24) : (List String)\n```\n\n## List\n\n```python\ntype List(T):\n  Nil\n  Cons { head: T, ~tail: List(T) }\n```\n\n- **Nil**: Represents an empty list.\n- **Cons head ~tail**: Represents a list with a `head` element and a `tail` list.\n- **T**: Represents the type of the elements in the list.\n\n### Syntax\n\nA List of values can be written using `[ ]`, it can have multiple values inside, using `,` you can divide its value in a list of multiple elements.\n\n```\n[\"This\", \"List\", \"Has\", \"Multiple\", \"Values\"]\n```\n\n### Functions\n\n#### List/length\n\n```python\n#{\n  Returns a tuple containing the length and the list itself.\n#}\ndef List/length(xs: List(T)) -> (u24, List(T)):\n```\n\n\n\n#### List/reverse\n\n```python\n#{\n  Reverses the elements of a list.\n#}\ndef List/reverse(xs: List(T)) -> List(T):\n```\n\n#### List/flatten\n\n```python\n#{\n  Returns a flattened list from a list of lists.\n#}\nList/flatten (xs: (List (List T))) : (List T)\n```\nExample:\n```python\nList/flatten([[1], [2, 3], [4]])\n\n# Result: [1, 2, 3, 4]\n```\n\n#### List/concat\n\n```python\n#{\n  Appends two lists together. \n#}\ndef List/concat(xs: (List T)) (ys: (List T)) : (List T)\n```\nExample:\n```python\nList/concat([1, 2], [4, 5])\n\n# Result: [1, 2, 4, 5]\n```\n\n#### List/filter\n\n```python\n#{\n  Filters a list based on a predicate function.\n#}\nList/filter(xs: List(T), pred: T -> Bool) -> List(T)\n```\n\n#### List/split_once\n\n```python\n#{\n  Splits a list into two lists at the first occurrence of a value.\n#}\ndef List/split_once(xs: List(T), cond: T -> u24) -> (Result((List(T), List(T)), List(T))): \n```\nExample:\n```python\n  # Split list at first even number\n  list = [1,3,4,5,6]\n  result = List/split_once(list, λx: x % 2 == 0)\n  return result\n  # Result: Result/Ok/tag ([1, 3], [5, 6])\n```\n\n## Result\n\n```python\ntype (Result o e) = (Ok (val: o)) | (Err (val: e))\n```\n\n### Result/unwrap\n\nReturns the inner value of `Result/Ok` or `Result/Err`.\n\nIf the types `A` and `B` are different, should only be used in type unsafe programs or when only one variant is guaranteed to happen.\n\n```python\n#{\nReturns the inner value of `Result/Ok` or `Result/Err`.\n\nIf the types `A` and `B` are different, should only be used in type unsafe programs or when only one variant is guaranteed to happen.\n#}\ndef Result/unwrap(res: Result(T, E)) -> Any:\n```\n\n## Tree\n\n```python\ntype Tree(T):\n  Node { ~left: Tree(T), ~right: Tree(T) }\n  Leaf { value: T }\n```\n\n**`Tree`** represents a tree with values stored in the leaves.\nTrees are a structure that naturally lends itself to parallel recursion, so writing your problem in terms of trees is a good first approach to parallelize your code.\n\n- **Node { ~left ~right }**: Represents a tree node with `left` and `right` subtrees.\n- **Leaf { value }**: Represents one of the ends of the tree, storing `value`.\n- **T**: Represents the type of the elements in the tree.\n\n#### Syntax\n\n**Bend** provides the `![]` operator to create tree branches and the `!` operator to create a tree leaf.\n\n```py\n# ![a, b] => Equivalent to Tree/Node { left: a, right: b }\n# !x      => Equivalent to Tree/Leaf { value: x }\ntree = ![![!1, !2],![!3, !4]]\n```\n\nTechnically your trees don't need to end with leaves, but if you don't, your program will be very hard to reason about.\n## Maybe\n\n```python\ntype Maybe(T):\n  Some{ value }\n  None \n```\n**`Maybe`** is a structure that may or not contain a value. It is meant to be used as a return type for functions that can fail. This way you don't need to resort to unreachable() in order to handle errors.\n\n#### Syntax\nHere's how you create a new `Maybe` containing the Nat value of 1:\n```python\nmaybe = Maybe/Some(Nat/Succ(Nat/Zero))\n```\n## Maybe functions\n\n### Maybe/unwrap\n```python\n#{\nReturns the value inside the `Maybe` if it is `Some`, and returns `unreachable()` if it is `None`.\n#}  \ndef Maybe/unwrap(m: Maybe(T)) -> T\n```\n## Map\n\n```python\ntype Map(T):\n  Node { value: Maybe(T), ~left: Map(T), ~right: Map(T) }\n  Leaf  \n```\n\n**`Map`** represents a tree with values stored in the branches.\nIt is meant to be used as an efficient map data structure with integer keys and O(log n) read and write operations.\n\n- **Node { value: Maybe(T), ~left: Map(T), ~right: Map(T) }**: Represents a map node with a `Maybe` and `left` and `right` subtrees. Empty nodes have `Maybe/None` stored in the `value` field, whilst non-empty nodes have `Maybe/Some` stored in the `value` field.\n- **Leaf**: Represents an unwritten, empty portion of the map.\n\n#### Syntax\n\nHere's how you create a new `Map` with some initial values.:\n\n```python\ndef main():\n  return { 0: 4, `hi`: \"bye\", 'c': 2 + 3 }\n```\n\nThe keys must be `U24` numbers, and can be given as literals or any other expression that evaluates to a `U24`.\n\nAs long as your function isn't typed, like the one in the example, the values can be anything. But storing data of different types in a `Map` will make it harder for you to reason about it.\n\nYou can read and write a value of a map with the `[]` operator:\n\n```python\nmap = { 0: \"zero\", 1: \"one\", 2: \"two\", 3: \"three\" }\nmap[0] = \"not zero\"\nmap[1] = 2\nmap[2] = 3\nmap[3] = map[1] + map[map[1]]\n```\n\nHere, `map` must be the name of the `Map` variable, and the keys inside `[]` can be any expression that evaluates to a `U24`.\n\n## Map functions\n\n### Map/empty\n\n```python\n#{\n  Initializes an empty map.\n#} \ndef Map/empty() -> Map(T)\n```\n\n### Map/get\n\n\n\n```rust\n#{\n  Retrieves a `value` from the `map` based on the `key` and returns a tuple with the value and the `map` unchanged.\n  \n  The logic for checking whether a value is or not contained in a `map` is not done in the `get` function, so if we try to get a key that is not in the map, the program will return `unreachable`. \n#}\ndef Map/get (map: Map(T), key: u24) -> (T, Map(T))\n```\n\n#### Syntax\n\nConsidering the following map\n\n```python\n{ 0: \"hello\", 1: \"bye\", 2: \"maybe\", 3: \"yes\"}\n```\n\nThe `get` function can be written as\n\n```\nreturn x[0]  # Gets the value of the key 0\n```\n\nAnd the value resultant from the get function would be:\n\n```\n\"hello\"\n```\n\n### Map/set\n\n```rust\n#{\n  Sets a value on a Map, returning the map with the value mapped.\n#}\ndef Map/set (map: Map(T), key: u24, value: T) -> Map(T)\n```\n\n#### Syntax\n\nConsidering the following tree\n\n```python\n{ 0: \"hello\", 1: \"bye\", 2: \"maybe\", 3: \"yes\"}\n```\n\nThe `set` function can be written as\n\n```py\nx[0] = \"swapped\"     # Assigns the key 0 to the value \"swapped\"\n```\n\nAnd the value resultant from the get function would be:\n\n```py\n{ 0: \"swapped\", 1: \"bye\", 2: \"maybe\", 3: \"yes\"}\n```\n\nIf there's no matching `key` in the tree, it would add a new branch to that tree with the value `set`\n\n```py\nx[4] = \"added\"     # Assigns the key 4 to the value \"added\"\n```\n\nThe new tree\n\n```py\n{ 0: \"swapped\", 1: \"bye\", 2: \"maybe\", 3: \"yes\", 4: \"added\"}\n```\n\n### Map/map\n\n\n```rust\n#{\n  Applies a function to a value in the map and returns the map with the value mapped.\n#}\ndef Map/map (map: Map(T), key: u24, f: T -> T) -> Map(T)\n```\n\n#### Syntax\n\nWith the same map that we `set` in the previous section, we can map it's values with `@=`:\n\n```py\nx[0] @= lambda y: String/concat(y, \" and mapped\")\n# x[0] now contains \"swapped and mapped\"\n```\n\n\n### Map/contains\n\n```python\n#{\n  Checks if a `map` contains a given `key` and returns 0 or 1 along with and  `map` unchanged.\n#}\ndef Map/contains (map: Map(T), key: u24) -> (u24, Map(T))\n\n#### Syntax\n\nWith the same map that we `set` in the previous section, we can call the function `Map/contains` explicitly:\n\n```python\n(num, map) = Map/contains(m, key)\nreturn num\n```\nWhilst the `num` variable will contain 0 or 1 depending on if the key is in the map or not.\n\n\n## Nat\n\n```python\ntype Nat = (Succ ~(pred: Nat)) | (Zero)\n```\n\n- **Succ ~pred**: Represents a natural number successor.\n- **Zero**: Represents the natural number zero.\n\n## DiffList\n\nDiffList is a list that has constant time prepends (cons), appends and concatenation, but can't be pattern matched.\n\nIt is implemented as a function that receives a list to be appended to the last element of the DiffList.\n\nFor example, the list `List/Cons(1, List/Cons(2, List/Nil))` can be written as the difference list `lambda x: List/Cons(1, List/Cons(2, x))`.\n\n### Functions\n\n#### DiffList/new\n\n\n```python\n#{\nCreates a new difference list.\n#}\ndef DiffList/new() -> (List(T) -> List(T))\n```\n\n#### DiffList/append\n\n\n```python\n#{\n  Appends a value to the end of the difference list.\n#}\ndef DiffList/append(diff: List(T) -> List(T), val: T) -> (List(T) -> List(T))\n```\n\n#### DiffList/cons\n\n```python\n#{\n  Appends a value to the beginning of the difference list.\n#}\ndef DiffList/cons(diff: List(T) -> List(T), val: T) -> (List(T) -> List(T))\n```\n\n#### DiffList/to_list\n\n\n```python\n#{\n  Converts a difference list to a regular cons list.\n#}\ndef DiffList/to_list(diff: List(T) -> List(T)) -> (List(T))\n```\n\n## IO\n\nThe basic builtin IO functions are under development and will be stable in the next milestone.\n\nHere is the current list of functions, but be aware that they may change in the near future.\n\n### Printing\n\n```python\n#{\n  Prints the string `text` to the standard output, encoded with utf-8.\n#}\ndef IO/print(text: String) -> IO(None)\n```\n\n\n### Input\n\n```python\n#{\n  Reads characters from the standard input until a newline is found.\n  Returns the read input as a String decoded with utf-8.\n#}\ndef IO/input() -> IO(Result(String, u24))\n```\n\n\n\n### File IO\n\n#### File open\n\n```python\n#{\n  Opens a file with with `path` being given as a string and `mode` being a string with the mode to open the file in. The mode should be one of the following:\n#}\ndef IO/FS/open(path: String, mode: String) -> IO(Result(u24, u24))\n```\n\n\n- `\"r\"`: Read mode\n- `\"w\"`: Write mode (write at the beginning of the file, overwriting any existing content)\n- `\"a\"`: Append mode (write at the end of the file)\n- `\"r+\"`: Read and write mode\n- `\"w+\"`: Read and write mode\n- `\"a+\"`: Read and append mode\n\nReturns an U24 with the file descriptor. File descriptors are not necessarily the same as the ones assigned by the operating system, but rather unique identifiers internal to Bend's runtime.\n\n#### File descriptors for standard files\n\nThe standard input/output files are always open and assigned the following file descriptors:\n\n- `IO/FS/STDIN = 0`: Standard input\n- `IO/FS/STDOUT = 1`: Standard output\n- `IO/FS/STDERR = 2`: Standard error\n\n#### File close\n\n```python\n#{\n  Closes the file with the given `file` descriptor.\n#}\ndef IO/FS/close(file: u24) -> IO(Result(None, u24))\n```\n\n\n#### File read\n\n```python\n#{\nReads `num_bytes` bytes from the file with the given `file` descriptor.\nReturns a list of U24 with each element representing a byte read from the file.\n#}\ndef IO/FS/read(file: u24, num_bytes: u24) -> IO(Result(List(u24), u24))\n```\n\n\n\n```python\n#{\n  Reads a line from the file with the given `file` descriptor.\n  Returns a list of U24 with each element representing a byte read from the file.\n#}\ndef IO/FS/read_line(fd: u24) -> IO(Result(List(u24), u24))\n```\n\n\n\n```python\n#{\n  Reads until the end of the file with the given `file` descriptor.\n  Returns a list of U24 with each element representing a byte read from the file.\n#}\ndef IO/FS/read_to_end(fd: u24) -> IO(Result(List(u24), u24))\n```\n\n\n\n```python\n#{\n  Reads an entire file with the given `path` and returns a list of U24 with each element representing a byte read from the file.\n#}\ndef IO/FS/read_file(path: String) -> IO(Result(List(u24), u24))\n```\n\n\n#### File write\n\n```python\n#{\n  Writes `bytes`, a list of U24 with each element representing a byte, to the file with the given `file` descriptor.\n  Returns nothing (`*`).\n#}\ndef IO/FS/write(file: u24, bytes: List(u24)) -> IO(Result(None, u24))\n```\n\n```python\n#{\n  Writes `bytes`, a list of U24 with each element representing a byte, as the entire content of the file with the given `path`.\n#}\ndef IO/FS/write_file(path: String, bytes: List(u24)) -> IO(Result(None, u24))\n```\n\n#### File seek\n\n```python\n#{\n  Moves the current position of the file with the given `file` descriptor to the given `offset`, an I24 or U24 number, in bytes.\n#}\ndef IO/FS/seek(file: u24, offset: i24, mode: i24) -> IO(Result(None, u24)) \n```\n\n`mode` can be one of the following:\n\n- `IO/FS/SEEK_SET = 0`: Seek from start of file\n- `IO/FS/SEEK_CUR = 1`: Seek from current position\n- `IO/FS/SEEK_END = 2`: Seek from end of file\n\nReturns nothing (`*`).\n\n#### File flush\n\n```python\n#{\n  Flushes the file with the given `file` descriptor.\n  Returns nothing (`*`).\n#}\ndef IO/FS/flush(file: u24) -> IO(Result(None, u24))\n```\n\n### Dinamically linked libraries\n\nIt's possible to dynamically load shared objects (libraries) with functions that implement the Bend IO interface.\nYou can read more on how to implement these libraries in the [Dynamically linked libraries and foreign functions](docs/ffi.md) documentation.\n\n#### IO/DyLib/open\n\n```py\n#{\n  Loads a dynamic library file.\n#}\ndef IO/DyLib/open(path: String, lazy: u24) -> IO(Result(u24, String))\n```\n- `path` is the path to the library file.\n- `lazy` is a boolean encoded as a `u24` that determines if all functions are loaded lazily (`1`) or upfront (`0`).\n- Returns an unique id to the library object encoded as a `u24`.\n\n#### IO/DyLib/call\n\n```py\n#{\n  Calls a function of a previously opened library.\n  - `dl` is the id of the library object.\n  - `fn` is the name of the function in the library.\n  - `args` are the arguments to the function. The expected values depend on the called function.\n  - The returned value is determined by the called function.\n#}\ndef IO/DyLib/call(dl: u24, fn: String, args: Any) -> IO(Result(Any, String))\n```\n\n\n#### IO/DyLib/close\n\n```py\n#{\n  Closes a previously open library.\n  - `dl` is the id of the library object.\n  - Returns nothing (`*`).\n#}\ndef IO/DyLib/close(dl: u24) -> IO(Result(None, String))\n```\n\n\n## Native number casting\n\n### to_f24\n\n```py\n#{\n  Casts an u24 number to an f24.\n#}\ndef u24/to_f24 -> (u24 -> f24)\n\n#{\n  Casts an i24 number to an f24.\n#}\ndef i24/to_f24 -> (i24 -> f24)\n```\n### to_u24\n\n```py\n#{\n  Casts a f24 number to an u24.\n#}\ndef f24/to_u24 -> (f24 -> u24)\n\n#{\n  Casts an i24 number to an u24.\n#}\ndef i24/to_u24 -> (i24 -> u24)\n```\n### to_i24\n\n```py\n#{\n  Casts an u24 number to an i24.\n#}\ndef u24/to_i24 -> (u24 -> i24):\n#{\n  Casts a f24 number to an i24.\n#}\ndef f24/to_i24 -> (f24 -> i24):\n```\n\n### to_string\n\n```py\n#{\n  Casts an u24 native number to a string.\n#}\ndef u24/to_string(n: u24) -> String:\n```\n\n## String encoding / decoding\n\n### String/decode_utf8\n\n```py\n#{\n  Decodes a sequence of bytes to a String using utf-8 encoding.\n#}\nString/decode_utf8 (bytes: (List u24)) : String\n```\n\n\n### String/decode_ascii\n\n```py\n#{\n  Decodes a sequence of bytes to a String using ascii encoding.\n#}\nString/decode_ascii (bytes: (List u24)) : String\n```\n\n\n### String/encode_utf8\n\n```py\n#{\n  Encodes a String to a sequence of bytes using utf-8 encoding.\n#}\nString/encode_utf8 (str: String) : (List u24)\n```\n\n\n### String/encode_ascii\n\n```py\n#{\n  Encodes a String to a sequence of bytes using ascii encoding.\n#}\nString/encode_ascii (str: String) : (List u24)\n```\n\n\n### Utf8/decode_character\n\n```py\n#{\n  Decodes a utf-8 character, returns a tuple containing the rune and the rest of the byte sequence.\n#}\nUtf8/decode_character (bytes: (List u24)) : (u24, (List u24))\n```\n\n\n### Utf8/REPLACEMENT_CHARACTER\n\n```py\nUtf8/REPLACEMENT_CHARACTER : u24 = '\\u{FFFD}'\n```\n\n## Math\n\n### Math/log\n\n```py\n#{\n  Computes the logarithm of `x` with the specified `base`.\n#}\ndef Math/log -> (f24 -> f24 -> f24)\n```\n\n\n### Math/atan2\n\n```py\n#{\n  Computes the arctangent of `y / x`.\n  Has the same behaviour as `atan2f` in the C math lib.\n#}\ndef Math/atan2 -> (f24 -> f24 -> f24)\n```\n\n\n### Math/PI\n\n\n```py\n#{\n  Defines the Pi constant.\n#}\ndef Math/PI() -> f24\n```\n\n### Math/E\n\n\n```py\n#{\nEuler's number\n#}\ndef Math/E() -> f24\n```\n\n### Math/sin\n\n\n```py\n#{\n  Computes the sine of the given angle in radians.\n#}\ndef Math/sin -> (f24 -> f24)\n```\n\n### Math/cos\n\n\n```py\n#{\n  Computes the cosine of the given angle in radians.\n#}\ndef Math/cos -> (f24 -> f24)\n```\n\n### Math/tan\n\n\n```py\n#{\n  Computes the tangent of the given angle in radians.\n#}\ndef Math/tan -> (f24 -> f24)\n```\n\n### Math/cot\n\n\n```py\n#{\n  Computes the cotangent of the given angle in radians.\n#}\nMath/cot (a: f24) : f24 \n```\n\n### Math/sec\n\n\n```py\n#{\n  Computes the secant of the given angle in radians.\n#}\nMath/sec (a: f24) : f24 \n```\n\n### Math/csc\n\n\n```py\n#{\n  Computes the cosecant of the given angle in radians.\n#}\nMath/csc (a: f24) : f24 \n```\n\n### Math/atan\n\n\n\n```py\n#{\n  Computes the arctangent of the given angle.\n#}\nMath/atan (a: f24) : f24 \n```\n\n### Math/asin\n\n\n```py\n#{\n  Computes the arcsine of the given angle.\n#}\nMath/asin (a: f24) : f24 \n```\n\n### Math/acos\n\n\n```py\n#{\n  Computes the arccosine of the given angle.\n#}\nMath/acos (a: f24) : f24\n\n### Math/radians\n\n\n```py\n#{\n  Converts degrees to radians.\n#}\nMath/radians (a: f24) : f24 \n```\n\n### Math/sqrt\n\n\n```py\n#{\n  Computes the square root of the given number.\n#}\nMath/sqrt (n: f24) : f24 \n```\n\n### Math/ceil\n\n\n```py\n#{\n  Round float up to the nearest integer.\n#}\ndef Math/ceil(n: f24) -> f24\n```\n\n### Math/floor\n\n\n```py\n#{\n  Round float down to the nearest integer.\n#}\ndef Math/floor(n: f24) -> f24\n```\n\n### Math/round\n\n\n```py\n#{\n  Round float to the nearest integer.\n#}\ndef Math/round(n: f24) -> f24\n```\n\n## Lazy thunks\n\nYou can force a function call to be evaluated lazily by wrapping it in a lazy thunk.\nIn Bend, this can be expressed as `lambda x: x(my_function, arg1, arg2, ...)`.\n\nTo evaluate the thunk, you can use the `undefer` function or apply `lambda x: x` to it.\n"
  },
  {
    "path": "docs/cli-arguments.md",
    "content": "# CLI arguments\n\nIt's possible to pass arguments to a program executed with `bend run`:\n\n```sh\nbend run <Path to program> [Arguments in expression form]...\n```\n\nIt accepts any expression that would also be valid inside a bend function.\n\nArguments are passed to programs by applying them to the entry point function:\n\n```py\n# Imp syntax\ndef main(x1, x2, x3):\n  return MainBody(x1 x2 x3)\n\n# Calling with `bend run <file> arg1 arg2 arg3 argN`, it becomes (in the \"fun\" syntax):\nmain = (λx1 λx2 λx3 (MainBody x1 x2 x3) arg1 arg2 arg3 argN)\n```\n\nThere are no restrictions on the number of arguments passed to the program.\nYou can even pass more arguments than the function expects, although that can lead to unexpected results.\n```py\n# Expects 2 CLI arguments\ndef main(x, y):\n  return {x - y, y - x}\n```\n```sh\n# Calling with just one argument\n> bend run <path> +5\nλa {(- a 5) (- a +5)}\n\n# Calling with two argument\n> bend run <path> +5 +3\n{+2 -2}\n# Calling with three arguments\n# In this case, the third argument doesn't change anything\n# due to the underlying interaction rules.\n# If this were a variant of simply-typed lambda-calculus\n# it wouldn't be well-typed.\n> bend run <path> +5 +3 +1\n{+2 -2}\n```\n\n\n"
  },
  {
    "path": "docs/compilation-and-readback.md",
    "content": "# Compilation and readback\n\nHow are terms compiled to interaction net nodes?\n\nHVM has a bunch of useful nodes to write IC programs.\nEvery node contains one `main` port `0` and two `auxiliary` ports, `1` and `2`.\n\nThere are 7 kinds of nodes, Eraser, Constructor, Duplicator, Reference, Number, Operation and Match.\n\nA lambda `λx x` compiles into a Constructor node.\nAn application `((λx x) (λx x))` also compiles into a Constructor node.\n\n```\n  0 - Points to the lambda occurrence      0 - Points to the function\n  |                                        |\n  λ Lambda                                 @ Application\n / \\                                      / \\\n1   2 - Points to the lambda body        1   2 - Points to the application occurrence\n|                                        |\nPoints to the lambda variable            Points to the argument\n```\n\nWhen reading back, if we visit a Constructor via port 0 then we know it's a lambda, and if we visit it via port 2 it's an application.\n\n- The `Number` node uses the label to store it's number.\n- An `Operation` node uses the label to store it's operation.\n\nA duplication `let {a b} = x` compiles into a Duplicator node.\nA superposition `{a b}` compiles to a Duplicator node too. The difference here comes from context too.\n\n```\n  0 - Points to the sup occurrence         0 - Points to the duplicated value\n  |                                        |\n  # Superposition                          # Duplication\n / \\                                      / \\\n1   2 - Points to the second value       1   2 - Points to the second binding\n|                                        |\nPoints to the first value                Points to the first binding\n```\nBend core terms directly compile to HVM nodes.\n- Application -> CON node with --+ polarization.\n- Lambda -> CON node with ++- polarization.\n- Duplication -> DUP node with -++ polarization.\n- Superposition -> DUP node with +-- polarization\n- Pairs -> CON node with +-- polarization.\n- Pair elimination -> CON node with -++ polarization.\n- Erasure values (as in λx *) -> ERA node with + polarization.\n- Erased variables (as in λ* x) -> ERA node with + polarization.\n- Numbers -> NUM node (always + polarization).\n- Switches -> MAT node (--+) + CON node (+--) on port 1 that links to the if 0 and if >= 1 cases.\n- Numeric operations -> an OPR node (--+) plus a NUM that holds the kind of operation as per the HVM2 paper.\n- References to top level functions -> REF node (+).\n\nMatches get compiled to the above core constructs according to the adt-encoding option.\nCheck out [HVM2](https://github.com/HigherOrderCO/HVM), one of the Higher Order Company's projects, to know more about this.\n\n### Bend compiler passes:\n\n**encode_adt**: Create functions for constructors.  \n**desugar_open**: Convert open terms into match terms.  \n**encode_builtins**: Convert sugars for builtin types (e.g., list, string) into function calls.  \n**desugar_match_def**: Convert equational-style pattern matching functions into trees of match and switch terms.  \n**fix_match_terms**: Normalize all match and switch terms.  \n**lift_local_defs**: Convert `def` terms into top-level functions.  \n**desugar_bend**: Convert Bend terms into top-level functions.  \n**desugar_fold**: Convert `fold` terms into top-level functions.  \n**desugar_with_blocks**: Convert `with` terms and ask (`<-`) terms into monadic bind and unit (wrap).  \n**make_var_names_unique**: Give a unique name to each variable in each function.  \n**desugar_use**: Resolve alias terms (`use`) by substituting their occurrences with the aliased term (syntactic duplication).  \n**linearize_matches**: Linearize the variables in match and switch terms according to the linearize-matches option.  \n**linearize_match_with**: Linearize the variables specified in `with` clauses of match and switch if they haven't already been linearized by `linearize_matches`.  \n**type_check_book**: Run the type checker (no elaboration, only inference/checking).  \n**encode_matches**: Transform match terms into their lambda-calculus forms as specified by the adt-encoding option.  \n**linearize_vars**: Linearize the occurrences of variables by placing duplicates when variables are used more than once, erasing unused variables, and inlining `let` terms whose variables only occur once.  \n**float_combinators**: Convert combinator terms into top-level functions according to the size heuristic described in the source code.  \n**prune**: Remove unused functions according to the prune option.  \n**merge_definitions**: Merge identical top-level functions.  \n**expand_main**: Expand the term of the `main` function by dereferencing so that it includes computation and isn't just lazy refs or data containing lazy refs.  \n**book_to_hvm**: Lower to HVM (as described in the compilation-and-readback file).  \n**eta**: Perform eta-reduction at the inet level without reducing nodes with `ERA` or `NUM` at both ports (logically equivalent but looks incorrect to users).  \n**check_cycles**: Heuristic check for mutually recursive cycles of function calls that could cause loops in HVM.  \n**inline_hvm_book**: Inline REFs to networks that are nullary nodes.  \n**prune_hvm_book**: Additional layer of pruning after eta-reducing at the inet level.  \n**check_net_sizes**: Ensure no generated definition will be too large to run on the CUDA runtime.  \n**add_recursive_priority**: Mark some binary recursive calls with a flag at the inet level so that the GPU runtime can properly distribute work.\n\n"
  },
  {
    "path": "docs/compiler-options.md",
    "content": "# Options\n\n| flag                                                                     | Default       | What it does?                             |\n| ------------------------------------------------------------------------ | ------------- | ----------------------------------------- |\n| `-Oall`                                                                  | Disabled      | Enables all compiler passes               |\n| `-Ono-all`                                                               | Disabled      | Disables all compiler passes              |\n| `-Oeta` `-Ono-eta`                                                       | Disabled      | [eta-reduction](#eta-reduction)           |\n| `-Oprune` `-Ono-prune`                                                   | Disabled      | [definition-pruning](#definition-pruning) |\n| `-Olinearize-matches` `-Olinearize-matches-alt` `-Ono-linearize-matches` | Enabled       | [linearize-matches](#linearize-matches)   |\n| `-Ofloat-combinators` `-Ono-float-combinators`                           | Enabled       | [float-combinators](#float-combinators)   |\n| `-Omerge` `-Ono-merge`                                                   | Disabled      | [definition-merging](#definition-merging) |\n| `-Oinline` `-Ono-inline`                                                 | Disabled      | [inline](#inline)                         |\n| `-Ocheck-net-size` `-Ono-check-net-size`                                 | Disabled      | [check-net-size](#check-net-size)         |\n| `-Oadt-scott` `-Oadt-num-scott`                                          | adt-num-scott | [adt-encoding](#adt-encoding)             |\n| `-Otype-check` `-Ono-type-check`                                         | type-check    | [type-checking](#type-checking)            |\n## Eta-reduction\n\nEnables or disables Eta Reduction for defined functions.\n\nEta reduction simplifies lambda expressions, removing redundant parameters. [See also](https://wiki.haskell.org/Eta_conversion).\n\nExample:\n\n```py\n# program\nid = λx x\nid_id = λx (id x)\n\n# -Oeta\nid_id = id\n\n# -Ono-eta\nid_id = λz (id z)\n```\n\n## Definition-pruning\n\nIf enabled, removes all unused definitions.\n\nExample:\n\n```py\n# program\nId = λx x\n\nId2 = Id\n\nMain = (Id 42)\n\n# -Oprune\nId = λx x\n\nMain = (Id 42)\n\n# -Ono-prune\nId = λx x\n\nId2 = Id\n\nMain = (Id 42)\n```\n\n## Definition-merging\n\nIf enabled, merges definitions that are identical at the term level.\n\nExample:\n\n```py\n# Original program\nid = λx x\nalso_id = λx x\nmain = (id also_id)\n\n# After definition merging\nid_$_also_id = λx x\nmain = (id also_id)\n\n# -Ono-merge, compilation output\n@also_id = (a a)\n@id = (a a)\n@main = a\n& @id ~ (@also_id a)\n\n# -Omerge, compilation output\n@a = (a a)\n@main = a\n& @a ~ (@a a)\n```\n\n## linearize-matches\n\nLinearizes the variables between match cases, transforming them into combinators when possible.\n\n```py\n# Linearization means going from this\n@a @b switch a {\n  0: (Foo b)\n  _: (Bar a-1 b)\n}\n# To this\n@a @b (switch a {\n  0: @b (Foo b)\n  _: @b (Bar a-1 b)\n} b)\n```\n\nWhen the `linearize-matches` option is used, only linearizes variables that would generate an eta-reducible application.\n\nExample:\n\n```py\nλa λb switch a { 0: b; _: b }\n\n# Is transformed to\nλa switch a { 0: λb b; _: λb b }\n\n# But this stays the same\nλa λb switch b { 0: a; _: a }\n```\n\nWhen the `linearize-matches-extra` option is used, it linearizes all variables used in the arms.\n\nexample:\n\n```py\nλa λb λc switch b { 0: a; _: c }\n\n# Is transformed to (without eta-reducing 'c')\nλa λb λc (switch b { 0: λa λc a; _: λa λc c } a c)\n```\n\nThese automatic linearization passes are done before the manual linearization from `with` and doesn't duplicate manually linearized variables.\n\n```py\n# These variables are only linearized once\nλa λb λc switch a with b c { 0: (b c); _: (a-1 b c) }\n\n# With -Olinearize-matches becomes\nλa λb λc (switch a { 0: λb λc (b c); _: λb λc (a-1 b c) } b c)\n\n# And not\nλa λb λc (switch a { 0: λb λc λb λc (b c); _: λb λc λb λc  (a-1 b c) } b c b c)\n```\n\n## float-combinators\n\nExtracts closed terms to new definitions. See [lazy definitions](lazy-definitions.md#automatic-optimization).\nSince HVM-Core is an eager runtime, this pass is enabled by default to prevent infinite expansions.\n\nExample:\n\n```py\nTrue  =    λt λf λm t\nFalse =    λt λf λm f\nMaybe = λx λt λf λm (m x)\n\ngetVal = λb (b 1 0 (λx (== x 1)))\n# `(λx (== x 1))` can be extracted, since there is no free variables.\n\nCons = λh λt λc λn (c h t)\nNil  = λc λn n\n\nfold = λinit λf λxs (xs λh λt (fold (f init h) f t) init)\n# Here we need to extract `λh λt (fold (f init h) f t)` to not expand `fold` infinitely, but it will not be extracted because of the free variable `init`.\n```\n\n# Inline\n\nIf enabled, inlines terms that compile to nullary inet nodes (refs, numbers, erasures).\n\nExample:\n\n```py\n# program\nfoo = 2\nid = λx x\nmain = (id foo)\n\n# -Ono-inline, compilation output\n@foo = 2\n@id = (a a)\n@main = a\n& @id ~ (@foo a)\n\n# -Oinline, compilation output\n@foo = 2\n@id = (a a)\n@main = a\n& @id ~ (2 a)\n```\n\n## Check-net-size\n\nIf enabled, checks that the size of each function after compilation has at most 64 HVM nodes.\nThis is a memory restriction of the CUDA runtime, if you're not using the `*-cu` you can disable it.\n\nExample:\n\n```py\n# Without -Ocheck-net-size compiles normally.\n# But with -Ocheck-net-size it fails with\n# `Definition is too large for hvm`\n(Radix n) =\n  let r = Map_/Used\n  let r = (Swap (& n 1) r Map_/Free)\n  let r = (Swap (& n 2) r Map_/Free)\n  let r = (Swap (& n 4) r Map_/Free)\n  let r = (Swap (& n 8) r Map_/Free)\n  let r = (Swap (& n 16) r Map_/Free)\n  let r = (Swap (& n 32) r Map_/Free)\n  let r = (Swap (& n 64) r Map_/Free)\n  let r = (Swap (& n 128) r Map_/Free)\n  let r = (Swap (& n 256) r Map_/Free)\n  let r = (Swap (& n 512) r Map_/Free)\n  let r = (Swap (& n 1024) r Map_/Free)\n  let r = (Swap (& n 2048) r Map_/Free)\n  let r = (Swap (& n 4096) r Map_/Free)\n  let r = (Swap (& n 8192) r Map_/Free)\n  let r = (Swap (& n 16384) r Map_/Free)\n  let r = (Swap (& n 32768) r Map_/Free)\n  let r = (Swap (& n 65536) r Map_/Free)\n  let r = (Swap (& n 131072) r Map_/Free)\n  let r = (Swap (& n 262144) r Map_/Free)\n  let r = (Swap (& n 524288) r Map_/Free)\n  let r = (Swap (& n 1048576) r Map_/Free)\n  let r = (Swap (& n 2097152) r Map_/Free)\n  let r = (Swap (& n 4194304) r Map_/Free)\n  let r = (Swap (& n 8388608) r Map_/Free)\n  r\n```\n\n## ADT Encoding\n\nSelects the lambda encoding for types defined with `type` and `object`.\n\n`-Oadt-scott` uses Scott encoding.\n`-Oadt-num-scott` uses a variation of Scott encoding where instead of one lambda per constructor, we use a numeric tag to indicate which constructor it is. The numeric tag is assigned to the constructors in the order they are defined and each tag is accessible as a definition by `<type>/<ctr>/tag`.\n\n```py\n# Generates functions Option/Some and Option/None\ntype Option:\n  Some { value }\n  None\n\n# With -Oadt-scott they become:\nOption/Some = λvalue λSome λNone (Some value)\nOption/None = λSome λNone (None)\n\n# With -Oadt-num-scott they become:\nOption/Some = λvalue λx (x Option/Some/tag value)\nOption/None = λx (x Option/None/tag)\n\n# Generated -Oadt-num-scott tags:\nOption/Some/tag = 0\nOption/None/tag = 1\n```\n\nPattern-matching with `match` and `fold` is generated according to the encoding.\n\nNote: IO is **only** available with `-Oadt-num-scott`.\n\n## Type Checking\n\nType checking is enabled by default and verifies and enforces the constraints of types. When enabled, verifies the type safety of the program based on the source code. If it passes the check, then the program is guaranteed to satisfy type constraints for all possible inputs.\n\n```py\n  def main() -> Bool: \n    return 3\n```\nWith type checking enabled, The following program will throw a type error `Expected function type 'Bool' but found 'u24'`, whereas if it is disabled, it will compile successfully and return `3`.\n"
  },
  {
    "path": "docs/defining-data-types.md",
    "content": "# Defining data types\n\nIt is possible to easily define complex data types using the `type` keyword.\n\n```py\n# A Boolean is either True or False \ntype Bool:\n  True\n  False\n```\n\nIf a constructor has any arguments, parentheses are necessary around it:\n```py\n# An option either contains some value, or None\ntype Option:\n Some { value }\n None\n```\nIf the data type has a single constructor, it can be destructured using `open`:\n\n```py\n# A Box is a wrapper around a value.\ntype Boxed:\n  Box { value }\n\ndef main() -> _:\n  b = Boxed/Box(1)\n  open Boxed: b\n  return b.value\n```\n\n\nThe fields of the constructor that is being destructured with the `match` are bound to the matched variable plus `.` and the field names.\n```py\nopt = Option/Some(1)\nmatch opt:\n  case Option/Some:\n    return opt.value\n  case Option/None:\n    return 0\n```\n\nRules can also have patterns.\nThey work like match expressions with explicit bindings:\n\n```py\n(Option.map (Some value) f) = (Some (f value))\n(Option.map None f) = None\n```\n\nHowever, they also allow matching on multiple values at once, which is something that regular `match` can't do:\n\n```py\ntype Boolean:\n  True\n  False\n\n(Option.is_both_some (Some lft_val) (Some rgt_val)) = True\n(Option.is_both_some lft rgt) = False\n```\n\nYou can read more about pattern matching rules in [Pattern matching](/docs/pattern-matching.md).\n\nIn conclusion, the `type` keyword is very useful as it allows you to easily create data types and deconstruct them.\n"
  },
  {
    "path": "docs/dups-and-sups.md",
    "content": "# Dups and sups\n\nTerm duplication is done automatically when a variable is used more than once. But it's possible to manually duplicate a term using `let`. This type of statement is called `dup` or `duplication`.\n```py\n# the number 2 in church encoding using let.\nch2 = λf λx let {f1 f2} = f; (f1 (f2 x))\n\n# the number 3 in church encoding using let.\nch3 = λf λx let {f0 f1} = f; let {f2 f3} = f0; (f1 (f2 (f3 x)))\n```\n\nA `sup` is a superposition of two values, it is defined using curly brackets with two terms inside. A superposition is the opposite of a duplication. \n```py\nsup = {3 7}\n```\n\nSups can be used anywhere a value is expected, if anything interacts with the superposition, the result is the superposition of that interaction on both the possible values:\n\n```py\nmul = λa λb (* a b)\nresult     = (mul 2 5)         # returns 10\nresult_sup = (mul 2 {5 7})     # returns {10 14}\nmulti_sup  = (mul {2 3} {5 7}) # returns {{10 14} {15 21}}\n```\n\nIf we pair a superposition with a duplication, the result is that they behave like constructing and destructing a pair:\n\n```py\n# each dup variable now has a copy of the {1 2} superposition\nlet {x1 x2} = {1 2}\n```\n\nDue to how duplications are compiled, when two dups interact, they destructively interfere with each other.\nIn this case the result doesn't follow the expected behavior (it's well defined at the HVM level, but is incorrect at a lambda-calculus level).\n\nThat imposes a strong restriction on correct Bend programs: a variable should not duplicate another variable that itself duplicates some variables.\n\nThe program below is an example where this can go wrong when using higher-order functions.\n```py\ndef List/map(xs: List(A), f: A -> B) -> List(B):\n  fold xs:\n    case List/Nil:\n      return List/Nil\n    case List/Cons:\n      # 'f' is duplicated here\n      return List/Cons(f(xs.head), List/map(xs.tail, f))\n      # This line above is converted by the compiler to an explicit duplication of 'f'\n      # {f1 f2} = f\n      # return List/Cons(f1(xs.head), List/map(xs.tail, f2))\n\ndef main() -> _:\n  # This lambda duplicates `x` and is itself duplicated by the map function.\n  # This will result in wrong behavior.\n  # In this specific case, the runtime will catch it and generate an error,\n  # but at the moment that is not always the case.\n  return List/map([1, 2, 3], lambda x: (+ x x))\n```\n\nIn this case, we can only have one source of duplication, or our results will be incorrect.\nEither List/map is linear (doesn't duplicate `f`) or the passed function is linear (doesn't duplicate `x` or any other variable inside it).\n"
  },
  {
    "path": "docs/ffi.md",
    "content": "# Dynamically linked libraries and foreign functions\n\nWe can add new IO functions to Bend during runtime by loading dynamic libraries.\n\n## Using IO dynamic libraries in Bend\n\nHere is an example of how we could load a Bend library that contains functions for working with directories.\n\n```py\ndef main():\n  with IO:\n    # Open the dynamic library file\n    # The second argument is '0' if we want to load all functions immediately.\n    # Otherwise it should be '1' when we want to load functions as we use them.\n    # 'dl' is the unique id of the dynamic library.\n    dl <- IO/DyLib/open(\"./libbend_dirs.so\", 0)\n\n    # We can now call functions from the dynamic library.\n    # We need to know what functions are available in the dynamic library.\n    # If you're writing a library for Bend that uses a dynamically linked library\n    # you should wrap the IO calls so that users don't need to know what's in the dynamic library.\n\n    # The first argument is the dynamic library id.\n    # The second argument is the name of the function we want to call as a String.\n    # The third argument are the arguments to the function.\n    # You need to know the types of the arguments and the return type of the function.\n\n    # In our example, 'ls' receives a path as a String and\n    # returns a String with the result of the 'ls' command.\n    unwrapped_dl = Result/unwrap(dl)\n    files_bytes <- IO/DyLib/call(unwrapped_dl, \"ls\", \"./\") \n    files_str = String/decode_utf8(Result/unwrap(files_bytes)) \n    files = String/split(files_str, '\\n')\n\n    # We want to create a directory for a new user \"my_user\" if it doesn't exist.\n    my_dir = List/filter(files, String/equals(\"my_dir\"))\n    match my_dir:\n      case List/Cons:\n        # The directory already exists, do nothing.\n        * <- IO/print(\"Directory already exists.\\n\")\n        status = wrap(-1)\n      case List/Nil:\n        # The directory doesn't exist, create it.\n        * <- IO/DyLib/call(unwrapped_dl, \"mkdir\", \"./my_dir\")\n        * <- IO/print(\"Directory created.\\n\")\n        status = wrap(+0)\n    status <- status\n\n    # Here the program ends so we didn't need to close the dynamic library,\n    # but it's good practice to do so once we know we won't need it anymore.\n    * <- IO/DyLib/close(unwrapped_dl)\n    return wrap(status)\n```\n\n## Writing IO dynamic libraries for Bend\n\nBend IO libraries need to be implemented in C or Cuda (depending on the backend you're targeting) using the HVM API.\n\n### Writing libraries for the C runtime\n\nThe functions you call from Bend using `IO/DyLib/call` must have the following signature:\n\n```c\nPort function_name(Net* net, Book* book, Port arg);\n```\n\nWhere:\n\n- `net` is a pointer to the current network state.\n- `book` is a pointer to the book of function definitions.\n- `arg` is a pointer to the arguments of the function.\n\nThe return value must be a `Port` that points to the return value of the function.\n\nHVM provides some util functions to do the conversions from HVM to C and vice versa,\nso that you don't need to understand the details of the HVM runtime.\n\nWe can implement the example library from earlier for the C runtime with the following C code:\n\n```c\n// This is a header file that contains the HVM API.\n#include \"hvm.h\"\n\n// The headers we need to open and read directories.\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <errno.h>\n\n// IO functions must have this exact signature.\n// The first argument is a pointer to the graph with the current state of the program.\n// The second argument is a pointer to the book of function definitions.\n// The third argument points to the arguments of the function.\n// The return value must be a port that points to the return value of the function.\nPort ls(Net* net, Book* book, Port arg) {\n  // The arguments first need to be converted from HVM to C.\n  // For the 'ls' function, this is just a single string.\n  Str path = readback_str(net, book, arg);\n\n\n  // Now we can do the actual IO operations.\n  // In this case, we list the contents of the directory\n  // by calling the 'ls' program as a subprocess.\n  char* cmd = malloc(path.len + strlen(\"ls \") + 1);\n  sprintf(cmd, \"ls %s\", path.buf);\n  free(path.buf);\n\n  FILE* pipe = popen(cmd, \"r\");\n  if (pipe == NULL) {\n    // It'd be best practice to return a Result type instead of a null value (ERA).\n    // If this command fails and the calling Bend program tries to use the result,\n    // it will get corrupted and spit out garbage.\n    fprintf(stderr, \"failed to run command '%s': %s\\n\", cmd, strerror(errno));\n    return new_port(ERA, 0);\n  }\n  char buffer[512];\n  Bytes output = { .buf = NULL, .len = 0 };\n  while (fgets(buffer, sizeof(buffer), pipe) != NULL) {\n    size_t len = strlen(buffer);\n    char* new_result = realloc(output.buf, output.len + len + 1);\n    if (new_result == NULL) {\n      fprintf(stderr, \"failed to allocate space for output of '%s': %s\\n\", cmd, strerror(errno));\n      free(cmd);\n      free(output.buf);\n      pclose(pipe);\n      return new_port(ERA, 0);\n    }\n    output.buf = new_result;\n    strcpy(output.buf + output.len, buffer);\n    output.len += len;\n  }\n\n  // After we're done with the operation, we convert it to HVM format.\n  // In this case, the output is the output of the 'ls' command as a list of bytes.\n  // We need to process it in Bend later to convert it to a list of file names.\n  Port output_port = inject_bytes(net, &output);\n\n  // Remember to free all the allocated memory.\n  free(cmd);\n  free(output.buf);\n  pclose(pipe);\n  return output_port;\n}\n\nPort mkdir(Net* net, Book* book, Port arg) {\n  // We do the same thing here as in the 'ls' function,\n  // except we call 'mkdir' which doesn't output anything.\n  Str path = readback_str(net, book, arg);\n\n  char* cmd = malloc(path.len + strlen(\"mkdir \") + 1);\n  sprintf(cmd, \"mkdir %s\", path.buf);\n  int res = system(cmd);\n\n  free(path.buf);\n  free(cmd);\n  return new_port(ERA, 0);\n}\n```\n\nTo compile this code into a library, we can use the `gcc` compiler and include the HVM header files.\n\nAssuming that it's saved in a file called `libbend_dirs.c`, we can compile it with the following command:\n\n```sh\n# Needs to be compiled as a shared library with unresolved symbols.\n# For macOS:\ngcc -shared -o libbend_dirs.so -I /path/to/HVM/src/ libbend_dirs.c -undefined dynamic_lookup -fPIC\n\n# For Linux:\ngcc -shared -o libbend_dirs.so -I /path/to/HVM/src/ libbend_dirs.c -Wl,--unresolved-symbols=ignore-all -fPIC\n```\n\nNow we can use the dynamic library in our Bend program, we just need to pass the path to the library to `IO/DyLib/open`.\n\n### Writing libraries for the Cuda runtime\n\nWriting libraries for the Cuda runtime is very similar to writing libraries for the C runtime.\n\nThe main difference is the function signature:\n\n```c++\nPort function_name(GNet* gnet, Port argm)\n```\n\nWhere:\n\n- `gnet` is a pointer to the current network state.\n- `argm` is the argument to the function.\n\nThe return value must be a `Port` that points to the return value of the function.\n\nTo compile libraries of the Cuda runtime, we can use the `nvcc` compiler and include the HVM header files.\n\nAssuming that it's saved in a file called `libbend_dirs.cu`, we can compile it with the following command:\n\n```sh\nnvcc -shared -o libbend_dirs.so -I /path/to/hvm/ libbend_dirs.cu\n```\n\n### Compiling Bend programs that use dynamic libraries\n\nTo compile the C or Cuda program generated from a Bend program that uses dynamic libraries, we need to use the `-rdynamic` flag to allow the dynamic library to use symbols from the main program.\n\nFor example, if we have a Bend program called `main.bend` that uses the dynamic library `libbend_dirs.so`, we need compile to it with the following commands:\n\n```sh\n# Compiling for C\nbend gen-c my_app.bend > my_app.c\ngcc -rdynamic -lm my_app.c -o my_app\n\n# Compiling for Cuda\nbend gen-cu my_app.bend > my_app.cu\nnvcc --compiler-options=-rdynamic my_app.cu -o my_app\n```\n"
  },
  {
    "path": "docs/imports.md",
    "content": "# Import System\n\n## Case Sensitivity\nAll import paths are case-sensitive. Ensure that the case used in import statements matches exactly with the file and directory names.\n\n## Syntax\nImports can be declared two ways:\n\n```py\nfrom path import name\n# or\nimport path/name\n# We recommend always placing the imports at the top of the file.\n```\n\n## Project Structure\nLet's assume we have a bend project with the following structure:\n\n```\nmy_project/\n├── main.bend\n├── utils/\n│   ├── helper.bend\n│   │   └── def calc\n│   └── math.bend\n│       ├── def add\n│       └── def subtract\n```\n\n## Importing Relative Paths\nPaths starting with `./` or `../` are imported relative to the file.\n\n### Example:\n```py\n# if used inside `my_project/*.bend`\nfrom ./utils import helper\n# if used inside `my_project/*/*.bend`\nimport ../utils/helper\n```\n\nThis will bind `calc` from `helper.bend` as `helper/calc`.\n\n## Importing Absolute Paths\nOtherwise, paths imported are relative to the folder of the main file.\n\n### Example:\n```py\nfrom utils import math\n# or\nimport utils/math\n```\n\nThis will bind `add` and `subtract` from `math.bend` as `math/add` and `math/subtract`.\n\n## Importing Specific Top-Level Names\nYou can import specific top-level names from a file.\n\n### Example:\n```py\nfrom utils/helper import calc\nfrom utils/math import (add, subtract)\n# or\nimport (utils/helper/calc, utils/math/add, utils/math/subtract)\n# or\nimport utils/helper/calc\nimport utils/math/add\nimport utils/math/subtract\n```\n\nThis will bind the names `calc`, `add` and `subtract` from their respective files. \n\n## Importing All Names\nYou can import all top-level names from a file using the wildcard `*`.\n\n### Example:\n```py\nfrom utils/math import *\n```\n\nThis will bind the names `add` and `subtract` from `math.bend`. \n\n## Importing All `.bend` Files from a Folder\nYou can import all `.bend` files from a folder using the wildcard `*`.\n\n### Example:\n```py\nfrom utils import *\n```\n\nThis will bind the names from `helper.bend` and `math.bend`, as `helper/calc`, `math/add` and `math/subtract`.\n\n## Aliasing Imports\nYou can alias imports to a different name for convenience.\n\n### Importing a File with Alias\nImport the `file` top-level name from `file.bend` aliased to `alias`, and all other names as `alias/name`.\n\n### Example:\n```py\nfrom utils import helper as utilsHelper\nimport utils/math as mathLib\n```\n\nThis will bind the names from `helper.bend` and `math.bend`, as `utilsHelper/calc`, `mathLib/add` and `mathLib/subtract`.\n\n### Importing Specific Names with Aliases\nYou can import specific top-level names and alias them to different names.\n\n### Example:\n```py\nfrom utils/helper import calc as calcFunc\nfrom utils/math import (add as addFunc, subtract as subFunc)\n# or\nimport (utils/math/add as addFunc, utils/math/subtract as subFunc)\n```\n\nThis will bind `calc`, `add` and `subtract` as `calcFunc`, `addFunc` and `subFunc` from their respective files.\n\n## Project Structure\nLet's assume we have a bend project with the following structure:\n\n```\nmy_project/\n├── main.bend\n├── types/\n│   ├── List.bend\n│   │   └── type List: Nil | (Cons ..)\n│   └── List/\n│       ├── concat.bend\n│       │   └── def concat\n│       └── append.bend\n│           └── def append\n│           └── def helper\n```\n\n## Importing data types\n\nYou can import a data type and its constructors by only importing its name.\n\n### Example:\n```py\nfrom types/List import List\n# behaves the same as \nfrom types/List import (List, List/Nil, List/Cons)\n```\n\nImporting only `List` from `List.bend` will import the type `List` and bind its constructors name `List/Nil` and `List/Cons`. \n\n## Importing files with a top level name equal to its name\n\nWhen a file and a top-level name in it share a name, for example, `List.bend`, `concat.bend` and `append.bend`, the bind of that import is simplified to the file name.\n\n### Example:\n```py\nfrom types/List import append\n```\n\nThis will bind `append` and `append/helper` from `append.bend`.\n\n## Files and directories with the same name\n\nWhen files and directories share a name, both share the import namespace:\n\n```py\nfrom types/List import (List, concat)\n```\n\nThis will attempt to import from both the `List.bend` file and the `List` folder, resulting in the binds `List/Nil`, `List/Cons` and `concat`.\n\n```py\nfrom types/List import *\n```\n\nThis will import all the names from `List.bend`, then all the files inside the `List` folder, resulting in the binds `List/Nil`, `List/Cons`, `concat`, `append` and `append/helper`.\n\nIn both cases, if a name is present as a top-level name on the file, and as a `.bend` file name inside the folder, it will result in an error.\n\nIf you only want to import `List.bend` and not search the files in its folder, you can use the `import path` syntax:\n\n```py\nimport types/List\n```\n"
  },
  {
    "path": "docs/lazy-definitions.md",
    "content": "# Making recursive definitions lazy\n\nIn strict-mode, some types of recursive terms will unroll indefinitely.\n\nThis is a simple piece of code that works on many other functional programming languages but hangs on Bend due to the strict evaluation of HVM2.\n\n```rust\nCons = λx λxs λcons λnil (cons x xs)\nNil  =        λcons λnil nil\n\nMap = λf λlist\n  let cons = λx λxs (Cons (f x) (Map f xs))\n  let nil = Nil\n  (list cons nil)\n\nMain = (Map λx (+ x 1) (Cons 1 Nil))\n```\n\nThe recursive `Map`  creates an infinite reduction sequence because each recursive call expands into another call to Map, never reaching a base case. Which means that functionally, it will reduce it infinitely, never reaching a normal form. \n\nFor similar reasons, if we try using Y combinator it also won't work.\n\n```rust\nY = λf (λx (f (x x)) λx (f (x x)))\n\nMap = (Y λrec λf λlist\n  let cons = λx λxs (Cons (f x) (rec f xs))\n  let nil = Nil\n  (list cons nil f))\n```\n\nBy linearizing `f`, the `Map` function only expands after applying the argument `f`, because the `cons` function will be lifted to a separate top-level function by the compiler (when this option is enabled).\n\n```rust\nMap = λf λlist\n  let cons = λx λxs λf (Cons (f x) (Map f xs))\n  let nil = λf Nil\n  (list cons nil f)\n```\n\nThis code will work as expected, since `cons` and `nil` are lambdas without free variables, they will be automatically floated to new definitions if the [float-combinators](compiler-options.md#float-combinators) option is active, allowing them to be unrolled lazily by hvm.\n\nThe recursive part of the function should be part of a combinator that is not in an active position. That way it can be lifted into a top-level function which is compiled into a lazy reference thus preventing the infinite expansion. [Supercombinators](https://en.wikipedia.org/wiki/Supercombinator) can be used in order to ensure said lazy unrolling of recursive terms. Other combinator patterns can work as well, as long as they're lifted to the top level.\n\nIf you have a set of mutually recursive functions, you only need to make one of the steps lazy. This might be useful when doing micro-optimizations, since it's possible to avoid part of the small performance cost of linearizing lambdas.\n\n### Automatic optimization\n\nBend carries out [match linearization](compiler-options.md#linearize-matches) and [combinator floating](compiler-options.md#float-combinators) optimizations, enabled through the CLI, which are active by default in strict mode.\n\nConsider the code below:\n\n```rs\nZero = λf λx x\nSucc = λn λf λx (f n)\nToMachine = λn (n λp (+ 1 (ToMachine p)) 0)\n```\n\nThe lambda terms without free variables are extracted to new definitions.\n\n```rs\nToMachine0 = λp (+ 1 (ToMachine p))\nToMachine = λn (n ToMachine0 0)\n```\n\nDefinitions are lazy in the runtime. Floating lambda terms into new definitions will prevent infinite expansion.\n\nIt's important to note that preventing infinite expansion through simple mutual recursion doesn't imply that a program lacks infinite expansion entirely or that it will terminate.\n"
  },
  {
    "path": "docs/native-numbers.md",
    "content": "# Native numbers\n\nCurrently Bend supports 3 types of native numbers for fast numeric operations (compared to lambda-encoded numbers):\n\n- U24: Unsigned integers (24 bits)\n- I24: Signed integers (24 bits, two's complement)\n- F24: Floating point numbers (single precision IEEE-754 floating point with the last bits of the mantissa implicitly set to zero)\n\n### U24\n\nUnsigned numbers are written as just the number and are represented as a 24 bit unsigned integer.\n\n```rs\ntwo = 2\n```\n\n### I24\n\nSigned numbers are written with a `+` or `-` sign and are represented as a 24 bit two's complement integer.\n\n```rs\nminus_two = -2\nplus_0 = +0\n```\n\nPositive numbers _must_ be written with a `+` sign, otherwise they'll be interpreted as unsigned.\n\nNumbers can also be written in binary or hexadecimal form. Underscores can be optionally used as digit separators to make large numbers more readable.\n\n```rs\ndecimal =     1194684\nbinary =      0b100_100_011_101_010_111_100\nhexadecimal = 0x123_abc\nhex_signed = -0xbeef\n```\n\n### F24\n\nFloating point numbers must have the decimal point `.` and can optionally take a sign `+` or `-`.\nThey are represented as IEEE-754 single precision floating point numbers with the last bits of the mantissa implicitly set to zero.\n\n```py\none = 1.0\npi = +3.1415926535897932384626433 # Will get rounded to 24bit float\na_millionth = 0.000001\nzero = 0.0\nminus_zero = -0.0\n```\n\n### Mixing number types\n\nThe three number types are fundamentally different. At the HVM level, both type and the operation are stored inside the number nodes as tags. One number stores the type, the other the operation.\nThat means that we lose the type information of one of the numbers, which causes this behavior.\nDuring runtime, the executed numeric function depends on both the type tag and the operation tag. For example, the same tag is used for unsigned bitwise and floating point atan2, so if you mix two numbers of different types, HVM will interpret the binary representation of one of them incorrectly, leading to incorrect results. Which number is interpreted incorrectly depends on the situation and shouldn't be relied on for now. Instead, you should make sure that all numbers are of the same type. \n\n#### Casting numbers\n\nThere is a way to convert between the different number types, and using it is very easy, here's an example:\n\n```py\ndef main() -> _:\n  x = f24/to_i24(1.0)\n  y = u24/to_f24(2)\n  z = i24/to_u24(-3)\n\n  return (x, y, z)\n```\nYou can find more number casting functions and their declarations at [builtins.md](docs/builtins.md).\n\n\n### Operations\n\nThere is also support for native operations.\nIn \"Imp\" syntax they are infix operators and in \"Fun\" syntax they are written in reverse polish notation (like you'd call a normal function).\nEach operation takes two arguments and returns a new number.\n\n```rs\n# In Fun syntax\nsome_val = (+ (+ 7 4) (* 2 3))\n```\n\nThese are the currently available operations:\n\n| Operation | Description              | Accepted types | Return type       |\n| --------- | ------------------------ | -------------- | ----------------- |\n| \\+        | Addition                 | U24, I24, F24  | Same as arguments |\n| \\-        | Subtraction              | U24, I24, F24  | Same as arguments |\n| \\*        | Multiplication           | U24, I24, F24  | Same as arguments |\n| \\/        | Division                 | U24, I24, F24  | Same as arguments |\n| \\%        | Modulo                   | U24, I24, F24  | Same as arguments |\n| \\==       | Equality                 | U24, I24, F24  | U24               |\n| \\!=       | Inequality               | U24, I24, F24  | U24               |\n| \\<        | Less than                | U24, I24, F24  | U24               |\n| \\<=       | Less than or equal to    | U24, I24, F24  | U24               |\n| \\>        | Greater than             | U24, I24, F24  | U24               |\n| \\>=       | Greater than or equal to | U24, I24, F24  | U24               |\n| \\&        | Bitwise and              | U24, I24       | Same as arguments |\n| \\|        | Bitwise or               | U24, I24       | Same as arguments |\n| \\^        | Bitwise xor              | U24, I24       | Same as arguments |\n| \\*\\*      | Exponentiation           | F24            | F24               |\n\n### Functions\n\n| Name           | Description                     | Accepted types | Return type |\n| -------------- | ------------------------------- | -------------- | ----------- |\n| `log(x, base)` | Logarithm                       | F24            | F24         |\n| `atan2(x, y)`  | 2 arguments arctangent (atan2f) | F24            | F24         |\n\n### Pattern matching\n\nBend also includes a `switch` syntax for pattern-matching U24 numbers.\n\n```rs\nNumber.to_church = λn λf λx\n  switch n {\n    0: x\n    _: (f (Number.to_church n-1 f x))\n  }\n```\n\nThe `0` case matches when `n` is 0, and the `_` case matches when `n` is greater than 0.\nIn the `_` arm, we can access the predecessor of `n` with the `n-1` variable.\n\nWe can also match on more than one value at once.\nTo do that, we must cover the cases in order, starting from 0.\n\n```rs\nNumber.minus_three = λn λf λx\n  switch n {\n    0: 0\n    1: 0\n    2: 0\n    _: n-3\n  }\n```\n\nUsing everything we learned, we can write a program that calculates the n-th Fibonacci number using native numbers:\n\n```py\nfibonacci = λn # n is the argument\n  switch n {\n    # If the number is 0, then return 0\n    0: 0\n    # If the number is 1, then return 1\n    1: 1\n    # Otherwise, return the sum of (fib (n-2 + 1)) and (fib n-2)\n    # The successor pattern provides a `var`-`successor number` bind\n    _: (+ (fibonacci (+ n-2 1)) (fibonacci n-2))\n  }\n\nmain = (fibonacci 15)\n```\n\n### Pattern matching numbers in Fun syntax equations\n\nIn Fun syntax, we can also use pattern matching equations to match on native unsigned numbers.\n\n```rs\n(fib 1) = 1\n(fib 0) = 0\n(fib n) = (+ (fib (- n 1)) (fib (- n 2)))\n```\n\nUnlike with `switch`, you can match any number and in any order.\nThe variable pattern is used to match on all other numbers.\nUnlike with `switch`, you can't directly access the predecessor of the number.\n\nYou can read [Pattern matching](pattern-matching.md) for more information about how pattern matching equations are converted to `switch` and `match` expressions.\n"
  },
  {
    "path": "docs/pattern-matching.md",
    "content": "# Pattern Matching\n\nSwitches on many numbers are compiled to sequences of simple switch expressions:\n```py\n  # These two are equivalent\n  switch n {\n    0: A\n    1: B\n    2: C\n    _: (D n-3)\n  }\n\n  switch n {\n    0: A\n    _: switch n-1 = n-1 {\n      0: B\n      _: switch n-2 = n-1-1 {\n        0: C\n        _: use n-3 = n-2-1; (D n-3)\n      }\n    }\n  }\n```\n\nMatches on ADT constructors are compiled to different expressions depending on the chosen encoding:\n```py\ntype Maybe = (Some val) | None\n\nUnwrapOrZero x = match x {\n  Maybe/Some: x.val\n  Maybe/None: 0\n}\n\n# If the current encoding is 'adt-num-scott' it becomes:\nMaybe/Some = λval λx (x 0 val)\nMaybe/None = λx (x 1)\nUnwrapOrZero x = (x λtag switch tag {\n  0: λx.val x.val\n  _: λ* 0\n})\n\n# Otherwise, if the current encoding is 'adt-scott' it becomes:\nMaybe/Some = λval λMaybe/Some λMaybe/None (Maybe/Some val)\nMaybe/None = λMaybe/Some λMaybe/None Maybe/None\nUnwrapOrZero x = (x λx.val x.val 0)\n```\n\n### Pattern Matching functions\n\nBesides `match`and `switch` terms, Bend also supports equational-style pattern matching functions.\n\n```py\nAnd Bool/True  b = b\nAnd Bool/False * = Bool/False\n```\n\nThere are advantages and disadvantages to using this syntax.\nThey offer more advanced pattern matching capabilities and also take care linearizing variables to make sure that recursive definitions work correctly in strict evaluation mode, but take away your control of how the pattern matching is implemented and can be a bit more resource intensive in some cases.\n\nPattern matching equations are transformed into a tree of `match` and `switch` terms from left to right.\n```py\n# These two are equivalent\n(Foo 0 Bool/False (List/Cons h1 (List/Cons h2 t))) = (Bar h1 h2 t)\n(Foo 0 * *) = Baz\n(Foo n Bool/False *) = n\n(Foo n Bool/True *) = 0\n\nFoo = λarg1 λarg2 λarg3 (switch arg1 {\n  0: λarg2 λarg3 match arg2 {\n    Bool/True: λarg3 Baz\n    Bool/False: λarg3 match arg3 {\n      List/Cons: (match arg3.tail {\n        List/Cons: λarg3.head (Bar arg3.head arg3.tail.head arg3.tail.tail)\n        List/Nil: λarg3.head Baz\n      } arg3.head)\n      List/Nil: Baz\n    }\n  }\n  _: λarg2 λarg3 (match arg2 {\n    Bool/True: λarg1 0\n    Bool/False: λarg1 arg1\n  } arg1)\n} arg2 arg3)\n```\nBesides the compilation of complex pattern matching into simple `match` and `switch` expressions, this example also shows how some arguments are pushed inside the match.\nWhen compiling for strict evaluation, by default any variables that are used inside a match get linearized by adding a lambda in each arm and an application passing its value inwards.\nTo ensure that recursive pattern matching functions don't loop in strict mode, it's necessary to make the match arms combinators, so that they can be converted into separate functions and a lazy reference is used in the match arm.\n```py\n# This is what the Foo function actually compiles to.\n# With -Olinearize-matches and -Ofloat-combinators (default on strict mode)\n# Main function\n(Foo) = λa λb λc (switch a { 0: Foo__C8; _: Foo__C9; } b c)\n\n# Case 0 branch\n(Foo__C8) = λa λb (a Foo__C5 b)                       # Foo.case_0\n(Foo__C5) = λa switch a { 0: λ* Baz; _: Foo__C4; }    # Foo.case_0.case_true\n(Foo__C4) = λ* λa (a Foo__C3)                         # Foo.case_0.case_false\n(Foo__C3) = λa switch a { 0: Baz; _: Foo__C2; }       # Foo.case_0.case_false_cons\n(Foo__C2) = λ* λa λb (b Foo__C1 a)                    # Foo.case_0.case_false_cons_cons\n(Foo__C1) = λa switch a { 0: λ* Baz; _: Foo__C0; }    # Foo.case_0.case_false_cons_nil\n(Foo__C0) = λ* λa λb λc (Bar c a b)                   # Foo.case_0.case_false_nil\n\n# Case non-zero branch\n(Foo__C9) = λa λb λc (b Foo__C7 c a)                  # Foo.case_+\n(Foo__C7) = λa switch a { 0: λ* λ* 0; _: Foo__C6; }   # Foo.case_+.case_false\n(Foo__C6) = λ* λ* λa (+ a 1)                          # Foo.case_+.case_true\n\n# As an user, you can't write a function with __ on its name, that sequence is reserved for things generated by the compiler.\n```\n\nPattern matching equations also support matching on non-consecutive numbers:\n```rust\nParse '(' = Token.LParenthesis\nParse ')' = Token.RParenthesis\nParse 'λ' = Token.Lambda\nParse  n  = (Token.Name n)\n```\nThe compiler transforms this into an optimized cascade of switch expressions. Each switch computes the distance from the smallest character to efficiently test each case:\n```py\nParse = λarg0 switch matched = (- arg0 '(') {\n  0: Token.LParenthesis\n  # ')' + 1 - '(' is resolved during compile time\n  _: switch matched = (- matched-1 ( ')'-1-'(' ) {\n    0: Token.RParenthesis\n    _: switch matched = (- matched-1 ( 'λ'-1-')' ) {\n      0: Token.Lambda\n      _: use n = (+ 1 matched-1); (Token.Name n)\n    }\n  }\n}\n```\nUnlike with `switch`, with pattern matching equations you can't access the value of the predecessor of the matched value directly, but instead you can match on a variable. Instead, variables (like n above) are bound to computed expressions based on the matched value.\nNotice how in the example above, `n` is bound to `(+ 1 matched-1)`.\n\nNotice that this definition is valid, since `*` will cover both `p` and `0` cases when the first argument is `False`.This example shows how patterns are considered from top to bottom, with wildcards covering multiple specific cases:\n```rust\npred_if Bool/False * if_false = if_false\npred_if Bool/True  p *        = (- p 1)\npred_if Bool/True  0 *        = 0\n```\n\nPattern matching on strings and lists desugars to a list of matches on Cons and Nil\n\n```py\nHi \"hi\" = 1\nHi _ = 0\n\nFoo [] = 0\nFoo [x] = x\nFoo _ = 3\n\n# Becomes:\nHi (String/Cons 'h' (String/Cons 'i' String/Nil)) = 2\nHi _ = 0\n\nFoo List/Nil = 0\nFoo (List/Cons x List/Nil) = x\nFoo _ = 3\n```\n"
  },
  {
    "path": "docs/syntax.md",
    "content": "# Syntax\n\nThis file provides a reference of each possible syntax of bend programming language.\n\nClick [here](#imp-syntax) to see the syntax for \"imp\", the variant of bend that looks like an imperative language like python.\n\nClick [here](#fun-syntax) to see the syntax for \"fun\", the variant of bend that looks like a functional language like Haskell or ML.\n\nClick [here](#import-syntax) to see the import syntax.\n\nClick [here](#comments) to see the syntax for commenting code.\n\nClick [here](#imp-type-syntax) to see the imperative type syntax.\n\nClick [here](#fun-type-syntax) to see the functional type syntax.\n\nBoth syntaxes can be mixed in the same file like the example below:\n\n```python\nobject Point { x, y }\n\ntype MyTree = (Node ~left ~right) | (Leaf value)\n\ntype Bool:\n  True\n  False\n\n#{\n  The identity function is a function that always returns the value that\n  was used as its argument.\n#}\ndef identity(x):\n  return x\n\nmain =\n  let result = (identity 41)\n  (+ result 1)\n```\n\n<div id=\"imp-syntax\"></div>\n\n# Imp Syntax\n\n## Top-level definitions\n\n### Def\n\nDefines a top level function.\n\n```python\ndef add(x: u24, y: u24) -> u24:\n  result = x + y\n  return result\n\ndef unchecked two() -> u24:\n  return 2\n\ndef main() -> u24:\n  return add(40, two)\n```\n\nA function definition is composed by a name, a sequence of parameters and a body.\n\nA top-level name can be anything matching the regex `[A-Za-z0-9_.-/]+`, except it can't have `__` (used for generated names) or start with `//`.\n\nThe last statement of each function must either be a `return` or a selection statement (`if`, `switch`, `match`, `fold`)\nwhere all branches `return`.\n\nEach parameter of the function can receive a type annotation with `param_name: type` and the return value of the function can also be annotated with `def fn_name(args) -> return_type:`.\n\nWe can force the type-checker to run or not on a specific function by adding `checked` or `unchecked` between `def` and the function name.\n\n### Type\n\nDefines an algebraic data type.\n\n```python\ntype Option:\n  Some { value }\n  None\n\ntype Tree(T):\n  Node { value: T, ~left: Tree(T), ~right: Tree(T) }\n  Leaf\n```\n\nType names must be unique, and should have at least one constructor.\n\nFor a generic or polymorphic type, all type variables used in the constructors must be declared first in the type definition with `type Name(type_var1, ...):`\n\nEach constructor is defined by a name followed by its fields. The fields can be annotated with types that will be checked when creating values of that type.\n\nThe `~` notation indicates a recursive field. To use `fold` statements with a type its recursive fields must be correctly marked with `~`.\n\nThe constructor names inherit the name of their types and become functions (`Tree/Node` and `Tree/Leaf` in this case).\nThe exact function they become depends on the encoding.\n\nRead [defining data types](./defining-data-types.md) to know more.\n\n### Object\n\nDefines a type with a single constructor (like a struct, a record or a class).\n\n```python\nobject Pair(A, B) { fst: A, snd: B }\n\nobject Function(T) { name: String, args, body: T }\n\nobject Vec { len, data }\n```\n\nThe constructor created from this definition has the same name as the type.\n\nSince it only has one constructor, `fold`ing a recursive `object` requires some additional stop condition apart from pattern matching on the value itself (like an `if` statement).\n\n## Statements\n\n### Assignment\n\n```python\nvalue = 2\nreturn value\n\n(first, second) = (1, 2)\nreturn second\n\n{x y} = {2 3}\n```\n\nAssigns a value to a variable.\n\nIt's possible to assign to a pattern, like a tuple or superposition, which will destructure the value returned by the expression.\n\n```python\n(first, second) = (1, 2)\n\nfirst, second = 1, 2\n```\n\n### Use\n\n```rust\nuse x = 2 + 3\nreturn x + x\n```\n\nInline copies of the declared bind, it is equivalent to this code:\n\n```rust\nreturn ((2 + 3) + (2 + 3))\n```\n\n### In-Place Operation\n\n```python\nx += 1\nreturn x\n```\n\nThe in-place operation does an infix operation and re-assigns a variable.\n\nThe operations are:\n\n- Addition `+=`\n- Subtraction `-=`\n- Multiplication `*=`\n- Division `/=`\n- Bit And `&=`\n- Bit Or `|=`\n- Bit Xor `^=`\n- Mapper `@=`\n\nThe mapper in-place operation applies a function and re-assigns the variable:\n\n```python\nx = \"hello\"\nx @= String/uppercase\n```\n\n### Return\n\n```python\nreturn \"hello\"\n```\n\nReturns the expression that follows. The last statement of each branch of a function must be a `return`.\n\n```py\n# Allowed, all branches return\ndef max(a, b):\n  if a > b:\n    return a\n  else:\n    return b\n```\n\n```py\n# Not allowed, early return\ndef Foo(x):\n  if test_condition(x):\n    return \"err\"\n  else:\n    y = map(x)\n\n  return y\n```\n\n```py\n# Not allowed, one of the branches doesn't return\ndef Foo(a, b):\n  if a < b:\n    return a\n  else:\n    c = a + b\n```\n\n### If\n\n```python\nif condition:\n  return 0\nelse:\n  return 1\n```\n\nA branching statement where `else` is mandatory.\n\nThe condition must return a `u24` number, where 0 will run the `else` branch and any other value will return the first one.\n\nIt is possible to make if-chains using `elif`:\n\n```python\nif condition1:\n  return 0\nelif condition2:\n  return 1\nelif condition3:\n  return 2\nelse:\n  return 3\n```\n\nThe conditions are evaluated in order, one by one, stopping at the first successful case.\n\n### Switch\n\n```python\nswitch x = 5:\n  case 0:\n    return 6\n  case 1:\n    return 7\n  case _:\n    return x-2\n```\n\nA switch binds a variable name to the result of a given condition and branches to the case matching its value. Cases\nmust be listed from least to greatest, beginning with `0` and incrementing by 1. The last case must be `_`, which\ncatches all values not explicitly enumerated. Switches may only be used with native numbers values.\n\nIn the last case, the predecessor value is available with the name `bound_var-next_num`, where `bound_var` is the variable\nset by the condition and `next_num` is the expected value of the next case. For example, the above example code returns\n`3`, since `x-2` is bound to `5 - 2` and the value of `x` doesn't match any explicit case.\n\nThis switch statement is equivalent to the `if` from the previous section:\n\n```python\nswitch _ = condition:\n  case 0:\n    # else branch\n    return 1\n  case _:\n    # then branch\n    return 0\n```\n\n### Match\n\n```python\nmatch x = Option/none:\n  case Option/some:\n    y = x.value\n  case Option/none:\n    y = 0\n```\n\nA pattern matching statement, the cases must be the constructor names of the matching value.\n\nIt is possible to bind a variable name to the matching value. The fields of the matched constructor are bound to `matched_var.field_name`.\n\n### Fold\n\n```python\nfold x = Tree/Leaf:\n  case Tree/Node:\n    return x.value + x.left + x.right\n  case Tree/Leaf:\n    return 0\n```\n\nA fold statement. Reduces the given value with the given match cases.\n\nIt is possible to bind a variable name to the matching value. Just like in `match`, the fields are bound to `matched_var.field_name`.\n\nFor fields notated with `~` in the type definition, the fold function is called implicitly.\n\nIt is equivalent to the inline recursive function:\n\n```python\ndef fold(x: Tree(u24)) -> u24:\n  match x:\n    case Tree/Node:\n      return x.value + fold(x.left) + fold(x.right)\n    case Tree/Leaf:\n      return 0\n...\nfold(Tree/Leaf)\n```\n\n### Bend\n\nBend can be used to create recursive data structures:\n\n```rust\nbend x = 0:\n  when x < 10:\n    left = fork(x + 1)\n    right = fork(x + 1)\n    y = Tree/Node(left, right)\n  else:\n    y = Tree/Leaf(x)\n```\n\nWhich binds a variable to the return of an inline recursive function.\nThe function `fork` is available inside the `when` arm of the `bend` and calls it recursively.\n\nIt is possible to pass multiple state variables, which can be initialized:\n\n```python\nbend x = 1, y = 2 ...:\n  when condition(x, y, ...):\n    ...\n```\n\nWhen calling `fork`, the function must receive the same number of arguments as the number of state variables.\n\nIt is equivalent to this inline recursive function:\n\n```python\ndef bend(x, y, ...):\n  if condition(x, y, ...):\n    ...\n    return ... bend(x, y, ...) ...\n  else:\n    return ...\n```\n\n### Open\n\n```python\np = Point { x: 1, y: 2 }\nopen Point: p\nreturn Point { x: p.x * p.x, y: p.y * p.y }\n```\n\nBrings the inner fields of an object into scope. The original variable can still be accessed, but doing so will cause any used fields to be duplicated.\n\nIt's equivalent to pattern matching on the object, with the restriction that its type must have only one constructor.\n\n```python\nopen Point: p\n...\n\n# Equivalent to:\nmatch p:\n  Point:\n    ...\n```\n\n### With block\n\n```python\nwith Result:\n  x <- safe_div(2, 0)\n  return x\n```\n\nA monadic `with` block.\n\nWhere `x <- ...` performs a monadic operation.\n\nExpects `Result` to be a type defined with `type` or `object` and the function `Result/bind` to be defined.\nThe monadic bind function should be of type `(Result a) -> (a -> Result b) -> Result b`, like this:\n\n```python\ndef Result/bind(res, nxt):\n  match res:\n    case Result/Ok:\n      nxt = undefer(nxt)\n      return nxt(res.value)\n    case Result/Err:\n      return res\n```\n\nHowever, the second argument, `nxt`, is actually a deferred call to the continuation, passing any free variables as arguments.\nTherefore, all `bind` functions must call the builtin function `undefer` before using the value of `nxt`, as in the example above.\nThis is necessary to ensure that the continuation in recursive monadic functions stays lazy and doesn't expand infinitely.\n\nThis is an example of a recursive function that would loop if passing the variable `a` to the recursive call `Result/foo(a, b)` was not deferred:\n\n```python\ndef Result/foo(x, y):\n  with Result:\n    a <- Result/Ok(1)\n    if b:\n      b = Result/Err(x)\n    else:\n      b = Result/Ok(y)\n    b <- b\n    return Result/foo(a, b)\n```\n\nOther statements are allowed inside the `with` block and it can both return a value at the end and bind a variable, like branching statements do.\n\n```python\n# Also ok:\nwith Result:\n  x <- safe_div(2, 0);\n  y = x\nreturn y\n```\n\nThe name `wrap` is bound inside a `with` block as a shorthand for `Type/wrap`,\nand it calls the unit function of the monad, also called `pure` in some languages:\n\n```python\ndef Result/wrap(x):\n  return Result/Ok(x)\n\nwith Result:\n  x <- some_operation(...)\n  y <- some_operation(...)\n  return wrap(x * y)\n```\n\n### Def\n\nCreates a local function visible in the current block capturing variables:\n\n```python\ndef main() -> _:\n  y = 41\n  x = 1\n  def aux_add(x):\n    return x + y\n  return aux_add(x)\n```\n\n## Expressions\n\n### Variables\n\n```python\nsome_var\n\nfoo/bar\n```\n\nA variable can be anything matching the regex `[A-Za-z0-9_.-/]+` but with some restrictions:\n\n- It can not start with `//`\n- It can not contain `__`\n\nA variable is a name for some immutable expression. It is possible to rebind variables with the same name.\n\n```python\nx = 1\nx = x + 1\n```\n\nNote that `-` is also used for negative numbers and as the numeric operator. Bend's grammar is greedily parsed from left to right, meaning that `x-3` always represents a name and not `x - 3` or a sequence of expressions like in `[x -3]`.\n\n### Lambdas\n\n```python\nlambda x: x\n\nlambda x, y: y\n\nλx y: x\n```\n\nLambdas represents anonymous inline functions, it can bind a variable and has an expression as body.\n\nUsing `,` is optional.\n\n### Unscoped Lambdas and Variables\n\n```python\nlambda $x: $x\n\nλ$x $y: $x\n```\n\nLike lambdas, with the exception that the variable starts with a `$` sign. Every unscoped variable in a function must have a unique name and must be used exactly once.\n\nUnscoped variables are not transformed and linearized like normal scoped variables.\n\nRead [using scopeless lambdas](/docs/using-scopeless-lambdas.md) to know more about their behavior.\n\n### Function Call\n\n```python\ncallee(arg_1, arg_2, arg_n)\n```\n\nA call is written with a callee followed by a list of arguments. Arguments can be optionally separated by `,`.\n\nThe effect of a function call is to substitute the callee with it's body and replace the arguments by the passed variables.\n\nThe called function can be any expression and it supports partial applications.\n\nOptionally, if you call a function by its name, you can used named arguments:\n\n```python\ncallee(expr1, expr2, arg4 = expr3, arg3 = expr4)\n```\n\nIn case named arguments are used, they must come after the positional arguments and the function must be called with exactly the number of arguments of its definition.\n\n### Eraser\n\n```python\n*\n\neraser = *\n\n*(41 + 1)  # applies 41 + 1 to `*` erasing the number and returns `*`\n\n* = 41 + 1 # erases 41 + 1\n```\n\nThe effect of an eraser is to free memory. Erasers behave like a `null`.\n\nIt's impossible to compare or match eraser values.\n\nIt is implicitly inserted for variables that have not been used:\n\n```python\ndef constant(x):\n  return 8345\n```\n\n### Tuple\n\n```python\n(3, 9)\n```\n\nA Tuple is surrounded by `(` `)` and should contain 2 or more elements. Elements are separated by `,`.\n\n### Superposition\n\n```python\n{1 2 3}\n```\n\nA superposition of values is defined using `{` `}` with at least 2 expressions inside. Elements can be optionally separated by `,`.\n\nRead [sups and dups](./dups-and-sups.md) to know more.\n\n### Numbers and Infix Operations\n\nCurrently, bend supports 3 types of numbers: floats, integers and unsigned integers. All of then are 24 bit sized.\n\n```python\nf24 = +88.012\n\ni24 = -42\n\nu24 = 42\n```\n\nCurrently, We can't write operations that mix two types of number but we can explicitly convert between them.\n\n| Operation             | Syntax   | Supported Types  |\n| --------------------- | -------- | ---------------- |\n| Addition              | x + y    | int, float, uint |\n| Subtraction           | x - y    | int, float, uint |\n| Multiplication        | x \\* y   | int, float, uint |\n| Division              | x / y    | int, float, uint |\n| Remainder             | x % y    | int, float, uint |\n| Exponentiation        | x \\*\\* y | float            |\n| Equal                 | x == y   | int, float, uint |\n| Not Equal             | x != y   | int, float, uint |\n| Less Than             | x < y    | int, float, uint |\n| Greater Than          | x > y    | int, float, uint |\n| Less Than or Equal    | x <= y   | int, float, uint |\n| Greater Than or Equal | x >= y   | int, float, uint |\n| Bitwise And           | x & y    | int, uint        |\n| Bitwise Or            | x \\| y   | int, uint        |\n| Bitwise Xor           | x ^ y    | int, uint        |\n| Bitwise Right Shift   | x >> y   | uint             |\n| Bitwise Left Shift    | x << y   | uint             |\n\nHexadecimal and binary floating-point literals are also supported.\n\nIn these representations, each digit after the point is divided according to the base’s power of the digit's position.\nSpecifically, for hexadecimal floating-point numbers, each place after the dot represents a fraction of 16 to the power of the digit's depth.\nSimilarly, for binary floating-point numbers, each place after the dot represents a fraction of 2 to the power of the digit's depth.\n\n```python\n0xA.A == 10.625\n\n0b111.111 == 7.875\n```\n\n### Constructor Literals\n\nConstructors are just functions.\nA Constructor expression is equivalent to calling a Constructor function, they have 2 syntaxes:\n\n```python\n# Constructor syntax, requires all field names\nType/Ctr { field1: 4, field2: 8 }\n\n# Function syntax\nType/Ctr(field1 = 4, field2 = 8)\n\nType/Ctr(4, field2 = 8)\n\nType/Ctr(4, 8)\n\nType/Ctr(4) # Can be partially applied if not using named arguments\n```\n\n### Character Literal\n\n```python\n'x'\n```\n\nA Character is surrounded with `'`. Accepts unicode characters, unicode escapes in the form '\\u{hex value}' and is desugared to the unicode codepoint as an `u24`.\n\nOnly supports unicode codepoints up to `0xFFFFFF`.\n\n### Symbol Literal\n\n```python\n# Becomes 2146 (33 << 6 + 34)\n`hi`\n```\n\nA Symbol encodes a up to 4 base64 characters as a `u24` number. It is surrounded by `\\``.\n\nEmpty characters are interpreted as `A` which has value 0, meaning that `B` is the same as `AAAB`.\n\n### String Literal\n\n```python\n\"Hello, World!\"\n```\n\nA String literal is surrounded with `\"`. Accepts the same values as characters literals.\n\nIt is desugared to constructor calls of the built-in type String, `String/cons(head, ~tail)` and `String/nil` .\n\n### List Literal\n\n```python\n[1, 2, \"three\"]\n```\n\nA List literal is surrounded by `[` `]`. The elements must be separated by `,`.\n\nIt is desugared to constructor calls of the built-in type List, `List/cons(head, ~tail)` and `List/nil` .\n\n### Tree Literals\n\n```python\n![![1, 2], ![3, 4]]\n```\n\nThe Tree literals `![]` and `!` are used to create values of the built-in type `Tree`.\n\n`![a b]` is equivalent to `Tree/Node(a, b)`.\n\n`!x` is equivalent to `Tree/Leaf(x)`.\n\n### Map Literals\n\n```python\n{ 0: 4, `hi`: \"bye\", 'c': 2 + 3 }\nx[0] = 5     # Assigns the key 0 to the value 5\nreturn x[0]  # Gets the value of the key 0\n```\n\nBend has a built-in binary tree map data structure where the key is a `u24`, meaning you can use numbers, characters, and symbols as keys.\n\n### List Comprehension\n\n```python\n[x + 1 for x in list]\n\n[x + 1 for x in list if x > 2]\n```\n\nA List Comprehension generates a new list, it can be extracted in 3 parts.\n\n`[expression . iterator . condition]`\n\nExpression: The expression to be performed in the iterator element.\n\nIterator: Binds a name to the list elements.\n\nCondition: Optional, is used to filter the list elements.\n\nIt is desugared to a fold statement:\n\n```python\nfold list:\n  List/cons:\n    if condition:\n      List/cons(list.head, list.tail)\n    else:\n      list.tail\n  List/nil:\n    List/nil\n```\n\n<div id=\"fun-syntax\"></div>\n\n# Fun Syntax\n\n## Top-level definitions\n\n```rust\ntype Name\n  = (Ctr1 arg1 arg2)\n  | Ctr2\n\nName (Ctr1 sub_arg1 sub_arg2) arg3 = rule0_body\nName Ctr2 arg3 = rule1_body\n```\n\nA top-level name can be anything matching the regex `[A-Za-z0-9_.-/]+`, except it can't have `__` (used for generated names) or start with `//`.\n\n### Function Definitions\n\nA function definition is composed of a sequence of pattern matching equations.\nEach rule is the name of the function, a sequence of patterns and then the body.\n\n```rust\nidentity x = x\n\n(Bool.neg True)  = False\n(Bool.neg False) = True\n\nMapMaybe (Some val) f = (Some (f val))\nMapMaybe None f = None\n\nPair.get (fst, snd) f = (f fst snd)\n```\n\nA rule pattern can be:\n\n- A variable.\n- A number.\n- A constructor.\n- A tuple.\n- A superposition.\n- A wildcard `*`.\n\nAnd the builtin types that desugar to one of the above:\n\n- A list (becomes a constructor).\n- A string (becomes a constructor).\n- A natural number (becomes a constructor).\n- A character (becomes a number).\n- A symbol (becomes a number);\n\nUnscoped variables can't be defined in a rule pattern.\n\nThe rule body is a term, there are no statements in the Fun variant of Bend.\n\nRead [pattern matching](./pattern-matching.md) to learn about what exactly the rules for pattern matching equations are.\n\n### Type\n\nDefines an Algebraic Data Type, it should have at least one constructor.\n\n```rust\ntype Tree\n  = (Leaf value)\n  | (Node ~left ~right)\n  | Nil\n```\n\n`Tree` is the ADT name and it should be unique, except that it can be used once by a constructor name.\n\nEach constructor is defined by a name followed by its fields. The `~` notation describes a recursive field.\n\nThe constructors inherit the name of their types and become functions (`Tree/Node` and `Tree/Leaf` in this case).\n\n## Terms\n\n### Variables\n\nA variable can be anything matching the regex `[A-Za-z0-9_.-/]+` but with some restrictions:\n\n- It can not start with `//`\n- It can not contain `__`\n\nA variable is a name for some immutable expression. It is possible to rebind variables with the same name.\n\n```rust\nlet x = 1\nlet x = (+ x 1)\n```\n\n### Lambda\n\n```rust\n@x x\n\nλx x\n\nλ(fst, snd) snd\n\nλ{x y} x\n```\n\nLambdas represents anonymous inline functions, it can be written with `λ` or `@` followed by a pattern and a term.\n\nA tuple or duplication pattern is equivalent to a lambda followed by a `let`.\n\n```rust\nλ(fst, snd) snd\nλa let (fst, snd) = a; snd\n\nλ{x y} (x y)\nλa let {x y} = a; (x y)\n```\n\n### Unscoped Variables\n\n```rust\nλ$x $x\n```\n\nLike a normal scoped variable, but starts with a `$` sign. Every unscoped variable in a function must have a unique name and must be used exactly once.\nThey can be defined anywhere a scoped variable would be defined in a term, like in a lambda or a `let`.\n\nUnscoped variables are not transformed and linearized like normal scoped variables.\n\nRead [using scopeless lambdas](/docs/using-scopeless-lambdas.md) to know more about.\n\n### Application\n\n```rust\n(fun arg_1 arg_2 ... arg_n)\n```\n\nAn application is surrounded by `(` `)`, written in lisp style.\n\n> Lambdas have a higher precedence, so `(@x x 1)` and `((@x x) 1)` means the same thing.\n\n### Tuples\n\n```rust\n(1, 2, 3)\n```\n\nA tuple is surrounded by `(` `)`, with the difference that it's elements are separated by `,`.\n\n### Superposition\n\n```rust\n{1 2 3}\n```\n\nA superposition of values is defined using `{` `}` with at least 2 terms inside.\n\nRead [sups and dups](./dups-and-sups.md) to know more.\n\n### Let-bindings\n\n```rust\nlet x = (+ 1 2)\nx\n\nlet (fst, snd, era) = (1, 2, *);\n(+ fst snd)\n\nlet {f1 f2} = λx x;\n(f1 f2)\n\nlet $x = (some_fn $x);\n*\n```\n\n> `*` is an eraser term.\n\nA let term uses a pattern, it can be:\n\n- A variable / unscoped variable.\n- A tuple.\n- A superposition.\n\nThe let term will expects a binding value followed by a `next` term.\n\nUsing `;` is optional.\n\n### Use\n\n```rust\nuse x = (+ 2 3)\n(+ x x)\n```\n\nInline copies of the declared bind, it is equivalent to this code:\n\n```rust\n(+ (+ 2 3) (+ 2 3))\n```\n\n### Switch\n\n```rust\nswitch n {\n  0: \"zero\"\n  1: \"one\"\n  _: \"greater than 1\"\n}\n\nswitch x = (+ 1 1) {\n  0: 42;\n  _: x-1;\n}\n```\n\nA switch for native numbers, it can hold a name binding if the matching term is not a variable.\n\nThe cases need to be typed from `0` to a wildcard `_` in sequence.\n\nIn the last case, the predecessor value is available with the name `bound_var-next_num`, where `bound_var` is the variable\nset by the condition and `next_num` is the expected value of the next case. For example, the above example code returns\n`1`, since `x-1` is bound to `(+ 1 1) - 1` and the value of `x` doesn't match any explicit case.\n\nUsing `;` is optional.\n\n### Match\n\n```rust\nmatch opt = (Some \"Bend\") {\n  Some: opt.value;\n  None: \"No name\";\n}\n```\n\nA pattern match expression, it can hold a name binding if the matching term is not a variable.\n\nIt is possible to use a _wildcard_, a named variable or `*` as default cases.\n\nIt is desugared according to the chosen encoding. Read [pattern matching](./pattern-matching.md) to know more.\n\nUsing `;` is optional.\n\n### If\n\n```rust\nif condition {\n  ...then\n} else {\n  ...else\n}\n```\n\nA branching expression where `else` is mandatory.\n\nThe condition must return a `u24` number, where 0 will run the `else` branch and any other value will return the first one.\n\nIt is equivalent to this switch:\n\n```rust\nswitch _ = condition {\n  0: else\n  _: then\n}\n```\n\nIt is possible to make if-chains using `elif`:\n\n```rust\nif condition1 {\n  0\n} elif condition2 {\n  1\n} elif condition3 {\n  2\n} else {\n  3\n}\n```\n\n### Bend\n\nBend can be used to create recursive data structures:\n\n```rust\nmain =\n  bend x = 0 {\n    when (< x 3):\n      (Tree/Node (fork (+ x 1)) (fork (+ x 1)))\n    else:\n      (Tree/Leaf x)\n  }\n```\n\nWhich binds a variable to the return of an inline recursive function.\nThe function `fork` is available inside the `when` arm of the `bend` and calls it recursively.\n\nIt is possible to pass multiple state variables, which can be initialized:\n\n```rust\nbend x = 0, y = 1 ... {\n  when (condition x y ...):\n    ...\n}\n```\n\nWhen calling `fork`, the function must receive the same number of arguments as the number of state variables.\n\nIt is equivalent to this inline recursive function:\n\n```rust\nbend x y ... =\n  if (condition x y ...) {\n    ...\n    ... (bend x y ...) ...\n  } else {\n    ...\n  }\n```\n\n### Open\n\n```rust\nlet x = (Pair 1 2);\nopen Pair x;\n(+ x.fst x.snd)\n```\n\nBrings the inner fields of an object into scope. The original variable can still be accessed, but doing so will cause any used fields to be duplicated.\n\nIt's equivalent to pattern matching on the value, with the restriction that its type must have only one constructor.\n\n```rust\nlet x = (Pair 1 2)\nmatch x {\n  Pair: (+ x.fst x.snd)\n}\n```\n\n### With block\n\n```rust\nResult/bind (Result/Ok val) nxt = ((undefer nxt) val)\nResult/bind err _nxt = err\n\ndiv a b = switch b {\n  0: (Result/Err \"Div by 0\")\n  _: (Result/Ok (/ a b))\n}\n\nrem a b = switch b {\n  0: (Result/Err \"Mod by 0\")\n  _: (Result/Ok (% a b))\n}\n\nMain = with Result {\n  ask y = (div 3 2);\n  ask x = (rem y 0);\n  x\n}\n```\n\nReceives a type defined with `type` and expects `Result/bind` to be defined as a monadic bind function.\nIt should be of type `(Result a) -> (a -> Result b) -> Result b`, like in the example above.\n\nHowever, the second argument, `nxt`, is actually a deferred call to the continuation, passing any free variables as arguments.\nTherefore, all `bind` functions must call the builtin function `undefer` before using the value of `nxt`, as in the example above.\nThis is necessary to ensure that the continuation in recursive monadic functions stays lazy and doesn't expand infinitely.\n\nThis is an example of a recursive function that would loop if passing the variable `a` to the recursive call `Result/foo(a, b)` was not deferred:\n\n```python\nResult/foo x y = with Result {\n  ask a = (Result/Ok 1)\n  ask b = if b {\n    (Result/Err x)\n  } else {\n    (Result/Ok y)\n  }\n  (Result/foo a b)\n}\n```\n\nInside a `with` block, you can use `ask`, to access the continuation value of the monadic operation.\n\n```rust\nask y = (div 3 2)\nask x = (rem y 0)\nx\n\n# Becomes\n(Result/bind (div 3 2) λy (Result/bind (rem y 0) λx x))\n```\n\nIt can be used to force a sequence of operations. Since the continuation receives the result through a lambda, it is only fully evaluated after something is applied to it.\n\nThe name `wrap` is bound inside a `with` block as a shorthand for `Type/wrap`,\nthe equivalent as a `pure` function in other functional languages:\n\n```rust\nResult/wrap x = (Result/Ok x)\n\nwith Result {\n  ask x = (some_operation ...)\n  ask y = (some_operation ...)\n  (wrap (* x y))\n}\n```\n\n### Def\n\nCreates a local function visible in the current block capturing variables:\n\n```rust\nmain =\n  let base = 0\n  def aux [] = base\n      aux (List/Cons head tail) = (+ head (aux tail))\n  (aux [1, 2, 3])\n```\n\n### Numbers and operations\n\nCurrently, bend supports 3 types of numbers: floats, integers and unsigned integers. All of then are 24 bit sized.\n\n```rust\nf24 = +88.012\n\ni24 = -42\n\nu24 = 42\n```\n\nCurrently, the 3 number types cannot be mixed.\n\n| Operation             | Syntax     | Supported Types  |\n| --------------------- | ---------- | ---------------- |\n| Addition              | (+ x y)    | int, float, uint |\n| Subtraction           | (- x y)    | int, float, uint |\n| Multiplication        | (\\* x y)   | int, float, uint |\n| Division              | (/ x y)    | int, float, uint |\n| Remainder             | (% x y)    | int, float, uint |\n| Exponentiation        | (\\*\\* x y) | float            |\n| Equal                 | (== x y)   | int, float, uint |\n| Not Equal             | (!= x y)   | int, float, uint |\n| Less Than             | (< x y)    | int, float, uint |\n| Greater Than          | (> x y)    | int, float, uint |\n| Less Than or Equal    | (<= x y)   | int, float, uint |\n| Greater Than or Equal | (>= x y)   | int, float, uint |\n| Bitwise And           | (& x y)    | int, uint        |\n| Bitwise Or            | (\\| x y)   | int, uint        |\n| Bitwise Xor           | (^ x y)    | int, uint        |\n| Bitwise Right Shift   | (>> x y)   | uint             |\n| Bitwise Left Shift    | (<< x y)   | uint             |\n\nHexadecimal and binary floating-point literals are also supported.\n\nIn these representations, each digit after the point is divided according to the base’s power of the digit's position.\nSpecifically, for hexadecimal floating-point numbers, each place after the dot represents a fraction of 16 to the negative power of the digit's depth.\nSimilarly, for binary floating-point numbers, each place after the dot represents a fraction of 2 to the negative power of the digit's depth.\n\n```python\n(== 0xA.A 10.625)\n\n(== 0b111.111 7.875)\n```\n\n### Character Literal\n\n```rust\n'a'\n```\n\nA Character is surrounded with `'`. Accepts unicode characters, unicode escapes in the form '\\u{hex value}' and is desugared to the unicode codepoint as an `u24`.\n\nOnly supports unicode codepoints up to `0xFFFFFF`.\n\n### Symbol Literal\n\n```python\n# Becomes 2146 (33 << 6 + 34)\n`hi`\n```\n\nA Symbol encodes a up to 4 base64 characters as a `u24` number. It is surrounded by `\\``.\n\nEmpty characters are interpreted as `A` which has value 0, meaning that `B` is the same as `AAAB`.\n\n### String Literal\n\n```rust\n\"Hello\"\n```\n\nA String literal is surrounded with `\"`. Accepts the same values as characters literals.\n\nThe syntax above is desugared to:\n\n```\n(String.cons 'H' (String.cons 'e' (String.cons 'l' (String.cons 'l' (String.cons 'o' String.nil)))))\n```\n\n### List Literal\n\n```rust\n[1, 2, 3 4]\n```\n\nThe syntax above is desugared to:\n\n```\n(List.cons 1 (List.cons 2 (List.cons 3 (List.cons 4 List.nil))))\n```\n\nUsing `,` is optional.\n\n### Tree Literals\n\n```python\n![![1, 2], ![3, 4]]\n```\n\nThe Tree literals `![]` and `!` are used to create values of the built-in type `Tree`.\n\n`![a b]` is equivalent to `Tree/Node(a, b)`.\n\n`!x` is equivalent to `Tree/Leaf(x)`.\n\n### Nat Literal\n\n```rust\n#3\n```\n\nThe syntax above is desugared to:\n\n```\n(Nat/succ (Nat/succ (Nat/succ Nat/zero)))\n```\n\n# Native HVM definitions\n\n```py\n# This function causes two ports to be linked and returns *.\n# This can be used to interpret a lambda as an application and apply something to it for example.\n# It can be used like this: `let * = (link_ports @x x y)`\nhvm link_ports:\n  (a (b *))\n  & (c a) ~ (d e)\n  & (e b) ~ (d c)\n\n# Casts a `u24` to itself.\n# We can give type annotations to HVM definitions.\nhvm u24_to_u24 -> (u24 -> u24):\n  ($([u24] ret) ret)\n```\n\nIt's also possible to define functions using HVM syntax. This can be\nthought of as a way to write \"HVM assembly\" directly in a Bend program.\nYou can find the reference of this syntax in the [HVM paper](https://github.com/HigherOrderCO/HVM/blob/main/paper/PAPER.pdf).\n\nThis is meant for writing things that would otherwise be hard or\nimpossible to write in normal Bend syntax.\n\nIt will also ignore all term-level compiler passes and so can be\nuseful for writing programs with exact behaviour that won't ever be\nchanged or optimized by the compiler.\n\n<div id=\"import-syntax\"></div>\n\n# Import Syntax\n\n### Import Relative to the File\n\nPaths starting with `./` or `../` are imported relative to the file.\n\n### Import Relative to the Main Folder\n\nPaths that do not start with `./` or `../` are relative to the folder of the main file.\n\n## Syntax\n\n### Import Specific Names from a File, or Files from a Folder\n\n```py\nfrom path import name\nfrom path import (name1, name2)\nimport (path/name1, path/name2)\n```\n\n### Import All Names from a File, or All Files from a Folder\n\n```py\nfrom path import *\n```\n\n### Aliasing Imports\n\n```py\nfrom path import name as alias\nfrom path import (name1 as Alias1, name2 as Alias2)\nimport path as alias\nimport (path/name1 as Alias1, path/name2 as Alias2)\n```\n\n<div id=\"comments\"></div>\n\n# Comments\n\n## Syntax\n\n### Single Line Comment\n\nUse `#` to indicate a single line comment.\n\n```py\n# Single line comment\n\ndef main():\n  # return 0\n```\n\n### Multi Line Comment\n\nUse `#{ ... #}` to indicate a multi-line comment.\n\nMulti-line commenting should also be used to document code.\nDocumentation for functions is meant to be written as a multiline comment right above the function.\n```py\n#{\n  Expects two arguments to be passed.\n\n  This function always returns the second value that was used as argument.\n#}\ndef second(x: A, y: B) -> B:\n  return y\n```\n\n<div id=\"imp-type-syntax\"></div>\n\n# Imp Type Syntax\n\n## Variable\n\nAny name represents a type variable.\n\nUsed in generic or polymorphic type definitions.\n\n```python\n# T is a type variable\ntype Option(T):\n  Some { value: T }\n  None\n\n# A is a type variable\ndef id(x: A) -> A:\n  return x\n```\n\n## Constructor\n\n`Ctr(...)` represents a constructor type.\n\nUsed for defining custom data types or algebraic data types.\nCan contain other types as parameters.\n\n```python\ndef head(list: List(T)) -> Option(T)\n  match list:\n    case List/Nil:\n      return Option/None\n    case List/Cons:\n      return Option/Some(list.head)\n```\n\n## Any\n\n`Any` represents the untyped type.\n\nIt accepts values of alls type and will forcefully cast any type to `Any`.\n\nCan be used for values that can't be statically typed, either because\nthey are unknown (like in raw IO calls), because they contain untypable\nexpressions (like unscoped variables), or because the expression cannot\nbe typed with the current type system (like the self application `lambda x: x(x)`).\n\n```python\ndef main -> Any:\n  return 24\n```\n\n## None\n\n`None` represents the eraser `*` or absence of a value.\n\nOften used to indicate that a function doesn't return anything.\n\n```python\ndef none -> None:\n  return *\n```\n\n## Hole\n\n`_` represents a hole type.\n\nThis will let the type checker infer the most general type for an argument or return value.\n\n```python\ndef increment(x: _) -> _:\n  return x + 1\n```\n\n## u24\n\n`u24` represents an unsigned 24-bit integer.\n\n```python\ndef zero -> u24:\n  return 0\n```\n\n## i24\n\n`i24` represents a signed 24-bit integer.\n\n```python\ndef random_integer -> i24:\n  return -42\n```\n\n## f24\n\n`f24` represents a 24-bit floating-point number.\n\n```python\ndef PI -> f24:\n  return 3.14\n```\n\n## Tuple\n\n`(_, _, ...)` represents a tuple type.\n\nCan contain two or more types separated by commas.\n\n```python\ndef make_tuple(fst: A, snd: B) -> (A, B):\n  return (fst, snd)\n```\n\n## Function\n\n`a -> b` represents a function type.\n\n`a` is the input type, and `b` is the output type.\n\n```python\ndef apply(f: A -> B, arg: A) -> B:\n  return f(arg)\n```\n\n<div id=\"fun-type-syntax\"></div>\n\n# Fun Type Syntax\n\n## Variable\n\nAny name represents a type variable.\n\nUsed in generic or polymorphic type definitions.\n\n```python\n# T is a type variable\ntype (Option T)\n  = (Some T)\n  | None\n\n# A is a type variable\nid : A -> A\nid x = x\n```\n\n## Constructor\n\n`(Ctr ...)` represents a constructor type.\n\nUsed for defining custom data types or algebraic data types.\nCan contain other types as parameters.\n\n```python\nhead : (List T) -> (Option T)\nhead [] = Option/None\nhead (List/Cons head _) = (Option/Some head)\n```\n\n## Any\n\n`Any` represents the untyped type.\n\nIt accepts values of alls type and will forcefully cast any type to `Any`.\n\nCan be used for values that can't be statically typed, either because\nthey are unknown (like in raw IO calls), because they contain untypable\nexpressions (like unscoped variables), or because the expression cannot\nbe typed with the current type system (like the self application `λx (x x)`).\n\n```python\nmain : Any\nmain = @x x\n```\n\n## None\n\n`None` represents the eraser `*` or absence of a value.\n\nOften used to indicate that a function doesn't return anything.\n\n```python\nnone : None\nnone = *\n```\n\n## Hole\n\n`_` represents a hole type.\n\nThis will let the type checker infer the most general type for an argument or return value.\n\n```python\nincrement : _ -> _\nincrement x = (+ x 1)\n```\n\n## u24\n\n`u24` represents an unsigned 24-bit integer.\n\n```python\nzero : u24\nzero = 0\n```\n\n## i24\n\n`i24` represents a signed 24-bit integer.\n\n```python\nrandom_integer : i24\nrandom_integer = -24\n```\n\n## f24\n\n`f24` represents a 24-bit floating-point number.\n\n```python\nPI : f24\nPI = 3.14\n```\n\n## Tuple\n\n`(_, _, ...)` represents a tuple type.\n\nCan contain two or more types separated by commas.\n\n```python\nmake_tuple : A -> B -> (A, B)\nmake_tuple fst snd = (fst, snd)\n```\n\n## Function\n\n`a -> b` represents a function type.\n\n`a` is the input type, and `b` is the output type.\n\n```python\napply : (A -> B) -> A -> B\napply f arg = (f arg)\n```\n"
  },
  {
    "path": "docs/type-checking.md",
    "content": "# Type Checking\n\nBend has a type checker with optional typing support based on a Hindley Milner type system.\n\nPrograms can be optionally typed using the respective imp or fun type syntax. Type checking is\nenabled by default, but can be toggled with the `-Otype-check` and `-Ono-type-check` options.\n\nEvery function can be annotated with a type for its arguments and return value.\nThe type checker will infer the type of the function and then compare if it's compatible with the annotated type.\n\n```python\ndef add(x: u24, y: u24) -> u24:\n  return x + y\n\n# Arguments or return value without annotation are considered `Any`.\n# They will be accepted by any function, regardless of being correct or not.\ndef push(list: List(T), value) -> List(T):\n  match list:\n    case List/Nil:\n      return List/Cons(value, List/Nil)\n    case List/Cons:\n      return List/Cons(list.head, push(list.tail, value))\n\n# Error, List(T) must only receive values of type `T`.\ndef append_num(list: List(T), num: u24) -> List(T):\n  return List/Cons(num, list)\n\n# Error, Tree(T) can only store one type of value.\ndef my_tree() -> _:\n  return ![!1, !\"a\"]\n\n# Error, can't add a `u24` and a `f24`.\n# Bend doesn't have implicit type conversions.\ndef add_float(x: u24, y: f24) -> f24:\n  return x + y\n```\n\nBend comes with the following builtin types:\n\n* `u24`: Unsigned 24-bit integer.\n* `i24`: Signed 24-bit integer.\n* `f24`: Floating point number.\n* `(T1, ..., Tn)`: Tuple with `n` elements of types `T1` to `Tn`.\n* `Any`: Untyped value.\n* `None`: Eraser `*`.\n* `_`: A type that will be inferred by the type checker.\n\nThe prelude library also defines some basic types that are used in Bend programs:\n\n* `String`: Text represented as a sequence of Unicode characters.\n* `List(T)`: A list of values of type `T`.\n* `Tree(T)`: A binary tree with values of type `T` at the leaves.\n* `Map(T)`: A map from keys of type `u24` to values of type `T`.\n* `IO(T)`: A monadic IO type that can be used to perform IO operations.\n* `Result(O, E)`: Represents the result of an operation that can either succeed with an `O` or fail with an `E`.\n\n\nAdditionally, you can define your own algebraic data types.\nIn this case, all the type variables that occur in the constructors must be previously defined.\n\n```python\ntype Option(T):\n  Some { value: T }\n  None\n```\n\nAll the constructors will be declared with the same type `TypeName(var2, var2, ...)`.\n\n### Enabling and disabling type checking\n\nIn some cases we know that dynamically our program will not do something wrong despite not being able to give it the proper type.\n\nWe can disable type checking for a specific function by either removing the type annotations or by giving it the `unchecked` keyword:\n\n```python\n# Error, type-checked functions can't contain an unscoped variable.\ndef channel(x: u24) -> (u24 -> u24, u24):\n  return (lambda $a: x, $a)\n\n# We can remove the annotations. It won't be type-checked,\n# but its type will be `Any -> Any`.\ndef channel(x):\n  return (lambda $a: x, $a)\n\n# Instead, we can use the `unchecked` keyword.\n# The annotated type will be considered the truth, regardless of being correct or not.\ndef unchecked channel(x: u24) -> (u24 -> u24, u24):\n  return (lambda $a: x, $a)\n```\n\nThe opposite is also possible, we can enable type checking for an unannotated function by using the `checked` keyword before the name of the function in its declaration:\n\n```python\n# Despite the inferred type being `List(T) -> List(T)`, the type checker will consider it as `Any -> Any` because it's not annotated.\ndef checked tail(list):\n  match list:\n    case List/Nil:\n      return List/Nil\n    case List/Cons:\n      return list.tail\n\n# Error, can't infer the type of this function, despite having type `Any`.\n# Not typeable by a Hindley-Milner type system.\nchecked (scott_concat a b) = (a\n  λh λt λcons λnil (cons h (scott_concat t b))\n  b\n)\n```\n\nWe can also disable type checking for the entire program by using the `-Ono-type-check` option.\n\nNative HVM definitions are always unchecked.\n\n```python\n# This function will be given the type `a -> a`.\nhvm native_id -> (a -> a):\n  (x x)\n```\n\n### Limitations\n\nCurrently, the following are not supported by the type checker:\n\n- Superpositions (`{a, b}`, the tuple type with duplication semantics, see [Dups and sups](https://github.com/HigherOrderCO/Bend/blob/main/docs/dups-and-sups.md)).\n- Unscoped variables and variable binds (`$a`, `let $a = ...`, see [Scopeless lambdas](https://github.com/HigherOrderCO/Bend/blob/main/docs/using-scopeless-lambdas.md)).\n- Expressions not typeable by a Hindley-Milner type system (e.g. self application `λx: x(x)`).\n\nAdditionally, the builtin types `Number` and `Integer` can't be used directly in type annotations. They are used internally by the type checker to handle numeric expressions.\n\n```python\n# The inferred type will be `Number(a) -> Number(a) -> Number(a)`.\ndef add(x: _, y: _) -> _:\n  return x + y\n\n# The inferred type will be `Integer(a) -> Integer(a) -> Integer(a)`.\ndef shift(x: _, n: _) -> _:\n  return x << n\n```\n"
  },
  {
    "path": "docs/using-scopeless-lambdas.md",
    "content": "# Using scopeless lambdas\n\nScopeless lambdas are very powerful lambdas that are a side-effect of HVM's internal representation for lambda terms.\n\nScopeless lambdas are lambdas that have no scope. The variables bound by them can be used outside the lambda's body. They can be created by prefixing a dollar symbol (`$`) to a lambda's variable name.\n\n```py\nλ$x $x # The identity function as a scopeless lambda\n```\n\nOf course, using scopeless lambdas as a replacement for regular lambdas is kind of pointless. Their real power comes from being able to use the bound variable outside the body:\n\n```py\nmain = (((λ$x 1) 2), $x)\n# $x gets replaced by 2 and the application ((λ$x 1) 2) gets replaced by 1\n# Outputs (1, 2)\n```\nIn the imp syntax, scopeless lambdas can be written in the following way:\n```py\ndef main() -> _:\n  # This is the equivalent code to the above example\n  # Notice that in the imp syntax, you scopeless lambdas are written as `lambda $x: 1` instead of `λ$x 1`.\n  f = lambda $x: 1\n  return (f(2), $x)\n```\n\nTake some time to think about the program above. It is valid, despite `$x` being used outside the lambda's body.\n\nHowever, scopeless lambdas don't bind across definitions.\n```py\ndef = $x\n\nmain = (((λ$x 1) 2), def)\n```\n\nThe bound variables are local to each term.\n\n## Duplicating scopeless lambdas\n\nWe have seen that the variable bound to a scopeless lambda gets set when the lambda is called. But, what happens if we never call `λ$x 1`? What will `$x` get set to then? Here is a program that does that:\n\n```py\nmain =\n\tlet _ = λ$x 1 # Discard and erase the scopeless lambda\n\t(2, $x)\n\n# Outputs (2, *)\n```\n\nThe program outputs `2` as the first item of the tuple, as expected. But the second item is `*`! What is `*`?\n\n`*` (called ERA or eraser) is a special term HVM uses when a value was erased. This is what happened to `$x`. We erased `λ$x 1` when we discarded it, which led to `$x` being erased.\n\nWhat happens if we call `λ$x 1` with two different values instead? \n\nTry to answer this with your knowledge of HVM. Will it throw a runtime error? Will it return something unexpected?\n\n```py\nmain =\n\tlet f = λ$x 1 # Assign the lambda to a variable\n\t((f 2), ((f 3), $x)) # Return a tuple of (f 2) and another tuple.\n\n# Outputs (1, (1, {2 3}))\n```\n\nWhat? This is even more confusing. The first two values are `1`, as expected. But what about the last term?\n\nThe last term in the tuple is a **superposition** of two values. A [superposition](dups-and-sups.md) is the \"other side\" of a duplication. It is created here because we implicitly duplicated `f` when we used it twice, and duplicating lambdas creates superpositions.\n\nWhen implicitly duplicating a lambda, the order of the arguments is left to the compiler's discretion. So it's possible that depending on the context of your program, the order of the arguments on the superposition might be different than expected. If you want to make sure that your duplications come out in a specific order, you need to explicitly duplicate the lambda.\n## Usage\n\nNow that we know how scopeless lambdas work, we can make programs using them. An example of a function that is usually thought as \"primitive\", but can be implemented using scopeless lambdas is [call/cc](http://www.madore.org/~david/computers/callcc.html)\n\nCall/cc is a function that takes a function that takes a parameter `k`. When `k` is called with an argument, `callcc` returns it.\n\n```py\n# Function that discards its second argument\nSeq a b = a\n\n# Create a program capable of using `callcc`\nCC.lang = λprogram\n  let callcc  = λcallback (λ$garbage($hole) (callback λ$hole(0)));\n  let result  = (program callcc);\n  (Seq result $garbage)\n\nMain = (CC.lang λcallcc \n  # This code calls `callcc`, then calls `k` to fill the hole with `42`. This means that the call to callcc returns `42`, and the program returns `52`. (+ (k 42) 1729) is garbage and is erased.\n  (+ 10 (callcc λk(+ (k 42) 1729)))\n)\n```"
  },
  {
    "path": "docs/writing-fusing-functions.md",
    "content": "# Writing fusing functions\n## Church encoding\nChurch Encoding is a way to encode common datatypes as λ-calculus terms. For example, here is a [Church-encoded](https://en.wikipedia.org/wiki/Church_encoding) boolean type in HVM\n```py\ntrue = λt λf t\nfalse = λt λf f\n```\nMatching on values of this representation is simply calling the boolean value with what the function should return if the boolean is true and if the boolean is false.\n```py\nif boolean case_true case_false = (boolean case_true case_false)\nmain = (if true 42 37)\n# Outputs 42\n\n# Or alternatively:\n# if boolean = boolean\n# Each boolean is represented by its own matching function\n# so (true 42 37) will do the same thing.\n```\n\nThis is how a `Not` function that acts on this encoding can be defined:\n```py\nnot = λboolean (boolean false true)\nmain = (not true) # Outputs λtλf f.\nmain = (not false) # Outputs λtλf t.\n```\nIf the boolean is `true`, then the function will return `false`. If it is `false`, it will return `true`.\n\n## Self-application\n\nWhat happens if we self-compose the `not` function? It is a well known fact that`(not (not x)) == x`, so we should expect something that behaves like the identity function.\n```py\nmain = λx (not (not x))\n# Output:\n# λa (a λ* λb b λc λ* c λ* λd d λe λ* e)\n```\nThe self-application of `not` outputs a large term. Testing will show that the term does indeed behave like an identity function. However, since the self-application of `not` is larger than `not` itself, if we self-compose this function many times, our program will get really slow and eat up a lot of memory, despite all functions being equivalent to the identity function:\n```py\nmain = λx (not (not x)) # Long\nmain = λx (not (not (not (not x)))) # Longer\nmain = λx (not (not (not (not (not (not (not (not x)))))))) # Longer\n# etc...\n```\nThe self-application of not a large number of times, such as 65536 or 4294967296, will be large enough to slow down our computer by a significant amount.\n\nLuckily, there's a trick we can do to make the self-application of `not` much shorter. The trick is to rewrite `not` in another way that makes the self-composition of `not` much smaller. This trick is called \"fusing\". Here is how it's done.\n\n### Fusing functions\nLet's first take our initial `not` implementation.\n```py\nnot = λboolean (boolean false true)\n```\nWe begin by replacing `false` and `true` by their values.\n```py\nnot = λboolean (boolean λtλf(f) λtλf(t))\n```\nAfter doing this, it's easy to notice that there's something that both terms have in common. Both of them are lambdas that take in two arguments. We can **lift** the lambda arguments up and make them **shared** between both cases.\n```py\nnot = λboolean λt λf (boolean f t)\n```\nLet's see how the self-application of `not` gets reduced now. Each line will be a step in the reduction.\n```py\nmain = λx (not (not x))\nmain = λx (not (λbooleanλtλf (boolean f t) x))\nmain = λx (not (λtλf (boolean x f t)))\nmain = λx (λboolean1λt1λf1 (boolean1 f1 t1) (λtλf (boolean x f t)))\nmain = λxλt1λf1 (λtλf (x f t) f1 t1)\nmain = λxλt1λf1 (λf (x f f1) t1))\nmain = λxλt1λf1 (x t1 f1)\n```\nWow! Simply by replacing lambda arguments with the values applied to them, we were able to make `(not (not x))` not grow in size. This is what fusing means, and it's a really powerful tool to make programs faster.\n\nFusing isn't only for Church-encoded `not`. Fusing can be done anywhere where efficient composition is important. What we simply have to do is \"lift\" lambdas up, and make the arguments \"shared\" between all cases.\n\n## Preventing duplication\n\nSomething else that is important when writing fusing functions is linearizing variables to prevent useless duplication.\n\nConsider the [scott-encoded](https://crypto.stanford.edu/~blynn/compiler/scott.html) type `Nat`:\n\n```py\nzero = λs λz z # 0 as a scott-encoded number\nsucc = λpred λs λz (s pred) # Creates a Scott number out of its predecessor\n\ntwo = (succ (succ zero)) # λs λz (s λs λz (s λs λz z))\n```\n\nWe can write an addition function for this type, that adds two numbers\n\n```py\nadd = λa λb\n\tlet case_succ = λa_pred (succ (add a_pred b)) # If a = p+1, then return (p+b)+1\n\tlet case_zero = b # If the `a = 0`, return `b`\n\t(a case_succ case_zero)\n```\n\nThis code seems fine, but it has a problem that makes it suboptimal. There is an implicit [duplication](dups-and-sups.md) here:\n\n```rs\nadd = λa λb\n\tlet {b1 b2} = b;\n\tlet case_succ = λa_pred (succ (add a_pred b0))\n\tlet case_zero = b1\n\t(a case_succ case_zero)\n```\n\nHowever, only one of the two duplicated values is ever used. The other one is discarded. This means that this duplication is completely useless! It makes this function suboptimal. In fact, as of commit `ebd469`, it will hang HVM, because it's recursive and HVM2 is eager.\n\nThe correct way to define this function is this, which pushes the duplicating lambdas down, and removes the duplication:\n\n```rs\nfusing_add = λa\n\tlet case_succ = λa_pred λb (succ (fusing_add a_pred b))\n\tlet case_zero = λb b\n\t(a case_succ case_zero)\n```\n\nThis function is fusing on `a`, which means that `λx (fusing_add two x)` will have a small normal form (but `λx (fusing_add x two)` won't).\n\nBroadly speaking, a good rule of thumb in HVM is **push linear lambdas to the top and duplicating lambdas to the bottom**.\n\n## Example\n\nTo show the power of fusing, here is a program that self-composes `fusing_not` 2^24 times and prints the result.\nCurrently hvm is not able to handle operations between church numbers so we explicitly convert the native number to a church number in this example (which is very slow).\n\nThis program uses [native numbers, which are described here](native-numbers.md).\n```py\ntrue = λt λf t\nfalse = λt λf f\n\nnot = λboolean (boolean false true)\n\nfusing_not = λboolean λt λf (boolean f t)\n\n# Creates a Church numeral out of a native number\nto_church n = switch n {\n\t0: λf λx x\n\t_: λf λx (f (to_church n-1 f x))\n}\n\nmain =\n\t((to_church 0xFFFFFF) fusing_not)  # try replacing this by regular not. Will it still work?\n```\nHere is the program's output:\n```bash\n$ bend norm -s fuse_magic.hvm\nResult: λa λb λc (a c b)\n- ITRS: 285212661\n- TIME: 5.67s\n- MIPS: 50.28\n```\nA lot of rewrites, but most of those are just to create the church number.\n"
  },
  {
    "path": "examples/bitonic_sort.bend",
    "content": "# Implements bitonic sort on a list of numbers encoded as a tree of pairs.\n# https://en.wikipedia.org/wiki/Bitonic_sorter\n# Because we can't know when a tree of pairs is a leaf or a node, we pass the depth everywhere.\n\n# Generates a tree of pairs with depth 'd' with numbers from 2^d to 0 at the leaves\ndef gen(d):\n  bend d, x=0:\n    when d:\n      return (fork(d - 1, x * 2 + 1), fork(d - 1, x * 2))\n    else:\n      return x\n\n# Adds all the numbers in a tree of pairs of depth 'd'\ndef sum(d, t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return sum(d-1, t.a) + sum(d-1, t.b)\n\n# Conditionally swaps the values of a pair\ndef swap(s, a, b):\n  if s:\n    return (b,a)\n  else:\n    return (a,b)\n\ndef warp(d, s, a, b):\n  switch d:\n    case 0:\n      return swap(s + (a > b), a, b)\n    case _:\n      (a.a,a.b) = a\n      (b.a,b.b) = b\n      (A.a,A.b) = warp(d-1, s, a.a, b.a)\n      (B.a,B.b) = warp(d-1, s, a.b, b.b)\n      return ((A.a,B.a),(A.b,B.b))\n\ndef flow(d, s, t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return down(d, s, warp(d-1, s, t.a, t.b))\n\ndef down(d,s,t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return (flow(d-1, s, t.a), flow(d-1, s, t.b))\n\n# Bitonic sort\ndef sort(d, s, t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return flow(d, s, (sort(d-1, 0, t.a), sort(d-1, 1, t.b)))\n\ndef main:\n  # Generate a reverse sorted tree of numbers, sort them and then add them up\n  return sum(18, sort(18, 0, gen(18)))"
  },
  {
    "path": "examples/bubble_sort.bend",
    "content": "# Sorts a list\ndef sort(xs: List(u24)) -> List(u24):\n  match xs:\n    case List/Nil: \n      return List/Nil\n    case List/Cons: \n      return insert(xs.head, sort(xs.tail))\n\ndef insert(v: u24, xs: List(u24)) -> List(u24):\n  match xs:\n    case List/Nil:\n      return List/Cons(v, List/Nil)\n    case List/Cons:\n      return swap_gt(v, xs.head, xs.tail)\n\ndef swap_gt(v: u24, x: u24, xs: List(u24)) -> List(u24):\n  if x > v:\n    return List/Cons(v, List/Cons(x, xs))\n  else:\n    return List/Cons(x, insert(v, xs))\n\n# Generates a list of 'n' random u24 numbers using xorshift\ndef rnd(n: u24) -> List(u24):\n  bend n, state=1:\n    when n != 0:\n      state = state ^ (state << 13)\n      state = state ^ (state >> 17)\n      state = state ^ (state << 5)\n      return List/Cons(state % 100, fork(n - 1, state))\n    else:\n      return List/Nil\n\n# Sums a list of u24 numbers\ndef sum(xs: List(u24)) -> u24:\n  fold xs:\n    case List/Nil:\n      return 0\n    case List/Cons:\n      return xs.head + xs.tail\n\ndef main() -> u24:\n  n = 100\n  return sum(sort(rnd(n)))\n"
  },
  {
    "path": "examples/callcc.bend",
    "content": "# This program is an example that shows how scopeless lambdas can be used.\n\nSeq (a: A) (b: B) : A = a\n\n# Create a program capable of using `callcc`\nunchecked CC.lang : ((((a -> b) -> b) -> c) -> c) -> d =\nλprogram\n  let callcc  = λcallback (λ$garbage($hole) (callback λ$hole(0)));\n  let result  = (program callcc);\n  let garbage = $garbage; # Discard `$garbage`, which is the value returned by `callback`\n  (Seq result garbage)\n\nmain: u24 = (CC.lang λcallcc \n  # This code calls `callcc`, then calls `k` to fill the hole with `42`.\n  # This means that the call to callcc returns `42`, and the program returns `52`\n  (+ 10 (callcc λk(+ (k 42) 1729)))\n)\n  "
  },
  {
    "path": "examples/example_fun.bend",
    "content": "# Example of some things you can do with the 'fun' syntax\n\n# Define functions like this:\n# By default they accept and return any type\n(Def1) = ((λa a) (λb b))\n\n# You can call a definition by just referencing its name.\n# It will be substituted in place of the reference.\n(Def2) = ((λa a) Def1)\n\n# Definitions and variables can have names in upper and lower case and\n#  contain numbers, '.', '-', '_' and '/'.\n# Names defined in a more inner position shadow names in an outer position.\n(def3) = ((λDef1 Def1) (λx λx x))\n\n# You can annotate a function with the expected types and Bend will check them.\n# The parentheses on the left side of the definition are optional.\nconst (a: A) (b: B) : A = a\n\n# There are three types of native numbers available: u24, i24 and f24.\n# u24: Unsigned 24-bit integers\n# i24: Signed 24-bit integers\n# f24: Floating point numbers with 24-bit precision\n(unsigneds (x1: u24) (x2: u24)) : u24 = (* (+ x1 1) (/ (- x2 2) 1))\n\n# '+' or '-' are mandatory for i24.\n(signeds (x1: i24) (x2: i24)) : i24 = (* (+ x1 +1) (/ (- x2 -2) +1))\n\n# The '.' is mandatory for f24.\n(floats (x1: f24) (x2: f24)) : f24 = (* (+ x1 1.0) (/ (- x2 -2.0) +1.0))\n\n# Numeric operations are only meaningful on native numbers.\n# You can force the compiler to do it anyway by using untyped values.\nid = λx x  # 'id' wasn't given a type so it's inferred as 'Any'.\nbad_nums : Any = (+ id 1)\n\n# You can use numbers on the native match expression\n# The `+` arm binds the `scrutinee`-1 variable to the value of the number -1\n(Num.pred) = λn\n  switch n {\n    0: 0\n    _: n-1\n  }\n\n# Write new data types like this\ntype Option = (Some val) | None\ntype Bool = True | False\n\n# You can have pattern matching on definitions\n# Use `*` to ignore a pattern\n(Option.unwrap_or (Option/Some val) *) = val\n(Option.unwrap_or  Option/None     or) = or\n\n(Bool.or Bool/True  *) = Bool/True\n(Bool.or * Bool/True)  = Bool/True\n(Bool.or * *)     = Bool/False\n\n# Or using a match expression\n(Bool.not) = λbool\n  match bool {\n    Bool/True:  Bool/False\n    Bool/False: Bool/True\n  } \n\n# Data types can store values\ntype Boxed T = (Box (val: T))\n\n# Types with only one constructor can be destructured using `open`,\n# a single matching definition or a 'match'.\n(Box.map (Boxed/Box val) f) = (Boxed/Box (f val))\n\n(Box.unbox (box: (Boxed T))): T = open Boxed box; box.val\n\n# Use tuples to store two values together without needing to create a new data type\n(Tuple.new fst snd) =\n  let pair = (fst, snd)\n  pair\n\n# Then you can destructure it inside the definition or using `let`\n(Tuple.fst (fst, snd)) = fst\n\n(Tuple.snd) = λpair\n  let (fst, snd) = pair\n  snd\n\n# You can give type annotations to type definitions as well.\n# The recursive fields should be annotated with a '~'.\ntype ListList T =\n  (Cons (head: (List T)) ~(tail: (ListList T))) |\n  Nil\n\n# Bend functions usually center around recursion\nsum (List/Nil)       = 0\nsum (List/Cons x xs) = (+ x (sum xs))\n\nsum_list (ListList/Nil)       = List/Nil\nsum_list (ListList/Cons x xs) = (List/Cons (sum x) (sum_list xs))\n\n# To create local recursive functions that consume a recursive type, you can use 'fold'.\nsum_list2 ll = fold ll {\n  # The fold is implicitly called for fields marked with '~' in their definition.\n  # In this case, 'll.tail' is replaced with a recursive call to the fold.\n  ListList/Cons: (List/Cons (sum ll.head) ll.tail)\n  ListList/Nil: List/Nil\n}\n\n# To do the opposite and create a recursive structure, you can use 'bend'.\n# 'bend' can be seen as a tree-like generalization of a while loop.\nnew_list = bend x = 0 {\n  when (< x 10):\n    # 'fork' calls the bend recursively with the provided values.\n    (List/Cons x (fork (+ x 1)))\n  else:\n    List/Nil\n}\n\n# To make programs that are more parallelizable, you generally want to\n# avoid lists and use tree-like structures with multiple recursion instead.\nsum_nums from to =\n  if (< from to) {\n    (+ \n      (sum_nums from (/ 2 (+ from to)))\n      (sum_nums (+ 1 (/ 2 (+ from to))) to))\n  } else {\n    from\n  }\n\n# Internally, each variable is only used once. If you use a variable\n# is used more than once, the compiler will insert duplications for you.\n#\n# You can also write them manually with 'let {a b} = ...', but then\n# your function needs to be unchecked, either by not annotating it \n# with types or by marking it as unchecked.\nunchecked (def4) = λz let {z1 z2} = z; (z1 ((λx (x x x x x)) z2))\n\n# Duplicating a term that duplicates a variable is not allowed and will break the program.\nmap f (List/Cons x xs) = (List/Cons (f x) (map f xs)) # 'f' is duplicated here\nmap f (List/Nil)       = List/Nil \n\n# 'map' duplicated the lambda which duplicates 'a'.\n# Although this is well defined, it does not produce a sound lambda-calculus result.\nVeryBad (a: u24) (xs: (List u24)) : (List u24) =\n(map \n  λ x (+ (* a x) a) # 'a' is duplicated here\n  [1, 2, 3, 4, 5])\n\n\n# All files must have a main definition to run.\n# You can execute a program in Bend with \"bend run <path to file>\"\n# Other options are \"check\" to just see if the file is well formed\n# and \"gen-hvm\" to output hvm code.\n(main) = \n  let tup = (Tuple.new Option/None (Num.pred 5))\n\n  let fst = (Tuple.fst tup)\n  let snd = (Tuple.snd tup)\n\n  let box =     (Boxed/Box fst)\n  let map =     (Box.map box Option.unwrap_or)\n  let unboxed = ((Box.unbox map) snd)\n\n  (unsigneds 3 unboxed)\n"
  },
  {
    "path": "examples/fib.bend",
    "content": "# Program to calculate fibonacci numbers.\n\n# Calculates fibonacci numbers recursively.\n# Although branching recursion is usually a good idea to parallelize,\n# it makes this code run in exponential time.\ndef fib_recursive(n: u24) -> u24:\n  switch n:\n    case 0:\n      return 0\n    case 1:\n      return 1\n    case _:\n      return fib_recursive(n-2) + fib_recursive(n-2 + 1)\n\n# Calculates fibonacci numbers iteratively (tail-recursively).\n# This function is inherently sequential, but runs in linear time.\ndef fib_iterative(n: u24) -> u24:\n  bend a=0, b=1, n:\n    when n != 0:\n      return fork(b, a + b, n - 1)\n    else:\n      return a\n\ndef main() -> u24:\n  # With the iterative version, we can calculate large fibonacci numbers\n  # While with the recursive version, we will quickly run out of memory.\n  # Note that for numbers larger than 36 the result will overflow the space of the 24-bit integer.\n  # But we can run any number we want reasonably fast.\n  return fib_iterative(30)\n\n  # With the recursive version we create a tree with exponential size.\n  # For numbers larger than ~45, this will hit the maximum HVM memory and crash.\n  # Try uncommenting and running this line and compare the execution time.\n  #return fib_recursive(20)"
  },
  {
    "path": "examples/fusing_add.bend",
    "content": "# Example of fusing functions with Scott-encoded numbers.\n\nzero = λs λz z\nsucc = λpred λs λz (s pred) # Creates a Scott number out of its predecessor\n\ntwo = (succ (succ zero)) # λs λz (s λs λz (s λs λz z))\n\nfusing_add = λa\n\tlet case_succ = λa_pred λb (succ (fusing_add a_pred b))\n\tlet case_zero = λb b\n\t(a case_succ case_zero)\n\n# (fusing_add two) creates a fused function that efficiently adds two to whatever you pass to it.\nMain = λx (fusing_add two x)\n"
  },
  {
    "path": "examples/fusing_not.bend",
    "content": "# Example of a boolean 'not' function that fuses inifinitely through composition..\n\ntrue  : a -> b -> a = λt λf t\nfalse : a -> b -> b = λt λf f\n\nnot : ((a -> b -> b) -> (c -> d -> c) -> e) -> e = \n\tλboolean (boolean false true)\n\nfusing_not : (b -> a -> c) -> a -> b -> c = \n\tλboolean λt λf (boolean f t)\n\n# Creates a Church numeral out of a native number\nto_church (n: u24) : (a -> a) -> a -> a = switch n {\n\t0: λf λx x\n\t_: λf λx (f (to_church n-1 f x))\n}\nmain: _ = \n\t# Self-composes `not` 2^23-1 times and prints the result.\n\t((to_church 0x7FFFF) fusing_not)  # try replacing 'fusing_not' by 'not'. Will it still work?\n"
  },
  {
    "path": "examples/gen_tree.bend",
    "content": "# Generates a tree with numbers in the nodes using 'bend'\ntype MyTree(t):\n  Node { val: t, ~left: MyTree(t), ~right: MyTree(t) }\n  Leaf\n\ndef tree_gen(n: u24, x: u24) -> MyTree(u24):\n  bend n, x:\n    when n != 0:\n      return MyTree/Node(x, fork(n - 1, x*2+1), fork(n - 1, x*2+2))\n    else:\n      return MyTree/Leaf\n\ndef main -> MyTree(u24):\n  depth = 4\n  first_val = 1\n  return tree_gen(depth, first_val)\n\n"
  },
  {
    "path": "examples/hello_world.bend",
    "content": "def main() -> IO(u24):\n  with IO:\n    * <- IO/print(\"Hello, world!\\n\")\n    return wrap(0)"
  },
  {
    "path": "examples/insertion_sort.bend",
    "content": "def insertion_sort(xs: List(u24)) -> List(u24):\n  match xs:\n    case List/Nil:\n      return List/Nil\n    case List/Cons:\n      return insertion_sort.insert(xs.head, insertion_sort(xs.tail))\n\n# Inserts a value into a partially sorted list\ndef insertion_sort.insert(v: u24, xs: List(u24)) -> List(u24):\n  match xs:\n    case List/Nil:\n      return List/Cons(v, List/Nil)\n    case List/Cons:\n      return insert_aux(v > xs.head, v, xs.head, xs.tail)\n\ndef insert_aux(n: u24, v: u24, x: u24, xs: List(u24)) -> List(u24):\n  if n == 0:\n    return List/Cons(v, List/Cons(x, xs))\n  else:\n    return List/Cons(x, insertion_sort.insert(v, xs))\n\n# Generates a list of random numbers\ndef rnd(n: u24) -> List(u24):\n  if n == 0:\n    return List/Nil\n  else:\n    return List/Cons(random(10000 - n), rnd(n - 1))\n\n# Generates a pseudo-random number (not very good)\ndef random(n: u24) -> u24:\n  if n == 0:\n    return 0\n  else:\n    return (random(n - 1) * 16 + 101387) % 429453\n\ndef main() -> List(u24):\n  return insertion_sort(rnd(10))\n"
  },
  {
    "path": "examples/list.bend",
    "content": "##############################\n# Author: Ematth, 2024\n##############################\n### Singly-Linked List Type Definition: ###\n\n# The List type is builtin, so we don't need to declare it.\n# But this is how it's defined in the builtins file.\n# type List:\n#   Nil\n#   Cons { head, ~tail }\n\n###########################################\n\n# List clear:\n# clears all elements from list l. This is equivalent to initializing an empty list.\nclear : (List t) -> (List t) = @l []\n\n# List concat:\n# combines two lists (l1, l2) from left to right.\nconcat : (List t) -> (List t) -> (List t) = \n  @l1 @l2\n  match l1 {\n    List/Cons: (List/Cons l1.head (concat l1.tail l2))\n    List/Nil: l2\n  }\n\n# List add_front:\n# adds an element e to the front of list l.\nadd_front : (List t) -> t -> (List t) = \n  @l @e\n  match l {\n    List/Cons: (List/Cons e l)\n    List/Nil: (List/Cons e List/Nil)\n  }\n\n# List append (add_back):\n# adds an element e to the back of list l.\nappend : (List t) -> t -> (List t) = \n  @l @e (concat l (List/Cons e List/Nil))\n\n# list sum:\n# returns the sum of all items in the list. \nsum : (List u24) -> u24 = @l\n  match l {\n    List/Cons: (+ l.head (sum l.tail))\n    List/Nil: 0\n  }\n\n# List reverse:\n# reverses the order of elements in list l.\nreverse.aux : (List t) -> (List t) -> (List t) = \n  @acc @l \n  match l {\n    List/Nil: acc\n    List/Cons: (reverse.aux (List/Cons l.head acc) l.tail)\n  }\nreverse : (List t) -> (List t) = \n  @l (reverse.aux [] l)\n\n# List length:\n# returns the number of elements in list l.\nlen : (List t) -> u24 = \n  @l \n  match l {\n    List/Nil: 0\n    List/Cons: (+ 1 (len l.tail))\n  }\n\n# List count:\n# returns the number of instances of some number n in list l.\ncount.aux : u24 -> (List u24) -> u24 -> u24 =\n  @acc @l @n\n  match l {\n    List/Nil: acc\n    List/Cons: \n      let acc = if (== l.head n) { (+ acc 1) } else { acc }\n      (count.aux acc l.tail n)\n  }\ncount = @l @n\n  (count.aux 0 l n)\n\n# List index:\n# returns the value of a specific list index i, or * if the index doesn't exist.\nindex : (List t) -> u24 -> (Result t None) = \n  @l @i\n  match l {\n    List/Cons: \n      switch i {\n        0: (Result/Ok l.head)\n        _: (index l.tail (i-1))\n      }\n    List/Nil: (Result/Err *)\n  }\n\n# List head:\n# returns the first item in the list, or [] if the list is empty.\nhead : (List t) -> (Result t None) = \n  @l\n  match l {\n    List/Cons: (Result/Ok l.head)\n    List/Nil : (Result/Err *)\n  }\n\n# List tail:\n# returns the list whithout the first item, or [] if the list is empty.\ntail : (List t) -> (List t) = \n  @l\n  match l {\n    List/Cons: l.tail\n    List/Nil: []\n  }\n\n# List equals:\n# Compares the elements in two lists and returns 1 if they're equal, and 0 otherwise.\n# The function cmp compares two values and returns 1 if they're equal, and 0 otherwise. \nequals (xs: (List a)) (ys: (List b)) (cmp: a -> b -> u24) : u24\nequals (List/Cons x xs) (List/Cons y ys) cmp = if (cmp x y) { (equals xs ys cmp) } else { 0 }\nequals (List/Cons x xs)  List/Nil        cmp = 0\nequals  List/Nil        (List/Cons y ys) cmp = 0\nequals  List/Nil         List/Nil        cmp = 1\n\n# List pop_front: \n# removes and discards the first item of list l.\n# The new list is returned, or [] if the list is empty.\npop_front : (List t) -> (List t) =\n  @l\n  match l {\n    List/Cons: l.tail\n    List/Nil: []\n  }\n\n# List pop_back:\n# removes and discards the the last item of list l.\npop_back : (List t) -> (List t)\npop_back (List/Nil) = List/Nil\npop_back (List/Cons x List/Nil) = List/Nil\npop_back (List/Cons head tail) = (List/Cons head (pop_back tail))\n  \n# List remove:\n# removes the first occurrence of element e from list l.\nremove : (List u24) -> u24 -> (List u24) =\n  @l @s\n  match l {\n    List/Cons:\n      if (== l.head s) {\n        l.tail\n      } else {\n        (List/Cons l.head (remove l.tail s))\n      }\n    List/Nil: List/Nil\n  }\n\n# List split:\n# splits list l into two lists (l1, l2) at index i.\n# the second list takes the element at index i during the split.\nsplit : (List t) -> u24 -> ((List t), (List t)) =\n  @l @i (split.aux [] l i)\n\nsplit.aux : (List t) -> (List t) -> u24 -> ((List t), (List t)) =\n  @acc @l @i\n  match l {\n    List/Cons: \n      switch i {\n        0: (acc, l)\n        _: (split.aux (append acc l.head) l.tail i-1)\n      }\n    List/Nil: (acc, [])\n  }\n\n\n#################################\n\ndef main:\n  return head([5, 4, 3, 2, 1])\n#  return sum([1, 2, 3])\n#  return split([1, 2, 3, 4, 5, 6, 7], 3)\n#  return remove([1, 2, 1, 3], 1)\n#  return pop_back([1, 2, 3, 4])\n#  return pop_front([1, 2, 3])\n#  return index([5, 3, 6, 8, 2], 0)\n#  return clear([0, 2, 3])\n#  return count([1, 2, 3, 3, 3, 4, 4, 5, 3, 1000], 4)\n#  return len([1, 2, 3, 4, 4, 4])\n#  return reverse([1, 2, 3, 4, 5])\n#  return append([1, 2], 3)\n#  return add_front([2, 3], 1)\n#  return concat([1, 2], [3, 4])\n"
  },
  {
    "path": "examples/parallel_and.bend",
    "content": "# This program allocates a tree with True at the leaves then parallel ANDs them.\ntype Bool:\n  True\n  False\n\ndef and(a: Bool, b: Bool) -> Bool:\n  match a:\n    case Bool/True:\n      return b\n    case Bool/False:\n      return Bool/False\n\n# Trees of tuples are not typeable\ndef all(tree: Tree(Bool)) -> Bool:\n  fold tree:\n    case Tree/Node:\n      return and(tree.left, tree.right)\n    case Tree/Leaf:\n      return tree.value\n\ndef gen(n: u24) -> Tree(Bool):\n  switch n:\n    case 0:\n      return Tree/Leaf(Bool/True)\n    case _:\n      return Tree/Node { left: gen(n-1), right: gen(n-1) }\n\ndef main() -> Bool:\n  return all(gen(8))\n"
  },
  {
    "path": "examples/parallel_sum.bend",
    "content": "# A very simple example of a massively parallel program\n# Creates a tree with numbers and then sums all values in parallel\n\n# a binary tree\ntype MyTree(t):\n  Node { val: t, ~left: MyTree(t), ~right: MyTree(t) }\n  Leaf\n\n# sums all values in a tree\ndef sum(tree: MyTree(u24)) -> u24:\n  fold tree:\n    case MyTree/Node:\n      return tree.val + tree.left + tree.right\n    case MyTree/Leaf:\n      return 0\n\n# generates a binary tree of given depth\ndef gen(depth: u24) -> MyTree(u24):\n  bend height=0, val = 1:\n    when height < depth:\n      tree = MyTree/Node { val: val, left: fork(height+1, 2*val), right: fork(height+1, 2*val+1) }\n    else:\n      tree = MyTree/Leaf\n  return tree\n\n# returns the sum of [1 .. 2^16), truncated to 24 bits\ndef main() -> u24:\n  return sum(gen(16))"
  },
  {
    "path": "examples/queue.bend",
    "content": "# A cool trick involving unscoped lambdas\n# Implements constant-time queues with just lambdas\n\n# Qnew : Queue a\nQnew: _ = λx x\n\n# Qadd : a -> Queue a -> Queue a\nQadd: _ = λx λq λk (q λc (c x k))\n\n# Qrem : Queue a -> Pair a (Queue a)\nQrem = λq (q $k λx λxs λp(p x λ$k xs))\n\n# Output: [1, 2, 3]\nmain: (List u24) =\n  let q = Qnew\n  let q = (Qadd 1 q)\n  let q = (Qadd 2 q)\n  let q = (Qadd 3 q)\n  ((Qrem q) λv0 λq\n  ((Qrem q) λv1 λq\n  ((Qrem q) λv2 λq\n  [1, 2, 3])))\n"
  },
  {
    "path": "examples/quick_sort.bend",
    "content": "type MyTree t = Leaf | (Node ~(lft: (MyTree t)) (val: t) ~(rgt: (MyTree t)))\n\n# Parallel QuickSort\n(Sort) : (List u24) -> (MyTree u24)\n(Sort  List/Nil)             = MyTree/Leaf\n(Sort (List/Cons head tail)) =\n  let (min, max) = (Part head tail)\n  let lft = (Sort min)\n  let rgt = (Sort max)\n  (MyTree/Node lft head rgt)\n\n# Partitions a list in two halves, less-than-p and greater-than-p\n(Part) : u24 -> (List u24) -> ((List u24), (List u24))\n(Part p List/Nil)              = (List/Nil, List/Nil)\n(Part p (List/Cons head tail)) = (Push (> head p) head (Part p tail))\n\n# Pushes a value to the first or second list of a pair\n(Push) : u24 -> u24 -> ((List u24), (List u24)) -> ((List u24), (List u24))\n(Push 0 x (min, max)) = ((List/Cons x min), max)\n(Push _ x (min, max)) = (min, (List/Cons x max))\n\n# Generates a random list with xorshift\n(Rnd) : u24 -> (u24) -> (List u24)\n(Rnd 0 state) = List/Nil\n(Rnd n state) =\n  let state = (^ state (<< state 13))\n  let state = (^ state (>> state 17))\n  let state = (^ state (<< state 5))\n  (List/Cons state (Rnd (- n 1) state))\n\n# Sums all elements in a concatenation tree\n(Sum) : (MyTree u24) -> u24\n(Sum MyTree/Leaf)               = 0\n(Sum (MyTree/Node lft val rgt)) = (+ val (+ (Sum lft) (Sum rgt)))\n\n# Sorts and sums n random numbers\n(Main) : u24 =\n  (Sum (Sort (Rnd 0x100 1)))\n\n# Use an argument from cli\n# (Main n) = (Sum (Sort (Rnd (<< 1 n) 1)))\n"
  },
  {
    "path": "examples/radix_sort.bend",
    "content": "type MyMap:\n  Free\n  Used\n  Both { ~a: MyMap, ~b: MyMap }\n\ntype Arr(t):\n  Null\n  Leaf { a: t }\n  Node { ~a: Arr(t), ~b: Arr(t) }\n\ndef swap(s: u24, a: MyMap, b: MyMap) -> MyMap:\n  switch s:\n    case 0:\n      return MyMap/Both{ a: a, b: b }\n    case _:\n      return MyMap/Both{ a: b, b: a }\n \n\ndef sort(t: Arr(u24)) -> Arr(u24):\n  return to_arr(0, to_map(t))\n\ndef to_map(t: Arr(u24)) -> MyMap:\n  match t:\n    case Arr/Null:\n      return MyMap/Free\n    case Arr/Leaf:\n      return radix(t.a)\n    case Arr/Node:\n      return merge(to_map(t.a), to_map(t.b))\n\ndef to_arr(x: u24, m: MyMap) -> Arr(u24):\n  match m:\n    case MyMap/Free:\n      return Arr/Null\n    case MyMap/Used:\n      return Arr/Leaf{ a: x }\n    case MyMap/Both:\n      return Arr/Node{ a: to_arr(x * 2, m.a), b: to_arr(x * 2 + 1, m.b) }\n\ndef merge(a: MyMap, b: MyMap) -> MyMap:\n  match a:\n    case MyMap/Free:\n      return b\n    case MyMap/Used:\n      return MyMap/Used\n    case MyMap/Both:\n      match b:\n        case MyMap/Free:\n          return a\n        case MyMap/Used:\n          return MyMap/Used\n        case MyMap/Both:\n          return MyMap/Both{ a: merge(a.a, b.a), b: merge(a.b, b.b) }\n  \ndef radix(n: u24) -> MyMap:\n  r = MyMap/Used\n  r = swap(n & 1, r, MyMap/Free)\n  r = swap(n & 2, r, MyMap/Free)\n  r = swap(n & 4, r, MyMap/Free)\n  r = swap(n & 8, r, MyMap/Free)\n  r = swap(n & 16, r, MyMap/Free)\n  r = swap(n & 32, r, MyMap/Free)\n  r = swap(n & 64, r, MyMap/Free)\n  r = swap(n & 128, r, MyMap/Free)\n  r = swap(n & 256, r, MyMap/Free)\n  r = swap(n & 512, r, MyMap/Free)\n  return radix2(n, r)\n\n# At the moment, we need to manually break very large functions into smaller ones\n# if we want to run this program on the GPU.\n# In a future version of Bend, we will be able to do this automatically.\ndef radix2(n: u24, r: MyMap) -> MyMap:\n  r = swap(n & 1024, r, MyMap/Free)\n  r = swap(n & 2048, r, MyMap/Free)\n  r = swap(n & 4096, r, MyMap/Free)\n  r = swap(n & 8192, r, MyMap/Free)\n  r = swap(n & 16384, r, MyMap/Free)\n  r = swap(n & 32768, r, MyMap/Free)\n  r = swap(n & 65536, r, MyMap/Free)\n  r = swap(n & 131072, r, MyMap/Free)\n  r = swap(n & 262144, r, MyMap/Free)\n  r = swap(n & 524288, r, MyMap/Free)\n  return radix3(n, r)\n\ndef radix3(n: u24, r: MyMap) -> MyMap:\n  r = swap(n & 1048576, r, MyMap/Free)\n  r = swap(n & 2097152, r, MyMap/Free)\n  r = swap(n & 4194304, r, MyMap/Free)\n  r = swap(n & 8388608, r, MyMap/Free)\n  return r\n\ndef reverse(t: Arr(u24)) -> Arr(u24):\n  match t:\n    case Arr/Null:\n      return Arr/Null\n    case Arr/Leaf:\n      return t\n    case Arr/Node:\n      return Arr/Node{ a: reverse(t.b), b: reverse(t.a) }\n\ndef sum(t: Arr(u24)) -> u24:\n  match t:\n    case Arr/Null:\n      return 0\n    case Arr/Leaf:\n      return t.a\n    case Arr/Node:\n      return sum(t.a) + sum(t.b)\n\ndef gen(n: u24) -> Arr(u24):\n  return gen_go(n, 0)\n\ndef gen_go(n: u24, x: u24) -> Arr(u24):\n  switch n:\n    case 0:\n      return Arr/Leaf{ a: x }\n    case _:\n      a = x * 2\n      b = x * 2 + 1\n      return Arr/Node{ a: gen_go(n-1, a), b: gen_go(n-1, b) }\n\nMain: u24 = (sum (sort(reverse(gen 4))))\n"
  },
  {
    "path": "justfile",
    "content": "# To use this, first run `cargo install just`\n# Then run the install subcommand: `just install`\n# Running `just` is equivalent to running `just all` because it's the first command\n\nexport CARGO_TERM_COLOR := \"always\"\n\nall: rustup-show check fmt clippy test sort audit\n\nrustup-show:\n  rustup show\n\ncheck:\n  cargo check --all-targets\n\nfmt:\n  cargo fmt --all -- --check\n\nclippy:\n  cargo clippy --all-targets\n\ntest:\n  cargo insta test --workspace\n\nsort:\n  cargo sort --check --workspace\n\naudit:\n  cargo audit\n\ninstall:\n  cargo install --locked cargo-sort cargo-audit\n"
  },
  {
    "path": "src/diagnostics.rs",
    "content": "use TSPL::ParseError;\n\nuse crate::fun::{display::DisplayFn, Name, Source};\nuse std::{\n  collections::BTreeMap,\n  fmt::{Display, Formatter},\n  ops::Range,\n};\n\npub const ERR_INDENT_SIZE: usize = 2;\n\n#[derive(Debug, Clone, Default)]\npub struct Diagnostics {\n  pub diagnostics: BTreeMap<DiagnosticOrigin, Vec<Diagnostic>>,\n  pub config: DiagnosticsConfig,\n}\n\n#[derive(Debug, Clone, Copy)]\npub struct DiagnosticsConfig {\n  pub verbose: bool,\n  pub irrefutable_match: Severity,\n  pub redundant_match: Severity,\n  pub unreachable_match: Severity,\n  pub unused_definition: Severity,\n  pub repeated_bind: Severity,\n  pub recursion_cycle: Severity,\n  pub missing_main: Severity,\n  pub import_shadow: Severity,\n}\n\n#[derive(Debug, Clone)]\npub struct Diagnostic {\n  pub message: String,\n  pub severity: Severity,\n  pub source: Source,\n}\n\n#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]\npub enum DiagnosticOrigin {\n  /// An error when parsing source code.\n  Parsing,\n  /// An error from the relationship between multiple top-level definitions.\n  Book,\n  /// An error in a function definition.\n  Function(Name),\n  /// An error in a compiled inet.\n  Inet(String),\n  /// An error during readback of hvm-core run results.\n  Readback,\n}\n\n#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]\npub enum Severity {\n  Allow,\n  Warning,\n  Error,\n}\n\n#[derive(Debug, Clone, Copy)]\npub enum WarningType {\n  IrrefutableMatch,\n  RedundantMatch,\n  UnreachableMatch,\n  UnusedDefinition,\n  RepeatedBind,\n  RecursionCycle,\n  MissingMain,\n  ImportShadow,\n}\n\nimpl Diagnostics {\n  pub fn new(config: DiagnosticsConfig) -> Self {\n    Self { diagnostics: Default::default(), config }\n  }\n\n  pub fn add_parsing_error(&mut self, err: impl std::fmt::Display, source: Source) {\n    self.add_diagnostic(err, Severity::Error, DiagnosticOrigin::Parsing, source);\n  }\n\n  pub fn add_book_error(&mut self, err: impl std::fmt::Display) {\n    self.add_diagnostic(err, Severity::Error, DiagnosticOrigin::Book, Default::default());\n  }\n\n  pub fn add_function_error(&mut self, err: impl std::fmt::Display, name: Name, source: Source) {\n    self.add_diagnostic(\n      err,\n      Severity::Error,\n      DiagnosticOrigin::Function(name.def_name_from_generated()),\n      source,\n    );\n  }\n\n  pub fn add_inet_error(&mut self, err: impl std::fmt::Display, def_name: String) {\n    self.add_diagnostic(err, Severity::Error, DiagnosticOrigin::Inet(def_name), Default::default());\n  }\n\n  pub fn add_function_warning(\n    &mut self,\n    warn: impl std::fmt::Display,\n    warn_type: WarningType,\n    def_name: Name,\n    source: Source,\n  ) {\n    let severity = self.config.warning_severity(warn_type);\n    self.add_diagnostic(\n      warn,\n      severity,\n      DiagnosticOrigin::Function(def_name.def_name_from_generated()),\n      source,\n    );\n  }\n\n  pub fn add_book_warning(&mut self, warn: impl std::fmt::Display, warn_type: WarningType) {\n    let severity = self.config.warning_severity(warn_type);\n    self.add_diagnostic(warn, severity, DiagnosticOrigin::Book, Default::default());\n  }\n\n  pub fn add_diagnostic(\n    &mut self,\n    msg: impl std::fmt::Display,\n    severity: Severity,\n    orig: DiagnosticOrigin,\n    source: Source,\n  ) {\n    let diag = Diagnostic { message: msg.to_string(), severity, source };\n    self.diagnostics.entry(orig).or_default().push(diag)\n  }\n\n  pub fn take_rule_err<T, E: std::fmt::Display>(\n    &mut self,\n    result: Result<T, E>,\n    def_name: Name,\n  ) -> Option<T> {\n    match result {\n      Ok(t) => Some(t),\n      Err(e) => {\n        self.add_function_error(e, def_name, Default::default());\n        None\n      }\n    }\n  }\n\n  pub fn take_inet_err<T, E: std::fmt::Display>(\n    &mut self,\n    result: Result<T, E>,\n    def_name: String,\n  ) -> Option<T> {\n    match result {\n      Ok(t) => Some(t),\n      Err(e) => {\n        self.add_inet_error(e, def_name);\n        None\n      }\n    }\n  }\n\n  pub fn has_severity(&self, severity: Severity) -> bool {\n    self.diagnostics.values().any(|errs| errs.iter().any(|e| e.severity == severity))\n  }\n\n  pub fn has_errors(&self) -> bool {\n    self.has_severity(Severity::Error)\n  }\n\n  /// Checks if any error was emitted since the start of the pass,\n  /// Returning all the current information as a `Err(Info)`, replacing `&mut self` with an empty one.\n  /// Otherwise, returns the given arg as an `Ok(T)`.\n  pub fn fatal<T>(&mut self, t: T) -> Result<T, Diagnostics> {\n    if !self.has_errors() {\n      Ok(t)\n    } else {\n      Err(std::mem::take(self))\n    }\n  }\n\n  /// Returns a Display that prints the diagnostics with one of the given severities.\n  pub fn display_with_severity(&self, severity: Severity) -> impl std::fmt::Display + '_ {\n    DisplayFn(move |f| {\n      // We want to print diagnostics information somewhat like this:\n      // ```\n      // In file A :\n      // In definition X :\n      //   {error}\n      // In definition Y :\n      //   {error}\n      //\n      // In file B :\n      // In compiled Inet Z :\n      //   {error}\n      //\n      // Other diagnostics:\n      // In {...}\n      // ```\n      // The problem is, diagnostics data is currently structured as a mapping from something like\n      // DiagnosticOrigin to Vec<(DiagnosticMessage, DiagnosticFile)>, and we would need something\n      // like a mapping from DiagnosticFile to DiagnosticOrigin to Vec<DiagnosticMessage> in order\n      // to print it cleanly. We might want to change it later to have this structure,\n      // but meanwhile, we do the transformations below to make the goal possible.\n\n      // Ignore diagnostics without the desired severity.\n      let diagnostics = self\n        .diagnostics\n        .iter()\n        .map(|(origin, diags)| (origin, diags.iter().filter(|diag| diag.severity == severity)));\n\n      // Produce the structure described above.\n      let groups: BTreeMap<&Option<String>, BTreeMap<&DiagnosticOrigin, Vec<&Diagnostic>>> = diagnostics\n        .fold(BTreeMap::new(), |mut file_tree, (origin, diags)| {\n          for diag in diags {\n            // We need to allow this Clippy warning due to `Name` in `DiagnosticOrigin::Function`.\n            // We know how it works, so it shouldn't be a problem.\n            #[allow(clippy::mutable_key_type)]\n            let file_group_entry = file_tree.entry(&diag.source.file).or_default();\n            let origin_group_entry = file_group_entry.entry(origin).or_default();\n            origin_group_entry.push(diag);\n          }\n          file_tree\n        });\n      // Now, we have a mapping from DiagnosticFile to DiagnosticOrigin to Vec<DiagnosticMessage>.\n\n      // If the last file is `None`, it means we only have diagnostics with unknown source file.\n      // In this case, we won't print a special message for them.\n      let only_unknown_file_diagnostics = groups.keys().next_back() == Some(&&None);\n\n      // Reverse the group iterator so `None` files go last.\n      for (file, origin_to_diagnostics) in groups.iter().rev() {\n        if !only_unknown_file_diagnostics {\n          match &file {\n            Some(name) => writeln!(f, \"\\x1b[1mIn \\x1b[4m{}\\x1b[0m\\x1b[1m :\\x1b[0m\", name)?,\n            None => writeln!(f, \"\\x1b[1mOther diagnostics:\\x1b[0m\")?,\n          };\n        }\n\n        let mut has_msg = false;\n        for (origin, diagnostics) in origin_to_diagnostics {\n          let mut diagnostics = diagnostics.iter().peekable();\n          if diagnostics.peek().is_some() {\n            match origin {\n              DiagnosticOrigin::Parsing => {\n                for err in diagnostics {\n                  writeln!(f, \"{err}\")?;\n                }\n              }\n              DiagnosticOrigin::Book => {\n                for err in diagnostics {\n                  writeln!(f, \"{err}\")?;\n                }\n              }\n              DiagnosticOrigin::Function(nam) => {\n                writeln!(f, \"\\x1b[1mIn definition '\\x1b[4m{}\\x1b[0m\\x1b[1m':\\x1b[0m\", nam)?;\n                for err in diagnostics {\n                  writeln!(f, \"{:ERR_INDENT_SIZE$}{err}\", \"\")?;\n                }\n              }\n              DiagnosticOrigin::Inet(nam) => {\n                writeln!(f, \"\\x1b[1mIn compiled inet '\\x1b[4m{}\\x1b[0m\\x1b[1m':\\x1b[0m\", nam)?;\n                for err in diagnostics {\n                  writeln!(f, \"{:ERR_INDENT_SIZE$}{err}\", \"\")?;\n                }\n              }\n              DiagnosticOrigin::Readback => {\n                writeln!(f, \"\\x1b[1mDuring readback:\\x1b[0m\")?;\n                for err in diagnostics {\n                  writeln!(f, \"{:ERR_INDENT_SIZE$}{err}\", \"\")?;\n                }\n              }\n            }\n            has_msg = true;\n          }\n        }\n        if has_msg {\n          writeln!(f)?;\n        }\n      }\n      Ok(())\n    })\n  }\n\n  pub fn display_only_messages(&self) -> impl std::fmt::Display + '_ {\n    DisplayFn(move |f| {\n      for err in self.diagnostics.values().flatten() {\n        writeln!(f, \"{err}\")?;\n      }\n      Ok(())\n    })\n  }\n}\n\nimpl Display for Diagnostics {\n  fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {\n    if self.has_severity(Severity::Warning) {\n      write!(f, \"\\x1b[4m\\x1b[1m\\x1b[33mWarnings:\\x1b[0m\\n{}\", self.display_with_severity(Severity::Warning))?;\n    }\n    if self.has_severity(Severity::Error) {\n      write!(f, \"\\x1b[4m\\x1b[1m\\x1b[31mErrors:\\x1b[0m\\n{}\", self.display_with_severity(Severity::Error))?;\n    }\n    Ok(())\n  }\n}\n\nimpl From<String> for Diagnostics {\n  fn from(value: String) -> Self {\n    Self {\n      diagnostics: BTreeMap::from_iter([(\n        DiagnosticOrigin::Book,\n        vec![Diagnostic { message: value, severity: Severity::Error, source: Default::default() }],\n      )]),\n      ..Default::default()\n    }\n  }\n}\n\nimpl From<ParseError> for Diagnostics {\n  /// Transforms a parse error into `Diagnostics`.\n  ///\n  /// NOTE: Since `ParseError` does not include the source code, we can't get the `TextLocation` of the error,\n  /// so it is not included in the diagnostic.\n  /// range is set as None.\n  fn from(value: ParseError) -> Self {\n    Self {\n      diagnostics: BTreeMap::from_iter([(\n        DiagnosticOrigin::Parsing,\n        vec![Diagnostic { message: value.into(), severity: Severity::Error, source: Default::default() }],\n      )]),\n      ..Default::default()\n    }\n  }\n}\n\nimpl DiagnosticsConfig {\n  pub fn new(severity: Severity, verbose: bool) -> Self {\n    Self {\n      irrefutable_match: severity,\n      redundant_match: severity,\n      unreachable_match: severity,\n      unused_definition: severity,\n      repeated_bind: severity,\n      recursion_cycle: severity,\n      import_shadow: severity,\n      // Should only be changed manually, as a missing main is always a error to hvm\n      missing_main: Severity::Error,\n      verbose,\n    }\n  }\n\n  pub fn warning_severity(&self, warn: WarningType) -> Severity {\n    match warn {\n      WarningType::UnusedDefinition => self.unused_definition,\n      WarningType::RepeatedBind => self.repeated_bind,\n      WarningType::RecursionCycle => self.recursion_cycle,\n      WarningType::IrrefutableMatch => self.irrefutable_match,\n      WarningType::RedundantMatch => self.redundant_match,\n      WarningType::UnreachableMatch => self.unreachable_match,\n      WarningType::MissingMain => self.missing_main,\n      WarningType::ImportShadow => self.import_shadow,\n    }\n  }\n}\n\nimpl Default for DiagnosticsConfig {\n  fn default() -> Self {\n    let mut cfg = Self::new(Severity::Warning, false);\n    cfg.recursion_cycle = Severity::Error;\n    cfg\n  }\n}\n\nimpl Display for Diagnostic {\n  fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {\n    write!(f, \"{}\", self.message)\n  }\n}\n\nimpl Diagnostic {\n  pub fn display_with_origin<'a>(&'a self, origin: &'a DiagnosticOrigin) -> impl std::fmt::Display + 'a {\n    DisplayFn(move |f| {\n      match origin {\n        DiagnosticOrigin::Parsing => writeln!(f, \"{self}\")?,\n        DiagnosticOrigin::Book => writeln!(f, \"{self}\")?,\n        DiagnosticOrigin::Function(nam) => {\n          writeln!(f, \"\\x1b[1mIn definition '\\x1b[4m{}\\x1b[0m\\x1b[1m':\\x1b[0m\", nam)?;\n          writeln!(f, \"{:ERR_INDENT_SIZE$}{self}\", \"\")?;\n        }\n        DiagnosticOrigin::Inet(nam) => {\n          writeln!(f, \"\\x1b[1mIn compiled inet '\\x1b[4m{}\\x1b[0m\\x1b[1m':\\x1b[0m\", nam)?;\n          writeln!(f, \"{:ERR_INDENT_SIZE$}{self}\", \"\")?;\n        }\n        DiagnosticOrigin::Readback => {\n          writeln!(f, \"\\x1b[1mDuring readback:\\x1b[0m\")?;\n          writeln!(f, \"{:ERR_INDENT_SIZE$}{self}\", \"\")?;\n        }\n      };\n      Ok(())\n    })\n  }\n}\n\n#[derive(Debug, Copy, Clone, Hash, PartialEq, PartialOrd, Ord, Eq)]\npub struct TextLocation {\n  pub line: usize,\n  pub char: usize,\n}\n\nimpl TextLocation {\n  pub fn new(line: usize, char: usize) -> Self {\n    TextLocation { line, char }\n  }\n\n  /// Transforms a `usize` byte index on `code` into a `TextLocation`.\n  pub fn from_byte_loc(code: &str, loc: usize) -> Self {\n    let code = code.as_bytes();\n    let mut line = 0;\n    let mut char = 0;\n    let mut cur_idx = 0;\n    while cur_idx < loc && cur_idx < code.len() {\n      if code[cur_idx] == b'\\n' {\n        line += 1;\n        char = 0;\n      } else {\n        char += 1;\n      }\n      cur_idx += 1;\n    }\n\n    TextLocation { line, char }\n  }\n}\n\n#[derive(Debug, Copy, Clone, Hash, PartialEq, PartialOrd, Ord, Eq)]\npub struct TextSpan {\n  pub start: TextLocation,\n  pub end: TextLocation,\n}\n\nimpl TextSpan {\n  pub fn new(start: TextLocation, end: TextLocation) -> Self {\n    TextSpan { start, end }\n  }\n\n  /// Transforms a `usize` byte range on `code` into a `TextLocation`.\n  pub fn from_byte_span(code: &str, span: Range<usize>) -> Self {\n    // Will loop for way too long otherwise\n    assert!(span.start <= span.end);\n\n    let code = code.as_bytes();\n    let mut start_line = 0;\n    let mut start_char = 0;\n    let mut end_line;\n    let mut end_char;\n\n    let mut cur_idx = 0;\n    while cur_idx < span.start && cur_idx < code.len() {\n      if code[cur_idx] == b'\\n' {\n        start_line += 1;\n        start_char = 0;\n      } else {\n        start_char += 1;\n      }\n      cur_idx += 1;\n    }\n\n    end_line = start_line;\n    end_char = start_char;\n    while cur_idx < span.end && cur_idx < code.len() {\n      if code[cur_idx] == b'\\n' {\n        end_line += 1;\n        end_char = 0;\n      } else {\n        end_char += 1;\n      }\n      cur_idx += 1;\n    }\n\n    TextSpan::new(TextLocation::new(start_line, start_char), TextLocation::new(end_line, end_char))\n  }\n}\n"
  },
  {
    "path": "src/fun/builtins.bend",
    "content": "type String:\n  Nil\n  Cons { head: u24, ~tail: String }\n\ntype List(T):\n  Nil\n  Cons { head: T, ~tail: List(T) }\n\n#{ Returns a tuple containing the length and the list itself. #}\ndef List/length(xs: List(T)) -> (u24, List(T)):\n  fold xs with len=0, acc=DiffList/new:\n    case List/Nil:\n      return (len, DiffList/to_list(acc))\n    case List/Cons:\n      return xs.tail(len + 1, DiffList/append(acc, xs.head))\n\n#{ Reverses the elements of a list. #}\ndef List/reverse(xs: List(T)) -> List(T):\n  fold xs with acc=[]:\n    case List/Nil:\n      return acc\n    case List/Cons:\n      return xs.tail(List/Cons(xs.head, acc))\n\n#{ Returns a flattened list from a list of lists. #}\nList/flatten (xs: (List (List T))) : (List T)\nList/flatten (List/Cons x xs) = (List/concat x (List/flatten xs))\nList/flatten (List/Nil)       = (List/Nil)\n\n#{ Appends two lists together. #}\nList/concat(xs: (List T)) (ys: (List T)) : (List T)\nList/concat (List/Cons x xs) ys = (List/Cons x (List/concat xs ys))\nList/concat (List/Nil)       ys = ys\n\n#{\n  Splits a list into two lists at the first occurrence of a value.\n#}\ndef List/split_once(\n  xs: List(T),\n  cond: T -> u24\n) -> (Result((List(T), List(T)), List(T))):\n  return List/split_once.go(xs, cond, DiffList/new)\n\ndef List/split_once.go(\n  xs: List(T),\n  cond: T -> u24,\n  acc: List(T) -> List(T)\n) -> Result((List(T), List(T)), List(T)):\n  match xs:\n    case List/Nil:\n      return Result/Err(DiffList/to_list(acc))\n    case List/Cons:\n      if cond(xs.head):\n        return Result/Ok((DiffList/to_list(acc), xs.tail))\n      else:\n        return List/split_once.go(xs.tail, cond, DiffList/append(acc, xs.head))\n\n#{ Filters a list based on a predicate function. #}\nList/filter (xs: (List T)) (pred: T -> u24) : (List T)\nList/filter (List/Nil)       _    = List/Nil\nList/filter (List/Cons x xs) pred =\n  if (pred x) {\n    (List/Cons x (List/filter xs pred))\n  } else {\n    (List/filter xs pred)\n  }\n\n#{ Checks if two strings are equal. #}\nString/equals (s1: String) (s2: String) : u24\nString/equals (String/Nil) (String/Nil) = 1\nString/equals (String/Cons x xs) (String/Cons y ys) =\n  if (== x y) {\n    (String/equals xs ys)\n  } else {\n    0\n  }\nString/equals * * = 0\n\n#{ Splits a string into a list of strings based on the given delimiter. #}\nString/split (s: String) (delimiter: u24) : (List String)\nString/split s delim = (String/split.go s delim [\"\"])\n\nString/split.go (cs: String) (delim: u24) (acc: (List String)) : (List String)\nString/split.go (String/Nil) _ acc = (List/reverse acc)\nString/split.go (String/Cons c cs) delim acc =\n  if (== c delim) {\n  # Start a new split string.\n    (String/split.go cs delim (List/Cons String/Nil acc))\n  } else {\n    match acc {\n  # Add the current character to the current split string.\n      List/Cons: (String/split.go cs delim (List/Cons (String/Cons c acc.head) acc.tail))\n  # Should be unreachable.\n      List/Nil: []\n    }\n  }\n\n#{ Create a new difference list #}\ndef DiffList/new() -> (List(T) -> List(T)):\n  return lambda x: x\n\n#{ Creates a new difference list with just the given value. #}\ndef DiffList/wrap(head: T) -> (List(T) -> List(T)):\n  return lambda tail: List/Cons(head, tail)\n\n#{ Append a value to the end of the difference list #}\ndef DiffList/append(diff: List(T) -> List(T), val: T) -> (List(T) -> List(T)):\n  return lambda x: diff(List/Cons(val, x))\n\n#{ Concatenates two difference lists. #}\ndef DiffList/concat(\n  left: List(T) -> List(T),\n  right: List(T) -> List(T)\n) -> (List(T) -> List(T)):\n  return lambda x: left(right(x))\n\n#{ Append a value to the beginning of the difference list #}\ndef DiffList/cons(diff: List(T) -> List(T), val: T) -> (List(T) -> List(T)):\n  return lambda x: List/Cons(val, diff(x))\n\n#{ Converts a difference list to a regular cons list. #}\ndef DiffList/to_list(diff: List(T) -> List(T)) -> (List(T)):\n  return diff(List/Nil)\n\ntype Nat = (Succ ~(pred: Nat)) | (Zero)\n\ntype (Result o e) = (Ok (val: o)) | (Err (val: e))\n\n#{\nReturns the inner value of `Result/Ok` or `Result/Err`.\n\nIf the types `A` and `B` are different, should only be used in type unsafe programs or when only one variant is guaranteed to happen.\n#}\ndef Result/unwrap(res: Result(T, E)) -> Any:\n  match res:\n    case Result/Ok:\n      return res.val\n    case Result/Err:\n      return res.val\n\n#{\n  Returns the second result if the first one is `Ok`.\n  Otherwise, returns the `Err` of the first result.\n#}\ndef Result/and(fst: Result(A, E), snd: Result(B, E)) -> Result(B, E):\n  match fst:\n    case Result/Ok:\n      return snd\n    case Result/Err:\n      return fst\n\n#{ Maps the error value of a result. #}\ndef Result/map_err(res: Result(T, E), f: E -> F) -> Result(T, F):\n  match res:\n    case Result/Ok:\n      return Result/Ok(res.val)\n    case Result/Err:\n      return Result/Err(f(res.val))\n\ntype Tree(T):\n  Node { ~left: Tree(T), ~right: Tree(T) }\n  Leaf { value: T }\n\n#{ Returns a List converted from a Tree. #}\ndef Tree/to_list(tree: Tree(T)) -> List(T):\n  fold tree:\n    case Tree/Leaf:\n      list = DiffList/wrap(tree.value)\n    case Tree/Node:\n      list = DiffList/concat(tree.left, tree.right)\n  return DiffList/to_list(list)\n\n#{ Reverses a tree swapping right and left leaves. #}\ndef Tree/reverse(tree: Tree(T)) -> Tree(T):\n  fold tree:\n    case Tree/Leaf:\n      return !tree.value\n    case Tree/Node:\n      return ![tree.right, tree.left]\n\n# MAYBE Impl \n\ntype Maybe(T):\n  Some { value: T }\n  None \n\n#{ Returns the value inside the `Maybe` if it is `Some`, and returns `unreachable()` if it is `None`. #}  \ndef Maybe/unwrap(m: Maybe(T)) -> T:\n  match m:\n    case Maybe/Some:\n      return m.value\n    case Maybe/None:\n      return unreachable()\n\n# MAP Impl\n\ntype Map(T):\n  Node { value: Maybe(T), ~left: Map(T), ~right: Map(T) }\n  Leaf  \n\n#{ Initializes an empty map. #}\ndef Map/empty() -> Map(T):\n  return Map/Leaf\n\n#{\n  Retrieves a `value` from the `map` based on the `key` and returns a tuple with the value and the `map` unchanged. \n  The logic for checking whether a value is or not contained in a `map` is not done in the `get` function, so if \n  we try to get a key that is not in the map, the program will return `unreachable`. \n#}\ndef Map/get (map: Map(T), key: u24) -> (T, Map(T)):\n  match map:\n    case Map/Leaf:\n      return (unreachable(), map)\n    case Map/Node:\n      if (0 == key):\n        return (Maybe/unwrap(map.value), map)\n      elif (key % 2 == 0):\n        (got, rest) = Map/get(map.left, (key / 2))\n        return(got, Map/Node(map.value, rest, map.right))\n      else:\n        (got, rest) = Map/get(map.right, (key / 2))\n        return(got, Map/Node(map.value, map.left, rest))\n\n\n#{ Checks if a node has a value on a given key, returning Maybe/Some if it does, Maybe/None otherwise #}\ndef Map/get_check (map: Map(T), key: u24) -> (Maybe(T), Map(T)):\n  match map:\n    case Map/Leaf:\n      return (Maybe/None, map)\n    case Map/Node:\n      if (0 == key):\n        return (map.value, map)\n      elif (key % 2 == 0):\n        (new_value, new_map) = Map/get_check(map.left, (key / 2))\n        return (new_value, Map/Node(map.value, new_map, map.right))\n      else:\n        (new_value, new_map) = Map/get_check(map.right, (key / 2))\n        return (new_value, Map/Node(map.value, map.left, new_map))\n\n#{ Sets a value on a Map, returning the map with the value mapped. #}\ndef Map/set (map: Map(T), key: u24, value: T) -> Map(T):\n  match map:\n    case Map/Node:\n      if (0 == key):\n        return Map/Node(Maybe/Some(value), map.left, map.right)\n      elif ((key % 2) == 0):\n        return Map/Node(map.value, Map/set(map.left, (key / 2), value), map.right)\n      else:\n        return Map/Node(map.value, map.left, Map/set(map.right, (key / 2), value))\n    case Map/Leaf:\n      if (0 == key):\n        return Map/Node(Maybe/Some(value), Map/Leaf, Map/Leaf)\n      elif ((key % 2) == 0):\n        return Map/Node(Maybe/None, Map/set(Map/Leaf, (key / 2), value), Map/Leaf)\n      else:\n        return Map/Node(Maybe/None, Map/Leaf, Map/set(Map/Leaf, (key / 2),value))\n\n\n#{ Checks if a `map` contains a given `key` and returns 0 or 1 along with and  `map` unchanged. #}\ndef Map/contains (map: Map(T), key: u24) -> (u24, Map(T)):\n  match map:\n    case Map/Leaf:\n      return (0, map)\n    case Map/Node:\n      if (0 == key):\n        match map.value:\n          case Maybe/Some:\n            return (1, map)\n          case Maybe/None:\n            return (0, map)\n      elif ((key % 2) == 0):\n        (new_value, new_map) = Map/contains(map.left, (key / 2))\n        return (new_value, Map/Node(map.value, new_map, map.right))\n      else:\n        (new_value, new_map) = Map/contains(map.right, (key / 2))\n        return (new_value, Map/Node(map.value, map.left, new_map))\n\n#{ Applies a function to a value in the map and returns the map with the value mapped. #}\ndef Map/map (map: Map(T), key: u24, f: T -> T) -> Map(T):\n  match map:\n    case Map/Leaf:\n      return Map/Leaf\n    case Map/Node:\n      if (0 == key):\n        return Map/Node(Maybe/Some(f(Maybe/unwrap(map.value))), map.left, map.right)\n      elif ((key % 2) == 0):\n        return Map/Node(map.value, Map/map(map.left, (key / 2), f), map.right)\n      else:\n        return Map/Node(map.value, map.left, Map/map(map.right, (key / 2), f))\n\n# IO Impl\n\ntype IO(T):\n  Done { magic: (u24, u24), expr: T }\n  Call { magic: (u24, u24), func: String, argm: Any, cont: Result(Any, IOError(Any)) -> IO(T) }\n\ntype IOError(T):\n  Type\n  Name\n  Inner { value: T }\n\ndef IOError/unwrap_inner(err: IOError(T)) -> T:\n  match err:\n    case IOError/Type:\n      return unreachable()\n    case IOError/Name:\n      return unreachable()\n    case IOError/Inner:\n      return err.value\n\ndef IO/MAGIC() -> (u24, u24):\n  return (0xD0CA11, 0xFF1FF1)\n\ndef IO/wrap(x: T) -> IO(T):\n  return IO/Done(IO/MAGIC, x)\n\ndef IO/bind(a: IO(A), b: ((Id -> Id) -> A -> IO(B))) -> IO(B):\n  match a:\n    case IO/Done:\n      return undefer(b, a.expr)\n    case IO/Call:\n      return IO/Call(a.magic, a.func, a.argm, lambda x: IO/bind(a.cont(x), b))\n\n#{\n  Calls an IO by its name with the given arguments.\n  \n  The arguments are untyped and not checked for type correctness.\n  If type safety is desired, this function should be wrapped with\n  another that checks the types of the arguments and of the return.\n  \n  Always returns a `Result` where the error is an `IOError`, a type\n  that either contains an internal error of the IO function, like an\n  `errno` in the case of FS functions, or a general Bend IO error,\n  like a type error if the arguments are invalid or a name error if\n  the called IO is not found.\n#}\ndef IO/call(func: String, argm: Any) -> IO(Result(Any, IOError(Any))):\n  return IO/Call(IO/MAGIC, func, argm, lambda x: IO/Done(IO/MAGIC, x))\n\n#{ Maps the result of an IO. #}\ndef IO/map(io: IO(A), f: A -> B) -> IO(B):\n  with IO:\n    a <- io\n    return wrap(f(a))\n\n#{\n  Unwraps the `IOError` of the result of an IO, returning the `Inner` variant.\n  \n  Should only be called if the other `IOError` variants are unreachable.\n#}\ndef IO/unwrap_inner(io: IO(Result(A, IOError(B)))) -> IO(Result(A, B)):\n  with IO:\n    res <- io\n    match res:\n      case Result/Ok:\n        return wrap(Result/Ok(res.val))\n      case Result/Err:\n        return wrap(Result/Err(IOError/unwrap_inner(res.val)))\n\n## Time and sleep\n\n#{\n  Returns a monotonically increasing nanosecond timestamp as an u48\n  encoded as a pair of u24s.\n#}\ndef IO/get_time() -> IO((u24, u24)):\n  with IO:\n    res <- IO/call(\"GET_TIME\", *)\n    return wrap(Result/unwrap(res))\n\n#{ Sleeps for the given number of nanoseconds, given by an u48 encoded as a pair of u24s. #}\ndef IO/nanosleep(hi_lo: (u24, u24)) -> IO(None):\n  with IO:\n    res <- IO/call(\"SLEEP\", hi_lo)\n    return wrap(Result/unwrap(res))\n\n#{ Sleeps for a given amount of seconds as a float. #}\ndef IO/sleep(seconds: f24) -> IO(None):\n  nanos = seconds * 1_000_000_000.0\n  lo = f24/to_u24(nanos % 0x1_000_000.0)\n  hi = f24/to_u24(nanos / 0x1_000_000.0)\n  return IO/nanosleep((hi, lo))\n\n## File IO\n\n### File IO primitives\n\n#{ \n  Opens a file with with `path` being given as a string and `mode` being a string with the mode to open the file in. \n  The mode should be one of the following: \n  \"r\": Read mode\n  \"w\": Write mode (write at the beginning of the file, overwriting any existing content)\n  \"a\": Append mode (write at the end of the file)\n  \"r+\": Read and write mode\n  \"w+\": Read and write mode\n  \"a+\": Read and append mode\n#}\ndef IO/FS/open(path: String, mode: String) -> IO(Result(u24, u24)):\n  return IO/unwrap_inner(IO/call(\"OPEN\", (path, mode)))\n\n#{ Closes the file with the given `file` descriptor. #}\ndef IO/FS/close(file: u24) -> IO(Result(None, u24)):\n  return IO/unwrap_inner(IO/call(\"CLOSE\", file))\n\n#{\nReads `num_bytes` bytes from the file with the given `file` descriptor.\nReturns a list of U24 with each element representing a byte read from the file.\n#}\ndef IO/FS/read(file: u24, num_bytes: u24) -> IO(Result(List(u24), u24)):\n  return IO/unwrap_inner(IO/call(\"READ\", (file, num_bytes)))\n\n#{\n  Writes `bytes`, a list of U24 with each element representing a byte, to the file with the given `file` descriptor.\n  Returns nothing (`*`).\n#}\ndef IO/FS/write(file: u24, bytes: List(u24)) -> IO(Result(None, u24)):\n  return IO/unwrap_inner(IO/call(\"WRITE\", (file, bytes)))\n\n#{ Moves the current position of the file with the given `file` descriptor to the given `offset`, an I24 or U24 number, in bytes. #}\ndef IO/FS/seek(file: u24, offset: i24, mode: i24) -> IO(Result(None, u24)):\n  return IO/unwrap_inner(IO/call(\"SEEK\", (file, (offset, mode))))\n\n#{\n  Flushes the file with the given `file` descriptor.\n  Returns nothing (`*`).\n#}\ndef IO/FS/flush(file: u24) -> IO(Result(None, u24)):\n  return IO/unwrap_inner(IO/call(\"FLUSH\", file))\n\n### Always available files\nIO/FS/STDIN : u24 = 0\nIO/FS/STDOUT : u24 = 1\nIO/FS/STDERR : u24 = 2\n\n### Seek modes\n#{ Seek from start of file. #}\nIO/FS/SEEK_SET : i24 = +0\n#{ Seek from current position. #}\nIO/FS/SEEK_CUR : i24 = +1\n#{ Seek from end of file. #}\nIO/FS/SEEK_END : i24 = +2\n\n### File utilities\n\n#{\n  Reads an entire file with the given `path` and returns a list of U24 with each \n  element representing a byte read from the file.\n#}\ndef IO/FS/read_file(path: String) -> IO(Result(List(u24), u24)):\n  with IO:\n    res_fd <- IO/FS/open(path, \"r\")\n    match res_fd:\n      case Result/Ok:\n        fd = res_fd.val\n        res1 <- IO/FS/read_to_end(fd)\n        res2 <- IO/FS/close(fd)\n        return wrap(Result/and(res2, res1))\n      case Result/Err:\n        return wrap(Result/Err(res_fd.val))\n\n#{\n  Reads until the end of the file with the given `file` descriptor.\n  Returns a list of U24 with each element representing a byte read from the file.\n#}\ndef IO/FS/read_to_end(fd: u24) -> IO(Result(List(u24), u24)):\n  return IO/FS/read_to_end.read_chunks(fd, [])\n\ndef IO/FS/read_to_end.read_chunks(fd: u24, chunks: List(List(u24))) -> IO(Result(List(u24), u24)):\n  with IO:\n    # Read file in 1MB chunks\n    res_chunk <- IO/FS/read(fd, 1048576)\n    match res_chunk:\n      case Result/Ok:\n        chunk = res_chunk.val\n        match chunk:\n          case List/Nil:\n            return wrap(Result/Ok(List/flatten(chunks)))\n          case List/Cons:\n            return IO/FS/read_to_end.read_chunks(fd, List/Cons(chunk, chunks))\n      case Result/Err:\n        return wrap(Result/Err(res_chunk.val))\n\n#{\n  Reads a line from the file with the given `file` descriptor.\n  Returns a list of U24 with each element representing a byte read from the file.\n#}\ndef IO/FS/read_line(fd: u24) -> IO(Result(List(u24), u24)):\n  return IO/FS/read_line.read_chunks(fd, [])\n\ndef IO/FS/read_line.read_chunks(fd: u24, chunks: List(List(u24))) -> IO(Result(List(u24), u24)):\n  with IO:\n    # Read line in 1kB chunks\n    res_chunk <- IO/FS/read(fd, 1024)\n    match res_chunk:\n      case Result/Ok:\n        chunk = res_chunk.val\n        match res = List/split_once(chunk, lambda x: x == '\\n'):\n          # Found a newline, backtrack and join chunks\n          case Result/Ok:\n            (line, rest) = res.val\n            (length, *) = List/length(rest)\n            res_seek <- IO/FS/seek(fd, u24/to_i24(length) * -1, IO/FS/SEEK_CUR)\n            match res_seek:\n              case Result/Ok:\n                chunks = List/Cons(line, chunks)\n                bytes = List/flatten(chunks)\n                return wrap(Result/Ok(bytes))\n              case Result/Err:\n                return wrap(Result/Err(res_seek.val))\n          # Newline not found\n          case Result/Err:\n            line = res.val\n            (length, line) = List/length(line)\n            # If length is 0, the end of the file was reached, return as if it was a newline\n            if length == 0:\n              bytes = List/flatten(chunks)\n              return wrap(Result/Ok(bytes))\n            # Otherwise, the line is still ongoing, read more chunks\n            else:\n              chunks = List/Cons(line, chunks)\n              return IO/FS/read_line.read_chunks(fd, chunks)\n      case Result/Err:\n        return wrap(Result/Err(res_chunk.val))\n\n#{ Writes `bytes`, a list of U24 with each element representing a byte, as the entire content of the file with the given `path`. #}\ndef IO/FS/write_file(path: String, bytes: List(u24)) -> IO(Result(None, u24)):\n  with IO:\n    res_f <- IO/FS/open(path, \"w\")\n    match res_f:\n      case Result/Ok:\n        f = res_f.val\n        res1 <- IO/FS/write(f, bytes)\n        res2 <- IO/FS/close(f)\n        return wrap(Result/and(res2, res1))\n      case Result/Err:\n        return wrap(Result/Err(res_f.val))\n\n### Standard input and output utilities\n\n#{ Prints the string `text` to the standard output, encoded with utf-8. #}\ndef IO/print(text: String) -> IO(None):\n  with IO:\n    res <- IO/FS/write(IO/FS/STDOUT, String/encode_utf8(text))\n    return wrap(Result/unwrap(res))\n\n#{\n  IO/input() -> IO String\n  Reads characters from the standard input until a newline is found.\n  Returns the read input as a String decoded with utf-8.\n#}\ndef IO/input() -> IO(Result(String, u24)):\n  return IO/input.go(DiffList/new)\n\ndef IO/input.go(acc: List(u24) -> List(u24)) -> IO(Result(String, u24)):\n  # TODO: This is slow and inefficient, should be done in hvm using fgets.\n  with IO:\n    res_byte <- IO/FS/read(IO/FS/STDIN, 1)\n    match res_byte:\n      case Result/Ok:\n        byte = res_byte.val\n        match byte:\n          case List/Nil:\n            # Nothing read, try again (to simulate blocking a read)\n            return IO/input.go(acc)\n          case List/Cons:\n            if byte.head == '\\n':\n              bytes = DiffList/to_list(acc)\n              text = String/decode_utf8(bytes)\n              return wrap(Result/Ok(text))\n            else:\n              acc = DiffList/append(acc, byte.head)\n              return IO/input.go(acc)\n      case Result/Err:\n        return wrap(Result/Err(res_byte.val))\n\n### Dynamically linked libraries\n\n#{\n  Loads a dynamic library file.\n#}\ndef IO/DyLib/open(path: String, lazy: u24) -> IO(Result(u24, String)):\n  return IO/unwrap_inner(IO/call(\"DL_OPEN\", (path, lazy)))\n#{\n  - `path` is the path to the library file.\n  - `lazy` is a boolean encoded as a `u24` that determines if all functions are loaded lazily (`1`) or upfront (`0`).\n  - Returns an unique id to the library object encoded as a `u24`.\n#}\n\n#{\n  Calls a function of a previously opened library.\n  - `dl` is the id of the library object.\n  - `fn` is the name of the function in the library.\n  - `args` are the arguments to the function. The expected values depend on the called function.\n  - The returned value is determined by the called function.\n#}\ndef IO/DyLib/call(dl: u24, fn: String, args: Any) -> IO(Result(Any, String)):\n  return IO/unwrap_inner(IO/call(\"DL_CALL\", (dl, (fn, args))))\n\n#{\n  Closes a previously open library.\n  - `dl` is the id of the library object.\n  - Returns nothing (`*`).\n#}\ndef IO/DyLib/close(dl: u24) -> IO(Result(None, String)):\n  return IO/unwrap_inner(IO/call(\"DL_CLOSE\", dl))\n\n# Lazy thunks\n\n#{\n  We can defer the evaluation of a function by wrapping it in a thunk.\n  Ex: @x (x @arg1 @arg2 @arg3 (f arg1 arg2 arg3) arg1 arg2 arg3)\n  \n  This is only evaluated when we call it with `(undefer my_thunk)`.\n  We can build a defered call directly or by by using `defer` and `defer_arg`.\n  \n  The example above can be written as:\n  \n  (defer_arg (defer_arg (defer_arg (defer @arg1 @arg2 @arg3 (f arg1 arg2 arg3)) arg1) arg2) arg3)\n#}\ndef defer(val: T) -> (T -> T) -> T:\n  return lambda x: x(val)\n\ndef defer_arg(defered: (Id -> Id) -> A -> B, arg: A) -> ((Id -> Id) -> B):\n  return lambda x: defered(x, arg)\n\ndef undefer(defered: (Id -> Id) -> T) -> T:\n  return defered(lambda x: x)\n\n#{\n  A function that can be used in unreachable code.\n  \n  Is not type safe and if used in code that is actually reachable, will corrupt the program.\n#}\ndef unreachable() -> Any:\n  return *\n\n# Native number casts\n\n#{ Casts a f24 number to a u24. #}\nhvm f24/to_u24 -> (f24 -> u24):\n  ($([u24] ret) ret)\n\n#{ Casts an i24 number to a u24. #}\nhvm i24/to_u24 -> (i24 -> u24):\n  ($([u24] ret) ret)\n\n#{ Casts a u24 number to an i24. #}\nhvm u24/to_i24 -> (u24 -> i24):\n  ($([i24] ret) ret)\n\n#{ Casts a f24 number to an i24. #}\nhvm f24/to_i24 -> (f24 -> i24):\n  ($([i24] ret) ret)\n\n#{ Casts a u24 number to a f24. #}\nhvm u24/to_f24 -> (u24 -> f24):\n  ($([f24] ret) ret)\n\n#{ Casts an i24 number to a f24. #}\nhvm i24/to_f24 -> (i24 -> f24):\n  ($([f24] ret) ret)\n\n#{ Casts an u24 native number to a string. #}\ndef u24/to_string(n: u24) -> String:\n  def go(n: u24) -> String -> String:\n    r = n % 10\n    d = n / 10\n    c = '0' + r\n    if d == 0:\n      return lambda t: String/Cons(c, t)\n    else:\n      return lambda t: go(d, String/Cons(c, t))\n  return go(n, String/Nil)\n\n#{ String Encoding and Decoding #}\n\nUtf8/REPLACEMENT_CHARACTER : u24 = '\\u{FFFD}'\n\n#{ Decodes a sequence of bytes to a String using utf-8 encoding. #}\nString/decode_utf8 (bytes: (List u24)) : String\nString/decode_utf8 [] = String/Nil\nString/decode_utf8 bytes =\n  let (got, rest) = (Utf8/decode_character bytes)\n  match rest {\n    List/Nil: (String/Cons got String/Nil)\n    List/Cons: (String/Cons got (String/decode_utf8 rest))\n  }\n\n#{ Decodes a utf-8 character, returns a tuple containing the rune and the rest of the byte sequence. #}\nUtf8/decode_character (bytes: (List u24)) : (u24, (List u24))\nUtf8/decode_character [] = (0, [])\nUtf8/decode_character [a] = if (<= a 0x7F) { (a, []) } else { (Utf8/REPLACEMENT_CHARACTER, []) }\nUtf8/decode_character [a, b] =\n  use Utf8/maskx = 0b00111111\n  use Utf8/mask2 = 0b00011111\n  if (<= a 0x7F) {\n    (a, [b])\n  } else {\n    if (== (& a 0xE0) 0xC0) {\n      let r = (| (<< (& a Utf8/mask2) 6) (& b Utf8/maskx))\n      (r, [])\n    } else {\n      (Utf8/REPLACEMENT_CHARACTER, [])\n    }\n  }\nUtf8/decode_character [a, b, c] =\n  use Utf8/maskx = 0b00111111\n  use Utf8/mask2 = 0b00011111\n  use Utf8/mask3 = 0b00001111\n  if (<= a 0x7F) {\n    (a, [b, c])\n  } else {\n    if (== (& a 0xE0) 0xC0) {\n      let r = (| (<< (& a Utf8/mask2) 6) (& b Utf8/maskx))\n      (r, [c])\n    } else {\n      if (== (& a 0xF0) 0xE0) {\n        let r = (| (<< (& a Utf8/mask3) 12) (| (<< (& b Utf8/maskx) 6) (& c Utf8/maskx)))\n        (r, [])\n      } else {\n        (Utf8/REPLACEMENT_CHARACTER, [])\n      }\n    }\n  }\nUtf8/decode_character (List/Cons a (List/Cons b (List/Cons c (List/Cons d rest)))) =\n  use Utf8/maskx = 0b00111111\n  use Utf8/mask2 = 0b00011111\n  use Utf8/mask3 = 0b00001111\n  use Utf8/mask4 = 0b00000111\n  if (<= a 0x7F) {\n    (a, (List/Cons b (List/Cons c (List/Cons d rest))))\n  } else {\n    if (== (& a 0xE0) 0xC0) {\n      let r = (| (<< (& a Utf8/mask2) 6) (& b Utf8/maskx))\n      (r, (List/Cons c (List/Cons d rest)))\n    } else {\n      if (== (& a 0xF0) 0xE0) {\n        let r = (| (<< (& a Utf8/mask3) 12) (| (<< (& b Utf8/maskx) 6) (& c Utf8/maskx)))\n        (r, (List/Cons d rest))\n      } else {\n        if (== (& a 0xF8) 0xF0) {\n          let r = (| (<< (& a Utf8/mask4) 18) (| (<< (& b Utf8/maskx) 12) (| (<< (& c Utf8/maskx) 6) (& d Utf8/maskx))))\n          (r, rest)\n        } else {\n          (Utf8/REPLACEMENT_CHARACTER, rest)\n        }\n      }\n    }\n  }\n\n#{ Encodes a string to a sequence of bytes using utf-8 encoding. #}\nString/encode_utf8 (str: String) : (List u24)\nString/encode_utf8 (String/Nil)       = (List/Nil)\nString/encode_utf8 (String/Cons x xs) =\n  use Utf8/rune1max = 0b01111111\n  use Utf8/rune2max = 0b00000111_11111111\n  use Utf8/rune3max = 0b11111111_11111111\n  use Utf8/tx       = 0b10000000\n  use Utf8/t2       = 0b11000000\n  use Utf8/t3       = 0b11100000\n  use Utf8/t4       = 0b11110000\n  use Utf8/maskx    = 0b00111111\n  if (<= x Utf8/rune1max) {\n    (List/Cons x (String/encode_utf8 xs))\n  } else {\n    if (<= x Utf8/rune2max) {\n      let b1 = (| Utf8/t2 (>> x 6))\n      let b2 = (| Utf8/tx (& x Utf8/maskx))\n      (List/Cons b1 (List/Cons b2 (String/encode_utf8 xs)))\n    } else {\n      if (<= x Utf8/rune3max) {\n        let b1 = (| Utf8/t3 (>> x 12))\n        let b2 = (| Utf8/tx (& (>> x 6) Utf8/maskx))\n        let b3 = (| Utf8/tx (& x        Utf8/maskx))\n        (List/Cons b1 (List/Cons b2 (List/Cons b3 (String/encode_utf8 xs))))\n      } else {\n        let b1 = (| Utf8/t4 (>> x 18))\n        let b2 = (| Utf8/tx (& (>> x 12) Utf8/maskx))\n        let b3 = (| Utf8/tx (& (>> x 6)  Utf8/maskx))\n        let b4 = (| Utf8/tx (& x         Utf8/maskx))\n        (List/Cons b1 (List/Cons b2 (List/Cons b3 (List/Cons b4 (String/encode_utf8 xs)))))\n      }\n    }\n  }\n\n#{ Decodes a sequence of bytes to a String using ascii encoding. #}\nString/decode_ascii (bytes: (List u24)) : String\nString/decode_ascii (List/Cons x xs) = (String/Cons x (String/decode_ascii xs))\nString/decode_ascii (List/Nil)       = (String/Nil)\n\n#{ Encodes a string to a sequence of bytes using ascii encoding. #}\nString/encode_ascii (str: String) : (List u24)\nString/encode_ascii (String/Cons x xs) = (List/Cons x (String/encode_ascii xs))\nString/encode_ascii (String/Nil)       = (List/Nil)\n\n# Math\n\n#{ The Pi (π) constant.#}\ndef Math/PI() -> f24:\n  return 3.1415926535\n\n#{ Euler's number #}\ndef Math/E() -> f24:\n  return 2.718281828\n\n#{\n  Math/log(x: f24, base: f24) -> f24\n  Computes the logarithm of `x` with the specified `base`.\n#}\nhvm Math/log -> (f24 -> f24 -> f24):\n  (x ($([|] $(x ret)) ret))\n\n#{\n  Math/atan2(x: f24, y: f24) -> f24\n  Computes the arctangent of `y / x`.\n  Has the same behaviour as `atan2f` in the C math lib.\n#}\nhvm Math/atan2 -> (f24 -> f24 -> f24):\n  ($([&] $(y ret)) (y ret))\n\n\n#{\n  Math/sin(a: f24) -> f24\n  Computes the sine of the given angle in radians.\n#}\nhvm Math/sin -> (f24 -> f24):\n  ($([<<0x0] a) a)\n\n#{\n  Math/cos(a: f24) -> f24\n  Computes the cosine of the given angle in radians.\n#}\nhvm Math/cos -> (f24 -> f24):\n  (a b)\n  & @Math/PI ~ $([:/2.0] $([-] $(a $([<<0x0] b))))\n\n#{\n  Math/tan(a: f24) -> f24\n  Computes the tangent of the given angle in radians.\n#}\nhvm Math/tan -> (f24 -> f24):\n  ($([>>0x0] a) a)\n\n#{ Computes the cotangent of the given angle in radians. #}\nMath/cot (a: f24) : f24 =\n  (/ 1.0 (Math/tan a))\n\n#{ Computes the secant of the given angle in radians. #}\nMath/sec (a: f24) : f24 =\n  (/ 1.0 (Math/cos a))\n\n#{ Computes the cosecant of the given angle in radians. #}\nMath/csc (a: f24) : f24 =\n  (/ 1.0 (Math/sin a))\n\n#{ Computes the arctangent of the given angle. #}\nMath/atan (a: f24) : f24 =\n  (Math/atan2 a 1.0)\n\n#{ Computes the arcsine of the given angle. #}\nMath/asin (a: f24) : f24 =\n  (Math/atan2 a (Math/sqrt (- 1.0 (* a a))))\n\n#{ Computes the arccosine of the given angle. #}\nMath/acos (a: f24) : f24 =\n  (Math/atan2 (Math/sqrt (- 1.0 (* a a))) a)\n\n#{ Converts degrees to radians. #}\nMath/radians (a: f24) : f24 =\n  (* a (/ Math/PI 180.0))\n\n#{ Computes the square root  of the given number. #}\nMath/sqrt (n: f24) : f24 =\n  (** n 0.5)\n\n#{ Round float up to the nearest integer. #}\ndef Math/ceil(n: f24) -> f24:\n  i_n = i24/to_f24(f24/to_i24(n))\n  if n <= i_n:\n    return i_n\n  else:\n    return i_n + 1.0\n \n#{ Round float down to the nearest integer. #}\ndef Math/floor(n: f24) -> f24:\n  i_n = i24/to_f24(f24/to_i24(n))\n  if n < i_n:\n    return i_n - 1.0\n  else:\n    return i_n\n\n#{ Round float to the nearest integer. #}\ndef Math/round(n: f24) -> f24:\n  i_n = i24/to_f24(f24/to_i24(n))\n  if (n - i_n) < 0.5:\n    return Math/floor(n)\n  else:\n    return Math/ceil(n)\n"
  },
  {
    "path": "src/fun/builtins.rs",
    "content": "use super::{\n  parser::{FunParser, ParseBook},\n  Book, Name, Num, Pattern, Term,\n};\nuse crate::maybe_grow;\n\nconst BUILTINS: &str = include_str!(concat!(env!(\"CARGO_MANIFEST_DIR\"), \"/src/fun/builtins.bend\"));\n\npub const LIST: &str = \"List\";\npub const LCONS: &str = \"List/Cons\";\npub const LNIL: &str = \"List/Nil\";\npub const LCONS_TAG: u32 = 1;\npub const LNIL_TAG_REF: &str = \"List/Nil/tag\";\npub const LCONS_TAG_REF: &str = \"List/Cons/tag\";\n\npub const HEAD: &str = \"head\";\npub const TAIL: &str = \"tail\";\n\npub const STRING: &str = \"String\";\npub const SCONS: &str = \"String/Cons\";\npub const SNIL: &str = \"String/Nil\";\npub const SCONS_TAG: u32 = 1;\npub const SNIL_TAG_REF: &str = \"String/Nil/tag\";\npub const SCONS_TAG_REF: &str = \"String/Cons/tag\";\n\npub const NAT: &str = \"Nat\";\npub const NAT_SUCC: &str = \"Nat/Succ\";\npub const NAT_ZERO: &str = \"Nat/Zero\";\npub const NAT_SUCC_TAG: u32 = 0;\n\npub const TREE: &str = \"Tree\";\npub const TREE_NODE: &str = \"Tree/Node\";\npub const TREE_LEAF: &str = \"Tree/Leaf\";\n\npub const MAP: &str = \"Map\";\npub const MAP_NODE: &str = \"Map/Node\";\npub const MAP_LEAF: &str = \"Map/Leaf\";\n\npub const IO: &str = \"IO\";\npub const IO_DONE: &str = \"IO/Done\";\npub const IO_CALL: &str = \"IO/Call\";\n\npub const BUILTIN_CTRS: &[&str] =\n  &[LCONS, LNIL, SCONS, SNIL, NAT_SUCC, NAT_ZERO, TREE_NODE, TREE_LEAF, MAP_NODE, MAP_LEAF, IO_DONE, IO_CALL];\n\npub const BUILTIN_TYPES: &[&str] = &[LIST, STRING, NAT, TREE, MAP, IO];\n\nimpl ParseBook {\n  pub fn builtins() -> Self {\n    let book =\n      FunParser::new(Name::new(\"/src/fun/builtins.bend\"), BUILTINS, true).parse_book(Self::default());\n    book.unwrap_or_else(|e| panic!(\"Error parsing builtin file, this should not happen:\\n{e}\"))\n  }\n}\n\nimpl Book {\n  pub fn encode_builtins(&mut self) {\n    for def in self.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        rule.pats.iter_mut().for_each(Pattern::encode_builtins);\n        rule.body.encode_builtins();\n      }\n    }\n  }\n}\n\nimpl Term {\n  fn encode_builtins(&mut self) {\n    maybe_grow(|| match self {\n      Term::List { els } => *self = Term::encode_list(std::mem::take(els)),\n      Term::Str { val } => *self = Term::encode_str(val),\n      Term::Nat { val } => *self = Term::encode_nat(*val),\n      Term::Def { def, nxt } => {\n        for rule in def.rules.iter_mut() {\n          rule.pats.iter_mut().for_each(Pattern::encode_builtins);\n          rule.body.encode_builtins();\n        }\n        nxt.encode_builtins();\n      }\n      _ => {\n        for child in self.children_mut() {\n          child.encode_builtins();\n        }\n      }\n    })\n  }\n\n  fn encode_list(elements: Vec<Term>) -> Term {\n    elements.into_iter().rfold(Term::r#ref(LNIL), |acc, mut nxt| {\n      nxt.encode_builtins();\n      Term::call(Term::r#ref(LCONS), [nxt, acc])\n    })\n  }\n\n  pub fn encode_str(val: &str) -> Term {\n    val.chars().rfold(Term::r#ref(SNIL), |acc, char| {\n      Term::call(Term::r#ref(SCONS), [Term::Num { val: Num::U24(char as u32 & 0x00ff_ffff) }, acc])\n    })\n  }\n\n  pub fn encode_nat(val: u32) -> Term {\n    (0..val).fold(Term::r#ref(NAT_ZERO), |acc, _| Term::app(Term::r#ref(NAT_SUCC), acc))\n  }\n}\n\nimpl Pattern {\n  pub fn encode_builtins(&mut self) {\n    match self {\n      Pattern::Lst(pats) => *self = Self::encode_list(std::mem::take(pats)),\n      Pattern::Str(str) => *self = Self::encode_str(str),\n      _ => {\n        for pat in self.children_mut() {\n          pat.encode_builtins();\n        }\n      }\n    }\n  }\n\n  fn encode_list(elements: Vec<Pattern>) -> Pattern {\n    let lnil = Pattern::Ctr(Name::new(LNIL), vec![]);\n\n    elements.into_iter().rfold(lnil, |acc, mut nxt| {\n      nxt.encode_builtins();\n      Pattern::Ctr(Name::new(LCONS), vec![nxt, acc])\n    })\n  }\n\n  fn encode_str(str: &str) -> Pattern {\n    let lnil = Pattern::Ctr(Name::new(SNIL), vec![]);\n\n    str.chars().rfold(lnil, |tail, head| {\n      let head = Pattern::Num(head as u32);\n      Pattern::Ctr(Name::new(SCONS), vec![head, tail])\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/check/check_untyped.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Ctx, FanKind, Pattern, Tag, Term},\n  maybe_grow,\n};\n\nimpl Ctx<'_> {\n  /// Checks that terms that cannot be typed are only used inside untyped functions.\n  pub fn check_untyped_terms(&mut self) -> Result<(), Diagnostics> {\n    for def in self.book.defs.values() {\n      if def.check {\n        for rule in def.rules.iter() {\n          if let Err(e) = rule.body.check_untyped_terms() {\n            self.info.add_function_error(e, def.name.clone(), def.source.clone());\n          }\n        }\n      }\n    }\n    self.info.fatal(())\n  }\n}\n\nimpl Term {\n  fn check_untyped_terms(&self) -> Result<(), String> {\n    maybe_grow(|| {\n      match self {\n        Term::Lam { tag: Tag::Static, pat, .. } => pat.check_untyped_patterns()?,\n        Term::Lam { tag: _, .. } => {\n          return Err(\"Tagged lambda in type-checked function\".to_string());\n        }\n        Term::Link { nam } => {\n          return Err(format!(\"Unscoped variable '${nam}' in type-checked function\"));\n        }\n        Term::App { tag: Tag::Static, .. } => {}\n        Term::App { tag: _, .. } => {\n          return Err(\"Tagged application in type-checked function\".to_string());\n        }\n        Term::Fan { fan: FanKind::Dup, .. } => {\n          return Err(\"Superposition term in type-checked function\".to_string());\n        }\n        Term::Fan { fan: FanKind::Tup, tag: Tag::Static, .. } => {}\n        Term::Fan { fan: FanKind::Tup, tag: _, .. } => {\n          return Err(\"Tagged tuple in type-checked function\".to_string());\n        }\n        Term::Let { pat, .. } => {\n          pat.check_untyped_patterns()?;\n        }\n        _ => {}\n      }\n      for child in self.children() {\n        child.check_untyped_terms()?;\n      }\n      Ok(())\n    })\n  }\n}\n\nimpl Pattern {\n  fn check_untyped_patterns(&self) -> Result<(), String> {\n    maybe_grow(|| {\n      match self {\n        Pattern::Chn(x) => {\n          return Err(format!(\"Unscoped variable bind '${x}' in type-checked function\"));\n        }\n        Pattern::Fan(FanKind::Dup, Tag::Auto, _) => {}\n        Pattern::Fan(FanKind::Dup, _, _) => {\n          return Err(\"Tagged duplication in type-checked function\".to_string());\n        }\n        Pattern::Fan(FanKind::Tup, Tag::Static, _) => {}\n        Pattern::Fan(FanKind::Tup, _, _) => {\n          return Err(\"Tagged tuple elimination in type-checked function\".to_string());\n        }\n        _ => {}\n      }\n      for pat in self.children() {\n        pat.check_untyped_patterns()?;\n      }\n      Ok(())\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/check/mod.rs",
    "content": "pub mod check_untyped;\npub mod set_entrypoint;\npub mod shared_names;\npub mod type_check;\npub mod unbound_refs;\npub mod unbound_vars;\n"
  },
  {
    "path": "src/fun/check/set_entrypoint.rs",
    "content": "use crate::{\n  diagnostics::WarningType,\n  fun::{Book, Ctx, Definition, Name},\n  ENTRY_POINT, HVM1_ENTRY_POINT,\n};\n\n#[derive(Debug, Clone)]\npub enum EntryErr {\n  NotFound(Name),\n  Multiple(Vec<Name>),\n  MultipleRules,\n}\n\nimpl Ctx<'_> {\n  pub fn set_entrypoint(&mut self) {\n    let mut entrypoint = None;\n\n    let (custom, main, hvm1_main) = self.book.get_possible_entry_points();\n    match (custom, main, hvm1_main) {\n      (Some(entry), None, None) | (None, Some(entry), None) | (None, None, Some(entry)) => {\n        match validate_entry_point(entry) {\n          Ok(name) => entrypoint = Some(name),\n          Err(err) => self.info.add_book_error(err),\n        }\n      }\n\n      (Some(a), Some(b), None) | (None, Some(a), Some(b)) | (Some(a), None, Some(b)) => {\n        self.info.add_book_error(EntryErr::Multiple(vec![a.name.clone(), b.name.clone()]));\n\n        match validate_entry_point(a) {\n          Ok(name) => entrypoint = Some(name),\n          Err(err) => self.info.add_book_error(err),\n        }\n      }\n\n      (Some(a), Some(b), Some(c)) => {\n        self.info.add_book_error(EntryErr::Multiple(vec![a.name.clone(), b.name.clone(), c.name.clone()]));\n\n        match validate_entry_point(a) {\n          Ok(name) => entrypoint = Some(name),\n          Err(err) => self.info.add_book_error(err),\n        }\n      }\n\n      (None, None, None) => {\n        let entrypoint = self.book.entrypoint.clone().unwrap_or(Name::new(ENTRY_POINT));\n        self.info.add_book_warning(EntryErr::NotFound(entrypoint), WarningType::MissingMain)\n      }\n    }\n\n    self.book.entrypoint = entrypoint;\n  }\n}\n\nfn validate_entry_point(entry: &Definition) -> Result<Name, EntryErr> {\n  if entry.rules.len() > 1 {\n    Err(EntryErr::MultipleRules)\n  } else {\n    Ok(entry.name.clone())\n  }\n}\n\nimpl Book {\n  fn get_possible_entry_points(&self) -> (Option<&Definition>, Option<&Definition>, Option<&Definition>) {\n    let custom = self.entrypoint.as_ref().and_then(|e| self.defs.get(e));\n    let main = self.defs.get(&Name::new(ENTRY_POINT));\n    let hvm1_main = self.defs.get(&Name::new(HVM1_ENTRY_POINT));\n    (custom, main, hvm1_main)\n  }\n}\n\nimpl std::fmt::Display for EntryErr {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      EntryErr::NotFound(name) => write!(f, \"File has no '{name}' definition.\"),\n      EntryErr::Multiple(fnd) if fnd.len() == 2 => {\n        write!(f, \"File has both '{}' and '{}' definitions.\", fnd[0], fnd[1])\n      }\n      EntryErr::Multiple(fnd) => {\n        write!(f, \"File has '{}', '{}' and '{}' definitions.\", fnd[0], fnd[1], fnd[2])\n      }\n      EntryErr::MultipleRules => write!(f, \"Main definition can't have more than one rule.\"),\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/check/shared_names.rs",
    "content": "use crate::fun::{Ctx, Name};\nuse indexmap::IndexMap;\nuse std::fmt::Display;\n\n#[derive(Debug, Clone)]\npub struct RepeatedTopLevelNameErr {\n  kind_fst: NameKind,\n  kind_snd: NameKind,\n  name: Name,\n}\n\nimpl Ctx<'_> {\n  /// Checks if there are any repeated top level names. Constructors\n  /// and functions can't share names and adts can't share names.\n  pub fn check_shared_names(&mut self) {\n    let mut names = NameInfo::default();\n\n    for adt_name in self.book.adts.keys() {\n      names.add_name(adt_name, NameKind::Adt);\n    }\n\n    for ctr_name in self.book.ctrs.keys() {\n      names.add_name(ctr_name, NameKind::Ctr);\n    }\n\n    for def_name in self.book.defs.keys() {\n      names.add_name(def_name, NameKind::Def);\n    }\n\n    for err in names.into_errs() {\n      self.info.add_book_error(err);\n    }\n  }\n}\n\n#[derive(Debug, Clone, Copy)]\nenum NameKind {\n  Adt,\n  Def,\n  Ctr,\n}\n\n#[derive(Debug, Default)]\nstruct NameInfo<'a>(IndexMap<&'a Name, Vec<NameKind>>);\n\nimpl<'a> NameInfo<'a> {\n  fn add_name(&mut self, name: &'a Name, kind: NameKind) {\n    self.0.entry(name).or_default().push(kind);\n  }\n\n  fn into_errs(self) -> Vec<RepeatedTopLevelNameErr> {\n    let mut errs = vec![];\n    for (name, kinds) in self.0 {\n      let mut num_adts = 0;\n      let mut fst_ctr_def = None;\n      for kind in kinds {\n        if let NameKind::Adt = kind {\n          num_adts += 1;\n          if num_adts >= 2 {\n            errs.push(RepeatedTopLevelNameErr {\n              kind_fst: NameKind::Adt,\n              kind_snd: NameKind::Adt,\n              name: name.clone(),\n            });\n          }\n        } else if let Some(fst) = fst_ctr_def {\n          errs.push(RepeatedTopLevelNameErr { kind_fst: fst, kind_snd: kind, name: name.clone() });\n        } else {\n          fst_ctr_def = Some(kind);\n        }\n      }\n    }\n    errs\n  }\n}\n\nimpl Display for NameKind {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      NameKind::Adt => write!(f, \"data type\"),\n      NameKind::Def => write!(f, \"function\"),\n      NameKind::Ctr => write!(f, \"constructor\"),\n    }\n  }\n}\n\nimpl std::fmt::Display for RepeatedTopLevelNameErr {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    let mut snd = self.kind_snd.to_string();\n    snd[0..1].make_ascii_uppercase();\n    write!(f, \"{} '{}' has the same name as a previously defined {}\", snd, self.name, self.kind_fst)\n  }\n}\n"
  },
  {
    "path": "src/fun/check/type_check.rs",
    "content": "//! Optional Hindley-Milner-like type system.\n//!\n//! Based on https://github.com/developedby/algorithm-w-rs\n//! and https://github.com/mgrabmueller/AlgorithmW.\nuse crate::{\n  diagnostics::Diagnostics,\n  fun::{num_to_name, Adt, Book, Ctx, FanKind, MatchRule, Name, Num, Op, Pattern, Tag, Term, Type},\n  maybe_grow,\n};\nuse std::collections::{BTreeMap, BTreeSet, HashMap};\n\nimpl Ctx<'_> {\n  pub fn type_check(&mut self) -> Result<(), Diagnostics> {\n    let types = infer_book(self.book, &mut self.info)?;\n\n    for def in self.book.defs.values_mut() {\n      def.typ = types[&def.name].instantiate(&mut VarGen::default());\n    }\n\n    Ok(())\n  }\n}\n\ntype ProgramTypes = HashMap<Name, Scheme>;\n\n/// A type scheme, aka a polymorphic type.\n#[derive(Clone, Debug)]\nstruct Scheme(Vec<Name>, Type);\n\n/// A finite mapping from type variables to types.\n#[derive(Clone, Default, Debug)]\nstruct Subst(BTreeMap<Name, Type>);\n\n/// A mapping from term variables to type schemes.\n#[derive(Clone, Default, Debug)]\nstruct TypeEnv(BTreeMap<Name, Scheme>);\n\n/// Variable generator for type variables.\n#[derive(Default)]\nstruct VarGen(usize);\n\n/// Topologically ordered set of mutually recursive groups of functions.\nstruct RecGroups(Vec<Vec<Name>>);\n\n/* Implementations */\n\nimpl Type {\n  fn free_type_vars(&self) -> BTreeSet<Name> {\n    maybe_grow(|| match self {\n      Type::Var(x) => BTreeSet::from([x.clone()]),\n      Type::Ctr(_, ts) | Type::Tup(ts) => ts.iter().flat_map(|t| t.free_type_vars()).collect(),\n      Type::Arr(t1, t2) => t1.free_type_vars().union(&t2.free_type_vars()).cloned().collect(),\n      Type::Number(t) | Type::Integer(t) => t.free_type_vars(),\n      Type::U24 | Type::F24 | Type::I24 | Type::None | Type::Any | Type::Hole => BTreeSet::new(),\n    })\n  }\n\n  fn subst(&self, subst: &Subst) -> Type {\n    maybe_grow(|| match self {\n      Type::Var(nam) => match subst.0.get(nam) {\n        Some(new) => new.clone(),\n        None => self.clone(),\n      },\n      Type::Ctr(name, ts) => Type::Ctr(name.clone(), ts.iter().map(|t| t.subst(subst)).collect()),\n      Type::Arr(t1, t2) => Type::Arr(Box::new(t1.subst(subst)), Box::new(t2.subst(subst))),\n      Type::Tup(els) => Type::Tup(els.iter().map(|t| t.subst(subst)).collect()),\n      Type::Number(t) => Type::Number(Box::new(t.subst(subst))),\n      Type::Integer(t) => Type::Integer(Box::new(t.subst(subst))),\n      t @ (Type::U24 | Type::F24 | Type::I24 | Type::None | Type::Any | Type::Hole) => t.clone(),\n    })\n  }\n\n  /// Converts a monomorphic type into a type scheme by abstracting\n  /// over the type variables free in `t`, but not free in the type\n  /// environment.\n  fn generalize(&self, env: &TypeEnv) -> Scheme {\n    let vars_env = env.free_type_vars();\n    let vars_t = self.free_type_vars();\n    let vars = vars_t.difference(&vars_env).cloned().collect();\n    Scheme(vars, self.clone())\n  }\n}\n\nimpl Scheme {\n  fn free_type_vars(&self) -> BTreeSet<Name> {\n    let vars = self.1.free_type_vars();\n    let bound_vars = self.0.iter().cloned().collect();\n    vars.difference(&bound_vars).cloned().collect()\n  }\n\n  fn subst(&self, subst: &Subst) -> Scheme {\n    let mut subst = subst.clone();\n    for x in self.0.iter() {\n      subst.0.remove(x);\n    }\n    let t = self.1.subst(&subst);\n    Scheme(self.0.clone(), t)\n  }\n\n  /// Converts a type scheme into a monomorphic type by assigning\n  /// fresh type variables to each variable bound by the scheme.\n  fn instantiate(&self, var_gen: &mut VarGen) -> Type {\n    let new_vars = self.0.iter().map(|_| var_gen.fresh());\n    let subst = Subst(self.0.iter().cloned().zip(new_vars).collect());\n    self.1.subst(&subst)\n  }\n}\n\nimpl Subst {\n  /// Compose two substitutions.\n  ///\n  /// Applies the first substitution to the second, and then inserts the result into the first.\n  fn compose(mut self, other: Subst) -> Subst {\n    let other = other.0.into_iter().map(|(x, t)| (x, t.subst(&self))).collect::<Vec<_>>();\n    self.0.extend(other);\n    self\n  }\n}\n\nimpl TypeEnv {\n  fn free_type_vars(&self) -> BTreeSet<Name> {\n    let mut vars = BTreeSet::new();\n    for scheme in self.0.values() {\n      let scheme_vars = scheme.free_type_vars();\n      vars = vars.union(&scheme_vars).cloned().collect();\n    }\n    vars\n  }\n\n  fn subst(&self, subst: &Subst) -> TypeEnv {\n    let env = self.0.iter().map(|(x, scheme)| (x.clone(), scheme.subst(subst))).collect();\n    TypeEnv(env)\n  }\n\n  fn insert(&mut self, name: Name, scheme: Scheme) {\n    self.0.insert(name, scheme);\n  }\n\n  fn add_binds<'a>(\n    &mut self,\n    bnd: impl IntoIterator<Item = (&'a Option<Name>, Scheme)>,\n  ) -> Vec<(Name, Option<Scheme>)> {\n    let mut old_bnd = vec![];\n    for (name, scheme) in bnd {\n      if let Some(name) = name {\n        let old = self.0.insert(name.clone(), scheme);\n        old_bnd.push((name.clone(), old));\n      }\n    }\n    old_bnd\n  }\n\n  fn pop_binds(&mut self, old_bnd: Vec<(Name, Option<Scheme>)>) {\n    for (name, scheme) in old_bnd {\n      if let Some(scheme) = scheme {\n        self.0.insert(name, scheme);\n      }\n    }\n  }\n}\n\nimpl VarGen {\n  fn fresh(&mut self) -> Type {\n    let x = self.fresh_name();\n    Type::Var(x)\n  }\n\n  fn fresh_name(&mut self) -> Name {\n    let x = num_to_name(self.0 as u64);\n    self.0 += 1;\n    Name::new(x)\n  }\n}\n\nimpl RecGroups {\n  fn from_book(book: &Book) -> RecGroups {\n    type DependencyGraph<'a> = BTreeMap<&'a Name, BTreeSet<&'a Name>>;\n\n    fn collect_dependencies<'a>(\n      term: &'a Term,\n      book: &'a Book,\n      scope: &mut Vec<Name>,\n      deps: &mut BTreeSet<&'a Name>,\n    ) {\n      if let Term::Ref { nam } = term {\n        if book.ctrs.contains_key(nam) || book.hvm_defs.contains_key(nam) || !book.defs[nam].check {\n          // Don't infer types for constructors or unchecked functions\n        } else {\n          deps.insert(nam);\n        }\n      }\n      for (child, binds) in term.children_with_binds() {\n        scope.extend(binds.clone().flatten().cloned());\n        collect_dependencies(child, book, scope, deps);\n        scope.truncate(scope.len() - binds.flatten().count());\n      }\n    }\n\n    /// Tarjan's algorithm for finding strongly connected components.\n    fn strong_connect<'a>(\n      v: &'a Name,\n      deps: &DependencyGraph<'a>,\n      index: &mut usize,\n      index_map: &mut BTreeMap<&'a Name, usize>,\n      low_link: &mut BTreeMap<&'a Name, usize>,\n      stack: &mut Vec<&'a Name>,\n      components: &mut Vec<BTreeSet<Name>>,\n    ) {\n      maybe_grow(|| {\n        index_map.insert(v, *index);\n        low_link.insert(v, *index);\n        *index += 1;\n        stack.push(v);\n\n        if let Some(neighbors) = deps.get(v) {\n          for w in neighbors {\n            if !index_map.contains_key(w) {\n              // Successor w has not yet been visited, recurse on it.\n              strong_connect(w, deps, index, index_map, low_link, stack, components);\n              low_link.insert(v, low_link[v].min(low_link[w]));\n            } else if stack.contains(w) {\n              // Successor w is in stack S and hence in the current SCC.\n              low_link.insert(v, low_link[v].min(index_map[w]));\n            } else {\n              // If w is not on stack, then (v, w) is an edge pointing\n              // to an SCC already found and must be ignored.\n            }\n          }\n        }\n\n        // If v is a root node, pop the stack and generate an SCC.\n        if low_link[v] == index_map[v] {\n          let mut component = BTreeSet::new();\n          while let Some(w) = stack.pop() {\n            component.insert(w.clone());\n            if w == v {\n              break;\n            }\n          }\n          components.push(component);\n        }\n      })\n    }\n\n    // Build the dependency graph\n    let mut deps = DependencyGraph::default();\n    for (name, def) in &book.defs {\n      if book.ctrs.contains_key(name) || !def.check {\n        // Don't infer types for constructors or unchecked functions\n        continue;\n      }\n      let mut fn_deps = Default::default();\n      collect_dependencies(&def.rule().body, book, &mut vec![], &mut fn_deps);\n      deps.insert(name, fn_deps);\n    }\n\n    let mut index = 0;\n    let mut stack = Vec::new();\n    let mut index_map = BTreeMap::new();\n    let mut low_link = BTreeMap::new();\n    let mut components = Vec::new();\n    for name in deps.keys() {\n      if !index_map.contains_key(name) {\n        strong_connect(name, &deps, &mut index, &mut index_map, &mut low_link, &mut stack, &mut components);\n      }\n    }\n    let components = components.into_iter().map(|x| x.into_iter().collect()).collect();\n    RecGroups(components)\n  }\n}\n\n/* Inference, unification and type checking */\nfn infer_book(book: &Book, diags: &mut Diagnostics) -> Result<ProgramTypes, Diagnostics> {\n  let groups = RecGroups::from_book(book);\n  let mut env = TypeEnv::default();\n  // Note: We store the inferred and generalized types in a separate\n  // environment, to avoid unnecessary cloning (since no immutable data).\n  let mut types = ProgramTypes::default();\n\n  // Add the constructors to the environment.\n  for adt in book.adts.values() {\n    for ctr in adt.ctrs.values() {\n      types.insert(ctr.name.clone(), ctr.typ.generalize(&TypeEnv::default()));\n    }\n  }\n  // Add the types of unchecked functions to the environment.\n  for def in book.defs.values() {\n    if !def.check {\n      types.insert(def.name.clone(), def.typ.generalize(&TypeEnv::default()));\n    }\n  }\n  // Add the types of hvm functions to the environment.\n  for def in book.hvm_defs.values() {\n    types.insert(def.name.clone(), def.typ.generalize(&TypeEnv::default()));\n  }\n\n  // Infer the types of regular functions.\n  for group in &groups.0 {\n    infer_group(&mut env, book, group, &mut types, diags)?;\n  }\n  Ok(types)\n}\n\nfn infer_group(\n  env: &mut TypeEnv,\n  book: &Book,\n  group: &[Name],\n  types: &mut ProgramTypes,\n  diags: &mut Diagnostics,\n) -> Result<(), Diagnostics> {\n  let var_gen = &mut VarGen::default();\n  // Generate fresh type variables for each function in the group.\n  let tvs = group.iter().map(|_| var_gen.fresh()).collect::<Vec<_>>();\n  for (name, tv) in group.iter().zip(tvs.iter()) {\n    env.insert(name.clone(), Scheme(vec![], tv.clone()));\n  }\n\n  // Infer the types of the functions in the group.\n  let mut ss = vec![];\n  let mut inf_ts = vec![];\n  let mut exp_ts = vec![];\n  for name in group {\n    let def = &book.defs[name];\n    let (s, t) = infer(env, book, types, &def.rule().body, var_gen).map_err(|e| {\n      diags.add_function_error(e, name.clone(), def.source.clone());\n      std::mem::take(diags)\n    })?;\n    let t = t.subst(&s);\n    ss.push(s);\n    inf_ts.push(t);\n    exp_ts.push(&def.typ);\n  }\n\n  // Remove the type variables of the group from the environment.\n  // This avoids cloning of already generalized types.\n  for name in group.iter() {\n    env.0.remove(name);\n  }\n\n  // Unify the inferred body with the corresponding type variable.\n  let mut s = ss.into_iter().fold(Subst::default(), |acc, s| acc.compose(s));\n  let mut ts = vec![];\n  for ((bod_t, tv), nam) in inf_ts.into_iter().zip(tvs.iter()).zip(group.iter()) {\n    let (t, s2) = unify_term(&tv.subst(&s), &bod_t, &book.defs[nam].rule().body)?;\n    ts.push(t);\n    s = s.compose(s2);\n  }\n  let ts = ts.into_iter().map(|t| t.subst(&s)).collect::<Vec<_>>();\n\n  // Specialize against the expected type, then generalize and store.\n  for ((name, exp_t), inf_t) in group.iter().zip(exp_ts.iter()).zip(ts.iter()) {\n    let t = specialize(inf_t, exp_t).map_err(|e| {\n      diags.add_function_error(e, name.clone(), book.defs[name].source.clone());\n      std::mem::take(diags)\n    })?;\n    types.insert(name.clone(), t.generalize(&TypeEnv::default()));\n  }\n\n  diags.fatal(())\n}\n\n/// Infer the type of a term in the given environment.\n///\n/// The type environment must contain bindings for all the free variables of the term.\n///\n/// The returned substitution records the type constraints imposed on type variables by the term.\n/// The returned type is the type of the term.\nfn infer(\n  env: &mut TypeEnv,\n  book: &Book,\n  types: &ProgramTypes,\n  term: &Term,\n  var_gen: &mut VarGen,\n) -> Result<(Subst, Type), String> {\n  let res = maybe_grow(|| match term {\n    Term::Var { nam } | Term::Ref { nam } => {\n      if let Some(scheme) = env.0.get(nam) {\n        Ok::<_, String>((Subst::default(), scheme.instantiate(var_gen)))\n      } else if let Some(scheme) = types.get(nam) {\n        Ok((Subst::default(), scheme.instantiate(var_gen)))\n      } else {\n        unreachable!(\"unbound name '{}'\", nam)\n      }\n    }\n    Term::Lam { tag: Tag::Static, pat, bod } => match pat.as_ref() {\n      Pattern::Var(nam) => {\n        let tv = var_gen.fresh();\n        let old_bnd = env.add_binds([(nam, Scheme(vec![], tv.clone()))]);\n        let (s, bod_t) = infer(env, book, types, bod, var_gen)?;\n        env.pop_binds(old_bnd);\n        let var_t = tv.subst(&s);\n        Ok((s, Type::Arr(Box::new(var_t), Box::new(bod_t))))\n      }\n      _ => unreachable!(\"{}\", term),\n    },\n    Term::App { tag: Tag::Static, fun, arg } => {\n      let (s1, fun_t) = infer(env, book, types, fun, var_gen)?;\n      let (s2, arg_t) = infer(&mut env.subst(&s1), book, types, arg, var_gen)?;\n      let app_t = var_gen.fresh();\n      let (_, s3) = unify_term(&fun_t.subst(&s2), &Type::Arr(Box::new(arg_t), Box::new(app_t.clone())), fun)?;\n      let t = app_t.subst(&s3);\n      Ok((s3.compose(s2).compose(s1), t))\n    }\n    Term::Let { pat, val, nxt } => match pat.as_ref() {\n      Pattern::Var(nam) => {\n        let (s1, val_t) = infer(env, book, types, val, var_gen)?;\n        let old_bnd = env.add_binds([(nam, val_t.generalize(&env.subst(&s1)))]);\n        let (s2, nxt_t) = infer(&mut env.subst(&s1), book, types, nxt, var_gen)?;\n        env.pop_binds(old_bnd);\n        Ok((s2.compose(s1), nxt_t))\n      }\n      Pattern::Fan(FanKind::Tup, Tag::Static, _) => {\n        // Tuple elimination behaves like pattern matching.\n        // Variables from tuple patterns don't get generalized.\n        debug_assert!(!(pat.has_unscoped() || pat.has_nested()));\n        let (s1, val_t) = infer(env, book, types, val, var_gen)?;\n\n        let tvs = pat.binds().map(|_| var_gen.fresh()).collect::<Vec<_>>();\n        let old_bnd = env.add_binds(pat.binds().zip(tvs.iter().map(|tv| Scheme(vec![], tv.clone()))));\n        let (s2, nxt_t) = infer(&mut env.subst(&s1), book, types, nxt, var_gen)?;\n        env.pop_binds(old_bnd);\n        let tvs = tvs.into_iter().map(|tv| tv.subst(&s2)).collect::<Vec<_>>();\n        let (_, s3) = unify_term(&val_t, &Type::Tup(tvs), val)?;\n        Ok((s3.compose(s2).compose(s1), nxt_t))\n      }\n      Pattern::Fan(FanKind::Dup, Tag::Auto, _) => {\n        // We pretend that sups don't exist and dups don't collide.\n        // All variables must have the same type as the body of the dup.\n        debug_assert!(!(pat.has_unscoped() || pat.has_nested()));\n        let (s1, mut val_t) = infer(env, book, types, val, var_gen)?;\n        let tvs = pat.binds().map(|_| var_gen.fresh()).collect::<Vec<_>>();\n        let old_bnd = env.add_binds(pat.binds().zip(tvs.iter().map(|tv| Scheme(vec![], tv.clone()))));\n        let (mut s2, nxt_t) = infer(&mut env.subst(&s1), book, types, nxt, var_gen)?;\n        env.pop_binds(old_bnd);\n        for tv in tvs {\n          let (val_t_, s) = unify_term(&val_t, &tv.subst(&s2), val)?;\n          val_t = val_t_;\n          s2 = s2.compose(s);\n        }\n        Ok((s2.compose(s1), nxt_t))\n      }\n      _ => unreachable!(),\n    },\n\n    Term::Mat { bnd: _, arg, with_bnd: _, with_arg: _, arms } => {\n      // Infer type of the scrutinee\n      let (s1, t1) = infer(env, book, types, arg, var_gen)?;\n\n      // Instantiate the expected type of the scrutinee\n      let adt_name = book.ctrs.get(arms[0].0.as_ref().unwrap()).unwrap();\n      let adt = &book.adts[adt_name];\n      let (adt_s, adt_t) = instantiate_adt(adt, var_gen)?;\n\n      // For each case, infer the types and unify them all.\n      // Unify the inferred type of the destructured fields with the\n      // expected from what we inferred from the scrutinee.\n      let (s2, nxt_t) = infer_match_cases(env.subst(&s1), book, types, adt, arms, &adt_s, var_gen)?;\n\n      // Unify the inferred type with the expected type\n      let (_, s3) = unify_term(&t1, &adt_t.subst(&s2), arg)?;\n      Ok((s3.compose(s2).compose(s1), nxt_t))\n    }\n\n    Term::Num { val } => {\n      let t = match val {\n        Num::U24(_) => Type::U24,\n        Num::I24(_) => Type::I24,\n        Num::F24(_) => Type::F24,\n      };\n      Ok((Subst::default(), t))\n    }\n    Term::Oper { opr, fst, snd } => {\n      let (s1, t1) = infer(env, book, types, fst, var_gen)?;\n      let (s2, t2) = infer(&mut env.subst(&s1), book, types, snd, var_gen)?;\n      let (t2, s3) = unify_term(&t2.subst(&s1), &t1.subst(&s2), term)?;\n      let s_args = s3.compose(s2).compose(s1);\n      let t_args = t2.subst(&s_args);\n      // Check numeric type matches the operation\n      let tv = var_gen.fresh();\n      let (t_opr, s_opr) = match opr {\n        // Any numeric type\n        Op::ADD | Op::SUB | Op::MUL | Op::DIV => {\n          unify_term(&t_args, &Type::Number(Box::new(tv.clone())), term)?\n        }\n        Op::EQ | Op::NEQ | Op::LT | Op::GT | Op::GE | Op::LE => {\n          let (_, s) = unify_term(&t_args, &Type::Number(Box::new(tv.clone())), term)?;\n          (Type::U24, s)\n        }\n        // Integers\n        Op::REM | Op::AND | Op::OR | Op::XOR | Op::SHL | Op::SHR => {\n          unify_term(&t_args, &Type::Integer(Box::new(tv.clone())), term)?\n        }\n        // Floating\n        Op::POW => unify_term(&t_args, &Type::F24, term)?,\n      };\n      let t = t_opr.subst(&s_opr);\n      Ok((s_opr.compose(s_args), t))\n    }\n    Term::Swt { bnd: _, arg, with_bnd: _, with_arg: _, pred, arms } => {\n      let (s1, t1) = infer(env, book, types, arg, var_gen)?;\n      let (_, s2) = unify_term(&t1, &Type::U24, arg)?;\n      let s_arg = s2.compose(s1);\n      let mut env = env.subst(&s_arg);\n\n      let mut ss_nums = vec![];\n      let mut ts_nums = vec![];\n      for arm in arms.iter().rev().skip(1) {\n        let (s, t) = infer(&mut env, book, types, arm, var_gen)?;\n        env = env.subst(&s);\n        ss_nums.push(s);\n        ts_nums.push(t);\n      }\n      let old_bnd = env.add_binds([(pred, Scheme(vec![], Type::U24))]);\n      let (s_succ, t_succ) = infer(&mut env, book, types, &arms[1], var_gen)?;\n      env.pop_binds(old_bnd);\n\n      let s_arms = ss_nums.into_iter().fold(s_succ, |acc, s| acc.compose(s));\n      let mut t_swt = t_succ;\n      let mut s_swt = Subst::default();\n      for t_num in ts_nums {\n        let (t, s) = unify_term(&t_swt, &t_num, term)?;\n        t_swt = t;\n        s_swt = s.compose(s_swt);\n      }\n\n      let s = s_swt.compose(s_arms).compose(s_arg);\n      let t = t_swt.subst(&s);\n      Ok((s, t))\n    }\n\n    Term::Fan { fan: FanKind::Tup, tag: Tag::Static, els } => {\n      let res = els.iter().map(|el| infer(env, book, types, el, var_gen)).collect::<Result<Vec<_>, _>>()?;\n      let (ss, ts): (Vec<Subst>, Vec<Type>) = res.into_iter().unzip();\n      let t = Type::Tup(ts);\n      let s = ss.into_iter().fold(Subst::default(), |acc, s| acc.compose(s));\n      Ok((s, t))\n    }\n    Term::Era => Ok((Subst::default(), Type::None)),\n    Term::Fan { .. } | Term::Lam { tag: _, .. } | Term::App { tag: _, .. } | Term::Link { .. } => {\n      unreachable!(\"'{term}' while type checking. Should never occur in checked functions\")\n    }\n    Term::Use { .. }\n    | Term::With { .. }\n    | Term::Ask { .. }\n    | Term::Nat { .. }\n    | Term::Str { .. }\n    | Term::List { .. }\n    | Term::Fold { .. }\n    | Term::Bend { .. }\n    | Term::Open { .. }\n    | Term::Def { .. }\n    | Term::Err => unreachable!(\"'{term}' while type checking. Should have been removed in earlier pass\"),\n  })?;\n  Ok(res)\n}\n\n/// Instantiates the type constructor of an ADT, also returning the\n/// ADT var to instantiated var substitution, to be used when\n/// instantiating the types of the fields of the eliminated constructors.\nfn instantiate_adt(adt: &Adt, var_gen: &mut VarGen) -> Result<(Subst, Type), String> {\n  let tvs = adt.vars.iter().map(|_| var_gen.fresh());\n  let s = Subst(adt.vars.iter().zip(tvs).map(|(x, t)| (x.clone(), t)).collect());\n  let t = Type::Ctr(adt.name.clone(), adt.vars.iter().cloned().map(Type::Var).collect());\n  let t = t.subst(&s);\n  Ok((s, t))\n}\n\nfn infer_match_cases(\n  mut env: TypeEnv,\n  book: &Book,\n  types: &ProgramTypes,\n  adt: &Adt,\n  arms: &[MatchRule],\n  adt_s: &Subst,\n  var_gen: &mut VarGen,\n) -> Result<(Subst, Type), String> {\n  maybe_grow(|| {\n    if let Some(((ctr_nam, vars, bod), rest)) = arms.split_first() {\n      let ctr = &adt.ctrs[ctr_nam.as_ref().unwrap()];\n      // One fresh var per field, we later unify with the expected type.\n      let tvs = vars.iter().map(|_| var_gen.fresh()).collect::<Vec<_>>();\n\n      // Infer the body and unify the inferred field types with the expected.\n      let old_bnd = env.add_binds(vars.iter().zip(tvs.iter().map(|tv| Scheme(vec![], tv.clone()))));\n      let (s1, t1) = infer(&mut env, book, types, bod, var_gen)?;\n      env.pop_binds(old_bnd);\n      let inf_ts = tvs.into_iter().map(|tv| tv.subst(&s1)).collect::<Vec<_>>();\n      let exp_ts = ctr.fields.iter().map(|f| f.typ.subst(adt_s)).collect::<Vec<_>>();\n      let s2 = unify_fields(inf_ts.iter().zip(exp_ts.iter()), bod)?;\n\n      // Recurse and unify with the other arms.\n      let s = s2.compose(s1);\n      let (s_rest, t_rest) = infer_match_cases(env.subst(&s), book, types, adt, rest, adt_s, var_gen)?;\n      let (t_final, s_final) = unify_term(&t1.subst(&s), &t_rest, bod)?;\n\n      Ok((s_final.compose(s_rest).compose(s), t_final))\n    } else {\n      Ok((Subst::default(), var_gen.fresh()))\n    }\n  })\n}\n\nfn unify_fields<'a>(ts: impl Iterator<Item = (&'a Type, &'a Type)>, ctx: &Term) -> Result<Subst, String> {\n  let ss = ts.map(|(inf, exp)| unify_term(inf, exp, ctx)).collect::<Result<Vec<_>, _>>()?;\n  let mut s = Subst::default();\n  for (_, s2) in ss.into_iter().rev() {\n    s = s.compose(s2);\n  }\n  Ok(s)\n}\n\nfn unify_term(t1: &Type, t2: &Type, ctx: &Term) -> Result<(Type, Subst), String> {\n  match unify(t1, t2) {\n    Ok((t, s)) => Ok((t, s)),\n    Err(msg) => Err(format!(\"In {ctx}:\\n  Can't unify '{t1}' and '{t2}'.{msg}\")),\n  }\n}\n\nfn unify(t1: &Type, t2: &Type) -> Result<(Type, Subst), String> {\n  maybe_grow(|| match (t1, t2) {\n    (t, Type::Hole) | (Type::Hole, t) => Ok((t.clone(), Subst::default())),\n    (t, Type::Var(x)) | (Type::Var(x), t) => {\n      // Try to bind variable `x` to `t`\n      if let Type::Var(y) = t {\n        if y == x {\n          // Don't bind a variable to itself\n          return Ok((t.clone(), Subst::default()));\n        }\n      }\n      // Occurs check\n      if t.free_type_vars().contains(x) {\n        return Err(format!(\" Variable '{x}' occurs in '{t}'\"));\n      }\n      Ok((t.clone(), Subst(BTreeMap::from([(x.clone(), t.clone())]))))\n    }\n    (Type::Arr(l1, r1), Type::Arr(l2, r2)) => {\n      let (t1, s1) = unify(l1, l2)?;\n      let (t2, s2) = unify(&r1.subst(&s1), &r2.subst(&s1))?;\n      Ok((Type::Arr(Box::new(t1), Box::new(t2)), s2.compose(s1)))\n    }\n    (Type::Ctr(name1, ts1), Type::Ctr(name2, ts2)) if name1 == name2 && ts1.len() == ts2.len() => {\n      let mut s = Subst::default();\n      let mut ts = vec![];\n      for (t1, t2) in ts1.iter().zip(ts2.iter()) {\n        let (t, s2) = unify(t1, t2)?;\n        ts.push(t);\n        s = s.compose(s2);\n      }\n      Ok((Type::Ctr(name1.clone(), ts), s))\n    }\n    (Type::Tup(els1), Type::Tup(els2)) if els1.len() == els2.len() => {\n      let mut s = Subst::default();\n      let mut ts = vec![];\n      for (t1, t2) in els1.iter().zip(els2.iter()) {\n        let (t, s2) = unify(t1, t2)?;\n        ts.push(t);\n        s = s.compose(s2);\n      }\n      Ok((Type::Tup(ts), s))\n    }\n    t @ ((Type::U24, Type::U24)\n    | (Type::F24, Type::F24)\n    | (Type::I24, Type::I24)\n    | (Type::None, Type::None)) => Ok((t.0.clone(), Subst::default())),\n    (Type::Number(t1), Type::Number(t2)) => {\n      let (t, s) = unify(t1, t2)?;\n      Ok((Type::Number(Box::new(t)), s))\n    }\n    (Type::Number(tn), Type::Integer(ti)) | (Type::Integer(ti), Type::Number(tn)) => {\n      let (t, s) = unify(ti, tn)?;\n      Ok((Type::Integer(Box::new(t)), s))\n    }\n    (Type::Integer(t1), Type::Integer(t2)) => {\n      let (t, s) = unify(t1, t2)?;\n      Ok((Type::Integer(Box::new(t)), s))\n    }\n    (Type::Number(t1) | Type::Integer(t1), t2 @ (Type::U24 | Type::I24 | Type::F24))\n    | (t2 @ (Type::U24 | Type::I24 | Type::F24), Type::Number(t1) | Type::Integer(t1)) => {\n      let (t, s) = unify(t1, t2)?;\n      Ok((t, s))\n    }\n\n    (Type::Any, t) | (t, Type::Any) => {\n      let mut s = Subst::default();\n      // Recurse to assign variables to `Any` as well\n      for child in t.children() {\n        let (_, s2) = unify(&Type::Any, child)?;\n        s = s2.compose(s);\n      }\n      Ok((Type::Any, s))\n    }\n\n    _ => Err(String::new()),\n  })\n}\n\n/// Specializes the inferred type against the type annotation.\n/// This way, the annotation can be less general than the inferred type.\n///\n/// It also forces inferred 'Any' to the annotated, inferred types to\n/// annotated 'Any' and fills 'Hole' with the inferred type.\n///\n/// Errors if the first type is not a superset of the second type.\nfn specialize(inf: &Type, ann: &Type) -> Result<Type, String> {\n  fn merge_specialization(inf: &Type, exp: &Type, s: &mut Subst) -> Result<Type, String> {\n    maybe_grow(|| match (inf, exp) {\n      // These rules have to come before\n      (t, Type::Hole) => Ok(t.clone()),\n      (Type::Hole, _) => unreachable!(\"Hole should never appear in the inferred type\"),\n\n      (_inf, Type::Any) => Ok(Type::Any),\n      (Type::Any, exp) => Ok(exp.clone()),\n\n      (Type::Var(x), new) => {\n        if let Some(old) = s.0.get(x) {\n          if old == new {\n            Ok(new.clone())\n          } else {\n            Err(format!(\" Inferred type variable '{x}' must be both '{old}' and '{new}'\"))\n          }\n        } else {\n          s.0.insert(x.clone(), new.clone());\n          Ok(new.clone())\n        }\n      }\n\n      (Type::Arr(l1, r1), Type::Arr(l2, r2)) => {\n        let l = merge_specialization(l1, l2, s)?;\n        let r = merge_specialization(r1, r2, s)?;\n        Ok(Type::Arr(Box::new(l), Box::new(r)))\n      }\n      (Type::Ctr(name1, ts1), Type::Ctr(name2, ts2)) if name1 == name2 && ts1.len() == ts2.len() => {\n        let mut ts = vec![];\n        for (t1, t2) in ts1.iter().zip(ts2.iter()) {\n          let t = merge_specialization(t1, t2, s)?;\n          ts.push(t);\n        }\n        Ok(Type::Ctr(name1.clone(), ts))\n      }\n      (Type::Tup(ts1), Type::Tup(ts2)) if ts1.len() == ts2.len() => {\n        let mut ts = vec![];\n        for (t1, t2) in ts1.iter().zip(ts2.iter()) {\n          let t = merge_specialization(t1, t2, s)?;\n          ts.push(t);\n        }\n        Ok(Type::Tup(ts))\n      }\n      (Type::Number(t1), Type::Number(t2)) => Ok(Type::Number(Box::new(merge_specialization(t1, t2, s)?))),\n      (Type::Integer(t1), Type::Integer(t2)) => Ok(Type::Integer(Box::new(merge_specialization(t1, t2, s)?))),\n      (Type::U24, Type::U24) | (Type::F24, Type::F24) | (Type::I24, Type::I24) | (Type::None, Type::None) => {\n        Ok(inf.clone())\n      }\n      _ => Err(String::new()),\n    })\n  }\n\n  // Refresh the variable names to avoid conflicts when unifying\n  // Names of type vars in the annotation have nothing to do with names in the inferred type.\n  let var_gen = &mut VarGen::default();\n  let inf2 = inf.generalize(&TypeEnv::default()).instantiate(var_gen);\n  let ann2 = ann.generalize(&TypeEnv::default()).instantiate(var_gen);\n\n  let (t, s) = unify(&inf2, &ann2)\n    .map_err(|e| format!(\"Type Error: Expected function type '{ann}' but found '{inf}'.{e}\"))?;\n  let t = t.subst(&s);\n\n  // Merge the inferred specialization with the expected type.\n  // This is done to cast to/from `Any` and `_` types.\n  let mut merge_s = Subst::default();\n  let t2 = merge_specialization(&t, ann, &mut merge_s).map_err(|e| {\n    format!(\"Type Error: Annotated type '{ann}' is not a subtype of inferred type '{inf2}'.{e}\")\n  })?;\n\n  Ok(t2.subst(&merge_s))\n}\n\nimpl std::fmt::Display for Subst {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    writeln!(f, \"Subst {{\")?;\n    for (x, y) in &self.0 {\n      writeln!(f, \"  {x} => {y},\")?;\n    }\n    write!(f, \"}}\")\n  }\n}\n"
  },
  {
    "path": "src/fun/check/unbound_refs.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Book, Ctx, Name, Term},\n  maybe_grow,\n};\nuse std::collections::HashSet;\n\nimpl Ctx<'_> {\n  pub fn check_unbound_refs(&mut self) -> Result<(), Diagnostics> {\n    for def in self.book.defs.values() {\n      let mut unbounds = HashSet::new();\n      for rule in def.rules.iter() {\n        rule.body.check_unbound_refs(self.book, &mut unbounds);\n      }\n      for unbound in unbounds {\n        self.info.add_function_error(\n          format!(\"Reference to undefined function '{unbound}'\"),\n          def.name.clone(),\n          def.source.clone(),\n        );\n      }\n    }\n    self.info.fatal(())\n  }\n}\n\nimpl Term {\n  pub fn check_unbound_refs(&self, book: &Book, unbounds: &mut HashSet<Name>) {\n    maybe_grow(|| {\n      if let Term::Ref { nam } = self {\n        if !(book.defs.contains_key(nam) || book.hvm_defs.contains_key(nam)) {\n          unbounds.insert(nam.clone());\n        }\n      }\n      for child in self.children() {\n        child.check_unbound_refs(book, unbounds);\n      }\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/check/unbound_vars.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{transform::desugar_bend, Ctx, Name, Pattern, Term},\n  maybe_grow,\n};\nuse std::collections::HashMap;\n\n#[derive(Debug, Clone)]\npub enum UnboundVarErr {\n  Local(Name),\n  Global { var: Name, declared: usize, used: usize },\n}\n\nimpl Ctx<'_> {\n  /// Checks that there are no unbound variables in all definitions.\n  pub fn check_unbound_vars(&mut self) -> Result<(), Diagnostics> {\n    for (def_name, def) in self.book.defs.iter_mut() {\n      let mut errs = Vec::new();\n      for rule in &mut def.rules {\n        // Note: Using a Vec instead of a Map is a deliberate optimization.\n        let mut scope = rule.pats.iter().flat_map(|pat| pat.binds()).map(|x| x.as_ref()).collect::<Vec<_>>();\n        rule.body.check_unbound_vars(&mut scope, &mut errs);\n      }\n\n      for err in errs {\n        self.info.add_function_error(err, def_name.clone(), def.source.clone());\n      }\n    }\n\n    self.info.fatal(())\n  }\n}\n\nimpl Term {\n  /// Checks that all variables are bound.\n  /// Precondition: References have been resolved, implicit binds have been solved.\n  pub fn check_unbound_vars<'a>(\n    &'a mut self,\n    scope: &mut Vec<Option<&'a Name>>,\n    errs: &mut Vec<UnboundVarErr>,\n  ) {\n    let mut globals = HashMap::new();\n    check_uses(self, scope, &mut globals, errs);\n\n    // Check global vars\n    for (nam, (declared, used)) in globals.into_iter().filter(|(_, (d, u))| !(*d == 1 && *u == 1)) {\n      errs.push(UnboundVarErr::Global { var: nam.clone(), declared, used });\n    }\n  }\n}\n\n/// Scope has the number of times a name was declared in the current scope\n/// Globals has how many times a global var name was declared and used.\npub fn check_uses<'a>(\n  term: &'a mut Term,\n  scope: &mut Vec<Option<&'a Name>>,\n  globals: &mut HashMap<Name, (usize, usize)>,\n  errs: &mut Vec<UnboundVarErr>,\n) {\n  maybe_grow(move || match term {\n    Term::Var { nam } => {\n      if !scope_contains(nam, scope) {\n        errs.push(UnboundVarErr::Local(nam.clone()));\n        *term = Term::Err;\n      }\n    }\n    Term::Link { nam } => {\n      globals.entry(nam.clone()).or_default().1 += 1;\n    }\n\n    _ => {\n      if let Some(pat) = term.pattern() {\n        check_global_binds(pat, globals)\n      }\n      for (child, binds) in term.children_mut_with_binds() {\n        for bind in binds.clone() {\n          scope.push(bind.as_ref());\n        }\n        check_uses(child, scope, globals, errs);\n        for _ in binds {\n          scope.pop();\n        }\n      }\n    }\n  })\n}\n\npub fn check_global_binds(pat: &Pattern, globals: &mut HashMap<Name, (usize, usize)>) {\n  match pat {\n    Pattern::Chn(nam) => {\n      globals.entry(nam.clone()).or_default().0 += 1;\n    }\n    _ => {\n      for child in pat.children() {\n        check_global_binds(child, globals)\n      }\n    }\n  }\n}\n\nfn scope_contains(nam: &Name, scope: &[Option<&Name>]) -> bool {\n  scope.iter().rev().any(|scope_nam| scope_nam == nam)\n}\n\nimpl std::fmt::Display for UnboundVarErr {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      UnboundVarErr::Local(var) => {\n        if var == desugar_bend::RECURSIVE_KW {\n          write!(\n            f,\n            \"Unbound variable '{}'.\\n    Note: '{}' is only a keyword inside the 'when' arm of a 'bend'.\",\n            var,\n            desugar_bend::RECURSIVE_KW\n          )\n        } else if let Some((pre, suf)) = var.rsplit_once('-') {\n          write!(\n            f,\n            \"Unbound variable '{var}'. If you wanted to subtract '{pre}' from '{suf}', you must separate it with spaces ('{pre} - {suf}') since '-' is a valid name character.\"\n          )\n        } else {\n          write!(f, \"Unbound variable '{var}'.\")\n        }\n      }\n      UnboundVarErr::Global { var, declared, used } => match (declared, used) {\n        (0, _) => write!(f, \"Unbound unscoped variable '${var}'.\"),\n        (_, 0) => write!(f, \"Unscoped variable from lambda 'λ${var}' is never used.\"),\n        (1, _) => write!(f, \"Unscoped variable '${var}' used more than once.\"),\n        (_, 1) => write!(f, \"Unscoped lambda 'λ${var}' declared more than once.\"),\n        (_, _) => {\n          write!(f, \"Unscoped lambda 'λ${var}' and unscoped variable '${var}' used more than once.\")\n        }\n      },\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/display.rs",
    "content": "use super::{Book, Definition, FanKind, Name, Num, Op, Pattern, Rule, Tag, Term, Type};\nuse crate::maybe_grow;\nuse std::{fmt, ops::Deref, sync::atomic::AtomicU64};\n\n/* Some aux structures for things that are not so simple to display */\n\npub struct DisplayFn<F: Fn(&mut fmt::Formatter) -> fmt::Result>(pub F);\n\nimpl<F: Fn(&mut fmt::Formatter) -> fmt::Result> fmt::Display for DisplayFn<F> {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    self.0(f)\n  }\n}\n\npub struct DisplayJoin<F, S>(pub F, pub S);\n\nimpl<F, I, S> fmt::Display for DisplayJoin<F, S>\nwhere\n  F: (Fn() -> I),\n  I: IntoIterator,\n  I::Item: fmt::Display,\n  S: fmt::Display,\n{\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    for (i, x) in self.0().into_iter().enumerate() {\n      if i != 0 {\n        self.1.fmt(f)?;\n      }\n      x.fmt(f)?;\n    }\n    Ok(())\n  }\n}\n\nmacro_rules! display {\n  ($($x:tt)*) => {\n    DisplayFn(move |f| write!(f, $($x)*))\n  };\n}\n\n/* The actual display implementations */\n\nstatic NAMEGEN: AtomicU64 = AtomicU64::new(0);\n\nfn gen_fan_pat_name() -> Name {\n  let n = NAMEGEN.fetch_add(1, std::sync::atomic::Ordering::SeqCst);\n  Name::new(format!(\"pat%{}\", super::num_to_name(n)))\n}\n\nfn namegen_reset() {\n  NAMEGEN.store(0, std::sync::atomic::Ordering::SeqCst);\n}\n\nimpl fmt::Display for Term {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    maybe_grow(|| match self {\n      Term::Lam { tag, pat, bod } => match &**pat {\n        Pattern::Fan(_, _, _) => {\n          let name = gen_fan_pat_name();\n          write!(f, \"{}λ{name} let {} = {name}; {}\", tag.display_padded(), pat, bod)\n        }\n        _ => write!(f, \"{}λ{} {}\", tag.display_padded(), pat, bod),\n      },\n      Term::Var { nam } => write!(f, \"{nam}\"),\n      Term::Link { nam } => write!(f, \"${nam}\"),\n      Term::Let { pat, val, nxt } => write!(f, \"let {} = {}; {}\", pat, val, nxt),\n      Term::With { typ, bod } => write!(f, \"with {typ} {{ {bod} }}\"),\n      Term::Ask { pat, val, nxt } => write!(f, \"ask {pat} = {val}; {nxt}\"),\n      Term::Use { nam, val, nxt } => {\n        let Some(nam) = nam else { unreachable!() };\n        write!(f, \"use {} = {}; {}\", nam, val, nxt)\n      }\n      Term::Ref { nam: def_name } => write!(f, \"{def_name}\"),\n      Term::App { tag, fun, arg } => {\n        write!(f, \"{}({} {})\", tag.display_padded(), fun.display_app(tag), arg)\n      }\n      Term::Mat { arg, bnd, with_bnd, with_arg, arms } => {\n        write!(f, \"match \")?;\n        if let Some(bnd) = bnd {\n          write!(f, \"{} = \", bnd)?;\n        }\n        write!(f, \"{} \", arg)?;\n        if !with_bnd.is_empty() {\n          write!(f, \"with \")?;\n          for (bnd, arg) in with_bnd.iter().zip(with_arg.iter()) {\n            write!(f, \"{} = {}, \", var_as_str(bnd), arg)?;\n          }\n        }\n        write!(f, \"{{ \")?;\n        for arm in arms {\n          write!(f, \"{}\", var_as_str(&arm.0))?;\n          for var in &arm.1 {\n            write!(f, \" {}\", var_as_str(var))?;\n          }\n          write!(f, \": {}; \", arm.2)?;\n        }\n        write!(f, \"}}\")\n      }\n      Term::Swt { arg, bnd, with_bnd, with_arg, pred, arms } => {\n        write!(f, \"switch \")?;\n        if let Some(bnd) = bnd {\n          write!(f, \"{bnd} = \")?;\n        }\n        write!(f, \"{arg} \")?;\n        if !with_bnd.is_empty() {\n          write!(f, \"with \")?;\n          for (bnd, arg) in with_bnd.iter().zip(with_arg.iter()) {\n            write!(f, \"{} = {}, \", var_as_str(bnd), arg)?;\n          }\n        }\n        write!(f, \"{{ \")?;\n        for (i, arm) in arms.iter().enumerate() {\n          if i == arms.len() - 1 {\n            write!(f, \"_\")?;\n            if let Some(pred) = pred {\n              write!(f, \" {pred}\")?;\n            }\n          } else {\n            write!(f, \"{i}\")?;\n          }\n          write!(f, \": {arm}; \")?;\n        }\n        write!(f, \"}}\")\n      }\n      Term::Fold { bnd, arg, with_bnd, with_arg, arms } => {\n        write!(f, \"fold \")?;\n        if let Some(bnd) = bnd {\n          write!(f, \"{} = \", bnd)?;\n        }\n        write!(f, \"{} \", arg)?;\n        if !with_bnd.is_empty() {\n          write!(f, \"with \")?;\n          for (bnd, arg) in with_bnd.iter().zip(with_arg.iter()) {\n            write!(f, \"{} = {}, \", var_as_str(bnd), arg)?;\n          }\n        }\n        write!(f, \"{{ \")?;\n        for arm in arms {\n          write!(f, \"{}\", var_as_str(&arm.0))?;\n          for var in &arm.1 {\n            write!(f, \" {}\", var_as_str(var))?;\n          }\n          write!(f, \": {}; \", arm.2)?;\n        }\n        write!(f, \"}}\")\n      }\n      Term::Bend { bnd: bind, arg: init, cond, step, base } => {\n        write!(f, \"bend \")?;\n        for (bind, init) in bind.iter().zip(init) {\n          if let Some(bind) = bind {\n            write!(f, \"{} = \", bind)?;\n          }\n          write!(f, \"{}, \", init)?;\n        }\n        write!(f, \"{{ when {cond}: {step}; else: {base} }}\")\n      }\n      Term::Fan { fan: FanKind::Tup, tag, els } => write!(f, \"{}({})\", tag, DisplayJoin(|| els.iter(), \", \")),\n      Term::Fan { fan: FanKind::Dup, tag, els } => write!(f, \"{}{{{}}}\", tag, DisplayJoin(|| els, \" \")),\n      Term::Era => write!(f, \"*\"),\n      Term::Num { val: Num::U24(val) } => write!(f, \"{val}\"),\n      Term::Num { val: Num::I24(val) } => write!(f, \"{}{}\", if *val < 0 { \"-\" } else { \"+\" }, val.abs()),\n      Term::Num { val: Num::F24(val) } => write!(f, \"{val:.3}\"),\n      Term::Nat { val } => write!(f, \"#{val}\"),\n      Term::Str { val } => write!(f, \"{val:?}\"),\n      Term::Oper { opr, fst, snd } => {\n        write!(f, \"({} {} {})\", opr, fst, snd)\n      }\n      Term::List { els } => write!(f, \"[{}]\", DisplayJoin(|| els.iter(), \", \"),),\n      Term::Open { typ, var, bod } => write!(f, \"open {typ} {var}; {bod}\"),\n      Term::Def { def, nxt } => {\n        write!(f, \"def \")?;\n        for rule in def.rules.iter() {\n          write!(f, \"{}\", rule.display(&def.name))?;\n        }\n        write!(f, \"{nxt}\")\n      }\n      Term::Err => write!(f, \"<Invalid>\"),\n    })\n  }\n}\n\nimpl fmt::Display for Tag {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    match self {\n      Tag::Named(name) => write!(f, \"#{name}\"),\n      Tag::Numeric(num) => write!(f, \"#{num}\"),\n      Tag::Auto => Ok(()),\n      Tag::Static => Ok(()),\n    }\n  }\n}\n\nimpl fmt::Display for Pattern {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    match self {\n      Pattern::Var(None) => write!(f, \"*\"),\n      Pattern::Var(Some(nam)) => write!(f, \"{nam}\"),\n      Pattern::Chn(nam) => write!(f, \"${nam}\"),\n      Pattern::Ctr(nam, pats) => {\n        write!(f, \"({}{})\", nam, DisplayJoin(|| pats.iter().map(|p| display!(\" {p}\")), \"\"))\n      }\n      Pattern::Num(num) => write!(f, \"{num}\"),\n      Pattern::Fan(FanKind::Tup, tag, pats) => write!(f, \"{}({})\", tag, DisplayJoin(|| pats, \", \")),\n      Pattern::Fan(FanKind::Dup, tag, pats) => write!(f, \"{}{{{}}}\", tag, DisplayJoin(|| pats, \" \")),\n      Pattern::Lst(pats) => write!(f, \"[{}]\", DisplayJoin(|| pats, \", \")),\n      Pattern::Str(str) => write!(f, \"\\\"{str}\\\"\"),\n    }\n  }\n}\n\nimpl Rule {\n  pub fn display<'a>(&'a self, def_name: &'a Name) -> impl fmt::Display + 'a {\n    display!(\n      \"({}{}) = {}\",\n      def_name,\n      DisplayJoin(|| self.pats.iter().map(|x| display!(\" {x}\")), \"\"),\n      self.body\n    )\n  }\n}\n\nimpl fmt::Display for Definition {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    namegen_reset();\n    writeln!(f, \"{}{}: {}\", if !self.check { \"unchecked \" } else { \"\" }, self.name, self.typ)?;\n    write!(f, \"{}\", DisplayJoin(|| self.rules.iter().map(|x| x.display(&self.name)), \"\\n\"))\n  }\n}\n\nimpl fmt::Display for Book {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    write!(f, \"{}\", DisplayJoin(|| self.defs.values(), \"\\n\\n\"))?;\n    for def in self.hvm_defs.values() {\n      writeln!(f, \"hvm {}:\\n{}\\n\", def.name, def.body.show())?;\n    }\n    Ok(())\n  }\n}\n\nimpl fmt::Display for Name {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    self.0.fmt(f)\n  }\n}\n\nimpl Term {\n  fn display_app<'a>(&'a self, tag: &'a Tag) -> impl fmt::Display + 'a {\n    maybe_grow(|| {\n      DisplayFn(move |f| match self {\n        Term::App { tag: tag2, fun, arg } if tag2 == tag => {\n          write!(f, \"{} {}\", fun.display_app(tag), arg)\n        }\n        _ => write!(f, \"{}\", self),\n      })\n    })\n  }\n}\n\nimpl fmt::Display for Op {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    match self {\n      Op::ADD => write!(f, \"+\"),\n      Op::SUB => write!(f, \"-\"),\n      Op::MUL => write!(f, \"*\"),\n      Op::DIV => write!(f, \"/\"),\n      Op::REM => write!(f, \"%\"),\n      Op::EQ => write!(f, \"==\"),\n      Op::NEQ => write!(f, \"!=\"),\n      Op::LT => write!(f, \"<\"),\n      Op::GT => write!(f, \">\"),\n      Op::AND => write!(f, \"&\"),\n      Op::OR => write!(f, \"|\"),\n      Op::XOR => write!(f, \"^\"),\n      Op::POW => write!(f, \"**\"),\n      Op::SHR => write!(f, \">>\"),\n      Op::SHL => write!(f, \"<<\"),\n      Op::LE => write!(f, \"<=\"),\n      Op::GE => write!(f, \">=\"),\n    }\n  }\n}\n\nimpl Tag {\n  pub fn display_padded(&self) -> impl fmt::Display + '_ {\n    DisplayFn(move |f| match self {\n      Tag::Named(name) => write!(f, \"#{name} \"),\n      Tag::Numeric(num) => write!(f, \"#{num} \"),\n      Tag::Auto => Ok(()),\n      Tag::Static => Ok(()),\n    })\n  }\n}\n\nimpl fmt::Display for Type {\n  fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {\n    maybe_grow(|| match self {\n      Type::Hole => write!(f, \"_\"),\n      Type::Var(nam) => write!(f, \"{nam}\"),\n      Type::Arr(lft, rgt) => write!(f, \"({} -> {})\", lft, rgt.display_arrow()),\n      Type::Ctr(nam, args) => {\n        if args.is_empty() {\n          write!(f, \"{nam}\")\n        } else {\n          write!(f, \"({nam} {})\", DisplayJoin(|| args.iter(), \" \"))\n        }\n      }\n      Type::Number(t) => write!(f, \"(Number {t})\"),\n      Type::Integer(t) => write!(f, \"(Integer {t})\"),\n      Type::U24 => write!(f, \"u24\"),\n      Type::I24 => write!(f, \"i24\"),\n      Type::F24 => write!(f, \"f24\"),\n      Type::Any => write!(f, \"Any\"),\n      Type::None => write!(f, \"None\"),\n      Type::Tup(els) => write!(f, \"({})\", DisplayJoin(|| els.iter(), \", \")),\n    })\n  }\n}\n\nimpl Type {\n  pub fn display_arrow(&self) -> impl fmt::Display + '_ {\n    maybe_grow(|| {\n      DisplayFn(move |f| match self {\n        Type::Arr(lft, rgt) => {\n          write!(f, \"{} -> {}\", lft, rgt.display_arrow())\n        }\n        _ => write!(f, \"{}\", self),\n      })\n    })\n  }\n}\n\nfn var_as_str(nam: &Option<Name>) -> &str {\n  nam.as_ref().map_or(\"*\", Name::deref)\n}\n\n/* Pretty printing  */\n\nimpl Book {\n  pub fn display_pretty(&self) -> impl fmt::Display + '_ {\n    display!(\n      \"{}\\n{}\",\n      DisplayJoin(|| self.defs.values().map(|def| def.display_pretty()), \"\\n\\n\"),\n      DisplayJoin(\n        || self.hvm_defs.values().map(|def| display!(\"hvm {}:\\n{}\", def.name, def.body.show())),\n        \"\\n\"\n      )\n    )\n  }\n}\n\nimpl Definition {\n  pub fn display_pretty(&self) -> impl fmt::Display + '_ {\n    namegen_reset();\n    display!(\"{}\", DisplayJoin(|| self.rules.iter().map(|x| x.display_pretty(&self.name)), \"\\n\"))\n  }\n}\n\nimpl Rule {\n  pub fn display_pretty<'a>(&'a self, def_name: &'a Name) -> impl fmt::Display + 'a {\n    display!(\n      \"({}{}) =\\n  {}\",\n      def_name,\n      DisplayJoin(|| self.pats.iter().map(|x| display!(\" {x}\")), \"\"),\n      self.body.display_pretty(2)\n    )\n  }\n\n  pub fn display_def_aux<'a>(&'a self, def_name: &'a Name, tab: usize) -> impl fmt::Display + 'a {\n    display!(\n      \"({}{}) =\\n  {:tab$}{}\",\n      def_name,\n      DisplayJoin(|| self.pats.iter().map(|x| display!(\" {x}\")), \"\"),\n      \"\",\n      self.body.display_pretty(tab + 2)\n    )\n  }\n}\n\nimpl Term {\n  pub fn display_pretty(&self, tab: usize) -> impl fmt::Display + '_ {\n    maybe_grow(|| {\n      DisplayFn(move |f| match self {\n        Term::Lam { tag, pat, bod } => match &**pat {\n          Pattern::Fan(_, _, _) => {\n            let name = gen_fan_pat_name();\n            write!(\n              f,\n              \"{}λ{name} let {} = {name};\\n{:tab$}{}\",\n              tag.display_padded(),\n              pat,\n              \"\",\n              bod.display_pretty(tab),\n            )\n          }\n          _ => write!(f, \"{}λ{} {}\", tag.display_padded(), pat, bod.display_pretty(tab)),\n        },\n        Term::Var { nam } => write!(f, \"{nam}\"),\n        Term::Link { nam } => write!(f, \"${nam}\"),\n        Term::Let { pat, val, nxt } => {\n          write!(f, \"let {} = {};\\n{:tab$}{}\", pat, val.display_pretty(tab), \"\", nxt.display_pretty(tab))\n        }\n        Term::With { typ, bod } => {\n          writeln!(f, \"with {typ} {{\")?;\n          writeln!(f, \"{:tab$}{}\", \"\", bod.display_pretty(tab + 2), tab = tab + 2)?;\n          write!(f, \"{:tab$}}}\", \"\")\n        }\n        Term::Ask { pat, val, nxt } => {\n          write!(f, \"ask {} = {};\\n{:tab$}{}\", pat, val.display_pretty(tab), \"\", nxt.display_pretty(tab))\n        }\n        Term::Use { nam, val, nxt } => {\n          write!(\n            f,\n            \"use {} = {};\\n{:tab$}{}\",\n            var_as_str(nam),\n            val.display_pretty(tab),\n            \"\",\n            nxt.display_pretty(tab)\n          )\n        }\n        Term::App { tag, fun, arg } => {\n          write!(\n            f,\n            \"{}({} {})\",\n            tag.display_padded(),\n            fun.display_app_pretty(tag, tab),\n            arg.display_pretty(tab)\n          )\n        }\n        Term::Fan { fan: FanKind::Tup, tag, els } => {\n          write!(f, \"{}({})\", tag, DisplayJoin(|| els.iter().map(|e| e.display_pretty(tab)), \", \"))\n        }\n        Term::Fan { fan: FanKind::Dup, tag, els } => {\n          write!(\n            f,\n            \"{}{{{}}}\",\n            tag.display_padded(),\n            DisplayJoin(|| els.iter().map(|e| e.display_pretty(tab)), \" \")\n          )\n        }\n        Term::List { els } => {\n          write!(f, \"[{}]\", DisplayJoin(|| els.iter().map(|e| e.display_pretty(tab)), \" \"))\n        }\n        Term::Oper { opr, fst, snd } => {\n          write!(f, \"({} {} {})\", opr, fst.display_pretty(tab), snd.display_pretty(tab))\n        }\n        Term::Mat { bnd, arg, with_bnd, with_arg, arms } => {\n          write!(f, \"match \")?;\n          if let Some(bnd) = bnd {\n            write!(f, \"{} = \", bnd)?;\n          }\n          write!(f, \"{} \", arg.display_pretty(tab))?;\n          if !with_bnd.is_empty() {\n            write!(f, \"with \")?;\n            for (bnd, arg) in with_bnd.iter().zip(with_arg.iter()) {\n              write!(f, \"{} = {}, \", var_as_str(bnd), arg)?;\n            }\n          }\n          write!(f, \"{{ \")?;\n          for arm in arms {\n            write!(f, \"\\n{:tab$}{}\", \"\", var_as_str(&arm.0), tab = tab + 2)?;\n            for var in &arm.1 {\n              write!(f, \" {}\", var_as_str(var))?;\n            }\n            write!(f, \": {}; \", arm.2.display_pretty(tab + 4))?;\n          }\n          write!(f, \"\\n{:tab$}}}\", \"\")\n        }\n        Term::Swt { bnd, arg, with_bnd, with_arg, pred, arms } => {\n          write!(f, \"switch \")?;\n          if let Some(bnd) = bnd {\n            write!(f, \"{bnd} = \")?;\n          }\n          write!(f, \"{} \", arg.display_pretty(tab))?;\n          if !with_bnd.is_empty() {\n            write!(f, \"with \")?;\n            for (bnd, arg) in with_bnd.iter().zip(with_arg.iter()) {\n              write!(f, \"{} = {}, \", var_as_str(bnd), arg)?;\n            }\n          }\n          writeln!(f, \"{{\")?;\n          for (i, arm) in arms.iter().enumerate() {\n            if i == arms.len() - 1 {\n              write!(f, \"{:tab$}_\", \"\", tab = tab + 2)?;\n              if let Some(pred) = pred {\n                write!(f, \" {pred}\")?;\n              }\n            } else {\n              write!(f, \"{:tab$}{i}\", \"\", tab = tab + 2)?;\n            }\n            writeln!(f, \": {};\", arm.display_pretty(tab + 4))?;\n          }\n          write!(f, \"{:tab$}}}\", \"\")\n        }\n        Term::Fold { bnd, arg, with_bnd, with_arg, arms } => {\n          write!(f, \"fold \")?;\n          if let Some(bnd) = bnd {\n            write!(f, \"{} = \", bnd)?;\n          }\n          write!(f, \"{} \", arg.display_pretty(tab))?;\n          if !with_bnd.is_empty() {\n            write!(f, \"with \")?;\n            for (bnd, arg) in with_bnd.iter().zip(with_arg.iter()) {\n              write!(f, \"{} = {}, \", var_as_str(bnd), arg)?;\n            }\n          }\n          write!(f, \"{{ \")?;\n          for arm in arms {\n            write!(f, \"\\n{:tab$}{}\", \"\", var_as_str(&arm.0), tab = tab + 2)?;\n            for var in &arm.1 {\n              write!(f, \" {}\", var_as_str(var))?;\n            }\n            write!(f, \": {}; \", arm.2.display_pretty(tab + 4))?;\n          }\n          write!(f, \"\\n{:tab$}}}\", \"\")\n        }\n        Term::Bend { bnd: bind, arg: init, cond, step, base } => {\n          write!(f, \"bend \")?;\n          for (bind, init) in bind.iter().zip(init) {\n            if let Some(bind) = bind {\n              write!(f, \"{} = \", bind)?;\n            }\n            write!(f, \"{}, \", init)?;\n          }\n          writeln!(f, \"{{\")?;\n          writeln!(f, \"{:tab$}when {}:\", \"\", cond.display_pretty(tab + 2), tab = tab + 2)?;\n          writeln!(f, \"{:tab$}{}\", \"\", step.display_pretty(tab + 4), tab = tab + 4)?;\n          writeln!(f, \"{:tab$}else:\", \"\", tab = tab + 2)?;\n          writeln!(f, \"{:tab$}{}\", \"\", base.display_pretty(tab + 4), tab = tab + 4)?;\n          write!(f, \"{:tab$}}}\", \"\")\n        }\n        Term::Open { typ, var, bod } => {\n          write!(f, \"open {typ} {var};\\n{:tab$}{}\", \"\", bod.display_pretty(tab))\n        }\n        Term::Nat { val } => write!(f, \"#{val}\"),\n        Term::Num { val: Num::U24(val) } => write!(f, \"{val}\"),\n        Term::Num { val: Num::I24(val) } => write!(f, \"{}{}\", if *val < 0 { \"-\" } else { \"+\" }, val.abs()),\n        Term::Num { val: Num::F24(val) } => write!(f, \"{val:.3}\"),\n        Term::Str { val } => write!(f, \"{val:?}\"),\n        Term::Ref { nam } => write!(f, \"{nam}\"),\n        Term::Def { def, nxt } => {\n          write!(f, \"def \")?;\n          for (i, rule) in def.rules.iter().enumerate() {\n            if i == 0 {\n              writeln!(f, \"{}\", rule.display_def_aux(&def.name, tab + 4))?;\n            } else {\n              writeln!(f, \"{:tab$}{}\", \"\", rule.display_def_aux(&def.name, tab + 4), tab = tab + 4)?;\n            }\n          }\n          write!(f, \"{:tab$}{}\", \"\", nxt.display_pretty(tab))\n        }\n        Term::Era => write!(f, \"*\"),\n        Term::Err => write!(f, \"<Error>\"),\n      })\n    })\n  }\n\n  fn display_app_pretty<'a>(&'a self, tag: &'a Tag, tab: usize) -> impl fmt::Display + 'a {\n    maybe_grow(|| {\n      DisplayFn(move |f| match self {\n        Term::App { tag: tag2, fun, arg } if tag2 == tag => {\n          write!(f, \"{} {}\", fun.display_app_pretty(tag, tab), arg.display_pretty(tab))\n        }\n        _ => write!(f, \"{}\", self.display_pretty(tab)),\n      })\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/load_book.rs",
    "content": "use super::{\n  parser::{FunParser, ParseBook},\n  Book, Name, Source, SourceKind,\n};\nuse crate::{\n  diagnostics::{Diagnostics, DiagnosticsConfig, TextSpan},\n  imports::PackageLoader,\n};\nuse std::path::Path;\n\n// TODO: Refactor so that we don't mix the two syntaxes here.\n\n/// Reads a file and parses to a definition book.\npub fn load_file_to_book(\n  path: &Path,\n  package_loader: impl PackageLoader,\n  diag: DiagnosticsConfig,\n) -> Result<Book, Diagnostics> {\n  match path.try_exists() {\n    Ok(exists) => {\n      if !exists {\n        return Err(format!(\"The file '{}' was not found.\", path.display()).into());\n      }\n      let code = std::fs::read_to_string(path).map_err(|e| e.to_string())?;\n      load_to_book(path, &code, package_loader, diag)\n    }\n    Err(e) => Err(e.to_string().into()),\n  }\n}\n\npub fn load_to_book(\n  origin: &Path,\n  code: &str,\n  package_loader: impl PackageLoader,\n  diag: DiagnosticsConfig,\n) -> Result<Book, Diagnostics> {\n  let builtins = ParseBook::builtins();\n  let book = do_parse_book(code, origin, builtins)?;\n  book.load_imports(package_loader, diag)\n}\n\npub fn do_parse_book(code: &str, origin: &Path, mut book: ParseBook) -> Result<ParseBook, Diagnostics> {\n  book.source = Name::new(origin.to_string_lossy());\n  FunParser::new(book.source.clone(), code, false).parse_book(book).map_err(|err| {\n    let mut diagnostics = Diagnostics::default();\n    let span = TextSpan::from_byte_span(code, err.span.0..err.span.1);\n    let source =\n      Source { file: Some(origin.to_string_lossy().into()), span: Some(span), kind: SourceKind::User };\n    diagnostics.add_parsing_error(err, source);\n    diagnostics\n  })\n}\n"
  },
  {
    "path": "src/fun/mod.rs",
    "content": "use crate::{\n  diagnostics::{Diagnostics, DiagnosticsConfig, TextSpan},\n  imports::Import,\n  maybe_grow, multi_iterator, ENTRY_POINT,\n};\nuse indexmap::{IndexMap, IndexSet};\nuse interner::global::{GlobalPool, GlobalString};\nuse itertools::Itertools;\nuse std::{\n  borrow::Cow,\n  hash::Hash,\n  ops::{Deref, Range},\n};\n\npub mod builtins;\npub mod check;\npub mod display;\npub mod load_book;\npub mod net_to_term;\npub mod parser;\npub mod term_to_net;\npub mod transform;\n\npub use net_to_term::{net_to_term, ReadbackError};\npub use term_to_net::{book_to_hvm, term_to_hvm};\n\npub static STRINGS: GlobalPool<String> = GlobalPool::new();\n#[derive(Debug)]\npub struct Ctx<'book> {\n  pub book: &'book mut Book,\n  pub info: Diagnostics,\n}\n\nimpl Ctx<'_> {\n  pub fn new(book: &mut Book, diagnostics_cfg: DiagnosticsConfig) -> Ctx {\n    Ctx { book, info: Diagnostics::new(diagnostics_cfg) }\n  }\n}\n\n/// The representation of a program.\n#[derive(Debug, Clone, Default)]\npub struct Book {\n  /// Function definitions.\n  pub defs: Definitions,\n\n  /// HVM native function definitions.\n  pub hvm_defs: HvmDefinitions,\n\n  /// Algebraic datatype definitions.\n  pub adts: Adts,\n\n  /// Map of constructor name to type name.\n  pub ctrs: Constructors,\n\n  /// A custom or default \"main\" entrypoint.\n  pub entrypoint: Option<Name>,\n\n  /// Imports declared in the program.\n  pub imports: Vec<Import>,\n}\n\npub type Definitions = IndexMap<Name, Definition>;\npub type HvmDefinitions = IndexMap<Name, HvmDefinition>;\npub type Adts = IndexMap<Name, Adt>;\npub type Constructors = IndexMap<Name, Name>;\n\n/// A pattern matching function definition.\n#[derive(Debug, Clone, PartialEq, Eq, Hash)]\npub struct Definition {\n  pub name: Name,\n  pub typ: Type,\n  pub check: bool,\n  pub rules: Vec<Rule>,\n  pub source: Source,\n}\n\n#[derive(Debug, Clone, PartialEq, Eq, Hash)]\npub struct Source {\n  pub file: Option<String>,\n  pub span: Option<TextSpan>,\n  pub kind: SourceKind,\n}\n\n#[derive(Debug, Clone, PartialEq, Eq, Hash)]\npub enum SourceKind {\n  /// Built into the language.\n  Builtin,\n  /// Was generated by the compiler.\n  Generated,\n  /// Source code from a local book.\n  User,\n  /// Source code from an imported book.\n  Imported,\n  /// Unknown by the compiler at this stage.\n  Unknown,\n}\n\n/// An HVM native definition.\n#[derive(Debug, Clone)]\npub struct HvmDefinition {\n  pub name: Name,\n  pub typ: Type,\n  pub body: hvm::ast::Net,\n  pub source: Source,\n}\n\n#[derive(Debug, Clone, PartialEq, Eq, Hash)]\npub enum Type {\n  Any,\n  Hole,\n  Var(Name),\n  Ctr(Name, Vec<Type>),\n  Arr(Box<Type>, Box<Type>),\n  Tup(Vec<Type>),\n  U24,\n  F24,\n  I24,\n  None,\n  Number(Box<Type>),\n  Integer(Box<Type>),\n}\n\n/// A pattern matching rule of a definition.\n#[derive(Debug, Clone, Default, PartialEq, Eq, Hash)]\npub struct Rule {\n  pub pats: Vec<Pattern>,\n  pub body: Term,\n}\n\n#[derive(Debug, Default, PartialEq, Eq, Hash)]\npub enum Term {\n  Lam {\n    tag: Tag,\n    pat: Box<Pattern>,\n    bod: Box<Term>,\n  },\n  Var {\n    nam: Name,\n  },\n  Link {\n    nam: Name,\n  },\n  Let {\n    pat: Box<Pattern>,\n    val: Box<Term>,\n    nxt: Box<Term>,\n  },\n  With {\n    typ: Name,\n    bod: Box<Term>,\n  },\n  Ask {\n    pat: Box<Pattern>,\n    val: Box<Term>,\n    nxt: Box<Term>,\n  },\n  Use {\n    nam: Option<Name>,\n    val: Box<Term>,\n    nxt: Box<Term>,\n  },\n  App {\n    tag: Tag,\n    fun: Box<Term>,\n    arg: Box<Term>,\n  },\n  /// Either a tuple or a superposition\n  Fan {\n    fan: FanKind,\n    tag: Tag,\n    els: Vec<Term>,\n  },\n  Num {\n    val: Num,\n  },\n  Nat {\n    val: u32,\n  },\n  Str {\n    val: GlobalString,\n  },\n  List {\n    els: Vec<Term>,\n  },\n  /// A numeric operation between built-in numbers.\n  Oper {\n    opr: Op,\n    fst: Box<Term>,\n    snd: Box<Term>,\n  },\n  /// Pattern matching on an ADT.\n  Mat {\n    bnd: Option<Name>,\n    arg: Box<Term>,\n    with_bnd: Vec<Option<Name>>,\n    with_arg: Vec<Term>,\n    arms: Vec<MatchRule>,\n  },\n  /// Native pattern matching on numbers\n  Swt {\n    bnd: Option<Name>,\n    arg: Box<Term>,\n    with_bnd: Vec<Option<Name>>,\n    with_arg: Vec<Term>,\n    pred: Option<Name>,\n    arms: Vec<Term>,\n  },\n  Fold {\n    bnd: Option<Name>,\n    arg: Box<Term>,\n    with_bnd: Vec<Option<Name>>,\n    with_arg: Vec<Term>,\n    arms: Vec<MatchRule>,\n  },\n  Bend {\n    bnd: Vec<Option<Name>>,\n    arg: Vec<Term>,\n    cond: Box<Term>,\n    step: Box<Term>,\n    base: Box<Term>,\n  },\n  Open {\n    typ: Name,\n    var: Name,\n    bod: Box<Term>,\n  },\n  Ref {\n    nam: Name,\n  },\n  Def {\n    def: Definition,\n    nxt: Box<Term>,\n  },\n  Era,\n  #[default]\n  Err,\n}\n\npub type MatchRule = (Option<Name>, Vec<Option<Name>>, Term);\n\n#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]\npub enum FanKind {\n  Tup,\n  Dup,\n}\n\n#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]\npub enum Op {\n  ADD,\n  SUB,\n  MUL,\n  DIV,\n  REM,\n  EQ,\n  NEQ,\n  LT,\n  GT,\n  AND,\n  OR,\n  XOR,\n  SHL,\n  SHR,\n  // a^b\n  POW,\n  /// Less than or equal\n  LE,\n  /// Greater than or equal\n  GE,\n}\n\n#[derive(Debug, Clone, Copy)]\npub enum Num {\n  U24(u32),\n  I24(i32),\n  F24(f32),\n}\n\n#[derive(Debug, Clone, PartialEq, Eq, Hash)]\npub enum Pattern {\n  Var(Option<Name>),\n  Chn(Name),\n  Ctr(Name, Vec<Pattern>),\n  Num(u32),\n  /// Either a tuple or a duplication\n  Fan(FanKind, Tag, Vec<Pattern>),\n  Lst(Vec<Pattern>),\n  Str(GlobalString),\n}\n\n#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]\npub enum Tag {\n  Named(Name),\n  Numeric(u16),\n  Auto,\n  #[default]\n  Static,\n}\n\n/// A user defined datatype\n#[derive(Debug, Clone)]\npub struct Adt {\n  pub name: Name,\n  pub vars: Vec<Name>,\n  pub ctrs: IndexMap<Name, AdtCtr>,\n  pub source: Source,\n}\n\n#[derive(Debug, Clone)]\npub struct AdtCtr {\n  pub name: Name,\n  pub typ: Type,\n  pub fields: Vec<CtrField>,\n}\n\n#[derive(Debug, Clone)]\npub struct CtrField {\n  pub nam: Name,\n  pub rec: bool,\n  pub typ: Type,\n}\n\n#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]\npub struct Name(GlobalString);\n\n/* Implementations */\n\nimpl PartialEq<str> for Name {\n  fn eq(&self, other: &str) -> bool {\n    &**self == other\n  }\n}\n\nimpl PartialEq<&str> for Name {\n  fn eq(&self, other: &&str) -> bool {\n    self == *other\n  }\n}\n\nimpl PartialEq<Option<Name>> for Name {\n  fn eq(&self, other: &Option<Name>) -> bool {\n    if let Some(other) = other.as_ref() {\n      self == other\n    } else {\n      false\n    }\n  }\n}\n\nimpl PartialEq<Name> for Option<Name> {\n  fn eq(&self, other: &Name) -> bool {\n    other.eq(self)\n  }\n}\n\nimpl PartialEq<Option<&Name>> for Name {\n  fn eq(&self, other: &Option<&Name>) -> bool {\n    if let Some(other) = other {\n      &self == other\n    } else {\n      false\n    }\n  }\n}\n\nimpl PartialEq<Name> for Option<&Name> {\n  fn eq(&self, other: &Name) -> bool {\n    other.eq(self)\n  }\n}\n\npub fn num_to_name(mut num: u64) -> String {\n  let mut name = String::new();\n  loop {\n    let c = (num % 26) as u8 + b'a';\n    name.push(c as char);\n    num /= 26;\n    if num == 0 {\n      break;\n    }\n  }\n  name\n}\n\nimpl Tag {\n  pub fn adt_name(name: &Name) -> Self {\n    Self::Named(name.clone())\n  }\n}\n\nimpl Clone for Term {\n  fn clone(&self) -> Self {\n    maybe_grow(|| match self {\n      Self::Lam { tag, pat, bod } => Self::Lam { tag: tag.clone(), pat: pat.clone(), bod: bod.clone() },\n      Self::Var { nam } => Self::Var { nam: nam.clone() },\n      Self::Link { nam } => Self::Link { nam: nam.clone() },\n      Self::Let { pat, val, nxt } => Self::Let { pat: pat.clone(), val: val.clone(), nxt: nxt.clone() },\n      Self::With { typ, bod } => Self::With { typ: typ.clone(), bod: bod.clone() },\n      Self::Ask { pat, val, nxt } => Self::Ask { pat: pat.clone(), val: val.clone(), nxt: nxt.clone() },\n      Self::Use { nam, val, nxt } => Self::Use { nam: nam.clone(), val: val.clone(), nxt: nxt.clone() },\n      Self::App { tag, fun, arg } => Self::App { tag: tag.clone(), fun: fun.clone(), arg: arg.clone() },\n      Self::Fan { fan, tag, els } => Self::Fan { fan: *fan, tag: tag.clone(), els: els.clone() },\n      Self::Num { val } => Self::Num { val: *val },\n      Self::Nat { val } => Self::Nat { val: *val },\n      Self::Str { val } => Self::Str { val: val.clone() },\n      Self::List { els } => Self::List { els: els.clone() },\n      Self::Oper { opr, fst, snd } => Self::Oper { opr: *opr, fst: fst.clone(), snd: snd.clone() },\n      Self::Mat { arg, bnd, with_bnd, with_arg, arms } => Self::Mat {\n        arg: arg.clone(),\n        bnd: bnd.clone(),\n        with_bnd: with_bnd.clone(),\n        with_arg: with_arg.clone(),\n        arms: arms.clone(),\n      },\n      Self::Swt { arg, bnd, with_bnd, with_arg, pred, arms } => Self::Swt {\n        arg: arg.clone(),\n        bnd: bnd.clone(),\n        with_bnd: with_bnd.clone(),\n        with_arg: with_arg.clone(),\n        pred: pred.clone(),\n        arms: arms.clone(),\n      },\n      Self::Fold { bnd, arg, with_bnd, with_arg, arms } => Self::Fold {\n        bnd: bnd.clone(),\n        arg: arg.clone(),\n        with_bnd: with_bnd.clone(),\n        with_arg: with_arg.clone(),\n        arms: arms.clone(),\n      },\n      Self::Bend { bnd: bind, arg: init, cond, step, base } => Self::Bend {\n        bnd: bind.clone(),\n        arg: init.clone(),\n        cond: cond.clone(),\n        step: step.clone(),\n        base: base.clone(),\n      },\n      Self::Open { typ, var, bod: nxt } => {\n        Self::Open { typ: typ.clone(), var: var.clone(), bod: nxt.clone() }\n      }\n      Self::Ref { nam } => Self::Ref { nam: nam.clone() },\n      Self::Def { def, nxt } => Self::Def { def: def.clone(), nxt: nxt.clone() },\n      Self::Era => Self::Era,\n      Self::Err => Self::Err,\n    })\n  }\n}\n\nimpl Drop for Term {\n  fn drop(&mut self) {\n    loop {\n      // Each iteration moves a child with nested nodes to the last child.\n      // When no nested on the left, we can just drop it and they'll be handled\n      // by the special cases;\n      let mut i = self.children_mut().filter(|x| x.children().next().is_some());\n\n      // No nested children, just drop everything\n      let Some(b) = i.next() else { break };\n\n      // Only one child with nested nodes, move it up to be the new root.\n      // Non-nested (height=0) children are dropped recursively.\n      if { i }.next().is_none() {\n        *self = std::mem::take(b);\n        continue;\n      }\n\n      // Rotate the tree right:\n      // ```text\n      //     a            b\n      //    / \\          / \\\n      //   b   e   ->   c   a\n      //  / \\              / \\\n      // c   d            d   e\n      // ```\n      let tmp = Term::Err;\n      let d = std::mem::replace(b.children_mut().next_back().unwrap(), tmp);\n      let b = std::mem::replace(b, d);\n      let a = std::mem::replace(self, b);\n      let tmp = std::mem::replace(self.children_mut().next_back().unwrap(), a);\n      std::mem::forget(tmp);\n    }\n  }\n}\n\nimpl From<Option<Name>> for Pattern {\n  fn from(value: Option<Name>) -> Self {\n    Pattern::Var(value)\n  }\n}\n\nimpl Term {\n  /* Common construction patterns */\n\n  /// Lambda with a static tag\n  pub fn lam(pat: Pattern, bod: Term) -> Self {\n    Self::tagged_lam(Tag::Static, pat, bod)\n  }\n\n  /// Lambda with any tag\n  pub fn tagged_lam(tag: Tag, pat: Pattern, bod: Term) -> Self {\n    Term::Lam { tag, pat: Box::new(pat), bod: Box::new(bod) }\n  }\n\n  /// Wraps a term in lambdas, so that the outermost lambda is the first given element.\n  ///\n  /// The lambda equivalent of [`Term::call`].\n  pub fn rfold_lams(term: Term, pats: impl DoubleEndedIterator<Item = Option<Name>>) -> Self {\n    pats.into_iter().rfold(term, |bod, nam| Self::lam(Pattern::Var(nam), bod))\n  }\n\n  pub fn var_or_era(nam: Option<Name>) -> Self {\n    if let Some(nam) = nam {\n      Term::Var { nam }\n    } else {\n      Term::Era\n    }\n  }\n\n  pub fn app(fun: Term, arg: Term) -> Self {\n    Self::tagged_app(Tag::Static, fun, arg)\n  }\n\n  pub fn tagged_app(tag: Tag, fun: Term, arg: Term) -> Self {\n    Term::App { tag, fun: Box::new(fun), arg: Box::new(arg) }\n  }\n\n  /// Make a call term by folding args around a called function term with applications.\n  pub fn call(called: Term, args: impl IntoIterator<Item = Term>) -> Self {\n    args.into_iter().fold(called, Term::app)\n  }\n\n  pub fn tagged_call(tag: Tag, called: Term, args: impl IntoIterator<Item = Term>) -> Self {\n    args.into_iter().fold(called, |acc, arg| Term::tagged_app(tag.clone(), acc, arg))\n  }\n\n  /// Apply a variable to a term by the var name.\n  pub fn arg_call(fun: Term, arg: Name) -> Self {\n    Term::app(fun, Term::Var { nam: arg })\n  }\n\n  pub fn r#ref(name: &str) -> Self {\n    Term::Ref { nam: Name::new(name) }\n  }\n\n  pub fn str(str: &str) -> Self {\n    Term::Str { val: STRINGS.get(str) }\n  }\n\n  pub fn sub_num(arg: Term, val: Num) -> Term {\n    if val.is_zero() {\n      arg\n    } else {\n      Term::Oper { opr: Op::SUB, fst: Box::new(arg), snd: Box::new(Term::Num { val }) }\n    }\n  }\n\n  pub fn add_num(arg: Term, val: Num) -> Term {\n    if val.is_zero() {\n      arg\n    } else {\n      Term::Oper { opr: Op::ADD, fst: Box::new(arg), snd: Box::new(Term::Num { val }) }\n    }\n  }\n\n  pub fn pattern(&self) -> Option<&Pattern> {\n    match self {\n      Term::Lam { pat, .. } | Term::Let { pat, .. } => Some(pat),\n      _ => None,\n    }\n  }\n\n  pub fn pattern_mut(&mut self) -> Option<&mut Pattern> {\n    match self {\n      Term::Lam { pat, .. } | Term::Let { pat, .. } => Some(pat),\n      _ => None,\n    }\n  }\n\n  /* Iterators */\n  pub fn children(&self) -> impl DoubleEndedIterator<Item = &Term> + Clone {\n    multi_iterator!(ChildrenIter { Zero, One, Two, Vec, Mat, Swt, Bend, Fold });\n    match self {\n      Term::Mat { arg, bnd: _, with_bnd: _, with_arg, arms } => {\n        ChildrenIter::Mat([arg.as_ref()].into_iter().chain(with_arg.iter()).chain(arms.iter().map(|r| &r.2)))\n      }\n      Term::Swt { arg, bnd: _, with_bnd: _, with_arg, pred: _, arms } => {\n        ChildrenIter::Swt([arg.as_ref()].into_iter().chain(with_arg.iter()).chain(arms))\n      }\n      Term::Bend { bnd: _, arg: init, cond, step, base } => {\n        ChildrenIter::Bend(init.iter().chain([cond.as_ref(), step.as_ref(), base.as_ref()]))\n      }\n      Term::Fold { bnd: _, arg, with_bnd: _, with_arg, arms } => {\n        ChildrenIter::Fold([arg.as_ref()].into_iter().chain(with_arg.iter()).chain(arms.iter().map(|r| &r.2)))\n      }\n      Term::Fan { els, .. } | Term::List { els } => ChildrenIter::Vec(els),\n      Term::Let { val: fst, nxt: snd, .. }\n      | Term::Ask { val: fst, nxt: snd, .. }\n      | Term::Use { val: fst, nxt: snd, .. }\n      | Term::App { fun: fst, arg: snd, .. }\n      | Term::Oper { fst, snd, .. } => ChildrenIter::Two([fst.as_ref(), snd.as_ref()]),\n      Term::Lam { bod, .. } | Term::With { bod, .. } | Term::Open { bod, .. } => {\n        ChildrenIter::One([bod.as_ref()])\n      }\n      Term::Var { .. }\n      | Term::Link { .. }\n      | Term::Num { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::Ref { .. }\n      | Term::Def { .. }\n      | Term::Era\n      | Term::Err => ChildrenIter::Zero([]),\n    }\n  }\n\n  pub fn children_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut Term> {\n    multi_iterator!(ChildrenIter { Zero, One, Two, Vec, Mat, Swt, Bend, Fold });\n    match self {\n      Term::Mat { arg, bnd: _, with_bnd: _, with_arg, arms } => ChildrenIter::Mat(\n        [arg.as_mut()].into_iter().chain(with_arg.iter_mut()).chain(arms.iter_mut().map(|r| &mut r.2)),\n      ),\n      Term::Swt { arg, bnd: _, with_bnd: _, with_arg, pred: _, arms } => {\n        ChildrenIter::Swt([arg.as_mut()].into_iter().chain(with_arg.iter_mut()).chain(arms))\n      }\n      Term::Bend { bnd: _, arg: init, cond, step, base } => {\n        ChildrenIter::Bend(init.iter_mut().chain([cond.as_mut(), step.as_mut(), base.as_mut()]))\n      }\n      Term::Fold { bnd: _, arg, with_bnd: _, with_arg, arms } => ChildrenIter::Fold(\n        [arg.as_mut()].into_iter().chain(with_arg.iter_mut()).chain(arms.iter_mut().map(|r| &mut r.2)),\n      ),\n      Term::Fan { els, .. } | Term::List { els } => ChildrenIter::Vec(els),\n      Term::Let { val: fst, nxt: snd, .. }\n      | Term::Ask { val: fst, nxt: snd, .. }\n      | Term::Use { val: fst, nxt: snd, .. }\n      | Term::App { fun: fst, arg: snd, .. }\n      | Term::Oper { fst, snd, .. } => ChildrenIter::Two([fst.as_mut(), snd.as_mut()]),\n      Term::Lam { bod, .. } | Term::With { bod, .. } | Term::Open { bod, .. } => {\n        ChildrenIter::One([bod.as_mut()])\n      }\n      Term::Var { .. }\n      | Term::Link { .. }\n      | Term::Num { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::Ref { .. }\n      | Term::Def { .. }\n      | Term::Era\n      | Term::Err => ChildrenIter::Zero([]),\n    }\n  }\n\n  /// An iterator over the subterms with an iterator over the binds\n  /// introduced by the current term for each subterm.\n  ///\n  /// Must only be called after fix_matches.\n  ///\n  /// Example: A lambda introduces 1 bind for it's only subterm,\n  /// while a let expression introduces 0 binds for the value and\n  /// many binds for the next term.\n  pub fn children_with_binds(\n    &self,\n  ) -> impl DoubleEndedIterator<Item = (&Term, impl DoubleEndedIterator<Item = &Option<Name>> + Clone)> + Clone\n  {\n    multi_iterator!(ChildrenIter { Zero, One, Two, Vec, Mat, Swt, Bend });\n    multi_iterator!(BindsIter { Zero, One, Mat, Pat, SwtNum, SwtSucc, Bend });\n    match self {\n      Term::Mat { arg, bnd, with_bnd, with_arg, arms }\n      | Term::Fold { bnd, arg, with_bnd, with_arg, arms } => {\n        let arg = [(arg.as_ref(), BindsIter::Zero([]))].into_iter();\n        let with_arg = with_arg.iter().map(|a| (a, BindsIter::Zero([])));\n        let arms = arms\n          .iter()\n          .map(move |r| (&r.2, BindsIter::Mat([bnd].into_iter().chain(r.1.iter()).chain(with_bnd.iter()))));\n        ChildrenIter::Mat(arg.chain(with_arg).chain(arms))\n      }\n      Term::Swt { arg, bnd, with_bnd, with_arg, pred, arms } => {\n        let (succ, nums) = arms.split_last().unwrap();\n        ChildrenIter::Swt(\n          [(arg.as_ref(), BindsIter::Zero([]))]\n            .into_iter()\n            .chain(with_arg.iter().map(|a| (a, BindsIter::Zero([]))))\n            .chain(nums.iter().map(move |x| (x, BindsIter::SwtNum([bnd].into_iter().chain(with_bnd.iter())))))\n            .chain([(succ, BindsIter::SwtSucc([bnd, pred].into_iter().chain(with_bnd.iter())))]),\n        )\n      }\n      Term::Bend { bnd: bind, arg: init, cond, step, base } => {\n        ChildrenIter::Bend(init.iter().map(|x| (x, BindsIter::Zero([]))).chain([\n          (cond.as_ref(), BindsIter::Bend(bind.iter())),\n          (step.as_ref(), BindsIter::Bend(bind.iter())),\n          (base.as_ref(), BindsIter::Bend(bind.iter())),\n        ]))\n      }\n\n      Term::Fan { els, .. } | Term::List { els } => {\n        ChildrenIter::Vec(els.iter().map(|el| (el, BindsIter::Zero([]))))\n      }\n      Term::Let { pat, val, nxt, .. } | Term::Ask { pat, val, nxt, .. } => {\n        ChildrenIter::Two([(val.as_ref(), BindsIter::Zero([])), (nxt.as_ref(), BindsIter::Pat(pat.binds()))])\n      }\n      Term::Use { nam, val, nxt, .. } => {\n        ChildrenIter::Two([(val.as_ref(), BindsIter::Zero([])), (nxt.as_ref(), BindsIter::One([nam]))])\n      }\n      Term::App { fun: fst, arg: snd, .. } | Term::Oper { fst, snd, .. } => {\n        ChildrenIter::Two([(fst.as_ref(), BindsIter::Zero([])), (snd.as_ref(), BindsIter::Zero([]))])\n      }\n      Term::Lam { pat, bod, .. } => ChildrenIter::One([(bod.as_ref(), BindsIter::Pat(pat.binds()))]),\n      Term::With { bod, .. } => ChildrenIter::One([(bod.as_ref(), BindsIter::Zero([]))]),\n      Term::Var { .. }\n      | Term::Link { .. }\n      | Term::Num { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::Ref { .. }\n      | Term::Def { .. }\n      | Term::Era\n      | Term::Err => ChildrenIter::Zero([]),\n      Term::Open { .. } => unreachable!(\"Open should be removed in earlier pass\"),\n    }\n  }\n\n  /// Must only be called after fix_matches.\n  pub fn children_mut_with_binds(\n    &mut self,\n  ) -> impl DoubleEndedIterator<Item = (&mut Term, impl DoubleEndedIterator<Item = &Option<Name>> + Clone)>\n  {\n    multi_iterator!(ChildrenIter { Zero, One, Two, Vec, Mat, Swt, Bend });\n    multi_iterator!(BindsIter { Zero, One, Mat, SwtNum, SwtSucc, Pat, Bend });\n    match self {\n      Term::Mat { arg, bnd, with_bnd, with_arg, arms }\n      | Term::Fold { bnd, arg, with_bnd, with_arg, arms } => {\n        let arg = [(arg.as_mut(), BindsIter::Zero([]))].into_iter();\n        let with_arg = with_arg.iter_mut().map(|a| (a, BindsIter::Zero([])));\n        let arms = arms\n          .iter_mut()\n          .map(|r| (&mut r.2, BindsIter::Mat([&*bnd].into_iter().chain(r.1.iter()).chain(with_bnd.iter()))));\n        ChildrenIter::Mat(arg.chain(with_arg).chain(arms))\n      }\n      Term::Swt { arg, bnd, with_bnd, with_arg, pred, arms } => {\n        let (succ, nums) = arms.split_last_mut().unwrap();\n        ChildrenIter::Swt(\n          [(arg.as_mut(), BindsIter::Zero([]))]\n            .into_iter()\n            .chain(with_arg.iter_mut().map(|a| (a, BindsIter::Zero([]))))\n            .chain(\n              nums.iter_mut().map(|x| (x, BindsIter::SwtNum([&*bnd].into_iter().chain(with_bnd.iter())))),\n            )\n            .chain([(succ, BindsIter::SwtSucc([&*bnd, &*pred].into_iter().chain(with_bnd.iter())))]),\n        )\n      }\n      Term::Bend { bnd, arg, cond, step, base } => {\n        ChildrenIter::Bend(arg.iter_mut().map(|x| (x, BindsIter::Zero([]))).chain([\n          (cond.as_mut(), BindsIter::Bend(bnd.iter())),\n          (step.as_mut(), BindsIter::Bend(bnd.iter())),\n          (base.as_mut(), BindsIter::Bend(bnd.iter())),\n        ]))\n      }\n\n      Term::Fan { els, .. } | Term::List { els } => {\n        ChildrenIter::Vec(els.iter_mut().map(|el| (el, BindsIter::Zero([]))))\n      }\n      Term::Let { pat, val, nxt, .. } | Term::Ask { pat, val, nxt, .. } => {\n        ChildrenIter::Two([(val.as_mut(), BindsIter::Zero([])), (nxt.as_mut(), BindsIter::Pat(pat.binds()))])\n      }\n      Term::Use { nam, val, nxt } => {\n        ChildrenIter::Two([(val.as_mut(), BindsIter::Zero([])), (nxt.as_mut(), BindsIter::One([&*nam]))])\n      }\n      Term::App { fun: fst, arg: snd, .. } | Term::Oper { fst, snd, .. } => {\n        ChildrenIter::Two([(fst.as_mut(), BindsIter::Zero([])), (snd.as_mut(), BindsIter::Zero([]))])\n      }\n      Term::Lam { pat, bod, .. } => ChildrenIter::One([(bod.as_mut(), BindsIter::Pat(pat.binds()))]),\n      Term::With { bod, .. } => ChildrenIter::One([(bod.as_mut(), BindsIter::Zero([]))]),\n      Term::Var { .. }\n      | Term::Link { .. }\n      | Term::Num { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::Ref { .. }\n      | Term::Def { .. }\n      | Term::Era\n      | Term::Err => ChildrenIter::Zero([]),\n      Term::Open { .. } => unreachable!(\"Open should be removed in earlier pass\"),\n    }\n  }\n  /* Common checks and transformations */\n\n  /// Substitute the occurrences of a variable in a term with the given term.\n  ///\n  /// Caution: can cause invalid shadowing of variables if used incorrectly.\n  /// Ex: Using subst to beta-reduce `(@a @b a b)` converting it into `@b b`.\n  ///\n  /// NOTE: Expects var bind information to be properly stored in match expressions,\n  /// so it must run AFTER `fix_match_terms`.\n  ///\n  /// NOTE: Since it doesn't (can't) handle `with` clauses in match terms,\n  /// it must be run only AFTER `with` linearization.\n  pub fn subst(&mut self, from: &Name, to: &Term) {\n    maybe_grow(|| {\n      for (child, binds) in self.children_mut_with_binds() {\n        if !binds.flat_map(|b| b.as_ref()).contains(from) {\n          child.subst(from, to);\n        }\n      }\n    });\n\n    if let Term::Var { nam } = self {\n      if nam == from {\n        *self = to.clone();\n      }\n    }\n  }\n\n  /// Substitute the occurrences of a constructor name with the given name.\n  pub fn subst_ctrs(&mut self, from: &Name, to: &Name) {\n    maybe_grow(|| {\n      for child in self.children_mut() {\n        child.subst_ctrs(from, to);\n      }\n    });\n\n    match self {\n      Term::Fold { arms, .. } | Term::Mat { arms, .. } => {\n        for (arm, _, _) in arms {\n          if let Some(nam) = arm {\n            if nam == from {\n              *nam = to.clone();\n            }\n          }\n        }\n      }\n      Term::Open { typ, .. } => {\n        if typ == from {\n          *typ = to.clone();\n        }\n      }\n      _ => (),\n    }\n  }\n\n  /// Substitutes the occurrences of a type constructor in the term with the given name.\n  pub fn subst_type_ctrs(&mut self, from: &Name, to: &Name) {\n    maybe_grow(|| {\n      match self {\n        Term::Def { def, nxt: _ } => {\n          def.typ.subst_ctr(from, to);\n        }\n        Term::With { typ, bod: _ } => {\n          if typ == from {\n            *typ = to.clone();\n          }\n        }\n        _ => (),\n      }\n      for child in self.children_mut() {\n        child.subst_type_ctrs(from, to);\n      }\n    });\n  }\n\n  /// Substitute the occurrence of an unscoped variable with the given term.\n  pub fn subst_unscoped(&mut self, from: &Name, to: &Term) {\n    maybe_grow(|| {\n      // We don't check the unscoped binds because there can be only one bind of an unscoped var.\n      // TODO: potentially there could be some situation where this causes an incorrect program to compile?\n      for child in self.children_mut() {\n        child.subst_unscoped(from, to);\n      }\n    });\n\n    if let Term::Link { nam } = self {\n      if nam == from {\n        *self = to.clone();\n      }\n    }\n  }\n\n  /// Collects all the free variables that a term has\n  /// and the number of times each var is used\n  pub fn free_vars(&self) -> IndexMap<Name, u64> {\n    fn go_term(term: &Term, free_vars: &mut IndexMap<Name, u64>) {\n      maybe_grow(|| {\n        if let Term::Var { nam } = term {\n          *free_vars.entry(nam.clone()).or_default() += 1;\n        }\n\n        for (child, binds) in term.children_with_binds() {\n          let mut new_scope = Default::default();\n          go_term(child, &mut new_scope);\n\n          for nam in binds.flatten() {\n            new_scope.shift_remove(nam);\n          }\n\n          free_vars.extend(new_scope);\n        }\n      })\n    }\n\n    let mut free_vars = Default::default();\n    go_term(self, &mut free_vars);\n    free_vars\n  }\n\n  /// Returns the set of declared and the set of used unscoped variables\n  pub fn unscoped_vars(&self) -> (IndexSet<Name>, IndexSet<Name>) {\n    fn go_pat(pat: &Pattern, decls: &mut IndexSet<Name>) {\n      maybe_grow(|| {\n        if let Pattern::Chn(name) = pat {\n          decls.insert(name.clone());\n        }\n\n        for child in pat.children() {\n          go_pat(child, decls);\n        }\n      })\n    }\n    fn go_term(term: &Term, decls: &mut IndexSet<Name>, uses: &mut IndexSet<Name>) {\n      maybe_grow(|| {\n        if let Term::Link { nam } = term {\n          uses.insert(nam.clone());\n        }\n\n        if let Some(pat) = term.pattern() {\n          go_pat(pat, decls)\n        }\n\n        for child in term.children() {\n          go_term(child, decls, uses);\n        }\n      })\n    }\n    let mut decls = Default::default();\n    let mut uses = Default::default();\n    go_term(self, &mut decls, &mut uses);\n    (decls, uses)\n  }\n\n  pub fn has_unscoped(&self) -> bool {\n    maybe_grow(|| {\n      let mut has_unscoped = match self {\n        Term::Let { pat, .. } if pat.has_unscoped() => true,\n        Term::Link { .. } => true,\n        _ => false,\n      };\n      for child in self.children() {\n        if has_unscoped {\n          return true;\n        }\n        has_unscoped |= child.has_unscoped()\n      }\n      has_unscoped\n    })\n  }\n}\n\nimpl Num {\n  pub fn is_zero(&self) -> bool {\n    match self {\n      Num::U24(val) => *val == 0,\n      Num::I24(val) => *val == 0,\n      Num::F24(val) => *val == 0.0,\n    }\n  }\n\n  pub fn to_bits(&self) -> u32 {\n    match self {\n      Num::U24(val) => hvm::hvm::Numb::new_u24(*val).0,\n      Num::I24(val) => hvm::hvm::Numb::new_i24(*val).0,\n      Num::F24(val) => hvm::hvm::Numb::new_f24(*val).0,\n    }\n  }\n\n  pub fn from_bits(bits: u32) -> Self {\n    match hvm::hvm::Numb::get_typ(&hvm::hvm::Numb(bits)) {\n      hvm::hvm::TY_U24 => Num::U24(hvm::hvm::Numb::get_u24(&hvm::hvm::Numb(bits))),\n      hvm::hvm::TY_I24 => Num::I24(hvm::hvm::Numb::get_i24(&hvm::hvm::Numb(bits))),\n      hvm::hvm::TY_F24 => Num::F24(hvm::hvm::Numb::get_f24(&hvm::hvm::Numb(bits))),\n      _ => unreachable!(\"Invalid Num bits\"),\n    }\n  }\n}\n\nimpl Hash for Num {\n  fn hash<H: std::hash::Hasher>(&self, state: &mut H) {\n    self.to_bits().hash(state);\n  }\n}\n\nimpl PartialEq for Num {\n  fn eq(&self, other: &Self) -> bool {\n    self.to_bits() == other.to_bits()\n  }\n}\n\nimpl Eq for Num {}\n\nimpl Pattern {\n  pub fn binds(&self) -> impl DoubleEndedIterator<Item = &Option<Name>> + Clone {\n    self.iter().filter_map(|pat| match pat {\n      Pattern::Var(nam) => Some(nam),\n      _ => None,\n    })\n  }\n\n  pub fn binds_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut Option<Name>> {\n    // Can't have a Pattern::iter_mut() since it has a tree-like structure.\n    let mut binds = vec![];\n    let mut to_visit = vec![self];\n    while let Some(pat) = to_visit.pop() {\n      match pat {\n        Pattern::Var(nam) => binds.push(nam),\n        _ => to_visit.extend(pat.children_mut().rev()),\n      }\n    }\n    binds.into_iter()\n  }\n\n  /// Returns an iterator over each immediate child sub-pattern of `self`.\n  /// Considers Lists as its own pattern and not a sequence of Cons.\n  pub fn children(&self) -> impl DoubleEndedIterator<Item = &Pattern> + Clone {\n    multi_iterator!(ChildrenIter { Zero, Vec });\n    match self {\n      Pattern::Ctr(_, els) | Pattern::Fan(.., els) | Pattern::Lst(els) => ChildrenIter::Vec(els.iter()),\n      Pattern::Var(_) | Pattern::Chn(_) | Pattern::Num(_) | Pattern::Str(_) => ChildrenIter::Zero([]),\n    }\n  }\n\n  pub fn children_mut(&mut self) -> impl DoubleEndedIterator<Item = &mut Pattern> {\n    multi_iterator!(ChildrenIter { Zero, Vec });\n    match self {\n      Pattern::Ctr(_, els) | Pattern::Fan(.., els) | Pattern::Lst(els) => ChildrenIter::Vec(els.iter_mut()),\n      Pattern::Var(_) | Pattern::Chn(_) | Pattern::Num(_) | Pattern::Str(_) => ChildrenIter::Zero([]),\n    }\n  }\n\n  /// Returns an iterator over each subpattern in depth-first, left to right order.\n  // TODO: Not lazy.\n  pub fn iter(&self) -> impl DoubleEndedIterator<Item = &Pattern> + Clone {\n    let mut to_visit = vec![self];\n    let mut els = vec![];\n    while let Some(pat) = to_visit.pop() {\n      els.push(pat);\n      to_visit.extend(pat.children().rev());\n    }\n    els.into_iter()\n  }\n\n  pub fn is_wildcard(&self) -> bool {\n    matches!(self, Pattern::Var(_) | Pattern::Chn(_))\n  }\n\n  pub fn to_term(&self) -> Term {\n    match self {\n      Pattern::Var(nam) => Term::var_or_era(nam.clone()),\n      Pattern::Chn(nam) => Term::Link { nam: nam.clone() },\n      Pattern::Ctr(ctr, args) => {\n        Term::call(Term::Ref { nam: ctr.clone() }, args.iter().map(|arg| arg.to_term()))\n      }\n      Pattern::Num(val) => Term::Num { val: Num::U24(*val) },\n      Pattern::Fan(fan, tag, args) => {\n        Term::Fan { fan: *fan, tag: tag.clone(), els: args.iter().map(|p| p.to_term()).collect() }\n      }\n      Pattern::Lst(_) | Pattern::Str(_) => todo!(),\n    }\n  }\n\n  pub fn has_unscoped(&self) -> bool {\n    match self {\n      Pattern::Chn(_) => true,\n      Pattern::Var(_) | Pattern::Str(_) | Pattern::Num(_) => false,\n      Pattern::Ctr(_, x) | Pattern::Fan(_, _, x) | Pattern::Lst(x) => x.iter().any(|x| x.has_unscoped()),\n    }\n  }\n\n  pub fn has_nested(&self) -> bool {\n    for child in self.children() {\n      if matches!(child, Pattern::Ctr(_, _) | Pattern::Fan(_, _, _) | Pattern::Lst(_)) {\n        return true;\n      }\n    }\n    false\n  }\n}\n\nimpl Rule {\n  pub fn arity(&self) -> usize {\n    self.pats.len()\n  }\n}\n\nimpl Definition {\n  pub fn new_gen(name: Name, rules: Vec<Rule>, source: Source, check: bool) -> Self {\n    let kind = if source.is_builtin() { SourceKind::Builtin } else { SourceKind::Generated };\n    let source = Source { kind, ..source };\n    Self { name, typ: Type::Hole, check, rules, source }\n  }\n\n  pub fn is_builtin(&self) -> bool {\n    self.source.is_builtin()\n  }\n\n  pub fn arity(&self) -> usize {\n    self.rules[0].arity()\n  }\n\n  #[track_caller]\n  pub fn assert_no_pattern_matching_rules(&self) {\n    assert!(self.rules.len() == 1, \"Definition rules should have been removed in earlier pass\");\n    assert!(self.rules[0].pats.is_empty(), \"Definition args should have been removed in an earlier pass\");\n  }\n\n  #[track_caller]\n  pub fn rule(&self) -> &Rule {\n    self.assert_no_pattern_matching_rules();\n    &self.rules[0]\n  }\n\n  #[track_caller]\n  pub fn rule_mut(&mut self) -> &mut Rule {\n    self.assert_no_pattern_matching_rules();\n    &mut self.rules[0]\n  }\n}\n\nimpl Type {\n  /// Substitutes the occurrences of a type constructor with the given name.\n  /// Substitutes both `Var` and `Ctr` types since `Var` could be referring to\n  /// an unresolved type constructor.\n  pub fn subst_ctr(&mut self, from: &Name, to: &Name) {\n    maybe_grow(|| {\n      match self {\n        Type::Var(nam) => {\n          if nam == from {\n            *nam = to.clone();\n          }\n        }\n        Type::Ctr(nam, _) => {\n          if nam == from {\n            *nam = to.clone();\n          }\n        }\n        _ => (),\n      };\n      for child in self.children_mut() {\n        child.subst_ctr(from, to);\n      }\n    })\n  }\n\n  pub fn children(&self) -> impl Iterator<Item = &Type> {\n    multi_iterator!(ChildrenIter { Zero, One, Two, Vec });\n    match self {\n      Type::Any | Type::None | Type::Hole | Type::I24 | Type::F24 | Type::U24 | Type::Var(_) => {\n        ChildrenIter::Zero([])\n      }\n      Type::Number(t) | Type::Integer(t) => ChildrenIter::One([t.as_ref()]),\n      Type::Arr(lft, rgt) => ChildrenIter::Two([lft.as_ref(), rgt.as_ref()]),\n      Type::Tup(els) | Type::Ctr(_, els) => ChildrenIter::Vec(els),\n    }\n  }\n\n  pub fn children_mut(&mut self) -> impl Iterator<Item = &mut Type> {\n    multi_iterator!(ChildrenIter { Zero, One, Two, Vec });\n    match self {\n      Type::Any | Type::None | Type::Hole | Type::I24 | Type::F24 | Type::U24 | Type::Var(_) => {\n        ChildrenIter::Zero([])\n      }\n      Type::Number(t) | Type::Integer(t) => ChildrenIter::One([t.as_mut()]),\n      Type::Arr(lft, rgt) => ChildrenIter::Two([lft.as_mut(), rgt.as_mut()]),\n      Type::Tup(els) | Type::Ctr(_, els) => ChildrenIter::Vec(els),\n    }\n  }\n}\n\nimpl Name {\n  pub fn new<'a, V: Into<Cow<'a, str>>>(value: V) -> Name {\n    Name(STRINGS.get(value))\n  }\n\n  pub fn is_generated(&self) -> bool {\n    // Generated def names use $ while var names use %\n    self.contains(\"__\") || self.contains('%')\n  }\n\n  pub fn def_name_from_generated(&self) -> Name {\n    if let Some(nam) = self.strip_prefix(\"__\") {\n      Name::new(nam)\n    } else if let Some((nam, _)) = self.split_once(\"__\") {\n      Name::new(nam)\n    } else {\n      self.clone()\n    }\n  }\n}\n\nimpl Default for Name {\n  fn default() -> Self {\n    Self::new(\"\")\n  }\n}\n\nimpl From<u64> for Name {\n  fn from(value: u64) -> Self {\n    Name::new(num_to_name(value).as_str())\n  }\n}\n\nimpl From<u32> for Name {\n  fn from(value: u32) -> Self {\n    Name::new(num_to_name(value as u64).as_str())\n  }\n}\n\nimpl Deref for Name {\n  type Target = str;\n\n  fn deref(&self) -> &Self::Target {\n    &self.0\n  }\n}\n\nimpl AsRef<str> for Name {\n  fn as_ref(&self) -> &str {\n    &self.0\n  }\n}\n\nimpl Book {\n  pub fn hvm_entrypoint(&self) -> &str {\n    match self.entrypoint.as_ref().map(|e| e.as_ref()) {\n      Some(\"main\" | \"Main\") | None => ENTRY_POINT,\n      Some(nam) => nam,\n    }\n  }\n}\n\nimpl Source {\n  pub fn is_builtin(&self) -> bool {\n    matches!(self.kind, SourceKind::Builtin)\n  }\n\n  pub fn is_local(&self) -> bool {\n    matches!(self.kind, SourceKind::User)\n  }\n\n  pub fn from_file_span(file: &Name, txt: &str, span: Range<usize>, builtin: bool) -> Self {\n    let span = Some(TextSpan::from_byte_span(txt, span));\n    let kind = if builtin { SourceKind::Builtin } else { SourceKind::User };\n    let file = Some(file.to_string());\n    Source { file, span, kind }\n  }\n}\n\nimpl Default for Source {\n  fn default() -> Self {\n    Self { file: None, span: None, kind: SourceKind::Unknown }\n  }\n}\n\n#[test]\nfn num_to_from_bits() {\n  let a = [\n    Num::U24(0),\n    Num::U24(0xFFFFFF),\n    Num::U24(12345),\n    Num::I24(0),\n    Num::I24(0x7FFFFF),\n    Num::I24(12345),\n    Num::I24(-12345),\n    Num::F24(0.0),\n    Num::I24(-0),\n    Num::F24(0xFFFFFF as f32),\n    Num::F24(0.0),\n    Num::F24(-0.0),\n    Num::F24(0.00123),\n    Num::F24(12345.023),\n    Num::F24(-1235.3849),\n    Num::F24(1.0),\n    Num::F24(-1.0),\n    Num::F24(12323658716.0),\n    Num::F24(-12323658716.0),\n    Num::F24(-0.00000000000000001),\n    Num::F24(0.00000000000000001),\n    Num::F24(5447856134985749851.3457896137815694178),\n    Num::F24(-5447856134985749851.3457896137815694178),\n  ];\n  for b in a {\n    assert_eq!(b, Num::from_bits(Num::to_bits(&b)));\n  }\n}\n"
  },
  {
    "path": "src/fun/net_to_term.rs",
    "content": "use crate::{\n  diagnostics::{DiagnosticOrigin, Diagnostics, Severity},\n  fun::{term_to_net::Labels, Book, FanKind, Name, Num, Op, Pattern, Tag, Term},\n  maybe_grow,\n  net::{BendLab, CtrKind, INet, NodeId, NodeKind, Port, SlotId, ROOT},\n};\nuse hvm::hvm::Numb;\nuse std::collections::{BTreeSet, HashMap, HashSet};\n\n/// Converts an Interaction-INet to a Lambda Calculus term\npub fn net_to_term(\n  net: &INet,\n  book: &Book,\n  labels: &Labels,\n  linear: bool,\n  diagnostics: &mut Diagnostics,\n) -> Term {\n  let mut reader = Reader {\n    net,\n    labels,\n    book,\n    recursive_defs: &book.recursive_defs(),\n    dup_paths: if linear { None } else { Some(Default::default()) },\n    scope: Default::default(),\n    seen_fans: Default::default(),\n    namegen: Default::default(),\n    seen: Default::default(),\n    errors: Default::default(),\n  };\n\n  let mut term = reader.read_term(net.enter_port(ROOT));\n\n  while let Some(node) = reader.scope.pop_first() {\n    let val = reader.read_term(reader.net.enter_port(Port(node, 0)));\n    let fst = reader.namegen.decl_name(net, Port(node, 1));\n    let snd = reader.namegen.decl_name(net, Port(node, 2));\n\n    let (fan, tag) = match reader.net.node(node).kind {\n      NodeKind::Ctr(CtrKind::Tup(lab)) => (FanKind::Tup, reader.labels.tup.to_tag(lab)),\n      NodeKind::Ctr(CtrKind::Dup(lab)) => (FanKind::Dup, reader.labels.dup.to_tag(Some(lab))),\n      _ => unreachable!(),\n    };\n\n    let split = &mut Split { fan, tag, fst, snd, val };\n\n    let uses = term.insert_split(split, usize::MAX).unwrap();\n    let result = term.insert_split(split, uses);\n    debug_assert_eq!(result, None);\n  }\n\n  reader.report_errors(diagnostics);\n\n  let mut unscoped = HashSet::new();\n  let mut scope = Vec::new();\n  term.collect_unscoped(&mut unscoped, &mut scope);\n  term.apply_unscoped(&unscoped);\n\n  term\n}\n\n// BTreeSet for consistent readback of dups\ntype Scope = BTreeSet<NodeId>;\n\npub struct Reader<'a> {\n  pub book: &'a Book,\n  pub namegen: NameGen,\n  net: &'a INet,\n  labels: &'a Labels,\n  dup_paths: Option<HashMap<u16, Vec<SlotId>>>,\n  /// Store for floating/unscoped terms, like dups and let tups.\n  scope: Scope,\n  // To avoid reinserting things in the scope.\n  seen_fans: Scope,\n  seen: HashSet<Port>,\n  errors: Vec<ReadbackError>,\n  recursive_defs: &'a BTreeSet<Name>,\n}\n\nimpl Reader<'_> {\n  fn read_term(&mut self, next: Port) -> Term {\n    use CtrKind::*;\n\n    maybe_grow(|| {\n      if !self.seen.insert(next) && self.dup_paths.is_none() {\n        self.error(ReadbackError::Cyclic);\n        return Term::Var { nam: Name::new(\"...\") };\n      }\n\n      let node = next.node_id();\n      match &self.net.node(node).kind {\n        NodeKind::Era => Term::Era,\n        NodeKind::Ctr(CtrKind::Con(lab)) => self.read_con(next, *lab),\n        NodeKind::Swi => self.read_swi(next),\n        NodeKind::Ref { def_name } => Term::Ref { nam: def_name.clone() },\n        NodeKind::Ctr(kind @ (Dup(_) | Tup(_))) => self.read_fan(next, *kind),\n        NodeKind::Num { val } => num_from_bits_with_type(*val, *val),\n        NodeKind::Opr => self.read_opr(next),\n        NodeKind::Rot => {\n          self.error(ReadbackError::ReachedRoot);\n          Term::Err\n        }\n      }\n    })\n  }\n\n  /// Reads a term from a CON node.\n  /// Could be a lambda, an application, a CON tuple or a CON tuple elimination.\n  fn read_con(&mut self, next: Port, label: Option<BendLab>) -> Term {\n    let node = next.node_id();\n    match next.slot() {\n      // If we're visiting a port 0, then it is a tuple or a lambda.\n      0 => {\n        if self.is_tup(node) {\n          // A tuple\n          let lft = self.read_term(self.net.enter_port(Port(node, 1)));\n          let rgt = self.read_term(self.net.enter_port(Port(node, 2)));\n          Term::Fan { fan: FanKind::Tup, tag: self.labels.con.to_tag(label), els: vec![lft, rgt] }\n        } else {\n          // A lambda\n          let nam = self.namegen.decl_name(self.net, Port(node, 1));\n          let bod = self.read_term(self.net.enter_port(Port(node, 2)));\n          Term::Lam {\n            tag: self.labels.con.to_tag(label),\n            pat: Box::new(Pattern::Var(nam)),\n            bod: Box::new(bod),\n          }\n        }\n      }\n      // If we're visiting a port 1, then it is a variable.\n      1 => Term::Var { nam: self.namegen.var_name(next) },\n      // If we're visiting a port 2, then it is an application.\n      2 => {\n        let fun = self.read_term(self.net.enter_port(Port(node, 0)));\n        let arg = self.read_term(self.net.enter_port(Port(node, 1)));\n        Term::App { tag: self.labels.con.to_tag(label), fun: Box::new(fun), arg: Box::new(arg) }\n      }\n      _ => unreachable!(),\n    }\n  }\n\n  /// Reads a fan term from a DUP node.\n  /// Could be a superposition, a duplication, a DUP tuple or a DUP tuple elimination.\n  fn read_fan(&mut self, next: Port, kind: CtrKind) -> Term {\n    let node = next.node_id();\n    let (fan, lab) = match kind {\n      CtrKind::Tup(lab) => (FanKind::Tup, lab),\n      CtrKind::Dup(lab) => (FanKind::Dup, Some(lab)),\n      _ => unreachable!(),\n    };\n    match next.slot() {\n      // If we're visiting a port 0, then it is a pair.\n      0 => {\n        // If this superposition is in a readback path with a paired Dup,\n        // we resolve it by splitting the two sup values into the two Dup variables.\n        // If we find that it's not paired with a Dup, we just keep the Sup as a term.\n        // The latter are all the early returns.\n\n        if fan != FanKind::Dup {\n          return self.decay_or_get_ports(node).unwrap_or_else(|(fst, snd)| Term::Fan {\n            fan,\n            tag: self.labels[fan].to_tag(lab),\n            els: vec![fst, snd],\n          });\n        }\n\n        let Some(dup_paths) = &mut self.dup_paths else {\n          return self.decay_or_get_ports(node).unwrap_or_else(|(fst, snd)| Term::Fan {\n            fan,\n            tag: self.labels[fan].to_tag(lab),\n            els: vec![fst, snd],\n          });\n        };\n\n        let stack = dup_paths.entry(lab.unwrap()).or_default();\n        let Some(slot) = stack.pop() else {\n          return self.decay_or_get_ports(node).unwrap_or_else(|(fst, snd)| Term::Fan {\n            fan,\n            tag: self.labels[fan].to_tag(lab),\n            els: vec![fst, snd],\n          });\n        };\n\n        // Found a paired Dup, so we \"decay\" the superposition according to the original direction we came from the Dup.\n        let term = self.read_term(self.net.enter_port(Port(node, slot)));\n        self.dup_paths.as_mut().unwrap().get_mut(&lab.unwrap()).unwrap().push(slot);\n        term\n      }\n      // If we're visiting a port 1 or 2, then it is a variable.\n      // Also, that means we found a dup, so we store it to read later.\n      1 | 2 => {\n        // If doing non-linear readback, we also store dup paths to try to resolve them later.\n        if let Some(dup_paths) = &mut self.dup_paths {\n          if fan == FanKind::Dup {\n            dup_paths.entry(lab.unwrap()).or_default().push(next.slot());\n            let term = self.read_term(self.net.enter_port(Port(node, 0)));\n            self.dup_paths.as_mut().unwrap().entry(lab.unwrap()).or_default().pop().unwrap();\n            return term;\n          }\n        }\n        // Otherwise, just store the new dup/let tup and return the variable.\n        if self.seen_fans.insert(node) {\n          self.scope.insert(node);\n        }\n        Term::Var { nam: self.namegen.var_name(next) }\n      }\n      _ => unreachable!(),\n    }\n  }\n\n  /// Reads an Opr term from an OPR node.\n  fn read_opr(&mut self, next: Port) -> Term {\n    /// Read one of the argument ports of an operation.\n    fn add_arg(\n      reader: &mut Reader,\n      port: Port,\n      args: &mut Vec<Result<hvm::hvm::Val, Term>>,\n      types: &mut Vec<hvm::hvm::Tag>,\n      ops: &mut Vec<hvm::hvm::Tag>,\n    ) {\n      if let NodeKind::Num { val } = reader.net.node(port.node_id()).kind {\n        match hvm::hvm::Numb::get_typ(&Numb(val)) {\n          // Contains an operation\n          hvm::hvm::TY_SYM => {\n            ops.push(hvm::hvm::Numb(val).get_sym());\n          }\n          // Contains a number with a type\n          typ @ hvm::hvm::TY_U24..=hvm::hvm::TY_F24 => {\n            types.push(typ);\n            args.push(Ok(val));\n          }\n          // Contains a partially applied number with operation and no type\n          op @ hvm::hvm::OP_ADD.. => {\n            ops.push(op);\n            args.push(Ok(val));\n          }\n        }\n      } else {\n        // Some other non-number argument\n        let term = reader.read_term(port);\n        args.push(Err(term));\n      }\n    }\n\n    /// Creates an Opr term from the arguments of the subnet of an OPR node.\n    fn opr_term_from_hvm_args(\n      args: &mut Vec<Result<hvm::hvm::Val, Term>>,\n      types: &mut Vec<hvm::hvm::Tag>,\n      ops: &mut Vec<hvm::hvm::Tag>,\n      is_flipped: bool,\n    ) -> Term {\n      let typ = match types.as_slice() {\n        [typ] => *typ,\n        // Use U24 as default number type\n        [] => hvm::hvm::TY_U24,\n        _ => {\n          // Too many types\n          return Term::Err;\n        }\n      };\n      match (args.as_slice(), ops.as_slice()) {\n        ([arg1, arg2], [op]) => {\n          // Correct number of arguments\n          let arg1 = match arg1 {\n            Ok(val) => num_from_bits_with_type(*val, typ as u32),\n            Err(val) => val.clone(),\n          };\n          let arg2 = match arg2 {\n            Ok(val) => num_from_bits_with_type(*val, typ as u32),\n            Err(val) => val.clone(),\n          };\n          let (arg1, arg2) = if is_flipped ^ op_is_flipped(*op) { (arg2, arg1) } else { (arg1, arg2) };\n          let Some(op) = op_from_native_tag(*op, typ) else {\n            // Invalid operator\n            return Term::Err;\n          };\n          Term::Oper { opr: op, fst: Box::new(arg1), snd: Box::new(arg2) }\n        }\n        _ => {\n          // Invalid number of arguments/types/operators\n          Term::Err\n        }\n      }\n    }\n\n    fn op_is_flipped(op: hvm::hvm::Tag) -> bool {\n      [hvm::hvm::FP_DIV, hvm::hvm::FP_REM, hvm::hvm::FP_SHL, hvm::hvm::FP_SHR, hvm::hvm::FP_SUB].contains(&op)\n    }\n\n    fn op_from_native_tag(val: hvm::hvm::Tag, typ: hvm::hvm::Tag) -> Option<Op> {\n      let op = match val {\n        hvm::hvm::OP_ADD => Op::ADD,\n        hvm::hvm::OP_SUB => Op::SUB,\n        hvm::hvm::FP_SUB => Op::SUB,\n        hvm::hvm::OP_MUL => Op::MUL,\n        hvm::hvm::OP_DIV => Op::DIV,\n        hvm::hvm::FP_DIV => Op::DIV,\n        hvm::hvm::OP_REM => Op::REM,\n        hvm::hvm::FP_REM => Op::REM,\n        hvm::hvm::OP_EQ => Op::EQ,\n        hvm::hvm::OP_NEQ => Op::NEQ,\n        hvm::hvm::OP_LT => Op::LT,\n        hvm::hvm::OP_GT => Op::GT,\n        hvm::hvm::OP_AND => {\n          if typ == hvm::hvm::TY_F24 {\n            todo!(\"Implement readback of atan2\")\n          } else {\n            Op::AND\n          }\n        }\n        hvm::hvm::OP_OR => {\n          if typ == hvm::hvm::TY_F24 {\n            todo!(\"Implement readback of log\")\n          } else {\n            Op::OR\n          }\n        }\n        hvm::hvm::OP_XOR => {\n          if typ == hvm::hvm::TY_F24 {\n            Op::POW\n          } else {\n            Op::XOR\n          }\n        }\n        hvm::hvm::OP_SHL => Op::SHL,\n        hvm::hvm::FP_SHL => Op::SHL,\n        hvm::hvm::OP_SHR => Op::SHR,\n        hvm::hvm::FP_SHR => Op::SHR,\n        _ => return None,\n      };\n      Some(op)\n    }\n\n    let node = next.node_id();\n    match next.slot() {\n      2 => {\n        // If port1 has a partially applied number, the operation has 1 node.\n        // Port0 has arg1 and port1 has arg2.\n        // The operation is interpreted as being pre-flipped (if its a FP_, they cancel and don't flip).\n        let port1_kind = self.net.node(self.net.enter_port(Port(node, 1)).node_id()).kind.clone();\n        if let NodeKind::Num { val } = port1_kind {\n          match hvm::hvm::Numb::get_typ(&Numb(val)) {\n            hvm::hvm::OP_ADD.. => {\n              let x1_port = self.net.enter_port(Port(node, 0));\n              let x2_port = self.net.enter_port(Port(node, 1));\n              let mut args = vec![];\n              let mut types = vec![];\n              let mut ops = vec![];\n              add_arg(self, x1_port, &mut args, &mut types, &mut ops);\n              add_arg(self, x2_port, &mut args, &mut types, &mut ops);\n              let term = opr_term_from_hvm_args(&mut args, &mut types, &mut ops, true);\n              if let Term::Err = term {\n                // Since that function doesn't have access to the reader, add the error here.\n                self.error(ReadbackError::InvalidNumericOp);\n              }\n              return term;\n            }\n            _ => {\n              // Not a partially applied number, handle it in the next case\n            }\n          }\n        }\n\n        // If port0 has a partially applied number, it also has 1 node.\n        // The operation is interpreted as not pre-flipped.\n        let port0_kind = self.net.node(self.net.enter_port(Port(node, 0)).node_id()).kind.clone();\n        if let NodeKind::Num { val } = port0_kind {\n          match hvm::hvm::Numb::get_typ(&Numb(val)) {\n            hvm::hvm::OP_ADD.. => {\n              let x1_port = self.net.enter_port(Port(node, 0));\n              let x2_port = self.net.enter_port(Port(node, 1));\n              let mut args = vec![];\n              let mut types = vec![];\n              let mut ops = vec![];\n              add_arg(self, x1_port, &mut args, &mut types, &mut ops);\n              add_arg(self, x2_port, &mut args, &mut types, &mut ops);\n              let term = opr_term_from_hvm_args(&mut args, &mut types, &mut ops, false);\n              if let Term::Err = term {\n                // Since that function doesn't have access to the reader, add the error here.\n                self.error(ReadbackError::InvalidNumericOp);\n              }\n              return term;\n            }\n            _ => {\n              // Not a partially applied number, handle it in the next case\n            }\n          }\n        }\n\n        // Otherwise, the operation has 2 nodes.\n        // Read the top node port0 and 1, bottom node port1.\n        // Args are in that order, skipping the operation.\n        let bottom_id = node;\n        let top_id = self.net.enter_port(Port(bottom_id, 0)).node_id();\n        if let NodeKind::Opr = self.net.node(top_id).kind {\n          let x1_port = self.net.enter_port(Port(top_id, 0));\n          let x2_port = self.net.enter_port(Port(top_id, 1));\n          let x3_port = self.net.enter_port(Port(bottom_id, 1));\n          let mut args = vec![];\n          let mut types = vec![];\n          let mut ops = vec![];\n          add_arg(self, x1_port, &mut args, &mut types, &mut ops);\n          add_arg(self, x2_port, &mut args, &mut types, &mut ops);\n          add_arg(self, x3_port, &mut args, &mut types, &mut ops);\n          let term = opr_term_from_hvm_args(&mut args, &mut types, &mut ops, false);\n          if let Term::Err = term {\n            self.error(ReadbackError::InvalidNumericOp);\n          }\n          term\n        } else {\n          // Port 0 was not an OPR node, invalid.\n          self.error(ReadbackError::InvalidNumericOp);\n          Term::Err\n        }\n      }\n      _ => {\n        // Entered from a port other than 2, invalid.\n        self.error(ReadbackError::InvalidNumericOp);\n        Term::Err\n      }\n    }\n  }\n\n  /// Reads a switch term from a SWI node.\n  fn read_swi(&mut self, next: Port) -> Term {\n    let node = next.node_id();\n    match next.slot() {\n      2 => {\n        // Read the matched expression\n        let arg = self.read_term(self.net.enter_port(Port(node, 0)));\n        let bnd = if let Term::Var { nam } = &arg { nam.clone() } else { self.namegen.unique() };\n\n        // Read the pattern matching node\n        let sel_node = self.net.enter_port(Port(node, 1)).node_id();\n\n        // We expect the pattern matching node to be a CON\n        let sel_kind = &self.net.node(sel_node).kind;\n        if sel_kind != &NodeKind::Ctr(CtrKind::Con(None)) {\n          // TODO: Is there any case where we expect a different node type here on readback?\n          self.error(ReadbackError::InvalidNumericMatch);\n          return Term::Err;\n        }\n\n        let zero = self.read_term(self.net.enter_port(Port(sel_node, 1)));\n        let mut succ = self.read_term(self.net.enter_port(Port(sel_node, 2)));\n        // Call expand_generated in case of succ_term be a lifted term\n        succ.expand_generated(self.book, self.recursive_defs);\n\n        // Succ term should be a lambda\n        let succ = match &mut succ {\n          Term::Lam { pat, bod, .. } => {\n            if let Pattern::Var(nam) = pat.as_ref() {\n              let mut bod = std::mem::take(bod.as_mut());\n              if let Some(nam) = nam {\n                bod.subst(nam, &Term::Var { nam: Name::new(format!(\"{bnd}-1\")) });\n              }\n              bod\n            } else {\n              // Readback should never generate non-var patterns for lambdas.\n              self.error(ReadbackError::InvalidNumericMatch);\n              succ\n            }\n          }\n          _ => {\n            self.error(ReadbackError::InvalidNumericMatch);\n            succ\n          }\n        };\n        Term::Swt {\n          arg: Box::new(arg),\n          bnd: Some(bnd),\n          with_arg: vec![],\n          with_bnd: vec![],\n          pred: None,\n          arms: vec![zero, succ],\n        }\n      }\n      _ => {\n        self.error(ReadbackError::InvalidNumericMatch);\n        Term::Err\n      }\n    }\n  }\n\n  /// Enters both ports 1 and 2 of a node. Returns a Term if it is\n  /// possible to simplify the net, or the Terms on the two ports of the node.\n  /// The two possible outcomes are always equivalent.\n  ///\n  /// If:\n  ///  - The node Kind is CON/TUP/DUP\n  ///  - Both ports 1 and 2 are connected to the same node on slots 1 and 2 respectively\n  ///  - That node Kind is the same as the given node Kind\n  ///\n  /// Then:\n  ///   Reads the port 0 of the connected node, and returns that term.\n  ///\n  /// Otherwise:\n  ///   Returns the terms on ports 1 and 2 of the given node.\n  ///\n  /// # Example\n  ///\n  /// ```hvm\n  /// // λa let (a, b) = a; (a, b)\n  /// ([a b] [a b])\n  ///\n  /// // The node `(a, b)` is just a reconstruction of the destructuring of `a`,\n  /// // So we can skip both steps and just return the \"value\" unchanged:\n  ///\n  /// // λa a\n  /// (a a)\n  /// ```\n  ///\n  fn decay_or_get_ports(&mut self, node: NodeId) -> Result<Term, (Term, Term)> {\n    let fst_port = self.net.enter_port(Port(node, 1));\n    let snd_port = self.net.enter_port(Port(node, 2));\n\n    let node_kind = &self.net.node(node).kind;\n\n    // Eta-reduce the readback inet.\n    // This is not valid for all kinds of nodes, only CON/TUP/DUP, due to their interaction rules.\n    if matches!(node_kind, NodeKind::Ctr(_)) {\n      match (fst_port, snd_port) {\n        (Port(fst_node, 1), Port(snd_node, 2)) if fst_node == snd_node => {\n          if self.net.node(fst_node).kind == *node_kind {\n            self.scope.remove(&fst_node);\n\n            let port_zero = self.net.enter_port(Port(fst_node, 0));\n            let term = self.read_term(port_zero);\n            return Ok(term);\n          }\n        }\n        _ => {}\n      }\n    }\n\n    let fst = self.read_term(fst_port);\n    let snd = self.read_term(snd_port);\n    Err((fst, snd))\n  }\n\n  pub fn error(&mut self, error: ReadbackError) {\n    self.errors.push(error);\n  }\n\n  pub fn report_errors(&mut self, diagnostics: &mut Diagnostics) {\n    let mut err_counts = std::collections::HashMap::new();\n    for err in &self.errors {\n      *err_counts.entry(*err).or_insert(0) += 1;\n    }\n\n    for (err, count) in err_counts {\n      let count_msg = if count > 1 { format!(\" ({count} occurrences)\") } else { \"\".to_string() };\n      let msg = format!(\"{}{}\", err, count_msg);\n      diagnostics.add_diagnostic(\n        msg.as_str(),\n        Severity::Warning,\n        DiagnosticOrigin::Readback,\n        Default::default(),\n      );\n    }\n  }\n\n  /// Returns whether the given port represents a tuple or some other\n  /// term (usually a lambda).\n  ///\n  /// Used heuristic: a con node is a tuple if port 1 is a closed tree and not an ERA.\n  fn is_tup(&self, node: NodeId) -> bool {\n    if !matches!(self.net.node(node).kind, NodeKind::Ctr(CtrKind::Con(_))) {\n      return false;\n    }\n    if self.net.node(self.net.enter_port(Port(node, 1)).node_id()).kind == NodeKind::Era {\n      return false;\n    }\n    let mut wires = HashSet::new();\n    let mut to_check = vec![self.net.enter_port(Port(node, 1))];\n    while let Some(port) = to_check.pop() {\n      match port.slot() {\n        0 => {\n          let node = port.node_id();\n          let lft = self.net.enter_port(Port(node, 1));\n          let rgt = self.net.enter_port(Port(node, 2));\n          to_check.push(lft);\n          to_check.push(rgt);\n        }\n        1 | 2 => {\n          // Mark as a wire. If already present, mark as visited by removing it.\n          if !(wires.insert(port) && wires.insert(self.net.enter_port(port))) {\n            wires.remove(&port);\n            wires.remove(&self.net.enter_port(port));\n          }\n        }\n        _ => unreachable!(),\n      }\n    }\n    // No hanging wires = a combinator = a tuple\n    wires.is_empty()\n  }\n}\n\n/* Utils for numbers and numeric operations */\n\n/// From an hvm number carrying the value and another carrying the type, return a Num term.\nfn num_from_bits_with_type(val: u32, typ: u32) -> Term {\n  match hvm::hvm::Numb::get_typ(&Numb(typ)) {\n    // No type information, assume u24 by default\n    hvm::hvm::TY_SYM => Term::Num { val: Num::U24(Numb::get_u24(&Numb(val))) },\n    hvm::hvm::TY_U24 => Term::Num { val: Num::U24(Numb::get_u24(&Numb(val))) },\n    hvm::hvm::TY_I24 => Term::Num { val: Num::I24(Numb::get_i24(&Numb(val))) },\n    hvm::hvm::TY_F24 => Term::Num { val: Num::F24(Numb::get_f24(&Numb(val))) },\n    _ => Term::Err,\n  }\n}\n\n/* Insertion of dups in the middle of the term */\n\n/// Represents `let #tag(fst, snd) = val` / `let #tag{fst snd} = val`\nstruct Split {\n  fan: FanKind,\n  tag: Tag,\n  fst: Option<Name>,\n  snd: Option<Name>,\n  val: Term,\n}\n\nimpl Default for Split {\n  fn default() -> Self {\n    Self {\n      fan: FanKind::Dup,\n      tag: Default::default(),\n      fst: Default::default(),\n      snd: Default::default(),\n      val: Default::default(),\n    }\n  }\n}\n\nimpl Term {\n  /// Calculates the number of times `fst` and `snd` appear in this term. If\n  /// that is `>= threshold`, it inserts the split at this term, and returns\n  /// `None`. Otherwise, returns `Some(uses)`.\n  ///\n  /// This is only really useful when called in two passes – first, with\n  /// `threshold = usize::MAX`, to count the number of uses, and then with\n  /// `threshold = uses`.\n  ///\n  /// This has the effect of inserting the split at the lowest common ancestor\n  /// of all of the uses of `fst` and `snd`.\n  fn insert_split(&mut self, split: &mut Split, threshold: usize) -> Option<usize> {\n    maybe_grow(|| {\n      let mut n = match self {\n        Term::Var { nam } => usize::from(split.fst == *nam || split.snd == *nam),\n        _ => 0,\n      };\n      for child in self.children_mut() {\n        n += child.insert_split(split, threshold)?;\n      }\n\n      if n >= threshold {\n        let Split { fan, tag, fst, snd, val } = std::mem::take(split);\n        let nxt = Box::new(std::mem::take(self));\n        *self = Term::Let {\n          pat: Box::new(Pattern::Fan(fan, tag, vec![Pattern::Var(fst), Pattern::Var(snd)])),\n          val: Box::new(val),\n          nxt,\n        };\n        None\n      } else {\n        Some(n)\n      }\n    })\n  }\n}\n\n/* Variable name generation */\n\n#[derive(Default)]\npub struct NameGen {\n  pub var_port_to_id: HashMap<Port, u64>,\n  pub id_counter: u64,\n}\n\nimpl NameGen {\n  // Given a port, returns its name, or assigns one if it wasn't named yet.\n  fn var_name(&mut self, var_port: Port) -> Name {\n    let id = self.var_port_to_id.entry(var_port).or_insert_with(|| {\n      let id = self.id_counter;\n      self.id_counter += 1;\n      id\n    });\n    Name::from(*id)\n  }\n\n  fn decl_name(&mut self, net: &INet, var_port: Port) -> Option<Name> {\n    // If port is linked to an erase node, return an unused variable\n    let var_use = net.enter_port(var_port);\n    let var_kind = &net.node(var_use.node_id()).kind;\n    (*var_kind != NodeKind::Era).then(|| self.var_name(var_port))\n  }\n\n  pub fn unique(&mut self) -> Name {\n    let id = self.id_counter;\n    self.id_counter += 1;\n    Name::from(id)\n  }\n}\n\n/* Readback errors */\n\n#[derive(Debug, Clone, Copy)]\npub enum ReadbackError {\n  InvalidNumericMatch,\n  InvalidNumericOp,\n  ReachedRoot,\n  Cyclic,\n}\n\nimpl PartialEq for ReadbackError {\n  fn eq(&self, other: &Self) -> bool {\n    core::mem::discriminant(self) == core::mem::discriminant(other)\n  }\n}\n\nimpl Eq for ReadbackError {}\n\nimpl std::hash::Hash for ReadbackError {\n  fn hash<H: std::hash::Hasher>(&self, state: &mut H) {\n    core::mem::discriminant(self).hash(state);\n  }\n}\n\nimpl std::fmt::Display for ReadbackError {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      ReadbackError::InvalidNumericMatch => write!(f, \"Encountered an invalid 'switch'.\"),\n      ReadbackError::InvalidNumericOp => write!(f, \"Encountered an invalid numeric operation.\"),\n      ReadbackError::ReachedRoot => {\n        write!(f, \"Unable to interpret the HVM result as a valid Bend term. (Reached Root)\")\n      }\n      ReadbackError::Cyclic => {\n        write!(f, \"Unable to interpret the HVM result as a valid Bend term. (Cyclic Term)\")\n      }\n    }\n  }\n}\n\n/* Recover unscoped vars */\n\nimpl Term {\n  pub fn collect_unscoped(&self, unscoped: &mut HashSet<Name>, scope: &mut Vec<Name>) {\n    maybe_grow(|| match self {\n      Term::Var { nam } if !scope.contains(nam) => _ = unscoped.insert(nam.clone()),\n      Term::Swt { arg, bnd, with_bnd: _, with_arg, pred: _, arms } => {\n        arg.collect_unscoped(unscoped, scope);\n        for arg in with_arg {\n          arg.collect_unscoped(unscoped, scope);\n        }\n        arms[0].collect_unscoped(unscoped, scope);\n        if let Some(bnd) = bnd {\n          scope.push(Name::new(format!(\"{bnd}-1\")));\n        }\n        arms[1].collect_unscoped(unscoped, scope);\n        if bnd.is_some() {\n          scope.pop();\n        }\n      }\n      _ => {\n        for (child, binds) in self.children_with_binds() {\n          let binds: Vec<_> = binds.collect();\n          for bind in binds.iter().copied().flatten() {\n            scope.push(bind.clone());\n          }\n          child.collect_unscoped(unscoped, scope);\n          for _bind in binds.into_iter().flatten() {\n            scope.pop();\n          }\n        }\n      }\n    })\n  }\n\n  /// Transform the variables that we previously found were unscoped into their unscoped variants.\n  pub fn apply_unscoped(&mut self, unscoped: &HashSet<Name>) {\n    maybe_grow(|| {\n      if let Term::Var { nam } = self {\n        if unscoped.contains(nam) {\n          *self = Term::Link { nam: std::mem::take(nam) }\n        }\n      }\n      if let Some(pat) = self.pattern_mut() {\n        pat.apply_unscoped(unscoped);\n      }\n      for child in self.children_mut() {\n        child.apply_unscoped(unscoped);\n      }\n    })\n  }\n}\n\nimpl Pattern {\n  fn apply_unscoped(&mut self, unscoped: &HashSet<Name>) {\n    maybe_grow(|| {\n      if let Pattern::Var(Some(nam)) = self {\n        if unscoped.contains(nam) {\n          let nam = std::mem::take(nam);\n          *self = Pattern::Chn(nam);\n        }\n      }\n      for child in self.children_mut() {\n        child.apply_unscoped(unscoped)\n      }\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/parser.rs",
    "content": "use crate::{\n  fun::{\n    display::DisplayFn, Adt, AdtCtr, Adts, Constructors, CtrField, FanKind, HvmDefinition, HvmDefinitions,\n    MatchRule, Name, Num, Op, Pattern, Rule, Source, SourceKind, Tag, Term, Type, STRINGS,\n  },\n  imp::parser::ImpParser,\n  imports::{Import, ImportCtx, ImportType},\n  maybe_grow,\n};\nuse highlight_error::highlight_error;\nuse indexmap::IndexMap;\nuse itertools::Itertools;\nuse std::ops::Range;\nuse TSPL::{ParseError, Parser};\n\ntype FunDefinition = super::Definition;\ntype ImpDefinition = crate::imp::Definition;\n\n/// Intermediate representation of a program.\n#[derive(Debug, Clone, Default)]\npub struct ParseBook {\n  /// The `functional` function definitions.\n  pub fun_defs: IndexMap<Name, FunDefinition>,\n\n  /// The `imperative` function definitions.\n  pub imp_defs: IndexMap<Name, ImpDefinition>,\n\n  /// HVM native function definitions.\n  pub hvm_defs: HvmDefinitions,\n\n  /// The algebraic datatypes defined by the program\n  pub adts: Adts,\n\n  /// To which type does each constructor belong to.\n  pub ctrs: Constructors,\n\n  /// Imported packages to be loaded in the program\n  pub import_ctx: ImportCtx,\n\n  /// File path that the book was loaded from.\n  pub source: Name,\n}\n\nimpl ParseBook {\n  pub fn contains_def(&self, name: &Name) -> bool {\n    self.fun_defs.contains_key(name) || self.imp_defs.contains_key(name) || self.hvm_defs.contains_key(name)\n  }\n\n  pub fn contains_builtin_def(&self, name: &Name) -> Option<bool> {\n    self\n      .fun_defs\n      .get(name)\n      .map(|d| d.is_builtin())\n      .or_else(|| self.imp_defs.get(name).map(|d| d.source.is_builtin()))\n      .or_else(|| self.hvm_defs.get(name).map(|d| d.source.is_builtin()))\n  }\n}\n\npub type ParseResult<T> = std::result::Result<T, ParseError>;\n\npub struct FunParser<'i> {\n  file: Name,\n  input: &'i str,\n  index: usize,\n  builtin: bool,\n}\n\nimpl<'a> FunParser<'a> {\n  pub fn new(file: Name, input: &'a str, builtin: bool) -> Self {\n    Self { file, input, index: 0, builtin }\n  }\n\n  /* AST parsing functions */\n\n  pub fn parse_book(&mut self, default_book: ParseBook) -> ParseResult<ParseBook> {\n    let mut book = default_book;\n    let mut indent = self.advance_newlines()?;\n    while !self.is_eof() {\n      // Record type definition\n      if self.starts_with_keyword(\"object\") {\n        let ini_idx = *self.index();\n        let mut prs = ImpParser {\n          file: self.file.clone(),\n          input: self.input,\n          index: *self.index(),\n          builtin: self.builtin,\n        };\n        let (adt, nxt_indent) = prs.parse_object(indent)?;\n        self.index = prs.index;\n        let end_idx = *self.index();\n        self.add_type_def(adt, &mut book, ini_idx..end_idx)?;\n        indent = nxt_indent;\n        continue;\n      }\n\n      // Imp function definition\n      if self.starts_with_keyword(\"def\") {\n        let ini_idx = *self.index();\n        let mut prs =\n          ImpParser { file: self.file.clone(), input: self.input, index: ini_idx, builtin: self.builtin };\n        let (def, nxt_indent) = prs.parse_function_def(indent)?;\n        self.index = prs.index;\n        let end_idx = *self.index();\n        self.add_imp_def(def, &mut book, ini_idx..end_idx)?;\n        indent = nxt_indent;\n        continue;\n      }\n\n      // Fun/Imp type definition\n      if self.starts_with_keyword(\"type\") {\n        fn starts_with_imp_type(p: &mut FunParser) -> ParseResult<()> {\n          p.parse_keyword(\"type\")?;\n          p.skip_trivia_inline()?;\n          p.parse_top_level_name()?;\n          p.skip_trivia_inline()?;\n          if p.starts_with(\":\") || p.starts_with(\"(\") {\n            Ok(())\n          } else {\n            Err(ParseError::new((0, 0), \"\"))\n          }\n        }\n\n        let ini_idx = *self.index();\n        let is_imp = starts_with_imp_type(self).is_ok();\n        self.index = ini_idx;\n        if is_imp {\n          // Imp type definition\n          let mut prs = ImpParser {\n            file: self.file.clone(),\n            input: self.input,\n            index: *self.index(),\n            builtin: self.builtin,\n          };\n          let (adt, nxt_indent) = prs.parse_type_def(indent)?;\n          self.index = prs.index;\n          let end_idx = *self.index();\n          self.add_type_def(adt, &mut book, ini_idx..end_idx)?;\n          indent = nxt_indent;\n          continue;\n        } else {\n          // Fun type definition\n          let adt = self.parse_type_def()?;\n          let end_idx = *self.index();\n          self.add_type_def(adt, &mut book, ini_idx..end_idx)?;\n          indent = self.advance_newlines()?;\n          continue;\n        }\n      }\n\n      // HVM native function definition\n      if self.starts_with_keyword(\"hvm\") {\n        let ini_idx = self.index;\n        let mut prs =\n          ImpParser { file: self.file.clone(), input: self.input, index: self.index, builtin: self.builtin };\n        let (def, nxt_indent) = prs.parse_hvm()?;\n        *self.index() = prs.index;\n        let end_idx = *self.index();\n        self.add_hvm(def, &mut book, ini_idx..end_idx)?;\n        indent = nxt_indent;\n        continue;\n      }\n\n      // Import declaration\n      if self.starts_with_keyword(\"from\") {\n        let import = self.parse_from_import()?;\n        book.import_ctx.add_import(import);\n        indent = self.advance_newlines()?;\n        continue;\n      }\n\n      if self.starts_with_keyword(\"import\") {\n        let imports = self.parse_import()?;\n        for imp in imports {\n          book.import_ctx.add_import(imp);\n        }\n        indent = self.advance_newlines()?;\n        continue;\n      }\n\n      // Fun function definition\n      let ini_idx = *self.index();\n      let def = self.parse_fun_def()?;\n      let end_idx = *self.index();\n\n      self.add_fun_def(def, &mut book, ini_idx..end_idx)?;\n      indent = self.advance_newlines()?;\n    }\n\n    Ok(book)\n  }\n\n  fn parse_type_def(&mut self) -> ParseResult<Adt> {\n    // type (name var1 ... varN) = ctr (| ctr)*\n    let ini_idx = self.index;\n    self.parse_keyword(\"type\")?;\n    self.skip_trivia();\n\n    let name;\n    let vars;\n    if self.try_consume(\"(\") {\n      // parens around name and vars\n      self.skip_trivia();\n      name = self.parse_restricted_name(\"Datatype\")?;\n      vars = self\n        .labelled(|p| p.list_like(|p| p.parse_var_name(), \"\", \")\", \"\", false, 0), \"Type variable or ')'\")?;\n      self.consume(\"=\")?;\n    } else {\n      // no parens\n      name = self.parse_restricted_name(\"Datatype\")?;\n      vars = self\n        .labelled(|p| p.list_like(|p| p.parse_var_name(), \"\", \"=\", \"\", false, 0), \"Type variable or '='\")?;\n    }\n\n    let mut ctrs = vec![self.parse_type_ctr(&name, &vars)?];\n    while self.try_consume(\"|\") {\n      ctrs.push(self.parse_type_ctr(&name, &vars)?);\n    }\n    let ctrs = ctrs.into_iter().map(|ctr| (ctr.name.clone(), ctr)).collect::<IndexMap<_, _>>();\n\n    let end_idx = *self.index();\n    let source = Source::from_file_span(&self.file, self.input, ini_idx..end_idx, self.builtin);\n    let adt = Adt { name, vars, ctrs, source };\n    Ok(adt)\n  }\n\n  fn parse_type_ctr(&mut self, type_name: &Name, type_vars: &[Name]) -> ParseResult<AdtCtr> {\n    // '(' name (( '~'? field) | ('~'? '('field (':' type)? ')') )* ')'\n    // name\n    self.skip_trivia();\n    let ini_idx = *self.index();\n    if self.try_consume(\"(\") {\n      // name and optionally fields\n\n      self.skip_trivia();\n      let ctr_name = self.parse_top_level_name()?;\n      let ctr_name = Name::new(format!(\"{type_name}/{ctr_name}\"));\n\n      let fields = self.list_like(|p| p.parse_type_ctr_field(), \"\", \")\", \"\", false, 0)?;\n      let field_types = fields.iter().map(|f| f.typ.clone()).collect::<Vec<_>>();\n      let end_idx = *self.index();\n      self.check_repeated_ctr_fields(&fields, &ctr_name, ini_idx..end_idx)?;\n\n      let typ = make_ctr_type(type_name.clone(), &field_types, type_vars);\n      let ctr = AdtCtr { name: ctr_name, typ, fields };\n      Ok(ctr)\n    } else {\n      // just name\n      let name = self.parse_restricted_name(\"Datatype constructor\")?;\n      let name = Name::new(format!(\"{type_name}/{name}\"));\n      let typ = make_ctr_type(type_name.clone(), &[], type_vars);\n      let ctr = AdtCtr { name, typ, fields: vec![] };\n      Ok(ctr)\n    }\n  }\n\n  fn parse_type_ctr_field(&mut self) -> ParseResult<CtrField> {\n    let rec = self.try_consume(\"~\");\n\n    let nam;\n    let typ;\n    if self.try_consume(\"(\") {\n      nam = self.parse_var_name()?;\n      if self.try_consume(\":\") {\n        typ = self.parse_type_term()?;\n      } else {\n        typ = Type::Any;\n      }\n      self.consume(\")\")?;\n    } else {\n      nam = self.parse_var_name()?;\n      typ = Type::Any;\n    }\n    Ok(CtrField { nam, typ, rec })\n  }\n\n  fn parse_fun_def(&mut self) -> ParseResult<FunDefinition> {\n    let ini_idx = *self.index();\n\n    // Try to parse signature\n    if let Ok((name, args, check, typ)) = self.parse_def_sig() {\n      if self.try_consume(\"=\") {\n        // Single rule with signature\n        let body = self.parse_term()?;\n        let pats = args.into_iter().map(|nam| Pattern::Var(Some(nam))).collect();\n        let rules = vec![Rule { pats, body }];\n        let end_idx = *self.index();\n        let source = Source::from_file_span(&self.file, self.input, ini_idx..end_idx, self.builtin);\n        let def = FunDefinition { name, typ, check, rules, source };\n        Ok(def)\n      } else {\n        // Multiple rules with signature\n        let mut rules = vec![];\n        let (_, rule) = self.parse_rule()?;\n        rules.push(rule);\n        while self.starts_with_rule(&name) {\n          let (_, rule) = self.parse_rule()?;\n          rules.push(rule);\n        }\n        let end_idx = *self.index();\n        let source = Source::from_file_span(&self.file, self.input, ini_idx..end_idx, self.builtin);\n        let def = FunDefinition { name, typ, check, rules, source };\n        Ok(def)\n      }\n    } else {\n      // Was not a signature, backtrack and read the name from the first rule\n      self.index = ini_idx;\n      // No signature, don't check by default\n      let check = self.parse_checked(false);\n      let mut rules = vec![];\n      let (name, rule) = self.parse_rule()?;\n      rules.push(rule);\n      while self.starts_with_rule(&name) {\n        let (_, rule) = self.parse_rule()?;\n        rules.push(rule);\n      }\n      let end_idx = *self.index();\n      let source = Source::from_file_span(&self.file, self.input, ini_idx..end_idx, self.builtin);\n      let def = FunDefinition { name, typ: Type::Any, check, rules, source };\n      Ok(def)\n    }\n  }\n\n  /// Parses a function definition signature.\n  /// Returns the name, name of the arguments and the type of the function.\n  fn parse_def_sig(&mut self) -> ParseResult<(Name, Vec<Name>, bool, Type)> {\n    // '(' name ((arg | '(' arg (':' type)? ')'))* ')' ':' type\n    //     name ((arg | '(' arg (':' type)? ')'))*     ':' type\n    // Signature, check by default\n    let check = self.parse_checked(true);\n    let (name, args, typ) = if self.try_consume(\"(\") {\n      let name = self.parse_top_level_name()?;\n      let args = self.list_like(|p| p.parse_def_sig_arg(), \"\", \")\", \"\", false, 0)?;\n      self.consume(\":\")?;\n      let typ = self.parse_type_term()?;\n      (name, args, typ)\n    } else {\n      let name = self.parse_top_level_name()?;\n      let args = self.list_like(|p| p.parse_def_sig_arg(), \"\", \":\", \"\", false, 0)?;\n      let typ = self.parse_type_term()?;\n      (name, args, typ)\n    };\n    let (args, arg_types): (Vec<_>, Vec<_>) = args.into_iter().unzip();\n    let typ = make_fn_type(arg_types, typ);\n    Ok((name, args, check, typ))\n  }\n\n  fn parse_def_sig_arg(&mut self) -> ParseResult<(Name, Type)> {\n    // name\n    // '(' name ')'\n    // '(' name ':' type ')'\n    if self.try_consume(\"(\") {\n      let name = self.parse_var_name()?;\n      let typ = if self.try_consume(\":\") { self.parse_type_term()? } else { Type::Any };\n      self.consume(\")\")?;\n      Ok((name, typ))\n    } else {\n      let name = self.parse_var_name()?;\n      Ok((name, Type::Any))\n    }\n  }\n\n  fn parse_checked(&mut self, default: bool) -> bool {\n    if self.try_parse_keyword(\"checked\") {\n      true\n    } else if self.try_parse_keyword(\"unchecked\") {\n      false\n    } else {\n      default\n    }\n  }\n\n  fn parse_from_import(&mut self) -> ParseResult<Import> {\n    // from path import package\n    // from path import (a, b)\n    // from path import *\n    self.parse_keyword(\"from\")?;\n    self.skip_trivia_inline()?;\n\n    let path = self.parse_restricted_name(\"Path\")?;\n    self.skip_trivia_inline()?;\n\n    self.consume(\"import\")?;\n    self.skip_trivia_inline()?;\n\n    let relative = path.starts_with(\"./\") | path.starts_with(\"../\");\n\n    if self.try_consume(\"*\") {\n      return Ok(Import::new(path, ImportType::Glob, relative));\n    }\n\n    if self.try_consume(\"(\") {\n      let sub = self.list_like(|p| p.parse_name_maybe_alias(\"Name\"), \"\", \")\", \",\", false, 1)?;\n      return Ok(Import::new(path, ImportType::List(sub), relative));\n    }\n\n    let (import, alias) = self.parse_name_maybe_alias(\"Import\")?;\n    Ok(Import::new(path, ImportType::Single(import, alias), relative))\n  }\n\n  fn parse_import(&mut self) -> ParseResult<Vec<Import>> {\n    // import path\n    // import (path/a, path/b)\n    self.parse_keyword(\"import\")?;\n    self.skip_trivia_inline()?;\n\n    let new_import = |import: Name, alias: Option<Name>, relative: bool| -> Import {\n      let (path, import) = match import.rsplit_once('/') {\n        Some((start, end)) => (Name::new(start), Name::new(end)),\n        None => (Name::default(), import),\n      };\n\n      Import::new(path, ImportType::Single(import, alias), relative)\n    };\n\n    if self.try_consume(\"(\") {\n      let list = self.list_like(|p| p.parse_import_name(\"Name\"), \"\", \")\", \",\", false, 1)?;\n      let imports = list.into_iter().map(|(a, b, c)| new_import(a, b, c)).collect_vec();\n      return Ok(imports);\n    }\n\n    let (import, alias, relative) = self.parse_import_name(\"Import\")?;\n    let import = new_import(import, alias, relative);\n    Ok(vec![import])\n  }\n\n  fn parse_rule_lhs(&mut self) -> ParseResult<(Name, Vec<Pattern>)> {\n    if self.try_consume_exactly(\"(\") {\n      self.skip_trivia();\n      let name = self.parse_restricted_name(\"Function\")?;\n      let pats = self.list_like(|p| p.parse_pattern(false), \"\", \")\", \"\", false, 0)?;\n      Ok((name, pats))\n    } else {\n      // Rule without parens\n      // Here we use a different label for the error because this is\n      // the last alternative case for top-level definitions.\n      let name = self.labelled(|p| p.parse_top_level_name(), \"top-level definition\")?;\n      let mut pats = vec![];\n      self.skip_trivia();\n      while !self.starts_with(\"=\") {\n        pats.push(self.parse_pattern(false)?);\n        self.skip_trivia();\n      }\n      Ok((name, pats))\n    }\n  }\n\n  fn parse_rule(&mut self) -> ParseResult<(Name, Rule)> {\n    self.skip_trivia();\n    let (name, pats) = self.parse_rule_lhs()?;\n\n    self.consume(\"=\")?;\n\n    let body = self.parse_term()?;\n\n    let rule = Rule { pats, body };\n    Ok((name, rule))\n  }\n\n  fn starts_with_rule(&mut self, expected_name: &Name) -> bool {\n    let ini_idx = *self.index();\n    self.skip_trivia();\n    let res = self.parse_rule_lhs();\n    if !self.try_consume(\"=\") {\n      self.index = ini_idx;\n      return false;\n    }\n    self.index = ini_idx;\n    if let Ok((name, _)) = res {\n      if &name == expected_name {\n        // Found rule with the expected name\n        true\n      } else {\n        // Found rule with a different name\n        false\n      }\n    } else {\n      // Not a rule\n      false\n    }\n  }\n\n  fn parse_pattern(&mut self, simple: bool) -> ParseResult<Pattern> {\n    maybe_grow(|| {\n      let (tag, unexpected_tag) = self.parse_tag()?;\n      self.skip_trivia();\n\n      // Ctr or Tup\n      if self.starts_with(\"(\") {\n        self.advance_one();\n        let head_ini_idx = *self.index();\n        let head = self.parse_pattern(simple)?;\n        let head_end_idx = *self.index();\n\n        // Tup\n        self.skip_trivia();\n        if self.starts_with(\",\") || simple {\n          self.consume(\",\")?;\n          let mut els = self.list_like(|p| p.parse_pattern(simple), \"\", \")\", \",\", true, 1)?;\n          els.insert(0, head);\n          return Ok(Pattern::Fan(FanKind::Tup, tag.unwrap_or(Tag::Static), els));\n        }\n\n        // Ctr\n        unexpected_tag(self)?;\n        let Pattern::Var(Some(name)) = head else {\n          return self.expected_spanned(\"constructor name\", head_ini_idx..head_end_idx);\n        };\n        let els = self.list_like(|p| p.parse_pattern(simple), \"\", \")\", \"\", false, 0)?;\n        return Ok(Pattern::Ctr(name, els));\n      }\n\n      // Dup\n      if self.starts_with(\"{\") {\n        let els = self.list_like(|p| p.parse_pattern(simple), \"{\", \"}\", \",\", false, 0)?;\n        return Ok(Pattern::Fan(FanKind::Dup, tag.unwrap_or(Tag::Auto), els));\n      }\n\n      // List\n      if self.starts_with(\"[\") && !simple {\n        unexpected_tag(self)?;\n        let els = self.list_like(|p| p.parse_pattern(simple), \"[\", \"]\", \",\", false, 0)?;\n        return Ok(Pattern::Lst(els));\n      }\n\n      // String\n      if self.starts_with(\"\\\"\") && !simple {\n        unexpected_tag(self)?;\n        let str = self.parse_quoted_string()?;\n        return Ok(Pattern::Str(STRINGS.get(str)));\n      }\n\n      // Char\n      if self.starts_with(\"'\") {\n        unexpected_tag(self)?;\n        let char = self.parse_quoted_char()?;\n        return Ok(Pattern::Num(char as u32));\n      }\n\n      // Number\n      if self.peek_one().is_some_and(|c| c.is_ascii_digit()) {\n        unexpected_tag(self)?;\n        let num = self.parse_u32()?;\n        return Ok(Pattern::Num(num));\n      }\n\n      // Channel\n      if self.starts_with(\"$\") {\n        unexpected_tag(self)?;\n        self.advance_one();\n        self.skip_trivia();\n        let name = self.parse_var_name()?;\n        return Ok(Pattern::Chn(name));\n      }\n\n      // Var\n      if self.starts_with(\"*\")\n        || self\n          .peek_one()\n          .is_some_and(|c| c.is_ascii_alphanumeric() || c == '_' || c == '.' || c == '-' || c == '/')\n      {\n        unexpected_tag(self)?;\n        let nam = self.parse_name_or_era()?;\n        return Ok(Pattern::Var(nam));\n      }\n\n      let ini_idx = *self.index();\n      while !(self.is_eof() || self.starts_with(\"=\")) {\n        self.advance_one();\n      }\n      let cur_idx = *self.index();\n\n      self.expected_spanned(\"pattern or '='\", ini_idx..cur_idx)\n    })\n  }\n\n  pub fn parse_term(&mut self) -> ParseResult<Term> {\n    maybe_grow(|| {\n      let (tag, unexpected_tag) = self.parse_tag()?;\n      self.skip_trivia();\n\n      // Lambda, unscoped lambda\n      if self.starts_with(\"λ\") || self.starts_with(\"@\") {\n        self.advance_one();\n        let tag = tag.unwrap_or(Tag::Static);\n        let pat = self.parse_pattern(true)?;\n        let bod = self.parse_term()?;\n        return Ok(Term::Lam { tag, pat: Box::new(pat), bod: Box::new(bod) });\n      }\n\n      // App, Tup, Num Op\n      if self.starts_with(\"(\") {\n        self.advance_one();\n        self.skip_trivia();\n\n        // Opr but maybe something else\n        // ( +/-n ,    -> Tup with Int/Float\n        // ( +/-n )    -> Int/Float\n        // ( +/-n term -> App with Int/Float\n        // ( * ,       -> Tup with Era\n        // ( * )       -> Era\n        // ( opr       -> Num Op\n        if let Some(opr) = self.try_parse_oper() {\n          if (opr == Op::ADD || opr == Op::SUB) && self.peek_one().is_some_and(|c| \"0123456789\".contains(c)) {\n            unexpected_tag(self)?;\n            *self.index() -= 1;\n            let num = self.parse_number()?;\n            let head = Term::Num { val: num };\n            self.skip_trivia();\n\n            if self.starts_with(\",\") {\n              self.consume_exactly(\",\")?;\n              let tail = self.list_like(|p| p.parse_term(), \"\", \")\", \",\", true, 1)?;\n              let els = [head].into_iter().chain(tail).collect();\n              return Ok(Term::Fan { fan: FanKind::Tup, tag: tag.unwrap_or(Tag::Static), els });\n            }\n\n            if self.starts_with(\")\") {\n              self.consume_exactly(\")\")?;\n              return Ok(head);\n            }\n\n            let els = self.list_like(|p| p.parse_term(), \"\", \")\", \"\", false, 0)?;\n            let term = els.into_iter().fold(head, |fun, arg| Term::App {\n              tag: tag.clone().unwrap_or(Tag::Static),\n              fun: Box::new(fun),\n              arg: Box::new(arg),\n            });\n            return Ok(term);\n          }\n\n          self.skip_trivia();\n\n          if opr == Op::MUL && self.starts_with(\",\") {\n            self.consume_exactly(\",\")?;\n            let tail = self.list_like(|p| p.parse_term(), \"\", \")\", \",\", true, 1)?;\n            let els = [Term::Era].into_iter().chain(tail).collect();\n            return Ok(Term::Fan { fan: FanKind::Tup, tag: tag.unwrap_or(Tag::Static), els });\n          }\n\n          if opr == Op::MUL && self.starts_with(\")\") {\n            self.consume_exactly(\")\")?;\n            return Ok(Term::Era);\n          }\n\n          // Opr\n          unexpected_tag(self)?;\n          let fst = self.parse_term()?;\n          let snd = self.parse_term()?;\n          self.consume(\")\")?;\n          return Ok(Term::Oper { opr, fst: Box::new(fst), snd: Box::new(snd) });\n        }\n\n        // Tup or App\n        let head = self.parse_term()?;\n\n        // Tup\n        self.skip_trivia();\n        if self.starts_with(\",\") {\n          let mut els = vec![head];\n          while self.try_consume(\",\") {\n            els.push(self.parse_term()?);\n          }\n          self.consume(\")\")?;\n          return Ok(Term::Fan { fan: FanKind::Tup, tag: tag.unwrap_or(Tag::Static), els });\n        }\n\n        // App\n        let els = self.list_like(|p| p.parse_term(), \"\", \")\", \"\", false, 0)?;\n        let term = els.into_iter().fold(head, |fun, arg| Term::App {\n          tag: tag.clone().unwrap_or(Tag::Static),\n          fun: Box::new(fun),\n          arg: Box::new(arg),\n        });\n        return Ok(term);\n      }\n\n      // List\n      if self.starts_with(\"[\") {\n        unexpected_tag(self)?;\n        let els = self.list_like(|p| p.parse_term(), \"[\", \"]\", \",\", false, 0)?;\n        return Ok(Term::List { els });\n      }\n\n      // Tree Node\n      if self.starts_with(\"![\") {\n        self.advance_one();\n        self.advance_one();\n        unexpected_tag(self)?;\n        let lft = self.parse_term()?;\n        self.try_consume(\",\");\n        let rgt = self.parse_term()?;\n        self.labelled(|p| p.consume(\"]\"), \"Only two children in a Tree/Node\")?;\n        return Ok(Term::call(Term::r#ref(\"Tree/Node\"), [lft, rgt]));\n      }\n\n      // Tree Leaf\n      if self.starts_with(\"!\") {\n        self.advance_one();\n        unexpected_tag(self)?;\n        let val = self.parse_term()?;\n        return Ok(Term::app(Term::r#ref(\"Tree/Leaf\"), val));\n      }\n\n      // Sup\n      if self.starts_with(\"{\") {\n        let els = self.list_like(|p| p.parse_term(), \"{\", \"}\", \",\", false, 2)?;\n        return Ok(Term::Fan { fan: FanKind::Dup, tag: tag.unwrap_or(Tag::Auto), els });\n      }\n\n      // Unscoped var\n      if self.starts_with(\"$\") {\n        self.advance_one();\n        unexpected_tag(self)?;\n        self.skip_trivia();\n        let nam = self.parse_var_name()?;\n        return Ok(Term::Link { nam });\n      }\n\n      // Era\n      if self.starts_with(\"*\") {\n        self.advance_one();\n        unexpected_tag(self)?;\n        return Ok(Term::Era);\n      }\n\n      // Nat\n      if self.starts_with(\"#\") {\n        self.advance_one();\n        unexpected_tag(self)?;\n        let val = self.parse_u32()?;\n        return Ok(Term::Nat { val });\n      }\n\n      // String\n      if self.starts_with(\"\\\"\") {\n        unexpected_tag(self)?;\n        let str = self.parse_quoted_string()?;\n        return Ok(Term::Str { val: STRINGS.get(str) });\n      }\n\n      // Char\n      if self.starts_with(\"'\") {\n        unexpected_tag(self)?;\n        let char = self.parse_quoted_char()?;\n        return Ok(Term::Num { val: Num::U24(char as u32 & 0x00ff_ffff) });\n      }\n\n      // Symbol\n      if self.starts_with(\"`\") {\n        unexpected_tag(self)?;\n        let val = self.parse_quoted_symbol()?;\n        return Ok(Term::Num { val: Num::U24(val) });\n      }\n\n      // Native Number\n      if self.peek_one().is_some_and(is_num_char) {\n        unexpected_tag(self)?;\n        let num = self.parse_number()?;\n        return Ok(Term::Num { val: num });\n      }\n\n      // Use\n      if self.try_parse_keyword(\"use\") {\n        unexpected_tag(self)?;\n        self.skip_trivia();\n        let nam = self.parse_var_name()?;\n        self.consume(\"=\")?;\n        let val = self.parse_term()?;\n        self.try_consume(\";\");\n        let nxt = self.parse_term()?;\n        return Ok(Term::Use { nam: Some(nam), val: Box::new(val), nxt: Box::new(nxt) });\n      }\n\n      // Let\n      if self.try_parse_keyword(\"let\") {\n        unexpected_tag(self)?;\n        let pat = self.parse_pattern(true)?;\n        self.consume(\"=\")?;\n        let val = self.parse_term()?;\n        self.try_consume(\";\");\n        let nxt = self.parse_term()?;\n        return Ok(Term::Let { pat: Box::new(pat), val: Box::new(val), nxt: Box::new(nxt) });\n      }\n\n      // Ask (monadic operation)\n      if self.try_parse_keyword(\"ask\") {\n        unexpected_tag(self)?;\n        let pat = self.parse_pattern(true)?;\n        self.consume(\"=\")?;\n        let val = self.parse_term()?;\n        self.try_consume(\";\");\n        let nxt = self.parse_term()?;\n        return Ok(Term::Ask { pat: Box::new(pat), val: Box::new(val), nxt: Box::new(nxt) });\n      }\n\n      // Def\n      if self.try_parse_keyword(\"def\") {\n        self.skip_trivia();\n        let mut def = self.parse_fun_def()?;\n        def.source.kind = SourceKind::Generated;\n        let nxt = self.parse_term()?;\n        return Ok(Term::Def { def, nxt: Box::new(nxt) });\n      }\n\n      // If\n      if self.try_parse_keyword(\"if\") {\n        let mut chain = Vec::new();\n        let cnd = self.parse_term()?;\n        self.consume(\"{\")?;\n        let thn = self.parse_term()?;\n        self.consume(\"}\")?;\n\n        chain.push((cnd, thn));\n\n        self.skip_trivia_inline()?;\n        while self.try_parse_keyword(\"elif\") {\n          let cnd = self.parse_term()?;\n          self.consume(\"{\")?;\n          let thn = self.parse_term()?;\n          self.consume(\"}\")?;\n          self.skip_trivia_inline()?;\n          chain.push((cnd, thn));\n        }\n\n        self.consume(\"else\")?;\n        self.consume(\"{\")?;\n        let els = self.parse_term()?;\n        self.consume(\"}\")?;\n        let els = chain.into_iter().rfold(els, |acc, (cnd, thn)| Term::Swt {\n          bnd: Some(Name::new(\"%cond\")),\n          arg: Box::new(cnd),\n          with_bnd: Vec::new(),\n          with_arg: Vec::new(),\n          pred: Some(Name::new(\"%cond-1\")),\n          arms: vec![acc, thn],\n        });\n        return Ok(els);\n      }\n\n      // Match\n      if self.try_parse_keyword(\"match\") {\n        unexpected_tag(self)?;\n        let (bnd, arg) = self.parse_match_arg()?;\n        let (with_bnd, with_arg) = self.parse_with_clause()?;\n        let arms = self.list_like(|p| p.parse_match_arm(), \"\", \"}\", \";\", false, 1)?;\n        return Ok(Term::Mat { arg: Box::new(arg), bnd, with_bnd, with_arg, arms });\n      }\n\n      // Switch\n      if self.try_parse_keyword(\"switch\") {\n        unexpected_tag(self)?;\n        let (bnd, arg) = self.parse_match_arg()?;\n        let (with_bnd, with_arg) = self.parse_with_clause()?;\n\n        self.try_consume(\"|\");\n        self.consume(\"0\")?;\n        self.consume(\":\")?;\n        let zero = self.parse_term()?;\n        self.try_consume(\";\");\n\n        let mut arms = vec![zero];\n        let mut expected_num = 1;\n        loop {\n          self.try_consume(\"|\");\n          // case _\n          if self.try_consume(\"_\") {\n            self.consume(\":\")?;\n            arms.push(self.parse_term()?);\n            self.try_consume(\";\");\n            self.consume(\"}\")?;\n            break;\n          }\n          // case num\n          let val = self.parse_u32()?;\n          if val != expected_num {\n            return self.expected(&format!(\"'{}'\", &expected_num.to_string()));\n          }\n          expected_num += 1;\n          self.consume(\":\")?;\n          arms.push(self.parse_term()?);\n          self.try_consume(\";\");\n        }\n        let pred = Some(Name::new(format!(\"{}-{}\", bnd.as_ref().unwrap(), arms.len() - 1)));\n        return Ok(Term::Swt { arg: Box::new(arg), bnd, with_bnd, with_arg, pred, arms });\n      }\n\n      // With (monadic block)\n      if self.try_parse_keyword(\"with\") {\n        unexpected_tag(self)?;\n        let typ = self.parse_name()?;\n        self.consume(\"{\")?;\n        let bod = self.parse_term()?;\n        self.consume(\"}\")?;\n        return Ok(Term::With { typ: Name::new(typ), bod: Box::new(bod) });\n      }\n\n      // Fold\n      if self.try_parse_keyword(\"fold\") {\n        unexpected_tag(self)?;\n        let (bnd, arg) = self.parse_match_arg()?;\n        let (with_bnd, with_arg) = self.parse_with_clause()?;\n        let arms = self.list_like(|p| p.parse_match_arm(), \"\", \"}\", \";\", false, 1)?;\n        return Ok(Term::Fold { arg: Box::new(arg), bnd, with_bnd, with_arg, arms });\n      }\n\n      // Bend\n      if self.try_parse_keyword(\"bend\") {\n        unexpected_tag(self)?;\n        let args = self.list_like(\n          |p| {\n            let bind = p.parse_var_name()?;\n            let init = if p.try_consume(\"=\") { p.parse_term()? } else { Term::Var { nam: bind.clone() } };\n            Ok((bind, init))\n          },\n          \"\",\n          \"{\",\n          \",\",\n          false,\n          0,\n        )?;\n        let (bind, init): (Vec<_>, Vec<_>) = args.into_iter().unzip();\n        let bind = bind.into_iter().map(Some).collect::<Vec<_>>();\n        self.skip_trivia();\n        self.parse_keyword(\"when\")?;\n        let cond = self.parse_term()?;\n        self.consume(\":\")?;\n        let step = self.parse_term()?;\n        self.skip_trivia();\n        self.parse_keyword(\"else\")?;\n        self.consume(\":\")?;\n        let base = self.parse_term()?;\n        self.consume(\"}\")?;\n        return Ok(Term::Bend {\n          bnd: bind,\n          arg: init,\n          cond: Box::new(cond),\n          step: Box::new(step),\n          base: Box::new(base),\n        });\n      }\n\n      // Open\n      if self.try_parse_keyword(\"open\") {\n        unexpected_tag(self)?;\n        self.skip_trivia();\n        let typ = self.parse_top_level_name()?;\n        self.skip_trivia();\n        let var = self.parse_var_name()?;\n        self.try_consume(\";\");\n        let bod = self.parse_term()?;\n        return Ok(Term::Open { typ, var, bod: Box::new(bod) });\n      }\n\n      // Var\n      unexpected_tag(self)?;\n      let nam = self.labelled(|p| p.parse_var_name(), \"term\")?;\n      Ok(Term::Var { nam })\n    })\n  }\n\n  fn parse_name_or_era(&mut self) -> ParseResult<Option<Name>> {\n    self.labelled(\n      |p| {\n        if p.try_consume_exactly(\"*\") {\n          Ok(None)\n        } else {\n          let nam = p.parse_var_name()?;\n          Ok(Some(nam))\n        }\n      },\n      \"name or '*'\",\n    )\n  }\n\n  /// Parses a tag where it may or may not be valid.\n  ///\n  /// If it is not valid, the returned callback can be used to issue an error.\n  fn parse_tag(&mut self) -> ParseResult<(Option<Tag>, impl FnOnce(&mut Self) -> ParseResult<()>)> {\n    let index = self.index;\n    self.skip_trivia();\n    let tag = if self.peek_one() == Some('#')\n      && !self.peek_many(2).is_some_and(|x| x.chars().nth(1).unwrap().is_ascii_digit())\n    {\n      let msg = \"Tagged terms not supported for hvm32.\".to_string();\n      return self.err_msg_spanned(&msg, index..index + 1);\n    } else {\n      None\n    };\n    let end_index = self.index;\n    Ok((tag.clone(), move |slf: &mut Self| {\n      if let Some(tag) = tag {\n        let msg = format!(\"Unexpected tag '{tag}'\");\n        slf.err_msg_spanned(&msg, index..end_index)\n      } else {\n        Ok(())\n      }\n    }))\n  }\n\n  // A named arg with optional name.\n  fn parse_match_arg(&mut self) -> ParseResult<(Option<Name>, Term)> {\n    let ini_idx = *self.index();\n    let mut arg = self.parse_term()?;\n    let end_idx = *self.index();\n\n    self.skip_trivia();\n    match (&mut arg, self.starts_with(\"=\")) {\n      (Term::Var { nam }, true) => {\n        self.consume(\"=\")?;\n        Ok((Some(std::mem::take(nam)), self.parse_term()?))\n      }\n      (Term::Var { nam }, false) => Ok((Some(nam.clone()), Term::Var { nam: std::mem::take(nam) })),\n      (_, true) => self.expected_spanned(\"argument name\", ini_idx..end_idx),\n      (arg, false) => Ok((Some(Name::new(\"%arg\")), std::mem::take(arg))),\n    }\n  }\n\n  /// A named arg with non-optional name.\n  fn parse_named_arg(&mut self) -> ParseResult<(Option<Name>, Term)> {\n    let nam = self.parse_var_name()?;\n    self.skip_trivia();\n    if self.starts_with(\"=\") {\n      self.advance_one();\n      let arg = self.parse_term()?;\n      Ok((Some(nam), arg))\n    } else {\n      let arg = Term::Var { nam: nam.clone() };\n      Ok((Some(nam), arg))\n    }\n  }\n\n  fn parse_with_clause(&mut self) -> ParseResult<(Vec<Option<Name>>, Vec<Term>)> {\n    self.skip_trivia();\n    let res = if self.try_parse_keyword(\"with\") {\n      self.list_like(|p| p.parse_named_arg(), \"\", \"{\", \",\", false, 1)?.into_iter().unzip()\n    } else {\n      self.consume_exactly(\"{\")?;\n      (vec![], vec![])\n    };\n    Ok(res)\n  }\n\n  fn parse_match_arm(&mut self) -> ParseResult<MatchRule> {\n    self.try_consume(\"|\");\n    self.skip_trivia();\n    let nam = self.parse_name_or_era()?;\n    self.consume(\":\")?;\n    let bod = self.parse_term()?;\n    Ok((nam, vec![], bod))\n  }\n\n  fn parse_type_term(&mut self) -> ParseResult<Type> {\n    let mut left = self.parse_type_atom()?;\n    self.skip_trivia();\n    while self.try_consume_exactly(\"->\") {\n      let right = self.parse_type_term()?;\n      left = Type::Arr(Box::new(left), Box::new(right));\n    }\n    Ok(left)\n  }\n\n  /// Parses a type without an ending arrow.\n  /// Either an atom, a tuple, a ctr or a parenthesized type.\n  fn parse_type_atom(&mut self) -> ParseResult<Type> {\n    self.skip_trivia();\n    if self.try_parse_keyword(\"Any\") {\n      Ok(Type::Any)\n    } else if self.try_parse_keyword(\"None\") {\n      Ok(Type::None)\n    } else if self.try_parse_keyword(\"_\") {\n      Ok(Type::Hole)\n    } else if self.try_parse_keyword(\"u24\") {\n      Ok(Type::U24)\n    } else if self.try_parse_keyword(\"i24\") {\n      Ok(Type::I24)\n    } else if self.try_parse_keyword(\"f24\") {\n      Ok(Type::F24)\n    } else if self.try_consume_exactly(\"(\") {\n      // Tuple, constructor or parenthesized expression\n      let ini_idx = *self.index();\n      let head = self.parse_type_term()?;\n      self.skip_trivia();\n      if self.try_consume_exactly(\")\") {\n        // Parens\n        Ok(head)\n      } else if self.try_consume_exactly(\",\") {\n        // Tuple\n        let mut types = vec![head];\n        loop {\n          types.push(self.parse_type_term()?);\n          self.skip_trivia();\n          if !self.try_consume_exactly(\",\") {\n            break;\n          }\n        }\n        self.consume(\")\")?;\n        Ok(Type::Tup(types))\n      } else {\n        // Constructor\n        let Type::Var(nam) = head else {\n          let end_idx = *self.index();\n          // TODO: This is not a good error message\n          return self.expected_spanned(\"type constructor\", ini_idx..end_idx);\n        };\n        let mut args = vec![];\n        // We know there's at least one argument, otherwise it would go in the parens case.\n        while !self.try_consume(\")\") {\n          args.push(self.parse_type_term()?);\n          self.skip_trivia();\n        }\n        Ok(Type::Ctr(nam, args))\n      }\n    } else {\n      // Variable\n      // TODO: This will show \"expected Name\" instead of \"expected type\"\n      let nam = self.parse_var_name()?;\n      Ok(Type::Var(nam))\n    }\n  }\n\n  fn add_fun_def(&mut self, def: FunDefinition, book: &mut ParseBook, span: Range<usize>) -> ParseResult<()> {\n    self.check_top_level_redefinition(&def.name, book, span)?;\n    book.fun_defs.insert(def.name.clone(), def);\n    Ok(())\n  }\n\n  fn add_imp_def(\n    &mut self,\n    def: crate::imp::Definition,\n    book: &mut ParseBook,\n    span: Range<usize>,\n  ) -> ParseResult<()> {\n    self.check_top_level_redefinition(&def.name, book, span)?;\n    book.imp_defs.insert(def.name.clone(), def);\n    Ok(())\n  }\n\n  fn add_hvm(&mut self, def: HvmDefinition, book: &mut ParseBook, span: Range<usize>) -> ParseResult<()> {\n    self.check_top_level_redefinition(&def.name, book, span)?;\n    book.hvm_defs.insert(def.name.clone(), def);\n    Ok(())\n  }\n\n  fn add_type_def(&mut self, adt: Adt, book: &mut ParseBook, span: Range<usize>) -> ParseResult<()> {\n    self.check_type_redefinition(&adt.name, book, span.clone())?;\n    for ctr in adt.ctrs.keys() {\n      if let Some(builtin) = book.contains_builtin_def(ctr) {\n        let msg = FunParser::redefinition_of_function_msg(builtin, ctr);\n        return self.err_msg_spanned(&msg, span);\n      }\n      match book.ctrs.entry(ctr.clone()) {\n        indexmap::map::Entry::Vacant(e) => _ = e.insert(adt.name.clone()),\n        indexmap::map::Entry::Occupied(e) => {\n          let msg = FunParser::redefinition_of_constructor_msg(e.key());\n          return self.err_msg_spanned(&msg, span);\n        }\n      }\n    }\n    book.adts.insert(adt.name.clone(), adt);\n    Ok(())\n  }\n\n  fn check_top_level_redefinition(\n    &mut self,\n    name: &Name,\n    book: &mut ParseBook,\n    span: Range<usize>,\n  ) -> ParseResult<()> {\n    if let Some(builtin) = book.contains_builtin_def(name) {\n      let msg = Self::redefinition_of_function_msg(builtin, name);\n      return self.err_msg_spanned(&msg, span);\n    }\n    if book.ctrs.contains_key(name) {\n      let msg = Self::redefinition_of_constructor_msg(name);\n      return self.err_msg_spanned(&msg, span);\n    }\n    if book.hvm_defs.contains_key(name) {\n      let msg = Self::redefinition_of_hvm_msg(false, name);\n      return self.err_msg_spanned(&msg, span);\n    }\n    Ok(())\n  }\n\n  fn check_type_redefinition(\n    &mut self,\n    name: &Name,\n    book: &mut ParseBook,\n    span: Range<usize>,\n  ) -> ParseResult<()> {\n    if book.adts.contains_key(name) {\n      let msg = Self::redefinition_of_type_msg(name);\n      return self.err_msg_spanned(&msg, span);\n    }\n    Ok(())\n  }\n}\n\nimpl<'a> Parser<'a> for FunParser<'a> {\n  fn input(&mut self) -> &'a str {\n    self.input\n  }\n\n  fn index(&mut self) -> &mut usize {\n    &mut self.index\n  }\n\n  /// Generates an error message for parsing failures, including the highlighted context.\n  ///\n  /// Override to have our own error message.\n  fn expected<T>(&mut self, exp: &str) -> ParseResult<T> {\n    let ini_idx = *self.index();\n    let end_idx = *self.index() + 1;\n    self.expected_spanned(exp, ini_idx..end_idx)\n  }\n\n  /// Generates an error message with an additional custom message.\n  ///\n  /// Override to have our own error message.\n  fn expected_and<T>(&mut self, exp: &str, msg: &str) -> ParseResult<T> {\n    let ini_idx = *self.index();\n    let end_idx = *self.index() + 1;\n    self.expected_spanned_and(exp, msg, ini_idx..end_idx)\n  }\n\n  /// Consumes an instance of the given string, erroring if it is not found.\n  ///\n  /// Override to have our own error message.\n  fn consume(&mut self, text: &str) -> ParseResult<()> {\n    self.skip_trivia();\n    if self.input().get(*self.index()..).unwrap_or_default().starts_with(text) {\n      *self.index() += text.len();\n      Ok(())\n    } else {\n      self.expected(format!(\"'{text}'\").as_str())\n    }\n  }\n\n  fn skip_trivia(&mut self) {\n    while let Some(c) = self.peek_one() {\n      if c.is_ascii_whitespace() {\n        self.advance_one();\n        continue;\n      }\n      if c == '#' {\n        self.advance_one();\n        if let Some(c) = self.peek_one() {\n          if c == '{' {\n            self.advance_one();\n            while let Some(c) = self.peek_one() {\n              self.advance_one();\n              if c == '#' {\n                if let Some('}') = self.peek_one() {\n                  self.advance_one();\n                  break;\n                } else {\n                  self.advance_one();\n                }\n              }\n            }\n          } else {\n            while let Some(c) = self.peek_one() {\n              if c != '\\n' {\n                self.advance_one();\n              } else {\n                break;\n              }\n            }\n          }\n        }\n        continue;\n      }\n      break;\n    }\n  }\n}\n\npub fn is_name_char(c: char) -> bool {\n  c.is_ascii_alphanumeric() || c == '_' || c == '.' || c == '-' || c == '/'\n}\n\npub fn is_num_char(c: char) -> bool {\n  \"0123456789+-\".contains(c)\n}\n\npub fn make_fn_type(args: Vec<Type>, ret: Type) -> Type {\n  args.into_iter().rfold(ret, |acc, typ| Type::Arr(Box::new(typ), Box::new(acc)))\n}\n\npub fn make_ctr_type(type_name: Name, fields: &[Type], vars: &[Name]) -> Type {\n  let typ = Type::Ctr(type_name, vars.iter().cloned().map(Type::Var).collect());\n  let typ = fields.iter().rfold(typ, |acc, typ| Type::Arr(Box::new(typ.clone()), Box::new(acc)));\n  typ\n}\n\n#[derive(Debug, PartialEq, Eq, Clone, Copy)]\npub enum Indent {\n  Val(isize),\n  Eof,\n}\n\nimpl Indent {\n  pub fn new(val: isize) -> Self {\n    Indent::Val(val)\n  }\n\n  pub fn enter_level(&mut self) {\n    if let Indent::Val(val) = self {\n      *val += 2;\n    }\n  }\n\n  pub fn exit_level(&mut self) {\n    if let Indent::Val(val) = self {\n      *val -= 2;\n    }\n  }\n}\n\nimpl<'a> ParserCommons<'a> for FunParser<'a> {}\n\npub trait ParserCommons<'a>: Parser<'a> {\n  fn labelled<T>(&mut self, parser: impl Fn(&mut Self) -> ParseResult<T>, label: &str) -> ParseResult<T> {\n    match parser(self) {\n      Ok(val) => Ok(val),\n      Err(_) => self.expected(label),\n    }\n  }\n\n  fn parse_restricted_name(&mut self, kind: &str) -> ParseResult<Name> {\n    let ini_idx = *self.index();\n    let name = self.take_while(is_name_char);\n    if name.is_empty() {\n      self.expected(&format!(\"{kind} name\"))?\n    }\n    let name = Name::new(name.to_owned());\n    let end_idx = *self.index();\n    if name.contains(\"__\") {\n      let msg = format!(\"{kind} names are not allowed to contain \\\"__\\\".\");\n      self.err_msg_spanned(&msg, ini_idx..end_idx)\n    } else if name.starts_with(\"//\") {\n      let msg = format!(\"{kind} names are not allowed to start with \\\"//\\\".\");\n      self.err_msg_spanned(&msg, ini_idx..end_idx)\n    } else {\n      Ok(name)\n    }\n  }\n\n  fn parse_top_level_name(&mut self) -> ParseResult<Name> {\n    self.parse_restricted_name(\"Top-level\")\n  }\n\n  fn parse_var_name(&mut self) -> ParseResult<Name> {\n    self.parse_restricted_name(\"Variable\")\n  }\n\n  fn parse_name_maybe_alias(&mut self, label: &str) -> ParseResult<(Name, Option<Name>)> {\n    let name = self.parse_restricted_name(label)?;\n\n    if self.try_consume(\"as\") {\n      self.skip_trivia();\n      let alias = self.parse_restricted_name(\"Alias\")?;\n      Ok((name, Some(alias)))\n    } else {\n      Ok((name, None))\n    }\n  }\n\n  fn parse_import_name(&mut self, label: &str) -> ParseResult<(Name, Option<Name>, bool)> {\n    let (import, alias) = self.parse_name_maybe_alias(label)?;\n    let relative = import.starts_with(\"./\") | import.starts_with(\"../\");\n    Ok((import, alias, relative))\n  }\n\n  /// Consumes exactly the text without skipping.\n  fn consume_exactly(&mut self, text: &str) -> ParseResult<()> {\n    if self.input().get(*self.index()..).unwrap_or_default().starts_with(text) {\n      *self.index() += text.len();\n      Ok(())\n    } else {\n      self.expected(format!(\"'{text}'\").as_str())\n    }\n  }\n\n  fn consume_new_line(&mut self) -> ParseResult<()> {\n    self.skip_trivia_inline()?;\n    self.try_consume_exactly(\"\\r\");\n    self.labelled(|p| p.consume_exactly(\"\\n\"), \"newline\")\n  }\n\n  /// Skips trivia, returns the number of trivia characters skipped in the last line.\n  fn advance_newlines(&mut self) -> ParseResult<Indent> {\n    loop {\n      let num_spaces = self.advance_trivia_inline()?;\n      if self.peek_one() == Some('\\r') {\n        self.advance_one();\n      }\n      if self.peek_one() == Some('\\n') {\n        self.advance_one();\n      } else if self.is_eof() {\n        return Ok(Indent::Eof);\n      } else {\n        return Ok(Indent::Val(num_spaces));\n      }\n    }\n  }\n\n  /// Advances the parser to the next non-trivia character in the same line.\n  /// Returns how many characters were advanced.\n  fn advance_trivia_inline(&mut self) -> ParseResult<isize> {\n    let mut char_count = 0;\n    while let Some(c) = self.peek_one() {\n      if c == '\\t' {\n        let idx = *self.index();\n        return self.err_msg_spanned(\"Tabs are not accepted for indentation.\", idx..idx + 1);\n      }\n      if \" \".contains(c) {\n        self.advance_one();\n        char_count += 1;\n        continue;\n      }\n      if c == '#' {\n        self.advance_one();\n        char_count += 1;\n        if let Some(c) = self.peek_one() {\n          if c == '{' {\n            self.advance_one();\n            char_count += 1;\n            while let Some(c) = self.peek_one() {\n              self.advance_one();\n              char_count += 1;\n              if c == '#' {\n                if let Some('}') = self.peek_one() {\n                  self.advance_one();\n                  char_count += 1;\n                  break;\n                } else {\n                  self.advance_one();\n                  char_count += 1;\n                }\n              }\n            }\n          } else {\n            while let Some(c) = self.peek_one() {\n              if c != '\\n' {\n                self.advance_one();\n                char_count += 1;\n              } else {\n                break;\n              }\n            }\n          }\n        }\n        continue;\n      }\n      break;\n    }\n    Ok(char_count)\n  }\n\n  /// Skips until the next non-trivia character in the same line.\n  fn skip_trivia_inline(&mut self) -> ParseResult<()> {\n    self.advance_trivia_inline()?;\n    Ok(())\n  }\n\n  fn expected_spanned<T>(&mut self, exp: &str, span: Range<usize>) -> ParseResult<T> {\n    let is_eof = self.is_eof();\n    let detected = DisplayFn(|f| if is_eof { write!(f, \" end of input\") } else { Ok(()) });\n    let msg = format!(\"\\x1b[1m- expected:\\x1b[0m {}\\n\\x1b[1m- detected:\\x1b[0m{}\", exp, detected);\n    self.with_ctx(Err(msg), span)\n  }\n\n  /// Same as `expected_spanned` but adds an information message before the expected message.\n  fn expected_spanned_and<T>(&mut self, exp: &str, msg: &str, span: Range<usize>) -> ParseResult<T> {\n    let is_eof = self.is_eof();\n    let detected = DisplayFn(|f| if is_eof { write!(f, \" end of input\") } else { Ok(()) });\n    let msg = format!(\n      \"\\x1b[1m- information:\\x1b[0m {}\\n\\x1b[1m- expected:\\x1b[0m {}\\n\\x1b[1m- detected:\\x1b[0m{}\",\n      msg, exp, detected,\n    );\n    self.with_ctx(Err(msg), span)\n  }\n\n  /// If the parser result is an error, adds code location information to the error message.\n  fn err_msg_spanned<T>(&mut self, msg: &str, span: Range<usize>) -> ParseResult<T> {\n    let is_eof = self.is_eof();\n    let eof_msg = if is_eof { \" end of input\" } else { \"\" };\n    let msg = format!(\"{msg}\\nLocation:{eof_msg}\");\n    self.with_ctx(Err(msg), span)\n  }\n\n  /// If the parser result is an error, adds highlighted code context to the message.\n  fn with_ctx<T>(&mut self, res: Result<T, impl std::fmt::Display>, span: Range<usize>) -> ParseResult<T> {\n    res.map_err(|msg| {\n      let ctx = highlight_error(span.start, span.end, self.input());\n      let msg = format!(\"{msg}\\n{ctx}\");\n      ParseError::new((span.start, span.end), msg)\n    })\n  }\n\n  /// Consumes text if the input starts with it or trivia. Otherwise, do nothing.\n  fn try_consume(&mut self, text: &str) -> bool {\n    self.skip_trivia();\n    if self.starts_with(text) {\n      self.consume(text).unwrap();\n      true\n    } else {\n      false\n    }\n  }\n\n  /// Consumes text if the input starts exactly with it. Otherwise, do nothing.\n  fn try_consume_exactly(&mut self, text: &str) -> bool {\n    if self.starts_with(text) {\n      self.consume_exactly(text).unwrap();\n      true\n    } else {\n      false\n    }\n  }\n\n  fn try_parse_keyword(&mut self, keyword: &str) -> bool {\n    if self.starts_with_keyword(keyword) {\n      self.consume_exactly(keyword).unwrap();\n      true\n    } else {\n      false\n    }\n  }\n\n  fn parse_keyword(&mut self, keyword: &str) -> ParseResult<()> {\n    let ini_idx = *self.index();\n    self.consume_exactly(keyword)?;\n    let end_idx = *self.index();\n    let input = &self.input()[*self.index()..];\n    let next_is_name = input.chars().next().is_some_and(is_name_char);\n    if !next_is_name {\n      Ok(())\n    } else {\n      self.expected_spanned(&format!(\"keyword '{keyword}'\"), ini_idx..end_idx + 1)\n    }\n  }\n\n  fn starts_with_keyword(&mut self, keyword: &str) -> bool {\n    if self.starts_with(keyword) {\n      let input = &self.input()[*self.index() + keyword.len()..];\n      let next_is_name = input.chars().next().is_some_and(is_name_char);\n      !next_is_name\n    } else {\n      false\n    }\n  }\n\n  /// Parses a list-like structure like \"[x1, x2, x3,]\".\n  /// Since a list is always well terminated, we consume newlines.\n  ///\n  /// `parser` is a function that parses an element of the list.\n  ///\n  /// If `hard_sep` the separator between elements is mandatory.\n  /// Always accepts trailing separators.\n  ///\n  /// `min_els` determines how many elements must be parsed at minimum.\n  fn list_like<T>(\n    &mut self,\n    mut parser: impl FnMut(&mut Self) -> ParseResult<T>,\n    start: &str,\n    end: &str,\n    sep: &str,\n    hard_sep: bool,\n    min_els: usize,\n  ) -> ParseResult<Vec<T>> {\n    self.consume_exactly(start)?;\n\n    let mut els = vec![];\n    // Consume the minimum number of elements\n    for i in 0..min_els {\n      self.skip_trivia();\n      els.push(parser(self)?);\n      self.skip_trivia();\n      if hard_sep && !(i == min_els - 1 && self.starts_with(end)) {\n        self.consume(sep)?;\n      } else {\n        self.try_consume(sep);\n      }\n    }\n\n    // Consume optional elements\n    while !self.try_consume(end) {\n      els.push(parser(self)?);\n      self.skip_trivia();\n      if hard_sep && !self.starts_with(end) {\n        self.consume(sep)?;\n      } else {\n        self.try_consume(sep);\n      }\n    }\n    Ok(els)\n  }\n\n  fn try_parse_oper(&mut self) -> Option<Op> {\n    let opr = if self.try_consume_exactly(\"+\") {\n      Op::ADD\n    } else if self.try_consume_exactly(\"-\") {\n      Op::SUB\n    } else if self.try_consume_exactly(\"**\") {\n      Op::POW\n    } else if self.try_consume_exactly(\"*\") {\n      Op::MUL\n    } else if self.try_consume_exactly(\"/\") {\n      Op::DIV\n    } else if self.try_consume_exactly(\"%\") {\n      Op::REM\n    } else if self.try_consume_exactly(\"<<\") {\n      Op::SHL\n    } else if self.try_consume_exactly(\">>\") {\n      Op::SHR\n    } else if self.try_consume_exactly(\"<=\") {\n      Op::LE\n    } else if self.try_consume_exactly(\">=\") {\n      Op::GE\n    } else if self.try_consume_exactly(\"<\") {\n      Op::LT\n    } else if self.try_consume_exactly(\">\") {\n      Op::GT\n    } else if self.try_consume_exactly(\"==\") {\n      Op::EQ\n    } else if self.try_consume_exactly(\"!=\") {\n      Op::NEQ\n    } else if self.try_consume_exactly(\"&\") {\n      Op::AND\n    } else if self.try_consume_exactly(\"|\") {\n      Op::OR\n    } else if self.try_consume_exactly(\"^\") {\n      Op::XOR\n    } else {\n      return None;\n    };\n    Some(opr)\n  }\n\n  fn peek_oper(&mut self) -> Option<Op> {\n    let opr = if self.starts_with(\"+\") {\n      Op::ADD\n    } else if self.starts_with(\"-\") {\n      Op::SUB\n    } else if self.starts_with(\"**\") {\n      Op::POW\n    } else if self.starts_with(\"*\") {\n      Op::MUL\n    } else if self.starts_with(\"/\") {\n      Op::DIV\n    } else if self.starts_with(\"%\") {\n      Op::REM\n    } else if self.starts_with(\"<<\") {\n      Op::SHL\n    } else if self.starts_with(\">>\") {\n      Op::SHR\n    } else if self.starts_with(\"<=\") {\n      Op::LE\n    } else if self.starts_with(\">=\") {\n      Op::GE\n    } else if self.starts_with(\"<\") {\n      Op::LT\n    } else if self.starts_with(\">\") {\n      Op::GT\n    } else if self.starts_with(\"==\") {\n      Op::EQ\n    } else if self.starts_with(\"!=\") {\n      Op::NEQ\n    } else if self.starts_with(\"&\") {\n      Op::AND\n    } else if self.starts_with(\"|\") {\n      Op::OR\n    } else if self.starts_with(\"^\") {\n      Op::XOR\n    } else {\n      return None;\n    };\n    Some(opr)\n  }\n\n  fn parse_u32(&mut self) -> ParseResult<u32> {\n    let radix = match self.peek_many(2) {\n      Some(\"0x\") => {\n        self.advance_many(2);\n        Radix::Hex\n      }\n      Some(\"0b\") => {\n        self.advance_many(2);\n        Radix::Bin\n      }\n      _ => Radix::Dec,\n    };\n    let num_str = self.take_while(move |c| c.is_digit(radix as u32) || c == '_');\n    let num_str = num_str.chars().filter(|c| *c != '_').collect::<String>();\n\n    let next_is_hex = self.peek_one().is_some_and(|c| \"0123456789abcdefABCDEF\".contains(c));\n    if next_is_hex || num_str.is_empty() {\n      self.expected(format!(\"valid {radix} digit\").as_str())\n    } else {\n      u32::from_str_radix(&num_str, radix as u32)\n        .map_err(|e| self.expected_and::<u64>(\"integer\", &e.to_string()).unwrap_err())\n    }\n  }\n\n  fn u32_with_radix(&mut self, radix: Radix) -> ParseResult<u32> {\n    let num_str = self.take_while(move |c| c.is_digit(radix as u32) || c == '_');\n    let num_str = num_str.chars().filter(|c| *c != '_').collect::<String>();\n    let next_is_hex = self.peek_one().is_some_and(|c| \"0123456789abcdefABCDEF\".contains(c));\n    if next_is_hex || num_str.is_empty() {\n      self.expected(format!(\"valid {radix} digit\").as_str())\n    } else {\n      u32::from_str_radix(&num_str, radix as u32)\n        .map_err(|e| self.expected_and::<u64>(\"integer\", &e.to_string()).unwrap_err())\n    }\n  }\n\n  fn parse_number(&mut self) -> ParseResult<Num> {\n    let ini_idx = *self.index();\n    let sign = if self.try_consume_exactly(\"+\") {\n      Some(1)\n    } else if self.try_consume_exactly(\"-\") {\n      Some(-1)\n    } else {\n      None\n    };\n    let radix = match self.peek_many(2) {\n      Some(\"0x\") => {\n        self.advance_many(2);\n        Radix::Hex\n      }\n      Some(\"0b\") => {\n        self.advance_many(2);\n        Radix::Bin\n      }\n      _ => Radix::Dec,\n    };\n    let num = self.u32_with_radix(radix)?;\n    let frac = if let Some('.') = self.peek_one() {\n      self.advance_one();\n      let fra_str = self.take_while(|c| c.is_digit(radix as u32) || c == '_');\n      let fra_str = fra_str.chars().filter(|c| *c != '_').collect::<String>();\n      let fra = u32::from_str_radix(&fra_str, radix as u32)\n        .map_err(|e| self.expected_and::<u64>(\"integer\", &e.to_string()).unwrap_err())?;\n      let fra = fra as f32 / (radix.to_f32()).powi(fra_str.len() as i32);\n      Some(fra)\n    } else {\n      None\n    };\n\n    if let Some(frac) = frac {\n      let sign = sign.unwrap_or(1);\n      return Ok(Num::F24(sign as f32 * (num as f32 + frac)));\n    }\n\n    if let Some(sign) = sign {\n      let num = sign * num as i32;\n      if !(-0x00800000..=0x007fffff).contains(&num) {\n        return self.num_range_err(ini_idx, \"I24\");\n      }\n      Ok(Num::I24(num))\n    } else {\n      if num >= 1 << 24 {\n        return self.num_range_err(ini_idx, \"U24\");\n      }\n      Ok(Num::U24(num))\n    }\n  }\n\n  fn num_range_err<T>(&mut self, ini_idx: usize, typ: &str) -> ParseResult<T> {\n    let msg = format!(\"\\x1b[1mNumber literal outside of range for {}.\\x1b[0m\", typ);\n    let end_idx = *self.index();\n    self.err_msg_spanned(&msg, ini_idx..end_idx)\n  }\n\n  /// Parses up to 4 base64 characters surrounded by \"`\".\n  /// Joins the characters into a u24 and returns it.\n  fn parse_quoted_symbol(&mut self) -> ParseResult<u32> {\n    self.consume_exactly(\"`\")?;\n    let mut result = 0;\n    let mut count = 0;\n    while count < 4 {\n      if self.starts_with(\"`\") {\n        break;\n      }\n      count += 1;\n      let Some(c) = self.advance_one() else { self.expected(\"base_64 character\")? };\n      let c = c as u8;\n      let nxt = match c {\n        b'A'..=b'Z' => c - b'A',\n        b'a'..=b'z' => c - b'a' + 26,\n        b'0'..=b'9' => c - b'0' + 52,\n        b'+' => 62,\n        b'/' => 63,\n        _ => return self.expected(\"base64 character\"),\n      };\n      result = (result << 6) | nxt as u32;\n    }\n    self.consume_exactly(\"`\")?;\n    Ok(result)\n  }\n\n  fn check_repeated_ctr_fields(\n    &mut self,\n    fields: &[CtrField],\n    ctr_name: &Name,\n    span: Range<usize>,\n  ) -> ParseResult<()> {\n    for i in 0..fields.len() {\n      let field = &fields[i];\n      if fields.iter().skip(i + 1).any(|a: &CtrField| a.nam == field.nam) {\n        let msg = format!(\"Found a repeated field '{}' in constructor {}.\", field.nam, ctr_name);\n        return self.err_msg_spanned(&msg, span);\n      }\n    }\n    Ok(())\n  }\n\n  fn redefinition_of_function_msg(builtin: bool, function_name: &str) -> String {\n    if builtin {\n      format!(\"Redefinition of builtin (function) '{function_name}'.\")\n    } else {\n      format!(\"Redefinition of function '{function_name}'.\")\n    }\n  }\n\n  fn redefinition_of_hvm_msg(builtin: bool, function_name: &str) -> String {\n    if builtin {\n      format!(\"Redefinition of builtin (native HVM function) '{function_name}'.\")\n    } else {\n      format!(\"Redefinition of native HVM function '{function_name}'.\")\n    }\n  }\n\n  fn redefinition_of_constructor_msg(constructor_name: &str) -> String {\n    if crate::fun::builtins::BUILTIN_CTRS.contains(&constructor_name) {\n      format!(\"Redefinition of builtin (constructor) '{constructor_name}'.\")\n    } else {\n      format!(\"Redefinition of constructor '{constructor_name}'.\")\n    }\n  }\n\n  fn redefinition_of_type_msg(type_name: &str) -> String {\n    if crate::fun::builtins::BUILTIN_TYPES.contains(&type_name) {\n      format!(\"Redefinition of builtin (type) '{type_name}'.\")\n    } else {\n      format!(\"Redefinition of type '{type_name}'.\")\n    }\n  }\n}\n\n#[derive(Clone, Copy, Debug, PartialEq, Eq)]\npub enum Radix {\n  Bin = 2,\n  Dec = 10,\n  Hex = 16,\n}\n\nimpl Radix {\n  fn to_f32(self) -> f32 {\n    match self {\n      Radix::Bin => 2.,\n      Radix::Dec => 10.,\n      Radix::Hex => 16.,\n    }\n  }\n}\n\nimpl std::fmt::Display for Radix {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      Radix::Bin => write!(f, \"binary\"),\n      Radix::Dec => write!(f, \"decimal\"),\n      Radix::Hex => write!(f, \"hexadecimal\"),\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/term_to_net.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{num_to_name, Book, FanKind, Name, Op, Pattern, Term},\n  hvm::{net_trees, tree_children},\n  maybe_grow,\n  net::CtrKind::{self, *},\n};\nuse hvm::ast::{Net, Tree};\nuse loaned::LoanedMut;\nuse std::{\n  collections::{hash_map::Entry, HashMap},\n  ops::{Index, IndexMut},\n};\n\n#[derive(Debug, Clone)]\npub struct ViciousCycleErr;\n\npub fn book_to_hvm(book: &Book, diags: &mut Diagnostics) -> Result<(hvm::ast::Book, Labels), Diagnostics> {\n  let mut hvm_book = hvm::ast::Book { defs: Default::default() };\n  let mut labels = Labels::default();\n\n  let main = book.entrypoint.as_ref();\n\n  for def in book.defs.values() {\n    for rule in def.rules.iter() {\n      let net = term_to_hvm(&rule.body, &mut labels);\n\n      let name = if main.is_some_and(|m| &def.name == m) {\n        book.hvm_entrypoint().to_string()\n      } else {\n        def.name.0.to_string()\n      };\n\n      match net {\n        Ok(net) => {\n          hvm_book.defs.insert(name, net);\n        }\n        Err(err) => diags.add_inet_error(err, name),\n      }\n    }\n  }\n\n  // TODO: native hvm nets ignore labels\n  for def in book.hvm_defs.values() {\n    hvm_book.defs.insert(def.name.to_string(), def.body.clone());\n  }\n\n  labels.con.finish();\n  labels.dup.finish();\n\n  diags.fatal((hvm_book, labels))\n}\n\n/// Converts an LC term into an IC net.\npub fn term_to_hvm(term: &Term, labels: &mut Labels) -> Result<Net, String> {\n  let mut net = Net { root: Tree::Era, rbag: Default::default() };\n\n  let mut state = EncodeTermState {\n    lets: Default::default(),\n    vars: Default::default(),\n    wires: Default::default(),\n    redexes: Default::default(),\n    name_idx: 0,\n    created_nodes: 0,\n    labels,\n  };\n\n  state.encode_term(term, Place::Hole(&mut net.root));\n  LoanedMut::from(std::mem::take(&mut state.redexes)).place(&mut net.rbag);\n\n  let EncodeTermState { created_nodes, .. } = { state };\n\n  let found_nodes = net_trees(&net).map(count_nodes).sum::<usize>();\n  if created_nodes != found_nodes {\n    return Err(\"Found term that compiles into an inet with a vicious cycle\".into());\n  }\n\n  Ok(net)\n}\n\n#[derive(Debug)]\nstruct EncodeTermState<'t, 'l> {\n  lets: Vec<(&'t Pattern, &'t Term)>,\n  vars: HashMap<(bool, Name), Place<'t>>,\n  wires: Vec<Option<Place<'t>>>,\n  redexes: Vec<LoanedMut<'t, (bool, Tree, Tree)>>,\n  name_idx: u64,\n  created_nodes: usize,\n  labels: &'l mut Labels,\n}\n\nfn count_nodes(tree: &Tree) -> usize {\n  maybe_grow(|| {\n    usize::from(tree_children(tree).next().is_some()) + tree_children(tree).map(count_nodes).sum::<usize>()\n  })\n}\n\n#[derive(Debug)]\nenum Place<'t> {\n  Tree(LoanedMut<'t, Tree>),\n  Hole(&'t mut Tree),\n  Wire(usize),\n}\n\nimpl<'t> EncodeTermState<'t, '_> {\n  /// Adds a subterm connected to `up` to the `inet`.\n  /// `scope` has the current variable scope.\n  /// `vars` has the information of which ports the variables are declared and used in.\n  /// `global_vars` has the same information for global lambdas. Must be linked outside this function.\n  /// Expects variables to be linear, refs to be stored as Refs and all names to be bound.\n  fn encode_term(&mut self, term: &'t Term, up: Place<'t>) {\n    maybe_grow(|| {\n      match term {\n        Term::Era => self.link(up, Place::Tree(LoanedMut::new(Tree::Era))),\n        Term::Var { nam } => self.link_var(false, nam, up),\n        Term::Link { nam } => self.link_var(true, nam, up),\n        Term::Ref { nam } => self.link(up, Place::Tree(LoanedMut::new(Tree::Ref { nam: nam.to_string() }))),\n        Term::Num { val } => {\n          let val = hvm::ast::Numb(val.to_bits());\n          self.link(up, Place::Tree(LoanedMut::new(Tree::Num { val })))\n        }\n        // A lambda becomes to a con node. Ports:\n        // - 0: points to where the lambda occurs.\n        // - 1: points to the lambda variable.\n        // - 2: points to the lambda body.\n        // core: (var_use bod)\n        Term::Lam { tag, pat, bod } => {\n          let kind = Con(self.labels.con.generate(tag));\n          let node = self.new_ctr(kind);\n          self.link(up, node.0);\n          self.encode_pat(pat, node.1);\n          self.encode_term(bod, node.2);\n        }\n        // An application becomes to a con node too. Ports:\n        // - 0: points to the function being applied.\n        // - 1: points to the function's argument.\n        // - 2: points to where the application occurs.\n        // core: & fun ~ (arg ret) (fun not necessarily main port)\n        Term::App { tag, fun, arg } => {\n          let kind = Con(self.labels.con.generate(tag));\n          let node = self.new_ctr(kind);\n          self.encode_term(fun, node.0);\n          self.encode_term(arg, node.1);\n          self.link(up, node.2);\n        }\n        // core: & arg ~ ?<(zero succ) ret>\n        Term::Swt { arg, bnd, with_bnd, with_arg, pred, arms,  } => {\n          // At this point should be only num matches of 0 and succ.\n          assert!(bnd.is_none());\n          assert!(with_bnd.is_empty());\n          assert!(with_arg.is_empty());\n          assert!(pred.is_none());\n          assert!(arms.len() == 2);\n\n          self.created_nodes += 2;\n          let loaned = Tree::Swi { fst: Box::new(Tree::Con{fst: Box::new(Tree::Era), snd: Box::new(Tree::Era)}), snd: Box::new(Tree::Era)};\n          let ((zero, succ, out), node) =\n            LoanedMut::loan_with(loaned, |t, l| {\n              let Tree::Swi { fst, snd: out } = t else { unreachable!() };\n              let Tree::Con { fst:zero, snd: succ } = fst.as_mut() else { unreachable!() };\n              (l.loan_mut(zero), l.loan_mut(succ), l.loan_mut(out))\n            });\n\n          self.encode_term(arg, Place::Tree(node));\n          self.encode_term(&arms[0], Place::Hole(zero));\n          self.encode_term(&arms[1], Place::Hole(succ));\n          self.link(up, Place::Hole(out));\n        }\n        Term::Let { pat, val, nxt } => {\n          // Dups/tup eliminators are not actually scoped like other terms.\n          // They are depended on\n          self.lets.push((pat, val));\n          self.encode_term(nxt, up);\n        }\n        Term::Fan { fan, tag, els } => {\n          let kind = self.fan_kind(fan, tag);\n          self.make_node_list(kind, up, els.iter().map(|el| |slf: &mut Self, up| slf.encode_term(el, up)));\n        }\n        // core: & [opr] ~ $(fst $(snd ret))\n        Term::Oper { opr, fst, snd } => {\n          match (fst.as_ref(), snd.as_ref()) {\n            // Partially apply with fst\n            (Term::Num { val }, snd) => {\n              let val = val.to_bits();\n              let val = hvm::ast::Numb((val & !0x1F) | opr.to_native_tag() as u32);\n              let fst = Place::Tree(LoanedMut::new(Tree::Num { val }));\n              let node = self.new_opr();\n              self.link(fst, node.0);\n              self.encode_term(snd, node.1);\n              self.encode_le_ge_opers(opr, up, node.2);\n            }\n            // Partially apply with snd, flip\n            (fst, Term::Num { val }) => {\n              if let Op::POW = opr {\n                // POW shares tags with AND, so don't flip or results will be wrong\n                let opr_val = hvm::ast::Numb(hvm::hvm::Numb::new_sym(opr.to_native_tag()).0);\n                let oper = Place::Tree(LoanedMut::new(Tree::Num { val: opr_val }));\n                let node1 = self.new_opr();\n                self.encode_term(fst, node1.0);\n                self.link(oper, node1.1);\n                let node2 = self.new_opr();\n                self.link(node1.2, node2.0);\n                self.encode_term(snd, node2.1);\n                self.encode_le_ge_opers(opr, up, node2.2);\n              } else {\n                // flip\n                let val = val.to_bits();\n                let val = hvm::ast::Numb((val & !0x1F) | flip_sym(opr.to_native_tag()) as u32);\n                let snd = Place::Tree(LoanedMut::new(Tree::Num { val }));\n                let node = self.new_opr();\n                self.encode_term(fst, node.0);\n                self.link(snd, node.1);\n                self.encode_le_ge_opers(opr, up, node.2);\n              }\n            }\n            // Don't partially apply\n            (fst, snd) => {\n              let opr_val = hvm::ast::Numb(hvm::hvm::Numb::new_sym(opr.to_native_tag()).0);\n              let oper = Place::Tree(LoanedMut::new(Tree::Num { val: opr_val }));\n              let node1 = self.new_opr();\n              self.encode_term(fst, node1.0);\n              self.link(oper, node1.1);\n              let node2 = self.new_opr();\n              self.link(node1.2, node2.0);\n              self.encode_term(snd, node2.1);\n              self.encode_le_ge_opers(opr, up, node2.2);\n            }\n          }\n        }\n        Term::Use { .. }  // Removed in earlier pass\n        | Term::With { .. } // Removed in earlier pass\n        | Term::Ask { .. } // Removed in earlier pass\n        | Term::Mat { .. } // Removed in earlier pass\n        | Term::Bend { .. } // Removed in desugar_bend\n        | Term::Fold { .. } // Removed in desugar_fold\n        | Term::Open { .. } // Removed in desugar_open\n        | Term::Nat { .. } // Removed in encode_nat\n        | Term::Str { .. } // Removed in encode_str\n        | Term::List { .. } // Removed in encode_list\n        | Term::Def { .. } // Removed in earlier pass\n        | Term::Err => unreachable!(),\n      }\n      while let Some((pat, val)) = self.lets.pop() {\n        let wire = self.new_wire();\n        self.encode_term(val, Place::Wire(wire));\n        self.encode_pat(pat, Place::Wire(wire));\n      }\n    })\n  }\n\n  fn encode_le_ge_opers(&mut self, opr: &Op, up: Place<'t>, node: Place<'t>) {\n    match opr {\n      Op::LE | Op::GE => {\n        let node_eq = self.new_opr();\n        let eq_val =\n          Place::Tree(LoanedMut::new(Tree::Num { val: hvm::ast::Numb(Op::EQ.to_native_tag() as u32) }));\n        self.link(eq_val, node_eq.0);\n        self.link(node_eq.1, node);\n        self.link(up, node_eq.2);\n      }\n      _ => self.link(up, node),\n    }\n  }\n\n  fn encode_pat(&mut self, pat: &Pattern, up: Place<'t>) {\n    maybe_grow(|| match pat {\n      Pattern::Var(None) => self.link(up, Place::Tree(LoanedMut::new(Tree::Era))),\n      Pattern::Var(Some(name)) => self.link_var(false, name, up),\n      Pattern::Chn(name) => self.link_var(true, name, up),\n      Pattern::Fan(fan, tag, els) => {\n        let kind = self.fan_kind(fan, tag);\n        self.make_node_list(kind, up, els.iter().map(|el| |slf: &mut Self, up| slf.encode_pat(el, up)));\n      }\n      Pattern::Ctr(_, _) | Pattern::Num(_) | Pattern::Lst(_) | Pattern::Str(_) => unreachable!(),\n    })\n  }\n\n  fn link(&mut self, a: Place<'t>, b: Place<'t>) {\n    match (a, b) {\n      (Place::Tree(a), Place::Tree(b)) => {\n        self.redexes.push(LoanedMut::merge((false, Tree::Era, Tree::Era), |r, m| {\n          m.place(b, &mut r.1);\n          m.place(a, &mut r.2);\n        }))\n      }\n      (Place::Tree(t), Place::Hole(h)) | (Place::Hole(h), Place::Tree(t)) => {\n        t.place(h);\n      }\n      (Place::Hole(a), Place::Hole(b)) => {\n        let var = Tree::Var { nam: num_to_name(self.name_idx) };\n        self.name_idx += 1;\n        *a = var.clone();\n        *b = var;\n      }\n      (Place::Wire(v), p) | (p, Place::Wire(v)) => {\n        let v = &mut self.wires[v];\n        match v.take() {\n          Some(q) => self.link(p, q),\n          None => *v = Some(p),\n        }\n      }\n    }\n  }\n\n  fn new_ctr(&mut self, kind: CtrKind) -> (Place<'t>, Place<'t>, Place<'t>) {\n    self.created_nodes += 1;\n    let node = match kind {\n      CtrKind::Con(None) => Tree::Con { fst: Box::new(Tree::Era), snd: Box::new(Tree::Era) },\n      CtrKind::Dup(0) => Tree::Dup { fst: Box::new(Tree::Era), snd: Box::new(Tree::Era) },\n      CtrKind::Tup(None) => Tree::Con { fst: Box::new(Tree::Era), snd: Box::new(Tree::Era) },\n      _ => unreachable!(),\n    };\n    let ((a, b), node) = LoanedMut::loan_with(node, |t, l| match t {\n      Tree::Con { fst, snd } => (l.loan_mut(fst), l.loan_mut(snd)),\n      Tree::Dup { fst, snd } => (l.loan_mut(fst), l.loan_mut(snd)),\n      _ => unreachable!(),\n    });\n    (Place::Tree(node), Place::Hole(a), Place::Hole(b))\n  }\n\n  fn new_opr(&mut self) -> (Place<'t>, Place<'t>, Place<'t>) {\n    self.created_nodes += 1;\n    let ((fst, snd), node) =\n      LoanedMut::loan_with(Tree::Opr { fst: Box::new(Tree::Era), snd: Box::new(Tree::Era) }, |t, l| {\n        let Tree::Opr { fst, snd } = t else { unreachable!() };\n        (l.loan_mut(fst), l.loan_mut(snd))\n      });\n    (Place::Tree(node), Place::Hole(fst), Place::Hole(snd))\n  }\n\n  /// Adds a list-like tree of nodes of the same kind to the inet.\n  fn make_node_list(\n    &mut self,\n    kind: CtrKind,\n    mut up: Place<'t>,\n    mut els: impl DoubleEndedIterator<Item = impl FnOnce(&mut Self, Place<'t>)>,\n  ) {\n    let last = els.next_back().unwrap();\n    for item in els {\n      let node = self.new_ctr(kind);\n      self.link(up, node.0);\n      item(self, node.1);\n      up = node.2;\n    }\n    last(self, up);\n  }\n\n  fn new_wire(&mut self) -> usize {\n    let i = self.wires.len();\n    self.wires.push(None);\n    i\n  }\n\n  fn fan_kind(&mut self, fan: &FanKind, tag: &crate::fun::Tag) -> CtrKind {\n    let lab = self.labels[*fan].generate(tag);\n    if *fan == FanKind::Tup {\n      Tup(lab)\n    } else {\n      Dup(lab.unwrap())\n    }\n  }\n\n  fn link_var(&mut self, global: bool, name: &Name, place: Place<'t>) {\n    match self.vars.entry((global, name.clone())) {\n      Entry::Occupied(e) => {\n        let other = e.remove();\n        self.link(place, other);\n      }\n      Entry::Vacant(e) => {\n        e.insert(place);\n      }\n    }\n  }\n}\n\n#[derive(Debug, Default, Clone)]\npub struct Labels {\n  pub con: LabelGenerator,\n  pub dup: LabelGenerator,\n  pub tup: LabelGenerator,\n}\n\n#[derive(Debug, Default, Clone)]\npub struct LabelGenerator {\n  pub next: u16,\n  pub name_to_label: HashMap<Name, u16>,\n  pub label_to_name: HashMap<u16, Name>,\n}\n\nimpl Index<FanKind> for Labels {\n  type Output = LabelGenerator;\n\n  fn index(&self, fan: FanKind) -> &Self::Output {\n    match fan {\n      FanKind::Tup => &self.tup,\n      FanKind::Dup => &self.dup,\n    }\n  }\n}\n\nimpl IndexMut<FanKind> for Labels {\n  fn index_mut(&mut self, fan: FanKind) -> &mut Self::Output {\n    match fan {\n      FanKind::Tup => &mut self.tup,\n      FanKind::Dup => &mut self.dup,\n    }\n  }\n}\n\nimpl LabelGenerator {\n  // If some tag and new generate a new label, otherwise return the generated label.\n  // If none use the implicit label counter.\n  fn generate(&mut self, tag: &crate::fun::Tag) -> Option<u16> {\n    use crate::fun::Tag;\n    match tag {\n      Tag::Named(_name) => {\n        todo!(\"Named tags not implemented for hvm32\");\n        /* match self.name_to_label.entry(name.clone()) {\n          Entry::Occupied(e) => Some(*e.get()),\n          Entry::Vacant(e) => {\n            let lab = unique();\n            self.label_to_name.insert(lab, name.clone());\n            Some(*e.insert(lab))\n          }\n        } */\n      }\n      Tag::Numeric(lab) => Some(*lab),\n      Tag::Auto => Some(0),\n      Tag::Static => None,\n    }\n  }\n\n  pub fn to_tag(&self, label: Option<u16>) -> crate::fun::Tag {\n    use crate::fun::Tag;\n    match label {\n      Some(label) => match self.label_to_name.get(&label) {\n        Some(name) => Tag::Named(name.clone()),\n        None => {\n          if label == 0 {\n            Tag::Auto\n          } else {\n            Tag::Numeric(label)\n          }\n        }\n      },\n      None => Tag::Static,\n    }\n  }\n\n  fn finish(&mut self) {\n    self.next = u16::MAX;\n    self.name_to_label.clear();\n  }\n}\n\nimpl Op {\n  fn to_native_tag(self) -> hvm::hvm::Tag {\n    match self {\n      Op::ADD => hvm::hvm::OP_ADD,\n      Op::SUB => hvm::hvm::OP_SUB,\n      Op::MUL => hvm::hvm::OP_MUL,\n      Op::DIV => hvm::hvm::OP_DIV,\n      Op::REM => hvm::hvm::OP_REM,\n      Op::EQ => hvm::hvm::OP_EQ,\n      Op::NEQ => hvm::hvm::OP_NEQ,\n      Op::LT => hvm::hvm::OP_LT,\n      Op::GT => hvm::hvm::OP_GT,\n      Op::AND => hvm::hvm::OP_AND,\n      Op::OR => hvm::hvm::OP_OR,\n      Op::XOR => hvm::hvm::OP_XOR,\n      Op::SHL => hvm::hvm::OP_SHL,\n      Op::SHR => hvm::hvm::OP_SHR,\n\n      Op::POW => hvm::hvm::OP_XOR,\n\n      Op::LE => hvm::hvm::OP_GT,\n      Op::GE => hvm::hvm::OP_LT,\n    }\n  }\n}\n\nfn flip_sym(tag: hvm::hvm::Tag) -> hvm::hvm::Tag {\n  match tag {\n    hvm::hvm::OP_SUB => hvm::hvm::FP_SUB,\n    hvm::hvm::FP_SUB => hvm::hvm::OP_SUB,\n    hvm::hvm::OP_DIV => hvm::hvm::FP_DIV,\n    hvm::hvm::FP_DIV => hvm::hvm::OP_DIV,\n    hvm::hvm::OP_REM => hvm::hvm::FP_REM,\n    hvm::hvm::FP_REM => hvm::hvm::OP_REM,\n    hvm::hvm::OP_LT => hvm::hvm::OP_GT,\n    hvm::hvm::OP_GT => hvm::hvm::OP_LT,\n    hvm::hvm::OP_SHL => hvm::hvm::FP_SHL,\n    hvm::hvm::FP_SHL => hvm::hvm::OP_SHL,\n    hvm::hvm::OP_SHR => hvm::hvm::FP_SHR,\n    hvm::hvm::FP_SHR => hvm::hvm::OP_SHR,\n    _ => tag,\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/apply_args.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Ctx, Pattern, Rule, Term},\n};\n\nimpl Ctx<'_> {\n  /// Applies the arguments to the program being run by applying them to the main function.\n  ///\n  /// Example:\n  /// ```hvm\n  /// main x1 x2 x3 = (MainBody x1 x2 x3)\n  /// ```\n  /// Calling with `bend run <file> arg1 arg2 arg3`, it becomes:\n  /// ```hvm\n  /// main = (λx1 λx2 λx3 (MainBody x1 x2 x3) arg1 arg2 arg3)\n  /// ```\n  pub fn apply_args(&mut self, args: Option<Vec<Term>>) -> Result<(), Diagnostics> {\n    if let Some(entrypoint) = &self.book.entrypoint {\n      let main_def = &mut self.book.defs[entrypoint];\n\n      // Since we fatal error, no need to exit early\n      let n_rules = main_def.rules.len();\n      if n_rules != 1 {\n        self.info.add_function_error(\n          format!(\"Expected the entrypoint function to have only one rule, found {n_rules}.\"),\n          entrypoint.clone(),\n          main_def.source.clone(),\n        );\n      }\n\n      let mut main_body = std::mem::take(&mut main_def.rules[0].body);\n\n      for pat in main_def.rules[0].pats.iter().rev() {\n        if let Pattern::Var(var) = pat {\n          main_body = Term::lam(Pattern::Var(var.clone()), main_body);\n        } else {\n          self.info.add_function_error(\n            format!(\"Expected the entrypoint function to only have variable patterns, found '{pat}'.\"),\n            entrypoint.clone(),\n            main_def.source.clone(),\n          );\n        }\n      }\n\n      if let Some(args) = args {\n        main_body = Term::call(main_body, args);\n      }\n\n      main_def.rules = vec![Rule { pats: vec![], body: main_body }];\n    }\n\n    self.info.fatal(())\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/definition_merge.rs",
    "content": "use crate::{\n  fun::{Book, Definition, Name, Rule, Term},\n  maybe_grow,\n};\nuse indexmap::{IndexMap, IndexSet};\nuse itertools::Itertools;\nuse std::collections::BTreeMap;\n\npub const MERGE_SEPARATOR: &str = \"__M_\";\n\nimpl Book {\n  /// Merges definitions that have the same structure into one definition.\n  /// Expects variables to be linear.\n  ///\n  /// Some of the origins of the rules will be lost in this stage,\n  /// Should not be preceded by passes that cares about the origins.\n  pub fn merge_definitions(&mut self) {\n    let defs: Vec<_> = self.defs.keys().cloned().collect();\n    self.merge(defs.into_iter());\n  }\n\n  /// Checks and merges identical definitions given by `defs`.\n  /// We never merge the entrypoint function with something else.\n  fn merge(&mut self, defs: impl Iterator<Item = Name>) {\n    let name = self.entrypoint.clone();\n    // Sets of definitions that are identical, indexed by the body term.\n    let equal_terms =\n      self.collect_terms(defs.filter(|def_name| !name.as_ref().is_some_and(|m| m == def_name)));\n\n    // Map of old name to new merged name\n    let mut name_map = BTreeMap::new();\n\n    for (term, equal_defs) in equal_terms {\n      // def1_$_def2_$_def3\n      let new_name = Name::new(equal_defs.iter().join(MERGE_SEPARATOR));\n\n      if equal_defs.len() > 1 {\n        // Merging some defs\n\n        // The source of the generated definition will be based on the first one we get from `equal_defs`.\n        // In the future, we might want to change this to point to every source of every definition\n        // it's based on.\n        // This could be done by having SourceKind::Generated contain a Vec<Source> or Vec<Definition>.\n        let any_def_name = equal_defs.iter().next().unwrap(); // we know we can unwrap since equal_defs.len() > 1\n\n        // Add the merged def\n        let source = self.defs[any_def_name].source.clone();\n        let rules = vec![Rule { pats: vec![], body: term }];\n        // Note: This will erase types, so type checking needs to come before this.\n        let new_def = Definition::new_gen(new_name.clone(), rules, source, false);\n        self.defs.insert(new_name.clone(), new_def);\n        // Remove the old ones and write the map of old names to new ones.\n        for name in equal_defs {\n          self.defs.swap_remove(&name);\n          name_map.insert(name, new_name.clone());\n        }\n      } else {\n        // Not merging, just put the body back\n        let def_name = equal_defs.into_iter().next().unwrap();\n        let def = self.defs.get_mut(&def_name).unwrap();\n        def.rule_mut().body = term;\n      }\n    }\n    self.update_refs(&name_map);\n  }\n\n  fn collect_terms(&mut self, def_entries: impl Iterator<Item = Name>) -> IndexMap<Term, IndexSet<Name>> {\n    let mut equal_terms: IndexMap<Term, IndexSet<Name>> = IndexMap::new();\n\n    for def_name in def_entries {\n      let def = self.defs.get_mut(&def_name).unwrap();\n      let term = std::mem::take(&mut def.rule_mut().body);\n      equal_terms.entry(term).or_default().insert(def_name);\n    }\n\n    equal_terms\n  }\n\n  fn update_refs(&mut self, name_map: &BTreeMap<Name, Name>) {\n    let mut updated_defs = Vec::new();\n\n    for def in self.defs.values_mut() {\n      if Term::subst_ref_to_ref(&mut def.rule_mut().body, name_map) {\n        updated_defs.push(def.name.clone());\n      }\n    }\n\n    if !updated_defs.is_empty() {\n      self.merge(updated_defs.into_iter());\n    }\n  }\n}\n\nimpl Term {\n  /// Performs reference substitution within a term replacing any references found in\n  /// `ref_map` with their corresponding targets.\n  pub fn subst_ref_to_ref(term: &mut Term, ref_map: &BTreeMap<Name, Name>) -> bool {\n    maybe_grow(|| match term {\n      Term::Ref { nam: def_name } => {\n        if let Some(target_name) = ref_map.get(def_name) {\n          *def_name = target_name.clone();\n          true\n        } else {\n          false\n        }\n      }\n\n      _ => {\n        let mut subst = false;\n        for child in term.children_mut() {\n          subst |= Term::subst_ref_to_ref(child, ref_map);\n        }\n        subst\n      }\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/definition_pruning.rs",
    "content": "use crate::{\n  diagnostics::WarningType,\n  fun::{Book, Ctx, Name, SourceKind, Term},\n  maybe_grow,\n};\nuse hvm::ast::{Net, Tree};\nuse std::collections::{hash_map::Entry, HashMap};\n\n#[derive(Clone, Copy, Debug, PartialEq)]\nenum Used {\n  /// Definition is accessible from the main entry point, should never be pruned.\n  Main,\n  /// Definition is not accessible from main, but is accessible from non-builtin definitions.\n  NonBuiltin,\n  /// Definition is not accessible from main, but is a user-defined constructor.\n  Ctr,\n}\n\ntype Definitions = HashMap<Name, Used>;\n\nimpl Ctx<'_> {\n  /// If `prune_all`, removes all unused definitions and adts starting from Main.\n  /// Otherwise, prunes only the builtins not accessible from any non-built-in definition.\n  ///\n  /// Emits unused definition warnings.\n  pub fn prune(&mut self, prune_all: bool) {\n    let mut used = Definitions::new();\n\n    // Get the functions that are accessible from the main entry point.\n    if let Some(main) = &self.book.entrypoint {\n      let def = self.book.defs.get(main).unwrap();\n      used.insert(main.clone(), Used::Main);\n      for rule in def.rules.iter() {\n        self.book.find_used_definitions_from_term(&rule.body, Used::Main, &mut used);\n      }\n    }\n\n    // Get the functions that are accessible from non-builtins.\n    for def in self.book.defs.values() {\n      if !def.is_builtin() && !(used.get(&def.name) == Some(&Used::Main)) {\n        if self.book.ctrs.contains_key(&def.name) {\n          used.insert(def.name.clone(), Used::Ctr);\n        } else {\n          used.insert(def.name.clone(), Used::NonBuiltin);\n        }\n        for rule in def.rules.iter() {\n          self.book.find_used_definitions_from_term(&rule.body, Used::NonBuiltin, &mut used);\n        }\n      }\n    }\n    for def in self.book.hvm_defs.values() {\n      if !def.source.is_builtin() && !(used.get(&def.name) == Some(&Used::Main)) {\n        used.insert(def.name.clone(), Used::NonBuiltin);\n        self.book.find_used_definitions_from_hvm_net(&def.body, Used::NonBuiltin, &mut used);\n      }\n    }\n\n    fn rm_def(book: &mut Book, def_name: &Name) {\n      if book.defs.contains_key(def_name) {\n        book.defs.shift_remove(def_name);\n      } else if book.hvm_defs.contains_key(def_name) {\n        book.hvm_defs.shift_remove(def_name);\n      } else {\n        unreachable!()\n      }\n    }\n\n    // Remove unused definitions.\n    let defs = self.book.defs.iter().map(|(nam, def)| (nam.clone(), def.source.clone()));\n    let hvm_defs = self.book.hvm_defs.iter().map(|(nam, def)| (nam.clone(), def.source.clone()));\n    let names = defs.chain(hvm_defs).collect::<Vec<_>>();\n\n    for (def, src) in names {\n      if let Some(use_) = used.get(&def) {\n        match use_ {\n          Used::Main => {\n            // Used by the main entry point, never pruned;\n          }\n          Used::NonBuiltin => {\n            // Used by a non-builtin definition.\n            // Prune if `prune_all`, otherwise show a warning.\n            if prune_all {\n              rm_def(self.book, &def);\n            } else if !def.is_generated() && !matches!(src.kind, SourceKind::Generated) {\n              self.info.add_function_warning(\n                \"Definition is unused.\",\n                WarningType::UnusedDefinition,\n                def,\n                src,\n              );\n            }\n          }\n          Used::Ctr => {\n            // Unused, but a user-defined constructor.\n            // Prune if `prune_all`, otherwise nothing.\n            if prune_all {\n              rm_def(self.book, &def);\n            } else {\n              // Don't show warning if it's a user-defined constructor.\n            }\n          }\n        }\n      } else {\n        // Unused builtin, can always be pruned.\n        rm_def(self.book, &def);\n      }\n    }\n  }\n}\n\nimpl Book {\n  /// Finds all used definitions on the book, starting from the given term.\n  fn find_used_definitions_from_term(&self, term: &Term, used: Used, uses: &mut Definitions) {\n    maybe_grow(|| {\n      let mut to_find = vec![term];\n\n      while let Some(term) = to_find.pop() {\n        match term {\n          Term::Ref { nam: def_name } => self.insert_used(def_name, used, uses),\n          Term::List { .. } => {\n            self.insert_used(&Name::new(crate::fun::builtins::LCONS), used, uses);\n            self.insert_used(&Name::new(crate::fun::builtins::LNIL), used, uses);\n          }\n          Term::Str { .. } => {\n            self.insert_used(&Name::new(crate::fun::builtins::SCONS), used, uses);\n            self.insert_used(&Name::new(crate::fun::builtins::SNIL), used, uses);\n          }\n          _ => {}\n        }\n\n        for child in term.children() {\n          to_find.push(child);\n        }\n      }\n    })\n  }\n\n  fn find_used_definitions_from_hvm_net(&self, net: &Net, used: Used, uses: &mut Definitions) {\n    maybe_grow(|| {\n      let mut to_find = [&net.root]\n        .into_iter()\n        .chain(net.rbag.iter().flat_map(|(_, lft, rgt)| [lft, rgt]))\n        .collect::<Vec<_>>();\n\n      while let Some(term) = to_find.pop() {\n        match term {\n          Tree::Ref { nam } => self.insert_used(&Name::new(nam), used, uses),\n          Tree::Con { fst, snd }\n          | Tree::Dup { fst, snd }\n          | Tree::Opr { fst, snd }\n          | Tree::Swi { fst, snd } => {\n            to_find.push(fst);\n            to_find.push(snd);\n          }\n          Tree::Era | Tree::Var { .. } | Tree::Num { .. } => {}\n        }\n      }\n    })\n  }\n\n  fn insert_used(&self, def_name: &Name, used: Used, uses: &mut Definitions) {\n    if let Entry::Vacant(e) = uses.entry(def_name.clone()) {\n      e.insert(used);\n\n      // This needs to be done for each rule in case the pass it's\n      // ran from has not encoded the pattern match.\n      // E.g.: the `flatten_rules` golden test\n      if let Some(def) = self.defs.get(def_name) {\n        for rule in &def.rules {\n          self.find_used_definitions_from_term(&rule.body, used, uses);\n        }\n      } else if let Some(def) = self.hvm_defs.get(def_name) {\n        self.find_used_definitions_from_hvm_net(&def.body, used, uses);\n      } else {\n        unreachable!()\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/desugar_bend.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Ctx, Definition, Name, Rule, Source, Term},\n  maybe_grow,\n};\nuse indexmap::IndexMap;\n\npub const RECURSIVE_KW: &str = \"fork\";\nconst NEW_FN_SEP: &str = \"__bend\";\n\nimpl Ctx<'_> {\n  pub fn desugar_bend(&mut self) -> Result<(), Diagnostics> {\n    let mut new_defs = IndexMap::new();\n    for def in self.book.defs.values_mut() {\n      let mut fresh = 0;\n      for rule in def.rules.iter_mut() {\n        if let Err(err) =\n          rule.body.desugar_bend(&def.name, &mut fresh, &mut new_defs, def.source.clone(), def.check)\n        {\n          self.info.add_function_error(err, def.name.clone(), def.source.clone());\n          break;\n        }\n      }\n    }\n\n    self.book.defs.extend(new_defs);\n\n    self.info.fatal(())\n  }\n}\n\nimpl Term {\n  fn desugar_bend(\n    &mut self,\n    def_name: &Name,\n    fresh: &mut usize,\n    new_defs: &mut IndexMap<Name, Definition>,\n    source: Source,\n    check: bool,\n  ) -> Result<(), String> {\n    maybe_grow(|| {\n      // Recursively encode bends in the children\n      for child in self.children_mut() {\n        child.desugar_bend(def_name, fresh, new_defs, source.clone(), check)?;\n      }\n\n      // Convert a bend into a new recursive function and call it.\n      if let Term::Bend { .. } = self {\n        // Can't have unmatched unscoped because this'll be extracted\n        if self.has_unscoped_diff() {\n          return Err(\"Can't have non self-contained unscoped variables in a 'bend'\".into());\n        }\n        let Term::Bend { bnd, arg, cond, step, base } = self else { unreachable!() };\n\n        let new_nam = Name::new(format!(\"{}{}{}\", def_name, NEW_FN_SEP, fresh));\n        *fresh += 1;\n\n        // Gather the free variables\n        // They will be implicitly captured by the new function\n        let mut free_vars = step.free_vars();\n        free_vars.shift_remove(&Name::new(RECURSIVE_KW));\n        free_vars.extend(base.free_vars());\n        free_vars.extend(cond.free_vars());\n        for bnd in bnd.iter().flatten() {\n          free_vars.shift_remove(bnd);\n        }\n        let free_vars = free_vars.into_keys().collect::<Vec<_>>();\n\n        // Add a substitution of `fork`, a use term with a partially applied recursive call\n        let step = Term::Use {\n          nam: Some(Name::new(RECURSIVE_KW)),\n          val: Box::new(Term::call(\n            Term::Ref { nam: new_nam.clone() },\n            free_vars.iter().cloned().map(|nam| Term::Var { nam }),\n          )),\n          nxt: Box::new(std::mem::take(step.as_mut())),\n        };\n\n        // Create the function body for the bend.\n        let body = Term::Swt {\n          arg: Box::new(std::mem::take(cond)),\n          bnd: Some(Name::new(\"_\")),\n          with_bnd: vec![],\n          with_arg: vec![],\n          pred: Some(Name::new(\"_-1\")),\n          arms: vec![std::mem::take(base.as_mut()), step],\n        };\n        let body = Term::rfold_lams(body, std::mem::take(bnd).into_iter());\n        let body = Term::rfold_lams(body, free_vars.iter().cloned().map(Some));\n\n        // Make a definition from the new function\n        let def = Definition::new_gen(new_nam.clone(), vec![Rule { pats: vec![], body }], source, check);\n        new_defs.insert(new_nam.clone(), def);\n\n        // Call the new function in the original term.\n        let call =\n          Term::call(Term::Ref { nam: new_nam }, free_vars.iter().map(|v| Term::Var { nam: v.clone() }));\n        *self = Term::call(call, arg.drain(..));\n      }\n\n      Ok(())\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/desugar_fold.rs",
    "content": "use std::collections::HashSet;\n\nuse crate::{\n  diagnostics::Diagnostics,\n  fun::{Adts, Constructors, Ctx, Definition, Name, Pattern, Rule, Source, Term},\n  maybe_grow,\n};\n\nimpl Ctx<'_> {\n  /// Desugars `fold` expressions into recursive `match`es.\n  /// ```bend\n  /// foo xs =\n  ///   ...\n  ///   fold bind = init with x1 x2 {\n  ///     Type/Ctr1: (Foo bind.rec_fld bind.fld x1 x2 free_var)\n  ///     Type/Ctr2: (Bar bind.fld x1 x2)\n  ///   }\n  /// ```\n  /// Desugars to:\n  /// ```bend\n  /// foo xs =\n  ///   ...\n  ///   (foo__fold0 init x1 x2 free_var)\n  ///\n  /// foo__fold0 = @bind match bind {\n  ///   Type/Ctr1: (Foo (foo_fold0 bind.rec_fld x1 x2 free_var) bind.fld x1 x2 free_var)\n  ///   Type/Ctr2: (Bar bind.fld x1 x2)\n  /// }\n  /// ```\n  pub fn desugar_fold(&mut self) -> Result<(), Diagnostics> {\n    let mut new_defs = vec![];\n    for def in self.book.defs.values_mut() {\n      let mut fresh = 0;\n      for rule in def.rules.iter_mut() {\n        let mut ctx = DesugarFoldCtx {\n          def_name: &def.name,\n          fresh: &mut fresh,\n          new_defs: &mut new_defs,\n          ctrs: &self.book.ctrs,\n          adts: &self.book.adts,\n          source: def.source.clone(),\n          check: def.check,\n        };\n\n        let res = rule.body.desugar_fold(&mut ctx);\n        if let Err(e) = res {\n          self.info.add_function_error(e, def.name.clone(), def.source.clone());\n        }\n      }\n    }\n\n    self.book.defs.extend(new_defs.into_iter().map(|def| (def.name.clone(), def)));\n\n    self.info.fatal(())\n  }\n}\n\nstruct DesugarFoldCtx<'a> {\n  pub def_name: &'a Name,\n  pub fresh: &'a mut usize,\n  pub new_defs: &'a mut Vec<Definition>,\n  pub ctrs: &'a Constructors,\n  pub adts: &'a Adts,\n  pub source: Source,\n  pub check: bool,\n}\n\nimpl Term {\n  fn desugar_fold(&mut self, ctx: &mut DesugarFoldCtx<'_>) -> Result<(), String> {\n    maybe_grow(|| {\n      for child in self.children_mut() {\n        child.desugar_fold(ctx)?;\n      }\n\n      if let Term::Fold { .. } = self {\n        // Can't have unmatched unscoped because this'll be extracted\n        if self.has_unscoped_diff() {\n          return Err(\"Can't have non self-contained unscoped variables in a 'fold'\".into());\n        }\n        let Term::Fold { bnd: _, arg, with_bnd, with_arg, arms } = self else { unreachable!() };\n\n        // Gather the free variables\n        let mut free_vars = HashSet::new();\n        for arm in arms.iter() {\n          let mut arm_free_vars = arm.2.free_vars().into_keys().collect::<HashSet<_>>();\n          for field in arm.1.iter().flatten() {\n            arm_free_vars.remove(field);\n          }\n          free_vars.extend(arm_free_vars);\n        }\n        for var in with_bnd.iter().flatten() {\n          free_vars.remove(var);\n        }\n        let free_vars = free_vars.into_iter().collect::<Vec<_>>();\n\n        let new_nam = Name::new(format!(\"{}__fold{}\", ctx.def_name, ctx.fresh));\n        *ctx.fresh += 1;\n\n        // Substitute the implicit recursive calls to call the new function\n        let ctr = arms[0].0.as_ref().unwrap();\n        let adt_nam = ctx.ctrs.get(ctr).unwrap();\n        let ctrs = &ctx.adts.get(adt_nam).unwrap().ctrs;\n        for arm in arms.iter_mut() {\n          let ctr = arm.0.as_ref().unwrap();\n          let recursive = arm\n            .1\n            .iter()\n            .zip(&ctrs.get(ctr).unwrap().fields)\n            .filter_map(|(var, field)| if field.rec { Some(var.as_ref().unwrap().clone()) } else { None })\n            .collect::<HashSet<_>>();\n          arm.2.call_recursive(&new_nam, &recursive, &free_vars);\n        }\n\n        // Create the new function\n        let x_nam = Name::new(\"%x\");\n        let body = Term::Mat {\n          arg: Box::new(Term::Var { nam: x_nam.clone() }),\n          bnd: None,\n          with_bnd: with_bnd.clone(),\n          with_arg: with_bnd.iter().map(|nam| Term::var_or_era(nam.clone())).collect(),\n          arms: std::mem::take(arms),\n        };\n        let body = Term::rfold_lams(body, with_bnd.iter().cloned());\n        let body = Term::rfold_lams(body, free_vars.iter().map(|nam| Some(nam.clone())));\n        let body = Term::lam(Pattern::Var(Some(x_nam)), body);\n\n        let def = Definition::new_gen(\n          new_nam.clone(),\n          vec![Rule { pats: vec![], body }],\n          ctx.source.clone(),\n          ctx.check,\n        );\n        ctx.new_defs.push(def);\n\n        // Call the new function\n        let call = Term::call(Term::Ref { nam: new_nam.clone() }, [std::mem::take(arg.as_mut())]);\n        let call = Term::call(call, free_vars.iter().cloned().map(|nam| Term::Var { nam }));\n        let call = Term::call(call, with_arg.iter().cloned());\n        *self = call;\n      }\n      Ok(())\n    })\n  }\n\n  fn call_recursive(&mut self, def_name: &Name, recursive: &HashSet<Name>, free_vars: &[Name]) {\n    maybe_grow(|| {\n      for child in self.children_mut() {\n        child.call_recursive(def_name, recursive, free_vars);\n      }\n\n      // If we found a recursive field, replace with a call to the new function.\n      if let Term::Var { nam } = self {\n        if recursive.contains(nam) {\n          let call = Term::call(Term::Ref { nam: def_name.clone() }, [std::mem::take(self)]);\n          let call = Term::call(call, free_vars.iter().cloned().map(|nam| Term::Var { nam }));\n          *self = call;\n        }\n      }\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/desugar_match_defs.rs",
    "content": "use crate::{\n  diagnostics::{Diagnostics, WarningType},\n  fun::{builtins, Adts, Constructors, Ctx, Definition, FanKind, Name, Num, Pattern, Rule, Tag, Term},\n  maybe_grow,\n};\nuse itertools::Itertools;\nuse std::collections::{BTreeSet, HashSet};\n\npub enum DesugarMatchDefErr {\n  AdtNotExhaustive { adt: Name, ctr: Name },\n  NumMissingDefault,\n  TypeMismatch { expected: Type, found: Type, pat: Pattern },\n  RepeatedBind { bind: Name },\n  UnreachableRule { idx: usize, nam: Name, pats: Vec<Pattern> },\n}\n\nimpl Ctx<'_> {\n  /// Converts equational-style pattern matching function definitions into trees of match terms.\n  pub fn desugar_match_defs(&mut self) -> Result<(), Diagnostics> {\n    for (def_name, def) in self.book.defs.iter_mut() {\n      let errs = def.desugar_match_def(&self.book.ctrs, &self.book.adts);\n      for err in errs {\n        match err {\n          DesugarMatchDefErr::AdtNotExhaustive { .. }\n          | DesugarMatchDefErr::NumMissingDefault\n          | DesugarMatchDefErr::TypeMismatch { .. } => {\n            self.info.add_function_error(err, def_name.clone(), def.source.clone())\n          }\n          DesugarMatchDefErr::RepeatedBind { .. } => self.info.add_function_warning(\n            err,\n            WarningType::RepeatedBind,\n            def_name.clone(),\n            def.source.clone(),\n          ),\n          DesugarMatchDefErr::UnreachableRule { .. } => self.info.add_function_warning(\n            err,\n            WarningType::UnreachableMatch,\n            def_name.clone(),\n            def.source.clone(),\n          ),\n        }\n      }\n    }\n\n    self.info.fatal(())\n  }\n}\n\nimpl Definition {\n  pub fn desugar_match_def(&mut self, ctrs: &Constructors, adts: &Adts) -> Vec<DesugarMatchDefErr> {\n    let mut errs = vec![];\n    for rule in self.rules.iter_mut() {\n      desugar_inner_match_defs(&mut rule.body, ctrs, adts, &mut errs);\n    }\n    let repeated_bind_errs = fix_repeated_binds(&mut self.rules);\n    errs.extend(repeated_bind_errs);\n\n    let args = (0..self.arity()).map(|i| Name::new(format!(\"%arg{i}\"))).collect::<Vec<_>>();\n    let rules = std::mem::take(&mut self.rules);\n    let idx = (0..rules.len()).collect::<Vec<_>>();\n    let mut used = BTreeSet::new();\n    match simplify_rule_match(args.clone(), rules.clone(), idx.clone(), vec![], &mut used, ctrs, adts) {\n      Ok(body) => {\n        let body = Term::rfold_lams(body, args.into_iter().map(Some));\n        self.rules = vec![Rule { pats: vec![], body }];\n        for i in idx {\n          if !used.contains(&i) {\n            let e = DesugarMatchDefErr::UnreachableRule {\n              idx: i,\n              nam: self.name.clone(),\n              pats: rules[i].pats.clone(),\n            };\n            errs.push(e);\n          }\n        }\n      }\n      Err(e) => errs.push(e),\n    }\n    errs\n  }\n}\n\nfn desugar_inner_match_defs(\n  term: &mut Term,\n  ctrs: &Constructors,\n  adts: &Adts,\n  errs: &mut Vec<DesugarMatchDefErr>,\n) {\n  maybe_grow(|| match term {\n    Term::Def { def, nxt } => {\n      errs.extend(def.desugar_match_def(ctrs, adts));\n      desugar_inner_match_defs(nxt, ctrs, adts, errs);\n    }\n    _ => {\n      for child in term.children_mut() {\n        desugar_inner_match_defs(child, ctrs, adts, errs);\n      }\n    }\n  })\n}\n\n/// When a rule has repeated bind, the only one that is actually useful is the last one.\n///\n/// Example: In `(Foo x x x x) = x`, the function should return the fourth argument.\n///\n/// To avoid having to deal with this, we can just erase any repeated binds.\n/// ```hvm\n/// (Foo a (Succ a) (Cons a)) = (a a)\n/// // After this transformation, becomes:\n/// (Foo * (Succ *) (Cons a)) = (a a)\n/// ```\nfn fix_repeated_binds(rules: &mut [Rule]) -> Vec<DesugarMatchDefErr> {\n  let mut errs = vec![];\n  for rule in rules {\n    let mut binds = HashSet::new();\n    rule.pats.iter_mut().flat_map(|p| p.binds_mut()).rev().for_each(|nam| {\n      if binds.contains(nam) {\n        // Repeated bind, not reachable and can be erased.\n        if let Some(nam) = nam {\n          errs.push(DesugarMatchDefErr::RepeatedBind { bind: nam.clone() });\n        }\n        *nam = None;\n        // TODO: Send a repeated bind warning\n      } else {\n        binds.insert(&*nam);\n      }\n    });\n  }\n  errs\n}\n\n/// Creates the match tree for a given pattern matching function definition.\n/// For each constructor, a match case is created.\n///\n/// The match cases follow the same order as the order the constructors are in\n/// the ADT declaration.\n///\n/// If there are constructors of different types for the same arg, returns a type error.\n///\n/// If no patterns match one of the constructors, returns a non-exhaustive match error.\n///\n/// Any nested subpatterns are extracted and moved into a nested match\n/// expression, together with the remaining match arguments.\n///\n/// Linearizes all the arguments that are used in at least one of the bodies.\n///\n/// `args`: Name of the generated argument variables that sill have to be processed.\n/// `rules`: The rules to simplify.\n/// `idx`: The original index of the rules, to check for unreachable rules.\n/// `with`: Name of the variables to be inserted in the `with` clauses.\nfn simplify_rule_match(\n  args: Vec<Name>,\n  rules: Vec<Rule>,\n  idx: Vec<usize>,\n  with: Vec<Name>,\n  used: &mut BTreeSet<usize>,\n  ctrs: &Constructors,\n  adts: &Adts,\n) -> Result<Term, DesugarMatchDefErr> {\n  if args.is_empty() {\n    used.insert(idx[0]);\n    Ok(rules.into_iter().next().unwrap().body)\n  } else if rules[0].pats.iter().all(|p| p.is_wildcard()) {\n    Ok(irrefutable_fst_row_rule(args, rules.into_iter().next().unwrap(), idx[0], used))\n  } else {\n    let typ = Type::infer_from_def_arg(&rules, 0, ctrs)?;\n    match typ {\n      Type::Any => var_rule(args, rules, idx, with, used, ctrs, adts),\n      Type::Fan(fan, tag, tup_len) => fan_rule(args, rules, idx, with, used, fan, tag, tup_len, ctrs, adts),\n      Type::Num => num_rule(args, rules, idx, with, used, ctrs, adts),\n      Type::Adt(adt_name) => switch_rule(args, rules, idx, with, adt_name, used, ctrs, adts),\n    }\n  }\n}\n\n/// Irrefutable first row rule.\n/// Short-circuits the encoding in case the first rule always matches.\n/// This is useful to avoid unnecessary pattern matching.\nfn irrefutable_fst_row_rule(args: Vec<Name>, rule: Rule, idx: usize, used: &mut BTreeSet<usize>) -> Term {\n  let mut term = rule.body;\n  for (arg, pat) in args.into_iter().zip(rule.pats.into_iter()) {\n    match pat {\n      Pattern::Var(None) => {}\n      Pattern::Var(Some(var)) => {\n        term = Term::Use { nam: Some(var), val: Box::new(Term::Var { nam: arg }), nxt: Box::new(term) };\n      }\n      Pattern::Chn(var) => {\n        term = Term::Let {\n          pat: Box::new(Pattern::Chn(var)),\n          val: Box::new(Term::Var { nam: arg }),\n          nxt: Box::new(term),\n        };\n      }\n      _ => unreachable!(),\n    }\n  }\n  used.insert(idx);\n  term\n}\n\n/// Var rule.\n/// `case x0 ... xN { var p1 ... pN: (Body var p1 ... pN) }`\n/// becomes\n/// `case x1 ... xN { p1 ... pN: use var = x0; (Body var p1 ... pN) }`\nfn var_rule(\n  mut args: Vec<Name>,\n  rules: Vec<Rule>,\n  idx: Vec<usize>,\n  mut with: Vec<Name>,\n  used: &mut BTreeSet<usize>,\n  ctrs: &Constructors,\n  adts: &Adts,\n) -> Result<Term, DesugarMatchDefErr> {\n  let arg = args[0].clone();\n  let new_args = args.split_off(1);\n\n  let mut new_rules = vec![];\n  for mut rule in rules {\n    let new_pats = rule.pats.split_off(1);\n    let pat = rule.pats.pop().unwrap();\n\n    if let Pattern::Var(Some(nam)) = &pat {\n      rule.body = Term::Use {\n        nam: Some(nam.clone()),\n        val: Box::new(Term::Var { nam: arg.clone() }),\n        nxt: Box::new(std::mem::take(&mut rule.body)),\n      };\n    }\n\n    let new_rule = Rule { pats: new_pats, body: rule.body };\n    new_rules.push(new_rule);\n  }\n\n  with.push(arg);\n\n  simplify_rule_match(new_args, new_rules, idx, with, used, ctrs, adts)\n}\n\n/// Tuple rule.\n/// ```hvm\n/// case x0 ... xN {\n///   (p0_0, ... p0_M) p1 ... pN:\n///     (Body p0_0 ... p0_M p1 ... pN)\n/// }\n/// ```\n/// becomes\n/// ```hvm\n/// let (x0.0, ... x0.M) = x0;\n/// case x0.0 ... x0.M x1 ... xN {\n///   p0_0 ... p0_M p1 ... pN:\n///     (Body p0_0 ... p0_M p1 ... pN)\n/// }\n/// ```\n#[allow(clippy::too_many_arguments)]\nfn fan_rule(\n  mut args: Vec<Name>,\n  rules: Vec<Rule>,\n  idx: Vec<usize>,\n  with: Vec<Name>,\n  used: &mut BTreeSet<usize>,\n  fan: FanKind,\n  tag: Tag,\n  len: usize,\n  ctrs: &Constructors,\n  adts: &Adts,\n) -> Result<Term, DesugarMatchDefErr> {\n  let arg = args[0].clone();\n  let old_args = args.split_off(1);\n  let new_args = (0..len).map(|i| Name::new(format!(\"{arg}.{i}\")));\n\n  let mut new_rules = vec![];\n  for mut rule in rules {\n    let pat = rule.pats[0].clone();\n    let old_pats = rule.pats.split_off(1);\n\n    // Extract subpatterns from the tuple pattern\n    let mut new_pats = match pat {\n      Pattern::Fan(.., sub_pats) => sub_pats,\n      Pattern::Var(var) => {\n        if let Some(var) = var {\n          // Rebuild the tuple if it was a var pattern\n          let tup =\n            Term::Fan { fan, tag: tag.clone(), els: new_args.clone().map(|nam| Term::Var { nam }).collect() };\n          rule.body =\n            Term::Use { nam: Some(var), val: Box::new(tup), nxt: Box::new(std::mem::take(&mut rule.body)) };\n        }\n        new_args.clone().map(|nam| Pattern::Var(Some(nam))).collect()\n      }\n      _ => unreachable!(),\n    };\n    new_pats.extend(old_pats);\n\n    let new_rule = Rule { pats: new_pats, body: rule.body };\n    new_rules.push(new_rule);\n  }\n\n  let bnd = new_args.clone().map(|x| Pattern::Var(Some(x))).collect();\n  let args = new_args.chain(old_args).collect();\n  let nxt = simplify_rule_match(args, new_rules, idx, with, used, ctrs, adts)?;\n  let term = Term::Let {\n    pat: Box::new(Pattern::Fan(fan, tag.clone(), bnd)),\n    val: Box::new(Term::Var { nam: arg }),\n    nxt: Box::new(nxt),\n  };\n\n  Ok(term)\n}\n\nfn num_rule(\n  mut args: Vec<Name>,\n  rules: Vec<Rule>,\n  idx: Vec<usize>,\n  with: Vec<Name>,\n  used: &mut BTreeSet<usize>,\n  ctrs: &Constructors,\n  adts: &Adts,\n) -> Result<Term, DesugarMatchDefErr> {\n  // Number match must always have a default case\n  if !rules.iter().any(|r| r.pats[0].is_wildcard()) {\n    return Err(DesugarMatchDefErr::NumMissingDefault);\n  }\n\n  let arg = args[0].clone();\n  let args = args.split_off(1);\n\n  let pred_var = Name::new(format!(\"{arg}-1\"));\n\n  // Since numbers have infinite (2^60) constructors, they require special treatment.\n  // We first iterate over each present number then get the default.\n  let nums = rules\n    .iter()\n    .filter_map(|r| if let Pattern::Num(n) = r.pats[0] { Some(n) } else { None })\n    .collect::<BTreeSet<_>>()\n    .into_iter()\n    .collect::<Vec<_>>();\n\n  // Number cases\n  let mut num_bodies = vec![];\n  for num in nums.iter() {\n    let mut new_rules = vec![];\n    let mut new_idx = vec![];\n    for (rule, &idx) in rules.iter().zip(&idx) {\n      match &rule.pats[0] {\n        Pattern::Num(n) if n == num => {\n          let body = rule.body.clone();\n          let rule = Rule { pats: rule.pats[1..].to_vec(), body };\n          new_rules.push(rule);\n          new_idx.push(idx);\n        }\n        Pattern::Var(var) => {\n          let mut body = rule.body.clone();\n          if let Some(var) = var {\n            body = Term::Use {\n              nam: Some(var.clone()),\n              val: Box::new(Term::Num { val: Num::U24(*num) }),\n              nxt: Box::new(std::mem::take(&mut body)),\n            };\n          }\n          let rule = Rule { pats: rule.pats[1..].to_vec(), body };\n          new_rules.push(rule);\n          new_idx.push(idx);\n        }\n        _ => (),\n      }\n    }\n    let body = simplify_rule_match(args.clone(), new_rules, new_idx, with.clone(), used, ctrs, adts)?;\n    num_bodies.push(body);\n  }\n\n  // Default case\n  let mut new_rules = vec![];\n  let mut new_idx = vec![];\n  for (rule, &idx) in rules.into_iter().zip(&idx) {\n    if let Pattern::Var(var) = &rule.pats[0] {\n      let mut body = rule.body.clone();\n      if let Some(var) = var {\n        let last_num = *nums.last().unwrap();\n        let cur_num = 1 + last_num;\n        let var_recovered = Term::add_num(Term::Var { nam: pred_var.clone() }, Num::U24(cur_num));\n        body = Term::Use { nam: Some(var.clone()), val: Box::new(var_recovered), nxt: Box::new(body) };\n        fast_pred_access(&mut body, cur_num, var, &pred_var);\n      }\n      let rule = Rule { pats: rule.pats[1..].to_vec(), body };\n      new_rules.push(rule);\n      new_idx.push(idx);\n    }\n  }\n  let mut default_with = with.clone();\n  default_with.push(pred_var.clone());\n  let default_body = simplify_rule_match(args.clone(), new_rules, new_idx, default_with, used, ctrs, adts)?;\n\n  // Linearize previously matched vars and current args.\n  let with = with.into_iter().chain(args).collect::<Vec<_>>();\n  let with_bnd = with.iter().cloned().map(Some).collect::<Vec<_>>();\n  let with_arg = with.iter().cloned().map(|nam| Term::Var { nam }).collect::<Vec<_>>();\n\n  let term = num_bodies.into_iter().enumerate().rfold(default_body, |term, (i, body)| {\n    let val = if i > 0 {\n      //  switch arg = (pred +1 +num_i-1 - num_i) { 0: body_i; _: acc }\n      // nums[i] >= nums[i-1]+1, so we do a sub here.\n      Term::sub_num(Term::Var { nam: pred_var.clone() }, Num::U24(nums[i] - 1 - nums[i - 1]))\n    } else {\n      //  switch arg = (arg -num_0) { 0: body_0; _: acc}\n      Term::sub_num(Term::Var { nam: arg.clone() }, Num::U24(nums[i]))\n    };\n\n    Term::Swt {\n      arg: Box::new(val),\n      bnd: Some(arg.clone()),\n      with_bnd: with_bnd.clone(),\n      with_arg: with_arg.clone(),\n      pred: Some(pred_var.clone()),\n      arms: vec![body, term],\n    }\n  });\n\n  Ok(term)\n}\n\n/// Replaces `body` to `pred_var` if the term is a operation that subtracts the given var by the current\n/// switch number.\nfn fast_pred_access(body: &mut Term, cur_num: u32, var: &Name, pred_var: &Name) {\n  maybe_grow(|| {\n    if let Term::Oper { opr: crate::fun::Op::SUB, fst, snd } = body {\n      if let Term::Num { val: crate::fun::Num::U24(val) } = &**snd {\n        if let Term::Var { nam } = &**fst {\n          if nam == var && *val == cur_num {\n            *body = Term::Var { nam: pred_var.clone() };\n          }\n        }\n      }\n    }\n    for child in body.children_mut() {\n      fast_pred_access(child, cur_num, var, pred_var)\n    }\n  })\n}\n\n/// When the first column has constructors, create a branch on the constructors\n/// of the first arg.\n///\n/// The extracted nested patterns and remaining args are handled recursively in\n/// a nested expression for each match arm.\n///\n/// If we imagine a complex match expression representing what's left of the\n/// encoding of a pattern matching function:\n/// ```hvm\n/// data MyType = (CtrA ctrA_field0 ... ctrA_fieldA) | (CtrB ctrB_field0 ... ctrB_fieldB) | CtrC | ...\n///\n/// case x0 ... xN {\n///   (CtrA p0_0_0 ... p0_A) p0_1 ... p0_N : (Body0 p0_0_0 ... p0_0_A p0_1 ... p0_N)\n///   ...\n///   varI pI_1 ... pI_N: (BodyI varI pI_1 ... pI_N)\n///   ...\n///   (CtrB pJ_0_0 ... pJ_0_B) pJ_1 ... pJ_N: (BodyJ pJ_0_0 ... pJ_0_B pJ_1 ... pJ_N)\n///   ...\n///   (CtrC) pK_1 ... pK_N: (BodyK p_1 ... pK_N)\n///   ...\n/// }\n/// ```\n/// is converted into\n/// ```hvm\n/// match x0 {\n///   CtrA: case x.ctrA_field0 ... x.ctrA_fieldA x1 ... xN {\n///     p0_0_0 ... p0_0_B p0_1 ... p0_N :\n///       (Body0 p0_0_0 ... p0_0_B )\n///     x.ctrA_field0 ... x.ctrA_fieldA pI_1 ... pI_N:\n///       use varI = (CtrA x.ctrA_field0 ... x.ctrA_fieldN); (BodyI varI pI_1 ... pI_N)\n///     ...\n///   }\n///   CtrB: case x.ctrB_field0 ... x.ctrB_fieldB x1 ... xN {\n///     x.ctrB_field0 ... x.ctrB_fieldB pI_1 ... pI_N:\n///       use varI = (CtrB x.ctrB_field0 ... x.ctrB_fieldB); (BodyI varI pI_1 ... pI_N)\n///     pJ_0_0 ... pJ_0_B pJ_1 ... pJ_N :\n///       (BodyJ pJ_0_0 ... pJ_0_B pJ_1 ... pJ_N)\n///     ...\n///   }\n///   CtrC: case * x1 ... xN {\n///     * pI_1 ... pI_N:\n///       use varI = CtrC; (BodyI varI pI_1 ... pI_N)\n///     * pK_1 ... pK_N:\n///       (BodyK p_1 ... pK_N)\n///     ...\n///   }\n///   ...\n/// }\n/// ```\n/// Where `case` represents a call of the [`simplify_rule_match`] function.\n#[allow(clippy::too_many_arguments)]\nfn switch_rule(\n  mut args: Vec<Name>,\n  rules: Vec<Rule>,\n  idx: Vec<usize>,\n  with: Vec<Name>,\n  adt_name: Name,\n  used: &mut BTreeSet<usize>,\n  ctrs: &Constructors,\n  adts: &Adts,\n) -> Result<Term, DesugarMatchDefErr> {\n  let arg = args[0].clone();\n  let old_args = args.split_off(1);\n\n  let mut new_arms = vec![];\n  for (ctr_nam, ctr) in &adts[&adt_name].ctrs {\n    let new_args = ctr.fields.iter().map(|f| Name::new(format!(\"{}.{}\", arg, f.nam)));\n    let args = new_args.clone().chain(old_args.clone()).collect();\n\n    let mut new_rules = vec![];\n    let mut new_idx = vec![];\n    for (rule, &idx) in rules.iter().zip(&idx) {\n      let old_pats = rule.pats[1..].to_vec();\n      match &rule.pats[0] {\n        // Same ctr, extract subpatterns.\n        // (Ctr pat0_0 ... pat0_m) pat1 ... patN: body\n        // becomes\n        // pat0_0 ... pat0_m pat1 ... patN: body\n        Pattern::Ctr(found_ctr, new_pats) if ctr_nam == found_ctr => {\n          let pats = new_pats.iter().cloned().chain(old_pats).collect();\n          let body = rule.body.clone();\n          let rule = Rule { pats, body };\n          new_rules.push(rule);\n          new_idx.push(idx);\n        }\n        // Var, match and rebuild the constructor.\n        // var pat1 ... patN: body\n        // becomes\n        // arg0.field0 ... arg0.fieldM pat1 ... patN:\n        //   use var = (Ctr arg0.field0 ... arg0.fieldM); body\n        Pattern::Var(var) => {\n          let new_pats = new_args.clone().map(|n| Pattern::Var(Some(n)));\n          let pats = new_pats.chain(old_pats.clone()).collect();\n          let mut body = rule.body.clone();\n          let reconstructed_var =\n            Term::call(Term::Ref { nam: ctr_nam.clone() }, new_args.clone().map(|nam| Term::Var { nam }));\n          if let Some(var) = var {\n            body =\n              Term::Use { nam: Some(var.clone()), val: Box::new(reconstructed_var), nxt: Box::new(body) };\n          }\n          let rule = Rule { pats, body };\n          new_rules.push(rule);\n          new_idx.push(idx);\n        }\n        _ => (),\n      }\n    }\n\n    if new_rules.is_empty() {\n      return Err(DesugarMatchDefErr::AdtNotExhaustive { adt: adt_name, ctr: ctr_nam.clone() });\n    }\n\n    let body = simplify_rule_match(args, new_rules, new_idx, with.clone(), used, ctrs, adts)?;\n    new_arms.push((Some(ctr_nam.clone()), new_args.map(Some).collect(), body));\n  }\n\n  // Linearize previously matched vars and current args.\n  let with = with.into_iter().chain(old_args).collect::<Vec<_>>();\n  let with_bnd = with.iter().cloned().map(Some).collect::<Vec<_>>();\n  let with_arg = with.iter().cloned().map(|nam| Term::Var { nam }).collect::<Vec<_>>();\n\n  let term = Term::Mat {\n    arg: Box::new(Term::Var { nam: arg.clone() }),\n    bnd: Some(arg.clone()),\n    with_bnd,\n    with_arg,\n    arms: new_arms,\n  };\n  Ok(term)\n}\n\n/// Pattern types.\n#[derive(Debug, Clone, PartialEq, Eq)]\npub enum Type {\n  /// Variables/wildcards.\n  Any,\n  /// A native tuple.\n  Fan(FanKind, Tag, usize),\n  /// A sequence of arbitrary numbers ending in a variable.\n  Num,\n  /// Adt constructors declared with the `data` syntax.\n  Adt(Name),\n}\n\nimpl Type {\n  // Infers the type of a column of a pattern matrix, from the rules of a function def.\n  fn infer_from_def_arg(\n    rules: &[Rule],\n    arg_idx: usize,\n    ctrs: &Constructors,\n  ) -> Result<Type, DesugarMatchDefErr> {\n    let pats = rules.iter().map(|r| &r.pats[arg_idx]);\n    let mut arg_type = Type::Any;\n    for pat in pats {\n      arg_type = match (arg_type, pat.to_type(ctrs)) {\n        (Type::Any, found) => found,\n        (expected, Type::Any) => expected,\n\n        (expected, found) if expected == found => expected,\n\n        (expected, found) => {\n          return Err(DesugarMatchDefErr::TypeMismatch { expected, found, pat: pat.clone() });\n        }\n      };\n    }\n    Ok(arg_type)\n  }\n}\n\nimpl Pattern {\n  fn to_type(&self, ctrs: &Constructors) -> Type {\n    match self {\n      Pattern::Var(_) | Pattern::Chn(_) => Type::Any,\n      Pattern::Ctr(ctr_nam, _) => {\n        let adt_nam = ctrs.get(ctr_nam).unwrap_or_else(|| panic!(\"Unknown constructor '{ctr_nam}'\"));\n        Type::Adt(adt_nam.clone())\n      }\n      Pattern::Fan(is_tup, tag, args) => Type::Fan(*is_tup, tag.clone(), args.len()),\n      Pattern::Num(_) => Type::Num,\n      Pattern::Lst(..) => Type::Adt(Name::new(builtins::LIST)),\n      Pattern::Str(..) => Type::Adt(Name::new(builtins::STRING)),\n    }\n  }\n}\n\nimpl std::fmt::Display for Type {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      Type::Any => write!(f, \"any\"),\n      Type::Fan(FanKind::Tup, tag, n) => write!(f, \"{}{n}-tuple\", tag.display_padded()),\n      Type::Fan(FanKind::Dup, tag, n) => write!(f, \"{}{n}-dup\", tag.display_padded()),\n      Type::Num => write!(f, \"number\"),\n      Type::Adt(nam) => write!(f, \"{nam}\"),\n    }\n  }\n}\n\nimpl std::fmt::Display for DesugarMatchDefErr {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      DesugarMatchDefErr::AdtNotExhaustive { adt, ctr } => {\n        write!(f, \"Non-exhaustive pattern matching rule. Constructor '{ctr}' of type '{adt}' not covered\")\n      }\n      DesugarMatchDefErr::TypeMismatch { expected, found, pat } => {\n        write!(\n          f,\n          \"Type mismatch in pattern matching rule. Expected a constructor of type '{}', found '{}' with type '{}'.\",\n          expected, pat, found\n        )\n      }\n      DesugarMatchDefErr::NumMissingDefault => {\n        write!(f, \"Non-exhaustive pattern matching rule. Default case of number type not covered.\")\n      }\n      DesugarMatchDefErr::RepeatedBind { bind } => {\n        write!(f, \"Repeated bind in pattern matching rule: '{bind}'.\")\n      }\n      DesugarMatchDefErr::UnreachableRule { idx, nam, pats } => {\n        write!(\n          f,\n          \"Unreachable pattern matching rule '({}{})' (rule index {idx}).\",\n          nam,\n          pats.iter().map(|p| format!(\" {p}\")).join(\"\")\n        )\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/desugar_open.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Adts, Ctx, Term},\n  maybe_grow,\n};\n\nimpl Ctx<'_> {\n  pub fn desugar_open(&mut self) -> Result<(), Diagnostics> {\n    for def in self.book.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        if let Err(err) = rule.body.desugar_open(&self.book.adts) {\n          self.info.add_function_error(err, def.name.clone(), def.source.clone());\n        }\n      }\n    }\n\n    self.info.fatal(())\n  }\n}\n\nimpl Term {\n  fn desugar_open(&mut self, adts: &Adts) -> Result<(), String> {\n    maybe_grow(|| {\n      match self {\n        Term::Open { typ, var, bod } => {\n          bod.desugar_open(adts)?;\n          if let Some(adt) = adts.get(&*typ) {\n            if adt.ctrs.len() == 1 {\n              let ctr = adt.ctrs.keys().next().unwrap();\n              *self = Term::Mat {\n                arg: Box::new(Term::Var { nam: var.clone() }),\n                bnd: Some(std::mem::take(var)),\n                with_bnd: vec![],\n                with_arg: vec![],\n                arms: vec![(Some(ctr.clone()), vec![], std::mem::take(bod))],\n              }\n            } else {\n              return Err(format!(\"Type '{typ}' of an 'open' has more than one constructor\"));\n            }\n          } else {\n            return Err(format!(\"Type '{typ}' of an 'open' is not defined\"));\n          }\n        }\n        Term::Def { def, nxt } => {\n          for rule in def.rules.iter_mut() {\n            rule.body.desugar_open(adts)?;\n          }\n          nxt.desugar_open(adts)?;\n        }\n        _ => {\n          for child in self.children_mut() {\n            child.desugar_open(adts)?;\n          }\n        }\n      }\n      Ok(())\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/desugar_use.rs",
    "content": "use crate::{\n  fun::{Book, Term},\n  maybe_grow,\n};\n\nimpl Book {\n  /// Inline copies of the declared bind in the `use` expression.\n  ///\n  /// Example:\n  /// ```bend\n  /// use id = λx x\n  /// (id id id)\n  ///\n  /// // Transforms to:\n  /// (λx x λx x λx x)\n  /// ```\n  pub fn desugar_use(&mut self) {\n    for def in self.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        rule.body.desugar_use();\n      }\n    }\n  }\n\n  /// Inline copies of the declared bind in `Fold`, `Mat` and `Open` inside `use` expressions.\n  pub fn desugar_ctr_use(&mut self) {\n    for def in self.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        rule.body.desugar_ctr_use();\n      }\n    }\n  }\n}\n\nimpl Term {\n  pub fn desugar_use(&mut self) {\n    maybe_grow(|| {\n      for children in self.children_mut() {\n        children.desugar_use();\n      }\n    });\n\n    if let Term::Use { nam: Some(nam), val, nxt } = self {\n      nxt.subst(nam, val);\n      *self = std::mem::take(nxt);\n    }\n  }\n\n  pub fn desugar_ctr_use(&mut self) {\n    maybe_grow(|| {\n      for children in self.children_mut() {\n        children.desugar_ctr_use();\n      }\n    });\n\n    if let Term::Use { nam: Some(nam), val, nxt } = self {\n      if let Term::Var { nam: val } = val.as_ref() {\n        nxt.subst_ctrs(nam, val);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/desugar_with_blocks.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Ctx, Name, Pattern, Term},\n  maybe_grow,\n};\nuse std::collections::HashSet;\n\nimpl Ctx<'_> {\n  /// Converts `ask` terms inside `with` blocks into calls to a monadic bind operation.\n  pub fn desugar_with_blocks(&mut self) -> Result<(), Diagnostics> {\n    let def_names = self.book.defs.keys().cloned().collect::<HashSet<_>>();\n\n    for def in self.book.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        if let Err(e) = rule.body.desugar_with_blocks(None, &def_names) {\n          self.info.add_function_error(e, def.name.clone(), def.source.clone());\n        }\n      }\n    }\n\n    self.info.fatal(())\n  }\n}\n\nimpl Term {\n  pub fn desugar_with_blocks(\n    &mut self,\n    cur_block: Option<&Name>,\n    def_names: &HashSet<Name>,\n  ) -> Result<(), String> {\n    maybe_grow(|| {\n      if let Term::With { typ, bod } = self {\n        bod.desugar_with_blocks(Some(typ), def_names)?;\n        let wrap_ref = Term::r#ref(&format!(\"{typ}/wrap\"));\n        *self = Term::Use { nam: Some(Name::new(\"wrap\")), val: Box::new(wrap_ref), nxt: std::mem::take(bod) };\n      }\n\n      if let Term::Ask { pat, val, nxt } = self {\n        if let Some(typ) = cur_block {\n          let bind_nam = Name::new(format!(\"{typ}/bind\"));\n\n          if def_names.contains(&bind_nam) {\n            let nxt = Term::lam(*pat.clone(), std::mem::take(nxt));\n            let nxt = nxt.defer();\n\n            *self = Term::call(Term::Ref { nam: bind_nam }, [*val.clone(), nxt]);\n          } else {\n            return Err(format!(\"Could not find definition {bind_nam} for type {typ}.\"));\n          }\n        } else {\n          return Err(format!(\"Monadic bind operation '{pat} <- ...' used outside of a `do` block.\"));\n        }\n      }\n\n      for children in self.children_mut() {\n        children.desugar_with_blocks(cur_block, def_names)?;\n      }\n\n      Ok(())\n    })\n  }\n\n  /// Converts a term with free vars `(f x1 .. xn)` into a deferred\n  /// call that passes those vars to the term.\n  ///\n  /// Ex: `(f x1 .. xn)` becomes `@x (x @x1 .. @xn (f x1 .. x2) x1 .. x2)`.\n  ///\n  /// The user must call this lazy thunk by calling the builtin\n  /// `undefer` function, or by applying `@x x` to the term.\n  fn defer(self) -> Term {\n    let free_vars = self.free_vars().into_keys().collect::<Vec<_>>();\n    let term = Term::rfold_lams(self, free_vars.iter().cloned().map(Some));\n    let term = Term::call(Term::Var { nam: Name::new(\"%x\") }, [term]);\n    let term = Term::call(term, free_vars.iter().cloned().map(|nam| Term::Var { nam }));\n    Term::lam(Pattern::Var(Some(Name::new(\"%x\"))), term)\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/encode_adts.rs",
    "content": "use crate::{\n  fun::{Book, Definition, Name, Num, Pattern, Rule, Source, Term},\n  AdtEncoding,\n};\n\nimpl Book {\n  /// Defines a function for each constructor in each ADT in the book.\n  pub fn encode_adts(&mut self, adt_encoding: AdtEncoding) {\n    let mut defs = vec![];\n\n    for (_, adt) in self.adts.iter() {\n      for (ctr_idx, (ctr_name, ctr)) in adt.ctrs.iter().enumerate() {\n        let ctrs: Vec<_> = adt.ctrs.keys().cloned().collect();\n\n        let body = match adt_encoding {\n          AdtEncoding::Scott => encode_ctr_scott(ctr.fields.iter().map(|f| &f.nam), ctrs, ctr_name),\n          AdtEncoding::NumScott => {\n            let tag = encode_num_scott_tag(ctr_idx as u32, ctr_name, adt.source.clone());\n            defs.push((tag.name.clone(), tag.clone()));\n            encode_ctr_num_scott(ctr.fields.iter().map(|f| &f.nam), &tag.name)\n          }\n        };\n\n        let rules = vec![Rule { pats: vec![], body }];\n        let def = Definition {\n          name: ctr_name.clone(),\n          typ: ctr.typ.clone(),\n          check: true,\n          rules,\n          source: adt.source.clone(),\n        };\n        defs.push((ctr_name.clone(), def));\n      }\n    }\n    self.defs.extend(defs);\n  }\n}\n\nfn encode_ctr_scott<'a>(\n  ctr_args: impl DoubleEndedIterator<Item = &'a Name> + Clone,\n  ctrs: Vec<Name>,\n  ctr_name: &Name,\n) -> Term {\n  let ctr = Term::Var { nam: ctr_name.clone() };\n  let app = Term::call(ctr, ctr_args.clone().cloned().map(|nam| Term::Var { nam }));\n  let lam = Term::rfold_lams(app, ctrs.into_iter().map(Some));\n  Term::rfold_lams(lam, ctr_args.cloned().map(Some))\n}\n\nfn encode_ctr_num_scott<'a>(ctr_args: impl DoubleEndedIterator<Item = &'a Name> + Clone, tag: &str) -> Term {\n  let nam = Name::new(\"%x\");\n  // λa1 .. λan λx (x TAG a1 .. an)\n  let term = Term::Var { nam: nam.clone() };\n  let tag = Term::r#ref(tag);\n  let term = Term::app(term, tag);\n  let term = Term::call(term, ctr_args.clone().cloned().map(|nam| Term::Var { nam }));\n  let term = Term::lam(Pattern::Var(Some(nam)), term);\n  Term::rfold_lams(term, ctr_args.cloned().map(Some))\n}\n\nfn encode_num_scott_tag(tag: u32, ctr_name: &Name, source: Source) -> Definition {\n  let tag_nam = Name::new(format!(\"{ctr_name}/tag\"));\n  let rules = vec![Rule { pats: vec![], body: Term::Num { val: Num::U24(tag) } }];\n  Definition::new_gen(tag_nam.clone(), rules, source, true)\n}\n"
  },
  {
    "path": "src/fun/transform/encode_match_terms.rs",
    "content": "use crate::{\n  fun::{Book, MatchRule, Name, Pattern, Term},\n  maybe_grow, AdtEncoding,\n};\n\nimpl Book {\n  /// Encodes pattern matching expressions in the book into their\n  /// core form. Must be run after [`Ctr::fix_match_terms`].\n  ///\n  /// ADT matches are encoded based on `adt_encoding`.\n  ///\n  /// Num matches are encoded as a sequence of native num matches (on 0 and 1+).\n  pub fn encode_matches(&mut self, adt_encoding: AdtEncoding) {\n    for def in self.defs.values_mut() {\n      for rule in &mut def.rules {\n        rule.body.encode_matches(adt_encoding);\n      }\n    }\n  }\n}\n\nimpl Term {\n  pub fn encode_matches(&mut self, adt_encoding: AdtEncoding) {\n    maybe_grow(|| {\n      for child in self.children_mut() {\n        child.encode_matches(adt_encoding)\n      }\n\n      if let Term::Mat { arg, bnd: _, with_bnd, with_arg, arms } = self {\n        assert!(with_bnd.is_empty());\n        assert!(with_arg.is_empty());\n        let arg = std::mem::take(arg.as_mut());\n        let rules = std::mem::take(arms);\n        *self = encode_match(arg, rules, adt_encoding);\n      } else if let Term::Swt { arg, bnd: _, with_bnd, with_arg, pred, arms } = self {\n        assert!(with_bnd.is_empty());\n        assert!(with_arg.is_empty());\n        let arg = std::mem::take(arg.as_mut());\n        let pred = std::mem::take(pred);\n        let rules = std::mem::take(arms);\n        *self = encode_switch(arg, pred, rules);\n      }\n    })\n  }\n}\n\nfn encode_match(arg: Term, rules: Vec<MatchRule>, adt_encoding: AdtEncoding) -> Term {\n  match adt_encoding {\n    AdtEncoding::Scott => {\n      let arms = rules.into_iter().map(|rule| Term::rfold_lams(rule.2, rule.1.into_iter()));\n      Term::call(arg, arms)\n    }\n    AdtEncoding::NumScott => {\n      fn make_switches(arms: &mut [Term]) -> Term {\n        maybe_grow(|| match arms {\n          [] => Term::Err,\n          [arm] => Term::lam(Pattern::Var(None), std::mem::take(arm)),\n          [arm, rest @ ..] => Term::lam(\n            Pattern::Var(Some(Name::new(\"%tag\"))),\n            Term::Swt {\n              arg: Box::new(Term::Var { nam: Name::new(\"%tag\") }),\n              bnd: None,\n              with_bnd: vec![],\n              with_arg: vec![],\n              pred: None,\n              arms: vec![std::mem::take(arm), make_switches(rest)],\n            },\n          ),\n        })\n      }\n      let mut arms =\n        rules.into_iter().map(|rule| Term::rfold_lams(rule.2, rule.1.into_iter())).collect::<Vec<_>>();\n      let term = if arms.len() == 1 {\n        // λx (x λtag switch tag {0: Ctr0; _: * })\n        let arm = arms.pop().unwrap();\n        let term = Term::Swt {\n          arg: Box::new(Term::Var { nam: Name::new(\"%tag\") }),\n          bnd: None,\n          with_bnd: vec![],\n          with_arg: vec![],\n          pred: None,\n          arms: vec![arm, Term::Era],\n        };\n        Term::lam(Pattern::Var(Some(Name::new(\"%tag\"))), term)\n      } else {\n        // λx (x λtag switch tag {0: Ctr0; _: switch tag-1 { ... } })\n        make_switches(arms.as_mut_slice())\n      };\n      Term::call(arg, [term])\n    }\n  }\n}\n\n/// Convert into a sequence of native switches, decrementing by 1 each switch.\n/// switch n {0: A; 1: B; _: (C n-2)} converted to\n/// switch n {0: A; _: @%x match %x {0: B; _: @n-2 (C n-2)}}\nfn encode_switch(arg: Term, pred: Option<Name>, mut rules: Vec<Term>) -> Term {\n  // Create the cascade of switches\n  let match_var = Name::new(\"%x\");\n  let (succ, nums) = rules.split_last_mut().unwrap();\n  let last_arm = Term::lam(Pattern::Var(pred), std::mem::take(succ));\n  nums.iter_mut().enumerate().rfold(last_arm, |term, (i, rule)| {\n    let arms = vec![std::mem::take(rule), term];\n    if i == 0 {\n      Term::Swt {\n        arg: Box::new(arg.clone()),\n        bnd: None,\n        with_bnd: vec![],\n        with_arg: vec![],\n        pred: None,\n        arms,\n      }\n    } else {\n      let swt = Term::Swt {\n        arg: Box::new(Term::Var { nam: match_var.clone() }),\n        bnd: None,\n        with_bnd: vec![],\n        with_arg: vec![],\n        pred: None,\n        arms,\n      };\n      Term::lam(Pattern::Var(Some(match_var.clone())), swt)\n    }\n  })\n}\n"
  },
  {
    "path": "src/fun/transform/expand_generated.rs",
    "content": "use std::collections::{BTreeSet, HashMap, HashSet};\n\nuse crate::{\n  fun::{Book, Name, Term},\n  maybe_grow,\n};\n\n/// Dereferences any non recursive generated definitions in the term.\n/// Used after readback.\nimpl Term {\n  pub fn expand_generated(&mut self, book: &Book, recursive_defs: &RecursiveDefs) {\n    maybe_grow(|| {\n      if let Term::Ref { nam } = &*self {\n        if nam.is_generated() && !recursive_defs.contains(nam) {\n          *self = book.defs.get(nam).unwrap().rule().body.clone();\n        }\n      }\n\n      for child in self.children_mut() {\n        child.expand_generated(book, recursive_defs);\n      }\n    })\n  }\n}\n\ntype DepGraph = HashMap<Name, HashSet<Name>>;\ntype Cycles = Vec<Vec<Name>>;\ntype RecursiveDefs = BTreeSet<Name>;\n\nimpl Book {\n  pub fn recursive_defs(&self) -> RecursiveDefs {\n    let mut cycle_map = BTreeSet::new();\n    let deps = book_def_deps(self);\n    let cycles = cycles(&deps);\n\n    for cycle in cycles {\n      for name in cycle {\n        cycle_map.insert(name);\n      }\n    }\n\n    cycle_map\n  }\n}\n\n/// Find all cycles in the dependency graph.\nfn cycles(deps: &DepGraph) -> Cycles {\n  let mut cycles = vec![];\n  let mut visited = HashSet::new();\n  // let mut stack = vec![];\n  for nam in deps.keys() {\n    if !visited.contains(nam) {\n      find_cycles(deps, nam, &mut visited, &mut cycles);\n    }\n  }\n  cycles\n}\n\nfn find_cycles(deps: &DepGraph, nam: &Name, visited: &mut HashSet<Name>, cycles: &mut Cycles) {\n  let mut stack = vec![(nam.clone(), vec![])];\n  while let Some((current, path)) = stack.pop() {\n    if visited.contains(&current) {\n      // Check if the current ref is already in the stack, which indicates a cycle.\n      if let Some(cycle_start) = path.iter().position(|n| n == &current) {\n        // If found, add the cycle to the cycles vector.\n        cycles.push(path[cycle_start..].to_vec());\n      }\n      continue;\n    }\n\n    // If the ref has not been visited yet, mark it as visited.\n    visited.insert(current.clone());\n    // Add the current ref to the stack to keep track of the path.\n    let mut new_path = path.clone();\n    new_path.push(current.clone());\n\n    // Search for cycles from each dependency.\n    if let Some(deps) = deps.get(&current) {\n      for dep in deps {\n        stack.push((dep.clone(), new_path.clone()));\n      }\n    }\n  }\n}\n\nfn book_def_deps(book: &Book) -> DepGraph {\n  book.defs.iter().map(|(nam, def)| (nam.clone(), def_deps(def))).collect()\n}\n\nfn def_deps(def: &crate::fun::Definition) -> HashSet<Name> {\n  fn collect_refs(term: &Term, set: &mut HashSet<Name>) {\n    if let Term::Ref { nam } = term {\n      set.insert(nam.clone());\n    }\n    for children in term.children() {\n      collect_refs(children, set);\n    }\n  }\n\n  let mut set = HashSet::new();\n  let term = &def.rule().body;\n\n  collect_refs(term, &mut set);\n\n  set\n}\n"
  },
  {
    "path": "src/fun/transform/expand_main.rs",
    "content": "use crate::{\n  fun::{Book, Name, Pattern, Term},\n  maybe_grow,\n};\nuse std::collections::HashMap;\n\nimpl Book {\n  /// Expands the main function so that it is not just a reference.\n  /// While technically correct, directly returning a reference is never what users want.\n  pub fn expand_main(&mut self) {\n    if self.entrypoint.is_none() {\n      return;\n    }\n\n    let main = self.defs.get_mut(self.entrypoint.as_ref().unwrap()).unwrap();\n    let mut main_bod = std::mem::take(&mut main.rule_mut().body);\n\n    let mut seen = vec![self.entrypoint.as_ref().unwrap().clone()];\n    main_bod.expand_ref_return(self, &mut seen, &mut 0);\n\n    // Undo the `float_combinators` pass for main, to recover the strictness of the main function.\n    main_bod.expand_floated_combinators(self);\n\n    let main = self.defs.get_mut(self.entrypoint.as_ref().unwrap()).unwrap();\n    main.rule_mut().body = main_bod;\n  }\n}\n\nimpl Term {\n  /// Expands references in the main function that are in \"return\" position.\n  ///\n  /// This applies to:\n  /// - When main returns a reference.\n  /// - When main returns a lambda whose body is a reference.\n  /// - When main returns a pair or superposition and one of its elements is a reference.\n  ///\n  /// Only expand recursive functions once.\n  fn expand_ref_return(&mut self, book: &Book, seen: &mut Vec<Name>, globals_count: &mut usize) {\n    maybe_grow(|| match self {\n      Term::Ref { nam } => {\n        if seen.contains(nam) {\n          // Don't expand recursive references\n        } else if let Some(def) = book.defs.get(nam) {\n          // Regular function, expand\n          seen.push(nam.clone());\n          let mut body = def.rule().body.clone();\n          body.rename_unscoped(globals_count, &mut HashMap::new());\n          *self = body;\n          self.expand_ref_return(book, seen, globals_count);\n          seen.pop().unwrap();\n        } else {\n          // Not a regular function, don't expand\n        }\n      }\n      Term::Fan { els, .. } | Term::List { els } => {\n        for el in els {\n          el.expand_ref_return(book, seen, globals_count);\n        }\n      }\n      // If an application is just a constructor, we expand the arguments.\n      // That way we can write programs like\n      // `main = [do_thing1, do_thing2, do_thing3]`\n      Term::App { .. } => {\n        let (fun, args) = self.multi_arg_app();\n        if let Term::Ref { nam } = fun {\n          if book.ctrs.contains_key(nam) {\n            for arg in args {\n              // If the argument is a 0-ary constructor, we don't need to expand it.\n              if let Term::Ref { nam } = arg {\n                if let Some(adt_nam) = book.ctrs.get(nam) {\n                  if book.adts.get(adt_nam).unwrap().ctrs.get(nam).unwrap().fields.is_empty() {\n                    continue;\n                  }\n                }\n              }\n              // Otherwise, we expand the argument.\n              arg.expand_ref_return(book, seen, globals_count);\n            }\n          }\n        }\n      }\n      Term::Lam { bod: nxt, .. }\n      | Term::With { bod: nxt, .. }\n      | Term::Open { bod: nxt, .. }\n      | Term::Let { nxt, .. }\n      | Term::Ask { nxt, .. }\n      | Term::Use { nxt, .. } => nxt.expand_ref_return(book, seen, globals_count),\n      Term::Var { .. }\n      | Term::Link { .. }\n      | Term::Num { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::Oper { .. }\n      | Term::Mat { .. }\n      | Term::Swt { .. }\n      | Term::Fold { .. }\n      | Term::Bend { .. }\n      | Term::Def { .. }\n      | Term::Era\n      | Term::Err => {}\n    })\n  }\n\n  fn expand_floated_combinators(&mut self, book: &Book) {\n    maybe_grow(|| {\n      if let Term::Ref { nam } = self {\n        if nam.contains(super::float_combinators::NAME_SEP) {\n          *self = book.defs.get(nam).unwrap().rule().body.clone();\n        }\n      }\n      for child in self.children_mut() {\n        child.expand_floated_combinators(book);\n      }\n    })\n  }\n\n  /// Read the term as an n-ary application.\n  fn multi_arg_app(&mut self) -> (&mut Term, Vec<&mut Term>) {\n    fn go<'a>(term: &'a mut Term, args: &mut Vec<&'a mut Term>) -> &'a mut Term {\n      match term {\n        Term::App { fun, arg, .. } => {\n          args.push(arg);\n          go(fun, args)\n        }\n        _ => term,\n      }\n    }\n    let mut args = vec![];\n    let fun = go(self, &mut args);\n    (fun, args)\n  }\n}\n\nimpl Term {\n  /// Since expanded functions can contain unscoped variables, and\n  /// unscoped variable names must be unique, we need to rename them\n  /// to avoid conflicts.\n  fn rename_unscoped(&mut self, unscoped_count: &mut usize, unscoped_map: &mut HashMap<Name, Name>) {\n    match self {\n      Term::Let { pat, .. } | Term::Lam { pat, .. } => pat.rename_unscoped(unscoped_count, unscoped_map),\n      Term::Link { nam } => rename_unscoped(nam, unscoped_count, unscoped_map),\n      _ => {\n        // Isn't an unscoped bind or use, do nothing, just recurse.\n      }\n    }\n    for child in self.children_mut() {\n      child.rename_unscoped(unscoped_count, unscoped_map);\n    }\n  }\n}\n\nimpl Pattern {\n  fn rename_unscoped(&mut self, unscoped_count: &mut usize, unscoped_map: &mut HashMap<Name, Name>) {\n    maybe_grow(|| {\n      match self {\n        Pattern::Chn(nam) => rename_unscoped(nam, unscoped_count, unscoped_map),\n        _ => {\n          // Pattern isn't an unscoped bind, just recurse.\n        }\n      }\n      for child in self.children_mut() {\n        child.rename_unscoped(unscoped_count, unscoped_map);\n      }\n    })\n  }\n}\n\n/// Generates a new name for an unscoped variable.\nfn rename_unscoped(nam: &mut Name, unscoped_count: &mut usize, unscoped_map: &mut HashMap<Name, Name>) {\n  if let Some(new_nam) = unscoped_map.get(nam) {\n    *nam = new_nam.clone();\n  } else {\n    let new_nam = Name::new(format!(\"{nam}%{}\", unscoped_count));\n    unscoped_map.insert(nam.clone(), new_nam.clone());\n    *unscoped_count += 1;\n    *nam = new_nam;\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/fix_match_defs.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Adts, Constructors, Ctx, Pattern, Rule, Term},\n};\n\nimpl Ctx<'_> {\n  /// Makes every pattern matching definition have correct a left-hand side.\n  ///\n  /// Does not check exhaustiveness of rules and type mismatches. (Inter-ctr/type proprieties)\n  pub fn fix_match_defs(&mut self) -> Result<(), Diagnostics> {\n    for def in self.book.defs.values_mut() {\n      let mut errs = vec![];\n\n      let def_arity = def.arity();\n      for rule in &mut def.rules {\n        rule.fix_match_defs(def_arity, &self.book.ctrs, &self.book.adts, &mut errs);\n      }\n\n      for err in errs {\n        self.info.add_function_error(err, def.name.clone(), def.source.clone());\n      }\n    }\n\n    self.info.fatal(())\n  }\n}\n\nimpl Rule {\n  fn fix_match_defs(&mut self, def_arity: usize, ctrs: &Constructors, adts: &Adts, errs: &mut Vec<String>) {\n    if self.arity() != def_arity {\n      errs.push(format!(\n        \"Incorrect pattern matching rule arity. Expected {} args, found {}.\",\n        def_arity,\n        self.arity()\n      ));\n    }\n\n    for pat in &mut self.pats {\n      pat.resolve_pat(ctrs);\n      pat.check_good_ctr(ctrs, adts, errs);\n    }\n\n    self.body.fix_match_defs(ctrs, adts, errs);\n  }\n}\n\nimpl Term {\n  fn fix_match_defs(&mut self, ctrs: &Constructors, adts: &Adts, errs: &mut Vec<String>) {\n    match self {\n      Term::Def { def, nxt } => {\n        let def_arity = def.arity();\n        for rule in &mut def.rules {\n          rule.fix_match_defs(def_arity, ctrs, adts, errs);\n        }\n        nxt.fix_match_defs(ctrs, adts, errs);\n      }\n      _ => {\n        for children in self.children_mut() {\n          children.fix_match_defs(ctrs, adts, errs);\n        }\n      }\n    }\n  }\n}\n\nimpl Pattern {\n  /// If a var pattern actually refers to an ADT constructor, convert it into a constructor pattern.\n  fn resolve_pat(&mut self, ctrs: &Constructors) {\n    if let Pattern::Var(Some(nam)) = self {\n      if ctrs.contains_key(nam) {\n        *self = Pattern::Ctr(std::mem::take(nam), vec![]);\n      }\n    }\n    for child in self.children_mut() {\n      child.resolve_pat(ctrs);\n    }\n  }\n\n  /// Check that ADT constructor pats are correct, meaning defined in a `data` and with correct arity.\n  fn check_good_ctr(&self, ctrs: &Constructors, adts: &Adts, errs: &mut Vec<String>) {\n    if let Pattern::Ctr(nam, args) = self {\n      if let Some(adt) = ctrs.get(nam) {\n        let expected_arity = adts[adt].ctrs[nam].fields.len();\n        let found_arity = args.len();\n        if expected_arity != found_arity {\n          errs.push(format!(\n            \"Incorrect arity for constructor '{}' of type '{}' in pattern matching rule. Expected {} fields, found {}\",\n            nam, adt, expected_arity, found_arity\n          ));\n        }\n      } else {\n        errs.push(format!(\"Unbound constructor '{nam}' in pattern matching rule.\"));\n      }\n    }\n    for child in self.children() {\n      child.check_good_ctr(ctrs, adts, errs);\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/fix_match_terms.rs",
    "content": "use crate::{\n  diagnostics::{Diagnostics, WarningType, ERR_INDENT_SIZE},\n  fun::{Adts, Constructors, CtrField, Ctx, MatchRule, Name, Num, Term},\n  maybe_grow,\n};\nuse std::collections::HashMap;\n\nenum FixMatchErr {\n  AdtMismatch { expected: Name, found: Name, ctr: Name },\n  NonExhaustiveMatch { typ: Name, missing: Name },\n  IrrefutableMatch { var: Option<Name> },\n  UnreachableMatchArms { var: Option<Name> },\n  RedundantArm { ctr: Name },\n}\n\nimpl Ctx<'_> {\n  /// Convert all match and switch expressions to a normalized form.\n  /// * For matches, resolve the constructors and create the name of the field variables.\n  /// * For switches, the resolution and name bind is already done during parsing.\n  /// * Check for redundant arms and non-exhaustive matches.\n  /// * Converts the initial bind to an alias on every arm, rebuilding the eliminated constructor\n  /// * Since the bind is not needed anywhere else, it's erased from the term.\n  ///\n  /// Example:\n  /// For the program\n  /// ```hvm\n  /// data MyList = (Cons h t) | Nil\n  /// match x {\n  ///   Cons: (A x.h x.t)\n  ///   Nil: switch %arg = (Foo y) { 0: B; 1: C; _ %arg-2: D }\n  /// }\n  /// ```\n  /// The following AST transformations will be made:\n  /// * The binds `x.h` and `x.t` will be generated and stored in the match term.\n  /// * If it was missing one of the match cases, we'd get an error.\n  /// * If it included one of the cases more than once (including wildcard patterns), we'd get a warning.\n  /// ```hvm\n  /// match * = x {\n  ///   Cons x.h x.t: use x = (Cons x.h x.t); (A x.h x.t)\n  ///   Nil: use x = Nil;\n  ///     switch * = (Foo y) {\n  ///       0: use %arg = 0; B;\n  ///       1: use %arg = 1; C;\n  ///       _: use %arg = (+ %arg-2 2); D\n  ///       }\n  /// }\n  /// ```\n  pub fn fix_match_terms(&mut self) -> Result<(), Diagnostics> {\n    for def in self.book.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        let errs = rule.body.fix_match_terms(&self.book.ctrs, &self.book.adts);\n\n        for err in errs {\n          match err {\n            FixMatchErr::AdtMismatch { .. } | FixMatchErr::NonExhaustiveMatch { .. } => {\n              self.info.add_function_error(err, def.name.clone(), def.source.clone())\n            }\n            FixMatchErr::IrrefutableMatch { .. } => self.info.add_function_warning(\n              err,\n              WarningType::IrrefutableMatch,\n              def.name.clone(),\n              def.source.clone(),\n            ),\n            FixMatchErr::UnreachableMatchArms { .. } => self.info.add_function_warning(\n              err,\n              WarningType::UnreachableMatch,\n              def.name.clone(),\n              def.source.clone(),\n            ),\n            FixMatchErr::RedundantArm { .. } => self.info.add_function_warning(\n              err,\n              WarningType::RedundantMatch,\n              def.name.clone(),\n              def.source.clone(),\n            ),\n          }\n        }\n      }\n    }\n\n    self.info.fatal(())\n  }\n}\n\nimpl Term {\n  fn fix_match_terms(&mut self, ctrs: &Constructors, adts: &Adts) -> Vec<FixMatchErr> {\n    maybe_grow(|| {\n      let mut errs = Vec::new();\n\n      for child in self.children_mut() {\n        let mut e = child.fix_match_terms(ctrs, adts);\n        errs.append(&mut e);\n      }\n\n      if matches!(self, Term::Mat { .. } | Term::Fold { .. }) {\n        self.fix_match(&mut errs, ctrs, adts);\n      }\n      match self {\n        Term::Def { def, nxt } => {\n          for rule in def.rules.iter_mut() {\n            errs.extend(rule.body.fix_match_terms(ctrs, adts));\n          }\n          errs.extend(nxt.fix_match_terms(ctrs, adts));\n        }\n        // Add a use term to each arm rebuilding the matched variable\n        Term::Mat { arg: _, bnd, with_bnd: _, with_arg: _, arms }\n        | Term::Fold { bnd, arg: _, with_bnd: _, with_arg: _, arms } => {\n          for (ctr, fields, body) in arms {\n            if let Some(ctr) = ctr {\n              *body = Term::Use {\n                nam: bnd.clone(),\n                val: Box::new(Term::call(\n                  Term::Ref { nam: ctr.clone() },\n                  fields.iter().flatten().cloned().map(|nam| Term::Var { nam }),\n                )),\n                nxt: Box::new(std::mem::take(body)),\n              };\n            }\n          }\n        }\n        Term::Swt { arg: _, bnd, with_bnd: _, with_arg: _, pred, arms } => {\n          let n_nums = arms.len() - 1;\n          for (i, arm) in arms.iter_mut().enumerate() {\n            let orig = if i == n_nums {\n              Term::add_num(Term::Var { nam: pred.clone().unwrap() }, Num::U24(i as u32))\n            } else {\n              Term::Num { val: Num::U24(i as u32) }\n            };\n            *arm = Term::Use { nam: bnd.clone(), val: Box::new(orig), nxt: Box::new(std::mem::take(arm)) };\n          }\n        }\n        _ => {}\n      }\n\n      // Remove the bound name\n      match self {\n        Term::Mat { bnd, .. } | Term::Swt { bnd, .. } | Term::Fold { bnd, .. } => *bnd = None,\n        _ => {}\n      }\n\n      errs\n    })\n  }\n\n  fn fix_match(&mut self, errs: &mut Vec<FixMatchErr>, ctrs: &Constructors, adts: &Adts) {\n    let (Term::Mat { bnd, arg, with_bnd, with_arg, arms }\n    | Term::Fold { bnd, arg, with_bnd, with_arg, arms }) = self\n    else {\n      unreachable!()\n    };\n    let bnd = bnd.clone().unwrap();\n\n    // Normalize arms, making one arm for each constructor of the matched adt.\n    if let Some(ctr_nam) = &arms[0].0 {\n      if let Some(adt_nam) = ctrs.get(ctr_nam) {\n        // First arm matches a constructor as expected, so we can normalize the arms.\n        let adt_ctrs = &adts[adt_nam].ctrs;\n\n        // Decide which constructor corresponds to which arm of the match.\n        let mut bodies = fixed_match_arms(&bnd, arms, adt_nam, adt_ctrs.keys(), ctrs, adts, errs);\n\n        // Build the match arms, with all constructors\n        let mut new_rules = vec![];\n        for (ctr_nam, ctr) in adt_ctrs.iter() {\n          let fields = ctr.fields.iter().map(|f| Some(match_field(&bnd, &f.nam))).collect::<Vec<_>>();\n          let body = if let Some(Some(body)) = bodies.remove(ctr_nam) {\n            body\n          } else {\n            errs.push(FixMatchErr::NonExhaustiveMatch { typ: adt_nam.clone(), missing: ctr_nam.clone() });\n            Term::Err\n          };\n          new_rules.push((Some(ctr_nam.clone()), fields, body));\n        }\n        *arms = new_rules;\n        return;\n      }\n    }\n\n    // First arm was not matching a constructor, irrefutable match, convert into a use term.\n    errs.push(FixMatchErr::IrrefutableMatch { var: arms[0].0.clone() });\n    let match_var = arms[0].0.take();\n    let arg = std::mem::take(arg);\n    let with_bnd = std::mem::take(with_bnd);\n    let with_arg = std::mem::take(with_arg);\n\n    // Replaces `self` by its irrefutable arm\n    *self = std::mem::take(&mut arms[0].2);\n\n    // `with` clause desugaring\n    // Performs the same as `Term::linearize_match_with`.\n    // Note that it only wraps the arm with function calls if `with_bnd` and `with_arg` aren't empty.\n    *self = Term::rfold_lams(std::mem::take(self), with_bnd.into_iter());\n    *self = Term::call(std::mem::take(self), with_arg);\n\n    if let Some(var) = match_var {\n      *self = Term::Use {\n        nam: Some(bnd.clone()),\n        val: arg,\n        nxt: Box::new(Term::Use {\n          nam: Some(var),\n          val: Box::new(Term::Var { nam: bnd }),\n          nxt: Box::new(std::mem::take(self)),\n        }),\n      }\n    }\n  }\n}\n\n/// Given the rules of a match term, return the bodies that match\n/// each of the constructors of the matched ADT.\n///\n/// If no rules match a certain constructor, return None in the map,\n/// indicating a non-exhaustive match.\nfn fixed_match_arms<'a>(\n  bnd: &Name,\n  rules: &mut Vec<MatchRule>,\n  adt_nam: &Name,\n  adt_ctrs: impl Iterator<Item = &'a Name>,\n  ctrs: &Constructors,\n  adts: &Adts,\n  errs: &mut Vec<FixMatchErr>,\n) -> HashMap<&'a Name, Option<Term>> {\n  let mut bodies = HashMap::<&Name, Option<Term>>::from_iter(adt_ctrs.map(|ctr| (ctr, None)));\n  for rule_idx in 0..rules.len() {\n    // If Ctr arm, use the body of this rule for this constructor.\n    if let Some(ctr_nam) = &rules[rule_idx].0 {\n      if let Some(found_adt) = ctrs.get(ctr_nam) {\n        if found_adt == adt_nam {\n          let body = bodies.get_mut(ctr_nam).unwrap();\n          if body.is_none() {\n            // Use this rule for this constructor\n            *body = Some(rules[rule_idx].2.clone());\n          } else {\n            errs.push(FixMatchErr::RedundantArm { ctr: ctr_nam.clone() });\n          }\n        } else {\n          errs.push(FixMatchErr::AdtMismatch {\n            expected: adt_nam.clone(),\n            found: found_adt.clone(),\n            ctr: ctr_nam.clone(),\n          })\n        }\n        continue;\n      }\n    }\n    // Otherwise, Var arm, use the body of this rule for all non-covered constructors.\n    for (ctr, body) in bodies.iter_mut() {\n      if body.is_none() {\n        let mut new_body = rules[rule_idx].2.clone();\n        if let Some(var) = &rules[rule_idx].0 {\n          new_body = Term::Use {\n            nam: Some(var.clone()),\n            val: Box::new(rebuild_ctr(bnd, ctr, &adts[adt_nam].ctrs[&**ctr].fields)),\n            nxt: Box::new(new_body),\n          };\n        }\n        *body = Some(new_body);\n      }\n    }\n    if rule_idx != rules.len() - 1 {\n      errs.push(FixMatchErr::UnreachableMatchArms { var: rules[rule_idx].0.clone() });\n      rules.truncate(rule_idx + 1);\n    }\n    break;\n  }\n\n  bodies\n}\n\nfn match_field(arg: &Name, field: &Name) -> Name {\n  Name::new(format!(\"{arg}.{field}\"))\n}\n\nfn rebuild_ctr(arg: &Name, ctr: &Name, fields: &[CtrField]) -> Term {\n  let ctr = Term::Ref { nam: ctr.clone() };\n  let fields = fields.iter().map(|f| Term::Var { nam: match_field(arg, &f.nam) });\n  Term::call(ctr, fields)\n}\n\nimpl std::fmt::Display for FixMatchErr {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      FixMatchErr::AdtMismatch { expected, found, ctr } => write!(\n        f,\n        \"Type mismatch in 'match' expression: Expected a constructor of type '{expected}', found '{ctr}' of type '{found}'\"\n      ),\n      FixMatchErr::NonExhaustiveMatch { typ, missing } => {\n        write!(f, \"Non-exhaustive 'match' expression of type '{typ}'. Case '{missing}' not covered.\")\n      }\n      FixMatchErr::IrrefutableMatch { var } => {\n        writeln!(\n          f,\n          \"Irrefutable 'match' expression. All cases after variable pattern '{}' will be ignored.\",\n          var.as_ref().unwrap_or(&Name::new(\"*\")),\n        )?;\n        writeln!(\n          f,\n          \"{:ERR_INDENT_SIZE$}Note that to use a 'match' expression, the matched constructors need to be defined in a 'data' definition.\",\n          \"\",\n        )?;\n        write!(\n          f,\n          \"{:ERR_INDENT_SIZE$}If this is not a mistake, consider using a 'let' expression instead.\",\n          \"\"\n        )\n      }\n\n      FixMatchErr::UnreachableMatchArms { var } => write!(\n        f,\n        \"Unreachable arms in 'match' expression. All cases after '{}' will be ignored.\",\n        var.as_ref().unwrap_or(&Name::new(\"*\"))\n      ),\n      FixMatchErr::RedundantArm { ctr } => {\n        write!(f, \"Redundant arm in 'match' expression. Case '{ctr}' appears more than once.\")\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/float_combinators.rs",
    "content": "use crate::{\n  fun::{Book, Definition, Name, Pattern, Rule, Source, Term},\n  maybe_grow, multi_iterator,\n};\nuse std::collections::{BTreeMap, HashSet};\n\npub const NAME_SEP: &str = \"__C\";\n\nimpl Book {\n  /// Extracts combinator terms into new definitions.\n  ///\n  /// Precondition: Variables must have been sanitized.\n  ///\n  /// The floating algorithm follows these rules:\n  /// For each child of the term:\n  /// - Recursively float every grandchild term.\n  /// - If the child is a combinator:\n  ///   * If the child is not \"safe\", extract it.\n  ///   * If the term is a combinator and it's \"safe\":\n  ///     - If the term is currently larger than `max_size`, extract the child.\n  ///   * Otherwise, always extract the child to a new definition.\n  /// - If the child is not a combinator, we can't extract it since\n  ///   it would generate an invalid term.\n  ///\n  /// Terms are considered combinators if they have no free vars,\n  /// no unmatched unscoped binds/vars and are not references (to\n  /// avoid infinite recursion).\n  ///\n  /// See [`Term::is_safe`] for what is considered safe here.\n  ///\n  /// See [`Term::size`] for the measurement of size.\n  /// It should more or less correspond to the compiled inet size.\n  pub fn float_combinators(&mut self, max_size: usize) {\n    let book = self.clone();\n    let mut ctx = FloatCombinatorsCtx::new(&book, max_size);\n\n    for (def_name, def) in self.defs.iter_mut() {\n      // Don't float combinators in the main entrypoint.\n      // This avoids making programs unexpectedly too lazy,\n      // returning just a reference without executing anything.\n      if let Some(main) = self.entrypoint.as_ref() {\n        if def_name == main {\n          continue;\n        }\n      }\n\n      let source = def.source.clone();\n      let check = def.check;\n      let body = &mut def.rule_mut().body;\n      ctx.reset();\n      ctx.def_size = body.size();\n      body.float_combinators(&mut ctx, def_name, source, check);\n    }\n\n    self.defs.extend(ctx.combinators.into_iter().map(|(nam, (_, def))| (nam, def)));\n  }\n}\n\nstruct FloatCombinatorsCtx<'b> {\n  pub combinators: BTreeMap<Name, (bool, Definition)>,\n  pub name_gen: usize,\n  pub seen: HashSet<Name>,\n  pub book: &'b Book,\n  pub max_size: usize,\n  pub def_size: usize,\n}\n\nimpl<'b> FloatCombinatorsCtx<'b> {\n  fn new(book: &'b Book, max_size: usize) -> Self {\n    Self {\n      combinators: Default::default(),\n      name_gen: 0,\n      seen: Default::default(),\n      book,\n      max_size,\n      def_size: 0,\n    }\n  }\n\n  fn reset(&mut self) {\n    self.def_size = 0;\n    self.name_gen = 0;\n    self.seen = Default::default();\n  }\n}\n\nimpl Term {\n  fn float_combinators(\n    &mut self,\n    ctx: &mut FloatCombinatorsCtx,\n    def_name: &Name,\n    source: Source,\n    check: bool,\n  ) {\n    maybe_grow(|| {\n      // Recursively float the grandchildren terms.\n      for child in self.float_children_mut() {\n        child.float_combinators(ctx, def_name, source.clone(), check);\n      }\n\n      let mut size = self.size();\n      let is_combinator = self.is_combinator();\n\n      // Float unsafe children and children that make the term too big.\n      for child in self.float_children_mut() {\n        let child_is_safe = child.is_safe(ctx);\n        let child_size = child.size();\n\n        let extract_for_size = if is_combinator { size > ctx.max_size } else { ctx.def_size > ctx.max_size };\n\n        if child.is_combinator() && child_size > 0 && (!child_is_safe || extract_for_size) {\n          ctx.def_size -= child_size;\n          size -= child_size;\n          child.float(ctx, def_name, source.clone(), check, child_is_safe);\n        }\n      }\n    })\n  }\n\n  /// Inserts a new definition for the given term in the combinators map.\n  fn float(\n    &mut self,\n    ctx: &mut FloatCombinatorsCtx,\n    def_name: &Name,\n    source: Source,\n    check: bool,\n    is_safe: bool,\n  ) {\n    let comb_name = Name::new(format!(\"{}{}{}\", def_name, NAME_SEP, ctx.name_gen));\n    ctx.name_gen += 1;\n\n    let comb_ref = Term::Ref { nam: comb_name.clone() };\n    let extracted_term = std::mem::replace(self, comb_ref);\n\n    let rules = vec![Rule { body: extracted_term, pats: Vec::new() }];\n    let rule = Definition::new_gen(comb_name.clone(), rules, source, check);\n    ctx.combinators.insert(comb_name, (is_safe, rule));\n  }\n}\n\nimpl Term {\n  /// A term can be considered safe if it is:\n  /// - A Number or an Eraser.\n  /// - A Tuple or Superposition where all elements are safe.\n  /// - An application or numeric operation where all arguments are safe.\n  /// - A safe Lambda, e.g. a nullary constructor or a lambda with safe body.\n  /// - A Reference with a safe body.\n  ///\n  /// A reference to a recursive definition (or mutually recursive) is not safe.\n  fn is_safe(&self, ctx: &mut FloatCombinatorsCtx) -> bool {\n    maybe_grow(|| match self {\n      Term::Num { .. }\n      | Term::Era\n      | Term::Err\n      | Term::Fan { .. }\n      | Term::App { .. }\n      | Term::Oper { .. }\n      | Term::Swt { .. } => self.children().all(|c| c.is_safe(ctx)),\n      Term::Lam { .. } => self.is_safe_lambda(ctx),\n      Term::Ref { nam } => {\n        // Constructors are safe\n        if ctx.book.ctrs.contains_key(nam) {\n          return true;\n        }\n        // If recursive, not safe\n        if ctx.seen.contains(nam) {\n          return false;\n        }\n        ctx.seen.insert(nam.clone());\n\n        // Check if the function it's referring to is safe\n        let safe = if let Some(def) = ctx.book.defs.get(nam) {\n          def.rule().body.is_safe(ctx)\n        } else if let Some((safe, _)) = ctx.combinators.get(nam) {\n          *safe\n        } else {\n          false\n        };\n\n        ctx.seen.remove(nam);\n        safe\n      }\n      // TODO: Variables can be safe depending on how they're used\n      // For example, in a well-typed numop they're safe.\n      _ => false,\n    })\n  }\n\n  /// Checks if the term is a lambda sequence with a safe body.\n  /// If the body is a variable bound in the lambdas, it's a nullary constructor.\n  /// If the body is a reference, it's in inactive position, so always safe.\n  fn is_safe_lambda(&self, ctx: &mut FloatCombinatorsCtx) -> bool {\n    let mut current = self;\n    let mut scope = Vec::new();\n\n    while let Term::Lam { pat, bod, .. } = current {\n      scope.extend(pat.binds().filter_map(|x| x.as_ref()));\n      current = bod;\n    }\n\n    match current {\n      Term::Var { nam } if scope.contains(&nam) => true,\n      Term::Ref { .. } => true,\n      term => term.is_safe(ctx),\n    }\n  }\n\n  pub fn has_unscoped_diff(&self) -> bool {\n    let (declared, used) = self.unscoped_vars();\n    declared.difference(&used).count() != 0 || used.difference(&declared).count() != 0\n  }\n\n  fn is_combinator(&self) -> bool {\n    self.free_vars().is_empty() && !self.has_unscoped_diff() && !matches!(self, Term::Ref { .. })\n  }\n\n  fn base_size(&self) -> usize {\n    match self {\n      Term::Let { pat, .. } => pat.size(),\n      Term::Fan { els, .. } => els.len() - 1,\n      Term::Mat { arms, .. } => arms.len(),\n      Term::Swt { arms, .. } => 2 * (arms.len() - 1),\n      Term::Lam { .. } => 1,\n      Term::App { .. } => 1,\n      Term::Oper { .. } => 1,\n      Term::Var { .. } => 0,\n      Term::Link { .. } => 0,\n      Term::Use { .. } => 0,\n      Term::Num { .. } => 0,\n      Term::Ref { .. } => 0,\n      Term::Era => 0,\n      Term::Bend { .. }\n      | Term::Fold { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::List { .. }\n      | Term::With { .. }\n      | Term::Ask { .. }\n      | Term::Open { .. }\n      | Term::Def { .. }\n      | Term::Err => unreachable!(),\n    }\n  }\n\n  fn size(&self) -> usize {\n    maybe_grow(|| {\n      let children_size: usize = self.children().map(|c| c.size()).sum();\n      self.base_size() + children_size\n    })\n  }\n\n  pub fn float_children_mut(&mut self) -> impl Iterator<Item = &mut Term> {\n    multi_iterator!(FloatIter { Zero, Two, Vec, Mat, App, Swt });\n    match self {\n      Term::App { .. } => {\n        let mut next = Some(self);\n        FloatIter::App(std::iter::from_fn(move || {\n          let cur = next.take();\n          if let Some(Term::App { fun, arg, .. }) = cur {\n            next = Some(&mut *fun);\n            Some(&mut **arg)\n          } else {\n            cur\n          }\n        }))\n      }\n      Term::Mat { arg, bnd: _, with_bnd: _, with_arg, arms } => FloatIter::Mat(\n        [arg.as_mut()].into_iter().chain(with_arg.iter_mut()).chain(arms.iter_mut().map(|r| &mut r.2)),\n      ),\n      Term::Swt { arg, bnd: _, with_bnd: _, with_arg, pred: _, arms } => {\n        FloatIter::Swt([arg.as_mut()].into_iter().chain(with_arg.iter_mut()).chain(arms.iter_mut()))\n      }\n      Term::Fan { els, .. } | Term::List { els } => FloatIter::Vec(els),\n      Term::Let { val: fst, nxt: snd, .. }\n      | Term::Use { val: fst, nxt: snd, .. }\n      | Term::Oper { fst, snd, .. } => FloatIter::Two([fst.as_mut(), snd.as_mut()]),\n      Term::Lam { bod, .. } => bod.float_children_mut(),\n      Term::Var { .. }\n      | Term::Link { .. }\n      | Term::Num { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::Ref { .. }\n      | Term::Era\n      | Term::Err => FloatIter::Zero([]),\n      Term::With { .. }\n      | Term::Ask { .. }\n      | Term::Bend { .. }\n      | Term::Fold { .. }\n      | Term::Open { .. }\n      | Term::Def { .. } => {\n        unreachable!()\n      }\n    }\n  }\n}\n\nimpl Pattern {\n  fn size(&self) -> usize {\n    match self {\n      Pattern::Var(_) => 0,\n      Pattern::Chn(_) => 0,\n      Pattern::Fan(_, _, pats) => pats.len() - 1 + pats.iter().map(|p| p.size()).sum::<usize>(),\n\n      Pattern::Num(_) | Pattern::Lst(_) | Pattern::Str(_) | Pattern::Ctr(_, _) => unreachable!(),\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/lift_local_defs.rs",
    "content": "use std::collections::BTreeSet;\n\nuse indexmap::IndexMap;\n\nuse crate::{\n  fun::{Book, Definition, Name, Pattern, Rule, Term},\n  maybe_grow,\n};\n\nimpl Book {\n  pub fn lift_local_defs(&mut self) {\n    let mut defs = IndexMap::new();\n    for (name, def) in self.defs.iter_mut() {\n      let mut gen = 0;\n      for rule in def.rules.iter_mut() {\n        rule.body.lift_local_defs(name, def.check, &mut defs, &mut gen);\n      }\n    }\n    self.defs.extend(defs);\n  }\n}\n\nimpl Rule {\n  pub fn binds(&self) -> impl DoubleEndedIterator<Item = &Option<Name>> + Clone {\n    self.pats.iter().flat_map(Pattern::binds)\n  }\n}\n\nimpl Term {\n  pub fn lift_local_defs(\n    &mut self,\n    parent: &Name,\n    check: bool,\n    defs: &mut IndexMap<Name, Definition>,\n    gen: &mut usize,\n  ) {\n    maybe_grow(|| match self {\n      Term::Def { def, nxt } => {\n        let local_name = Name::new(format!(\"{}__local_{}_{}\", parent, gen, def.name));\n        for rule in def.rules.iter_mut() {\n          rule.body.lift_local_defs(&local_name, check, defs, gen);\n        }\n        nxt.lift_local_defs(parent, check, defs, gen);\n        *gen += 1;\n\n        let inner_defs =\n          defs.keys().filter(|name| name.starts_with(local_name.as_ref())).cloned().collect::<BTreeSet<_>>();\n        let (r#use, fvs, mut rules) =\n          gen_use(inner_defs, &local_name, &def.name, nxt, std::mem::take(&mut def.rules));\n        let source = std::mem::take(&mut def.source);\n        *self = r#use;\n\n        apply_closure(&mut rules, &fvs);\n\n        let new_def = Definition::new_gen(local_name.clone(), rules, source, check);\n        defs.insert(local_name.clone(), new_def);\n      }\n      _ => {\n        for child in self.children_mut() {\n          child.lift_local_defs(parent, check, defs, gen);\n        }\n      }\n    })\n  }\n}\n\nfn gen_use(\n  inner_defs: BTreeSet<Name>,\n  local_name: &Name,\n  nam: &Name,\n  nxt: &mut Box<Term>,\n  mut rules: Vec<Rule>,\n) -> (Term, BTreeSet<Name>, Vec<Rule>) {\n  let mut fvs = BTreeSet::<Name>::new();\n  for rule in rules.iter() {\n    fvs.extend(rule.body.free_vars().into_keys().collect::<BTreeSet<_>>());\n  }\n  fvs.retain(|fv| !inner_defs.contains(fv));\n  for rule in rules.iter() {\n    for bind in rule.binds().flatten() {\n      fvs.remove(bind);\n    }\n  }\n  fvs.remove(nam);\n\n  let call = Term::call(\n    Term::Ref { nam: local_name.clone() },\n    fvs.iter().cloned().map(|nam| Term::Var { nam }).collect::<Vec<_>>(),\n  );\n\n  for rule in rules.iter_mut() {\n    let slf = std::mem::take(&mut rule.body);\n    rule.body = Term::Use { nam: Some(nam.clone()), val: Box::new(call.clone()), nxt: Box::new(slf) };\n  }\n\n  let r#use = Term::Use { nam: Some(nam.clone()), val: Box::new(call.clone()), nxt: std::mem::take(nxt) };\n\n  (r#use, fvs, rules)\n}\n\nfn apply_closure(rules: &mut [Rule], fvs: &BTreeSet<Name>) {\n  for rule in rules.iter_mut() {\n    let captured = fvs.iter().cloned().map(Some).collect::<Vec<_>>();\n    rule.body = Term::rfold_lams(std::mem::take(&mut rule.body), captured.into_iter());\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/linearize_matches.rs",
    "content": "use crate::{\n  fun::{Book, Name, Pattern, Term},\n  maybe_grow,\n};\nuse std::collections::{BTreeSet, HashMap, HashSet, VecDeque};\n\n/* Linearize preceding binds */\n\nimpl Book {\n  /// Linearization of binds preceding match/switch terms, up to the\n  /// first bind used in either the scrutinee or the bind.\n  ///\n  /// Example:\n  /// ```hvm\n  /// @a @b @c let d = (b c); switch a {\n  ///   0: (A b c d)\n  ///   _: (B a-1 b c d)\n  /// }\n  /// // Since `b`, `c` and `d` would be eta-reducible if linearized,\n  /// // they get pushed inside the match.\n  /// @a switch a {\n  ///   0: @b @c let d = (b c); (A b c d)\n  ///   _: @b @c let d = (b c); (B a-1 b c d)\n  /// }\n  /// ```\n  pub fn linearize_match_binds(&mut self) {\n    for def in self.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        rule.body.linearize_match_binds();\n      }\n    }\n  }\n}\n\nimpl Term {\n  /// Linearize any binds preceding a match/switch term, up to the\n  /// first bind used in either the scrutinee or the bind.\n  pub fn linearize_match_binds(&mut self) {\n    self.linearize_match_binds_go(vec![]);\n  }\n\n  fn linearize_match_binds_go(&mut self, mut bind_terms: Vec<Term>) {\n    maybe_grow(|| match self {\n      // Binding terms\n      // Extract them in case they are preceding a match.\n      Term::Lam { pat, bod, .. } if !pat.has_unscoped() => {\n        let bod = std::mem::take(bod.as_mut());\n        let term = std::mem::replace(self, bod);\n        bind_terms.push(term);\n        self.linearize_match_binds_go(bind_terms);\n      }\n      Term::Let { val, nxt, .. } | Term::Use { val, nxt, .. } => {\n        val.linearize_match_binds_go(vec![]);\n        if val.has_unscoped() {\n          // Terms with unscoped can't be linearized since their names must be unique.\n          nxt.linearize_match_binds_go(vec![]);\n          self.wrap_with_bind_terms(bind_terms);\n        } else {\n          let nxt = std::mem::take(nxt.as_mut());\n          let term = std::mem::replace(self, nxt);\n          bind_terms.push(term);\n          self.linearize_match_binds_go(bind_terms);\n        }\n      }\n\n      // Matching terms\n      Term::Mat { .. } | Term::Swt { .. } => {\n        self.linearize_binds_single_match(bind_terms);\n      }\n\n      // Others\n      // Not a match preceded by binds, so put the extracted terms back.\n      term => {\n        for child in term.children_mut() {\n          child.linearize_match_binds_go(vec![]);\n        }\n        // Recover the extracted terms\n        term.wrap_with_bind_terms(bind_terms);\n      }\n    })\n  }\n\n  fn linearize_binds_single_match(&mut self, mut bind_terms: Vec<Term>) {\n    let (used_vars, with_bnd, with_arg, arms) = match self {\n      Term::Mat { arg, bnd: _, with_bnd, with_arg, arms } => {\n        let vars = arg.free_vars().into_keys().collect::<HashSet<_>>();\n        let arms = arms.iter_mut().map(|arm| &mut arm.2).collect::<Vec<_>>();\n        (vars, with_bnd, with_arg, arms)\n      }\n      Term::Swt { arg, bnd: _, with_bnd, with_arg, pred: _, arms } => {\n        let vars = arg.free_vars().into_keys().collect::<HashSet<_>>();\n        let arms = arms.iter_mut().collect();\n        (vars, with_bnd, with_arg, arms)\n      }\n      _ => unreachable!(),\n    };\n\n    // Add 'with' args as lets that can be moved\n    for (bnd, arg) in with_bnd.iter().zip(with_arg.iter()) {\n      let term = Term::Let {\n        pat: Box::new(Pattern::Var(bnd.clone())),\n        val: Box::new(arg.clone()),\n        nxt: Box::new(Term::Err),\n      };\n      bind_terms.push(term)\n    }\n\n    let (mut non_linearized, linearized) = fixed_and_linearized_terms(used_vars, bind_terms);\n\n    // Add the linearized terms to the arms and recurse\n    for arm in arms {\n      arm.wrap_with_bind_terms(linearized.clone());\n      arm.linearize_match_binds_go(vec![]);\n    }\n\n    // Remove the linearized binds from the with clause\n    let linearized_binds = linearized\n      .iter()\n      .flat_map(|t| match t {\n        Term::Lam { pat, .. } | Term::Let { pat, .. } => pat.binds().flatten().cloned().collect::<Vec<_>>(),\n        Term::Use { nam, .. } => {\n          if let Some(nam) = nam {\n            vec![nam.clone()]\n          } else {\n            vec![]\n          }\n        }\n        _ => unreachable!(),\n      })\n      .collect::<BTreeSet<_>>();\n    update_with_clause(with_bnd, with_arg, &linearized_binds);\n\n    // Remove the non-linearized 'with' binds from the terms that need\n    // to be added back (since we didn't move them).\n    non_linearized.retain(|term| {\n      if let Term::Let { pat, .. } = term {\n        if let Pattern::Var(bnd) = pat.as_ref() {\n          if with_bnd.contains(bnd) {\n            return false;\n          }\n        }\n      }\n      true\n    });\n\n    // Add the non-linearized terms back to before the match\n    self.wrap_with_bind_terms(non_linearized);\n  }\n\n  /// Given a term `self` and a sequence of `bind_terms`, wrap `self` with those binds.\n  ///\n  /// Example:\n  /// ```hvm\n  /// self = X\n  /// match_terms = [λb *, let c = (a b); *, λd *]\n  /// ```\n  ///\n  /// becomes\n  ///\n  /// ```hvm\n  /// self = λb let c = (a b); λd X\n  /// ```\n  fn wrap_with_bind_terms(\n    &mut self,\n    bind_terms: impl IntoIterator<IntoIter = impl DoubleEndedIterator<Item = Term>>,\n  ) {\n    *self = bind_terms.into_iter().rfold(std::mem::take(self), |acc, mut term| {\n      match &mut term {\n        Term::Lam { bod: nxt, .. } | Term::Let { nxt, .. } | Term::Use { nxt, .. } => {\n          *nxt.as_mut() = acc;\n        }\n        _ => unreachable!(),\n      }\n      term\n    });\n  }\n}\n\n/// Separates the bind terms surround the match in two partitions,\n/// one to be linearized, one to stay where they where.\n///\n/// We try to move down any binds that would become eta-reducible with linearization\n/// and that will not introduce extra duplications.\n///\n/// This requires the bind to follow some rules:\n/// * Can only depend on binds that will be moved\n/// * Can't come before any bind that will not be moved.\n/// * Must be a scoped bind.\n///\n/// Examples:\n///\n/// ```hvm\n/// @a @b @c switch b { 0: c; _: (c b-1) }\n/// // Will linearize `c` but not `a` since it comes before a lambda that can't be moved\n/// // Becomes\n/// @a @b switch b { 0: @c c; _: @c (c b-1) }\n/// ```\n///\n/// ```hvm\n/// @a let b = a; @c let e = b; let d = c; switch a { 0: X; _: Y }\n/// // Will not linearize `let b = a` since it would duplicate `a`\n/// // Will linearize `c` since it's a lambda that is not depended on by the argument\n/// // Will not linearize `let e = b` since it would duplicate `b`\n/// // Will linearize `let d = c` since it depends only on variables that will be moved\n/// // and is not depended on by the argument\n/// ```\nfn fixed_and_linearized_terms(used_in_arg: HashSet<Name>, bind_terms: Vec<Term>) -> (Vec<Term>, Vec<Term>) {\n  let fixed_binds = binds_fixed_by_dependency(used_in_arg, &bind_terms);\n\n  let mut fixed = VecDeque::new();\n  let mut linearized = VecDeque::new();\n  let mut stop = false;\n  for term in bind_terms.into_iter().rev() {\n    let to_linearize = match &term {\n      Term::Use { nam, .. } => nam.as_ref().map_or(true, |nam| !fixed_binds.contains(nam)),\n      Term::Let { pat, .. } => pat.binds().flatten().all(|nam| !fixed_binds.contains(nam)),\n      Term::Lam { pat, .. } => pat.binds().flatten().all(|nam| !fixed_binds.contains(nam)),\n      _ => unreachable!(),\n    };\n    let to_linearize = to_linearize && !stop;\n    if to_linearize {\n      linearized.push_front(term);\n    } else {\n      if matches!(term, Term::Lam { .. }) {\n        stop = true;\n      }\n      fixed.push_front(term);\n    }\n  }\n  (fixed.into_iter().collect(), linearized.into_iter().collect())\n}\n\n/// Get which binds are fixed because they are in the dependency graph\n/// of a free var or of a var used in the match arg.\nfn binds_fixed_by_dependency(used_in_arg: HashSet<Name>, bind_terms: &[Term]) -> HashSet<Name> {\n  let mut fixed_binds = used_in_arg;\n\n  // Find the use dependencies of each bind\n  let mut binds = vec![];\n  let mut dependency_digraph = HashMap::new();\n  for term in bind_terms {\n    // Gather what are the binds of this term and what vars it is directly using\n    let (term_binds, term_uses) = match term {\n      Term::Lam { pat, .. } => {\n        let binds = pat.binds().flatten().cloned().collect::<Vec<_>>();\n        (binds, vec![])\n      }\n      Term::Let { pat, val, .. } => {\n        let binds = pat.binds().flatten().cloned().collect::<Vec<_>>();\n        let uses = val.free_vars().into_keys().collect();\n        (binds, uses)\n      }\n      Term::Use { nam, val, .. } => {\n        let binds = if let Some(nam) = nam { vec![nam.clone()] } else { vec![] };\n        let uses = val.free_vars().into_keys().collect();\n        (binds, uses)\n      }\n      _ => unreachable!(),\n    };\n\n    for bind in term_binds {\n      dependency_digraph.insert(bind.clone(), term_uses.clone());\n      binds.push(bind);\n    }\n  }\n\n  // Mark binds that depend on free vars as fixed\n  for (bind, deps) in dependency_digraph.iter() {\n    if deps.iter().any(|dep| !binds.contains(dep)) {\n      fixed_binds.insert(bind.clone());\n    }\n  }\n\n  // Convert to undirected graph\n  let mut dependency_graph: HashMap<Name, HashSet<Name>> =\n    HashMap::from_iter(binds.iter().map(|k| (k.clone(), HashSet::new())));\n  for (bind, deps) in dependency_digraph {\n    for dep in deps {\n      if !binds.contains(&dep) {\n        dependency_graph.insert(dep.clone(), HashSet::new());\n      }\n      dependency_graph.get_mut(&dep).unwrap().insert(bind.clone());\n      dependency_graph.get_mut(&bind).unwrap().insert(dep);\n    }\n  }\n\n  // Find which binds are connected to the vars used in the match arg or to free vars.\n  let mut used_component = HashSet::new();\n  let mut visited = HashSet::new();\n  let mut to_visit = fixed_binds.iter().collect::<Vec<_>>();\n  while let Some(node) = to_visit.pop() {\n    if visited.contains(node) {\n      continue;\n    }\n    used_component.insert(node.clone());\n    visited.insert(node);\n\n    // Add these dependencies to be checked (if it's not a free var in the match arg)\n    if let Some(deps) = dependency_graph.get(node) {\n      to_visit.extend(deps);\n    }\n  }\n\n  // Mark lambdas that come before a fixed lambda as also fixed\n  let mut fixed_start = false;\n  let mut fixed_lams = HashSet::new();\n  for term in bind_terms.iter().rev() {\n    if let Term::Lam { pat, .. } = term {\n      if pat.binds().flatten().any(|p| used_component.contains(p)) {\n        fixed_start = true;\n      }\n      if fixed_start {\n        for bind in pat.binds().flatten() {\n          fixed_lams.insert(bind.clone());\n        }\n      }\n    }\n  }\n\n  let mut fixed_binds = used_component;\n\n  // Mark binds that depend on fixed lambdas as also fixed.\n  let mut visited = HashSet::new();\n  let mut to_visit = fixed_lams.iter().collect::<Vec<_>>();\n  while let Some(node) = to_visit.pop() {\n    if visited.contains(node) {\n      continue;\n    }\n    fixed_binds.insert(node.clone());\n    visited.insert(node);\n\n    // Add these dependencies to be checked (if it's not a free var in the match arg)\n    if let Some(deps) = dependency_graph.get(node) {\n      to_visit.extend(deps);\n    }\n  }\n\n  fixed_binds\n}\n\nfn update_with_clause(\n  with_bnd: &mut Vec<Option<Name>>,\n  with_arg: &mut Vec<Term>,\n  vars_to_lift: &BTreeSet<Name>,\n) {\n  let mut to_remove = Vec::new();\n  for i in 0..with_bnd.len() {\n    if let Some(with_bnd) = &with_bnd[i] {\n      if vars_to_lift.contains(with_bnd) {\n        to_remove.push(i);\n      }\n    }\n  }\n  for (removed, to_remove) in to_remove.into_iter().enumerate() {\n    with_bnd.remove(to_remove - removed);\n    with_arg.remove(to_remove - removed);\n  }\n}\n/* Linearize all used vars */\n\nimpl Book {\n  /// Linearizes all variables used in a matches' arms.\n  pub fn linearize_matches(&mut self) {\n    for def in self.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        rule.body.linearize_matches();\n      }\n    }\n  }\n}\n\nimpl Term {\n  fn linearize_matches(&mut self) {\n    maybe_grow(|| {\n      for child in self.children_mut() {\n        child.linearize_matches();\n      }\n\n      if matches!(self, Term::Mat { .. } | Term::Swt { .. }) {\n        lift_match_vars(self);\n      }\n    })\n  }\n}\n\n/// Converts free vars inside the match arms into lambdas with\n/// applications around the match to pass them the external value.\n///\n/// Makes the rules extractable and linear (no need for dups even\n/// when a variable is used in multiple rules).\n///\n/// Obs: This does not modify unscoped variables.\npub fn lift_match_vars(match_term: &mut Term) -> &mut Term {\n  // Collect match arms with binds\n  let (with_bnd, with_arg, arms) = match match_term {\n    Term::Mat { arg: _, bnd: _, with_bnd, with_arg, arms: rules } => {\n      let args =\n        rules.iter().map(|(_, binds, body)| (binds.iter().flatten().cloned().collect(), body)).collect();\n      (with_bnd.clone(), with_arg.clone(), args)\n    }\n    Term::Swt { arg: _, bnd: _, with_bnd, with_arg, pred, arms } => {\n      let (succ, nums) = arms.split_last_mut().unwrap();\n      let mut arms = nums.iter().map(|body| (vec![], body)).collect::<Vec<_>>();\n      arms.push((vec![pred.clone().unwrap()], succ));\n      (with_bnd.clone(), with_arg.clone(), arms)\n    }\n    _ => unreachable!(),\n  };\n\n  // Collect all free vars in the match arms\n  let mut free_vars = Vec::<Vec<_>>::new();\n  for (binds, body) in arms {\n    let mut arm_free_vars = body.free_vars();\n    for bind in binds {\n      arm_free_vars.shift_remove(&bind);\n    }\n    free_vars.push(arm_free_vars.into_keys().collect());\n  }\n\n  // Collect the vars to lift\n  // We need consistent iteration order.\n  let vars_to_lift: BTreeSet<Name> = free_vars.into_iter().flatten().collect();\n\n  // Add lambdas to the arms\n  match match_term {\n    Term::Mat { arg: _, bnd: _, with_bnd, with_arg, arms } => {\n      update_with_clause(with_bnd, with_arg, &vars_to_lift);\n      for arm in arms {\n        let old_body = std::mem::take(&mut arm.2);\n        arm.2 = Term::rfold_lams(old_body, vars_to_lift.iter().cloned().map(Some));\n      }\n    }\n    Term::Swt { arg: _, bnd: _, with_bnd, with_arg, pred: _, arms } => {\n      update_with_clause(with_bnd, with_arg, &vars_to_lift);\n      for arm in arms {\n        let old_body = std::mem::take(arm);\n        *arm = Term::rfold_lams(old_body, vars_to_lift.iter().cloned().map(Some));\n      }\n    }\n    _ => unreachable!(),\n  }\n\n  // Add apps to the match\n  let args = vars_to_lift\n    .into_iter()\n    .map(|nam| {\n      if let Some(idx) = with_bnd.iter().position(|x| x == &nam) {\n        with_arg[idx].clone()\n      } else {\n        Term::Var { nam }\n      }\n    })\n    .collect::<Vec<_>>();\n  let term = Term::call(std::mem::take(match_term), args);\n  *match_term = term;\n\n  get_match_reference(match_term)\n}\n\n/// Get a reference to the match again\n/// It returns a reference and not an owned value because we want\n/// to keep the new surrounding Apps but still modify the match further.\nfn get_match_reference(mut match_term: &mut Term) -> &mut Term {\n  loop {\n    match match_term {\n      Term::App { tag: _, fun, arg: _ } => match_term = fun.as_mut(),\n      Term::Swt { .. } | Term::Mat { .. } => return match_term,\n      _ => unreachable!(),\n    }\n  }\n}\n\n/* Linearize `with` vars  */\n\nimpl Book {\n  /// Linearizes all variables specified in the `with` clauses of match terms.\n  pub fn linearize_match_with(&mut self) {\n    for def in self.defs.values_mut() {\n      for rule in def.rules.iter_mut() {\n        rule.body.linearize_match_with();\n      }\n    }\n  }\n}\n\nimpl Term {\n  fn linearize_match_with(&mut self) {\n    maybe_grow(|| {\n      for child in self.children_mut() {\n        child.linearize_match_with();\n      }\n    });\n    match self {\n      Term::Mat { arg: _, bnd: _, with_bnd, with_arg, arms } => {\n        for rule in arms {\n          rule.2 = Term::rfold_lams(std::mem::take(&mut rule.2), with_bnd.clone().into_iter());\n        }\n        *with_bnd = vec![];\n        let call_args = std::mem::take(with_arg).into_iter();\n        *self = Term::call(std::mem::take(self), call_args);\n      }\n      Term::Swt { arg: _, bnd: _, with_bnd, with_arg, pred: _, arms } => {\n        for rule in arms {\n          *rule = Term::rfold_lams(std::mem::take(rule), with_bnd.clone().into_iter());\n        }\n        *with_bnd = vec![];\n        let call_args = std::mem::take(with_arg).into_iter();\n        *self = Term::call(std::mem::take(self), call_args);\n      }\n      _ => {}\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/linearize_vars.rs",
    "content": "use crate::{\n  fun::{Book, FanKind, Name, Pattern, Tag, Term},\n  maybe_grow, multi_iterator,\n};\nuse std::collections::HashMap;\n\n/// Erases variables that weren't used, dups the ones that were used more than once.\n/// Substitutes lets into their variable use.\n/// In details:\n/// For all var declarations:\n///   If they're used 0 times: erase the declaration\n///   If they're used 1 time: leave them as-is\n///   If they're used more times: insert dups to make var use affine\n/// For all let vars:\n///   If they're used 0 times: Discard the let\n///   If they're used 1 time: substitute the body in the var use\n///   If they're use more times: add dups for all the uses, put the let body at the root dup.\n/// Precondition: All variables are bound and have unique names within each definition.\nimpl Book {\n  pub fn linearize_vars(&mut self) {\n    for def in self.defs.values_mut() {\n      def.rule_mut().body.linearize_vars();\n    }\n  }\n}\n\nimpl Term {\n  pub fn linearize_vars(&mut self) {\n    term_to_linear(self, &mut HashMap::new());\n  }\n}\n\nfn term_to_linear(term: &mut Term, var_uses: &mut HashMap<Name, u64>) {\n  maybe_grow(|| {\n    if let Term::Let { pat, val, nxt } = term {\n      if let Pattern::Var(Some(nam)) = pat.as_ref() {\n        // TODO: This is swapping the order of how the bindings are\n        // used, since it's not following the usual AST order (first\n        // val, then nxt). Doesn't change behaviour, but looks strange.\n        term_to_linear(nxt, var_uses);\n\n        let uses = get_var_uses(Some(nam), var_uses);\n        term_to_linear(val, var_uses);\n        match uses {\n          0 => {\n            let Term::Let { pat, .. } = term else { unreachable!() };\n            **pat = Pattern::Var(None);\n          }\n          1 => {\n            nxt.subst(nam, val.as_ref());\n            *term = std::mem::take(nxt.as_mut());\n          }\n          _ => {\n            let new_pat = duplicate_pat(nam, uses);\n            let Term::Let { pat, .. } = term else { unreachable!() };\n            *pat = new_pat;\n          }\n        }\n        return;\n      }\n    }\n    if let Term::Var { nam } = term {\n      let instantiated_count = var_uses.entry(nam.clone()).or_default();\n      *instantiated_count += 1;\n      *nam = dup_name(nam, *instantiated_count);\n      return;\n    }\n\n    for (child, binds) in term.children_mut_with_binds_mut() {\n      term_to_linear(child, var_uses);\n\n      for bind in binds {\n        let uses = get_var_uses(bind.as_ref(), var_uses);\n        match uses {\n          // Erase binding\n          0 => *bind = None,\n          // Keep as-is\n          1 => (),\n          // Duplicate binding\n          uses => {\n            debug_assert!(uses > 1);\n            let nam = bind.as_ref().unwrap();\n            *child = Term::Let {\n              pat: duplicate_pat(nam, uses),\n              val: Box::new(Term::Var { nam: nam.clone() }),\n              nxt: Box::new(std::mem::take(child)),\n            }\n          }\n        }\n      }\n    }\n  })\n}\n\nfn get_var_uses(nam: Option<&Name>, var_uses: &HashMap<Name, u64>) -> u64 {\n  nam.and_then(|nam| var_uses.get(nam).copied()).unwrap_or_default()\n}\n\nfn duplicate_pat(nam: &Name, uses: u64) -> Box<Pattern> {\n  Box::new(Pattern::Fan(\n    FanKind::Dup,\n    Tag::Auto,\n    (1..uses + 1).map(|i| Pattern::Var(Some(dup_name(nam, i)))).collect(),\n  ))\n}\n\nfn dup_name(nam: &Name, uses: u64) -> Name {\n  if uses == 1 {\n    nam.clone()\n  } else {\n    Name::new(format!(\"{nam}_{uses}\"))\n  }\n}\n\nimpl Term {\n  /// Because multiple children can share the same binds, this function is very restricted.\n  /// Should only be called after desugaring bends/folds/matches/switches.\n  pub fn children_mut_with_binds_mut(\n    &mut self,\n  ) -> impl DoubleEndedIterator<Item = (&mut Term, impl DoubleEndedIterator<Item = &mut Option<Name>>)> {\n    multi_iterator!(ChildrenIter { Zero, One, Two, Vec, Swt });\n    multi_iterator!(BindsIter { Zero, One, Pat });\n    match self {\n      Term::Swt { arg, bnd, with_bnd, with_arg, pred, arms } => {\n        debug_assert!(bnd.is_none());\n        debug_assert!(with_bnd.is_empty());\n        debug_assert!(with_arg.is_empty());\n        debug_assert!(pred.is_none());\n        ChildrenIter::Swt(\n          [(arg.as_mut(), BindsIter::Zero([]))]\n            .into_iter()\n            .chain(arms.iter_mut().map(|x| (x, BindsIter::Zero([])))),\n        )\n      }\n      Term::Fan { els, .. } | Term::List { els } => {\n        ChildrenIter::Vec(els.iter_mut().map(|el| (el, BindsIter::Zero([]))))\n      }\n      Term::Use { nam, val, nxt } => {\n        ChildrenIter::Two([(val.as_mut(), BindsIter::Zero([])), (nxt.as_mut(), BindsIter::One([nam]))])\n      }\n      Term::Let { pat, val, nxt, .. } | Term::Ask { pat, val, nxt, .. } => ChildrenIter::Two([\n        (val.as_mut(), BindsIter::Zero([])),\n        (nxt.as_mut(), BindsIter::Pat(pat.binds_mut())),\n      ]),\n      Term::App { fun: fst, arg: snd, .. } | Term::Oper { fst, snd, .. } => {\n        ChildrenIter::Two([(fst.as_mut(), BindsIter::Zero([])), (snd.as_mut(), BindsIter::Zero([]))])\n      }\n      Term::Lam { pat, bod, .. } => ChildrenIter::One([(bod.as_mut(), BindsIter::Pat(pat.binds_mut()))]),\n      Term::With { bod, .. } => ChildrenIter::One([(bod.as_mut(), BindsIter::Zero([]))]),\n      Term::Var { .. }\n      | Term::Link { .. }\n      | Term::Num { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::Ref { .. }\n      | Term::Era\n      | Term::Err => ChildrenIter::Zero([]),\n      Term::Mat { .. } => unreachable!(\"'match' should be removed in earlier pass\"),\n      Term::Fold { .. } => unreachable!(\"'fold' should be removed in earlier pass\"),\n      Term::Bend { .. } => unreachable!(\"'bend' should be removed in earlier pass\"),\n      Term::Open { .. } => unreachable!(\"'open' should be removed in earlier pass\"),\n      Term::Def { .. } => unreachable!(\"'def' should be removed in earlier pass\"),\n    }\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/mod.rs",
    "content": "pub mod apply_args;\npub mod definition_merge;\npub mod definition_pruning;\npub mod desugar_bend;\npub mod desugar_fold;\npub mod desugar_match_defs;\npub mod desugar_open;\npub mod desugar_use;\npub mod desugar_with_blocks;\npub mod encode_adts;\npub mod encode_match_terms;\npub mod expand_generated;\npub mod expand_main;\npub mod fix_match_defs;\npub mod fix_match_terms;\npub mod float_combinators;\npub mod lift_local_defs;\npub mod linearize_matches;\npub mod linearize_vars;\npub mod resolve_refs;\npub mod resolve_type_ctrs;\npub mod resugar_list;\npub mod resugar_string;\npub mod unique_names;\n"
  },
  {
    "path": "src/fun/transform/resolve_refs.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Ctx, Name, Pattern, Term},\n  maybe_grow,\n};\nuse std::collections::{HashMap, HashSet};\n\n#[derive(Debug, Clone)]\npub struct ReferencedMainErr;\n\nimpl Ctx<'_> {\n  /// Decides if names inside a term belong to a Var or to a Ref.\n  /// Converts `Term::Var(nam)` into `Term::Ref(nam)` when the name\n  /// refers to a function definition and there is no variable in\n  /// scope shadowing that definition.\n  ///\n  /// Precondition: Refs are encoded as vars, Constructors are resolved.\n  ///\n  /// Postcondition: Refs are encoded as refs, with the correct def id.\n  pub fn resolve_refs(&mut self) -> Result<(), Diagnostics> {\n    let def_names =\n      self.book.defs.keys().cloned().chain(self.book.hvm_defs.keys().cloned()).collect::<HashSet<_>>();\n    for (def_name, def) in &mut self.book.defs {\n      for rule in def.rules.iter_mut() {\n        let mut scope = HashMap::new();\n\n        for name in rule.pats.iter().flat_map(Pattern::binds) {\n          push_scope(name.as_ref(), &mut scope);\n        }\n\n        let res =\n          rule.body.resolve_refs(&def_names, self.book.entrypoint.as_ref(), &mut scope, &mut self.info);\n        self.info.take_rule_err(res, def_name.clone());\n      }\n    }\n\n    self.info.fatal(())\n  }\n}\n\nimpl Term {\n  pub fn resolve_refs<'a>(\n    &'a mut self,\n    def_names: &HashSet<Name>,\n    main: Option<&Name>,\n    scope: &mut HashMap<&'a Name, usize>,\n    info: &mut Diagnostics,\n  ) -> Result<(), String> {\n    maybe_grow(move || {\n      match self {\n        Term::Var { nam } => {\n          if is_var_in_scope(nam, scope) {\n            // If the variable is actually a reference to main, don't swap and return an error.\n            if let Some(main) = main {\n              if nam == main {\n                return Err(\"Main definition can't be referenced inside the program.\".to_string());\n              }\n            }\n\n            // If the variable is actually a reference to a function, swap the term.\n            if def_names.contains(nam) {\n              *self = Term::r#ref(nam);\n            }\n          }\n        }\n        Term::Def { def, nxt } => {\n          for rule in def.rules.iter_mut() {\n            let mut scope = HashMap::new();\n\n            for name in rule.pats.iter().flat_map(Pattern::binds) {\n              push_scope(name.as_ref(), &mut scope);\n            }\n\n            let res = rule.body.resolve_refs(def_names, main, &mut scope, info);\n            info.take_rule_err(res, def.name.clone());\n          }\n          nxt.resolve_refs(def_names, main, scope, info)?;\n        }\n        _ => {\n          for (child, binds) in self.children_mut_with_binds() {\n            for bind in binds.clone() {\n              push_scope(bind.as_ref(), scope);\n            }\n            child.resolve_refs(def_names, main, scope, info)?;\n            for bind in binds.rev() {\n              pop_scope(bind.as_ref(), scope);\n            }\n          }\n        }\n      }\n      Ok(())\n    })\n  }\n}\n\nfn push_scope<'a>(name: Option<&'a Name>, scope: &mut HashMap<&'a Name, usize>) {\n  if let Some(name) = name {\n    let var_scope = scope.entry(name).or_default();\n    *var_scope += 1;\n  }\n}\n\nfn pop_scope<'a>(name: Option<&'a Name>, scope: &mut HashMap<&'a Name, usize>) {\n  if let Some(name) = name {\n    let var_scope = scope.entry(name).or_default();\n    *var_scope -= 1;\n  }\n}\n\nfn is_var_in_scope<'a>(name: &'a Name, scope: &HashMap<&'a Name, usize>) -> bool {\n  match scope.get(name) {\n    Some(entry) => *entry == 0,\n    None => true,\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/resolve_type_ctrs.rs",
    "content": "use crate::{\n  diagnostics::Diagnostics,\n  fun::{Adts, Ctx, Type},\n  maybe_grow,\n};\n\nimpl Ctx<'_> {\n  /// Resolves type constructors in the book.\n  pub fn resolve_type_ctrs(&mut self) -> Result<(), Diagnostics> {\n    for def in self.book.defs.values_mut() {\n      let res = def.typ.resolve_type_ctrs(&self.book.adts);\n      self.info.take_rule_err(res, def.name.clone());\n    }\n\n    let adts = self.book.adts.clone();\n    for adt in self.book.adts.values_mut() {\n      for ctr in adt.ctrs.values_mut() {\n        let res = ctr.typ.resolve_type_ctrs(&adts);\n        self.info.take_rule_err(res, ctr.name.clone());\n        for field in ctr.fields.iter_mut() {\n          let res = field.typ.resolve_type_ctrs(&adts);\n          self.info.take_rule_err(res, ctr.name.clone());\n        }\n      }\n    }\n\n    self.info.fatal(())\n  }\n}\n\nimpl Type {\n  /// Resolves type constructors in the type.\n  pub fn resolve_type_ctrs(&mut self, adts: &Adts) -> Result<(), String> {\n    maybe_grow(|| {\n      match self {\n        Type::Var(nam) => {\n          // If the variable actually refers to a type, we change the type to a constructor.\n          if adts.contains_key(nam) {\n            *self = Type::Ctr(nam.clone(), vec![]);\n          }\n        }\n        Type::Ctr(name, args) => {\n          if !adts.contains_key(name) {\n            return Err(format!(\"Found unknown type constructor '{name}'.\"));\n          }\n          for arg in args {\n            arg.resolve_type_ctrs(adts)?;\n          }\n        }\n        Type::Tup(els) => {\n          for el in els {\n            el.resolve_type_ctrs(adts)?;\n          }\n        }\n        Type::Arr(lft, rgt) => {\n          lft.resolve_type_ctrs(adts)?;\n          rgt.resolve_type_ctrs(adts)?;\n        }\n        Type::Number(t) | Type::Integer(t) => t.resolve_type_ctrs(adts)?,\n        Type::Any | Type::Hole | Type::None | Type::U24 | Type::I24 | Type::F24 => {}\n      }\n      Ok(())\n    })\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/resugar_list.rs",
    "content": "use crate::{\n  fun::{builtins, Pattern, Tag, Term},\n  maybe_grow, AdtEncoding,\n};\n\nimpl Term {\n  /// Converts lambda-encoded lists ending with List/Nil to list literals.\n  pub fn resugar_lists(&mut self, adt_encoding: AdtEncoding) {\n    match adt_encoding {\n      AdtEncoding::Scott => self.resugar_lists_scott(),\n      AdtEncoding::NumScott => self.resugar_lists_num_scott(),\n    }\n  }\n\n  /// Converts num-scott-encoded lists ending with List/Nil to list literals.\n  fn resugar_lists_num_scott(&mut self) {\n    maybe_grow(|| {\n      // Search for a List/Cons pattern in the term and try to build a list from that point on.\n      // If successful, replace the term with the list.\n      // If not, keep as-is.\n\n      // Nil: List/nil\n      if let Term::Ref { nam } = self {\n        if nam == builtins::LNIL {\n          *self = Term::List { els: vec![] };\n        }\n      }\n      // Cons: @x (x CONS_TAG <term> <term>)\n      if let Term::Lam { tag: Tag::Static, pat, bod } = self {\n        if let Pattern::Var(Some(var_lam)) = pat.as_mut() {\n          if let Term::App { tag: Tag::Static, fun, arg: tail } = bod.as_mut() {\n            if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_mut() {\n              if let Term::App { tag: Tag::Static, fun, arg } = fun.as_mut() {\n                if let Term::Var { nam: var_app } = fun.as_mut() {\n                  if let Term::Ref { nam } = arg.as_mut() {\n                    if var_lam == var_app && nam == builtins::LCONS_TAG_REF {\n                      let l = build_list_num_scott(tail.as_mut(), vec![std::mem::take(head)]);\n                      match l {\n                        Ok(l) => *self = Term::List { els: l.into_iter().map(|x| *x).collect() },\n                        // Was not a list term, keep as-is.\n                        Err(mut l) => {\n                          *head = l.pop().unwrap();\n                          assert!(l.is_empty())\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n      // Cons: (List/Cons <term> <term>)\n      if let Term::App { tag: Tag::Static, fun, arg: tail } = self {\n        if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_mut() {\n          if let Term::Ref { nam } = fun.as_mut() {\n            if nam == builtins::LCONS {\n              let l = build_list_num_scott(tail.as_mut(), vec![std::mem::take(head)]);\n              match l {\n                Ok(l) => *self = Term::List { els: l.into_iter().map(|x| *x).collect() },\n                // Was not a list term, keep as-is.\n                Err(mut l) => {\n                  *head = l.pop().unwrap();\n                  assert!(l.is_empty())\n                }\n              }\n            }\n          }\n        }\n      }\n\n      for child in self.children_mut() {\n        child.resugar_lists_num_scott();\n      }\n    })\n  }\n\n  /// Converts scott-encoded lists ending with List/Nil to list literals.\n  fn resugar_lists_scott(&mut self) {\n    maybe_grow(|| {\n      // Search for a List/Cons pattern in the term and try to build a list from that point on.\n      // If successful, replace the term with the list.\n      // If not, keep as-is.\n\n      // Nil: List/nil\n      if let Term::Ref { nam } = self {\n        if nam == builtins::LNIL {\n          *self = Term::List { els: vec![] };\n        }\n      }\n      // Cons: @* @c (c <term> <term>)\n      if let Term::Lam { tag: Tag::Static, pat, bod } = self {\n        if let Pattern::Var(None) = pat.as_mut() {\n          if let Term::Lam { tag: Tag::Static, pat, bod } = bod.as_mut() {\n            if let Pattern::Var(Some(var_lam)) = pat.as_mut() {\n              if let Term::App { tag: Tag::Static, fun, arg: tail } = bod.as_mut() {\n                if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_mut() {\n                  if let Term::Var { nam: var_app } = fun.as_mut() {\n                    if var_lam == var_app {\n                      let l = build_list_scott(tail.as_mut(), vec![std::mem::take(head)]);\n                      match l {\n                        Ok(l) => *self = Term::List { els: l.into_iter().map(|x| *x).collect() },\n                        // Was not a list term, keep as-is.\n                        Err(mut l) => {\n                          *head = l.pop().unwrap();\n                          assert!(l.is_empty())\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n      // Cons: (List/Cons <term> <term>)\n      if let Term::App { tag: Tag::Static, fun, arg: tail } = self {\n        if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_mut() {\n          if let Term::Ref { nam } = fun.as_mut() {\n            if nam == builtins::LCONS {\n              let l = build_list_scott(tail.as_mut(), vec![std::mem::take(head)]);\n              match l {\n                Ok(l) => *self = Term::List { els: l.into_iter().map(|x| *x).collect() },\n                // Was not a list term, keep as-is.\n                Err(mut l) => {\n                  *head = l.pop().unwrap();\n                  assert!(l.is_empty())\n                }\n              }\n            }\n          }\n        }\n      }\n\n      for child in self.children_mut() {\n        child.resugar_lists_scott();\n      }\n    })\n  }\n}\n\n// TODO: We have to do weird manipulations with Box<Term> because of the borrow checker.\n// When we used use box patterns this was a way simpler match statement.\n#[allow(clippy::vec_box)]\nfn build_list_num_scott(term: &mut Term, mut l: Vec<Box<Term>>) -> Result<Vec<Box<Term>>, Vec<Box<Term>>> {\n  maybe_grow(|| {\n    // Nil: List/nil\n    if let Term::Ref { nam } = term {\n      if nam == builtins::LNIL {\n        return Ok(l);\n      }\n    }\n    // Cons: @x (x CONS_TAG <term> <term>)\n    if let Term::Lam { tag: Tag::Static, pat, bod } = term {\n      if let Pattern::Var(Some(var_lam)) = pat.as_mut() {\n        if let Term::App { tag: Tag::Static, fun, arg: tail } = bod.as_mut() {\n          if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_mut() {\n            if let Term::App { tag: Tag::Static, fun, arg } = fun.as_mut() {\n              if let Term::Var { nam: var_app } = fun.as_mut() {\n                if let Term::Ref { nam } = arg.as_mut() {\n                  if var_lam == var_app && nam == builtins::LCONS_TAG_REF {\n                    // New list element, append and recurse\n                    l.push(std::mem::take(head));\n                    let l = build_list_num_scott(tail, l);\n                    match l {\n                      Ok(l) => return Ok(l),\n                      Err(mut l) => {\n                        // If it wasn't a list, we have to put it back.\n                        *head = l.pop().unwrap();\n                        return Err(l);\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    // Cons: (List/Cons <term> <term>)\n    if let Term::App { tag: Tag::Static, fun, arg: tail } = term {\n      if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_mut() {\n        if let Term::Ref { nam } = fun.as_mut() {\n          if nam == builtins::LCONS {\n            // New list element, append and recurse\n            l.push(std::mem::take(head));\n            let l = build_list_num_scott(tail, l);\n            match l {\n              Ok(l) => return Ok(l),\n              Err(mut l) => {\n                // If it wasn't a list, we have to put it back.\n                *head = l.pop().unwrap();\n                return Err(l);\n              }\n            }\n          }\n        }\n      }\n    }\n    // Not a list term, stop\n    Err(l)\n  })\n}\n\n#[allow(clippy::vec_box)]\nfn build_list_scott(term: &mut Term, mut l: Vec<Box<Term>>) -> Result<Vec<Box<Term>>, Vec<Box<Term>>> {\n  maybe_grow(|| {\n    // Nil: List/nil\n    if let Term::Ref { nam } = term {\n      if nam == builtins::LNIL {\n        return Ok(l);\n      }\n    }\n    // Cons: @* @c (c <term> <term>)\n    if let Term::Lam { tag: Tag::Static, pat, bod } = term {\n      if let Pattern::Var(None) = pat.as_mut() {\n        if let Term::Lam { tag: Tag::Static, pat, bod } = bod.as_mut() {\n          if let Pattern::Var(Some(var_lam)) = pat.as_mut() {\n            if let Term::App { tag: Tag::Static, fun, arg: tail } = bod.as_mut() {\n              if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_mut() {\n                if let Term::Var { nam: var_app } = fun.as_mut() {\n                  if var_lam == var_app {\n                    // New list element, append and recurse\n                    l.push(std::mem::take(head));\n                    let l = build_list_scott(tail, l);\n                    match l {\n                      Ok(l) => return Ok(l),\n                      Err(mut l) => {\n                        // If it wasn't a list, we have to put it back.\n                        *head = l.pop().unwrap();\n                        return Err(l);\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    // Cons: (List/Cons <term> <term>)\n    if let Term::App { tag: Tag::Static, fun, arg: tail } = term {\n      if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_mut() {\n        if let Term::Ref { nam } = fun.as_mut() {\n          if nam == builtins::LCONS {\n            // New list element, append and recurse\n            l.push(std::mem::take(head));\n            let l = build_list_scott(tail, l);\n            match l {\n              Ok(l) => return Ok(l),\n              Err(mut l) => {\n                // If it wasn't a list, we have to put it back.\n                *head = l.pop().unwrap();\n                return Err(l);\n              }\n            }\n          }\n        }\n      }\n    }\n    // Not a list term, stop\n    Err(l)\n  })\n}\n"
  },
  {
    "path": "src/fun/transform/resugar_string.rs",
    "content": "use crate::{\n  fun::{builtins, Name, Num, Pattern, Tag, Term},\n  maybe_grow, AdtEncoding,\n};\n\nimpl Term {\n  /// Converts lambda-encoded strings ending with String/nil to string literals.\n  pub fn resugar_strings(&mut self, adt_encoding: AdtEncoding) {\n    match adt_encoding {\n      AdtEncoding::Scott => self.try_resugar_strings_with(Self::resugar_strings_scott),\n      AdtEncoding::NumScott => self.try_resugar_strings_with(Self::resugar_strings_num_scott),\n    }\n  }\n\n  /// Converts encoded strings to string literals using the provided extraction function.\n  fn try_resugar_strings_with(&mut self, extract_fn: fn(&Term) -> Option<(char, &Term)>) {\n    maybe_grow(|| {\n      // Try to resugar nil or cons patterns. If unsuccessful, recurse into child terms.\n      if !self.try_resugar_strings_nil() && !self.try_resugar_strings_cons(extract_fn) {\n        for child in self.children_mut() {\n          child.try_resugar_strings_with(extract_fn);\n        }\n      }\n    })\n  }\n\n  /// Attempts to resugar a nil term (String/nil) to an empty string literal.\n  fn try_resugar_strings_nil(&mut self) -> bool {\n    matches!(self, Term::Ref { nam } if nam == builtins::SNIL).then(|| *self = Term::str(\"\")).is_some()\n  }\n\n  /// Attempts to resugar a cons term to a string literal.\n  fn try_resugar_strings_cons(&mut self, extract_fn: fn(&Term) -> Option<(char, &Term)>) -> bool {\n    self\n      .try_resugar_strings_cons_with(extract_fn)\n      .or_else(|| self.try_resugar_strings_cons_common())\n      .map(|str| *self = Term::str(&str))\n      .is_some()\n  }\n\n  /// Attempts to resugar a cons term using the provided extraction function.\n  fn try_resugar_strings_cons_with(&self, extract_fn: fn(&Term) -> Option<(char, &Term)>) -> Option<String> {\n    extract_fn(self)\n      .and_then(|(head_char, tail)| Self::build_strings_common(tail, head_char.to_string(), extract_fn))\n  }\n\n  /// Attempts to resugar a cons term using the common extraction method.\n  fn try_resugar_strings_cons_common(&self) -> Option<String> {\n    if let Term::App { tag: Tag::Static, fun, arg: tail } = self {\n      if let Term::App { tag: Tag::Static, fun: inner_fun, arg: head } = fun.as_ref() {\n        if let (Term::Ref { nam }, Term::Num { val: Num::U24(head_val) }) =\n          (inner_fun.as_ref(), head.as_ref())\n        {\n          if nam == builtins::SCONS {\n            let head_char = char::from_u32(*head_val).unwrap_or(char::REPLACEMENT_CHARACTER);\n            return Self::build_strings_common(tail, head_char.to_string(), Self::extract_strings_common);\n          }\n        }\n      }\n    }\n    None\n  }\n\n  /// Builds a string from a term structure using the provided extraction function.\n  fn build_strings_common(\n    term: &Term,\n    mut s: String,\n    extract_fn: fn(&Term) -> Option<(char, &Term)>,\n  ) -> Option<String> {\n    maybe_grow(|| {\n      let mut current = term;\n      loop {\n        match current {\n          // If we reach a nil term, we've completed the string\n          Term::Ref { nam } if nam == builtins::SNIL => return Some(s),\n          _ => {\n            // Extract the next character and continue building the string\n            let (head, next) = extract_fn(current).or_else(|| Self::extract_strings_common(current))?;\n            s.push(head);\n            current = next;\n          }\n        }\n      }\n    })\n  }\n\n  /// Extracts a character and the remaining term from a Scott-encoded string term.\n  /// The structure of this function mimics the shape of the AST for easier visualization.\n  fn resugar_strings_scott(term: &Term) -> Option<(char, &Term)> {\n    if let Term::Lam { tag: Tag::Static, pat: outer_pat, bod } = term {\n      if let Pattern::Var(None) = outer_pat.as_ref() {\n        if let Term::Lam { tag: Tag::Static, pat: inner_pat, bod: inner_bod } = bod.as_ref() {\n          if let Pattern::Var(Some(var_lam)) = inner_pat.as_ref() {\n            if let Term::App { tag: Tag::Static, fun, arg: tail } = inner_bod.as_ref() {\n              if let Term::App { tag: Tag::Static, fun: inner_fun, arg: head } = fun.as_ref() {\n                if let (Term::Var { nam: var_app }, Term::Num { val: Num::U24(head_val) }) =\n                  (inner_fun.as_ref(), head.as_ref())\n                {\n                  if var_lam == var_app {\n                    let head_char = char::from_u32(*head_val).unwrap_or(char::REPLACEMENT_CHARACTER);\n                    return Some((head_char, tail));\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    None\n  }\n\n  /// Extracts a character and the remaining term from a NumScott-encoded string term.\n  /// The structure of this function mimics the shape of the AST for easier visualization.\n  fn resugar_strings_num_scott(term: &Term) -> Option<(char, &Term)> {\n    if let Term::Lam { tag: Tag::Static, pat, bod } = term {\n      if let Pattern::Var(Some(var_lam)) = pat.as_ref() {\n        if let Term::App { tag: Tag::Static, fun, arg: tail } = bod.as_ref() {\n          if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_ref() {\n            if let Term::App { tag: Tag::Static, fun, arg } = fun.as_ref() {\n              if let (\n                Term::Var { nam: var_app },\n                Term::Ref { nam: Name(ref_nam) },\n                Term::Num { val: Num::U24(head_val) },\n              ) = (fun.as_ref(), arg.as_ref(), head.as_ref())\n              {\n                if var_lam == var_app && ref_nam == builtins::SCONS_TAG_REF {\n                  let head_char = char::from_u32(*head_val).unwrap_or(char::REPLACEMENT_CHARACTER);\n                  return Some((head_char, tail));\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    None\n  }\n\n  /// Extracts a character and the remaining term from a common-encoded string term.\n  /// The structure of this function mimics the shape of the AST for easier visualization.\n  fn extract_strings_common(term: &Term) -> Option<(char, &Term)> {\n    if let Term::App { tag: Tag::Static, fun, arg: tail } = term {\n      if let Term::App { tag: Tag::Static, fun, arg: head } = fun.as_ref() {\n        if let (Term::Ref { nam }, Term::Num { val: Num::U24(head_val) }) = (fun.as_ref(), head.as_ref()) {\n          if nam == builtins::SCONS {\n            let head_char = char::from_u32(*head_val).unwrap_or(char::REPLACEMENT_CHARACTER);\n            return Some((head_char, tail));\n          }\n        }\n      }\n    }\n    None\n  }\n}\n"
  },
  {
    "path": "src/fun/transform/unique_names.rs",
    "content": "// Pass to give all variables in a definition unique names.\n\nuse crate::{\n  fun::{Book, Name, Term},\n  maybe_grow,\n};\nuse std::collections::HashMap;\n\nimpl Book {\n  /// Makes all variables in each definition have a new unique name.\n  /// Skips unbound variables.\n  /// Precondition: Definition references have been resolved.\n  pub fn make_var_names_unique(&mut self) {\n    for def in self.defs.values_mut() {\n      def.rule_mut().body.make_var_names_unique();\n    }\n  }\n}\n\nimpl Term {\n  pub fn make_var_names_unique(&mut self) {\n    UniqueNameGenerator::default().unique_names_in_term(self);\n  }\n}\n\ntype VarId = u64;\n\n#[derive(Default)]\npub struct UniqueNameGenerator {\n  name_map: HashMap<Name, Vec<VarId>>,\n  name_count: VarId,\n}\n\nimpl UniqueNameGenerator {\n  // Recursively assign an id to each variable in the term, then convert each id into a unique name.\n  pub fn unique_names_in_term(&mut self, term: &mut Term) {\n    // Note: we can't use the children iterators here because we mutate the binds,\n    // which are shared across multiple children.\n    maybe_grow(|| match term {\n      Term::Var { nam } => *nam = self.use_var(nam),\n\n      Term::Mat { bnd, arg, with_bnd, with_arg, arms }\n      | Term::Fold { bnd, arg, with_bnd, with_arg, arms } => {\n        // Process args\n        self.unique_names_in_term(arg);\n        for arg in with_arg {\n          self.unique_names_in_term(arg);\n        }\n\n        // Add binds shared by all arms\n        self.push(bnd.as_ref());\n        for bnd in with_bnd.iter() {\n          self.push(bnd.as_ref());\n        }\n\n        // Process arms\n        for arm in arms {\n          // Add binds unique to each arm\n          for bnd in arm.1.iter() {\n            self.push(bnd.as_ref());\n          }\n\n          // Process arm body\n          self.unique_names_in_term(&mut arm.2);\n\n          // Remove binds unique to each arm\n          for bnd in arm.1.iter_mut() {\n            *bnd = self.pop(bnd.as_ref());\n          }\n        }\n\n        // Remove binds shared by all arms\n        for bnd in with_bnd {\n          *bnd = self.pop(bnd.as_ref());\n        }\n        *bnd = self.pop(bnd.as_ref());\n      }\n\n      Term::Swt { bnd, arg, with_bnd, with_arg, pred, arms } => {\n        self.unique_names_in_term(arg);\n        for arg in with_arg {\n          self.unique_names_in_term(arg);\n        }\n\n        self.push(bnd.as_ref());\n        for bnd in with_bnd.iter() {\n          self.push(bnd.as_ref());\n        }\n\n        let (succ, nums) = arms.split_last_mut().unwrap();\n        for arm in nums.iter_mut() {\n          self.unique_names_in_term(arm);\n        }\n\n        self.push(pred.as_ref());\n        self.unique_names_in_term(succ);\n        *pred = self.pop(pred.as_ref());\n\n        for bnd in with_bnd {\n          *bnd = self.pop(bnd.as_ref());\n        }\n        *bnd = self.pop(bnd.as_ref());\n      }\n\n      Term::Bend { bnd, arg, cond, step, base } => {\n        for arg in arg {\n          self.unique_names_in_term(arg);\n        }\n        for bnd in bnd.iter() {\n          self.push(bnd.as_ref());\n        }\n        self.unique_names_in_term(cond);\n        self.unique_names_in_term(step);\n        self.unique_names_in_term(base);\n        for bnd in bnd {\n          *bnd = self.pop(bnd.as_ref());\n        }\n      }\n\n      Term::Let { pat, val, nxt } | Term::Ask { pat, val, nxt } => {\n        self.unique_names_in_term(val);\n        for bnd in pat.binds() {\n          self.push(bnd.as_ref());\n        }\n        self.unique_names_in_term(nxt);\n        for bind in pat.binds_mut() {\n          *bind = self.pop(bind.as_ref());\n        }\n      }\n      Term::Use { nam, val, nxt } => {\n        self.unique_names_in_term(val);\n        self.push(nam.as_ref());\n        self.unique_names_in_term(nxt);\n        *nam = self.pop(nam.as_ref());\n      }\n      Term::Lam { tag: _, pat, bod } => {\n        for bind in pat.binds() {\n          self.push(bind.as_ref());\n        }\n        self.unique_names_in_term(bod);\n        for bind in pat.binds_mut() {\n          *bind = self.pop(bind.as_ref());\n        }\n      }\n      Term::Fan { fan: _, tag: _, els } | Term::List { els } => {\n        for el in els {\n          self.unique_names_in_term(el);\n        }\n      }\n      Term::App { tag: _, fun: fst, arg: snd } | Term::Oper { opr: _, fst, snd } => {\n        self.unique_names_in_term(fst);\n        self.unique_names_in_term(snd);\n      }\n      Term::With { typ: _, bod } => {\n        self.unique_names_in_term(bod);\n      }\n      Term::Link { .. }\n      | Term::Num { .. }\n      | Term::Nat { .. }\n      | Term::Str { .. }\n      | Term::Ref { .. }\n      | Term::Era\n      | Term::Err => {}\n      Term::Open { .. } => unreachable!(\"'open' should be removed in earlier pass\"),\n      Term::Def { .. } => unreachable!(\"'def' should be removed in earlier pass\"),\n    })\n  }\n\n  fn push(&mut self, nam: Option<&Name>) {\n    if let Some(name) = nam {\n      if let Some(ids) = self.name_map.get_mut(name) {\n        ids.push(self.name_count);\n      } else {\n        self.name_map.insert(name.clone(), vec![self.name_count]);\n      }\n      self.name_count += 1;\n    }\n  }\n\n  fn pop(&mut self, nam: Option<&Name>) -> Option<Name> {\n    if let Some(name) = nam {\n      let var_id = self.name_map.get_mut(name).unwrap().pop().unwrap();\n      if self.name_map[name].is_empty() {\n        self.name_map.remove(name);\n      }\n      Some(Name::from(var_id))\n    } else {\n      None\n    }\n  }\n\n  fn use_var(&self, nam: &Name) -> Name {\n    if let Some(vars) = self.name_map.get(nam) {\n      let var_id = *vars.last().unwrap();\n      Name::from(var_id)\n    } else {\n      // Skip unbound variables.\n      // With this, we can use this function before checking for unbound vars.\n      nam.clone()\n    }\n  }\n}\n"
  },
  {
    "path": "src/hvm/add_recursive_priority.rs",
    "content": "use super::tree_children;\nuse crate::maybe_grow;\nuse hvm::ast::{Book, Net, Tree};\nuse std::collections::{HashMap, HashSet};\n\npub fn add_recursive_priority(book: &mut Book) {\n  // Direct dependencies\n  let deps = book.defs.iter().map(|(nam, net)| (nam.clone(), dependencies(net))).collect::<HashMap<_, _>>();\n  // Recursive cycles\n  let cycles = cycles(&deps);\n\n  for cycle in cycles {\n    // For each function in the cycle, if there are redexes with the\n    // next ref in the cycle, add a priority to one of those redexes.\n    for i in 0..cycle.len() {\n      let cur = book.defs.get_mut(&cycle[i]).unwrap();\n      let nxt = &cycle[(i + 1) % cycle.len()];\n      add_priority_next_in_cycle(cur, nxt);\n    }\n  }\n}\n\nfn add_priority_next_in_cycle(net: &mut Net, nxt: &String) {\n  let mut count = 0;\n\n  // Count the number of recursive refs\n  for (_, a, b) in net.rbag.iter() {\n    if let Tree::Ref { nam } = a {\n      if nam == nxt {\n        count += 1;\n      }\n    }\n    if let Tree::Ref { nam } = b {\n      if nam == nxt {\n        count += 1;\n      }\n    }\n  }\n\n  // If there are more than one recursive ref, add a priority to them.\n  if count > 1 {\n    for (pri, a, b) in net.rbag.iter_mut().rev() {\n      if let Tree::Ref { nam } = a {\n        if nam == nxt {\n          *pri = true;\n        }\n      }\n      if let Tree::Ref { nam } = b {\n        if nam == nxt {\n          *pri = true;\n        }\n      }\n    }\n  }\n}\n\ntype DepGraph = HashMap<String, HashSet<String>>;\ntype Cycles = Vec<Vec<String>>;\n\n/// Find all cycles in the dependency graph.\npub fn cycles(deps: &DepGraph) -> Cycles {\n  let mut cycles = vec![];\n  let mut stack = vec![];\n  let mut visited = HashSet::new();\n  for nam in deps.keys() {\n    if !visited.contains(nam) {\n      find_cycles(deps, nam, &mut visited, &mut stack, &mut cycles);\n    }\n  }\n  cycles\n}\n\nfn find_cycles(\n  deps: &DepGraph,\n  nam: &String,\n  visited: &mut HashSet<String>,\n  stack: &mut Vec<String>,\n  cycles: &mut Cycles,\n) {\n  maybe_grow(|| {\n    // Check if the current ref is already in the stack, which indicates a cycle.\n    if let Some(cycle_start) = stack.iter().position(|n| n == nam) {\n      // If found, add the cycle to the cycles vector.\n      cycles.push(stack[cycle_start..].to_vec());\n      return;\n    }\n    // If the ref has not been visited yet, mark it as visited.\n    if visited.insert(nam.clone()) {\n      // Add the current ref to the stack to keep track of the path.\n      stack.push(nam.clone());\n      // Get the dependencies of the current ref.\n      if let Some(dependencies) = deps.get(nam) {\n        // Search for cycles from each dependency.\n        for dep in dependencies {\n          find_cycles(deps, dep, visited, stack, cycles);\n        }\n      }\n      stack.pop();\n    }\n  })\n}\n\n/// Gather the set of net that this net directly depends on (has a ref in the net).\nfn dependencies(net: &Net) -> HashSet<String> {\n  let mut deps = HashSet::new();\n  dependencies_tree(&net.root, &mut deps);\n  for (_, a, b) in &net.rbag {\n    dependencies_tree(a, &mut deps);\n    dependencies_tree(b, &mut deps);\n  }\n  deps\n}\n\nfn dependencies_tree(tree: &Tree, deps: &mut HashSet<String>) {\n  if let Tree::Ref { nam, .. } = tree {\n    deps.insert(nam.clone());\n  } else {\n    for subtree in tree_children(tree) {\n      dependencies_tree(subtree, deps);\n    }\n  }\n}\n"
  },
  {
    "path": "src/hvm/check_net_size.rs",
    "content": "use super::tree_children;\nuse crate::{diagnostics::Diagnostics, fun::Name, CompilerTarget};\nuse hvm::ast::{Book, Net, Tree};\n\npub const MAX_NET_SIZE_C: usize = 4095;\npub const MAX_NET_SIZE_CUDA: usize = 64;\n\npub fn check_net_sizes(\n  book: &Book,\n  diagnostics: &mut Diagnostics,\n  target: &CompilerTarget,\n) -> Result<(), Diagnostics> {\n  let (net_size_bound, target_lang) = match target {\n    CompilerTarget::Cuda => (MAX_NET_SIZE_CUDA, \"Cuda\"),\n    _ => (MAX_NET_SIZE_C, \"C\"),\n  };\n  for (name, net) in &book.defs {\n    let nodes = count_nodes(net);\n    if nodes > net_size_bound {\n      diagnostics.add_function_error(\n        format!(\"Definition is too large for HVM {target_lang} (size={nodes}, max size={net_size_bound}). Please break it into smaller pieces.\"),\n        Name::new(name),\n        Default::default()\n      );\n    }\n  }\n\n  diagnostics.fatal(())\n}\n\n/// Utility function to count the amount of nodes in an hvm-core AST net\npub fn count_nodes(net: &Net) -> usize {\n  let mut visit: Vec<&Tree> = vec![&net.root];\n  let mut count = 0usize;\n  for (_, l, r) in &net.rbag {\n    visit.push(l);\n    visit.push(r);\n  }\n  while let Some(tree) = visit.pop() {\n    // If it is not 0-ary, then we'll count it as a node.\n    if tree_children(tree).next().is_some() {\n      count += 1;\n    }\n    for subtree in tree_children(tree) {\n      visit.push(subtree);\n    }\n  }\n  count\n}\n"
  },
  {
    "path": "src/hvm/eta_reduce.rs",
    "content": "//! Carries out simple eta-reduction, to reduce the amount of rewrites at\n//! runtime.\n//!\n//! ### Eta-equivalence\n//!\n//! In interaction combinators, there are some nets that are equivalent and\n//! have no observable difference\n//!\n//! ![Image of eta-equivalence](https://i.postimg.cc/XYVxdMFW/image.png)\n//!\n//! This module implements the eta-equivalence rule at the top-left of the image\n//! above\n//!\n//! ```txt\n//!     /|-, ,-|\\     eta_reduce\n//! ---| |  X  | |-- ~~~~~~~~~~~~> -------------\n//!     \\|-' '-|/\n//! ```\n//!\n//! In hvm-core's AST representation, this reduction looks like this\n//!\n//! ```txt\n//! {lab x y} ... {lab x y} ~~~~~~~~> x ..... x\n//! ```\n//!\n//! Essentially, both occurrences of the same constructor are replaced by a\n//! variable.\n//!\n//! ### The algorithm\n//!\n//! The code uses a two-pass O(n) algorithm, where `n` is the amount of nodes\n//! in the AST\n//!\n//! In the first pass, a node-list is built out of an ordered traversal of the\n//! AST. Crucially, the node list stores variable offsets instead of the\n//! variable's names Since the AST's order is consistent, the ordering of nodes\n//! in the node list can be reproduced with a traversal.\n//!\n//! This means that each occurrence of a variable is encoded with the offset in\n//! the node-list to the _other_ occurrence of the variable.\n//!\n//! For example, if we start with the net: `[(x y) (x y)]`\n//!\n//! The resulting node list will look like this:\n//!\n//! `[Ctr(1), Ctr(0), Var(3), Var(3), Ctr(0), Var(-3), Var(-3)]`\n//!\n//! The second pass uses the node list to find repeated constructors. If a\n//! constructor's children are both variables with the same offset, then we\n//! lookup that offset relative to the constructor. If it is equal to the first\n//! constructor, it means both of them are equal and they can be replaced with a\n//! variable.\n//!\n//! The pass also reduces subnets such as `(* *) -> *`\n\nuse crate::hvm::net_trees_mut;\n\nuse super::{tree_children, tree_children_mut};\nuse core::ops::RangeFrom;\nuse hvm::ast::{Net, Tree};\nuse std::collections::HashMap;\n\n/// Carries out simple eta-reduction\npub fn eta_reduce_hvm_net(net: &mut Net) {\n  let mut phase1 = Phase1::default();\n  for tree in net_trees_mut(net) {\n    phase1.walk_tree(tree);\n  }\n  let mut phase2 = Phase2 { nodes: phase1.nodes, index: 0.. };\n  for tree in net_trees_mut(net) {\n    phase2.reduce_tree(tree);\n  }\n}\n\n#[derive(Debug, Clone, Copy, PartialEq, Eq)]\nenum NodeType {\n  Ctr(u16),\n  Var(isize),\n  Era,\n  Other,\n  Hole,\n}\n\n#[derive(Default, Debug)]\nstruct Phase1<'a> {\n  vars: HashMap<&'a str, usize>,\n  nodes: Vec<NodeType>,\n}\n\nimpl<'a> Phase1<'a> {\n  fn walk_tree(&mut self, tree: &'a Tree) {\n    match tree {\n      Tree::Con { fst, snd } => {\n        self.nodes.push(NodeType::Ctr(0));\n        self.walk_tree(fst);\n        self.walk_tree(snd);\n      }\n      Tree::Dup { fst, snd } => {\n        self.nodes.push(NodeType::Ctr(1));\n        self.walk_tree(fst);\n        self.walk_tree(snd);\n      }\n      Tree::Var { nam } => {\n        if let Some(i) = self.vars.get(&**nam) {\n          let j = self.nodes.len() as isize;\n          self.nodes.push(NodeType::Var(*i as isize - j));\n          self.nodes[*i] = NodeType::Var(j - *i as isize);\n        } else {\n          self.vars.insert(nam, self.nodes.len());\n          self.nodes.push(NodeType::Hole);\n        }\n      }\n      Tree::Era => self.nodes.push(NodeType::Era),\n      _ => {\n        self.nodes.push(NodeType::Other);\n        for i in tree_children(tree) {\n          self.walk_tree(i);\n        }\n      }\n    }\n  }\n}\n\nstruct Phase2 {\n  nodes: Vec<NodeType>,\n  index: RangeFrom<usize>,\n}\n\nimpl Phase2 {\n  fn reduce_ctr(&mut self, tree: &mut Tree, idx: usize) -> NodeType {\n    if let Tree::Con { fst, snd } | Tree::Dup { fst, snd } = tree {\n      let fst_typ = self.reduce_tree(fst);\n      let snd_typ = self.reduce_tree(snd);\n      // If both children are variables with the same offset, and their parent is a ctr of the same label,\n      // then they are eta-reducible and we replace the current node with the first variable.\n      match (fst_typ, snd_typ) {\n        (NodeType::Var(off_lft), NodeType::Var(off_rgt)) => {\n          if off_lft == off_rgt && self.nodes[idx] == self.nodes[(idx as isize + off_lft) as usize] {\n            let Tree::Var { nam } = fst.as_mut() else { unreachable!() };\n            *tree = Tree::Var { nam: std::mem::take(nam) };\n            return NodeType::Var(off_lft);\n          }\n        }\n        (NodeType::Era, NodeType::Era) => {\n          *tree = Tree::Era;\n          return NodeType::Era;\n        }\n        _ => {}\n      }\n      self.nodes[idx]\n    } else {\n      unreachable!()\n    }\n  }\n\n  fn reduce_tree(&mut self, tree: &mut Tree) -> NodeType {\n    let idx = self.index.next().unwrap();\n    match tree {\n      Tree::Con { .. } | Tree::Dup { .. } => self.reduce_ctr(tree, idx),\n      _ => {\n        for child in tree_children_mut(tree) {\n          self.reduce_tree(child);\n        }\n        self.nodes[idx]\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/hvm/inline.rs",
    "content": "use super::{net_trees_mut, tree_children, tree_children_mut};\nuse crate::maybe_grow;\nuse core::ops::BitOr;\nuse hvm::ast::{Book, Net, Tree};\nuse std::collections::{HashMap, HashSet};\n\npub fn inline_hvm_book(book: &mut Book) -> Result<HashSet<String>, String> {\n  let mut state = InlineState::default();\n  state.populate_inlinees(book)?;\n  let mut all_changed = HashSet::new();\n  for (name, net) in &mut book.defs {\n    let mut inlined = false;\n    for tree in net_trees_mut(net) {\n      inlined |= state.inline_into(tree);\n    }\n    if inlined {\n      all_changed.insert(name.to_owned());\n    }\n  }\n  Ok(all_changed)\n}\n\n#[derive(Debug, Default)]\nstruct InlineState {\n  inlinees: HashMap<String, Tree>,\n}\n\nimpl InlineState {\n  fn populate_inlinees(&mut self, book: &Book) -> Result<(), String> {\n    for (name, net) in &book.defs {\n      if should_inline(net) {\n        // Detect cycles with tortoise and hare algorithm\n        let mut hare = &net.root;\n        let mut tortoise = &net.root;\n        // Whether or not the tortoise should take a step\n        let mut parity = false;\n        while let Tree::Ref { nam, .. } = hare {\n          let Some(net) = &book.defs.get(nam) else { break };\n          if should_inline(net) {\n            hare = &net.root;\n          } else {\n            break;\n          }\n          if parity {\n            let Tree::Ref { nam: tortoise_nam, .. } = tortoise else { unreachable!() };\n            if tortoise_nam == nam {\n              Err(format!(\"infinite reference cycle in `@{nam}`\"))?;\n            }\n            tortoise = &book.defs[tortoise_nam].root;\n          }\n          parity = !parity;\n        }\n        self.inlinees.insert(name.to_owned(), hare.clone());\n      }\n    }\n    Ok(())\n  }\n  fn inline_into(&self, tree: &mut Tree) -> bool {\n    maybe_grow(|| {\n      let Tree::Ref { nam, .. } = &*tree else {\n        return tree_children_mut(tree).map(|t| self.inline_into(t)).fold(false, bool::bitor);\n      };\n      if let Some(inlined) = self.inlinees.get(nam) {\n        *tree = inlined.clone();\n        true\n      } else {\n        false\n      }\n    })\n  }\n}\n\nfn should_inline(net: &Net) -> bool {\n  net.rbag.is_empty() && tree_children(&net.root).next().is_none()\n}\n"
  },
  {
    "path": "src/hvm/mod.rs",
    "content": "use crate::multi_iterator;\nuse hvm::ast::{Net, Tree};\n\npub mod add_recursive_priority;\npub mod check_net_size;\npub mod eta_reduce;\npub mod inline;\npub mod mutual_recursion;\npub mod prune;\n\npub fn tree_children(tree: &Tree) -> impl DoubleEndedIterator<Item = &Tree> + Clone {\n  multi_iterator!(ChildrenIter { Zero, Two });\n  match tree {\n    Tree::Var { .. } | Tree::Ref { .. } | Tree::Era | Tree::Num { .. } => ChildrenIter::Zero([]),\n    Tree::Con { fst, snd } | Tree::Dup { fst, snd } | Tree::Opr { fst, snd } | Tree::Swi { fst, snd } => {\n      ChildrenIter::Two([fst.as_ref(), snd.as_ref()])\n    }\n  }\n}\n\npub fn tree_children_mut(tree: &mut Tree) -> impl DoubleEndedIterator<Item = &mut Tree> {\n  multi_iterator!(ChildrenIter { Zero, Two });\n  match tree {\n    Tree::Var { .. } | Tree::Ref { .. } | Tree::Era | Tree::Num { .. } => ChildrenIter::Zero([]),\n    Tree::Con { fst, snd } | Tree::Dup { fst, snd } | Tree::Opr { fst, snd } | Tree::Swi { fst, snd } => {\n      ChildrenIter::Two([fst.as_mut(), snd.as_mut()])\n    }\n  }\n}\n\npub fn net_trees(net: &Net) -> impl DoubleEndedIterator<Item = &Tree> + Clone {\n  [&net.root].into_iter().chain(net.rbag.iter().flat_map(|(_, fst, snd)| [fst, snd]))\n}\n\npub fn net_trees_mut(net: &mut Net) -> impl DoubleEndedIterator<Item = &mut Tree> {\n  [&mut net.root].into_iter().chain(net.rbag.iter_mut().flat_map(|(_, fst, snd)| [fst, snd]))\n}\n\npub fn hvm_book_show_pretty(book: &hvm::ast::Book) -> String {\n  let mut s = String::new();\n  for (nam, def) in book.defs.iter() {\n    s.push_str(&format!(\"@{} = {}\\n\", nam, def.root.show()));\n    for (pri, a, b) in def.rbag.iter() {\n      s.push_str(\"  &\");\n      if *pri {\n        s.push('!');\n      } else {\n        s.push(' ');\n      }\n      s.push_str(&a.show());\n      s.push_str(\" ~ \");\n      s.push_str(&b.show());\n      s.push('\\n');\n    }\n    s.push('\\n');\n  }\n  s\n}\n"
  },
  {
    "path": "src/hvm/mutual_recursion.message",
    "content": "\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n{cycles}\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n"
  },
  {
    "path": "src/hvm/mutual_recursion.rs",
    "content": "use super::tree_children;\nuse crate::{\n  diagnostics::{Diagnostics, WarningType, ERR_INDENT_SIZE},\n  fun::transform::definition_merge::MERGE_SEPARATOR,\n  maybe_grow,\n};\nuse hvm::ast::{Book, Tree};\nuse indexmap::{IndexMap, IndexSet};\nuse std::fmt::Debug;\n\ntype Ref = String;\ntype Stack<T> = Vec<T>;\ntype RefSet = IndexSet<Ref>;\n\n#[derive(Default)]\npub struct Graph(IndexMap<Ref, RefSet>);\n\npub fn check_cycles(book: &Book, diagnostics: &mut Diagnostics) -> Result<(), Diagnostics> {\n  let graph = Graph::from(book);\n  let cycles = graph.cycles();\n\n  if !cycles.is_empty() {\n    let msg = format!(include_str!(\"mutual_recursion.message\"), cycles = show_cycles(cycles));\n    diagnostics.add_book_warning(msg.as_str(), WarningType::RecursionCycle);\n  }\n\n  diagnostics.fatal(())\n}\nfn show_cycles(mut cycles: Vec<Vec<Ref>>) -> String {\n  let tail = if cycles.len() > 5 {\n    format!(\"\\n{:ERR_INDENT_SIZE$}and {} other cycles...\", \"\", cycles.len() - 5)\n  } else {\n    String::new()\n  };\n\n  cycles = cycles.into_iter().flat_map(combinations_from_merges).collect::<Vec<_>>();\n\n  let mut cycles = cycles\n    .iter()\n    .take(5)\n    .map(|cycle| {\n      let cycle_str = cycle\n        .iter()\n        .filter(|nam| !nam.contains(\"__C\"))\n        .chain(cycle.first())\n        .cloned()\n        .collect::<Vec<_>>()\n        .join(\" -> \");\n      format!(\"{:ERR_INDENT_SIZE$}* {}\", \"\", cycle_str)\n    })\n    .collect::<Vec<String>>()\n    .join(\"\\n\");\n\n  cycles.push_str(&tail);\n\n  cycles\n}\n\nimpl Graph {\n  pub fn cycles(&self) -> Vec<Vec<Ref>> {\n    let mut cycles = Vec::new();\n    let mut stack = Stack::new();\n    let mut visited = RefSet::new();\n\n    for r#ref in self.0.keys() {\n      if !visited.contains(r#ref) {\n        self.find_cycles(r#ref, &mut visited, &mut stack, &mut cycles);\n      }\n    }\n\n    cycles\n  }\n\n  fn find_cycles(\n    &self,\n    r#ref: &Ref,\n    visited: &mut RefSet,\n    stack: &mut Stack<Ref>,\n    cycles: &mut Vec<Vec<Ref>>,\n  ) {\n    // Check if the current ref is already in the stack, which indicates a cycle.\n    if let Some(cycle_start) = stack.iter().position(|n| n == r#ref) {\n      // If found, add the cycle to the cycles vector.\n      cycles.push(stack[cycle_start..].to_vec());\n      return;\n    }\n\n    // If the ref has not been visited yet, mark it as visited.\n    if visited.insert(r#ref.clone()) {\n      // Add the current ref to the stack to keep track of the path.\n      stack.push(r#ref.clone());\n\n      // Get the dependencies of the current ref.\n      if let Some(dependencies) = self.get(r#ref) {\n        // Search for cycles from each dependency.\n        for dep in dependencies {\n          self.find_cycles(dep, visited, stack, cycles);\n        }\n      }\n\n      stack.pop();\n    }\n  }\n}\n\n/// Collect active refs from the tree.\nfn collect_refs(current: Ref, tree: &Tree, graph: &mut Graph) {\n  maybe_grow(|| match tree {\n    Tree::Ref { nam, .. } => graph.add(current, nam.clone()),\n    Tree::Con { fst: _, snd } => collect_refs(current.clone(), snd, graph),\n    tree => {\n      for subtree in tree_children(tree) {\n        collect_refs(current.clone(), subtree, graph);\n      }\n    }\n  });\n}\n\nimpl From<&Book> for Graph {\n  fn from(book: &Book) -> Self {\n    let mut graph = Self::new();\n\n    for (r#ref, net) in book.defs.iter() {\n      // Collect active refs from the root.\n      collect_refs(r#ref.clone(), &net.root, &mut graph);\n\n      // Collect active refs from redexes.\n      for (_, left, right) in net.rbag.iter() {\n        if let Tree::Ref { nam, .. } = left {\n          graph.add(r#ref.clone(), nam.clone());\n        }\n        if let Tree::Ref { nam, .. } = right {\n          graph.add(r#ref.clone(), nam.clone());\n        }\n      }\n    }\n\n    graph\n  }\n}\n\nimpl Graph {\n  pub fn new() -> Self {\n    Self::default()\n  }\n\n  pub fn add(&mut self, r#ref: Ref, dependency: Ref) {\n    self.0.entry(r#ref).or_default().insert(dependency.clone());\n    self.0.entry(dependency).or_default();\n  }\n\n  pub fn get(&self, r#ref: &Ref) -> Option<&RefSet> {\n    self.0.get(r#ref)\n  }\n}\n\nimpl Debug for Graph {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    write!(f, \"Graph{:?}\", self.0)\n  }\n}\n\nfn combinations_from_merges(cycle: Vec<Ref>) -> Vec<Vec<Ref>> {\n  let mut combinations: Vec<Vec<Ref>> = vec![vec![]];\n  for r#ref in cycle {\n    if let Some(index) = r#ref.find(MERGE_SEPARATOR) {\n      let (left, right) = r#ref.split_at(index);\n      let right = &right[MERGE_SEPARATOR.len()..]; // skip merge separator\n      let mut new_combinations = Vec::new();\n      for combination in &combinations {\n        let mut left_comb = combination.clone();\n        left_comb.push(left.to_string());\n        new_combinations.push(left_comb);\n\n        let mut right_comb = combination.clone();\n        right_comb.push(right.to_string());\n        new_combinations.push(right_comb);\n      }\n      combinations = new_combinations;\n    } else {\n      for combination in &mut combinations {\n        combination.push(r#ref.clone());\n      }\n    }\n  }\n  combinations\n}\n"
  },
  {
    "path": "src/hvm/prune.rs",
    "content": "use super::{net_trees, tree_children};\nuse crate::maybe_grow;\nuse hvm::ast::{Book, Tree};\nuse std::collections::HashSet;\n\npub fn prune_hvm_book(book: &mut Book, entrypoints: &[String]) {\n  let mut state = PruneState { book, unvisited: book.defs.keys().map(|x| x.to_owned()).collect() };\n  for name in entrypoints {\n    state.visit_def(name);\n  }\n  let unvisited = state.unvisited;\n  for name in unvisited {\n    book.defs.remove(&name);\n  }\n}\n\nstruct PruneState<'a> {\n  book: &'a Book,\n  unvisited: HashSet<String>,\n}\n\nimpl PruneState<'_> {\n  fn visit_def(&mut self, name: &str) {\n    if self.unvisited.remove(name) {\n      for tree in net_trees(&self.book.defs[name]) {\n        self.visit_tree(tree);\n      }\n    }\n  }\n  fn visit_tree(&mut self, tree: &Tree) {\n    maybe_grow(|| {\n      if let Tree::Ref { nam, .. } = tree {\n        self.visit_def(nam);\n      } else {\n        tree_children(tree).for_each(|t| self.visit_tree(t));\n      }\n    })\n  }\n}\n"
  },
  {
    "path": "src/imp/gen_map_get.rs",
    "content": "use crate::fun::Name;\n\nuse super::{AssignPattern, Definition, Expr, Stmt};\n\nimpl Definition {\n  /// Generates a map from `Stmt` to `Substitutions` for each definition in the program.\n  /// Iterates over all definitions in the program and applies `gen_map_get` to their bodies.\n  /// It replaces `Expr::MapGet` expressions with variable accesses, introducing\n  /// new variables as necessary to hold intermediate results from map accesses.\n  pub fn gen_map_get(&mut self) {\n    self.body.gen_map_get(&mut 0);\n  }\n}\n\nimpl Stmt {\n  fn gen_map_get(&mut self, id: &mut usize) {\n    match self {\n      Stmt::LocalDef { def, nxt } => {\n        nxt.gen_map_get(id);\n        def.gen_map_get()\n      }\n      Stmt::Assign { pat, val, nxt } => {\n        let key_substitutions =\n          if let AssignPattern::MapSet(_, key) = pat { key.substitute_map_gets(id) } else { Vec::new() };\n\n        if let Some(nxt) = nxt {\n          nxt.gen_map_get(id);\n        }\n\n        let substitutions = val.substitute_map_gets(id);\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n\n        if !key_substitutions.is_empty() {\n          *self = gen_get(self, key_substitutions);\n        }\n      }\n      Stmt::Ask { pat: _, val, nxt } => {\n        if let Some(nxt) = nxt {\n          nxt.gen_map_get(id);\n        }\n        let substitutions = val.substitute_map_gets(id);\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n      }\n      Stmt::InPlace { op: _, pat, val, nxt } => {\n        let key_substitutions = if let AssignPattern::MapSet(_, key) = &mut **pat {\n          key.substitute_map_gets(id)\n        } else {\n          Vec::new()\n        };\n\n        nxt.gen_map_get(id);\n\n        let substitutions = val.substitute_map_gets(id);\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n\n        if !key_substitutions.is_empty() {\n          *self = gen_get(self, key_substitutions);\n        }\n      }\n      Stmt::If { cond, then, otherwise, nxt } => {\n        then.gen_map_get(id);\n        otherwise.gen_map_get(id);\n        if let Some(nxt) = nxt {\n          nxt.gen_map_get(id);\n        }\n        let substitutions = cond.substitute_map_gets(id);\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n      }\n      Stmt::Match { bnd: _, arg, with_bnd: _, with_arg, arms, nxt }\n      | Stmt::Fold { bnd: _, arg, arms, with_bnd: _, with_arg, nxt } => {\n        for arm in arms.iter_mut() {\n          arm.rgt.gen_map_get(id);\n        }\n        if let Some(nxt) = nxt {\n          nxt.gen_map_get(id);\n        }\n        let mut substitutions = arg.substitute_map_gets(id);\n        for arg in with_arg {\n          substitutions.extend(arg.substitute_map_gets(id));\n        }\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n      }\n      Stmt::Switch { bnd: _, arg, with_bnd: _, with_arg, arms, nxt } => {\n        for arm in arms.iter_mut() {\n          arm.gen_map_get(id);\n        }\n        if let Some(nxt) = nxt {\n          nxt.gen_map_get(id);\n        }\n        let mut substitutions = arg.substitute_map_gets(id);\n        for arg in with_arg {\n          substitutions.extend(arg.substitute_map_gets(id));\n        }\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n      }\n      Stmt::Bend { bnd: _, arg: init, cond, step, base, nxt } => {\n        step.gen_map_get(id);\n        base.gen_map_get(id);\n        if let Some(nxt) = nxt {\n          nxt.gen_map_get(id);\n        }\n        let mut substitutions = cond.substitute_map_gets(id);\n        for init in init {\n          substitutions.extend(init.substitute_map_gets(id));\n        }\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n      }\n      Stmt::With { typ: _, bod, nxt } => {\n        bod.gen_map_get(id);\n        if let Some(nxt) = nxt {\n          nxt.gen_map_get(id);\n        }\n      }\n      Stmt::Return { term } => {\n        let substitutions = term.substitute_map_gets(id);\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n      }\n      Stmt::Open { typ: _, var: _, nxt } => {\n        nxt.gen_map_get(id);\n      }\n      Stmt::Use { nam: _, val: bod, nxt } => {\n        nxt.gen_map_get(id);\n        let substitutions = bod.substitute_map_gets(id);\n        if !substitutions.is_empty() {\n          *self = gen_get(self, substitutions);\n        }\n      }\n      Stmt::Err => {}\n    }\n  }\n}\n\ntype Substitutions = Vec<(Name, Name, Box<Expr>)>;\n\nimpl Expr {\n  fn substitute_map_gets(&mut self, id: &mut usize) -> Substitutions {\n    fn go(e: &mut Expr, substitutions: &mut Substitutions, id: &mut usize) {\n      match e {\n        Expr::MapGet { nam, key } => {\n          go(key, substitutions, id);\n          let new_var = gen_map_var(id);\n          substitutions.push((new_var.clone(), nam.clone(), key.clone()));\n          *e = Expr::Var { nam: new_var };\n        }\n        Expr::Call { fun, args, kwargs } => {\n          go(fun, substitutions, id);\n          for arg in args {\n            go(arg, substitutions, id);\n          }\n          for (_, arg) in kwargs {\n            go(arg, substitutions, id);\n          }\n        }\n        Expr::Lam { bod, .. } => {\n          go(bod, substitutions, id);\n        }\n        Expr::Opr { lhs, rhs, .. } => {\n          go(lhs, substitutions, id);\n          go(rhs, substitutions, id);\n        }\n        Expr::Lst { els } | Expr::Tup { els } | Expr::Sup { els } => {\n          for el in els {\n            go(el, substitutions, id);\n          }\n        }\n        Expr::Ctr { kwargs, .. } => {\n          for (_, arg) in kwargs.iter_mut() {\n            go(arg, substitutions, id);\n          }\n        }\n        Expr::LstMap { term, iter, cond, .. } => {\n          go(term, substitutions, id);\n          go(iter, substitutions, id);\n          if let Some(cond) = cond {\n            go(cond, substitutions, id);\n          }\n        }\n        Expr::Map { entries } => {\n          for (_, entry) in entries {\n            go(entry, substitutions, id);\n          }\n        }\n        Expr::TreeNode { left, right } => {\n          go(left, substitutions, id);\n          go(right, substitutions, id);\n        }\n        Expr::TreeLeaf { val } => {\n          go(val, substitutions, id);\n        }\n        Expr::Era | Expr::Str { .. } | Expr::Var { .. } | Expr::Chn { .. } | Expr::Num { .. } => {}\n      }\n    }\n    let mut substitutions = Substitutions::new();\n    go(self, &mut substitutions, id);\n    substitutions\n  }\n}\n\nfn gen_get(current: &mut Stmt, substitutions: Substitutions) -> Stmt {\n  substitutions.into_iter().rfold(std::mem::take(current), |acc, next| {\n    let (var, map_var, key) = next;\n    let map_get_call = Expr::Var { nam: Name::new(\"Map/get\") };\n    let map_get_call = Expr::Call {\n      fun: Box::new(map_get_call),\n      args: vec![Expr::Var { nam: map_var.clone() }, *key],\n      kwargs: Vec::new(),\n    };\n    let pat = AssignPattern::Tup(vec![AssignPattern::Var(var), AssignPattern::Var(map_var)]);\n\n    Stmt::Assign { pat, val: Box::new(map_get_call), nxt: Some(Box::new(acc)) }\n  })\n}\n\nfn gen_map_var(id: &mut usize) -> Name {\n  let name = Name::new(format!(\"map/get%{}\", id));\n  *id += 1;\n  name\n}\n"
  },
  {
    "path": "src/imp/mod.rs",
    "content": "pub mod gen_map_get;\nmod order_kwargs;\npub mod parser;\npub mod to_fun;\n\nuse crate::fun::{Name, Num, Op, Source, Type};\nuse interner::global::GlobalString;\n\n#[derive(Clone, Debug)]\npub enum Expr {\n  // \"*\"\n  Era,\n  // [a-zA-Z_]+\n  Var { nam: Name },\n  // \"$\" [a-zA-Z_]+\n  Chn { nam: Name },\n  // [0-9_]+\n  Num { val: Num },\n  // {fun}({args},{kwargs},)\n  Call { fun: Box<Expr>, args: Vec<Expr>, kwargs: Vec<(Name, Expr)> },\n  // \"lambda\" {names}* \":\" {bod}\n  Lam { names: Vec<(Name, bool)>, bod: Box<Expr> },\n  // {lhs} {op} {rhs}\n  Opr { op: Op, lhs: Box<Expr>, rhs: Box<Expr> },\n  // \"\\\"\" ... \"\\\"\"\n  Str { val: GlobalString },\n  // \"[\" ... \"]\"\n  Lst { els: Vec<Expr> },\n  // \"(\" ... \")\"\n  Tup { els: Vec<Expr> },\n  // \"{\" {els} \"}\"\n  Sup { els: Vec<Expr> },\n  // {name} \"{\" {kwargs} \"}\"\n  Ctr { name: Name, args: Vec<Expr>, kwargs: Vec<(Name, Expr)> },\n  // \"[\" {term} \"for\" {bind} \"in\" {iter} (\"if\" {cond})? \"]\"\n  LstMap { term: Box<Expr>, bind: Name, iter: Box<Expr>, cond: Option<Box<Expr>> },\n  // \"{\" {entries} \"}\"\n  Map { entries: Vec<(Expr, Expr)> },\n  // {map} \"[\" {key} \"]\"\n  MapGet { nam: Name, key: Box<Expr> },\n  // \"![\" {left} \",\" {right} \"]\"\n  TreeNode { left: Box<Expr>, right: Box<Expr> },\n  // \"!\" {val}\n  TreeLeaf { val: Box<Expr> },\n}\n\n#[derive(Clone, Debug)]\npub struct MatchArm {\n  pub lft: Option<Name>,\n  pub rgt: Stmt,\n}\n\n#[derive(Clone, Debug, Default)]\npub enum AssignPattern {\n  // \"*\"\n  #[default]\n  Eraser,\n  // [a-zA-Z_]+\n  Var(Name),\n  // \"$\" [a-zA-Z_]+\n  Chn(Name),\n  // \"(\" ... \")\"\n  Tup(Vec<AssignPattern>),\n  // \"{\" ... \"}\"\n  Sup(Vec<AssignPattern>),\n  // {name} \"[\" {expr} \"]\"\n  MapSet(Name, Expr),\n}\n\n#[derive(Clone, Debug)]\npub enum InPlaceOp {\n  Add,\n  Sub,\n  Mul,\n  Div,\n  And,\n  Or,\n  Xor,\n  Map,\n}\n\n#[derive(Clone, Debug, Default)]\npub enum Stmt {\n  // {pat} = {val} \";\"? {nxt}\n  Assign {\n    pat: AssignPattern,\n    val: Box<Expr>,\n    nxt: Option<Box<Stmt>>,\n  },\n  // {var} += {val} \";\"? {nxt}\n  InPlace {\n    op: InPlaceOp,\n    pat: Box<AssignPattern>,\n    val: Box<Expr>,\n    nxt: Box<Stmt>,\n  },\n  // \"if\" {cond} \":\"\n  //  {then}\n  // \"else\" \":\"\n  //  {otherwise}\n  // {nxt}?\n  If {\n    cond: Box<Expr>,\n    then: Box<Stmt>,\n    otherwise: Box<Stmt>,\n    nxt: Option<Box<Stmt>>,\n  },\n  // \"match\" ({bind} \"=\")? {arg} (\"with\" (({bind}) | ({bind} \"=\" {arg}) \",\"?)*)? \":\"\n  //   \"case\" {lft} \":\"\n  //     {rgt}\n  //   ...\n  // <nxt>?\n  Match {\n    arg: Box<Expr>,\n    bnd: Option<Name>,\n    with_bnd: Vec<Option<Name>>,\n    with_arg: Vec<Expr>,\n    arms: Vec<MatchArm>,\n    nxt: Option<Box<Stmt>>,\n  },\n  // \"switch\" ({bind} \"=\")? {arg}(\"with\" (({bind}) | ({bind} \"=\" {arg}) \",\"?)*)? \":\"\n  //   \"case\" 0 \":\"\n  //     {stmt}\n  //   ...\n  //   \"case\" _ \":\"\n  //     {stmt}\n  // <nxt>?\n  Switch {\n    arg: Box<Expr>,\n    bnd: Option<Name>,\n    with_bnd: Vec<Option<Name>>,\n    with_arg: Vec<Expr>,\n    arms: Vec<Stmt>,\n    nxt: Option<Box<Stmt>>,\n  },\n  // \"bend\" ({bind} (\"=\" {init})? \",\"?)*\n  //   \"when\" {cond} \":\"\n  //     {step}\n  //   \"else\" \":\"\n  //     {base}\n  // {nxt}}?\n  Bend {\n    bnd: Vec<Option<Name>>,\n    arg: Vec<Expr>,\n    cond: Box<Expr>,\n    step: Box<Stmt>,\n    base: Box<Stmt>,\n    nxt: Option<Box<Stmt>>,\n  },\n  // \"fold\" ({bind} \"=\")? {arg} (\"with\" (({bind}) | ({bind} \"=\" {arg}) \",\"?)*)? \":\"\n  //   case {lft} \":\"\n  //     {rgt}\n  //   ...\n  // {nxt}?\n  Fold {\n    arg: Box<Expr>,\n    bnd: Option<Name>,\n    with_bnd: Vec<Option<Name>>,\n    with_arg: Vec<Expr>,\n    arms: Vec<MatchArm>,\n    nxt: Option<Box<Stmt>>,\n  },\n  // \"with\" {typ} \":\"\n  //   \"ask\" {id} = {expr} \";\"?\n  //   ...\n  // <nxt>?\n  With {\n    typ: Name,\n    bod: Box<Stmt>,\n    nxt: Option<Box<Stmt>>,\n  },\n  // {pat} <- {val} \";\"? {nxt}\n  Ask {\n    pat: AssignPattern,\n    val: Box<Expr>,\n    nxt: Option<Box<Stmt>>,\n  },\n  // \"return\" {expr} \";\"?\n  Return {\n    term: Box<Expr>,\n  },\n  // \"open\" {typ} \":\" {var} \";\"? {nxt}\n  Open {\n    typ: Name,\n    var: Name,\n    nxt: Box<Stmt>,\n  },\n  // \"use\" {name} \"=\" {expr} \";\"? {nxt}\n  Use {\n    nam: Name,\n    val: Box<Expr>,\n    nxt: Box<Stmt>,\n  },\n  // {def} {nxt}\n  LocalDef {\n    def: Box<Definition>,\n    nxt: Box<Stmt>,\n  },\n  #[default]\n  Err,\n}\n\n// \"def\" {name} \"(\" {params} \")\" \":\" {body}\n#[derive(Clone, Debug)]\npub struct Definition {\n  pub name: Name,\n  pub typ: Type,\n  pub check: bool,\n  pub args: Vec<Name>,\n  pub body: Stmt,\n  pub source: Source,\n}\n\nimpl InPlaceOp {\n  pub fn to_lang_op(self) -> Op {\n    match self {\n      InPlaceOp::Add => Op::ADD,\n      InPlaceOp::Sub => Op::SUB,\n      InPlaceOp::Mul => Op::MUL,\n      InPlaceOp::Div => Op::DIV,\n      InPlaceOp::And => Op::AND,\n      InPlaceOp::Or => Op::OR,\n      InPlaceOp::Xor => Op::XOR,\n      InPlaceOp::Map => unreachable!(),\n    }\n  }\n}\n"
  },
  {
    "path": "src/imp/order_kwargs.rs",
    "content": "use crate::{\n  fun::{parser::ParseBook, Name},\n  imp::{Definition, Expr, Stmt},\n};\nuse indexmap::IndexMap;\n\nimpl Definition {\n  /// Traverses the program's definitions and adjusts the order of keyword arguments\n  /// in call/constructor expressions to match the order specified in the function or constructor definition.\n  pub fn order_kwargs(&mut self, book: &ParseBook) -> Result<(), String> {\n    let use_map = &mut IndexMap::new();\n    self.body.order_kwargs(book, use_map).map_err(|e| format!(\"In function '{}':\\n  {}\", self.name, e))\n  }\n}\n\nimpl Stmt {\n  fn order_kwargs(&mut self, book: &ParseBook, use_map: &mut IndexMap<Name, Name>) -> Result<(), String> {\n    match self {\n      Stmt::LocalDef { def, nxt } => {\n        def.order_kwargs(book)?;\n        nxt.order_kwargs(book, use_map)?;\n      }\n      Stmt::Assign { val, nxt, .. } => {\n        val.order_kwargs(book, use_map)?;\n        if let Some(nxt) = nxt {\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::Ask { val, nxt, .. } => {\n        val.order_kwargs(book, use_map)?;\n        if let Some(nxt) = nxt {\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::InPlace { val, nxt, .. } => {\n        val.order_kwargs(book, use_map)?;\n        nxt.order_kwargs(book, use_map)?;\n      }\n      Stmt::If { cond, then, otherwise, nxt } => {\n        cond.order_kwargs(book, use_map)?;\n        then.order_kwargs(book, use_map)?;\n        otherwise.order_kwargs(book, use_map)?;\n        if let Some(nxt) = nxt {\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::Match { arg, arms, nxt, .. } => {\n        arg.order_kwargs(book, use_map)?;\n        for arm in arms {\n          arm.rgt.order_kwargs(book, use_map)?;\n        }\n        if let Some(nxt) = nxt {\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::Switch { arg, arms, nxt, .. } => {\n        arg.order_kwargs(book, use_map)?;\n        for arm in arms {\n          arm.order_kwargs(book, use_map)?;\n        }\n        if let Some(nxt) = nxt {\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::Fold { arg, arms, nxt, .. } => {\n        arg.order_kwargs(book, use_map)?;\n        for arm in arms {\n          arm.rgt.order_kwargs(book, use_map)?;\n        }\n        if let Some(nxt) = nxt {\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::Bend { bnd: _, arg, cond, step, base, nxt } => {\n        for arg in arg {\n          arg.order_kwargs(book, use_map)?;\n        }\n        cond.order_kwargs(book, use_map)?;\n        step.order_kwargs(book, use_map)?;\n        base.order_kwargs(book, use_map)?;\n        if let Some(nxt) = nxt {\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::With { typ: _, bod, nxt } => {\n        bod.order_kwargs(book, use_map)?;\n        if let Some(nxt) = nxt {\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::Open { typ: _, var: _, nxt } => {\n        nxt.order_kwargs(book, use_map)?;\n      }\n      Stmt::Use { nam, val: bod, nxt } => {\n        if let Expr::Var { nam: bod } = bod.as_ref() {\n          use_map.insert(nam.clone(), bod.clone());\n          nxt.order_kwargs(book, use_map)?;\n          use_map.pop();\n        } else {\n          bod.order_kwargs(book, use_map)?;\n          nxt.order_kwargs(book, use_map)?;\n        }\n      }\n      Stmt::Return { term } => term.order_kwargs(book, use_map)?,\n      Stmt::Err => {}\n    }\n    Ok(())\n  }\n}\n\nimpl Expr {\n  fn order_kwargs(&mut self, book: &ParseBook, use_map: &mut IndexMap<Name, Name>) -> Result<(), String> {\n    match self {\n      // Named arguments are only allowed when directly calling a named function.\n      Expr::Call { fun, args, kwargs } => {\n        if !kwargs.is_empty() {\n          if let Expr::Var { nam } = fun.as_ref() {\n            if let Some(names) = get_args_def_or_ctr(nam, book, use_map) {\n              go_order_kwargs(&names, args, kwargs)?;\n            } else {\n              return Err(format!(\n                \"Named args are only allowed when calling a named function, not when calling variable '{nam}'.\"\n              ));\n            }\n          } else {\n            // TODO: Print expression\n            return Err(\n              \"Named args are only allowed when calling a named function, not when calling an expression.\"\n                .to_string(),\n            );\n          }\n        }\n        fun.order_kwargs(book, use_map)?;\n        for arg in args {\n          arg.order_kwargs(book, use_map)?;\n        }\n        for (_, arg) in kwargs {\n          arg.order_kwargs(book, use_map)?;\n        }\n      }\n      Expr::Lam { bod, .. } => bod.order_kwargs(book, use_map)?,\n      Expr::Opr { lhs, rhs, .. } => {\n        lhs.order_kwargs(book, use_map)?;\n        rhs.order_kwargs(book, use_map)?;\n      }\n      Expr::Lst { els } | Expr::Tup { els } | Expr::Sup { els } => {\n        for el in els {\n          el.order_kwargs(book, use_map)?;\n        }\n      }\n      Expr::LstMap { term, iter, cond, .. } => {\n        term.order_kwargs(book, use_map)?;\n        iter.order_kwargs(book, use_map)?;\n        if let Some(cond) = cond {\n          cond.order_kwargs(book, use_map)?;\n        }\n      }\n      Expr::Ctr { name, args, kwargs } => match get_args_def_or_ctr(name, book, use_map) {\n        Some(names) => {\n          go_order_kwargs(&names, args, kwargs)?;\n          for arg in args {\n            arg.order_kwargs(book, use_map)?;\n          }\n        }\n        _ => return Err(format!(\"Constructor '{name}' not found.\")),\n      },\n      Expr::Map { entries } => {\n        for entry in entries {\n          entry.1.order_kwargs(book, use_map)?;\n        }\n      }\n      Expr::MapGet { nam: _, key } => {\n        key.order_kwargs(book, use_map)?;\n      }\n      Expr::TreeNode { left, right } => {\n        left.order_kwargs(book, use_map)?;\n        right.order_kwargs(book, use_map)?;\n      }\n      Expr::TreeLeaf { val } => {\n        val.order_kwargs(book, use_map)?;\n      }\n      Expr::Era | Expr::Var { .. } | Expr::Chn { .. } | Expr::Num { .. } | Expr::Str { .. } => {}\n    }\n    Ok(())\n  }\n}\n\nfn go_order_kwargs(\n  names: &[Name],\n  args: &mut Vec<Expr>,\n  kwargs: &mut Vec<(Name, Expr)>,\n) -> Result<(), String> {\n  if args.len() + kwargs.len() != names.len() {\n    return Err(\n      \"Named args are only allowed when calling a function with the exact number of arguments.\".to_string(),\n    );\n  }\n  let mut kwargs: IndexMap<Name, Expr> = IndexMap::from_iter(kwargs.drain(..));\n  let remaining_names = &names[args.len()..];\n  for name in remaining_names {\n    if let Some(arg) = kwargs.shift_remove(name) {\n      args.push(arg);\n    } else {\n      return Err(format!(\"Named arg '{name}' is missing.\"));\n    }\n  }\n  if let Some(name) = kwargs.keys().next() {\n    return Err(format!(\"Unexpected named arg in function call {}.\", name));\n  }\n  Ok(())\n}\n\nfn get_args_def_or_ctr(name: &Name, book: &ParseBook, use_map: &IndexMap<Name, Name>) -> Option<Vec<Name>> {\n  let name = use_map.get(name).unwrap_or(name);\n\n  #[allow(clippy::manual_map)]\n  if let Some(adt_nam) = book.ctrs.get(name) {\n    Some(book.adts[adt_nam].ctrs[name].fields.iter().map(|f| f.nam.clone()).collect())\n  } else if let Some(def) = book.fun_defs.get(name) {\n    Some(def.rules[0].pats.iter().flat_map(|p| p.binds().flatten().cloned()).collect())\n  } else {\n    None\n  }\n}\n"
  },
  {
    "path": "src/imp/parser.rs",
    "content": "use crate::{\n  fun::{\n    parser::{is_num_char, make_ctr_type, make_fn_type, Indent, ParseResult, ParserCommons},\n    Adt, AdtCtr, CtrField, HvmDefinition, Name, Num, Op, Source, SourceKind, Type, STRINGS,\n  },\n  imp::{AssignPattern, Definition, Expr, InPlaceOp, MatchArm, Stmt},\n  maybe_grow,\n};\nuse TSPL::Parser;\n\npub struct ImpParser<'i> {\n  pub file: Name,\n  pub input: &'i str,\n  pub index: usize,\n  pub builtin: bool,\n}\n\nimpl<'a> ImpParser<'a> {\n  pub fn new(file: Name, input: &'a str, builtin: bool) -> Self {\n    Self { file, input, index: 0, builtin }\n  }\n\n  pub fn parse_function_def(&mut self, indent: Indent) -> ParseResult<(Definition, Indent)> {\n    // def name(arg1: type1, arg2: type2, ...) -> type:\n    //   body\n    if indent != Indent::Val(0) {\n      let msg = \"Indentation error. Functions defined with 'def' must be at the start of the line.\";\n      let idx = *self.index();\n      return self.with_ctx(Err(msg), idx..idx + 1);\n    }\n    // TODO: checked vs unchecked functions\n    let (mut def, nxt_indent) = self.parse_def_aux(indent)?;\n    def.source.kind = if self.builtin { SourceKind::Builtin } else { SourceKind::User };\n    Ok((def, nxt_indent))\n  }\n\n  pub fn parse_type_def(&mut self, mut indent: Indent) -> ParseResult<(Adt, Indent)> {\n    if indent != Indent::Val(0) {\n      let msg = \"Indentation error. Types defined with 'type' must be at the start of the line.\";\n      let idx = *self.index();\n      return self.with_ctx(Err(msg), idx..idx + 1);\n    }\n    let ini_idx = *self.index();\n\n    self.parse_keyword(\"type\")?;\n    self.skip_trivia_inline()?;\n\n    let type_name = self.parse_restricted_name(\"datatype\")?;\n    self.skip_trivia_inline()?;\n\n    let type_vars = if self.try_consume_exactly(\"(\") {\n      self.list_like(|p| p.parse_var_name(), \"\", \")\", \",\", true, 0)?\n    } else {\n      vec![]\n    };\n    self.skip_trivia_inline()?;\n\n    self.consume_exactly(\":\")?;\n    self.consume_new_line()?;\n    indent.enter_level();\n    self.consume_indent_exactly(indent)?;\n\n    let mut ctrs = Vec::new();\n    let mut nxt_indent = indent;\n    while nxt_indent == indent {\n      ctrs.push(self.parse_type_def_variant(&type_name, &type_vars)?);\n      if !self.is_eof() {\n        self.consume_new_line()?;\n      }\n      nxt_indent = self.consume_indent_at_most(indent)?;\n    }\n    indent.exit_level();\n\n    let ctrs = ctrs.into_iter().map(|ctr| (ctr.name.clone(), ctr)).collect();\n    let source = Source::from_file_span(&self.file, self.input, ini_idx..self.index, self.builtin);\n    let adt = Adt { name: type_name, vars: type_vars, ctrs, source };\n\n    Ok((adt, nxt_indent))\n  }\n\n  pub fn parse_object(&mut self, indent: Indent) -> ParseResult<(Adt, Indent)> {\n    // object Pair(a, b) { fst: a, snd: b }\n    if indent != Indent::Val(0) {\n      let msg = \"Indentation error. Types defined with 'object' must be at the start of the line.\";\n      let idx = *self.index();\n      return self.with_ctx(Err(msg), idx..idx + 1);\n    }\n    let ini_idx = *self.index();\n\n    self.parse_keyword(\"object\")?;\n    self.skip_trivia_inline()?;\n\n    let name = self.parse_top_level_name()?;\n    self.skip_trivia_inline()?;\n\n    let type_vars = if self.starts_with(\"(\") {\n      self.list_like(|p| p.parse_var_name(), \"(\", \")\", \",\", true, 0)?\n    } else {\n      vec![]\n    };\n    self.skip_trivia_inline()?;\n\n    let fields = if self.starts_with(\"{\") {\n      self.list_like(|p| p.parse_variant_field(), \"{\", \"}\", \",\", true, 0)?\n    } else {\n      vec![]\n    };\n    let field_types = fields.iter().map(|f| f.typ.clone()).collect::<Vec<_>>();\n\n    let end_idx = *self.index();\n    self.check_repeated_ctr_fields(&fields, &name, ini_idx..end_idx)?;\n\n    if !self.is_eof() {\n      self.consume_new_line()?;\n    }\n    let nxt_indent = self.advance_newlines()?;\n\n    let typ = make_ctr_type(name.clone(), &field_types, &type_vars);\n    let ctr = AdtCtr { name: name.clone(), typ, fields };\n\n    let ctrs = [(name.clone(), ctr)].into_iter().collect();\n    let source = Source::from_file_span(&self.file, self.input, ini_idx..end_idx, self.builtin);\n    let adt = Adt { name, vars: type_vars, ctrs, source };\n    Ok((adt, nxt_indent))\n  }\n\n  pub fn parse_hvm(&mut self) -> ParseResult<(HvmDefinition, Indent)> {\n    let ini_idx = *self.index();\n\n    self.parse_keyword(\"hvm\")?;\n    self.skip_trivia_inline()?;\n\n    let name = self.parse_var_name()?;\n    self.skip_trivia_inline()?;\n\n    let typ = self.parse_return_type()?.unwrap_or(Type::Any);\n    let typ = make_fn_type(vec![], typ);\n    self.skip_trivia_inline()?;\n\n    self.consume_exactly(\":\")?;\n    self.consume_new_line()?;\n\n    // TODO: This will have the wrong index\n    let net_idx = *self.index();\n    let mut p = hvm::ast::CoreParser::new(&self.input[net_idx..]);\n    let body = p.parse_net()?;\n    *self.index() = net_idx + *p.index();\n\n    let source = Source::from_file_span(&self.file, self.input, ini_idx..self.index, self.builtin);\n    let def = HvmDefinition { name: name.clone(), typ, body, source };\n    let nxt_indent = self.advance_newlines()?;\n    Ok((def, nxt_indent))\n  }\n\n  fn parse_type_def_variant(&mut self, type_name: &Name, type_vars: &[Name]) -> ParseResult<AdtCtr> {\n    let ini_idx = *self.index();\n    let name = self.parse_top_level_name()?;\n    let name = Name::new(format!(\"{type_name}/{name}\"));\n    self.skip_trivia_inline()?;\n\n    let fields = if self.try_consume_exactly(\"{\") {\n      self.list_like(|p| p.parse_variant_field(), \"\", \"}\", \",\", true, 0)?\n    } else {\n      vec![]\n    };\n    let field_types = fields.iter().map(|f| f.typ.clone()).collect::<Vec<_>>();\n    let end_idx = *self.index();\n    self.check_repeated_ctr_fields(&fields, &name, ini_idx..end_idx)?;\n\n    let typ = make_ctr_type(type_name.clone(), &field_types, type_vars);\n    Ok(AdtCtr { name, typ, fields })\n  }\n\n  fn parse_variant_field(&mut self) -> ParseResult<CtrField> {\n    let rec = self.try_consume_exactly(\"~\");\n    self.skip_trivia_inline()?;\n\n    let nam = self.parse_var_name()?;\n    self.skip_trivia_inline()?;\n\n    let typ = if self.try_consume_exactly(\":\") { self.parse_type_expr()? } else { Type::Any };\n\n    Ok(CtrField { nam, typ, rec })\n  }\n\n  fn parse_primary_expr(&mut self, inline: bool) -> ParseResult<Expr> {\n    if inline {\n      self.skip_trivia_inline()?;\n    } else {\n      self.skip_trivia();\n    }\n    if self.try_parse_keyword(\"lambda\") | self.try_consume_exactly(\"λ\") {\n      fn parse_lam_var(p: &mut ImpParser) -> ParseResult<(Name, bool)> {\n        if p.starts_with(\"$\") {\n          p.advance_one();\n          Ok((p.parse_var_name()?, true))\n        } else {\n          Ok((p.parse_var_name()?, false))\n        }\n      }\n      let names = self.list_like(|p| parse_lam_var(p), \"\", \":\", \",\", false, 1)?;\n      let bod = self.parse_expr(inline, false)?;\n      Ok(Expr::Lam { names, bod: Box::new(bod) })\n    } else if self.starts_with(\"(\") {\n      self.advance_one();\n      let expr = self.parse_expr(inline, true)?;\n      self.consume(\")\")?;\n      Ok(expr)\n    } else if self.starts_with(\"{\") {\n      // Map or Sup\n      self.parse_map_or_sup()\n    } else if self.starts_with(\"[\") {\n      // List or Comprehension\n      self.parse_list_or_comprehension()\n    } else if self.starts_with(\"![\") {\n      // Tree Node\n      self.parse_tree_node()\n    } else if self.starts_with(\"!\") {\n      // Tree Leaf\n      self.parse_tree_leaf(inline)\n    } else if self.starts_with(\"`\") {\n      // Symbol\n      Ok(Expr::Num { val: Num::U24(self.parse_quoted_symbol()?) })\n    } else if self.starts_with(\"\\\"\") {\n      // String\n      Ok(Expr::Str { val: STRINGS.get(self.parse_quoted_string()?) })\n    } else if self.starts_with(\"'\") {\n      // Char\n      Ok(Expr::Num { val: Num::U24(self.parse_quoted_char()? as u32 & 0x00ff_ffff) })\n    } else if self.starts_with(\"$\") {\n      // Unscoped var\n      self.advance_one();\n      Ok(Expr::Chn { nam: self.parse_var_name()? })\n    } else if self.starts_with(\"*\") {\n      // Era\n      self.advance_one();\n      Ok(Expr::Era)\n    } else if let Some(c) = self.peek_one() {\n      if is_num_char(c) {\n        // Number\n        Ok(Expr::Num { val: self.parse_number()? })\n      } else {\n        // Var\n        let nam = self.labelled(|p| p.parse_var_name(), \"expression\")?;\n        Ok(Expr::Var { nam })\n      }\n    } else {\n      self.expected(\"expression\")?\n    }\n  }\n\n  fn call_or_postfix(&mut self, inline: bool) -> ParseResult<Expr> {\n    let ini_idx = *self.index();\n    let base = self.parse_primary_expr(inline)?;\n    if inline {\n      self.skip_trivia_inline()?;\n    } else {\n      self.skip_trivia();\n    }\n\n    // call\n    if self.starts_with(\"(\") {\n      self.advance_one();\n      let mut args = Vec::new();\n      let mut kwargs = Vec::new();\n      let mut must_be_named = false;\n      while !self.starts_with(\")\") {\n        let ini_idx = *self.index();\n        let (bnd, arg) = self.parse_named_arg()?;\n        let end_idx = *self.index();\n        if let Some(bnd) = bnd {\n          must_be_named = true;\n          kwargs.push((bnd, arg));\n        } else if must_be_named {\n          let msg = \"Positional arguments are not allowed to go after named arguments.\".to_string();\n          return self.with_ctx(Err(msg), ini_idx..end_idx);\n        } else {\n          args.push(arg);\n        }\n        if self.starts_with(\",\") {\n          self.consume(\",\")?;\n        } else {\n          break;\n        }\n      }\n      self.consume(\")\")?;\n      if args.is_empty() && kwargs.is_empty() {\n        return Ok(base);\n      } else {\n        return Ok(Expr::Call { fun: Box::new(base), args, kwargs });\n      }\n    }\n\n    // map get\n    if self.starts_with(\"[\") {\n      if let Expr::Var { nam } = base {\n        self.advance_one();\n        let key = self.parse_expr(inline, false)?;\n        self.consume(\"]\")?;\n        return Ok(Expr::MapGet { nam, key: Box::new(key) });\n      } else {\n        let end_idx = *self.index();\n        return self.expected_spanned(\"Map variable name\", ini_idx..end_idx);\n      }\n    }\n\n    // ctr\n    if self.starts_with(\"{\") {\n      if let Expr::Var { nam } = base {\n        let kwargs = self.list_like(|p| p.data_kwarg(), \"{\", \"}\", \",\", true, 0)?;\n        return Ok(Expr::Ctr { name: nam, args: Vec::new(), kwargs });\n      } else {\n        let end_idx = *self.index();\n        return self.expected_spanned(\"Constructor name\", ini_idx..end_idx);\n      }\n    }\n\n    // no postfix\n    Ok(base)\n  }\n\n  fn parse_map_or_sup(&mut self) -> ParseResult<Expr> {\n    self.advance_one();\n    // Empty map\n    if self.try_consume(\"}\") {\n      return Ok(Expr::Map { entries: vec![] });\n    }\n    let head = self.parse_expr(false, false)?;\n    self.skip_trivia();\n    if self.try_consume(\",\") {\n      self.parse_sup(head)\n    } else if self.try_consume(\":\") {\n      self.parse_map_init(head)\n    } else {\n      self.expected(\"',' or ':'\")\n    }\n  }\n\n  fn parse_map_init(&mut self, head: Expr) -> ParseResult<Expr> {\n    let mut entries = Vec::new();\n    let val = self.parse_expr(false, false)?;\n    entries.push((head, val));\n    self.skip_trivia();\n    if !self.starts_with(\"}\") {\n      self.consume(\",\")?;\n    }\n    let tail = self.list_like(|p| p.parse_map_entry(), \"\", \"}\", \",\", true, 0)?;\n    entries.extend(tail);\n    Ok(Expr::Map { entries })\n  }\n\n  fn parse_sup(&mut self, head: Expr) -> ParseResult<Expr> {\n    let mut els = vec![head];\n    let tail = self.list_like(|p| p.parse_expr(false, false), \"\", \"}\", \",\", true, 1)?;\n    els.extend(tail);\n    Ok(Expr::Sup { els })\n  }\n\n  fn parse_tree_node(&mut self) -> ParseResult<Expr> {\n    self.advance_one();\n    self.advance_one();\n    let left = self.parse_expr(false, false)?;\n    self.consume(\",\")?;\n    let right = self.parse_expr(false, false)?;\n    self.consume(\"]\")?;\n    Ok(Expr::TreeNode { left: Box::new(left), right: Box::new(right) })\n  }\n\n  fn parse_tree_leaf(&mut self, inline: bool) -> ParseResult<Expr> {\n    self.advance_one();\n    let val = self.parse_expr(inline, false)?;\n    Ok(Expr::TreeLeaf { val: Box::new(val) })\n  }\n\n  fn data_kwarg(&mut self) -> ParseResult<(Name, Expr)> {\n    self.skip_trivia();\n    let nam = self.parse_var_name()?;\n    self.consume(\":\")?;\n    let expr = self.parse_expr(false, false)?;\n    Ok((nam, expr))\n  }\n\n  fn parse_map_entry(&mut self) -> ParseResult<(Expr, Expr)> {\n    let key = self.parse_expr(false, false)?;\n    self.consume(\":\")?;\n    let val = self.parse_expr(false, false)?;\n    Ok((key, val))\n  }\n\n  fn parse_list_or_comprehension(&mut self) -> ParseResult<Expr> {\n    self.consume_exactly(\"[\")?;\n\n    // Empty list\n    self.skip_trivia();\n    if self.try_consume_exactly(\"]\") {\n      return Ok(Expr::Lst { els: vec![] });\n    }\n\n    let head = self.parse_expr(false, false)?;\n    self.skip_trivia();\n    if self.try_parse_keyword(\"for\") {\n      // Comprehension\n      self.skip_trivia();\n      let bind = self.parse_var_name()?;\n      self.skip_trivia();\n      self.parse_keyword(\"in\")?;\n      let iter = self.parse_expr(false, false)?;\n      let mut cond = None;\n      self.skip_trivia();\n      if self.try_parse_keyword(\"if\") {\n        cond = Some(Box::new(self.parse_expr(false, false)?));\n      }\n      self.consume(\"]\")?;\n      Ok(Expr::LstMap { term: Box::new(head), bind, iter: Box::new(iter), cond })\n    } else {\n      // List\n      let mut head = vec![head];\n      self.skip_trivia();\n      if !self.starts_with(\"]\") {\n        self.consume(\",\")?;\n      }\n      let tail = self.list_like(|p| p.parse_expr(false, false), \"\", \"]\", \",\", true, 0)?;\n      head.extend(tail);\n      Ok(Expr::Lst { els: head })\n    }\n  }\n\n  /// \"λ\" (<name> \",\"?)+ \":\" <expr>\n  /// | \"open\" <type> \":\" <var>\n  /// | <infix>\n  fn parse_expr(&mut self, inline: bool, tup: bool) -> ParseResult<Expr> {\n    if inline {\n      self.skip_trivia_inline()?;\n    } else {\n      self.skip_trivia();\n    }\n\n    let base = self.parse_infix_expr(0, inline)?;\n    if !tup {\n      return Ok(base);\n    }\n    if inline {\n      self.skip_trivia_inline()?;\n    } else {\n      self.skip_trivia();\n    }\n    if self.starts_with(\",\") {\n      let mut els = vec![base];\n      loop {\n        if self.starts_with(\",\") {\n          self.advance_one();\n          els.push(self.parse_expr(inline, false)?);\n          if self.starts_with(\"\\n\") {\n            break;\n          }\n          if inline {\n            self.skip_trivia_inline()?;\n          } else {\n            self.skip_trivia();\n          }\n        } else {\n          break;\n        }\n      }\n      Ok(Expr::Tup { els })\n    } else {\n      Ok(base)\n    }\n  }\n\n  /// Named argument of a function call.\n  fn parse_named_arg(&mut self) -> ParseResult<(Option<Name>, Expr)> {\n    let arg = self.parse_expr(false, false)?;\n    if self.try_consume(\"=\") {\n      if let Expr::Var { nam } = arg {\n        let bind = Some(nam);\n        let arg = self.parse_expr(false, false)?;\n        Ok((bind, arg))\n      } else {\n        let msg = \"Unexpected '=' in unnamed argument.\".to_string();\n        let idx = *self.index();\n        self.with_ctx(Err(msg), idx..idx + 1)\n      }\n    } else {\n      Ok((None, arg))\n    }\n  }\n\n  /// Infix expression.\n  /// <simple> (<infix_op> <infix>)?\n  fn parse_infix_expr(&mut self, prec: usize, inline: bool) -> ParseResult<Expr> {\n    maybe_grow(|| {\n      if inline {\n        self.skip_trivia_inline()?;\n      } else {\n        self.skip_trivia();\n      }\n      if prec > Op::max_precedence() {\n        return self.call_or_postfix(inline);\n      }\n      let mut lhs = self.parse_infix_expr(prec + 1, inline)?;\n      if inline {\n        self.skip_trivia_inline()?;\n      } else {\n        self.skip_trivia();\n      }\n      while let Some(op) = self.peek_oper() {\n        if op.precedence() == prec {\n          self.try_parse_oper().unwrap();\n          let rhs = self.parse_infix_expr(prec + 1, inline)?;\n          lhs = Expr::Opr { op, lhs: Box::new(lhs), rhs: Box::new(rhs) };\n          self.skip_trivia_inline()?;\n        } else {\n          break;\n        }\n      }\n      Ok(lhs)\n    })\n  }\n\n  fn consume_indent_at_most(&mut self, expected: Indent) -> ParseResult<Indent> {\n    let got = self.advance_newlines()?;\n    match (expected, got) {\n      (_, Indent::Eof) => Ok(Indent::Eof),\n      (Indent::Val(expected), Indent::Val(got)) if got <= expected => Ok(Indent::Val(got)),\n      (expected, got) => self.expected_indent(expected, got),\n    }\n  }\n\n  fn consume_indent_exactly(&mut self, expected: Indent) -> ParseResult<()> {\n    let got = self.advance_newlines()?;\n    match (expected, got) {\n      (Indent::Eof, Indent::Eof) => Ok(()),\n      (Indent::Val(expected), Indent::Val(got)) if got == expected => Ok(()),\n      (expected, got) => self.expected_indent(expected, got),\n    }\n  }\n\n  /// Parses a statement and returns the indentation of the next statement.\n  fn parse_statement(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    maybe_grow(|| {\n      if self.starts_with_keyword(\"return\") {\n        self.parse_return()\n      } else if self.starts_with_keyword(\"def\") {\n        self.parse_local_def(indent)\n      } else if self.starts_with_keyword(\"if\") {\n        self.parse_if(indent)\n      } else if self.starts_with_keyword(\"match\") {\n        self.parse_match(indent)\n      } else if self.starts_with_keyword(\"switch\") {\n        self.parse_switch(indent)\n      } else if self.starts_with_keyword(\"fold\") {\n        self.parse_fold(indent)\n      } else if self.starts_with_keyword(\"bend\") {\n        self.parse_bend(indent)\n      } else if self.starts_with_keyword(\"with\") {\n        self.parse_with(indent)\n      } else if self.starts_with_keyword(\"open\") {\n        self.parse_open(indent)\n      } else if self.starts_with_keyword(\"use\") {\n        self.parse_use(indent)\n      } else {\n        self.parse_assign(indent)\n      }\n    })\n  }\n\n  /// Assignments, monadic bind operations and in-place operations.\n  /// <assign_pattern> \"=\" <expr> \";\"?\n  /// | <assign_pattern> \"<-\" <expr> \";\"?\n  ///\n  fn parse_assign(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    let ini_idx = *self.index();\n    let pat = self.parse_assign_pattern()?;\n    let end_idx = *self.index();\n    self.skip_trivia_inline()?;\n\n    // Assignment\n    if self.starts_with(\"=\") {\n      self.advance_one();\n      let val = self.parse_expr(true, true)?;\n      self.skip_trivia_inline()?;\n      self.try_consume_exactly(\";\");\n      if !self.is_eof() {\n        self.consume_new_line()?;\n      }\n      let nxt_indent = self.advance_newlines()?;\n      if nxt_indent == *indent {\n        let (nxt, nxt_indent) = self.parse_statement(indent)?;\n        let stmt = Stmt::Assign { pat, val: Box::new(val), nxt: Some(Box::new(nxt)) };\n        return Ok((stmt, nxt_indent));\n      } else {\n        let stmt = Stmt::Assign { pat, val: Box::new(val), nxt: None };\n        return Ok((stmt, nxt_indent));\n      }\n    }\n    // Ask\n    if self.starts_with(\"<-\") {\n      self.consume(\"<-\")?;\n      let val = self.parse_expr(true, true)?;\n      self.skip_trivia_inline()?;\n      self.try_consume_exactly(\";\");\n      let nxt_indent = self.advance_newlines()?;\n      if nxt_indent == *indent {\n        let (nxt, nxt_indent) = self.parse_statement(indent)?;\n        let stmt = Stmt::Ask { pat, val: Box::new(val), nxt: Some(Box::new(nxt)) };\n        return Ok((stmt, nxt_indent));\n      } else {\n        let stmt = Stmt::Ask { pat, val: Box::new(val), nxt: None };\n        return Ok((stmt, nxt_indent));\n      }\n    }\n    // In-place\n\n    match &pat {\n      AssignPattern::Var(..) => {}\n      AssignPattern::MapSet(..) => {}\n      _ => self.expected_spanned(\"Var or Map accessor\", ini_idx..end_idx)?,\n    }\n    if let Some(op) = self.parse_in_place_op()? {\n      let val = self.parse_expr(true, false)?;\n      self.skip_trivia_inline()?;\n      self.try_consume_exactly(\";\");\n      self.consume_indent_exactly(*indent)?;\n      let (nxt, nxt_indent) = self.parse_statement(indent)?;\n      let stmt = Stmt::InPlace { op, pat: Box::new(pat), val: Box::new(val), nxt: Box::new(nxt) };\n      return Ok((stmt, nxt_indent));\n    }\n\n    self.expected_spanned(\"statement\", ini_idx..end_idx)\n  }\n\n  fn parse_in_place_op(&mut self) -> ParseResult<Option<InPlaceOp>> {\n    self.skip_trivia_inline()?;\n    let op = if self.starts_with(\"+=\") {\n      self.consume(\"+=\")?;\n      Some(InPlaceOp::Add)\n    } else if self.starts_with(\"-=\") {\n      self.consume(\"-=\")?;\n      Some(InPlaceOp::Sub)\n    } else if self.starts_with(\"*=\") {\n      self.consume(\"*=\")?;\n      Some(InPlaceOp::Mul)\n    } else if self.starts_with(\"/=\") {\n      self.consume(\"/=\")?;\n      Some(InPlaceOp::Div)\n    } else if self.starts_with(\"&=\") {\n      self.consume(\"&=\")?;\n      Some(InPlaceOp::And)\n    } else if self.starts_with(\"|=\") {\n      self.consume(\"|=\")?;\n      Some(InPlaceOp::Or)\n    } else if self.starts_with(\"^=\") {\n      self.consume(\"^=\")?;\n      Some(InPlaceOp::Xor)\n    } else if self.starts_with(\"@=\") {\n      self.consume(\"@=\")?;\n      Some(InPlaceOp::Map)\n    } else {\n      None\n    };\n    Ok(op)\n  }\n\n  fn parse_return(&mut self) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"return\")?;\n\n    let term = self.parse_expr(true, true)?;\n    self.skip_trivia_inline()?;\n\n    self.try_consume_exactly(\";\");\n    if !self.is_eof() {\n      self.consume_new_line()?;\n    }\n    let indent = self.advance_newlines()?;\n\n    Ok((Stmt::Return { term: Box::new(term) }, indent))\n  }\n\n  fn parse_if(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"if\")?;\n    self.skip_trivia_inline()?;\n\n    let cond = self.parse_expr(true, true)?;\n    self.skip_trivia_inline()?;\n    self.consume_exactly(\":\")?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent)?;\n    let (then, nxt_indent) = self.parse_statement(indent)?;\n    indent.exit_level();\n\n    if nxt_indent != *indent {\n      return self\n        .expected_indent(*indent, nxt_indent)\n        .or(self.expected_spanned(\"'else' or 'elif'\", self.index..self.index + 1));\n    }\n    let mut elifs = Vec::new();\n    while self.try_parse_keyword(\"elif\") {\n      let cond = self.parse_expr(true, false)?;\n      self.skip_trivia_inline()?;\n      self.consume_exactly(\":\")?;\n      indent.enter_level();\n      self.consume_indent_exactly(*indent)?;\n      let (then, nxt_indent) = self.parse_statement(indent)?;\n      indent.exit_level();\n\n      if nxt_indent != *indent {\n        return self\n          .expected_indent(*indent, nxt_indent)\n          .or(self.expected_spanned(\"'else' or 'elif'\", self.index..self.index + 1));\n      }\n      elifs.push((cond, then));\n    }\n    self.parse_keyword(\"else\")?;\n    self.skip_trivia_inline()?;\n    self.consume_exactly(\":\")?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent)?;\n    let (otherwise, nxt_indent) = self.parse_statement(indent)?;\n    let otherwise = elifs.into_iter().rfold(otherwise, |acc, (cond, then)| Stmt::If {\n      cond: Box::new(cond),\n      then: Box::new(then),\n      otherwise: Box::new(acc),\n      nxt: None,\n    });\n\n    indent.exit_level();\n    if nxt_indent == *indent {\n      let (nxt, nxt_indent) = self.parse_statement(indent)?;\n      let stmt = Stmt::If {\n        cond: Box::new(cond),\n        then: Box::new(then),\n        otherwise: Box::new(otherwise),\n        nxt: Some(Box::new(nxt)),\n      };\n      Ok((stmt, nxt_indent))\n    } else {\n      let stmt =\n        Stmt::If { cond: Box::new(cond), then: Box::new(then), otherwise: Box::new(otherwise), nxt: None };\n      Ok((stmt, nxt_indent))\n    }\n  }\n\n  fn parse_match(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"match\")?;\n    self.skip_trivia_inline()?;\n\n    let (bnd, arg) = self.parse_match_arg()?;\n    self.skip_trivia_inline()?;\n\n    let (with_bnd, with_arg) = self.parse_with_clause()?;\n    self.consume_new_line()?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent).or(self.expected_spanned(\"'case'\", self.index..self.index + 1))?;\n    let (case, mut nxt_indent) = self.parse_match_case(indent)?;\n    let mut arms = vec![case];\n    while nxt_indent == *indent {\n      let (case, nxt_indent_) = self.parse_match_case(indent)?;\n      nxt_indent = nxt_indent_;\n      arms.push(case);\n    }\n    indent.exit_level();\n    if nxt_indent == *indent {\n      let (nxt, nxt_indent) = self.parse_statement(indent)?;\n      let stmt = Stmt::Match { arg: Box::new(arg), bnd, with_bnd, with_arg, arms, nxt: Some(Box::new(nxt)) };\n      Ok((stmt, nxt_indent))\n    } else {\n      let stmt = Stmt::Match { arg: Box::new(arg), bnd, with_bnd, with_arg, arms, nxt: None };\n      Ok((stmt, nxt_indent))\n    }\n  }\n\n  fn parse_match_arg(&mut self) -> ParseResult<(Option<Name>, Expr)> {\n    let ini_idx = *self.index();\n    let arg = self.parse_expr(true, false)?;\n    let end_idx = *self.index();\n\n    self.skip_trivia_inline()?;\n    match (arg, self.starts_with(\"=\")) {\n      (Expr::Var { nam }, true) => {\n        self.advance_one();\n        Ok((Some(nam), self.parse_expr(true, false)?))\n      }\n      (_, true) => self.expected_spanned(\"argument name\", ini_idx..end_idx),\n      (Expr::Var { nam }, false) => Ok((Some(nam.clone()), Expr::Var { nam })),\n      (arg, false) => Ok((Some(Name::new(\"%arg\")), arg)),\n    }\n  }\n\n  fn parse_with_clause(&mut self) -> ParseResult<(Vec<Option<Name>>, Vec<Expr>)> {\n    self.skip_trivia_inline()?;\n    let res = if self.try_parse_keyword(\"with\") {\n      self.list_like(|p| p.parse_with_arg(), \"\", \":\", \",\", true, 1)?.into_iter().unzip()\n    } else {\n      self.consume_exactly(\":\")?;\n      (vec![], vec![])\n    };\n    Ok(res)\n  }\n\n  fn parse_with_arg(&mut self) -> ParseResult<(Option<Name>, Expr)> {\n    let bind = self.parse_var_name()?;\n    self.skip_trivia_inline()?;\n    if self.try_consume(\"=\") {\n      let arg = self.parse_expr(false, false)?;\n      Ok((Some(bind), arg))\n    } else {\n      Ok((Some(bind.clone()), Expr::Var { nam: bind }))\n    }\n  }\n\n  fn parse_match_case(&mut self, indent: &mut Indent) -> ParseResult<(MatchArm, Indent)> {\n    self.parse_keyword(\"case\")?;\n    self.skip_trivia_inline()?;\n    let pat = if self.try_consume_exactly(\"_\") {\n      None\n    } else {\n      let nam = self.labelled(|p| p.parse_var_name(), \"name or '_'\")?;\n      Some(nam)\n    };\n    self.skip_trivia_inline()?;\n    self.consume_exactly(\":\")?;\n    self.consume_new_line()?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent)?;\n    let (body, nxt_indent) = self.parse_statement(indent)?;\n    indent.exit_level();\n\n    let stmt = MatchArm { lft: pat, rgt: body };\n    Ok((stmt, nxt_indent))\n  }\n\n  fn parse_switch(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"switch\")?;\n    self.skip_trivia_inline()?;\n\n    let (bnd, arg) = self.parse_match_arg()?;\n    self.skip_trivia_inline()?;\n\n    let (with_bnd, with_arg) = self.parse_with_clause()?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent)?;\n    let ini_idx = *self.index();\n    let (fst_case, fst_stmt, mut nxt_indent) = self.parse_switch_case(indent)?;\n    let end_idx = *self.index();\n    if fst_case != Some(0) {\n      return self.expected_spanned(\"case 0\", ini_idx..end_idx);\n    }\n    let mut arms = vec![fst_stmt];\n    let mut should_continue = fst_case == Some(0);\n    let mut expected_num = 1;\n    while should_continue {\n      if nxt_indent != *indent {\n        return self\n          .expected_indent(*indent, nxt_indent)\n          .or(self.expected_spanned(\"'case'\", self.index..self.index + 1));\n      }\n      let (case, stmt, nxt_indent_) = self.parse_switch_case(indent)?;\n      nxt_indent = nxt_indent_;\n      if let Some(case) = case {\n        if case != expected_num {\n          return self.expected(&format!(\"case {}\", expected_num));\n        }\n        should_continue = true;\n        arms.push(stmt);\n        expected_num += 1;\n      } else {\n        should_continue = false;\n        arms.push(stmt);\n      }\n    }\n    indent.exit_level();\n    if nxt_indent == *indent {\n      let (nxt, nxt_indent) = self.parse_statement(indent)?;\n      let stmt = Stmt::Switch { arg: Box::new(arg), bnd, with_bnd, with_arg, arms, nxt: Some(Box::new(nxt)) };\n      Ok((stmt, nxt_indent))\n    } else {\n      let stmt = Stmt::Switch { arg: Box::new(arg), bnd, with_bnd, with_arg, arms, nxt: None };\n      Ok((stmt, nxt_indent))\n    }\n  }\n\n  fn parse_switch_case(&mut self, indent: &mut Indent) -> ParseResult<(Option<u32>, Stmt, Indent)> {\n    self.parse_keyword(\"case\")?;\n    self.skip_trivia_inline()?;\n    let case = if let Some(c) = self.peek_one() {\n      match c {\n        '_' => {\n          self.advance_one();\n          None\n        }\n        c if c.is_ascii_digit() => Some(self.parse_u32()?),\n        _ => return self.expected(\"number or '_'\"),\n      }\n    } else {\n      return self.expected(\"number or '_'\")?;\n    };\n\n    self.skip_trivia_inline()?;\n    self.consume_exactly(\":\")?;\n    self.consume_new_line()?;\n    indent.enter_level();\n    self.consume_indent_exactly(*indent)?;\n    let (stmt, nxt_indent) = self.parse_statement(indent)?;\n    indent.exit_level();\n    Ok((case, stmt, nxt_indent))\n  }\n\n  /// \"fold\" <bind> (\"=\" <arg>)? \":\"\n  ///   \"case\" <ctr> \":\"\n  ///     <case>\n  ///   ...\n  fn parse_fold(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"fold\")?;\n    self.skip_trivia_inline()?;\n\n    // Actually identical to match, except the return\n    let (bind, arg) = self.parse_match_arg()?;\n    self.skip_trivia_inline()?;\n\n    let (with_bnd, with_arg) = self.parse_with_clause()?;\n    self.consume_new_line()?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent).or(self.expected_spanned(\"'case'\", self.index..self.index + 1))?;\n    let (case, mut nxt_indent) = self.parse_match_case(indent)?;\n    let mut arms = vec![case];\n    while nxt_indent == *indent {\n      let (case, nxt_indent_) = self.parse_match_case(indent)?;\n      nxt_indent = nxt_indent_;\n      arms.push(case);\n    }\n    indent.exit_level();\n    if nxt_indent == *indent {\n      let (nxt, nxt_indent) = self.parse_statement(indent)?;\n      let stmt =\n        Stmt::Fold { arg: Box::new(arg), bnd: bind, arms, with_bnd, with_arg, nxt: Some(Box::new(nxt)) };\n      Ok((stmt, nxt_indent))\n    } else {\n      let stmt = Stmt::Fold { arg: Box::new(arg), bnd: bind, arms, with_bnd, with_arg, nxt: None };\n      Ok((stmt, nxt_indent))\n    }\n  }\n\n  /// \"bend\" (<bind> \"=\" <init> \",\"?)* \":\"\n  ///   \"when\" <cond> \":\"\n  ///     <step>\n  ///   \"else\" \":\"\n  ///     <base>\n  fn parse_bend(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"bend\")?;\n    self.skip_trivia_inline()?;\n\n    let args = self.list_like(|p| p.parse_match_arg(), \"\", \":\", \",\", true, 1)?;\n    let (bind, init) = args.into_iter().unzip();\n    self.consume_new_line()?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent).or(self.expected_spanned(\"'when'\", self.index..self.index + 1))?;\n    self.parse_keyword(\"when\")?;\n    self.skip_trivia_inline()?;\n\n    let cond = self.parse_expr(true, true)?;\n    self.skip_trivia_inline()?;\n\n    self.consume_exactly(\":\")?;\n    self.consume_new_line()?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent)?;\n    let (step, nxt_indent) = self.parse_statement(indent)?;\n    indent.exit_level();\n\n    if nxt_indent != *indent {\n      return self\n        .expected_indent(*indent, nxt_indent)\n        .or(self.expected_spanned(\"'else'\", self.index..self.index + 1));\n    }\n    self.parse_keyword(\"else\")?;\n    self.skip_trivia_inline()?;\n    self.consume_exactly(\":\")?;\n    self.consume_new_line()?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent)?;\n    let (base, nxt_indent) = self.parse_statement(indent)?;\n    indent.exit_level();\n\n    indent.exit_level();\n    if nxt_indent == *indent {\n      let (nxt, nxt_indent) = self.parse_statement(indent)?;\n      let stmt = Stmt::Bend {\n        bnd: bind,\n        arg: init,\n        cond: Box::new(cond),\n        step: Box::new(step),\n        base: Box::new(base),\n        nxt: Some(Box::new(nxt)),\n      };\n      Ok((stmt, nxt_indent))\n    } else {\n      let stmt = Stmt::Bend {\n        bnd: bind,\n        arg: init,\n        cond: Box::new(cond),\n        step: Box::new(step),\n        base: Box::new(base),\n        nxt: None,\n      };\n      Ok((stmt, nxt_indent))\n    }\n  }\n\n  /// \"with\" <typ> \":\"\n  ///   <bod>\n  /// <nxt>?\n  fn parse_with(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"with\")?;\n    self.skip_trivia_inline()?;\n\n    let typ = self.parse_var_name()?;\n    self.skip_trivia_inline()?;\n\n    self.consume_exactly(\":\")?;\n    self.consume_new_line()?;\n    indent.enter_level();\n\n    self.consume_indent_exactly(*indent)?;\n    let (bod, nxt_indent) = self.parse_statement(indent)?;\n    indent.exit_level();\n\n    if nxt_indent == *indent {\n      let (nxt, nxt_indent) = self.parse_statement(indent)?;\n      let stmt = Stmt::With { typ, bod: Box::new(bod), nxt: Some(Box::new(nxt)) };\n      Ok((stmt, nxt_indent))\n    } else {\n      let stmt = Stmt::With { typ, bod: Box::new(bod), nxt: None };\n      Ok((stmt, nxt_indent))\n    }\n  }\n\n  /// <pat1>\n  /// | <nam> \"[\" <expr> \"]\"\n  /// | <pat1> (\",\" <pat1>)*\n  fn parse_assign_pattern(&mut self) -> ParseResult<AssignPattern> {\n    let head_ini = *self.index();\n    let head = self.parse_primary_assign_pattern()?;\n    let head_end = *self.index();\n    self.skip_trivia_inline()?;\n    if self.starts_with(\"[\") {\n      // TODO: allow patterns like `x[a][b]`\n      self.advance_one();\n      let key = self.parse_expr(false, false)?;\n      self.consume(\"]\")?;\n      if let AssignPattern::Var(var) = head {\n        Ok(AssignPattern::MapSet(var, key))\n      } else {\n        self.with_ctx(Err(\"Expected a variable pattern\"), head_ini..head_end)\n      }\n    } else if self.starts_with(\",\") {\n      let mut els = vec![head];\n      while self.try_consume(\",\") {\n        self.skip_trivia_inline()?;\n        els.push(self.parse_primary_assign_pattern()?);\n      }\n      Ok(AssignPattern::Tup(els))\n    } else {\n      Ok(head)\n    }\n  }\n\n  /// \"*\"\n  /// | \"{\"<pat1> (\",\" <pat1>)+ \"}\"\n  /// | \"$\" <nam>\n  /// | \"(\" <pat0> \")\"\n  /// | <nam>\n  fn parse_primary_assign_pattern(&mut self) -> ParseResult<AssignPattern> {\n    if self.starts_with(\"*\") {\n      self.advance_one();\n      Ok(AssignPattern::Eraser)\n    } else if self.starts_with(\"{\") {\n      let binds = self.list_like(|p| p.parse_primary_assign_pattern(), \"{\", \"}\", \",\", true, 2)?;\n      Ok(AssignPattern::Sup(binds))\n    } else if self.starts_with(\"$\") {\n      self.advance_one();\n      self.skip_trivia_inline()?;\n      let nam = self.parse_var_name()?;\n      Ok(AssignPattern::Chn(nam))\n    } else if self.starts_with(\"(\") {\n      self.advance_one();\n      let assign = self.parse_assign_pattern()?;\n      self.consume(\")\")?;\n      Ok(assign)\n    } else {\n      Ok(AssignPattern::Var(self.parse_var_name()?))\n    }\n  }\n\n  /// \"open\" {typ} \":\" {var} \";\"? {nxt}\n  fn parse_open(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"open\")?;\n    self.skip_trivia_inline()?;\n\n    let typ = self.labelled(|p| p.parse_var_name(), \"type name\")?;\n    self.skip_trivia_inline()?;\n\n    self.consume_exactly(\":\")?;\n    self.skip_trivia_inline()?;\n\n    let var = self.labelled(|p| p.parse_var_name(), \"variable name\")?;\n    self.skip_trivia_inline()?;\n\n    self.try_consume_exactly(\";\");\n    self.consume_new_line()?;\n    self.consume_indent_exactly(*indent)?;\n\n    let (nxt, nxt_indent) = self.parse_statement(indent)?;\n\n    let stmt = Stmt::Open { typ, var, nxt: Box::new(nxt) };\n    Ok((stmt, nxt_indent))\n  }\n\n  fn parse_use(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    self.parse_keyword(\"use\")?;\n    self.skip_trivia_inline()?;\n\n    let nam = self.parse_var_name()?;\n    self.skip_trivia_inline()?;\n\n    self.consume_exactly(\"=\")?;\n    self.skip_trivia_inline()?;\n\n    let bod = self.parse_expr(true, true)?;\n    self.skip_trivia_inline()?;\n\n    self.try_consume_exactly(\";\");\n    self.consume_new_line()?;\n    self.consume_indent_exactly(*indent)?;\n\n    let (nxt, nxt_indent) = self.parse_statement(indent)?;\n\n    let stmt = Stmt::Use { nam, val: Box::new(bod), nxt: Box::new(nxt) };\n    Ok((stmt, nxt_indent))\n  }\n\n  fn parse_local_def(&mut self, indent: &mut Indent) -> ParseResult<(Stmt, Indent)> {\n    // TODO: checked vs unchecked functions\n    let (mut def, mut nxt_indent) = self.parse_def_aux(*indent)?;\n    def.source.kind = if self.builtin { SourceKind::Builtin } else { SourceKind::Generated };\n    let (nxt, nxt_indent) = self.parse_statement(&mut nxt_indent)?;\n    let stmt = Stmt::LocalDef { def: Box::new(def), nxt: Box::new(nxt) };\n    Ok((stmt, nxt_indent))\n  }\n\n  /// Parses a type expression, returning the type and the type variables.\n  fn parse_type_expr(&mut self) -> ParseResult<Type> {\n    // TODO: We should probably not have it all be inline or not inline.\n    // For example, in tuple types or constructors, we could have line breaks.\n    maybe_grow(|| {\n      self.skip_trivia_inline()?;\n      let ini_idx = *self.index();\n      let lft = if self.try_parse_keyword(\"Any\") {\n        Type::Any\n      } else if self.try_parse_keyword(\"None\") {\n        Type::None\n      } else if self.try_parse_keyword(\"_\") {\n        Type::Hole\n      } else if self.try_parse_keyword(\"u24\") {\n        Type::U24\n      } else if self.try_parse_keyword(\"i24\") {\n        Type::I24\n      } else if self.try_parse_keyword(\"f24\") {\n        Type::F24\n      } else if self.try_consume_exactly(\"(\") {\n        // Tuple or parenthesized expression\n        self.skip_trivia();\n        let head = self.parse_type_expr()?;\n        self.skip_trivia();\n        if self.try_consume_exactly(\")\") {\n          // Parens\n          head\n        } else if self.starts_with(\",\") {\n          // Tuple\n          let mut types = vec![head];\n          loop {\n            self.consume_exactly(\",\")?;\n            types.push(self.parse_type_expr()?);\n            if self.try_consume_exactly(\")\") {\n              break;\n            }\n            if !self.starts_with(\",\") {\n              return self.expected(\"',' or ')'\");\n            }\n          }\n          Type::Tup(types)\n        } else {\n          let end_idx = *self.index();\n          return self.expected_spanned(\"tuple type or parenthesized type\", ini_idx..end_idx);\n        }\n      } else {\n        // Variable or Constructor\n        // TODO: This will show \"expected Name\" instead of \"expected type\"\n        let name = self.parse_var_name()?;\n        self.skip_trivia_inline()?;\n        if self.try_consume_exactly(\"(\") {\n          // Constructor with arguments\n          // name \"(\" (type (\",\" type)* \",\"?)? \")\"\n\n          let args = self.list_like(|p| p.parse_type_expr(), \"\", \")\", \",\", true, 0)?;\n          Type::Ctr(name, args)\n        } else {\n          // Variable\n          Type::Var(name)\n        }\n      };\n\n      // Handle arrow types\n      self.skip_trivia_inline()?;\n      if self.try_consume_exactly(\"->\") {\n        let rgt = self.parse_type_expr()?;\n        Ok(Type::Arr(Box::new(lft), Box::new(rgt)))\n      } else {\n        Ok(lft)\n      }\n    })\n  }\n\n  fn parse_def_aux(&mut self, mut indent: Indent) -> ParseResult<(Definition, Indent)> {\n    let ini_idx = *self.index();\n    self.parse_keyword(\"def\")?;\n    self.skip_trivia_inline()?;\n\n    let check = if self.try_parse_keyword(\"unchecked\") {\n      (false, true)\n    } else if self.try_parse_keyword(\"checked\") {\n      (true, false)\n    } else {\n      (false, false)\n    };\n    self.skip_trivia_inline()?;\n\n    let name = self.parse_top_level_name()?;\n    self.skip_trivia_inline()?;\n\n    let args = if self.try_consume_exactly(\"(\") {\n      self.list_like(|p| p.parse_def_arg(), \"\", \")\", \",\", true, 0)?\n    } else {\n      vec![]\n    };\n    self.skip_trivia_inline()?;\n    let (args, arg_types): (Vec<_>, Vec<_>) = args.into_iter().unzip();\n\n    let ret_type = self.parse_return_type()?;\n    self.skip_trivia_inline()?;\n\n    self.consume_exactly(\":\")?;\n    self.consume_new_line()?;\n    indent.enter_level();\n    self.consume_indent_exactly(indent)?;\n\n    let (body, nxt_indent) = self.parse_statement(&mut indent)?;\n    indent.exit_level();\n\n    // If any annotation, check by default, otherwise unchecked by default\n    let check = if check.0 {\n      true\n    } else if check.1 {\n      false\n    } else {\n      ret_type.is_some() || arg_types.iter().any(|t| t.is_some())\n    };\n    let arg_types = arg_types.into_iter().map(|t| t.unwrap_or(Type::Any)).collect::<Vec<_>>();\n    let typ = make_fn_type(arg_types, ret_type.unwrap_or(Type::Any));\n\n    // Note: The source kind gets replaced later (generated if a local def, user otherwise)\n    let source = Source::from_file_span(&self.file, self.input, ini_idx..self.index, self.builtin);\n    let def = Definition { name, args, typ, check, body, source };\n    Ok((def, nxt_indent))\n  }\n\n  fn parse_def_arg(&mut self) -> ParseResult<(Name, Option<Type>)> {\n    let name = self.parse_var_name()?;\n    self.skip_trivia_inline()?;\n    if self.try_consume_exactly(\":\") {\n      let typ = self.parse_type_expr()?;\n      Ok((name, Some(typ)))\n    } else {\n      Ok((name, None))\n    }\n  }\n\n  fn parse_return_type(&mut self) -> ParseResult<Option<Type>> {\n    if self.try_consume_exactly(\"->\") {\n      Ok(Some(self.parse_type_expr()?))\n    } else {\n      Ok(None)\n    }\n  }\n\n  fn expected_indent<T>(&mut self, expected: Indent, got: Indent) -> ParseResult<T> {\n    match (expected, got) {\n      (Indent::Eof, Indent::Eof) => unreachable!(),\n      (Indent::Eof, Indent::Val(got)) => {\n        let msg = format!(\"Indentation error. Expected end-of-input, got {} spaces.\", got);\n        let idx = *self.index();\n        self.with_ctx(Err(msg), idx..idx + 1)\n      }\n      (Indent::Val(expected), Indent::Eof) => {\n        let msg = format!(\"Indentation error. Expected {} spaces, got end-of-input.\", expected);\n        let idx = *self.index();\n        self.with_ctx(Err(msg), idx..idx + 1)\n      }\n      (Indent::Val(expected), Indent::Val(got)) => {\n        if got != expected {\n          let msg = format!(\"Indentation error. Expected {} spaces, got {}.\", expected, got);\n          let idx = *self.index();\n          self.with_ctx(Err(msg), idx..idx + 1)\n        } else {\n          unreachable!()\n        }\n      }\n    }\n  }\n}\n\nimpl<'a> ParserCommons<'a> for ImpParser<'a> {}\n\nimpl<'a> Parser<'a> for ImpParser<'a> {\n  fn input(&mut self) -> &'a str {\n    self.input\n  }\n\n  fn index(&mut self) -> &mut usize {\n    &mut self.index\n  }\n\n  /// Generates an error message for parsing failures, including the highlighted context.\n  ///\n  /// Override to have our own error message.\n  fn expected<T>(&mut self, exp: &str) -> ParseResult<T> {\n    let ini_idx = *self.index();\n    let end_idx = *self.index() + 1;\n    self.expected_spanned(exp, ini_idx..end_idx)\n  }\n\n  /// Consumes an instance of the given string, erroring if it is not found.\n  ///\n  /// Override to have our own error message.\n  fn consume(&mut self, text: &str) -> ParseResult<()> {\n    self.skip_trivia();\n    if self.input().get(*self.index()..).unwrap_or_default().starts_with(text) {\n      *self.index() += text.len();\n      Ok(())\n    } else {\n      self.expected(format!(\"'{text}'\").as_str())\n    }\n  }\n\n  fn skip_trivia(&mut self) {\n    while let Some(c) = self.peek_one() {\n      if c.is_ascii_whitespace() {\n        self.advance_one();\n        continue;\n      }\n      if c == '#' {\n        while let Some(c) = self.peek_one() {\n          if c != '\\n' {\n            self.advance_one();\n          } else {\n            break;\n          }\n        }\n        self.advance_one(); // Skip the newline character as well\n        continue;\n      }\n      break;\n    }\n  }\n}\n\nimpl Op {\n  fn precedence(&self) -> usize {\n    match self {\n      Op::OR => 0,\n      Op::XOR => 1,\n      Op::AND => 2,\n      Op::EQ => 3,\n      Op::NEQ => 3,\n      Op::LT => 4,\n      Op::GT => 4,\n      Op::LE => 4,\n      Op::GE => 4,\n      Op::SHL => 5,\n      Op::SHR => 5,\n      Op::ADD => 6,\n      Op::SUB => 6,\n      Op::MUL => 7,\n      Op::DIV => 7,\n      Op::REM => 7,\n      Op::POW => 8,\n    }\n  }\n\n  fn max_precedence() -> usize {\n    8\n  }\n}\n"
  },
  {
    "path": "src/imp/to_fun.rs",
    "content": "use super::{AssignPattern, Definition, Expr, InPlaceOp, Stmt};\nuse crate::{\n  diagnostics::Diagnostics,\n  fun::{\n    self,\n    builtins::{LCONS, LNIL},\n    parser::ParseBook,\n    Book, Name,\n  },\n};\n\nimpl ParseBook {\n  // TODO: Change all functions to return diagnostics\n  pub fn to_fun(mut self) -> Result<Book, Diagnostics> {\n    for (name, mut def) in std::mem::take(&mut self.imp_defs) {\n      def.order_kwargs(&self)?;\n      def.gen_map_get();\n\n      if self.fun_defs.contains_key(&name) {\n        panic!(\"Def names collision should be checked at parse time\")\n      }\n\n      self.fun_defs.insert(name, def.to_fun()?);\n    }\n\n    let ParseBook { fun_defs: defs, hvm_defs, adts, ctrs, import_ctx, .. } = self;\n    Ok(Book { defs, hvm_defs, adts, ctrs, entrypoint: None, imports: import_ctx.to_imports() })\n  }\n}\n\nimpl Definition {\n  pub fn to_fun(self) -> Result<fun::Definition, Diagnostics> {\n    let body = self.body.into_fun().map_err(|e| {\n      let mut diags = Diagnostics::default();\n      diags.add_function_error(e, self.name.clone(), self.source.clone());\n      diags\n    })?;\n\n    let body = match body {\n      StmtToFun::Return(term) => term,\n      StmtToFun::Assign(..) => {\n        let mut diags = Diagnostics::default();\n        diags.add_function_error(\n          \"Function doesn't end with a return statement\",\n          self.name,\n          self.source.clone(),\n        );\n        return Err(diags);\n      }\n    };\n\n    let rule =\n      fun::Rule { pats: self.args.into_iter().map(|param| fun::Pattern::Var(Some(param))).collect(), body };\n\n    let def = fun::Definition {\n      name: self.name,\n      typ: self.typ,\n      check: self.check,\n      rules: vec![rule],\n      source: self.source,\n    };\n    Ok(def)\n  }\n}\n\nimpl AssignPattern {\n  pub fn into_fun(self) -> fun::Pattern {\n    match self {\n      AssignPattern::Eraser => fun::Pattern::Var(None),\n      AssignPattern::Var(name) => fun::Pattern::Var(Some(name)),\n      AssignPattern::Chn(name) => fun::Pattern::Chn(name),\n      AssignPattern::Tup(names) => fun::Pattern::Fan(\n        fun::FanKind::Tup,\n        fun::Tag::Static,\n        names.into_iter().map(Self::into_fun).collect(),\n      ),\n      AssignPattern::Sup(names) => {\n        fun::Pattern::Fan(fun::FanKind::Dup, fun::Tag::Auto, names.into_iter().map(Self::into_fun).collect())\n      }\n      AssignPattern::MapSet(..) => unreachable!(),\n    }\n  }\n}\n\n#[derive(Debug)]\nenum StmtToFun {\n  Return(fun::Term),\n  Assign(bool, fun::Pattern, fun::Term),\n}\n\nfn take(t: Stmt) -> Result<(bool, Option<fun::Pattern>, fun::Term), String> {\n  match t.into_fun()? {\n    StmtToFun::Return(ret) => Ok((false, None, ret)),\n    StmtToFun::Assign(x, pat, val) => Ok((x, Some(pat), val)),\n  }\n}\n\nfn wrap(nxt: Option<fun::Pattern>, term: fun::Term, ask: bool) -> StmtToFun {\n  if let Some(pat) = nxt {\n    StmtToFun::Assign(ask, pat, term)\n  } else {\n    StmtToFun::Return(term)\n  }\n}\n\nimpl Stmt {\n  fn into_fun(self) -> Result<StmtToFun, String> {\n    // TODO: Refactor this to not repeat everything.\n    // TODO: When we have an error with an assignment, we should show the offending assignment (eg. \"{pat} = ...\").\n    let stmt_to_fun = match self {\n      Stmt::Assign { pat: AssignPattern::MapSet(map, key), val, nxt: Some(nxt) } => {\n        let (ask, nxt_pat, nxt) = take(*nxt)?;\n        let term = fun::Term::Let {\n          pat: Box::new(fun::Pattern::Var(Some(map.clone()))),\n          val: Box::new(fun::Term::call(\n            fun::Term::Ref { nam: fun::Name::new(\"Map/set\") },\n            [fun::Term::Var { nam: map }, key.to_fun(), val.to_fun()],\n          )),\n          nxt: Box::new(nxt),\n        };\n        wrap(nxt_pat, term, ask)\n      }\n      Stmt::Assign { pat: AssignPattern::MapSet(..), val: _, nxt: None } => {\n        return Err(\"Branch ends with map assignment.\".to_string())?;\n      }\n      Stmt::Assign { pat, val, nxt: Some(nxt) } => {\n        let pat = pat.into_fun();\n        let val = val.to_fun();\n        let (ask, nxt_pat, nxt) = take(*nxt)?;\n        let term = fun::Term::Let { pat: Box::new(pat), val: Box::new(val), nxt: Box::new(nxt) };\n        wrap(nxt_pat, term, ask)\n      }\n      Stmt::Assign { pat, val, nxt: None } => {\n        let pat = pat.into_fun();\n        let val = val.to_fun();\n        StmtToFun::Assign(false, pat, val)\n      }\n      Stmt::InPlace { op, pat, val, nxt } => {\n        let (ask, nxt_pat, nxt) = take(*nxt)?;\n        // if it is a mapper operation\n        if let InPlaceOp::Map = op {\n          let term = match &*pat {\n            AssignPattern::MapSet(map, key) => {\n              let rhs = fun::Term::call(\n                fun::Term::r#ref(\"Map/map\"),\n                [fun::Term::Var { nam: map.clone() }, key.clone().to_fun(), val.clone().to_fun()],\n              );\n              fun::Term::Let {\n                pat: Box::new(fun::Pattern::Var(Some(map.clone()))),\n                val: Box::new(rhs),\n                nxt: Box::new(nxt),\n              }\n            }\n            _ => {\n              let rhs = fun::Term::call(val.to_fun(), [pat.clone().into_fun().to_term()]);\n              fun::Term::Let { pat: Box::new(pat.into_fun()), val: Box::new(rhs), nxt: Box::new(nxt) }\n            }\n          };\n\n          return Ok(wrap(nxt_pat, term, ask));\n        }\n\n        // otherwise\n        match *pat {\n          AssignPattern::Var(var) => {\n            let term = fun::Term::Let {\n              pat: Box::new(fun::Pattern::Var(Some(var.clone()))),\n              val: Box::new(fun::Term::Oper {\n                opr: op.to_lang_op(),\n                fst: Box::new(fun::Term::Var { nam: var }),\n                snd: Box::new(val.to_fun()),\n              }),\n              nxt: Box::new(nxt),\n            };\n            wrap(nxt_pat, term, ask)\n          }\n          AssignPattern::MapSet(map, key) => {\n            let temp = Name::new(\"%0\");\n            let partial =\n              Expr::Opr { op: op.to_lang_op(), lhs: Box::new(Expr::Var { nam: temp.clone() }), rhs: val };\n            let map_fn = Expr::Lam { names: vec![(temp, false)], bod: Box::new(partial) };\n            let map_term = fun::Term::call(\n              fun::Term::r#ref(\"Map/map\"),\n              [fun::Term::Var { nam: map.clone() }, key.to_fun(), map_fn.to_fun()],\n            );\n            let term = fun::Term::Let {\n              pat: Box::new(fun::Pattern::Var(Some(map))),\n              val: Box::new(map_term),\n              nxt: Box::new(nxt),\n            };\n            wrap(nxt_pat, term, ask)\n          }\n          _ => unreachable!(),\n        }\n      }\n      Stmt::If { cond, then, otherwise, nxt } => {\n        let (ask, pat, then, else_) = match (then.into_fun()?, otherwise.into_fun()?) {\n          (StmtToFun::Return(t), StmtToFun::Return(e)) => (false, None, t, e),\n          (StmtToFun::Assign(ask, tp, t), StmtToFun::Assign(ask_, ep, e)) if tp == ep => {\n            (ask && ask_, Some(tp), t, e)\n          }\n          (StmtToFun::Assign(..), StmtToFun::Assign(..)) => {\n            return Err(\"'if' branches end with different assignments.\".to_string())?;\n          }\n          (StmtToFun::Return(..), StmtToFun::Assign(..)) => {\n            return Err(\n              \"Expected 'else' branch from 'if' to return, but it ends with assignment.\".to_string(),\n            )?;\n          }\n          (StmtToFun::Assign(..), StmtToFun::Return(..)) => {\n            return Err(\n              \"Expected 'else' branch from 'if' to end with assignment, but it returns.\".to_string(),\n            )?;\n          }\n        };\n        let arms = vec![else_, then];\n        let term = fun::Term::Swt {\n          arg: Box::new(cond.to_fun()),\n          bnd: Some(Name::new(\"%pred\")),\n          with_bnd: vec![],\n          with_arg: vec![],\n          pred: Some(Name::new(\"%pred-1\")),\n          arms,\n        };\n        wrap_nxt_assign_stmt(term, nxt, pat, ask)?\n      }\n      Stmt::Match { arg, bnd, with_bnd, with_arg, arms, nxt } => {\n        let arg = arg.to_fun();\n        let mut fun_arms = vec![];\n        let mut arms = arms.into_iter();\n        let fst = arms.next().unwrap();\n        let (fst_ask, fst_pat, fst_rgt) = take(fst.rgt)?;\n        let with_arg = with_arg.into_iter().map(Expr::to_fun).collect();\n        fun_arms.push((fst.lft, vec![], fst_rgt));\n        for arm in arms {\n          let (arm_ask, arm_pat, arm_rgt) = take(arm.rgt)?;\n          match (&arm_pat, &fst_pat) {\n            (Some(arm_pat), Some(fst_pat)) if arm_pat != fst_pat || arm_ask != fst_ask => {\n              return Err(\"'match' arms end with different assignments.\".to_string())?;\n            }\n            (Some(_), None) => {\n              return Err(\"Expected 'match' arms to end with assignment, but it returns.\".to_string())?;\n            }\n            (None, Some(_)) => {\n              return Err(\"Expected 'match' arms to return, but it ends with assignment.\".to_string())?;\n            }\n            (Some(_), Some(_)) => fun_arms.push((arm.lft, vec![], arm_rgt)),\n            (None, None) => fun_arms.push((arm.lft, vec![], arm_rgt)),\n          }\n        }\n        let term = fun::Term::Mat { arg: Box::new(arg), bnd, with_bnd, with_arg, arms: fun_arms };\n        wrap_nxt_assign_stmt(term, nxt, fst_pat, fst_ask)?\n      }\n      Stmt::Switch { arg, bnd, with_bnd, with_arg, arms, nxt } => {\n        let arg = arg.to_fun();\n        let mut fun_arms = vec![];\n        let mut arms = arms.into_iter();\n        let fst = arms.next().unwrap();\n        let (fst_ask, fst_pat, fst) = take(fst)?;\n        let with_arg = with_arg.into_iter().map(Expr::to_fun).collect();\n        fun_arms.push(fst);\n        for arm in arms {\n          let (arm_ask, arm_pat, arm) = take(arm)?;\n          match (&arm_pat, &fst_pat) {\n            (Some(arm_pat), Some(fst_pat)) if arm_pat != fst_pat || arm_ask != fst_ask => {\n              return Err(\"'switch' arms end with different assignments.\".to_string())?;\n            }\n            (Some(_), None) => {\n              return Err(\"Expected 'switch' arms to end with assignment, but it returns.\".to_string())?;\n            }\n            (None, Some(_)) => {\n              return Err(\"Expected 'switch' arms to return, but it ends with assignment.\".to_string())?;\n            }\n            (Some(_), Some(_)) => fun_arms.push(arm),\n            (None, None) => fun_arms.push(arm),\n          }\n        }\n        let pred = Some(Name::new(format!(\"{}-{}\", bnd.clone().unwrap(), fun_arms.len() - 1)));\n        let term = fun::Term::Swt { arg: Box::new(arg), bnd, with_bnd, with_arg, pred, arms: fun_arms };\n        wrap_nxt_assign_stmt(term, nxt, fst_pat, fst_ask)?\n      }\n      Stmt::Fold { arg, bnd, with_bnd, with_arg, arms, nxt } => {\n        let arg = arg.to_fun();\n        let mut fun_arms = vec![];\n        let mut arms = arms.into_iter();\n        let fst = arms.next().unwrap();\n        let (fst_ask, fst_pat, fst_rgt) = take(fst.rgt)?;\n        fun_arms.push((fst.lft, vec![], fst_rgt));\n        let with_arg = with_arg.into_iter().map(Expr::to_fun).collect();\n        for arm in arms {\n          let (arm_ask, arm_pat, arm_rgt) = take(arm.rgt)?;\n          match (&arm_pat, &fst_pat) {\n            (Some(arm_pat), Some(fst_pat)) if arm_pat != fst_pat || arm_ask != fst_ask => {\n              return Err(\"'fold' arms end with different assignments.\".to_string())?;\n            }\n            (Some(_), None) => {\n              return Err(\"Expected 'fold' arms to end with assignment, but it returns.\".to_string())?;\n            }\n            (None, Some(_)) => {\n              return Err(\"Expected 'fold' arms to return, but it ends with assignment.\".to_string())?;\n            }\n            (Some(_), Some(_)) => fun_arms.push((arm.lft, vec![], arm_rgt)),\n            (None, None) => fun_arms.push((arm.lft, vec![], arm_rgt)),\n          }\n        }\n        let term = fun::Term::Fold { arg: Box::new(arg), bnd, with_bnd, with_arg, arms: fun_arms };\n        wrap_nxt_assign_stmt(term, nxt, fst_pat, fst_ask)?\n      }\n      Stmt::Bend { bnd, arg, cond, step, base, nxt } => {\n        let arg = arg.into_iter().map(Expr::to_fun).collect();\n        let cond = cond.to_fun();\n        let (ask, pat, step, base) = match (step.into_fun()?, base.into_fun()?) {\n          (StmtToFun::Return(s), StmtToFun::Return(b)) => (false, None, s, b),\n          (StmtToFun::Assign(aa, sp, s), StmtToFun::Assign(ba, bp, b)) if sp == bp => {\n            (aa && ba, Some(sp), s, b)\n          }\n          (StmtToFun::Assign(..), StmtToFun::Assign(..)) => {\n            return Err(\"'bend' branches end with different assignments.\".to_string())?;\n          }\n          (StmtToFun::Return(..), StmtToFun::Assign(..)) => {\n            return Err(\n              \"Expected 'else' branch from 'bend' to return, but it ends with assignment.\".to_string(),\n            )?;\n          }\n          (StmtToFun::Assign(..), StmtToFun::Return(..)) => {\n            return Err(\n              \"Expected 'else' branch from 'bend' to end with assignment, but it returns.\".to_string(),\n            )?;\n          }\n        };\n        let term =\n          fun::Term::Bend { bnd, arg, cond: Box::new(cond), step: Box::new(step), base: Box::new(base) };\n        wrap_nxt_assign_stmt(term, nxt, pat, ask)?\n      }\n      Stmt::With { typ, bod, nxt } => {\n        let (ask, pat, bod) = take(*bod)?;\n        let term = fun::Term::With { typ, bod: Box::new(bod) };\n        wrap_nxt_assign_stmt(term, nxt, pat, ask)?\n      }\n      Stmt::Ask { pat, val, nxt: Some(nxt) } => {\n        let (ask, nxt_pat, nxt) = take(*nxt)?;\n        let term =\n          fun::Term::Ask { pat: Box::new(pat.into_fun()), val: Box::new(val.to_fun()), nxt: Box::new(nxt) };\n        wrap(nxt_pat, term, ask)\n      }\n      Stmt::Ask { pat, val, nxt: None } => {\n        let pat = pat.into_fun();\n        let val = val.to_fun();\n        StmtToFun::Assign(true, pat, val)\n      }\n      Stmt::Open { typ, var, nxt } => {\n        let (ask, nxt_pat, nxt) = take(*nxt)?;\n        let term = fun::Term::Open { typ, var, bod: Box::new(nxt) };\n        wrap(nxt_pat, term, ask)\n      }\n      Stmt::Use { nam, val, nxt } => {\n        let (ask, nxt_pat, nxt) = take(*nxt)?;\n        let term = fun::Term::Use { nam: Some(nam), val: Box::new(val.to_fun()), nxt: Box::new(nxt) };\n        wrap(nxt_pat, term, ask)\n      }\n      Stmt::Return { term } => StmtToFun::Return(term.to_fun()),\n      Stmt::LocalDef { def, nxt } => {\n        let (ask, nxt_pat, nxt) = take(*nxt)?;\n        let def = def.to_fun().map_err(|e| e.display_only_messages().to_string())?;\n        let term = fun::Term::Def { def, nxt: Box::new(nxt) };\n        wrap(nxt_pat, term, ask)\n      }\n      Stmt::Err => unreachable!(),\n    };\n    Ok(stmt_to_fun)\n  }\n}\n\nimpl Expr {\n  pub fn to_fun(self) -> fun::Term {\n    match self {\n      Expr::Era => fun::Term::Era,\n      Expr::Var { nam } => fun::Term::Var { nam },\n      Expr::Chn { nam } => fun::Term::Link { nam },\n      Expr::Num { val } => fun::Term::Num { val },\n      Expr::Call { fun, args, kwargs } => {\n        assert!(kwargs.is_empty());\n        let args = args.into_iter().map(Self::to_fun);\n        fun::Term::call(fun.to_fun(), args)\n      }\n      Expr::Lam { names, bod } => names.into_iter().rfold(bod.to_fun(), |acc, (name, link)| fun::Term::Lam {\n        tag: fun::Tag::Static,\n        pat: Box::new(if link { fun::Pattern::Chn(name) } else { fun::Pattern::Var(Some(name)) }),\n        bod: Box::new(acc),\n      }),\n      Expr::Opr { op, lhs, rhs } => {\n        fun::Term::Oper { opr: op, fst: Box::new(lhs.to_fun()), snd: Box::new(rhs.to_fun()) }\n      }\n      Expr::Str { val } => fun::Term::Str { val },\n      Expr::Lst { els } => fun::Term::List { els: els.into_iter().map(Self::to_fun).collect() },\n      Expr::Tup { els } => fun::Term::Fan {\n        fan: fun::FanKind::Tup,\n        tag: fun::Tag::Static,\n        els: els.into_iter().map(Self::to_fun).collect(),\n      },\n      Expr::Sup { els } => fun::Term::Fan {\n        fan: fun::FanKind::Dup,\n        tag: fun::Tag::Auto,\n        els: els.into_iter().map(Self::to_fun).collect(),\n      },\n      Expr::Ctr { name, args, kwargs } => {\n        assert!(kwargs.is_empty());\n        let args = args.into_iter().map(Self::to_fun);\n        fun::Term::call(fun::Term::Var { nam: name }, args)\n      }\n      Expr::LstMap { term, bind, iter, cond } => {\n        const ITER_TAIL: &str = \"%iter.tail\";\n        const ITER_HEAD: &str = \"%iter.head\";\n\n        let cons_branch = fun::Term::call(\n          fun::Term::r#ref(LCONS),\n          [term.to_fun(), fun::Term::Var { nam: Name::new(ITER_TAIL) }],\n        );\n        let cons_branch = if let Some(cond) = cond {\n          fun::Term::Swt {\n            arg: Box::new(cond.to_fun()),\n            bnd: Some(Name::new(\"%comprehension\")),\n            with_bnd: vec![],\n            with_arg: vec![],\n            pred: Some(Name::new(\"%comprehension-1\")),\n            arms: vec![fun::Term::Var { nam: Name::new(ITER_TAIL) }, cons_branch],\n          }\n        } else {\n          cons_branch\n        };\n        let cons_branch = fun::Term::Let {\n          pat: Box::new(fun::Pattern::Var(Some(bind))),\n          val: Box::new(fun::Term::Var { nam: Name::new(ITER_HEAD) }),\n          nxt: Box::new(cons_branch),\n        };\n\n        fun::Term::Fold {\n          bnd: Some(Name::new(\"%iter\")),\n          arg: Box::new(iter.to_fun()),\n          with_bnd: vec![],\n          with_arg: vec![],\n          arms: vec![\n            (Some(Name::new(LNIL)), vec![], fun::Term::r#ref(LNIL)),\n            (Some(Name::new(LCONS)), vec![], cons_branch),\n          ],\n        }\n      }\n      Expr::Map { entries } => map_init(entries),\n      Expr::MapGet { .. } => unreachable!(),\n      Expr::TreeNode { left, right } => {\n        let left = left.to_fun();\n        let right = right.to_fun();\n        fun::Term::call(fun::Term::r#ref(\"Tree/Node\"), [left, right])\n      }\n      Expr::TreeLeaf { val } => {\n        let val = val.to_fun();\n        fun::Term::app(fun::Term::r#ref(\"Tree/Leaf\"), val)\n      }\n    }\n  }\n}\n\nfn map_init(entries: Vec<(Expr, Expr)>) -> fun::Term {\n  let mut map = fun::Term::Ref { nam: fun::Name::new(\"Map/empty\") };\n  for (key, value) in entries {\n    map =\n      fun::Term::call(fun::Term::Ref { nam: fun::Name::new(\"Map/set\") }, [map, key.to_fun(), value.to_fun()]);\n  }\n  map\n}\n\n/// If the statement was a return, returns it, erroring if there is another after it.\n/// Otherwise, turns it into a 'let' and returns the next statement.\nfn wrap_nxt_assign_stmt(\n  term: fun::Term,\n  nxt: Option<Box<Stmt>>,\n  pat: Option<fun::Pattern>,\n  ask: bool,\n) -> Result<StmtToFun, String> {\n  if let Some(nxt) = nxt {\n    if let Some(pat) = pat {\n      let (ask_nxt, nxt_pat, nxt) = take(*nxt)?;\n      let term = if ask {\n        fun::Term::Ask { pat: Box::new(pat), val: Box::new(term), nxt: Box::new(nxt) }\n      } else {\n        fun::Term::Let { pat: Box::new(pat), val: Box::new(term), nxt: Box::new(nxt) }\n      };\n      Ok(wrap(nxt_pat, term, ask_nxt))\n    } else {\n      Err(\"Statement ends with return but is not at end of function.\".to_string())?\n    }\n  } else if let Some(pat) = pat {\n    Ok(StmtToFun::Assign(ask, pat, term))\n  } else {\n    Ok(StmtToFun::Return(term))\n  }\n}\n"
  },
  {
    "path": "src/imports/book.rs",
    "content": "use super::{BindMap, ImportsMap, PackageLoader};\nuse crate::{\n  diagnostics::{Diagnostics, DiagnosticsConfig},\n  fun::{\n    parser::ParseBook, Adt, AdtCtr, Book, Definition, HvmDefinition, Name, Pattern, Source, SourceKind, Term,\n  },\n  imp::{self, Expr, MatchArm, Stmt},\n  imports::packages::Packages,\n  maybe_grow,\n};\nuse indexmap::{map::Entry, IndexMap};\nuse itertools::Itertools;\n\nimpl ParseBook {\n  /// Loads and applies imports recursively to a ParseBook,\n  /// transforming definitions and ADTs to a canonical name,\n  /// and adding `use` binds so that names are accessible by their alias.\n  ///\n  /// # Details\n  ///\n  /// The process involves:\n  ///\n  /// 1. Loading imports recursively using the provided `loader`.\n  /// 2. Transforming definitions and ADTs with naming transformations.\n  /// 3. Adding binds for aliases and old names in their respective definitions.\n  /// 4. Converting the ParseBook into its functional form.\n  /// 5. Perform any necessary post-processing.\n  pub fn load_imports(\n    self,\n    mut loader: impl PackageLoader,\n    diag_config: DiagnosticsConfig,\n  ) -> Result<Book, Diagnostics> {\n    let diag = &mut Diagnostics::new(diag_config);\n    let pkgs = &mut Packages::new(self);\n    // Load all the imports recursively, saving them in `pkgs`.\n    // `book` is the root book with the entry point.\n    let mut book = pkgs.load_imports(&mut loader, diag)?;\n\n    // Apply the imports to the book\n    book.apply_imports(None, diag, pkgs)?;\n    diag.fatal(())?;\n    eprint!(\"{}\", diag);\n\n    // Convert the parse-level AST into the internal functional representation.\n    let mut book = book.to_fun()?;\n\n    // Process terms that contains constructors names and can't be updated by `desugar_use`.\n    book.desugar_ctr_use();\n\n    Ok(book)\n  }\n\n  /// Loads the imported books recursively into the importing book,\n  /// then apply imported names or aliases binds to its definitions.\n  fn apply_imports(\n    &mut self,\n    main_imports: Option<&ImportsMap>,\n    diag: &mut Diagnostics,\n    pkgs: &mut Packages,\n  ) -> Result<(), Diagnostics> {\n    self.load_packages(main_imports, diag, pkgs)?;\n    self.apply_import_binds(main_imports, pkgs);\n    Ok(())\n  }\n\n  /// Consumes the book imported packages,\n  /// applying the imports recursively of every nested book.\n  fn load_packages(\n    &mut self,\n    main_imports: Option<&ImportsMap>,\n    diag: &mut Diagnostics,\n    pkgs: &mut Packages,\n  ) -> Result<(), Diagnostics> {\n    let sources = self.import_ctx.sources().into_iter().cloned().collect_vec();\n\n    for src in sources {\n      let Some(package) = pkgs.books.swap_remove(&src) else { continue };\n      let mut package = package.into_inner();\n\n      // Can not be done outside the loop/function because of the borrow checker.\n      // Just serves to pass only the import map of the first call to `apply_imports_go`.\n      let main_imports = main_imports.unwrap_or(&self.import_ctx.map);\n\n      package.apply_imports(Some(main_imports), diag, pkgs)?;\n\n      // Rename ADTs and defs, applying binds from old names to new names\n      package.apply_adts(&src, main_imports);\n      package.apply_defs(&src, main_imports);\n\n      let Book { defs, hvm_defs, adts, .. } = package.to_fun()?;\n\n      // Add the ADTs to the importing book,\n      // saving the constructors names to be used when applying ADTs binds.\n      for (name, adt) in adts {\n        let adts = pkgs.loaded_adts.entry(src.clone()).or_default();\n        adts.insert(name.clone(), adt.ctrs.keys().cloned().collect_vec());\n        self.add_imported_adt(name, adt, diag);\n      }\n\n      // The names on the indexmap are the original ones, so we ignore them\n      for def in defs.into_values() {\n        self.add_imported_def(def, diag);\n      }\n\n      // The names on the indexmap are the original ones, so we ignore them\n      for def in hvm_defs.into_values() {\n        self.add_imported_hvm_def(def, diag);\n      }\n    }\n    Ok(())\n  }\n\n  /// Applies a chain of `use bind = src` to every local definition.\n  ///\n  /// Must be used after `load_packages`\n  fn apply_import_binds(&mut self, main_imports: Option<&ImportsMap>, pkgs: &Packages) {\n    // Can not be done outside the function because of the borrow checker.\n    // Just serves to pass only the import map of the first call to `apply_imports_go`.\n    let main_imports = main_imports.unwrap_or(&self.import_ctx.map);\n    let mut local_imports = BindMap::new();\n    let mut adt_imports = BindMap::new();\n\n    // Collect local imports binds, starting with `__` if not imported by the main book.\n    'outer: for (bind, src) in self.import_ctx.map.binds.iter().rev() {\n      if self.contains_def(bind) | self.ctrs.contains_key(bind) | self.adts.contains_key(bind) {\n        // TODO: Here we should show warnings for shadowing of imported names by local def/ctr/adt\n        // It can be done, but when importing with `ImportType::Single` files in the same folder,\n        // it gives a false positive warning\n        continue;\n      }\n\n      let nam = if main_imports.contains_source(src) { src.clone() } else { Name::new(format!(\"__{}\", src)) };\n\n      // Checks if the bind is an loaded ADT name,\n      // If so, add the constructors binds as `bind/ctr` instead.\n      for pkg in self.import_ctx.sources() {\n        if let Some(book) = pkgs.loaded_adts.get(pkg) {\n          if let Some(ctrs) = book.get(&nam) {\n            for ctr in ctrs.iter().rev() {\n              let full_ctr_name = ctr.split(\"__\").nth(1).unwrap_or(ctr.as_ref());\n              let ctr_name = full_ctr_name.strip_prefix(src.as_ref()).unwrap();\n              let bind = Name::new(format!(\"{}{}\", bind, ctr_name));\n              local_imports.insert(bind, ctr.clone());\n            }\n            // Add a mapping of the ADT name\n            adt_imports.insert(bind.clone(), nam.clone());\n            continue 'outer;\n          }\n        }\n      }\n\n      // Not a constructor, so just insert the bind.\n      local_imports.insert(bind.clone(), nam);\n    }\n\n    for (_, def) in self.local_defs_mut() {\n      def.apply_binds(true, &local_imports);\n      def.apply_type_binds(&adt_imports);\n    }\n  }\n\n  /// Applying the necessary naming transformations to the book ADTs,\n  /// adding `use ctr = ctr_src` chains to every local definition and\n  /// substituting the name of type ctrs for the canonical ones.\n  fn apply_adts(&mut self, src: &Name, main_imports: &ImportsMap) {\n    let adts = std::mem::take(&mut self.adts);\n    let mut new_adts = IndexMap::new();\n    let mut adts_map = vec![];\n    let mut ctrs_map = IndexMap::new();\n    let mut new_ctrs = IndexMap::new();\n\n    // Rename the ADTs and constructors to their canonical name,\n    // starting with `__` if not imported by the main book.\n    for (mut name, mut adt) in adts {\n      if adt.source.is_local() {\n        adt.source.kind = SourceKind::Imported;\n        let old_name = name.clone();\n        name = Name::new(format!(\"{}/{}\", src, name));\n\n        let mangle_name = !main_imports.contains_source(&name);\n        let mut mangle_adt_name = mangle_name;\n\n        for (old_nam, ctr) in std::mem::take(&mut adt.ctrs) {\n          let mut ctr_name = Name::new(format!(\"{}/{}\", src, old_nam));\n\n          let mangle_ctr = mangle_name && !main_imports.contains_source(&ctr_name);\n\n          if mangle_ctr {\n            mangle_adt_name = true;\n            ctr_name = Name::new(format!(\"__{}\", ctr_name));\n          }\n\n          let ctr = AdtCtr { name: ctr_name.clone(), ..ctr };\n          new_ctrs.insert(ctr_name.clone(), name.clone());\n          ctrs_map.insert(old_nam, ctr_name.clone());\n          adt.ctrs.insert(ctr_name, ctr);\n        }\n\n        if mangle_adt_name {\n          name = Name::new(format!(\"__{}\", name));\n        }\n\n        adt.name = name.clone();\n        adts_map.push((old_name, name.clone()));\n      }\n\n      new_adts.insert(name.clone(), adt);\n    }\n\n    // Apply the binds for the type constructors in the constructor types\n    for (_, adt) in &mut new_adts {\n      for (_, ctr) in &mut adt.ctrs {\n        for (from, to) in &adts_map {\n          ctr.typ.subst_ctr(from, to);\n        }\n      }\n    }\n\n    let adts_map = adts_map.into_iter().collect::<IndexMap<_, _>>();\n    for (_, def) in self.local_defs_mut() {\n      // Applies the binds for the new constructor names for every definition.\n      def.apply_binds(true, &ctrs_map);\n\n      // Apply the binds for the type constructors in the def types and in the `def` terms.\n      def.apply_type_binds(&adts_map);\n    }\n\n    self.adts = new_adts;\n    self.ctrs = new_ctrs;\n  }\n\n  /// Apply the necessary naming transformations to the book definitions,\n  /// adding `use def = def_src` chains to every local definition.\n  fn apply_defs(&mut self, src: &Name, main_imports: &ImportsMap) {\n    let mut canonical_map: IndexMap<_, _> = IndexMap::new();\n\n    // Rename the definitions to their canonical name\n    // Starting with `__` if not imported by the main book.\n    for (_, def) in self.local_defs_mut() {\n      def.canonicalize_name(src, main_imports, &mut canonical_map);\n    }\n\n    // Applies the binds for the new names for every definition\n    for (_, def) in self.local_defs_mut() {\n      def.apply_binds(false, &canonical_map);\n      def.source_mut().kind = SourceKind::Imported;\n    }\n  }\n}\n\n/// Helper functions\nimpl ParseBook {\n  pub fn top_level_names(&self) -> impl Iterator<Item = &Name> {\n    let imp_defs = self.imp_defs.keys();\n    let fun_defs = self.fun_defs.keys();\n    let hvm_defs = self.hvm_defs.keys();\n    let adts = self.adts.keys();\n    let ctrs = self.ctrs.keys();\n\n    imp_defs.chain(fun_defs).chain(hvm_defs).chain(adts).chain(ctrs)\n  }\n\n  fn add_imported_adt(&mut self, nam: Name, adt: Adt, diag: &mut Diagnostics) {\n    if self.adts.get(&nam).is_some() {\n      let err = format!(\"The imported datatype '{nam}' conflicts with the datatype '{nam}'.\");\n      diag.add_book_error(err);\n    } else {\n      for ctr in adt.ctrs.keys() {\n        if self.contains_def(ctr) {\n          let err = format!(\"The imported constructor '{ctr}' conflicts with the definition '{ctr}'.\");\n          diag.add_book_error(err);\n        }\n        match self.ctrs.entry(ctr.clone()) {\n          Entry::Vacant(e) => _ = e.insert(nam.clone()),\n          Entry::Occupied(e) => {\n            let ctr = e.key();\n            let err = format!(\"The imported constructor '{ctr}' conflicts with the constructor '{ctr}'.\");\n            diag.add_book_error(err);\n          }\n        }\n      }\n      self.adts.insert(nam, adt);\n    }\n  }\n\n  fn add_imported_def(&mut self, def: Definition, diag: &mut Diagnostics) {\n    if !self.has_def_conflict(&def.name, diag) {\n      self.fun_defs.insert(def.name.clone(), def);\n    }\n  }\n\n  fn add_imported_hvm_def(&mut self, def: HvmDefinition, diag: &mut Diagnostics) {\n    if !self.has_def_conflict(&def.name, diag) {\n      self.hvm_defs.insert(def.name.clone(), def);\n    }\n  }\n\n  fn has_def_conflict(&mut self, name: &Name, diag: &mut Diagnostics) -> bool {\n    if self.contains_def(name) {\n      let err = format!(\"The imported definition '{name}' conflicts with the definition '{name}'.\");\n      diag.add_book_error(err);\n      true\n    } else if self.ctrs.contains_key(name) {\n      let err = format!(\"The imported definition '{name}' conflicts with the constructor '{name}'.\");\n      diag.add_book_error(err);\n      true\n    } else {\n      false\n    }\n  }\n\n  fn local_defs_mut(&mut self) -> impl Iterator<Item = (&Name, &mut dyn Def)> {\n    let fun = self.fun_defs.iter_mut().map(|(nam, def)| (nam, def as &mut dyn Def));\n    let imp = self.imp_defs.iter_mut().map(|(nam, def)| (nam, def as &mut dyn Def));\n    let hvm = self.hvm_defs.iter_mut().map(|(nam, def)| (nam, def as &mut dyn Def));\n    fun.chain(imp).chain(hvm).filter(|(_, def)| def.source().is_local())\n  }\n}\n\n/// Common functions for the different definition types\ntrait Def {\n  fn canonicalize_name(&mut self, src: &Name, main_imports: &ImportsMap, binds: &mut BindMap) {\n    let def_name = self.name_mut();\n    let mut new_name = Name::new(format!(\"{}/{}\", src, def_name));\n\n    if !main_imports.contains_source(&new_name) {\n      new_name = Name::new(format!(\"__{}\", new_name));\n    }\n\n    binds.insert(def_name.clone(), new_name.clone());\n    *def_name = new_name;\n  }\n\n  /// Applies the binds for definition names by placing `use` terms.\n  ///\n  /// If we know that the bind map doesn't contain any constructor names,\n  /// we skip renaming rule patterns.\n  fn apply_binds(&mut self, maybe_constructor: bool, binds: &BindMap);\n\n  fn apply_type_binds(&mut self, binds: &BindMap);\n\n  fn source(&self) -> &Source;\n  fn source_mut(&mut self) -> &mut Source;\n  fn name_mut(&mut self) -> &mut Name;\n}\n\nimpl Def for Definition {\n  fn apply_binds(&mut self, maybe_constructor: bool, binds: &BindMap) {\n    fn rename_ctr_pattern(pat: &mut Pattern, binds: &BindMap) {\n      for pat in pat.children_mut() {\n        rename_ctr_pattern(pat, binds);\n      }\n      match pat {\n        Pattern::Ctr(nam, _) => {\n          if let Some(alias) = binds.get(nam) {\n            *nam = alias.clone();\n          }\n        }\n        Pattern::Var(Some(nam)) => {\n          if let Some(alias) = binds.get(nam) {\n            *nam = alias.clone();\n          }\n        }\n        _ => {}\n      }\n    }\n\n    for rule in &mut self.rules {\n      if maybe_constructor {\n        for pat in &mut rule.pats {\n          rename_ctr_pattern(pat, binds);\n        }\n      }\n      let bod = std::mem::take(&mut rule.body);\n      rule.body = bod.fold_uses(binds.iter().rev());\n    }\n  }\n\n  fn apply_type_binds(&mut self, binds: &BindMap) {\n    for (from, to) in binds.iter().rev() {\n      self.typ.subst_ctr(from, to);\n      for rule in &mut self.rules {\n        rule.body.subst_type_ctrs(from, to);\n      }\n    }\n  }\n\n  fn source(&self) -> &Source {\n    &self.source\n  }\n\n  fn source_mut(&mut self) -> &mut Source {\n    &mut self.source\n  }\n\n  fn name_mut(&mut self) -> &mut Name {\n    &mut self.name\n  }\n}\n\nimpl Def for imp::Definition {\n  fn apply_binds(&mut self, _maybe_constructor: bool, binds: &BindMap) {\n    let bod = std::mem::take(&mut self.body);\n    self.body = bod.fold_uses(binds.iter().rev());\n  }\n\n  fn apply_type_binds(&mut self, binds: &BindMap) {\n    fn subst_type_ctrs_stmt(stmt: &mut Stmt, from: &Name, to: &Name) {\n      maybe_grow(|| match stmt {\n        Stmt::Assign { nxt, .. } => {\n          if let Some(nxt) = nxt {\n            subst_type_ctrs_stmt(nxt, from, to);\n          }\n        }\n        Stmt::InPlace { nxt, .. } => {\n          subst_type_ctrs_stmt(nxt, from, to);\n        }\n        Stmt::If { then, otherwise, nxt, .. } => {\n          subst_type_ctrs_stmt(then, from, to);\n          subst_type_ctrs_stmt(otherwise, from, to);\n          if let Some(nxt) = nxt {\n            subst_type_ctrs_stmt(nxt, from, to);\n          }\n        }\n        Stmt::Match { arms, nxt, .. } => {\n          for MatchArm { lft: _, rgt } in arms {\n            subst_type_ctrs_stmt(rgt, from, to);\n          }\n          if let Some(nxt) = nxt {\n            subst_type_ctrs_stmt(nxt, from, to);\n          }\n        }\n        Stmt::Switch { arms, nxt, .. } => {\n          for arm in arms {\n            subst_type_ctrs_stmt(arm, from, to);\n          }\n          if let Some(nxt) = nxt {\n            subst_type_ctrs_stmt(nxt, from, to);\n          }\n        }\n        Stmt::Bend { step, base, nxt, .. } => {\n          subst_type_ctrs_stmt(step, from, to);\n          subst_type_ctrs_stmt(base, from, to);\n          if let Some(nxt) = nxt {\n            subst_type_ctrs_stmt(nxt, from, to);\n          }\n        }\n        Stmt::Fold { arms, nxt, .. } => {\n          for MatchArm { lft: _, rgt } in arms {\n            subst_type_ctrs_stmt(rgt, from, to);\n          }\n          if let Some(nxt) = nxt {\n            subst_type_ctrs_stmt(nxt, from, to);\n          }\n        }\n        Stmt::With { typ, bod, nxt } => {\n          if typ == from {\n            *typ = to.clone();\n          }\n          subst_type_ctrs_stmt(bod, from, to);\n          if let Some(nxt) = nxt {\n            subst_type_ctrs_stmt(nxt, from, to);\n          }\n        }\n        Stmt::Ask { nxt, .. } => {\n          if let Some(nxt) = nxt {\n            subst_type_ctrs_stmt(nxt, from, to);\n          }\n        }\n        Stmt::Return { .. } => {}\n        Stmt::Open { typ, nxt, .. } => {\n          if typ == from {\n            *typ = to.clone();\n          }\n          subst_type_ctrs_stmt(nxt, from, to);\n        }\n        Stmt::Use { nxt, .. } => {\n          subst_type_ctrs_stmt(nxt, from, to);\n        }\n        Stmt::LocalDef { def, nxt } => {\n          def.apply_type_binds(&[(from.clone(), to.clone())].into_iter().collect());\n          subst_type_ctrs_stmt(nxt, from, to);\n        }\n        Stmt::Err => {}\n      })\n    }\n    for (from, to) in binds.iter().rev() {\n      self.typ.subst_ctr(from, to);\n      subst_type_ctrs_stmt(&mut self.body, from, to);\n    }\n  }\n\n  fn source(&self) -> &Source {\n    &self.source\n  }\n\n  fn source_mut(&mut self) -> &mut Source {\n    &mut self.source\n  }\n\n  fn name_mut(&mut self) -> &mut Name {\n    &mut self.name\n  }\n}\n\nimpl Def for HvmDefinition {\n  /// Do nothing, can not apply binds to a HvmDefinition.\n  fn apply_binds(&mut self, _maybe_constructor: bool, _binds: &BindMap) {}\n\n  fn apply_type_binds(&mut self, binds: &BindMap) {\n    for (from, to) in binds.iter().rev() {\n      self.typ.subst_ctr(from, to);\n    }\n  }\n\n  fn source(&self) -> &Source {\n    &self.source\n  }\n\n  fn source_mut(&mut self) -> &mut Source {\n    &mut self.source\n  }\n\n  fn name_mut(&mut self) -> &mut Name {\n    &mut self.name\n  }\n\n  fn canonicalize_name(&mut self, src: &Name, main_imports: &ImportsMap, binds: &mut BindMap) {\n    let def_name = self.name_mut();\n    let mut new_name = Name::new(std::format!(\"{}/{}\", src, def_name));\n\n    if !main_imports.contains_source(&new_name) {\n      new_name = Name::new(std::format!(\"__{}\", new_name));\n    }\n\n    binds.insert(def_name.clone(), new_name.clone());\n    *def_name = new_name;\n  }\n}\n\nimpl Term {\n  fn fold_uses<'a>(self, map: impl Iterator<Item = (&'a Name, &'a Name)>) -> Self {\n    map.fold(self, |acc, (bind, nam)| Self::Use {\n      nam: Some(bind.clone()),\n      val: Box::new(Self::Var { nam: nam.clone() }),\n      nxt: Box::new(acc),\n    })\n  }\n}\n\nimpl Stmt {\n  fn fold_uses<'a>(self, map: impl Iterator<Item = (&'a Name, &'a Name)>) -> Self {\n    map.fold(self, |acc, (bind, nam)| Self::Use {\n      nam: bind.clone(),\n      val: Box::new(Expr::Var { nam: nam.clone() }),\n      nxt: Box::new(acc),\n    })\n  }\n}\n"
  },
  {
    "path": "src/imports/loader.rs",
    "content": "use super::{BoundSource, Import, ImportType};\nuse crate::fun::Name;\nuse indexmap::IndexMap;\nuse std::{\n  collections::HashSet,\n  path::{Component, Path, PathBuf},\n};\n\npub type Sources = IndexMap<Name, String>;\n\n/// Trait to load packages from various sources.\npub trait PackageLoader {\n  /// Load a package specified by the `import` parameter.\n  ///\n  /// # Parameters\n  ///\n  /// - `import`: A mutable reference to an `Import` structure, which contains:\n  ///   - `path`: The path to the package or directory to be imported.\n  ///   - `imp_type`: The type of import, which can specify a single name, a list of names, or all names in a path.\n  ///   - `relative`: A boolean indicating if the path is relative to the current directory.\n  ///   - `src`: A `BoundSource` to be updated with the names of the located files.\n  ///\n  /// # Behavior\n  ///\n  /// The `load` method is responsible for locating and loading the requested package(s).\n  /// The loaded packages are returned as a `Sources` map, where the key is the package name and the value is its content.\n  /// Implementers must:\n  ///\n  /// - Track already loaded sources to avoid loading and returning them again.\n  /// - Update `import.src` with the names of the found packages, even if they are not included in the `Sources` map.\n  ///\n  /// The implementation should handle the following import types:\n  /// - **Single**: Load a specific file by its name.\n  /// - **List**: Load a list of specified files or names from a specific file.\n  /// - **Glob**: Load all files in a directory or all names from a specific file.\n  fn load(&mut self, import: &mut Import) -> Result<Sources, String>;\n}\n\n/// Default implementation of `PackageLoader` that loads packages from the local directory.\npub struct DefaultLoader {\n  local_path: PathBuf,\n  loaded: HashSet<Name>,\n  entrypoint: Name,\n}\n\nimpl DefaultLoader {\n  pub fn new(local_path: &Path) -> Self {\n    let entrypoint = Name::new(local_path.file_stem().unwrap().to_string_lossy());\n    let local_path = local_path.parent().unwrap().to_path_buf();\n    Self { local_path, loaded: HashSet::new(), entrypoint }\n  }\n\n  fn read_file(&mut self, path: &Path, file_path: &str, src: &mut Sources) -> Result<Option<Name>, String> {\n    let normalized = normalize_path(&PathBuf::from(file_path));\n    let file_path = Name::new(normalized.to_string_lossy());\n\n    if self.entrypoint == file_path {\n      return Err(\"Can not import the entry point of the program.\".to_string());\n    };\n\n    if !self.is_loaded(&file_path) {\n      self.loaded.insert(file_path.clone());\n\n      let path = path.with_extension(\"bend\");\n      let Some(code) = std::fs::read_to_string(path).ok() else { return Ok(None) };\n      src.insert(file_path.clone(), code);\n    }\n\n    Ok(Some(file_path))\n  }\n\n  fn read_file_in_folder(\n    &mut self,\n    full_path: &Path,\n    folder: &str,\n    file_name: &str,\n    src: &mut Sources,\n  ) -> Result<Option<Name>, String> {\n    let full_path = full_path.join(file_name);\n\n    if folder.is_empty() {\n      self.read_file(&full_path, file_name, src)\n    } else {\n      let file_name = &format!(\"{}/{}\", folder, file_name);\n      self.read_file(&full_path, file_name, src)\n    }\n  }\n\n  fn read_path(\n    &mut self,\n    base_path: &Path,\n    path: &Name,\n    imp_type: &ImportType,\n  ) -> Result<Option<(BoundSource, Sources)>, String> {\n    let full_path = base_path.join(path.as_ref());\n    let mut src = IndexMap::new();\n    let (mut file, mut dir) = (None, None);\n\n    if full_path.with_extension(\"bend\").is_file() {\n      file = self.read_file(&full_path, path.as_ref(), &mut src)?;\n    }\n\n    if full_path.is_dir() || path.is_empty() {\n      let mut names = IndexMap::new();\n\n      match imp_type {\n        ImportType::Single(file, _) => {\n          if let Some(name) = self.read_file_in_folder(&full_path, path, file, &mut src)? {\n            names.insert(file.clone(), name);\n          }\n        }\n        ImportType::List(list) => {\n          for (file, _) in list {\n            if let Some(name) = self.read_file_in_folder(&full_path, path, file, &mut src)? {\n              names.insert(file.clone(), name);\n            }\n          }\n        }\n        ImportType::Glob => {\n          for entry in full_path.read_dir().unwrap().flatten() {\n            let file = PathBuf::from(&entry.file_name());\n\n            if let Some(\"bend\") = file.extension().and_then(|f| f.to_str()) {\n              let file = file.file_stem().unwrap().to_string_lossy();\n              if let Some(name) = self.read_file_in_folder(&full_path, path, &file, &mut src)? {\n                names.insert(Name::new(file), name);\n              }\n            }\n          }\n        }\n      }\n\n      if !names.is_empty() {\n        dir = Some(names);\n      }\n    }\n\n    let src = match (file, dir) {\n      (Some(f), None) => Some((BoundSource::File(f), src)),\n      (None, Some(d)) => Some((BoundSource::Dir(d), src)),\n      (Some(f), Some(d)) => Some((BoundSource::Either(f, d), src)),\n      (None, None) => None,\n    };\n\n    Ok(src)\n  }\n\n  fn is_loaded(&self, name: &Name) -> bool {\n    self.loaded.contains(name)\n  }\n}\n\npub const BEND_PATH: &[&str] = &[\"\"];\n\nimpl PackageLoader for DefaultLoader {\n  fn load(&mut self, import: &mut Import) -> Result<Sources, String> {\n    let mut sources = Sources::new();\n\n    let Import { path, imp_type, relative, src } = import;\n\n    let folders = if *relative {\n      vec![self.local_path.clone()]\n    } else {\n      BEND_PATH.iter().map(|p| self.local_path.join(p)).collect()\n    };\n\n    for base in folders {\n      let Some((names, new_pkgs)) = self.read_path(&base, path, imp_type)? else { continue };\n\n      *src = names;\n      sources.extend(new_pkgs);\n      break;\n    }\n\n    if let BoundSource::None = src {\n      return Err(format!(\"Failed to import '{}' from '{}'\", imp_type, path).to_string());\n    }\n\n    Ok(sources)\n  }\n}\n\n// Taken from 'cargo/util/paths.rs'\npub fn normalize_path(path: &Path) -> PathBuf {\n  let mut components = path.components().peekable();\n  let mut ret = if let Some(c @ Component::Prefix(..)) = components.peek().cloned() {\n    components.next();\n    PathBuf::from(c.as_os_str())\n  } else {\n    PathBuf::new()\n  };\n\n  for component in components {\n    match component {\n      Component::Prefix(..) => unreachable!(),\n      Component::RootDir => {\n        ret.push(component.as_os_str());\n      }\n      Component::CurDir => {}\n      Component::ParentDir => {\n        ret.pop();\n      }\n      Component::Normal(c) => {\n        ret.push(c);\n      }\n    }\n  }\n  ret\n}\n"
  },
  {
    "path": "src/imports/mod.rs",
    "content": "use crate::{\n  diagnostics::{Diagnostics, WarningType},\n  fun::Name,\n};\nuse indexmap::{IndexMap, IndexSet};\nuse itertools::Itertools;\nuse std::fmt::Display;\n\npub mod book;\npub mod loader;\npub mod packages;\n\npub use loader::*;\n\npub type BindMap = IndexMap<Name, Name>;\n\n#[derive(Debug, Clone, Default)]\npub struct ImportCtx {\n  /// Imports declared in the program source.\n  imports: Vec<Import>,\n\n  /// Map from bound names to source package.\n  map: ImportsMap,\n}\n\nimpl ImportCtx {\n  pub fn add_import(&mut self, import: Import) {\n    self.imports.push(import);\n  }\n\n  pub fn to_imports(self) -> Vec<Import> {\n    self.imports\n  }\n\n  pub fn sources(&self) -> Vec<&Name> {\n    let mut names = Vec::new();\n    for imps in &self.imports {\n      match &imps.src {\n        BoundSource::None => {}\n        BoundSource::File(f) => names.push(f),\n        BoundSource::Dir(v) => names.extend(v.values()),\n        BoundSource::Either(_, _) => unreachable!(\"This should be resolved into `File` or `Dir` by now\"),\n      }\n    }\n    names\n  }\n}\n\n#[derive(Debug, Clone)]\npub struct Import {\n  pub path: Name,\n  pub imp_type: ImportType,\n  pub relative: bool,\n  pub src: BoundSource,\n}\n\nimpl Import {\n  pub fn new(path: Name, imp_type: ImportType, relative: bool) -> Self {\n    Self { path, imp_type, relative, src: BoundSource::None }\n  }\n}\n\n#[derive(Debug, Clone)]\npub enum ImportType {\n  Single(Name, Option<Name>),\n  List(Vec<(Name, Option<Name>)>),\n  Glob,\n}\n\nimpl Display for ImportType {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      ImportType::Single(n, _) => write!(f, \"{n}\"),\n      ImportType::List(l) => write!(f, \"({})\", l.iter().map(|(n, _)| n).join(\", \")),\n      ImportType::Glob => write!(f, \"*\"),\n    }\n  }\n}\n\n#[derive(Debug, Clone)]\npub enum BoundSource {\n  None,\n  File(Name),\n  Dir(IndexMap<Name, Name>),\n  /// If the bound source is ambiguous between a file or a directory\n  Either(Name, IndexMap<Name, Name>),\n}\n\n#[derive(Debug, Clone, Default)]\nstruct ImportsMap {\n  binds: BindMap,\n}\n\nimpl ImportsMap {\n  pub fn contains_source(&self, s: &Name) -> bool {\n    self.binds.values().contains(s)\n  }\n\n  fn add_bind(&mut self, src: &str, bind: Name, diag: &mut Diagnostics) {\n    if let Some(old) = self.binds.get(&bind) {\n      let warn = format!(\"The import '{src}' shadows the imported name '{old}'\");\n      diag.add_book_warning(warn, WarningType::ImportShadow);\n    }\n\n    self.binds.insert(bind, Name::new(src));\n  }\n\n  fn add_aliased_bind(&mut self, src: &Name, sub: &Name, alias: Option<&Name>, diag: &mut Diagnostics) {\n    let src = format!(\"{}/{}\", src, sub);\n    let aliased = alias.unwrap_or(sub);\n    self.add_bind(&src, aliased.clone(), diag);\n  }\n\n  fn add_binds(&mut self, names: &IndexSet<Name>, src: &Name, diag: &mut Diagnostics) {\n    for sub in names {\n      self.add_aliased_bind(src, sub, None, diag);\n    }\n  }\n\n  /// Adds all names to the ImportMap in the form `alias/name`.\n  /// If one of the names is equal to the file name, adds as `alias` instead.\n  fn add_file_nested_binds(\n    &mut self,\n    src: &Name,\n    file: &Name,\n    alias: Option<&Name>,\n    names: IndexSet<Name>,\n    diag: &mut Diagnostics,\n  ) {\n    let aliased = alias.unwrap_or(file);\n\n    self.add_nested_binds(src, aliased, names.iter().filter(|&n| n != file), diag);\n\n    if names.contains(file) {\n      let src = format!(\"{}/{}\", src, file);\n      self.add_bind(&src, aliased.clone(), diag);\n    }\n  }\n\n  /// Adds all names to the ImportMap in the form `bind/name`.\n  fn add_nested_binds<'a>(\n    &mut self,\n    src: &Name,\n    bind: &Name,\n    names: impl Iterator<Item = &'a Name>,\n    diag: &mut Diagnostics,\n  ) {\n    for name in names {\n      let src = format!(\"{}/{}\", src, name);\n      let bind = Name::new(format!(\"{bind}/{name}\"));\n      self.add_bind(&src, bind, diag);\n    }\n  }\n}\n"
  },
  {
    "path": "src/imports/packages.rs",
    "content": "use super::{loader::PackageLoader, normalize_path, BoundSource, ImportCtx, ImportType, ImportsMap};\nuse crate::{\n  diagnostics::Diagnostics,\n  fun::{load_book::do_parse_book, parser::ParseBook, Name},\n};\nuse indexmap::{IndexMap, IndexSet};\nuse std::{cell::RefCell, collections::VecDeque, path::PathBuf};\n\n#[derive(Default)]\npub struct Packages {\n  /// Map from source name to parsed book.\n  pub books: IndexMap<Name, RefCell<ParseBook>>,\n  /// Already loaded ADTs information to be used when applying ADT binds.\n  /// Source path -> ADT names -> constructor names.\n  pub loaded_adts: IndexMap<Name, IndexMap<Name, Vec<Name>>>,\n  /// Queue of books indexes that still needs to load its imports.\n  load_queue: VecDeque<usize>,\n}\n\nimpl Packages {\n  pub fn new(book: ParseBook) -> Self {\n    Self {\n      books: IndexMap::from([(book.source.clone(), book.into())]),\n      load_queue: VecDeque::new(),\n      loaded_adts: IndexMap::new(),\n    }\n  }\n\n  /// Loads each import statement recursively into a Source -> ParseBook map.\n  /// Inserts into the ImportsMap of each book all the imported names.\n  pub fn load_imports(\n    &mut self,\n    loader: &mut impl PackageLoader,\n    diag: &mut Diagnostics,\n  ) -> Result<ParseBook, Diagnostics> {\n    self.load_imports_go(0, None, loader)?;\n    while let Some(idx) = self.load_queue.pop_front() {\n      let parent_dir = {\n        let book = self.books[idx].borrow();\n        book.source.rsplit_once('/').map(|(s, _)| Name::new(s))\n      };\n      self.load_imports_go(idx, parent_dir, loader)?;\n    }\n\n    for idx in 0..self.books.len() {\n      self.load_binds(idx, diag);\n    }\n\n    let (_, book) = self.books.swap_remove_index(0).unwrap();\n\n    diag.fatal(book.into_inner())\n  }\n\n  fn load_imports_go(\n    &mut self,\n    idx: usize,\n    dir: Option<Name>,\n    loader: &mut impl PackageLoader,\n  ) -> Result<(), Diagnostics> {\n    let mut sources = IndexMap::new();\n\n    {\n      let mut book = self.books[idx].borrow_mut();\n      let names = &mut book.import_ctx.imports;\n\n      for import in names {\n        if import.relative {\n          if let Some(ref dir) = dir {\n            let path = format!(\"{}/{}\", dir, import.path);\n            let normalized = normalize_path(&PathBuf::from(path));\n            import.path = Name::new(normalized.to_string_lossy());\n          }\n        }\n\n        let loaded = loader.load(import)?;\n        sources.extend(loaded);\n      }\n    }\n\n    for (psrc, code) in sources {\n      let module = do_parse_book(&code, &PathBuf::from(psrc.as_ref()), ParseBook::default())?;\n      self.load_queue.push_back(self.books.len());\n      self.books.insert(psrc, module.into());\n    }\n\n    Ok(())\n  }\n\n  /// Maps the `ImportType` of each import to the top level names it relates,\n  /// checks if it is valid, resolves `BoundSource::Either`, and adds to the book ImportMap.\n  fn load_binds(&mut self, idx: usize, diag: &mut Diagnostics) {\n    let book = &mut self.books[idx].borrow_mut();\n    let ImportCtx { imports, map } = &mut book.import_ctx;\n\n    for import in imports {\n      match (&mut import.src, &import.imp_type) {\n        (BoundSource::Either(src, pkgs), ImportType::Single(nam, alias)) => {\n          if self.unique_top_level_names(src).contains(nam) {\n            let err = format!(\"Both file '{src}.bend' and folder '{src}' contains the import '{nam}'\");\n            diag.add_book_error(err);\n            continue;\n          }\n\n          self.add_file_from_dir(pkgs, nam, alias, map, diag);\n          import.src = BoundSource::Dir(std::mem::take(pkgs));\n        }\n\n        (BoundSource::Either(src, pkgs), ImportType::List(names)) => {\n          for (name, alias) in names {\n            let added = self.add_file_from_dir(pkgs, name, alias, map, diag);\n\n            if !added {\n              if !self.unique_top_level_names(src).contains(name) {\n                let err = format!(\"Package '{src}' does not contain the top level name '{name}'\");\n                diag.add_book_error(err);\n                continue;\n              }\n\n              pkgs.insert(name.clone(), src.clone());\n              self.add_aliased_bind(src, name, alias, map, diag);\n            }\n          }\n\n          import.src = BoundSource::Dir(std::mem::take(pkgs));\n        }\n\n        (BoundSource::Either(src, pkgs), ImportType::Glob) => {\n          let names = self.unique_top_level_names(src);\n          let mut error = false;\n\n          for nam in pkgs.keys() {\n            if names.contains(nam) {\n              let err = format!(\"Both file '{src}.bend' and folder '{src}' contains the import '{nam}'\");\n              diag.add_book_error(err);\n              error = true;\n            }\n          }\n\n          if error {\n            continue;\n          }\n\n          self.add_glob_from_dir(pkgs, map, diag);\n\n          for sub in &names {\n            pkgs.insert(sub.clone(), src.clone());\n          }\n\n          map.add_binds(&names, src, diag);\n\n          import.src = BoundSource::Dir(std::mem::take(pkgs));\n        }\n\n        (BoundSource::File(src), ImportType::Single(name, alias)) => {\n          if !self.unique_top_level_names(src).contains(name) {\n            let err = format!(\"Package '{src}' does not contain the top level name '{name}'\");\n            diag.add_book_error(err);\n            continue;\n          }\n\n          self.add_aliased_bind(src, name, alias, map, diag);\n        }\n\n        (BoundSource::File(src), ImportType::List(names)) => {\n          let src_names = self.unique_top_level_names(src);\n          let mut error = false;\n\n          for (sub, _) in names {\n            if !src_names.contains(sub) {\n              let err = format!(\"Package '{src}' does not contain the top level name '{sub}'\");\n              diag.add_book_error(err);\n              error = true;\n            }\n          }\n\n          if error {\n            continue;\n          }\n\n          for (name, alias) in names {\n            self.add_aliased_bind(src, name, alias, map, diag);\n          }\n        }\n\n        (BoundSource::File(src), ImportType::Glob) => {\n          let names = self.unique_top_level_names(src);\n          map.add_binds(&names, src, diag);\n        }\n\n        (BoundSource::Dir(pkgs), ImportType::Single(nam, alias)) => {\n          self.add_file_from_dir(pkgs, nam, alias, map, diag);\n        }\n\n        (BoundSource::Dir(pkgs), ImportType::List(names)) => {\n          for (nam, alias) in names {\n            self.add_file_from_dir(pkgs, nam, alias, map, diag);\n          }\n        }\n\n        (BoundSource::Dir(pkgs), ImportType::Glob) => {\n          self.add_glob_from_dir(pkgs, map, diag);\n        }\n\n        (BoundSource::None, _) => unreachable!(),\n      }\n    }\n  }\n\n  fn add_aliased_bind(\n    &self,\n    src: &mut Name,\n    name: &Name,\n    alias: &Option<Name>,\n    map: &mut ImportsMap,\n    diag: &mut Diagnostics,\n  ) {\n    let alias = alias.as_ref();\n\n    if let Some(adt) = self.books.get(src).unwrap().borrow().adts.get(name) {\n      let names = adt.ctrs.iter().map(|(n, _)| n);\n      map.add_nested_binds(src, alias.unwrap_or(name), names, diag);\n    }\n\n    map.add_aliased_bind(src, name, alias, diag);\n  }\n\n  fn add_file_from_dir(\n    &self,\n    pkgs: &IndexMap<Name, Name>,\n    nam: &Name,\n    alias: &Option<Name>,\n    map: &mut ImportsMap,\n    diag: &mut Diagnostics,\n  ) -> bool {\n    if let Some(src) = pkgs.get(nam) {\n      let names = self.unique_top_level_names(src);\n      map.add_file_nested_binds(src, nam, alias.as_ref(), names, diag);\n      true\n    } else {\n      false\n    }\n  }\n\n  fn add_glob_from_dir(&self, pkgs: &IndexMap<Name, Name>, map: &mut ImportsMap, diag: &mut Diagnostics) {\n    for (nam, src) in pkgs {\n      let names = self.unique_top_level_names(src);\n      map.add_file_nested_binds(src, nam, None, names, diag);\n    }\n  }\n\n  fn unique_top_level_names(&self, src: &Name) -> IndexSet<Name> {\n    let bound_book = self.books.get(src).unwrap().borrow();\n    bound_book.top_level_names().cloned().collect()\n  }\n}\n"
  },
  {
    "path": "src/lib.rs",
    "content": "use crate::{\n  fun::{book_to_hvm, net_to_term::net_to_term, term_to_net::Labels, Book, Ctx, Term},\n  hvm::{\n    add_recursive_priority::add_recursive_priority,\n    check_net_size::{check_net_sizes, MAX_NET_SIZE_CUDA},\n    eta_reduce::eta_reduce_hvm_net,\n    hvm_book_show_pretty,\n    inline::inline_hvm_book,\n    mutual_recursion,\n    prune::prune_hvm_book,\n  },\n};\nuse diagnostics::{Diagnostics, DiagnosticsConfig, ERR_INDENT_SIZE};\nuse net::hvm_to_net::hvm_to_net;\n\npub mod diagnostics;\n// `Name` triggers this warning, but it's safe because we're not using its internal mutability.\n#[allow(clippy::mutable_key_type)]\npub mod fun;\npub mod hvm;\npub mod imp;\npub mod imports;\npub mod net;\nmod utils;\n\npub use fun::load_book::{load_file_to_book, load_to_book};\n\npub const ENTRY_POINT: &str = \"main\";\npub const HVM1_ENTRY_POINT: &str = \"Main\";\npub const HVM_OUTPUT_END_MARKER: &str = \"Result: \";\n\npub fn check_book(\n  book: &mut Book,\n  diagnostics_cfg: DiagnosticsConfig,\n  compile_opts: CompileOpts,\n) -> Result<Diagnostics, Diagnostics> {\n  // TODO: Do the checks without having to do full compilation\n  let res = compile_book(book, compile_opts, diagnostics_cfg, None)?;\n  Ok(res.diagnostics)\n}\n\npub fn compile_book(\n  book: &mut Book,\n  opts: CompileOpts,\n  diagnostics_cfg: DiagnosticsConfig,\n  args: Option<Vec<Term>>,\n) -> Result<CompileResult, Diagnostics> {\n  let mut diagnostics = desugar_book(book, opts.clone(), diagnostics_cfg, args)?;\n\n  let (mut hvm_book, labels) = book_to_hvm(book, &mut diagnostics)?;\n\n  if opts.eta {\n    hvm_book.defs.values_mut().for_each(eta_reduce_hvm_net);\n  }\n\n  mutual_recursion::check_cycles(&hvm_book, &mut diagnostics)?;\n\n  if opts.eta {\n    hvm_book.defs.values_mut().for_each(eta_reduce_hvm_net);\n  }\n\n  if opts.inline {\n    if let Err(e) = inline_hvm_book(&mut hvm_book) {\n      diagnostics.add_book_error(format!(\"During inlining:\\n{:ERR_INDENT_SIZE$}{}\", \"\", e));\n    }\n    diagnostics.fatal(())?;\n  }\n\n  if opts.prune {\n    let prune_entrypoints = vec![book.hvm_entrypoint().to_string()];\n    prune_hvm_book(&mut hvm_book, &prune_entrypoints);\n  }\n\n  if opts.check_net_size {\n    check_net_sizes(&hvm_book, &mut diagnostics, &opts.target_architecture)?;\n  }\n\n  add_recursive_priority(&mut hvm_book);\n\n  Ok(CompileResult { hvm_book, labels, diagnostics })\n}\n\npub fn desugar_book(\n  book: &mut Book,\n  opts: CompileOpts,\n  diagnostics_cfg: DiagnosticsConfig,\n  args: Option<Vec<Term>>,\n) -> Result<Diagnostics, Diagnostics> {\n  let mut ctx = Ctx::new(book, diagnostics_cfg);\n\n  ctx.check_shared_names();\n\n  ctx.set_entrypoint();\n\n  ctx.book.encode_adts(opts.adt_encoding);\n\n  ctx.fix_match_defs()?;\n\n  ctx.apply_args(args)?;\n\n  ctx.desugar_open()?;\n\n  ctx.book.encode_builtins();\n\n  ctx.resolve_refs()?;\n\n  ctx.desugar_match_defs()?;\n\n  ctx.fix_match_terms()?;\n\n  ctx.book.lift_local_defs();\n\n  ctx.desugar_bend()?;\n  ctx.desugar_fold()?;\n  ctx.desugar_with_blocks()?;\n\n  ctx.check_unbound_vars()?;\n\n  // Auto match linearization\n  ctx.book.make_var_names_unique();\n  ctx.book.desugar_use();\n\n  match opts.linearize_matches {\n    OptLevel::Disabled => (),\n    OptLevel::Alt => ctx.book.linearize_match_binds(),\n    OptLevel::Enabled => ctx.book.linearize_matches(),\n  }\n  // Manual match linearization\n  ctx.book.linearize_match_with();\n\n  if opts.type_check {\n    type_check_book(&mut ctx)?;\n  }\n\n  ctx.book.encode_matches(opts.adt_encoding);\n\n  // sanity check\n  ctx.check_unbound_vars()?;\n\n  ctx.book.make_var_names_unique();\n  ctx.book.desugar_use();\n\n  ctx.book.make_var_names_unique();\n  ctx.book.linearize_vars();\n\n  // sanity check\n  ctx.check_unbound_vars()?;\n\n  if opts.float_combinators {\n    ctx.book.float_combinators(MAX_NET_SIZE_CUDA);\n  }\n  // sanity check\n  ctx.check_unbound_refs()?;\n\n  // Optimizing passes\n  ctx.prune(opts.prune);\n  if opts.merge {\n    ctx.book.merge_definitions();\n  }\n\n  ctx.book.expand_main();\n\n  ctx.book.make_var_names_unique();\n\n  if !ctx.info.has_errors() {\n    Ok(ctx.info)\n  } else {\n    Err(ctx.info)\n  }\n}\n\npub fn type_check_book(ctx: &mut Ctx) -> Result<(), Diagnostics> {\n  ctx.check_untyped_terms()?;\n  ctx.resolve_type_ctrs()?;\n  ctx.type_check()?;\n  Ok(())\n}\n\npub fn run_book(\n  mut book: Book,\n  run_opts: RunOpts,\n  compile_opts: CompileOpts,\n  diagnostics_cfg: DiagnosticsConfig,\n  args: Option<Vec<Term>>,\n  cmd: &str,\n) -> Result<Option<(Term, String, Diagnostics)>, Diagnostics> {\n  let CompileResult { hvm_book: core_book, labels, diagnostics } =\n    compile_book(&mut book, compile_opts.clone(), diagnostics_cfg, args)?;\n\n  // TODO: Printing should be taken care by the cli module, but we'd\n  // like to print any warnings before running so that the user can\n  // cancel the run if a problem is detected.\n  eprint!(\"{diagnostics}\");\n\n  let out = run_hvm(&core_book, cmd, &run_opts)?;\n  let (net, stats) = parse_hvm_output(&out)?;\n  let (term, diags) =\n    readback_hvm_net(&net, &book, &labels, run_opts.linear_readback, compile_opts.adt_encoding);\n\n  Ok(Some((term, stats, diags)))\n}\n\npub fn readback_hvm_net(\n  net: &::hvm::ast::Net,\n  book: &Book,\n  labels: &Labels,\n  linear: bool,\n  adt_encoding: AdtEncoding,\n) -> (Term, Diagnostics) {\n  let mut diags = Diagnostics::default();\n  let net = hvm_to_net(net);\n  let mut term = net_to_term(&net, book, labels, linear, &mut diags);\n  #[allow(clippy::mutable_key_type)] // Safe to allow, we know how `Name` works.\n  let recursive_defs = book.recursive_defs();\n  term.expand_generated(book, &recursive_defs);\n  term.resugar_strings(adt_encoding);\n  term.resugar_lists(adt_encoding);\n  (term, diags)\n}\n\n/// Runs an HVM book by invoking HVM as a subprocess.\nfn run_hvm(book: &::hvm::ast::Book, cmd: &str, run_opts: &RunOpts) -> Result<String, String> {\n  let out_path = \".out.hvm\";\n  std::fs::write(out_path, hvm_book_show_pretty(book)).map_err(|x| x.to_string())?;\n  let mut process = std::process::Command::new(run_opts.hvm_path.clone())\n    .arg(cmd)\n    .arg(out_path)\n    .stdout(std::process::Stdio::piped())\n    .stderr(std::process::Stdio::inherit())\n    .spawn()\n    .map_err(|e| format!(\"Failed to start hvm process.\\n{e}\"))?;\n\n  let child_out = std::mem::take(&mut process.stdout).expect(\"Failed to attach to hvm output\");\n  let thread_out = std::thread::spawn(move || filter_hvm_output(child_out, std::io::stdout()));\n\n  let _ = process.wait().expect(\"Failed to wait on hvm subprocess\");\n  if let Err(e) = std::fs::remove_file(out_path) {\n    eprintln!(\"Error removing HVM output file. {e}\");\n  }\n\n  let result = thread_out.join().map_err(|_| \"HVM output thread panicked.\".to_string())??;\n  Ok(result)\n}\n\n/// Reads the final output from HVM and separates the extra information.\nfn parse_hvm_output(out: &str) -> Result<(::hvm::ast::Net, String), String> {\n  let Some((result, stats)) = out.split_once('\\n') else {\n    return Err(format!(\n      \"Failed to parse result from HVM (unterminated result).\\nOutput from HVM was:\\n{:?}\",\n      out\n    ));\n  };\n  let mut p = ::hvm::ast::CoreParser::new(result);\n  let Ok(net) = p.parse_net() else {\n    return Err(format!(\"Failed to parse result from HVM (invalid net).\\nOutput from HVM was:\\n{:?}\", out));\n  };\n  Ok((net, stats.to_string()))\n}\n\n/// Filters the output from HVM, separating user output from the\n/// result, used for readback and displaying stats.\n///\n/// Buffers the output from HVM to try to parse it.\nfn filter_hvm_output(\n  mut stream: impl std::io::Read + Send,\n  mut output: impl std::io::Write + Send,\n) -> Result<String, String> {\n  let mut capturing = false;\n  let mut result = String::new();\n  let mut buf = [0u8; 1024];\n  loop {\n    let num_read = match stream.read(&mut buf) {\n      Ok(n) => n,\n      Err(e) => {\n        eprintln!(\"{e}\");\n        break;\n      }\n    };\n    if num_read == 0 {\n      break;\n    }\n    let new_buf = &buf[..num_read];\n    // TODO: Does this lead to broken characters if printing too much at once?\n    let new_str = String::from_utf8_lossy(new_buf);\n    if capturing {\n      // Store the result\n      result.push_str(&new_str);\n    } else if let Some((before, after)) = new_str.split_once(HVM_OUTPUT_END_MARKER) {\n      // If result started in the middle of the buffer, print what came before and start capturing.\n      if let Err(e) = output.write_all(before.as_bytes()) {\n        eprintln!(\"Error writing HVM output. {e}\");\n      };\n      result.push_str(after);\n      capturing = true;\n    } else {\n      // Otherwise, don't capture anything\n      if let Err(e) = output.write_all(new_buf) {\n        eprintln!(\"Error writing HVM output. {e}\");\n      }\n    }\n  }\n\n  if capturing {\n    Ok(result)\n  } else {\n    output.flush().map_err(|e| format!(\"Error flushing HVM output. {e}\"))?;\n    let msg = \"HVM output had no result (An error likely occurred)\".to_string();\n    Err(msg)\n  }\n}\n\n#[derive(Clone, Debug)]\npub struct RunOpts {\n  pub linear_readback: bool,\n  pub pretty: bool,\n  pub hvm_path: String,\n}\n\nimpl Default for RunOpts {\n  fn default() -> Self {\n    RunOpts { linear_readback: false, pretty: false, hvm_path: \"hvm\".to_string() }\n  }\n}\n\n#[derive(Clone, Copy, Debug, Default)]\npub enum OptLevel {\n  Disabled,\n  #[default]\n  Enabled,\n  Alt,\n}\n\nimpl OptLevel {\n  pub fn enabled(&self) -> bool {\n    !matches!(self, OptLevel::Disabled)\n  }\n\n  pub fn is_extra(&self) -> bool {\n    matches!(self, OptLevel::Enabled)\n  }\n}\n\n#[derive(Clone, Debug, PartialEq, Eq)]\npub enum CompilerTarget {\n  C,\n  Cuda,\n  Unknown,\n}\n\n#[derive(Clone, Debug)]\npub struct CompileOpts {\n  /// The Compiler target architecture\n  pub target_architecture: CompilerTarget,\n\n  /// Enables [hvm::eta_reduce].\n  pub eta: bool,\n\n  /// Enables [fun::transform::definition_pruning] and [hvm::prune].\n  pub prune: bool,\n\n  /// Enables [fun::transform::linearize_matches].\n  pub linearize_matches: OptLevel,\n\n  /// Enables [fun::transform::float_combinators].\n  pub float_combinators: bool,\n\n  /// Enables [fun::transform::definition_merge]\n  pub merge: bool,\n\n  /// Enables [hvm::inline].\n  pub inline: bool,\n\n  /// Enables [hvm::check_net_size].\n  pub check_net_size: bool,\n\n  /// Enables [type_check_book].\n  pub type_check: bool,\n\n  /// Determines the encoding of constructors and matches.\n  pub adt_encoding: AdtEncoding,\n}\n\nimpl CompileOpts {\n  /// Set all optimizing options as true\n  #[must_use]\n  pub fn set_all(self) -> Self {\n    Self {\n      target_architecture: self.target_architecture,\n      eta: true,\n      prune: true,\n      float_combinators: true,\n      merge: true,\n      linearize_matches: OptLevel::Enabled,\n      type_check: true,\n      inline: true,\n      check_net_size: self.check_net_size,\n      adt_encoding: self.adt_encoding,\n    }\n  }\n\n  /// Set all optimizing options as false\n  #[must_use]\n  pub fn set_no_all(self) -> Self {\n    Self {\n      target_architecture: self.target_architecture,\n      eta: false,\n      prune: false,\n      linearize_matches: OptLevel::Disabled,\n      float_combinators: false,\n      merge: false,\n      inline: false,\n      type_check: self.type_check,\n      check_net_size: self.check_net_size,\n      adt_encoding: self.adt_encoding,\n    }\n  }\n\n  pub fn check_for_strict(&self) {\n    if !self.float_combinators {\n      println!(\n        \"Warning: Running in strict mode without enabling the float_combinators pass can lead to some functions expanding infinitely.\"\n      );\n    }\n    if !self.linearize_matches.enabled() {\n      println!(\n        \"Warning: Running in strict mode without enabling the linearize_matches pass can lead to some functions expanding infinitely.\"\n      );\n    }\n  }\n}\n\nimpl Default for CompileOpts {\n  /// Enables eta, linearize_matches, float_combinators.\n  /// Uses num-scott ADT encoding.\n  fn default() -> Self {\n    Self {\n      target_architecture: CompilerTarget::Unknown,\n      eta: true,\n      prune: false,\n      linearize_matches: OptLevel::Enabled,\n      float_combinators: true,\n      merge: false,\n      inline: false,\n      check_net_size: true,\n      type_check: true,\n      adt_encoding: AdtEncoding::NumScott,\n    }\n  }\n}\n\n#[derive(Clone, Copy, Debug)]\npub enum AdtEncoding {\n  Scott,\n  NumScott,\n}\n\nimpl std::fmt::Display for AdtEncoding {\n  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {\n    match self {\n      AdtEncoding::Scott => write!(f, \"Scott\"),\n      AdtEncoding::NumScott => write!(f, \"NumScott\"),\n    }\n  }\n}\n\npub struct CompileResult {\n  pub diagnostics: Diagnostics,\n  pub hvm_book: ::hvm::ast::Book,\n  pub labels: Labels,\n}\n\nfn maybe_grow<R, F>(f: F) -> R\nwhere\n  F: FnOnce() -> R,\n{\n  stacker::maybe_grow(1024 * 32, 1024 * 1024, f)\n}\n"
  },
  {
    "path": "src/main.rs",
    "content": "use bend::{\n  check_book, compile_book, desugar_book,\n  diagnostics::{Diagnostics, DiagnosticsConfig, Severity},\n  fun::{Book, Name},\n  hvm::hvm_book_show_pretty,\n  imports::DefaultLoader,\n  load_file_to_book, run_book, AdtEncoding, CompileOpts, CompilerTarget, OptLevel, RunOpts,\n};\nuse clap::{Args, CommandFactory, Parser, Subcommand};\nuse std::{\n  path::{Path, PathBuf},\n  process::ExitCode,\n};\n\n#[derive(Parser, Debug)]\n#[command(author, version, about, long_about = None)]\nstruct Cli {\n  #[command(subcommand)]\n  pub mode: Mode,\n\n  #[arg(short, long, global = true)]\n  pub verbose: bool,\n\n  #[arg(long, global = true, help = \"HVM command or path to HVM binary\")]\n  pub hvm_bin: Option<String>,\n\n  #[arg(short = 'e', long, global = true, help = \"Use other entrypoint rather than main or Main\")]\n  pub entrypoint: Option<String>,\n}\n\n#[derive(Subcommand, Clone, Debug)]\nenum Mode {\n  /// Checks that the program is syntactically and semantically correct.\n  Check {\n    #[arg(\n      short = 'O',\n      value_delimiter = ' ',\n      action = clap::ArgAction::Append,\n      long_help = r#\"Enables or disables the given optimizations\n      float_combinators is enabled by default on strict mode.\"#,\n    )]\n    comp_opts: Vec<OptArgs>,\n\n    #[command(flatten)]\n    warn_opts: CliWarnOpts,\n\n    #[arg(help = \"Path to the input file\")]\n    path: PathBuf,\n  },\n  /// Compiles the program and runs it with the Rust HVM implementation.\n  RunRs(RunArgs),\n  /// Compiles the program and runs it with the C HVM implementation.\n  #[command(alias = \"run\")]\n  RunC(RunArgs),\n  /// Compiles the program and runs it with the Cuda HVM implementation.\n  RunCu(RunArgs),\n  /// Compiles the program to hvm and prints to stdout.\n  GenHvm(GenArgs),\n  /// Compiles the program to standalone C and prints to stdout.\n  GenC(GenArgs),\n  /// Compiles the program to standalone Cuda and prints to stdout.\n  GenCu(GenArgs),\n  /// Runs the lambda-term level desugaring passes.\n  Desugar {\n    #[arg(\n      short = 'O',\n      value_delimiter = ' ',\n      action = clap::ArgAction::Append,\n      long_help = r#\"Enables or disables the given optimizations\n      float_combinators is enabled by default on strict mode.\"#,\n    )]\n    comp_opts: Vec<OptArgs>,\n\n    #[arg(short = 'p', help = \"Debug and normalization pretty printing\")]\n    pretty: bool,\n\n    #[command(flatten)]\n    warn_opts: CliWarnOpts,\n\n    #[arg(help = \"Path to the input file\")]\n    path: PathBuf,\n  },\n}\n\n#[derive(Args, Clone, Debug)]\nstruct RunArgs {\n  #[arg(short = 'p', help = \"Debug and normalization pretty printing\")]\n  pretty: bool,\n\n  #[command(flatten)]\n  run_opts: CliRunOpts,\n\n  #[arg(\n    short = 'O',\n    value_delimiter = ' ',\n    action = clap::ArgAction::Append,\n    long_help = r#\"Enables or disables the given optimizations\n    float_combinators is enabled by default on strict mode.\"#,\n  )]\n  comp_opts: Vec<OptArgs>,\n\n  #[command(flatten)]\n  warn_opts: CliWarnOpts,\n\n  #[arg(help = \"Path to the input file\")]\n  path: PathBuf,\n\n  #[arg(value_parser = |arg: &str| bend::fun::parser::FunParser::new(Name::new(\"\"), arg, false).parse_term())]\n  arguments: Option<Vec<bend::fun::Term>>,\n}\n\n#[derive(Args, Clone, Debug)]\nstruct GenArgs {\n  #[arg(\n    short = 'O',\n    value_delimiter = ' ',\n    action = clap::ArgAction::Append,\n    long_help = r#\"Enables or disables the given optimizations\n    float_combinators is enabled by default on strict mode.\"#,\n  )]\n  comp_opts: Vec<OptArgs>,\n\n  #[command(flatten)]\n  warn_opts: CliWarnOpts,\n\n  #[arg(help = \"Path to the input file\")]\n  path: PathBuf,\n}\n\n#[derive(Args, Clone, Debug)]\nstruct CliRunOpts {\n  #[arg(short = 'l', help = \"Linear readback (show explicit dups)\")]\n  linear: bool,\n\n  #[arg(short = 's', long = \"stats\", help = \"Shows runtime stats and rewrite counts\")]\n  print_stats: bool,\n}\n\n#[derive(Args, Debug, Clone)]\n#[group(multiple = true)]\nstruct CliWarnOpts {\n  #[arg(\n    short = 'W',\n    long = \"warn\",\n    value_delimiter = ' ',\n    action = clap::ArgAction::Append,\n    help = \"Show the specified compilation warning\",\n  )]\n  pub warns: Vec<WarningArgs>,\n\n  #[arg(\n    short = 'D',\n    long = \"deny\",\n    value_delimiter = ' ',\n    action = clap::ArgAction::Append,\n    help = \"Deny the specified compilation warning\",\n  )]\n  pub denies: Vec<WarningArgs>,\n\n  #[arg(\n    short = 'A',\n    long = \"allow\",\n    value_delimiter = ' ',\n    action = clap::ArgAction::Append,\n    help = \"Allow the specified compilation warning\",\n  )]\n  pub allows: Vec<WarningArgs>,\n}\n\n#[derive(clap::ValueEnum, Clone, Debug)]\npub enum OptArgs {\n  All,\n  NoAll,\n  Eta,\n  NoEta,\n  Prune,\n  NoPrune,\n  LinearizeMatches,\n  LinearizeMatchesAlt,\n  NoLinearizeMatches,\n  FloatCombinators,\n  NoFloatCombinators,\n  Merge,\n  NoMerge,\n  Inline,\n  NoInline,\n  CheckNetSize,\n  NoCheckNetSize,\n  AdtScott,\n  AdtNumScott,\n  TypeCheck,\n  NoTypeCheck,\n}\n\nfn compile_opts_from_cli(args: &Vec<OptArgs>, compiler_target: CompilerTarget) -> CompileOpts {\n  use OptArgs::*;\n  let mut opts = CompileOpts { target_architecture: compiler_target, ..CompileOpts::default() };\n  if opts.target_architecture != CompilerTarget::C {\n    opts.eta = false;\n  }\n\n  for arg in args {\n    match arg {\n      All => opts = opts.set_all(),\n      NoAll => opts = opts.set_no_all(),\n      Eta => opts.eta = true,\n      NoEta => opts.eta = false,\n      Prune => opts.prune = true,\n      NoPrune => opts.prune = false,\n      FloatCombinators => opts.float_combinators = true,\n      NoFloatCombinators => opts.float_combinators = false,\n      Merge => opts.merge = true,\n      NoMerge => opts.merge = false,\n      Inline => opts.inline = true,\n      NoInline => opts.inline = false,\n      CheckNetSize => opts.check_net_size = true,\n      NoCheckNetSize => opts.check_net_size = false,\n      TypeCheck => opts.type_check = true,\n      NoTypeCheck => opts.type_check = false,\n\n      LinearizeMatches => opts.linearize_matches = OptLevel::Enabled,\n      LinearizeMatchesAlt => opts.linearize_matches = OptLevel::Alt,\n      NoLinearizeMatches => opts.linearize_matches = OptLevel::Disabled,\n\n      AdtScott => opts.adt_encoding = AdtEncoding::Scott,\n      AdtNumScott => opts.adt_encoding = AdtEncoding::NumScott,\n    }\n  }\n\n  opts\n}\n\n#[derive(clap::ValueEnum, Clone, Debug)]\npub enum WarningArgs {\n  All,\n  IrrefutableMatch,\n  RedundantMatch,\n  UnreachableMatch,\n  UnusedDefinition,\n  RepeatedBind,\n  RecursionCycle,\n  ImportShadow,\n  MissingMain,\n}\n\nfn main() -> ExitCode {\n  #[cfg(not(feature = \"cli\"))]\n  compile_error!(\"The 'cli' feature is needed for the Bend cli\");\n\n  let cli = Cli::parse();\n\n  if let Err(diagnostics) = execute_cli_mode(cli) {\n    eprint!(\"{diagnostics}\");\n    return ExitCode::FAILURE;\n  }\n  ExitCode::SUCCESS\n}\n\nfn execute_cli_mode(mut cli: Cli) -> Result<(), Diagnostics> {\n  let arg_verbose = cli.verbose;\n  let entrypoint = cli.entrypoint.take();\n\n  let load_book = |path: &Path, diag: DiagnosticsConfig| -> Result<Book, Diagnostics> {\n    let package_loader = DefaultLoader::new(path);\n    let mut book = load_file_to_book(path, package_loader, diag)?;\n    book.entrypoint = entrypoint.map(Name::new);\n\n    if arg_verbose {\n      println!(\"{book}\");\n    }\n\n    Ok(book)\n  };\n\n  // Path/command for the HVM binary\n  // CLI option -> Env var -> Default\n  let hvm_bin = if let Some(hvm_bin) = cli.hvm_bin {\n    hvm_bin\n  } else if let Ok(hvm_bin) = std::env::var(\"HVM_BIN\") {\n    hvm_bin\n  } else {\n    \"hvm\".to_string()\n  };\n\n  let gen_cmd = match &cli.mode {\n    Mode::GenC(..) => \"gen-c\",\n    Mode::GenCu(..) => \"gen-cu\",\n    _ => \"gen\",\n  };\n\n  let run_cmd = match &cli.mode {\n    Mode::RunC(..) => \"run-c\",\n    Mode::RunRs(..) => \"run\",\n    Mode::RunCu(..) => \"run-cu\",\n    _ => \"run-c\",\n  };\n\n  let compiler_target = match &cli.mode {\n    Mode::RunC(..) => CompilerTarget::C,\n    Mode::GenC(..) => CompilerTarget::C,\n    Mode::RunCu(..) => CompilerTarget::Cuda,\n    Mode::GenCu(..) => CompilerTarget::Cuda,\n    _ => CompilerTarget::Unknown,\n  };\n\n  match cli.mode {\n    Mode::Check { comp_opts, warn_opts, path } => {\n      let diagnostics_cfg = set_warning_cfg_from_cli(DiagnosticsConfig::default(), warn_opts);\n      let compile_opts = compile_opts_from_cli(&comp_opts, compiler_target);\n\n      let mut book = load_book(&path, diagnostics_cfg)?;\n      let diagnostics = check_book(&mut book, diagnostics_cfg, compile_opts)?;\n      eprintln!(\"{}\", diagnostics);\n    }\n\n    Mode::GenHvm(GenArgs { comp_opts, warn_opts, path, .. }) => {\n      let diagnostics_cfg = set_warning_cfg_from_cli(DiagnosticsConfig::default(), warn_opts);\n      let opts = compile_opts_from_cli(&comp_opts, compiler_target);\n\n      let mut book = load_book(&path, diagnostics_cfg)?;\n      let compile_res = compile_book(&mut book, opts, diagnostics_cfg, None)?;\n\n      eprint!(\"{}\", compile_res.diagnostics);\n      println!(\"{}\", hvm_book_show_pretty(&compile_res.hvm_book));\n    }\n\n    Mode::RunC(RunArgs { pretty, run_opts, comp_opts, warn_opts, path, arguments })\n    | Mode::RunCu(RunArgs { pretty, run_opts, comp_opts, warn_opts, path, arguments })\n    | Mode::RunRs(RunArgs { pretty, run_opts, comp_opts, warn_opts, path, arguments }) => {\n      let CliRunOpts { linear, print_stats } = run_opts;\n\n      let diagnostics_cfg =\n        set_warning_cfg_from_cli(DiagnosticsConfig::new(Severity::Allow, arg_verbose), warn_opts);\n\n      let compile_opts = compile_opts_from_cli(&comp_opts, compiler_target);\n\n      compile_opts.check_for_strict();\n\n      let run_opts = RunOpts { linear_readback: linear, pretty, hvm_path: hvm_bin };\n\n      let book = load_book(&path, diagnostics_cfg)?;\n      if let Some((term, stats, diags)) =\n        run_book(book, run_opts, compile_opts, diagnostics_cfg, arguments, run_cmd)?\n      {\n        eprint!(\"{diags}\");\n        if pretty {\n          println!(\"Result:\\n{}\", term.display_pretty(0));\n        } else {\n          println!(\"Result: {}\", term);\n        }\n        if print_stats {\n          println!(\"{stats}\");\n        }\n      }\n    }\n\n    Mode::GenC(GenArgs { comp_opts, warn_opts, path })\n    | Mode::GenCu(GenArgs { comp_opts, warn_opts, path }) => {\n      let diagnostics_cfg = set_warning_cfg_from_cli(DiagnosticsConfig::default(), warn_opts);\n      let opts = compile_opts_from_cli(&comp_opts, compiler_target);\n\n      let mut book = load_book(&path, diagnostics_cfg)?;\n      let compile_res = compile_book(&mut book, opts, diagnostics_cfg, None)?;\n\n      let out_path = \".out.hvm\";\n      std::fs::write(out_path, hvm_book_show_pretty(&compile_res.hvm_book)).map_err(|x| x.to_string())?;\n\n      let gen_fn = |out_path: &str| {\n        let mut process = std::process::Command::new(hvm_bin);\n        process.arg(gen_cmd).arg(out_path);\n        process.output().map_err(|e| format!(\"While running hvm: {e}\"))\n      };\n\n      let std::process::Output { stdout, stderr, status } = gen_fn(out_path)?;\n      let out = String::from_utf8_lossy(&stdout);\n      let err = String::from_utf8_lossy(&stderr);\n      let status = if !status.success() { status.to_string() } else { String::new() };\n\n      if let Err(e) = std::fs::remove_file(out_path) {\n        eprintln!(\"Error removing HVM output file. {e}\");\n      }\n\n      eprintln!(\"{err}\");\n      println!(\"{out}\");\n      println!(\"{status}\");\n    }\n\n    Mode::Desugar { path, comp_opts, warn_opts, pretty } => {\n      let diagnostics_cfg = set_warning_cfg_from_cli(DiagnosticsConfig::default(), warn_opts);\n\n      let opts = compile_opts_from_cli(&comp_opts, compiler_target);\n\n      let mut book = load_book(&path, diagnostics_cfg)?;\n      let diagnostics = desugar_book(&mut book, opts, diagnostics_cfg, None)?;\n\n      eprint!(\"{diagnostics}\");\n      if pretty {\n        println!(\"{}\", book.display_pretty())\n      } else {\n        println!(\"{book}\");\n      }\n    }\n  };\n  Ok(())\n}\n\nfn set_warning_cfg_from_cli(mut cfg: DiagnosticsConfig, warn_opts: CliWarnOpts) -> DiagnosticsConfig {\n  fn set(cfg: &mut DiagnosticsConfig, severity: Severity, cli_val: WarningArgs) {\n    match cli_val {\n      WarningArgs::All => {\n        cfg.irrefutable_match = severity;\n        cfg.redundant_match = severity;\n        cfg.unreachable_match = severity;\n        cfg.unused_definition = severity;\n        cfg.repeated_bind = severity;\n        cfg.recursion_cycle = severity;\n        cfg.import_shadow = severity;\n      }\n      WarningArgs::IrrefutableMatch => cfg.irrefutable_match = severity,\n      WarningArgs::RedundantMatch => cfg.redundant_match = severity,\n      WarningArgs::UnreachableMatch => cfg.unreachable_match = severity,\n      WarningArgs::UnusedDefinition => cfg.unused_definition = severity,\n      WarningArgs::RepeatedBind => cfg.repeated_bind = severity,\n      WarningArgs::RecursionCycle => cfg.recursion_cycle = severity,\n      WarningArgs::ImportShadow => cfg.import_shadow = severity,\n      WarningArgs::MissingMain => cfg.missing_main = severity, // TODO: Should `WarningArgs::All` modify this as well?\n    }\n  }\n\n  let cmd = Cli::command();\n  let matches = cmd.get_matches();\n  let subcmd_name = matches.subcommand_name().expect(\"To have a subcommand\");\n  let arg_matches = matches.subcommand_matches(subcmd_name).expect(\"To have a subcommand\");\n\n  if let Some(warn_opts_ids) = arg_matches.get_many::<clap::Id>(\"CliWarnOpts\") {\n    let mut allows = warn_opts.allows.into_iter();\n    let mut warns = warn_opts.warns.into_iter();\n    let mut denies = warn_opts.denies.into_iter();\n    for id in warn_opts_ids {\n      match id.as_ref() {\n        \"allows\" => set(&mut cfg, Severity::Allow, allows.next().unwrap()),\n        \"denies\" => set(&mut cfg, Severity::Error, denies.next().unwrap()),\n        \"warns\" => set(&mut cfg, Severity::Warning, warns.next().unwrap()),\n        _ => unreachable!(),\n      }\n    }\n  }\n  cfg\n}\n"
  },
  {
    "path": "src/net/hvm_to_net.rs",
    "content": "use super::{INet, INode, INodes, NodeId, NodeKind::*, Port, SlotId, ROOT};\nuse crate::{\n  fun::Name,\n  net::{CtrKind, NodeKind},\n};\nuse hvm::ast::{Net, Tree};\n\npub fn hvm_to_net(net: &Net) -> INet {\n  let inodes = hvm_to_inodes(net);\n  inodes_to_inet(&inodes)\n}\n\nfn hvm_to_inodes(net: &Net) -> INodes {\n  let mut inodes = vec![];\n  let mut n_vars = 0;\n  let net_root = if let Tree::Var { nam } = &net.root { nam } else { \"\" };\n\n  // If we have a tree attached to the net root, convert that first\n  if !matches!(&net.root, Tree::Var { .. }) {\n    let mut root = tree_to_inodes(&net.root, \"_\".to_string(), net_root, &mut n_vars);\n    inodes.append(&mut root);\n  }\n\n  // Convert all the trees forming active pairs.\n  for (i, (_, tree1, tree2)) in net.rbag.iter().enumerate() {\n    // This name cannot appear anywhere in the original net\n    let tree_root = format!(\"%a{i}\");\n    let mut tree1 = tree_to_inodes(tree1, tree_root.clone(), net_root, &mut n_vars);\n    inodes.append(&mut tree1);\n    let mut tree2 = tree_to_inodes(tree2, tree_root, net_root, &mut n_vars);\n    inodes.append(&mut tree2);\n  }\n  inodes\n}\n\nfn new_var(n_vars: &mut NodeId) -> String {\n  // This name cannot appear anywhere in the original net\n  let new_var = format!(\"%x{n_vars}\");\n  *n_vars += 1;\n  new_var\n}\n\nfn tree_to_inodes(tree: &Tree, tree_root: String, net_root: &str, n_vars: &mut NodeId) -> INodes {\n  fn process_node_subtree<'a>(\n    subtree: &'a Tree,\n    net_root: &str,\n    subtrees: &mut Vec<(String, &'a Tree)>,\n    n_vars: &mut NodeId,\n  ) -> String {\n    if let Tree::Var { nam } = subtree {\n      if nam == net_root {\n        \"_\".to_string()\n      } else {\n        nam.clone()\n      }\n    } else {\n      let var = new_var(n_vars);\n      subtrees.push((var.clone(), subtree));\n      var\n    }\n  }\n\n  let mut inodes = vec![];\n  let mut subtrees = vec![(tree_root, tree)];\n  while let Some((subtree_root, subtree)) = subtrees.pop() {\n    match subtree {\n      Tree::Era => {\n        let var = new_var(n_vars);\n        inodes.push(INode { kind: Era, ports: [subtree_root, var.clone(), var] });\n      }\n      Tree::Con { fst, snd } => {\n        let kind = NodeKind::Ctr(CtrKind::Con(None));\n        let fst = process_node_subtree(fst, net_root, &mut subtrees, n_vars);\n        let snd = process_node_subtree(snd, net_root, &mut subtrees, n_vars);\n        inodes.push(INode { kind, ports: [subtree_root, fst, snd] });\n      }\n      Tree::Dup { fst, snd } => {\n        let kind = NodeKind::Ctr(CtrKind::Dup(0));\n        let fst = process_node_subtree(fst, net_root, &mut subtrees, n_vars);\n        let snd = process_node_subtree(snd, net_root, &mut subtrees, n_vars);\n        inodes.push(INode { kind, ports: [subtree_root, fst, snd] });\n      }\n      Tree::Var { .. } => unreachable!(),\n      Tree::Ref { nam } => {\n        let kind = Ref { def_name: Name::new(nam) };\n        let var = new_var(n_vars);\n        inodes.push(INode { kind, ports: [subtree_root, var.clone(), var] });\n      }\n      Tree::Num { val } => {\n        let kind = Num { val: val.0 };\n        let var = new_var(n_vars);\n        inodes.push(INode { kind, ports: [subtree_root, var.clone(), var] });\n      }\n      Tree::Opr { fst, snd } => {\n        let kind = NodeKind::Opr;\n        let fst = process_node_subtree(fst, net_root, &mut subtrees, n_vars);\n        let snd = process_node_subtree(snd, net_root, &mut subtrees, n_vars);\n        inodes.push(INode { kind, ports: [subtree_root, fst, snd] });\n      }\n      Tree::Swi { fst, snd } => {\n        let kind = NodeKind::Swi;\n        let fst = process_node_subtree(fst, net_root, &mut subtrees, n_vars);\n        let snd = process_node_subtree(snd, net_root, &mut subtrees, n_vars);\n        inodes.push(INode { kind, ports: [subtree_root, fst, snd] });\n      }\n    }\n  }\n  inodes\n}\n\n// Converts INodes to an INet by linking ports based on names.\nfn inodes_to_inet(inodes: &INodes) -> INet {\n  let mut inet = INet::new();\n  // Maps named inode ports to numeric inet ports.\n  let mut name_map = std::collections::HashMap::new();\n\n  for inode in inodes {\n    let node = inet.new_node(inode.kind.clone());\n    for (j, name) in inode.ports.iter().enumerate() {\n      let p = Port(node, j as SlotId);\n      if name == \"_\" {\n        inet.link(p, ROOT);\n      } else if let Some(&q) = name_map.get(name) {\n        inet.link(p, q);\n        name_map.remove(name);\n      } else {\n        name_map.insert(name.clone(), p);\n      }\n    }\n  }\n\n  inet\n}\n"
  },
  {
    "path": "src/net/mod.rs",
    "content": "pub mod hvm_to_net;\n\nuse crate::fun::Name;\npub type BendLab = u16;\nuse NodeKind::*;\n\n#[derive(Debug, Clone)]\n/// Net representation used only as an intermediate for converting to hvm-core format\npub struct INet {\n  nodes: Vec<Node>,\n}\n\n#[derive(Debug, Clone)]\npub struct Node {\n  pub main: Port,\n  pub aux1: Port,\n  pub aux2: Port,\n  pub kind: NodeKind,\n}\n\n#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord, Default)]\npub struct Port(pub NodeId, pub SlotId);\n\n#[derive(Debug, Clone, PartialEq, Eq)]\npub enum NodeKind {\n  /// Root node\n  Rot,\n  /// Erasure nodes\n  Era,\n  /// Binary combinators\n  Ctr(CtrKind),\n  /// Reference to function definitions\n  Ref { def_name: Name },\n  /// Numbers\n  Num { val: u32 },\n  /// Numeric operations\n  Opr,\n  /// Pattern matching on numbers\n  Swi,\n}\n\n#[derive(Debug, Clone, Copy, PartialEq, Eq)]\npub enum CtrKind {\n  Con(Option<BendLab>),\n  Tup(Option<BendLab>),\n  Dup(BendLab),\n}\n\nimpl CtrKind {\n  pub fn to_lab(self) -> BendLab {\n    #[allow(clippy::identity_op)]\n    match self {\n      CtrKind::Con(None) => 0,\n      CtrKind::Con(Some(_)) => todo!(\"Tagged lambdas/applications not implemented for hvm32\"),\n      CtrKind::Tup(None) => 0,\n      CtrKind::Tup(Some(_)) => todo!(\"Tagged tuples not implemented for hvm32\"),\n      CtrKind::Dup(0) => 1,\n      CtrKind::Dup(_) => todo!(\"Tagged dups/sups not implemented for hvm32\"),\n    }\n  }\n}\n\npub type NodeId = u64;\npub type SlotId = u64;\n\n/// The ROOT port is on the deadlocked root node at address 0.\npub const ROOT: Port = Port(0, 1);\npub const TAG_WIDTH: u32 = 4;\npub const TAG: u32 = u64::BITS - TAG_WIDTH;\npub const LABEL_MASK: u64 = (1 << TAG) - 1;\npub const TAG_MASK: u64 = !LABEL_MASK;\n\nimpl INet {\n  /// Create a new net, with a deadlocked root node.\n  pub fn new() -> Self {\n    Self::default()\n  }\n\n  /// Allocates a new node with its ports disconnected.\n  pub fn new_node(&mut self, kind: NodeKind) -> NodeId {\n    let idx = self.nodes.len() as NodeId;\n    let node = Node::new(Port(idx, 0), Port(idx, 1), Port(idx, 2), kind);\n    self.nodes.extend([node]);\n    idx\n  }\n\n  /// Returns a reference to a node.\n  pub fn node(&self, node: NodeId) -> &Node {\n    &self.nodes[node as usize]\n  }\n\n  /// Returns the value stored at a port, the port on the other side of the given one.\n  pub fn enter_port(&self, port: Port) -> Port {\n    self.node(port.node_id()).port(port.slot())\n  }\n\n  /// Links two ports.\n  pub fn link(&mut self, a: Port, b: Port) {\n    self.set(a, b);\n    self.set(b, a);\n  }\n\n  /// Sets a port to point to another port\n  pub fn set(&mut self, src: Port, dst: Port) {\n    *self.nodes[src.node_id() as usize].port_mut(src.slot()) = dst;\n  }\n}\n\nimpl Default for INet {\n  fn default() -> Self {\n    INet {\n      nodes: vec![Node::new(Port(0, 2), Port(0, 1), Port(0, 0), Rot)], // p2 points to p0, p1 points to net\n    }\n  }\n}\n\nimpl Node {\n  pub fn new(main: Port, aux1: Port, aux2: Port, kind: NodeKind) -> Self {\n    Node { main, aux1, aux2, kind }\n  }\n\n  pub fn port(&self, slot: SlotId) -> Port {\n    match slot {\n      0 => self.main,\n      1 => self.aux1,\n      2 => self.aux2,\n      _ => unreachable!(),\n    }\n  }\n\n  pub fn port_mut(&mut self, slot: SlotId) -> &mut Port {\n    match slot {\n      0 => &mut self.main,\n      1 => &mut self.aux1,\n      2 => &mut self.aux2,\n      _ => unreachable!(),\n    }\n  }\n}\n\nimpl Port {\n  /// Returns the node address of a port.\n  pub fn node_id(self) -> NodeId {\n    self.0\n  }\n\n  /// Returns the slot of a port.\n  pub fn slot(self) -> SlotId {\n    self.1\n  }\n}\n\n/* INodes representation: */\n\n/// A flat inet representation where links are represented by shared wire names.\n// TODO: Find a better name\npub type INodes = Vec<INode>;\n\n#[derive(Debug)]\npub struct INode {\n  pub kind: NodeKind,\n  pub ports: [String; 3],\n}\n"
  },
  {
    "path": "src/utils.rs",
    "content": "/// A macro for creating iterators that can have statically known\n/// different types. Useful for iterating over tree children, where\n/// each tree node variant yields a different iterator type.\n#[macro_export]\nmacro_rules! multi_iterator {\n  ($Iter:ident { $($Variant:ident),* $(,)? }) => {\n    #[derive(Debug, Clone)]\n    enum $Iter<$($Variant),*> {\n      $($Variant { iter: $Variant }),*\n    }\n\n    impl<$($Variant),*> $Iter<$($Variant),*> {\n      $(\n        #[allow(non_snake_case)]\n        fn $Variant(iter: impl IntoIterator<IntoIter = $Variant>) -> Self {\n          $Iter::$Variant { iter: iter.into_iter() }\n        }\n      )*\n    }\n\n    impl<T, $($Variant: Iterator<Item = T>),*> Iterator for $Iter<$($Variant),*> {\n      type Item = T;\n      fn next(&mut self) -> Option<T> {\n        match self { $($Iter::$Variant { iter } => iter.next()),* }\n      }\n\n      fn size_hint(&self) -> (usize, Option<usize>) {\n        match self { $($Iter::$Variant { iter } => iter.size_hint()),* }\n      }\n    }\n\n    impl<T, $($Variant: DoubleEndedIterator<Item = T>),*> DoubleEndedIterator for $Iter<$($Variant),*> {\n      fn next_back(&mut self) -> Option<T> {\n        match self { $($Iter::$Variant { iter } => iter.next_back()),* }\n      }\n    }\n  };\n}\n"
  },
  {
    "path": "tests/golden_tests/check_file/fail_type_bad_rec_fn_adt.bend",
    "content": "# Should give a type error in Erase when unifying the field of type Unit with the match type of Box \ntype Box:\n  Box {x: Unit}\n\ntype Unit:\n  Unit\n\nErase: Box -> None\n(Erase (Box/Box x)) = (Erase x)\n\nmain: None\nmain = (Erase (Box/Box Unit/Unit))\n"
  },
  {
    "path": "tests/golden_tests/check_file/non_exaustive_limit.bend",
    "content": "type Foo = A | B | C | D | E | F | G | H\n\nBar Foo/A Foo/A Foo/A = *\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/check_file/type_err_match_arm.bend",
    "content": "type Nat_:\n  Zero\n  Succ {x: Unit, pred: Nat_}\n\ntype Unit:\n  Unit\n\nTest1: Nat_ -> (Nat_, Nat_)\nTest1 = λx match x {\n  Nat_/Zero: (Nat_/Zero, Nat_/Zero)\n  Nat_/Succ: (x.x, x.pred)\n}\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_all.args",
    "content": "gen-hvm\ntests/golden_tests/cli/compile_all.bend\n-Oall\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_all.bend",
    "content": "type Pair\n  = (Pair fst snd)\n\nPair.get f (Pair/Pair fst snd) = (f fst snd)\n\nmain = (Pair.get @x @y (+ x y) (Pair/Pair 40 2))\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_inline.args",
    "content": "gen-hvm\ntests/golden_tests/cli/compile_inline.bend\n-Oinline\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_inline.bend",
    "content": "(Num) = 42\n\n(Era) = *\n\n(RefToRef) = (Era)\n\n(Main) = (Era Num RefToRef)\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_no_opts.args",
    "content": "gen-hvm\ntests/golden_tests/cli/compile_no_opts.bend\n-Ono-all\n-Ono-eta\n-Ono-prune\n-Ono-float-combinators\n-Ono-merge\n-Ono-inline\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_no_opts.bend",
    "content": "main = *\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_pre_reduce.args",
    "content": "gen-hvm\ntests/golden_tests/cli/compile_pre_reduce.bend\n-Opre-reduce\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_pre_reduce.bend",
    "content": "I = (+ 2 3)\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_strict_loop.args",
    "content": "gen-hvm\ntests/golden_tests/cli/compile_strict_loop.bend\n-Ono-all\n-Arecursion-cycle\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_strict_loop.bend",
    "content": "A = @a match a {\n  List/Cons: (A a.tail)\n  List/Nil: 0\n}\n\nmain = (A [4 4])\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_wrong_opt.args",
    "content": "gen-hvm\ntests/golden_tests/cli/compile_wrong_opt.bend\n-Ofoo\n"
  },
  {
    "path": "tests/golden_tests/cli/compile_wrong_opt.bend",
    "content": "main = *\n"
  },
  {
    "path": "tests/golden_tests/cli/custom_hvm_bin.args",
    "content": "run\ntests/golden_tests/cli/custom_hvm_bin.bend\n--hvm-bin=hvm\n"
  },
  {
    "path": "tests/golden_tests/cli/custom_hvm_bin.bend",
    "content": "main = @x x"
  },
  {
    "path": "tests/golden_tests/cli/debug_list_map.args",
    "content": "run\ntests/golden_tests/cli/debug_list_map.bend\n-d\n-L\n-1\n"
  },
  {
    "path": "tests/golden_tests/cli/debug_list_map.bend",
    "content": "(Map f []) = []\n(Map f (List/Cons head tail)) = (List/Cons (f head) (Map f tail))\n\n(Inc) = @x (+ x 1)\n\n(Main) = (Map Inc [1 41 0xFF 90])\n"
  },
  {
    "path": "tests/golden_tests/cli/debug_u60_to_nat.args",
    "content": "run\ntests/golden_tests/cli/debug_u60_to_nat.bend\n-d\n4\n"
  },
  {
    "path": "tests/golden_tests/cli/debug_u60_to_nat.bend",
    "content": "type Nat_ = (Z) | (S nat)\n\nU60ToNat n = switch n {\n  0: Nat_/Z\n  _: (Nat_/S (U60ToNat n-1))\n}\n\n(Main n) = (U60ToNat n)\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_bool_scott.args",
    "content": "desugar\ntests/golden_tests/cli/desugar_bool_scott.bend\n-Oadt-scott\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_bool_scott.bend",
    "content": "type Boolean = True | False\n\nmain = Boolean/True\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_float_combinators.args",
    "content": "desugar\ntests/golden_tests/cli/desugar_float_combinators.bend\n-Ofloat-combinators\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_float_combinators.bend",
    "content": "Z =    @s @z z\nS = @x @s @z (s (x s z))\n\nget = @Nat (Nat @x (+ x 1) 0)\n\nmain = (get (S (S Z)))\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_linearize_matches.args",
    "content": "desugar\ntests/golden_tests/cli/desugar_linearize_matches.bend\n-Olinearize-matches\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_linearize_matches.bend",
    "content": "main = λa λb λc switch a { 0: b; _: c }\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_linearize_matches_alt.args",
    "content": "desugar\ntests/golden_tests/cli/desugar_linearize_matches_alt.bend\n-Olinearize-matches-alt\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_linearize_matches_alt.bend",
    "content": "main = λa λb switch a { 0: b; _: b }\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_merge.args",
    "content": "desugar\ntests/golden_tests/cli/desugar_merge.bend\n-Omerge\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_merge.bend",
    "content": "F = @t @f f\nZ = @s @z z\n\nmain = (F)\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_pretty.args",
    "content": "desugar\ntests/golden_tests/cli/desugar_pretty.bend\n-p\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_pretty.bend",
    "content": "Foo (a,b) (c,d) = (+ (+ a b) (+ c d))\n\nmain =\n  @(x, y)\n  @{a b c}\n  (+ (+ x y) (+ a b))\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_prune.args",
    "content": "desugar\ntests/golden_tests/cli/desugar_prune.bend\n-Oprune\n"
  },
  {
    "path": "tests/golden_tests/cli/desugar_prune.bend",
    "content": "id x = x\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/cli/gen_hvm_no_eta_by_default.args",
    "content": "gen-hvm\ntests/golden_tests/cli/gen_hvm_no_eta_by_default.bend"
  },
  {
    "path": "tests/golden_tests/cli/gen_hvm_no_eta_by_default.bend",
    "content": "# Eta-reduction of some recursive functions can mess the performance\n# of programs targeting the CUDA runtime.\n\n# So for now we've disabled it by default when the target architecture\n# is not C (for which eta-reduction usually seems to not only decrease\n# the total amount of interactions, but actually slightly increase \n# performance a little bit is the tested cases).\n\n# This test checks that the compiler doesn't eta-reduce when calling\n# 'gen-hvm', which has an unknown target architecture.\n\n# A recursive function\nmake_list n x = switch n {\n  0: @l l\n  _: @l (l x (make_list n-1 x))\n}\n\n# A non-recursive function\nmake_10 x = (make_list 10 x)\n\nmain = (make_10 1)"
  },
  {
    "path": "tests/golden_tests/cli/input_file_not_found.args",
    "content": "run\ntests/golden_tests/missing_dir/input_file_not_found.bend\n"
  },
  {
    "path": "tests/golden_tests/cli/input_file_not_found.bend",
    "content": ""
  },
  {
    "path": "tests/golden_tests/cli/net_size_too_large.args",
    "content": "gen-hvm\ntests/golden_tests/cli/net_size_too_large.bend\n-Ocheck-net-size\n"
  },
  {
    "path": "tests/golden_tests/cli/net_size_too_large.bend",
    "content": "type Map_ = Free | Used | (Both a b)\ntype Arr = Null | (Leaf x) | (Node a b)\n\n(Swap s a b) = switch s {\n  0: (Map_/Both a b)\n  _: (Map_/Both b a)\n}\n\n# Sort : Arr -> Arr\n(Sort t) = (ToArr 0 (ToMap t))\n\n# ToMap : Arr -> Map\n(ToMap Arr/Null)       = Map_/Free\n(ToMap (Arr/Leaf a))   = (Radix a)\n(ToMap (Arr/Node a b)) = (Merge (ToMap a) (ToMap b))\n\n# ToArr : U60 -> Map -> Arr\n(ToArr x Map_/Free) = Arr/Null\n(ToArr x Map_/Used) = (Arr/Leaf x)\n(ToArr x (Map_/Both a b)) =\n  let a = (ToArr (+ (* x 2) 0) a)\n  let b = (ToArr (+ (* x 2) 1) b)\n  (Arr/Node a b)\n\n# Merge : Map -> Map -> Map\n(Merge Map_/Free       Map_/Free)       = Map_/Free\n(Merge Map_/Free       Map_/Used)       = Map_/Used\n(Merge Map_/Used       Map_/Free)       = Map_/Used\n(Merge Map_/Used       Map_/Used)       = Map_/Used\n(Merge Map_/Free       (Map_/Both c d)) = (Map_/Both c d)\n(Merge (Map_/Both a b) Map_/Free)       = (Map_/Both a b)\n(Merge (Map_/Both a b) (Map_/Both c d)) = (Map_/Both (Merge a c) (Merge b d))\n(Merge (Map_/Both a b) Map_/Used) = *\n(Merge Map_/Used (Map_/Both a b)) = *\n\n# Radix : U60 -> Map\n(Radix n) =\n  let r = Map_/Used\n  let r = (Swap (& n 1) r Map_/Free)\n  let r = (Swap (& n 2) r Map_/Free)\n  let r = (Swap (& n 4) r Map_/Free)\n  let r = (Swap (& n 8) r Map_/Free)\n  let r = (Swap (& n 16) r Map_/Free)\n  let r = (Swap (& n 32) r Map_/Free)\n  let r = (Swap (& n 64) r Map_/Free)\n  let r = (Swap (& n 128) r Map_/Free)\n  let r = (Swap (& n 256) r Map_/Free)\n  let r = (Swap (& n 512) r Map_/Free)\n  let r = (Swap (& n 1024) r Map_/Free)\n  let r = (Swap (& n 2048) r Map_/Free)\n  let r = (Swap (& n 4096) r Map_/Free)\n  let r = (Swap (& n 8192) r Map_/Free)\n  let r = (Swap (& n 16384) r Map_/Free)\n  let r = (Swap (& n 32768) r Map_/Free)\n  let r = (Swap (& n 65536) r Map_/Free)\n  let r = (Swap (& n 131072) r Map_/Free)\n  let r = (Swap (& n 262144) r Map_/Free)\n  let r = (Swap (& n 524288) r Map_/Free)\n  let r = (Swap (& n 1048576) r Map_/Free)\n  let r = (Swap (& n 2097152) r Map_/Free)\n  let r = (Swap (& n 4194304) r Map_/Free)\n  let r = (Swap (& n 8388608) r Map_/Free)\n  r\n\n\n# Reverse : Arr -> Arr\n(Reverse Arr/Null)       = Arr/Null\n(Reverse (Arr/Leaf a))   = (Arr/Leaf a)\n(Reverse (Arr/Node a b)) = (Arr/Node (Reverse b) (Reverse a))\n\n# Sum : Arr -> U60\n(Sum Arr/Null)       = 0\n(Sum (Arr/Leaf x))   = x\n(Sum (Arr/Node a b)) = (+ (Sum a) (Sum b))\n\n# Gen : U60 -> Arr\n(Gen n) = (Gen.go n 0)\n  (Gen.go n x) = switch n {\n    0: (Arr/Leaf x)\n    _:\n      let a = (* x 2)\n      let b = (| (* x 2) 1)\n      (Arr/Node (Gen.go n-1 a) (Gen.go n-1 b))\n  }\n\nMain = (Sum (Sort (Reverse (Gen 4))))\n"
  },
  {
    "path": "tests/golden_tests/cli/no_check_net_size.args",
    "content": "gen-hvm\ntests/golden_tests/cli/no_check_net_size.bend\n-Ono-check-net-size\n"
  },
  {
    "path": "tests/golden_tests/cli/no_check_net_size.bend",
    "content": "type Map_ = Free | Used | (Both a b)\ntype Arr = Null | (Leaf x) | (Node a b)\n\n(Swap s a b) = switch s {\n  0: (Map_/Both a b)\n  _: (Map_/Both b a)\n}\n\n# Sort : Arr -> Arr\n(Sort t) = (ToArr 0 (ToMap t))\n\n# ToMap : Arr -> Map\n(ToMap Arr/Null)       = Map_/Free\n(ToMap (Arr/Leaf a))   = (Radix a)\n(ToMap (Arr/Node a b)) = (Merge (ToMap a) (ToMap b))\n\n# ToArr : U60 -> Map -> Arr\n(ToArr x Map_/Free) = Arr/Null\n(ToArr x Map_/Used) = (Arr/Leaf x)\n(ToArr x (Map_/Both a b)) =\n  let a = (ToArr (+ (* x 2) 0) a)\n  let b = (ToArr (+ (* x 2) 1) b)\n  (Arr/Node a b)\n\n# Merge : Map -> Map -> Map\n(Merge Map_/Free       Map_/Free)       = Map_/Free\n(Merge Map_/Free       Map_/Used)       = Map_/Used\n(Merge Map_/Used       Map_/Free)       = Map_/Used\n(Merge Map_/Used       Map_/Used)       = Map_/Used\n(Merge Map_/Free       (Map_/Both c d)) = (Map_/Both c d)\n(Merge (Map_/Both a b) Map_/Free)       = (Map_/Both a b)\n(Merge (Map_/Both a b) (Map_/Both c d)) = (Map_/Both (Merge a c) (Merge b d))\n(Merge (Map_/Both a b) Map_/Used) = *\n(Merge Map_/Used (Map_/Both a b)) = *\n\n# Radix : U60 -> Map\n(Radix n) =\n  let r = Map_/Used\n  let r = (Swap (& n 1) r Map_/Free)\n  let r = (Swap (& n 2) r Map_/Free)\n  let r = (Swap (& n 4) r Map_/Free)\n  let r = (Swap (& n 8) r Map_/Free)\n  let r = (Swap (& n 16) r Map_/Free)\n  let r = (Swap (& n 32) r Map_/Free)\n  let r = (Swap (& n 64) r Map_/Free)\n  let r = (Swap (& n 128) r Map_/Free)\n  let r = (Swap (& n 256) r Map_/Free)\n  let r = (Swap (& n 512) r Map_/Free)\n  let r = (Swap (& n 1024) r Map_/Free)\n  let r = (Swap (& n 2048) r Map_/Free)\n  let r = (Swap (& n 4096) r Map_/Free)\n  let r = (Swap (& n 8192) r Map_/Free)\n  let r = (Swap (& n 16384) r Map_/Free)\n  let r = (Swap (& n 32768) r Map_/Free)\n  let r = (Swap (& n 65536) r Map_/Free)\n  let r = (Swap (& n 131072) r Map_/Free)\n  let r = (Swap (& n 262144) r Map_/Free)\n  let r = (Swap (& n 524288) r Map_/Free)\n  let r = (Swap (& n 1048576) r Map_/Free)\n  let r = (Swap (& n 2097152) r Map_/Free)\n  let r = (Swap (& n 4194304) r Map_/Free)\n  let r = (Swap (& n 8388608) r Map_/Free)\n  r\n\n\n# Reverse : Arr -> Arr\n(Reverse Arr/Null)       = Arr/Null\n(Reverse (Arr/Leaf a))   = (Arr/Leaf a)\n(Reverse (Arr/Node a b)) = (Arr/Node (Reverse b) (Reverse a))\n\n# Sum : Arr -> U60\n(Sum Arr/Null)       = 0\n(Sum (Arr/Leaf x))   = x\n(Sum (Arr/Node a b)) = (+ (Sum a) (Sum b))\n\n# Gen : U60 -> Arr\n(Gen n) = (Gen.go n 0)\n  (Gen.go n x) = switch n {\n    0: (Arr/Leaf x)\n    _:\n      let a = (* x 2)\n      let b = (| (* x 2) 1)\n      (Arr/Node (Gen.go n-1 a) (Gen.go n-1 b))\n  }\n\nMain = (Sum (Sort (Reverse (Gen 4))))\n"
  },
  {
    "path": "tests/golden_tests/cli/run_add.args",
    "content": "run\ntests/golden_tests/cli/run_add.bend\n3\n6\n"
  },
  {
    "path": "tests/golden_tests/cli/run_add.bend",
    "content": "main a b = (+ a b)\n"
  },
  {
    "path": "tests/golden_tests/cli/run_pretty.args",
    "content": "run\ntests/golden_tests/cli/run_pretty.bend\n-p\n"
  },
  {
    "path": "tests/golden_tests/cli/run_pretty.bend",
    "content": "main a b =\n  switch a {\n    0: switch b {\n      0: \"ba\"\n      _: \"ta\"\n    }\n    _: \"ata\"\n  }\n"
  },
  {
    "path": "tests/golden_tests/cli/tuple_readback.args",
    "content": "run\ntests/golden_tests/cli/tuple_readback.bend\n-Ono-float-combinators\n-Aall\n"
  },
  {
    "path": "tests/golden_tests/cli/tuple_readback.bend",
    "content": "# We probably will not be able to handle all these\nmain = (\n  @a (1, a),\n  (1, 2),\n  (*, 2),\n  ($x, @$x *),\n  ((1, @$y $z), (2, @$z $y)),\n  ((@$a $b, @$b $c), (@$c $d, @$d $a))\n)"
  },
  {
    "path": "tests/golden_tests/cli/warn_and_err.args",
    "content": "gen-hvm\ntests/golden_tests/cli/warn_and_err.bend\n"
  },
  {
    "path": "tests/golden_tests/cli/warn_and_err.bend",
    "content": "Foo a a = a\n\nMain = (Foo a)\n"
  },
  {
    "path": "tests/golden_tests/compile_entrypoint/foo.bend",
    "content": "bar = λx x\n\nfoo = (bar 2)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/360_no_scope.bend",
    "content": "main =\n  let $d = ((@$a $c) 360)\n  let $b = ((@$c $a) $b)\n  let #x{#y($e, $f) #y($g, $h)} = #y(#x{$d $f}, #x{$e, $g})\n  $h\n"
  },
  {
    "path": "tests/golden_tests/compile_file/add_args.bend",
    "content": "add x y = (+ x y)\n\nmain x y = (add x y)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/addition.bend",
    "content": "main = (λx (+ (+ 1 1) x) 8)"
  },
  {
    "path": "tests/golden_tests/compile_file/addition_const.bend",
    "content": "main = (+ 1 2)"
  },
  {
    "path": "tests/golden_tests/compile_file/ask_outside_do.bend",
    "content": "main = ask x = (Result/Ok x); x\n"
  },
  {
    "path": "tests/golden_tests/compile_file/church_one.bend",
    "content": "main = (λk λs λz let {s0 s1} = s; (s0 ((k s1) z)) λq λw w)"
  },
  {
    "path": "tests/golden_tests/compile_file/church_zero.bend",
    "content": "main = λs λz z"
  },
  {
    "path": "tests/golden_tests/compile_file/complicated_dup.bend",
    "content": "main = let {x1 x2} = ($a $b); λy let {y1 y2} = y; (λ$a (y1 x1) λ$b (y2 x2))"
  },
  {
    "path": "tests/golden_tests/compile_file/crlf.bend",
    "content": "a = 1\r\n\r\nmain = 2"
  },
  {
    "path": "tests/golden_tests/compile_file/cyclic_global_lam.bend",
    "content": "main = λa ($a λ$a a)"
  },
  {
    "path": "tests/golden_tests/compile_file/def_pat_unscoped.bend",
    "content": "add $a b = (+ $a b)\n\nmain = (add 9 4)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/dup_apply.bend",
    "content": "main = λa let {a1 a2} = a; (a1 a2)"
  },
  {
    "path": "tests/golden_tests/compile_file/dup_global_lam.bend",
    "content": "main = let {x1 x2} = $a; ((λ$a λb b) (x1 x2))"
  },
  {
    "path": "tests/golden_tests/compile_file/elif.bend",
    "content": "def main:\n  cond1 = 1 == 2\n  cond2 = 2 < 1\n  cond3 = 3 > 2\n  cond4 = 2 == 2\n  if cond1:\n    res = 1\n  elif cond2:\n    res = 2\n  elif cond3:\n    res = 3\n  elif cond4:\n    res = 4\n  else:\n    res = 0\n  return res\n"
  },
  {
    "path": "tests/golden_tests/compile_file/elif_fun.bend",
    "content": "main =\n  let cond1 = (== 1 2)\n  let cond2 = (< 2 1)\n  let cond3 = (> 3 2)\n  let cond4 = (== 2 2)\n  if cond1 {\n    1\n  } elif cond2 {\n    2\n  } elif cond3 {\n    3\n  } elif cond4 {\n    4\n  } else {\n    0\n  }\n"
  },
  {
    "path": "tests/golden_tests/compile_file/elif_no_else.bend",
    "content": "def main:\n  if 1 == 1:\n    return 0\n  elif 2 == 2:\n    return 1\n"
  },
  {
    "path": "tests/golden_tests/compile_file/erased_dup.bend",
    "content": "main = λa let {a1 a2} = a; a2"
  },
  {
    "path": "tests/golden_tests/compile_file/error_data_def_name.bend",
    "content": "type A = A\nA/A = 0\n\nmain = A/A\n"
  },
  {
    "path": "tests/golden_tests/compile_file/error_messages.bend",
    "content": "data A = (A)\ndata B = (B)\ndata C = (B)\n\nFoo (C) = *\nFoo (D) = *\n\nFoo2 (E) = *\n\nMain = *\n"
  },
  {
    "path": "tests/golden_tests/compile_file/f24_oper.bend",
    "content": "main = (/ (* +124.0928 1.24) (+ 0.0 -235.12235))"
  },
  {
    "path": "tests/golden_tests/compile_file/fst_snd.bend",
    "content": "main = \nlet fst = (@t let (f, *) = t; f);\nlet snd = (@t let (*, s) = t; s);\n(snd (fst ((1, 3), 2)))\n"
  },
  {
    "path": "tests/golden_tests/compile_file/global_lam.bend",
    "content": "main = ((λ$a λa a) $a)"
  },
  {
    "path": "tests/golden_tests/compile_file/i24_oper.bend",
    "content": "main = (* (+ +1 -1) (- -12 +14))"
  },
  {
    "path": "tests/golden_tests/compile_file/id.bend",
    "content": "main = λa a"
  },
  {
    "path": "tests/golden_tests/compile_file/infer_dup.bend",
    "content": "main = λa (a a)"
  },
  {
    "path": "tests/golden_tests/compile_file/inlining.bend",
    "content": "(Num) = 42\n\n(Era) = *\n\n(RefToRef) = (Era)\n\n(Main) = (Era Num RefToRef)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/just_a_name.bend",
    "content": "asdf"
  },
  {
    "path": "tests/golden_tests/compile_file/just_data.bend",
    "content": "type"
  },
  {
    "path": "tests/golden_tests/compile_file/just_paren.bend",
    "content": "main = *\n("
  },
  {
    "path": "tests/golden_tests/compile_file/just_rule_paren.bend",
    "content": "(rule)"
  },
  {
    "path": "tests/golden_tests/compile_file/let_substitution.bend",
    "content": "main = let x = λa (a a); x"
  },
  {
    "path": "tests/golden_tests/compile_file/let_tup.bend",
    "content": "main = let tup = (@x@y x, @x@y y); tup"
  },
  {
    "path": "tests/golden_tests/compile_file/lets.bend",
    "content": "main = \nlet a0 = λx0 x0;\nlet a1 = λx1 x1;\nlet a2 = λx2 x2;\nlet a3 = λx3 x3;\nlet a4 = λx4 x4;\n(a1 (a2 a2) (a3 a3 a3) (a4 a4 a4 a4))\n"
  },
  {
    "path": "tests/golden_tests/compile_file/long_name.bend",
    "content": "(WowThis_is_a_very_long_name_no_way_ItFits) = λa a\nmain = λa (WowThis_is_a_very_long_name_no_way_ItFits *)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/match.bend",
    "content": "main = switch x = (+ 0 1) {\n  0: λt λf t\n  _: λt λf f\n}"
  },
  {
    "path": "tests/golden_tests/compile_file/mismatched_ask_statements.bend",
    "content": "type Bool:\n  T\n  F\n\ndef main:\n  with IO:\n    match _ = Bool/T:\n      case Bool/T:\n        x <- wrap(0)\n      case Bool/F:\n        x = wrap(0)\n    return wrap(x)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/missing_adt_eq.bend",
    "content": "type Adt"
  },
  {
    "path": "tests/golden_tests/compile_file/missing_ctrs.bend",
    "content": "type Adt ="
  },
  {
    "path": "tests/golden_tests/compile_file/missing_pat.bend",
    "content": "main = @x match x {\n  : *\n}\n"
  },
  {
    "path": "tests/golden_tests/compile_file/names_starting_with_keywords.bend",
    "content": "A = @matchn matchn\nB = @usen usen\nC = @letn letn\nD = @don don\nE = @switchn switchn\n\nmain = *"
  },
  {
    "path": "tests/golden_tests/compile_file/nested_ctr_wrong_arity.bend",
    "content": "type Pair = (Pair fst snd)\n\nfst_fst (Pair/Pair (Pair/Pair fst) *) = fst\n\nmain = (fst_fst (Pair/Pair (Pair/Pair 1 2) 3))\n"
  },
  {
    "path": "tests/golden_tests/compile_file/nested_let.bend",
    "content": "main = \nlet (a, b) = ((2, 4), (3, 6));\nlet (a1, a2) = a;\nlet (b1, b2) = b;\nb1\n"
  },
  {
    "path": "tests/golden_tests/compile_file/number_too_large.bend",
    "content": "main = 0x10000000"
  },
  {
    "path": "tests/golden_tests/compile_file/nums.bend",
    "content": "main = (+ 0xFF_FFFF (+ 0b101 1_000))"
  },
  {
    "path": "tests/golden_tests/compile_file/op2.bend",
    "content": "main = (% (+ (- (* (/ (< (> (| (& (== (!= 0 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11)"
  },
  {
    "path": "tests/golden_tests/compile_file/redex_order.bend",
    "content": "# We want the nested calls in foo to be compiled as redexes written in outer to inner order\n# So they should compile to: @foo = root_tree & a ~ ... & b ~ ... & c ~ ...\nfoo = @x (a (b (c x)))\nfoo2 = (a (b (c 0)))\n\na = @x x\nb = @x x\nc = @x x\n\nmain = (foo foo2)"
  },
  {
    "path": "tests/golden_tests/compile_file/redex_order_recursive.bend",
    "content": "tail_recursive = @x (x @pred @acc (tail_recursive pred (+ 1 acc)) @acc 0)\n\nfold_ = @bm (bm\n  @lft @rgt (add (fold_ lft) (fold_ rgt))\n  @s @z (s @s @z z)\n)\n\nadd = @a (a\n  @p @b (add p @s @z (s b))\n  @b b\n)\n\nList.sum xs acc = match xs {\n  List/Nil: acc\n  List/Cons: (List.sum xs.tail (+ xs.head acc))\n}\n\nList.len xs = match xs {\n  List/Nil: 0\n  List/Cons: (+ 1 (List.len xs.tail))\n}\n\nList.len_tr xs acc = match xs {\n  List/Nil: acc\n  List/Cons: (List.len_tr xs.tail (+ 1 acc))\n}\n\nList.map xs f = match xs {\n  List/Nil: List/Nil\n  List/Cons: (List/Cons (f xs.head) (List.map xs.tail f))\n}\n\nList.concat xs ys = match xs {\n  List/Nil: ys\n  List/Cons: (List/Cons xs.head (List.concat xs.tail ys))\n}\n\nList.reverse_bad xs = match xs {\n  List/Nil: List/Nil\n  List/Cons: (List.concat (List.reverse_bad xs.tail) (List/Cons xs.head List/Nil))\n}\n\nList.reverse_tr xs acc = (List.reverse_over xs List/Nil)\n\nList.fold xs c n = match xs {\n  List/Nil: n\n  List/Cons: (c xs.head (List.fold xs.tail c n))\n}\n\nList.reduce xs f acc = match xs {\n  List/Nil: acc\n  List/Cons: (List.reduce xs.tail f (f acc xs.head))\n}\n\nList.reverse_over xs ys = match xs {\n  List/Nil: ys\n  List/Cons: (List.reverse_over xs.tail (List/Cons xs.head ys))\n}\n\nTree.leaves tree = match tree {\n  Tree/Leaf: 1\n  Tree/Node: (+ (Tree.leaves tree.left) (Tree.leaves tree.right))\n}\n\nTree.nodes tree = match tree {\n  Tree/Leaf: 0\n  Tree/Node: (+ 1 (+ (Tree.nodes tree.left) (Tree.nodes tree.right)))\n}\n\nTree.height tree = match tree {\n  Tree/Leaf: 0\n  Tree/Node: (+ 1 (max (Tree.height tree.left) (Tree.height tree.right)))\n}\n\nTree.map tree f = match tree {\n  Tree/Leaf: (Tree/Leaf (f tree.value))\n  Tree/Node: (Tree/Node (Tree.map tree.left f) (Tree.map tree.right f))\n}\n\nmax a b = switch (> a b) {\n  0: b\n  _: a\n}\n\nTree.flip tree = match tree {\n  Tree/Leaf: tree\n  Tree/Node: (Tree/Node (Tree.flip tree.right) (Tree.flip tree.left))\n}\n\ncalc =\n  let n0 = 1\n  let n1 = (* n0 n0)\n  let n2 = (* n1 n1)\n  let n3 = (* n2 n2)\n  let n4 = (* n3 n3)\n  let n5 = (* n4 n4)\n  (Foo (+ n0 n1) (+ n2 n3) (+ n4 n5))\nFoo = @a @b @c @x (x a b c)\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/compile_file/ref_to_main.bend",
    "content": "Foo = main\nmain = Foo"
  },
  {
    "path": "tests/golden_tests/compile_file/ref_to_ref.bend",
    "content": "A1 = A2\nA2 = 1\n\nB1 = B2\nB2 = B3\nB3 = B4\nB4 = B5\nB5 = 2\n\nC1 = B4\n\n\nmain = ((A1, B1), C1)"
  },
  {
    "path": "tests/golden_tests/compile_file/repeated_bind_rule.bend",
    "content": "Foo a a = a\n\nmain = (Foo 1 2)"
  },
  {
    "path": "tests/golden_tests/compile_file/simple_tup.bend",
    "content": "main = (0, 42)"
  },
  {
    "path": "tests/golden_tests/compile_file/switch_all_patterns.bend",
    "content": "zero_succ = @x switch x {\n  0: 0\n  _: x-1\n}\n\nsucc_zero = @x switch x {\n  _: x-1\n  0: 0\n}\n\nzero = @x switch x {\n  0: 0\n}\n\nsucc = @x switch x {\n  _: x-1\n}\n\nsucc_zero_succ = @x switch x {\n  _: x-1\n  0: 0\n  _: (+ x-1 1)\n}\n\nzero_succ_zero = @x switch x {\n  0: 0\n  _: x-1\n  0: 1\n}\n\nzero_zero_succ = @x switch x {\n  0: 0\n  0: 1\n  _: x-1\n}\n\nzero_succ_succ = @x switch x {\n  0: 0\n  _: x-1\n  _: (+ x-1 1)\n}\n\nmain = 0"
  },
  {
    "path": "tests/golden_tests/compile_file/switch_in_switch_arg.bend",
    "content": "main x = switch x = (switch x {0: 0; _: x-1}) {\n  0: 0\n  _: x\n}\n"
  },
  {
    "path": "tests/golden_tests/compile_file/switch_incomplete.bend",
    "content": "# This should be interpreted as a switch with a SUP argument that is missing its elements.\nmain = switch {}"
  },
  {
    "path": "tests/golden_tests/compile_file/switch_unscoped_lambda.bend",
    "content": "lambda_out = @x @$y switch x {\n  0: $y\n  _: x-1\n}\n\nlambda_in = @x (switch x {\n  0: @x x\n  _: @$y x-1\n} $y)\n\nmain = *"
  },
  {
    "path": "tests/golden_tests/compile_file/top_level_name_slashslash.bend",
    "content": "def random//constant():\n  return 3.14\n\ndef //thisshouldfail():\n  return random//constant()\n\ndef main:\n  return //thisshouldfail()\n"
  },
  {
    "path": "tests/golden_tests/compile_file/tup.bend",
    "content": "main = let x = ((1, 4), (2, 3)); x"
  },
  {
    "path": "tests/golden_tests/compile_file/tup_add.bend",
    "content": "main = let (a, b) = (1, 2); (+ a b)"
  },
  {
    "path": "tests/golden_tests/compile_file/unbound_unscoped_var.bend",
    "content": "main = @a $a"
  },
  {
    "path": "tests/golden_tests/compile_file/unbound_var.bend",
    "content": "main = a"
  },
  {
    "path": "tests/golden_tests/compile_file/unbound_var_scope.bend",
    "content": "# Fully parenthesized, this is (λa ((λb b) b)).\n# Since applications must have (), the second 'b' is not in scope\nmain = λa (λb b b)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/unbound_with_tup_pattern.bend",
    "content": "(Foo (*, *)) = a\n\nmain = *"
  },
  {
    "path": "tests/golden_tests/compile_file/underscore.bend",
    "content": "const _ = 2\n\nmain = (const 0)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/unexpected_top_char.bend",
    "content": "*"
  },
  {
    "path": "tests/golden_tests/compile_file/unscoped_dup_use.bend",
    "content": "main = @$a ($a $a)"
  },
  {
    "path": "tests/golden_tests/compile_file/unscoped_supercombinator.bend",
    "content": "Foo = @f (f @a @$b ($b a) @a @b (b a))\n\nmain = (Foo *)"
  },
  {
    "path": "tests/golden_tests/compile_file/unused_let.bend",
    "content": "# theoretically, this let could be elided and no dups would need to be emitted\n# but this isn't legal in all cases, and it's unclear what heuristics could work here\nmain = @x let * = (+ x x); x\n"
  },
  {
    "path": "tests/golden_tests/compile_file/unused_unscoped_bind.bend",
    "content": "main = λ$a *"
  },
  {
    "path": "tests/golden_tests/compile_file/variable_name_double_underscore.bend",
    "content": "def main:\n  return __this_should_fail__(*)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/vicious_circles.bend",
    "content": "dup_self = let {$x $y} = $x; $y\ndisconnected_self_lam = let $x = @* $x; *\n\nmain = (dup_self, disconnected_self_lam)\n"
  },
  {
    "path": "tests/golden_tests/compile_file/warn_and_err.bend",
    "content": "Foo a a = a\n\nMain = (Foo a)"
  },
  {
    "path": "tests/golden_tests/compile_file/with_clause_parse_err.bend",
    "content": "main = @a @b switch b witha{\n  0: 1\n  _: 0\n}"
  },
  {
    "path": "tests/golden_tests/compile_file/wrong_ctr_arity.bend",
    "content": "type Boxed = (Box val)\n\nBar (*, (Boxed/Box x y)) = x\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/compile_file/wrong_ctr_var_arity.bend",
    "content": "type Tup = (pair a b)\n\n(foo Tup/pair) = pair\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/compile_file/wrong_nums.bend",
    "content": "main = (+ 0b012345 0FA)"
  },
  {
    "path": "tests/golden_tests/compile_file/wrong_unicode_escape.bend",
    "content": "main = (String.cons '\\u{1' \"\\u2}\\u{zxcx}\")"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/addition.bend",
    "content": "main = (λx (+ (+ 1 1) x) 8)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/addition_var_fst.bend",
    "content": "main = λx (+ x 1)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/adt_option_and.bend",
    "content": "type Option = (Some val) | None\n\nOption/and = @a @b match a {\n  Option/Some: match b {\n    Option/Some: (Option/Some (a.val, b.val))\n    Option/None: Option/None\n  }\n  Option/None: Option/None\n}\n\nmain = (Option/and (Option/Some 1) (Option/Some 3))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/adt_string.bend",
    "content": "type String = S\n\nmain = String/S\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/and.bend",
    "content": "type bool = true | false\n\nand a bool/false = bool/false\nand a bool/true = a\n\nmain = (and bool/true bool/false)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/bad_parens_making_erased_let.bend",
    "content": "X = λx x\n\n(main) = (\n    let two = (λf1λx1 (f1 λf2λx2 (f2 λf0λx0 x0)));\n    let qua = (λs1λz1 (s1 λs2λz2 (s2 λs3λz3 (s3 λs4λz4 (s4 λs0λz0 z0)))));\n    X X (X two qua)\n    # Because there is no parens around the return term, the lets are only in scope for the first X\n    # This test is to make sure that the affine checking and duping infering marks them as erased as we expect.\n    # We expect an unbound variable error on two and qua.\n)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/bool.bend",
    "content": "(true) = λt λf t\n(fals) = λt λf f\n(Not) = λx (x fals true)\n\n(main) = (Not true)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/cyclic_dup.bend",
    "content": "main = let {x1 x2} = y1; let {y1 y2} = x1; (x2 y2)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/double_main.bend",
    "content": "Main = λa a\nmain = λb b\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/eta_chain.bend",
    "content": "Baz a b c = (+ a (+ b c))\nBar a b = (Baz a b)\nFoo a = (Bar a)\n\nmain = λa (Foo a)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/ex0.bend",
    "content": "C_z = λs λz z\nC_s = λk λs let {s0 s1} = s; λz (s0 (k s1 z))\nZ = λs λz z\nS = λk λs λz (s k)\nC_1 = λs λz (s z)\nC_2 = λs let {s0 s1} = s; λz (s0 (s1 z))\nmain = (C_2 S Z)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/ex2.bend",
    "content": "(c2) = λs let {s0 s1} = s; λz (s0 (s1 z))\n\n(O) = λt λo λi λe (o t)\n(I) = λt λo λi λe (i t)\n(E) = λo λi λe e\n\n(run) = λx (x runO runI E)\n(runO) = λx (run (dec (O x)))\n(runI) = λx (run (dec (I x)))\n\n(dec) = λx (x decO decI E)\n(decO) = λx (I (dec x))\n(decI) = λx (low x)\n\n(low) = λx (x lowO lowI E)\n(lowO) = λx (O (O x))\n(lowI) = λx (O (I x))\n\n(main) = (run (c2 I E))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/example.bend",
    "content": "# Write definitions like this\n(Def1) = (λa a λb b)\n\n# You can call a definition by just referencing its name\n# It will be substituted in place of the reference\n(Def2) = (λa a Def1)\n\n# Definitions and variables can have names in upper and lower case and contain numbers\n# Names defined in a more inner position shadow names in an outer position\n(def3) = (λDef1 Def1 λx λx x)\n\n# The language is affine, but if you use a variable more than once the compiler inserts duplications for you\n# Of course you can always do them manually\n(def4) = λz let {z1 z2} = z; (z1 (λx (x x x x x) z2))\n\n# You can use machine numbers and some native numeric operations\n# Numeric operations can only reduce numbers, doing (+ (λx x) 1) will not do anything\n(nums) = λx1 λx2 (* (+ x1 1) (/ (- x2 2) 1))\n\n# All files must have a main definition to be run.\n# You can execute a program in HVM with \"cargo run -- --run <path to file>\"\n# Other options are \"--check\" (the default mode) to just see if the file is well formed\n# and \"--compile\" to output hvm-core code.\n# (main) = (Def2 1)\n(main) = (Def2 1)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/exp.bend",
    "content": "# currently broken without lazy_mode\nmain = ((λfλx (f (f x))) (λfλx (f (f x))))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/expr.bend",
    "content": "type Expr\n  = (Var name)\n  | (Num val)\n  | (App fun arg)\n  | (Fun name body)\n  | (If cond then else)\n  | (Let bind val next)\n  | (Dup fst snd val next)\n  | (Tup fst snd)\n  | (Op2 op fst snd)\n\ntype Op\n  = Add\n  | Sub\n  | Mul\n  | Div\n\nmain = (Expr/Let\n  (Expr/Var 0)\n  (Expr/Op2 Op/Mul (Expr/Op2 Op/Sub (Expr/Num 2) (Expr/Num 1) (Expr/Num 3)))\n  (Expr/Dup (Expr/Var 1) (Expr/Var 2) (Expr/Var 0) (Expr/App (Expr/Var 1) (Expr/Var 2)))\n)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/extracted_match_pred.bend",
    "content": "# We expect the inferred 'λn-1' from the match to be extracted which allows this recursive func\nval = λn (switch n { 0: valZ; _: (valS n-1) })\n  valZ = 0\n  valS = λp (val p)\nmain = (val 1)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/fst.bend",
    "content": "Fst (f, s) = f\n\nMain = (Fst (4, 8))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/fst_fst.bend",
    "content": "FstFst (f1, s1) (f2, s2) = (f1, f2)\n\nMain = (FstFst (3, 9) (4, 12))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/hvm1_main.bend",
    "content": "Main = λa a\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/inline_app.bend",
    "content": "Rul1 = λx x\nRul2 = λx x\nRul3 = (Rul1 Rul2)\nmain = (Rul3 Rul3)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/inlining.bend",
    "content": "(Num) = 42\n\n(Era) = *\n\n(RefToRef) = (Era)\n\n(Main) = (Era Num RefToRef)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/linearize_match.bend",
    "content": "main = @a @b switch a {\n  0: b;\n  _: (+ a-1 b);\n}\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/list_merge_sort.bend",
    "content": "type Bool = True | False\ntype List_ = (Cons head tail) | Nil\n\nIf Bool/True then else = then\nIf Bool/False then else = else\n\nPure x = (List_/Cons x List_/Nil)\n\nMap List_/Nil f = List_/Nil\nMap (List_/Cons h t) f = (List_/Cons (f h) (Map t f))\n\nMergeSort cmp xs = (Unpack cmp (Map xs Pure))\n\nUnpack cmp List_/Nil = List_/Nil\nUnpack cmp (List_/Cons h List_/Nil) = h\nUnpack cmp xs = (Unpack cmp (MergePair cmp xs))\n\nMergePair cmp (List_/Cons h1 (List_/Cons h2 t)) = (List_/Cons (Merge cmp h1 h2) (MergePair cmp t))\nMergePair cmp xs = xs\n\nMerge cmp List_/Nil ys = ys\nMerge cmp xs List_/Nil = xs\nMerge cmp (List_/Cons xh xt) (List_/Cons yh yt) =\n  (If (cmp xh yh)\n    let ys = (List_/Cons yh yt)\n    (List_/Cons xh (Merge cmp xt ys))\n    let xs = (List_/Cons xh xt)\n    (List_/Cons yh (Merge cmp xs yt))\n  )\n\nmain = MergeSort\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/list_reverse.bend",
    "content": "type list = (cons h t) | nil\n\nreverse (list/cons h t) = (concat (reverse t) (list/cons h list/nil))\nreverse list/nil = list/nil\n\nconcat (list/cons h t) x = (list/cons h (concat t x))\nconcat list/nil x = x\n\nmain = (reverse (list/cons 3 (list/cons 2 (list/cons 1 list/nil))))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/match_adt_non_exhaustive.bend",
    "content": "type Maybe_ = (Some val) | None\n\nmain = @maybe\n  match maybe {\n    Maybe_/None: 0\n    Maybe_/Some: match maybe.val {\n      Maybe_/None: 0\n    }\n  }\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/match_dup_and_reconstruction.bend",
    "content": "type Box = (Boxed val)\n\nGot = @a match a {\n  Box/Boxed: (a, a.val)\n}\n\nmain = (Got (Box/Boxed 10))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/match_mult_linearization.bend",
    "content": "main = @a @b @c @d switch a {\n  0: (+ (+ b c) d);\n  _: (+ (+ (+ a-1 b) c) d);\n}\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/match_num_explicit_bind.bend",
    "content": "pred = @n switch n {\n  0: 0\n  _: n-1\n}\n\nmain = (pred 4)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/match_tup.bend",
    "content": "Sum (a, b) = (+ a b)\n\nMain = (Sum (7, 3))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/merge_definitions.bend",
    "content": "true  = @t @f t\nfalse = @t @f f\nfst = @a @b a\nsnd = @a @b b\n\nmain = @* (fst true (snd false *))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/non_exhaustive_and.bend",
    "content": "type Bool = T | F\n\nBool.and Bool/T Bool/T = Bool/T\nBool.and Bool/F Bool/F = Bool/F\n\nMain = *\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/non_exhaustive_different_types.bend",
    "content": "# There was a bug where it would say \"Non-exhaustive pattern (foo f1 f2 f3 f3)\",\n# repeating the missing constructor for the next args.\n\ntype b1 = f1 | t1\ntype b2 = f2 | t2\ntype b3 = f3 | t3\ntype b4 = f4 | t4\n\n(foo b1/f1 b2/f2 b3/f3 b4/f4) = 0\n(foo b1/f1 b2/f2 b3/f3 b4/t4) = 1\n\n(main) = (foo b1/f1 b2/f2 b3/f3 b4/f4)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/non_exhaustive_pattern.bend",
    "content": "type Type = A | B | C | D\n\nFoo Type/A Type/B Type/C Type/D = 0\nFoo Type/A Type/B Type/D Type/D = 1\nFoo a b Type/D Type/D = 2\n\nmain = (Foo Type/A Type/B Type/C Type/D)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/non_exhaustive_tree.bend",
    "content": "(Warp s (Tree/Leaf a)   (Tree/Leaf b))   = 0\n(Warp s (Tree/Node a b) (Tree/Node c d)) = 1\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/num_pattern_with_var.bend",
    "content": "# We had a bug where this gave the incorrect error: \"Expected a number but found 'a' at definition 'Foo'.\"\ntype bool = false | true\n\n(Foo bool/false a) = 0\n(Foo bool/true 0) = 0\n(Foo bool/true n) = n\n\nMain = (Foo bool/true 3)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/recursive_combinator_inactive.bend",
    "content": "# `Foo` inside the term `{Foo Foo}` is not in a active position, tests that it is not unnecessarily extracted\nFoo = @a switch a { 0: {Foo Foo}; _: @* a-1 }\n\nmain = (Foo 0)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/repeated_name_trucation.bend",
    "content": "long_name_that_truncates = @a @b long_name_that_truncates\nlong_name_that_truncates_too = @a a\nmain = (long_name_that_truncates long_name_that_truncates_too)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/scrutinee_reconstruction.bend",
    "content": "type Option = (Some val) | None\n\nOption/or = @a @b match a {\n  Option/Some: a\n  Option/None: b\n}\n\nmain = (Option/or (Option/Some 5) (Option/None))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/self_ref.bend",
    "content": "Foo = Foo\nmain = Foo\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/snd.bend",
    "content": "snd = @t let (*, s) = t; s\n\nmain =\n  let x = (0, 42);\n  (snd x)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/spacing.bend",
    "content": "(main) = λa (λa\na\na a)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/spacing2.bend",
    "content": "main = (λa a λa a)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/str.bend",
    "content": "main = \"main =\"\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/sum_predicates.bend",
    "content": "sum_pred = @a @b switch a {\n  0: switch b {\n    0: 0\n    _: b-1\n  };\n  _: switch b {\n    0: a-1\n    _: (+ a-1 b-1)\n  }\n}\n\nmain = (sum_pred 8 5)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/tagged_dup.bend",
    "content": "main =\n  let #i {a b} = @x x;\n  let #i {c d} = @x x;\n  let #i {e f} = @x x;\n  (a b c d e f)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/tagged_lam.bend",
    "content": "main = #foo ((#foo @x (+ x 1), #foo @x (* x x)) 2)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/tagged_sup.bend",
    "content": "a = #i {λx x λx x}\nb = #i {λx x λx x}\nc = #j {λx x λx x}\n\nmain = (a b c)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/unapplied_eta.bend",
    "content": "Id = λa a\nmain = λa (Id a)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/unscoped_eta.bend",
    "content": "main = @a @$b (a $b)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/var_shadows_ref.bend",
    "content": "(a) = λx x\n(main) = (a (λa a))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_all/weekday.bend",
    "content": "type Weekday\n  = Monday\n  | Tuesday\n  | Wednesday\n  | Thursday\n  | Friday\n  | Saturday\n  | Sunday\n\nmain = (@x x Weekday/Saturday)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_no_all/bitonic_sort.bend",
    "content": "type Error = Err\n\n# Atomic Swapper\n(Swap n a b) = switch n {\n  0: (Tree/Node a b)\n  _: (Tree/Node b a)\n}\n\n# Swaps distant values in parallel; corresponds to a Red Box\n(Warp s (Tree/Leaf a)   (Tree/Leaf b))   = (Swap (^ (> a b) s) (Tree/Leaf a) (Tree/Leaf b))\n(Warp s (Tree/Node a b) (Tree/Node c d)) = (Join (Warp s a c) (Warp s b d))\n(Warp s a b) = Error/Err\n\n# Rebuilds the warped tree in the original order\n(Join (Tree/Node a b) (Tree/Node c d)) = (Tree/Node (Tree/Node a c) (Tree/Node b d))\n(Join a b) = Error/Err\n\n# Recursively warps each sub-tree; corresponds to a Blue/Green Box\n(Flow s (Tree/Leaf a))   = (Tree/Leaf a)\n(Flow s (Tree/Node a b)) = (Down s (Warp s a b))\n\n# Propagates Flow downwards\n(Down s (Tree/Leaf a))   = (Tree/Leaf a)\n(Down s (Tree/Node a b)) = (Tree/Node (Flow s a) (Flow s b))\n\n# Bitonic Sort\n(Sort s (Tree/Leaf a))   = (Tree/Leaf a)\n(Sort s (Tree/Node a b)) = (Flow s (Tree/Node (Sort 0 a) (Sort 1 b)))\n\n# Generates a tree of depth `n`\n(Gen n x) = switch n {\n  0: (Tree/Leaf x)\n  _: (Tree/Node (Gen n-1 (* x 2)) (Gen n-1 (+ (* x 2) 1)))\n}\n\n# Reverses a tree\n(Rev (Tree/Leaf x))   = (Tree/Leaf x)\n(Rev (Tree/Node a b)) = (Tree/Node (Rev b) (Rev a))\n\n# Sums a tree\n(Sum (Tree/Leaf x))   = x\n(Sum (Tree/Node a b)) = (+ (Sum a) (Sum b))\n\nMain = (Sum (Sort 0 (Rev (Gen 4 0))))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_no_all/list_reverse.bend",
    "content": "type list = (cons h t) | nil\n\nreverse (list/cons h t) = (concat (reverse t) (list/cons h list/nil))\nreverse list/nil = list/nil\n\nconcat (list/cons h t) x = (list/cons h (concat t x))\nconcat list/nil x = x\n\nmain = (reverse (list/cons 3 (list/cons 2 (list/cons 1 list/nil))))\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_no_all/redex_order.bend",
    "content": "# We want the nested calls in foo to be compiled as redexes written in outer to inner order\n# So they should compile to: @foo = root_tree & a ~ ... & b ~ ... & c ~ ...\nfoo = @x (a (b (c x)))\nfoo2 = (a (b (c 0)))\n\nbar = (a (b (c 0) (c (d 1))) (b (c (d 2)) (c 3)))\n#bar = (\n#  (\n#    a\n#    (\n#      (b (c 0))\n#      (c (d 1))\n#    )\n#  )\n#  (\n#    (\n#      b\n#      (c (d 2))\n#    )\n#    (c 3)\n#  )\n#)\n\na = @x x\nb = @x x\nc = @x x\nd = @x x\n\nmain = (foo foo2)\n"
  },
  {
    "path": "tests/golden_tests/compile_file_o_no_all/sum_tree.bend",
    "content": "add = λa λb (+ a b)\n\ngen = λn switch n {\n  0: (Tree/Leaf 1)\n  _: (Tree/Node (gen n-1) (gen n-1))\n}\n\nsum = λt\n  match t {\n    Tree/Leaf: t.value\n    Tree/Node: (add (sum t.left) (sum t.right))\n  }\n\nmain = (sum (gen 8))\n"
  },
  {
    "path": "tests/golden_tests/compile_long/huge_tree.bend",
    "content": "type Tree_ = (Node lt rt rd ld) | (Leaf val)\n\nmain = (Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (1)) (Tree_/Leaf (1)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (1)) (Tree_/Leaf (1)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (1)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (1)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (1)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (1)) (Tree_/Leaf (1)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (1)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (1)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (1)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (16)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (28)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (23)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (10)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (14)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (15)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (16)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (28)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (81)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (10)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (14)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (5)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (7)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (9)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (11)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (22)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (17)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (57)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (29)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (5)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (9)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (11)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (22)) (Tree_/Leaf (0)))))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (23)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (81)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (15)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (57)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (7)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (29)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) ((Tree_/Node (Tree_/Leaf (0)) ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (17)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))))) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node (Tree_/Leaf (55)) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) ((Tree_/Node ((Tree_/Node ((Tree_/Node (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (55)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)))) (Tree_/Leaf (0)) (Tree_/Leaf (0)) (Tree_/Leaf (0)))\n"
  },
  {
    "path": "tests/golden_tests/compile_long/long_str_file.bend",
    "content": "main = \"(Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (1)) (Leaf (1)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (1)) (Leaf (1)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)))) ((Node ((Node (Leaf (1)) (Leaf (0)) (Leaf (0)) (Leaf (1)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (1)) (Leaf (1)))) (Leaf (0)) (Leaf (0)))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (1)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (1)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (1)) (Leaf (1)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (1)) (Leaf (1)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (1)) (Leaf (1)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (1)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (1)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (1)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (1)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (1)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (1)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))))))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)))))) ((Node ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))) ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))))) ((Node (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))))) ((Node ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))))))))) ((Node ((Node ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))))) (Leaf (0)) ((Node ((Node ((Node ((Node ((Node (Leaf (16)) (Leaf (0)) (Leaf (0)) (Leaf (15)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (28)) (Leaf (0)) (Leaf (0)) (Leaf (23)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (10)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (14)) (Leaf (0)) (Leaf (0)) (Leaf (15)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (16)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (28)) (Leaf (0)))))) ((Node ((Node (Leaf (81)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (10)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (14)) (Leaf (0)))))))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (0)) (Leaf (5)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (0)) (Leaf (0)) (Leaf (7)) (Leaf (0)))))) ((Node ((Node (Leaf (9)) (Leaf (0)) (Leaf (0)) (Leaf (11)))) (Leaf (0)) (Leaf (0)) ((Node (Leaf (22)) (Leaf (0)) (Leaf (0)) (Leaf (17)))))) ((Node ((Node (Leaf (57)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (29)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (5)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (9)) (Leaf (0)))) (Leaf (0)) ((Node (Leaf (0)) (Leaf (11)) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (0)) (Leaf (22)) (Leaf (0)))))))) ((Node ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (23)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)))) ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (81)) (Leaf (0)))) ((Node (Leaf (0)) (Leaf (15)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)))) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (57)) (Leaf (0)))) ((Node (Leaf (7)) (Leaf (0)) (Leaf (0)) (Leaf (29)))) (Leaf (0)) (Leaf (0)))) ((Node (Leaf (0)) ((Node (Leaf (0)) (Leaf (17)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)))))) ((Node ((Node (Leaf (0)) (Leaf (0)) ((Node ((Node (Leaf (55)) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) ((Node ((Node ((Node (Leaf (0)) (Leaf (0)) (Leaf (55)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)))) (Leaf (0)) (Leaf (0)) (Leaf (0)))\"\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/ask_branch.bend",
    "content": "type Bool:\n  T\n  F\n\ndef main:\n  with IO:\n    match _ = Bool/T:\n      case Bool/T:\n        x <- wrap(0)\n      case Bool/F:\n        x <- wrap(0)\n    return wrap(x)\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/bind_syntax.bend",
    "content": "Result/bind (Result/Ok val) f = ((undefer f) val)\nResult/bind err _ = err\n\nsafe_div a b = switch b {\n  0: (Result/Err \"Div by 0\")\n  _: (Result/Ok (/ a b))\n}\n\nsafe_rem a b = switch b {\n  0: (Result/Err \"Mod by 0\")\n  _: (Result/Ok (% a b))\n}\n\nMain = with Result {\n  ask y = (safe_div 3 2)\n  ask x = (safe_rem y 0);\n  x\n}\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/combinators.bend",
    "content": "(foo) = λa λb λc (foo a)\n\n(bar) = λa λb (a bar b)\n\n(List/ignore list ignore) =\n  match list {\n    List/Cons: (List/ignore list.tail (List/ignore))\n    List/Nil: 0\n  }\n\n(baz) = {0 1 2 3 λa a foo}\n\n(qux) = {0 qux}\n\n(clax) = (λx x λa λb λc λd (clax d))\n\n(tup) = (tup, 1, 0)\n\n(list) = [0 list]\n\n(A x) = (let {a b} = A; λc (a b c) x)\n\n(B x) = (let (a, b) = B; λc (a b c) x)\n\n(Main) = list\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/deref_loop.bend",
    "content": "type nat = (succ pred) | zero\n\nfoo = @x match x {\n  nat/succ: x.pred\n  nat/zero: (bar 0)\n}\n\nbar = (foo 1)\n\nmain = (foo 0)\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/dup_linearization.bend",
    "content": "main = \n  let a = *\n\n  let b = a\n  let c = a\n  let d = a\n  let e = a\n  \n  (a, b, c, d, e)\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/local_def_shadow.bend",
    "content": "def main:\n  def A():\n    def B():\n      return 0\n    return B()\n  def A():\n    def B():\n      return 1\n    return B()\n  return A()\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/main_aux.bend",
    "content": "def main:\n  y = 89\n  def aux(x):\n    def aux(x):\n      def aux(x):\n        return x + y\n      return aux(x)\n    return aux(x)\n  return aux(2)\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/mapper_syntax.bend",
    "content": "def main:\n  x = 1\n  x @= lambda x: x + 1\n  map = { 0: 3, 1: 4 }\n  map[1] += 1\n  map[1] @= lambda x: x * 2\n  return (x, map[1], map[0])\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/switch_with_use.bend",
    "content": "# Test manual linearization of a use term\nmain =\n  @x @y use z = (x y); @a @b @c switch a with z {\n    0: z\n    _: (a-1 z)\n  }\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/tree_syntax.bend",
    "content": "fun0 = ![!0 ![!1 ![!2, !3]]]\nfun1 = !(![!*!*])\nfun2 = !!!*\nfun3 = !1\nfun4 = @n switch n {\n  0: !0\n  _: ![(fun4 n-1) (fun4 n-1)]\n}\n\ndef imp0:\n  return ![!0, ![!1, ![!2, !3]]]\ndef imp1:\n  return !(![!*,!*])\ndef imp2:\n  return !!!*\ndef imp3:\n  return !1\ndef imp4(n):\n  switch n:\n    case 0:\n      return !0\n    case _:\n      return ![imp4(n-1), imp4(n-1)]\n\nmain = *"
  },
  {
    "path": "tests/golden_tests/desugar_file/use_id.bend",
    "content": "(Main) =\n  use id =\n    use id = 2\n    (@x x id use id = 3; id)\n  ;\n  use id = (id id)\n  (id id)\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/use_shadow.bend",
    "content": "main = @a use b = (a a) @a (b a)\n"
  },
  {
    "path": "tests/golden_tests/desugar_file/used_once_names.bend",
    "content": "foo a b c = (a b (c c))\n\nmain = (foo 2 3 @x x)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/adt_tup_era.bend",
    "content": "type Tuple = (Pair a b)\n\n(Foo (Tuple/Pair (Tuple/Pair a b) c)) = a\n(Foo *) = 2\n\nMain = (Foo (Tuple/Pair 1 5))\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/and3.bend",
    "content": "type Bool = T | F\n\nAnd (Bool/T, Bool/T, Bool/T) = Bool/T\nAnd * = Bool/F\n\nmain = (And (Bool/F, Bool/T, Bool/F))\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/bool.bend",
    "content": "type bool = true | false\n\nnot bool/false = bool/true\nnot bool/true = bool/false\n\nand bool/false bool/false = bool/false\nand bool/false bool/true = bool/false\nand bool/true bool/false = bool/false\nand bool/true bool/true = bool/true\n\nand2 bool/true b = b\nand2 bool/false b = bool/false\n\nand3 bool/true bool/true = bool/true\nand3 a b = bool/false\n\nand4 bool/false b = bool/false\nand4 a bool/false = bool/false\nand4 a b = bool/true\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/bool_tup.bend",
    "content": "type Bool = T | F\n\nfoo (Bool/T, x) = x\nfoo * = Bool/F\n\nmain = (foo (Bool/F, Bool/T))\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/box.bend",
    "content": "type box = (new val)\n\nunbox (box/new val) = val\nunbox x = x\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/common.bend",
    "content": "type Box\n  = (Filled value)\n  | Empty\n\ntype Option\n  = (Some x)\n  | None\n\ntype Result_\n  = (Ok a)\n  | (Err b)\n\ntype List_\n  = (Cons x xs)\n  | Nil\n\ntype Bool = True | False\n\ntype Light = Red | Yellow | Green\n\ntype Direction\n  = North\n  | South\n  | East\n  | West\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/concat.bend",
    "content": "String/concat = @a @b\n  match a {\n    String/nil: b;\n    String/cons: (String/cons a.head (String/concat a.tail b))\n  }\n\nmain = (String/concat \"ab\" \"cd\")\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/concat_def.bend",
    "content": "concat (String/Nil) str = str\nconcat (String/Cons c rest1) str2 = (String/Cons c (concat rest1 str2))\n\nmain = (concat \"ab\" \"cd\")\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/def_tups.bend",
    "content": "go (a, (b, (c, (d, e)))) = (+ (+ (+ (+ e d) c) b) a)\n\nmain = (go (1, (2, (3, (4, 5)))))\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/definition_merge.bend",
    "content": "type Either = (Left value) | (Right value)\ntype Bool = True | False\n\nFoo (Either/Left  Bool/False) (Either/Left  Bool/False) = 1\nFoo (Either/Left  Bool/False) (Either/Left  Bool/True)  = 1\nFoo (Either/Left  Bool/True)  (Either/Left  Bool/False) = 1\nFoo (Either/Left  Bool/True)  (Either/Left  Bool/True)  = 1\n\nFoo (Either/Left  Bool/False) (Either/Right Bool/False) = 2\nFoo (Either/Left  Bool/False) (Either/Right Bool/True)  = 2\nFoo (Either/Left  Bool/True)  (Either/Right Bool/False) = 2\nFoo (Either/Left  Bool/True)  (Either/Right Bool/True)  = 2\n\nFoo (Either/Right Bool/False) (Either/Right Bool/False) = 3\nFoo (Either/Right Bool/False) (Either/Right Bool/True)  = 3\nFoo (Either/Right Bool/True)  (Either/Right Bool/False) = 3\nFoo (Either/Right Bool/True)  (Either/Right Bool/True)  = 3\n\nFoo (Either/Right Bool/False) (Either/Left Bool/False)  = 3\nFoo (Either/Right Bool/False) (Either/Left Bool/True)   = 3\nFoo (Either/Right Bool/True)  (Either/Left Bool/False)  = 3\nFoo (Either/Right Bool/True)  (Either/Left Bool/True)   = 3\n\n\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/expr.bend",
    "content": "type Expr\n  = (Var name)\n  | (Num val)\n  | (App fun arg)\n  | (Fun name body)\n  | (If cond then else)\n  | (Let bind val next)\n  | (Dup fst snd val next)\n  | (Tup fst snd)\n  | (Op2 op fst snd)\n\ntype Op\n  = Add\n  | Sub\n  | Mul\n  | Div\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/flatten_era_pat.bend",
    "content": "# To check that flattening works with Era patterns.\n(Fn1 (*,(a,*)) *) = a\n\n(Fn2 (*,(*,(a,*)))) = a\n\n(Fn3 (0,*) *) = 0\n(Fn3 (a,*) *) = a\n\nmain = (Fn2 ((1, 2), (3, (4, (5, 6)))) 0)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/full_map.bend",
    "content": "def prng(state):\n  state = state ^ (state << 13)\n  state = state ^ (state >> 17)\n  state = state ^ (state << 5)\n  return state\n\ndef fullMap:\n  bend i = 14:\n    when i > 0:\n      return Map/Node(1, fork(i - 1), fork(i - 1))\n    else:\n      return Map/Leaf\n\ndef test(map):\n  bend i = 0, map:\n    when i < 1000:\n      (curr, map) = Map/get(map, prng(i) % 4096)\n      return curr+fork(i + 1, map)\n    else:\n      return 0\n\ndef main:\n  return test(fullMap)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/is_some_some.bend",
    "content": "type Option = (Some x) | (None)\n\nsome_some (Option/Some (Option/Some x)) = 1\nsome_some *                             = 0\n\nmain = (some_some (Option/Some 1))\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/list_merge_sort.bend",
    "content": "type Bool = True | False\ntype List_ = (Cons head tail) | Nil\n\nIf Bool/True then else = then\nIf Bool/False then else = else\n\nPure x = (List_/Cons x List_/Nil)\n\nMap List_/Nil f = List_/Nil\nMap (List_/Cons h t) f = (List_/Cons (f h) (Map t f))\n\nMergeSort cmp xs = (Unpack cmp (Map xs Pure))\n\nUnpack cmp List_/Nil = List_/Nil\nUnpack cmp (List_/Cons h List_/Nil) = h\nUnpack cmp xs = (Unpack cmp (MergePair cmp xs))\n\nMergePair cmp (List_/Cons h1 (List_/Cons h2 t)) = (List_/Cons (Merge cmp h1 h2) (MergePair cmp t))\nMergePair cmp xs = xs\n\nMerge cmp List_/Nil ys = ys\nMerge cmp xs List_/Nil = xs\nMerge cmp (List_/Cons xh xt) (List_/Cons yh yt) =\n  (If (cmp xh yh)\n    let ys = (List_/Cons yh yt)\n    (List_/Cons xh (Merge cmp xt ys))\n    let xs = (List_/Cons xh xt)\n    (List_/Cons yh (Merge cmp xs yt))\n  )\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/list_str_encoding_undeclared_fn.bend",
    "content": "main = *\n\nFoo String/Nil = 0\nFoo *    = 1\n\nBar (List/Cons h t) = 0\nBar * = 1\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/list_str_encoding_undeclared_map.bend",
    "content": "main = @a @b\n  let a = match a {\n    String/Cons: 1\n    String/Nil : 2\n  };\n  let b = match b {\n    List/Cons: 1\n    List/Nil : 2\n  };\n  (a, b)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/match_adt_unscoped_in_arm.bend",
    "content": "# Test that we don't mess up with that unscoped lambda/var\ntype bool = T | F\n\nmain = @x match x {\n  Bool/T: @$x $x\n  Bool/F: @x x\n}\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/match_adt_unscoped_lambda.bend",
    "content": "type Maybe_ = None | (Some val)\n\nmain = (match x = (Maybe_/Some 1) {\n  Maybe_/None: @$x *\n  Maybe_/Some: x.val\n} $x)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/match_adt_unscoped_var.bend",
    "content": "type Maybe_ = None | (Some val)\n\nFoo = @$x match x = (Maybe_/Some 1) {\n  Maybe_/None: $x\n  Maybe_/Some: x.val\n}\n\nBar = (match x = (Maybe_/Some 1) {\n  Maybe_/None: $x\n  Maybe_/Some: x.val\n} @$x *)\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/match_auto_linearization.bend",
    "content": "# Given a match/switch term preceded by a sequence of terms with binds (lambda, let, use, etc),\n# by default we linearize all bindings up to the first one that appears in the match \"header\".\n\nswitch_linearization =\n  @a\n  @b\n  let c = 2;\n  let {c1 c2} = c;\n  use d = (a, b);\n  let (e, f) = d;\n  switch a {\n    0: (b c c1 c2 d e f)\n    _: (a-1 b c c1 c2 d e f)\n  }\n\nmatch_linearization =\n  @a\n  @b\n  let c = 2;\n  let {c1 c2} = c;\n  use d = (a, b);\n  let (e, f) = d;\n  match a {\n    Nat/Zero: (b c c1 c2 d e f)\n    Nat/Succ: (a.pred b c c1 c2 d e f)\n  }\n\nswitch_shadowed_field = @a @a-1 switch a {\n  0: a-1\n  _: a-1\n}\n\nmatch_shadowed_field = @a @a.head @a.tail match a {\n  List/Nil: (List/Cons a.head a.tail)\n  List/Cons: (List/Cons a.head a.tail)\n}\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/match_bind.bend",
    "content": "cheese =\n  switch num = (+ 2 3) {\n  | 0: 653323\n  | _: (+ num num-1)\n  }\n\nmain = cheese\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/match_num_adt_tup_parser.bend",
    "content": "# Testing various forms of pattern matching\ntype Result_ = (Ok val) | (Err err)\n\nParse state (String/Cons '(' xs) = (Result_/Ok ('(', xs, state))\nParse state (String/Cons ')' xs) = (Result_/Ok (')', xs, state))\nParse state (String/Cons '\\n' xs) = (Result_/Ok (0, xs, state))\nParse state xs = (Result_/Err (xs, state))\n\nmain =\n  let str = \"(+\";\n  let state = *;\n  match res = (Parse state str) {\n    Result_/Ok: let (val, xs, state) = res.val; (val, (Parse state xs))\n    err: err\n  }\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/match_num_pred.bend",
    "content": "pred = @n switch n {\n  0: 0\n  _: n-1\n}\n\npred2 n = switch n {\n  0: 0\n  1: 0\n  _: n-2\n}\n\npred3 0 = 0\npred3 1 = 0\npred3 2 = 0\npred3 x = (- x 3)\n\nzero 0 = 1\nzero 1 = 0\nzero * = 0\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/match_syntax.bend",
    "content": "type List_ = (Cons x xs) | (Nil)\n\nhead x =\n  match x {\n  | List_/Nil: List_/Nil\n  List_/Cons: x.x;\n  }\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/merge_recursive.bend",
    "content": "foo_1 = @x (x foo_2)\nfoo_2 = @a @b (a, b)\n\nbar_1 = @x (x bar_2)\nbar_2 = @a @b (a, b)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/no_patterns.bend",
    "content": "Id x = x\n\nId2 = @x x\n\nPair a b = (a, b)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/non_matching_fst_arg.bend",
    "content": "type bool = true | false\n\nFoo x bool/false = x\nFoo x bool/true = (Foo x x)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/ntup_sum.bend",
    "content": "ntupSum (a, b, c, d, e) = (+ a (+ b (+ c (+ d e))))\n\nmain = (ntupSum (1, 3, 3, 2, 1))\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/pattern_match_encoding.bend",
    "content": "type MyType = (A a) | (B b) | (C c) | (D d1 d2) | (E e1 e2)\n\nFoo (MyType/A a) = 100\nFoo * = 200\n\nmain = (Foo MyType/A 2)\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/switch_in_switch_arg.bend",
    "content": "main x = switch x = (switch x {0: 0; _: x-1}) {\n  0: 0\n  _: x\n}\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/var_only.bend",
    "content": "type Bool = False | True\n\n(Foo a b) = λf (f a)\n(Foo a b) = b\n\nmain = @x match x {\n  false: Foo\n  true: Bool/False\n}\n"
  },
  {
    "path": "tests/golden_tests/encode_pattern_match/weekday.bend",
    "content": "type Weekday\n  = Monday\n  | Tuesday\n  | Wednesday\n  | Thursday\n  | Friday\n  | Saturday\n  | Sunday\n\nmain = (@x x Weekday/Saturday)\n"
  },
  {
    "path": "tests/golden_tests/hangs/bad_dup_interaction.bend",
    "content": "# A net that expands inifinitely like church exponentiation\n# Compiles to this net:\n# a\n# & ({(b c) (d b)} (c d)) ~ {(e a) e}\nmain =\n  let {a1 a2} =\n    @b\n    let {b1 b2} = b\n    let (c1, c2) = b2\n    ((b1 c2), c1)\n  (a1 a2)"
  },
  {
    "path": "tests/golden_tests/hangs/recursive_with_unscoped.bend",
    "content": "# Impossible to extract/linearize so that it does not hang when running\nFoo = @x (x ({Foo @$unscoped *} *) $unscoped)\n\nmain = (Foo *)\n"
  },
  {
    "path": "tests/golden_tests/import_system/import_ctr_syntax.bend",
    "content": "from lib/ctr_type import Ctr\n\nmain = (Ctr/Foo 2 3)\n"
  },
  {
    "path": "tests/golden_tests/import_system/import_main.bend",
    "content": "import lib/import_entry\n\ndef main():\n  return *"
  },
  {
    "path": "tests/golden_tests/import_system/import_main2.bend",
    "content": "import lib/import_entry2\n\ndef main():\n  return *"
  },
  {
    "path": "tests/golden_tests/import_system/import_main3.bend",
    "content": "import lib/folder/import_entry3\n\ndef main():\n  return *"
  },
  {
    "path": "tests/golden_tests/import_system/import_type.bend",
    "content": "from lib/MyOption import (MyOption, MyOption/bind, MyOption/wrap)\n\nunwrap (val : (MyOption u24)) : u24\nunwrap (MyOption/Some x) = x\nunwrap (MyOption/None)   = 0\n\ndef main() -> MyOption((u24, u24)):\n  with MyOption:\n    a <- MyOption/Some(1)\n    b = unwrap(MyOption/Some(2))\n    return wrap((a, b))\n"
  },
  {
    "path": "tests/golden_tests/import_system/import_types.bend",
    "content": "from lib/types import (Bool, MyTree)\nfrom lib       import bool_xor\n\ndef tree_xor(tree):\n  fold tree:\n    case MyTree/node:\n      return bool_xor(tree.lft, tree.rgt);\n    case MyTree/leaf:\n      return tree.val;\n\nmain =\n  let depth = 10\n  let tree = bend n = 0 {\n    when (< n depth):\n      (MyTree/node (fork (+ n 1)) (fork (+ n 1)))\n    else:\n      if (% n 2) { (MyTree/leaf Bool/True) } else { (MyTree/leaf Bool/False) }\n  }\n  (tree_xor tree)\n\n"
  },
  {
    "path": "tests/golden_tests/import_system/imports.bend",
    "content": "from lib/nums import (one, two)\nfrom lib/defs import sum\n\ndef main():\n  return sum(one, two)"
  },
  {
    "path": "tests/golden_tests/import_system/imports_alias.bend",
    "content": "from lib/nums import (one as One, two as Two)\nfrom lib/defs import (sum as summation)\n\ndef main():\n  return summation(One, Two)"
  },
  {
    "path": "tests/golden_tests/import_system/imports_alias_shadow.bend",
    "content": "from lib/nums import (one as A, two as A)\n\ndef main():\n  return A + A"
  },
  {
    "path": "tests/golden_tests/import_system/imports_conflict.bend",
    "content": "from lib/a/b import C\nfrom lib/a   import b/C\n\nlib/a/b/C = *\n\ndef main():\n  return *"
  },
  {
    "path": "tests/golden_tests/import_system/imports_file_and_dir.bend",
    "content": "from lib/file_and_dir import (x, y)\n\ndef main():\n  return (x, y, y/z)\n"
  },
  {
    "path": "tests/golden_tests/import_system/imports_file_and_dir_conflict.bend",
    "content": "from lib/file_and_dir import *\n\ndef main():\n  return w\n"
  },
  {
    "path": "tests/golden_tests/import_system/imports_shadow.bend",
    "content": "from lib/folder import myFun\nfrom lib        import myFun\n\ndef main():\n  return myFun"
  },
  {
    "path": "tests/golden_tests/import_system/imports_shadow2.bend",
    "content": "from lib        import myFun\nfrom lib/folder import myFun\n\ndef main():\n  return myFun(lib/myFun/myFun) # use the full name to call a shadowed imported def"
  },
  {
    "path": "tests/golden_tests/import_system/lib/MyOption.bend",
    "content": "type MyOption(A):\n  Some { val: A }\n  None\n\ndef MyOption/bind(val: MyOption(A), nxt: (Id -> Id) -> A -> MyOption(B)) -> MyOption(B):\n  match val:\n    case MyOption/Some:\n      nxt = undefer(nxt)\n      return nxt(val.val)\n    case MyOption/None:\n      return MyOption/None\n\ndef MyOption/wrap(val: A) -> MyOption(A):\n  return MyOption/Some(val)\n"
  },
  {
    "path": "tests/golden_tests/import_system/lib/a/b.bend",
    "content": "C = *"
  },
  {
    "path": "tests/golden_tests/import_system/lib/a.bend",
    "content": "type b = C"
  },
  {
    "path": "tests/golden_tests/import_system/lib/bool_xor.bend",
    "content": "from lib/types import Bool\n\n(bool_xor Bool/True Bool/False) = Bool/True\n(bool_xor Bool/False Bool/True) = Bool/True\n(bool_xor * *) = Bool/False\n"
  },
  {
    "path": "tests/golden_tests/import_system/lib/ctr_type.bend",
    "content": "# Test issue #674\ntype Ctr:\n  Foo { x, y }\n\ndef Ctr/wrap(x):\n  return Ctr/Foo { x: x, y: 0 }\n"
  },
  {
    "path": "tests/golden_tests/import_system/lib/defs.bend",
    "content": "def sum(a, b):\n  return a + b\n\ndef minus(a, b):\n  return a - b"
  },
  {
    "path": "tests/golden_tests/import_system/lib/file_and_dir/w.bend",
    "content": "w = 5\n"
  },
  {
    "path": "tests/golden_tests/import_system/lib/file_and_dir/y.bend",
    "content": "y = 3\n\nz = 4"
  },
  {
    "path": "tests/golden_tests/import_system/lib/file_and_dir.bend",
    "content": "x = 1\n\nw = 2"
  },
  {
    "path": "tests/golden_tests/import_system/lib/folder/import_entry3.bend",
    "content": "import ../../../../import_main3 # multiples ../ have no effect past the main file folder"
  },
  {
    "path": "tests/golden_tests/import_system/lib/folder/myFun.bend",
    "content": "def myFun(a):\n  return a"
  },
  {
    "path": "tests/golden_tests/import_system/lib/import_entry.bend",
    "content": "import import_main"
  },
  {
    "path": "tests/golden_tests/import_system/lib/import_entry2.bend",
    "content": "import ../import_main2"
  },
  {
    "path": "tests/golden_tests/import_system/lib/myFun.bend",
    "content": "type Type = (A) | (B)\n\ndef myFun(a):\n  match a:\n    case Type/A:\n      return 1\n    case Type/B:\n      return 2"
  },
  {
    "path": "tests/golden_tests/import_system/lib/nums.bend",
    "content": "def one():\n  return 1\n\ntwo = 2\n\ndef three():\n  return 3"
  },
  {
    "path": "tests/golden_tests/import_system/lib/types.bend",
    "content": "type Bool:\n  True\n  False\n\ntype MyTree = (node ~lft ~rgt) | (leaf val)\n"
  },
  {
    "path": "tests/golden_tests/io/eof.txt",
    "content": "text"
  },
  {
    "path": "tests/golden_tests/io/load.bend",
    "content": "(Main): (IO (Result String u24)) =\n  use path = \"tests/golden_tests/io/load.txt\"\n  with IO {\n    ask file = (IO/FS/read_file path)\n    match file {\n      Result/Err:\n        (wrap (Result/Err (file.val)))\n      Result/Ok:\n        (wrap (Result/Ok (String/decode_utf8 file.val)))\n    }\n  }\n"
  },
  {
    "path": "tests/golden_tests/io/load.txt",
    "content": "Contents\n"
  },
  {
    "path": "tests/golden_tests/io/load_fail.bend",
    "content": "(Main) : (IO (Result String u24)) =\n  use path = \"tests/golden_tests/io/missing_dir/load_fail.txt\"\n  with IO {\n    ask file = (IO/FS/read_file path)\n    match file {\n      Result/Err:\n        (wrap (Result/Err (file.val)))\n      Result/Ok:\n        (wrap (Result/Ok (String/decode_utf8 file.val)))\n    }\n  }\n"
  },
  {
    "path": "tests/golden_tests/io/read_line_eof.bend",
    "content": "def main() -> IO(String):\n  with IO:\n    fd <- IO/FS/open(\"tests/golden_tests/io/eof.txt\", \"r\")\n    match fd:\n      case Result/Err:\n        return wrap(append(\"Err: \", u24/to_string(fd.val)))\n      case Result/Ok:\n        bytes <- IO/FS/read_line(fd.val)\n        match bytes:\n          case Result/Err:\n            return wrap(append(\"Err: \", u24/to_string(bytes.val)))\n          case Result/Ok:\n            txt = String/decode_utf8(bytes.val)\n            return wrap(txt)\n\nappend (String/Nil) str = str\nappend (String/Cons x xs) str = (String/Cons x (append xs str))\n"
  },
  {
    "path": "tests/golden_tests/io/store.bend",
    "content": "(Main) : (IO (Result None u24)) =\n  use path = \"tests/golden_tests/io/store.txt\"\n  with IO {\n    (IO/FS/write_file path (String/encode_utf8 \"(Main) = 0\"))\n  }\n"
  },
  {
    "path": "tests/golden_tests/io/store.txt",
    "content": "(Main) = 0"
  },
  {
    "path": "tests/golden_tests/io/store_fail.bend",
    "content": "(Main) : (IO (Result None u24)) =\n  use path = \"tests/golden_tests/io/missing_dir/store_fail.txt\"\n  with IO {\n    (IO/FS/write_file path (String/encode_utf8 \"(Main) = 0\"))\n  }\n"
  },
  {
    "path": "tests/golden_tests/io/utf8.bend",
    "content": "to-and-back s = (String/decode_utf8 (String/encode_utf8 s))\n\nv1 = (to-and-back \"hi\")\nv2 = (to-and-back \"(λf ((λx (f (x x))) (λx (f (x x)))))\")\nv3 = (to-and-back \"🌟\")\nv4 = (to-and-back \"Hello 🌎!\")\nv5 = (to-and-back \"𓆈 𓆉 𓆊 𓆋 𓅯\")\nv6 = (String/decode_utf8 [])\n\nmain = [v1, v2, v3, v4, v5, v6]\n"
  },
  {
    "path": "tests/golden_tests/linear_readback/church_mul.bend",
    "content": "C_2 = λa λb (a (a b))\nC_3 = λa λb (a (a (a b)))\nMult = λm λn λs λz (m (n s) z)\nmain = (Mult C_2 C_3)\n"
  },
  {
    "path": "tests/golden_tests/mutual_recursion/a_b_c.bend",
    "content": "(A) = (B)\n(B) = (C)\n(C) = (A)\n\n(Main) = (A)\n"
  },
  {
    "path": "tests/golden_tests/mutual_recursion/len.bend",
    "content": "(Len []) = 0\n(Len (List/Cons _ tail)) = (+ 1 (Len tail))\n\n(Main) = (Len [* * * * * *])\n"
  },
  {
    "path": "tests/golden_tests/mutual_recursion/merged.bend",
    "content": "(X x) = (Rec x)\n(Y x) = (Rec x)\n\n(Rec x)  = (X x)\n(Rec2 x) = (X x)\n\n(Main) = (Y 0)\n"
  },
  {
    "path": "tests/golden_tests/mutual_recursion/multiple.bend",
    "content": "(A) = (B)\n(B) = (C)\n(C) = (A)\n\n(H) = (I)\n(I) = (H)\n\n(N x) = (x (N x))\n\n(M) = (M)\n\n(Main) = *\n"
  },
  {
    "path": "tests/golden_tests/mutual_recursion/odd_even.bend",
    "content": "type Bool = True | False\n\n(if_ 0 then else) = else\n(if_ _ then else) = then\n\n(isOdd  n) = (if_ (== n 0) Bool/False (isEven (- n 1)))\n(isEven n) = (if_ (== n 0) Bool/True  (isOdd  (- n 1)))\n\n(Main) = (isOdd 4)\n"
  },
  {
    "path": "tests/golden_tests/parse_file/bad_floating.bend",
    "content": "def main:\n  return 0xA.0xA\n"
  },
  {
    "path": "tests/golden_tests/parse_file/bend_missing_else.bend",
    "content": "def is_even(n):\n  if n % 2 == 0:\n    return 1\n  else:\n    return 0\n\ndef get_even_sum_under_if(this_number):\n  bend current = 0:\n    when current < this_number:\n      new_num = fork(current + is_even(current))\n\n      return new_num\n\ndef main():\n  return get_even_sum_under_if(1000)\n"
  },
  {
    "path": "tests/golden_tests/parse_file/era.bend",
    "content": "(Main) = (*)\n"
  },
  {
    "path": "tests/golden_tests/parse_file/fold_missing_case.bend",
    "content": "def main:\n  fold [] with x = 1:\n        \n"
  },
  {
    "path": "tests/golden_tests/parse_file/fun_def.bend",
    "content": "main =\n  let base = 0\n  def aux [] = base\n      aux (List/Cons head tail) = (+ head (aux tail))\n  (aux [1, 2, 3])\n"
  },
  {
    "path": "tests/golden_tests/parse_file/fun_def_name.bend",
    "content": "main =\n  let base = 0\n  def aux [] = base\n      aux2 (List/Cons head tail) = (+ head (aux tail))\n  (aux [1, 2, 3])\n"
  },
  {
    "path": "tests/golden_tests/parse_file/if_missing_else.bend",
    "content": "def main:\n  if 1 == 1:\n    return \"true\"\n    \n"
  },
  {
    "path": "tests/golden_tests/parse_file/imp_map.bend",
    "content": "def main():\n  x = { 2: 1, 3: 2 };\n  y = id(x[2]);\n  z = 4;\n  x[z] = 4;\n  return y + x[z];"
  },
  {
    "path": "tests/golden_tests/parse_file/imp_program.bend",
    "content": "type Point:\n  Point { x, y }\n\ntype Bool:\n  True\n  False\n\n\ndef symbols():\n  x = { `x`: 5, 2: 3 };\n  x[`x`] = 2;\n  x[2] = 3;\n  return x[`x`] + `foxy`;\n\ndef mk_point():\n  return Point/Point(y = 2, x = 1);\n\ndef identity(x):\n  return x;\n\ndef inc(n):\n  n += 1;\n  return n;\n\ndef inc_list(list):\n  return [x+1 for x in list];\n\ndef lam():\n  return lambda x, y: x;\n\ndef do_match(b):\n  match b:\n    case Bool/True:\n      return 1;\n    case Bool/False:\n      return 0;\n\ndef true():\n  return Bool/True;\n\ndef fib(n):\n  if n < 2:\n    return n;\n  else:\n    return fib(n - 1) + fib(n - 2);\n\ndef swt(n):\n  switch n:\n    case 0:\n      return 42;\n    case _:\n      return 1;\n\ndef fld(list):\n  fold list:\n    case List/Cons:\n      return 1;\n    case List/Nil:\n      return 2;\n\ndef bnd():\n  bend x = 0:\n    when x < 10:\n      return List/Cons(x, fork(x + 1));\n    else:\n      return List/Nil();\n\ndef era():\n  * = (2 + 3)\n  the_expr_killer = *\n  return the_expr_killer(9)\n\ndef sup():\n  x = {[1, 2], [3, 4, 5, 6]}\n  return x\n\ndef main():\n  with IO:\n    x <- IO.read();\n    return x;\n"
  },
  {
    "path": "tests/golden_tests/parse_file/match_missing_case.bend",
    "content": "def main:\n  match []:\n      \n"
  },
  {
    "path": "tests/golden_tests/parse_file/multi_line_comment.bend",
    "content": "#{\n\n\n\n\n#}\n\ndef main:\n  #{\n  ok\n  #}#\n  #\n  return 0\n\n#{foo type#}\ntype Foo:\n  #{foo constructor#}\n  Foo { foo }\n\n#{bar type#}\nobject Bar { bar }\n#{\n# ignore\n#}#\n\n#{X x x x#}\n(X x x x) = #{ x #} x #{ x #}\n\n#{V#}\ntype V\n  = #{V constructor#} V\n\n(String/is_empty s) =\n  #{test if string is nil#}\n  match s #{\n\n  #}{\n    String/Nil: 1\n    String/Cons: 0\n  }\n\ndef String/not_empty(s):\n  #{test if string if not nil#}\n  match s:\n    #{\n    its\n    not\n    #}\n    case String/Nil:\n      return 0\n    case String/Cons:\n      #{\n        it\n        is#}\n      return 1\n"
  },
  {
    "path": "tests/golden_tests/parse_file/redefinition_builtin.bend",
    "content": "def Map/get(m):\n  return m\n"
  },
  {
    "path": "tests/golden_tests/parse_file/redefinition_ctr_with_fun.bend",
    "content": "def String/Cons(x):\n  return x\n"
  },
  {
    "path": "tests/golden_tests/parse_file/redefinition_fun_imp.bend",
    "content": "# We shouldn't allow a fun rule to be extended by an imp function\n(A) = @x x\ndef A:\n  return 0"
  },
  {
    "path": "tests/golden_tests/parse_file/redefinition_imp_fun.bend",
    "content": "# We shouldn't allow an imp function to have a fun rule\ndef A:\n  return 0\n\n(A) = 1"
  },
  {
    "path": "tests/golden_tests/parse_file/redefinition_type_with_object.bend",
    "content": "object IO { run }\n"
  },
  {
    "path": "tests/golden_tests/parse_file/redefinition_with_def_between.bend",
    "content": "# We shouldn't allow rules of other functions in the middle of a definition\n(A) = @x x\n(B) = @x x\n(A) = @x x"
  },
  {
    "path": "tests/golden_tests/parse_file/redefinition_with_object_between.bend",
    "content": "A = 0\nobject B\nA = 1"
  },
  {
    "path": "tests/golden_tests/parse_file/redefinition_with_type_between.bend",
    "content": "A = 0\ntype MyType = MyType\nA = 1\n"
  },
  {
    "path": "tests/golden_tests/parse_file/repeated_adt_name.bend",
    "content": "type Foo = A\ntype Foo = B\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/parse_file/repeated_datatype_name.bend",
    "content": "type Expr\n  = (Lit Int)\n  | (Plus Expr Expr)\n\neval (Expr/Lit i) = i\neval (Expr/Plus l r) = (+ (eval l) (eval r))\n\nmain = (eval (Expr/Plus (Expr/Lit 80) (Expr/Lit 90)))\n"
  },
  {
    "path": "tests/golden_tests/parse_file/scape_chars.bend",
    "content": "main = \"\\\\ \\n \\t \\\"\"\n"
  },
  {
    "path": "tests/golden_tests/parse_file/strange_pattern.bend",
    "content": "main & = (a b c)\n"
  },
  {
    "path": "tests/golden_tests/parse_file/tab.bend",
    "content": "def main:\n\tx = 2\n\treturn x + 1\n"
  },
  {
    "path": "tests/golden_tests/parse_file/tup_with_signed.bend",
    "content": "# Test that we can parse tuples and apps beginning with signed numbers\nmain = \n  let a = (+1, +1)\n  let b = (+1.1324)\n  let c = (-6.234, -1)\n  let d = (-1)\n  let e = (+6 * λx x)\n  let f = ((*) λx x)\n  (+ a (+ b (+ c (+ d (- e f)))))\n"
  },
  {
    "path": "tests/golden_tests/parse_file/tuple_assign.bend",
    "content": "def main:\n  first, second = 1, (2, 3)\n  return second\n"
  },
  {
    "path": "tests/golden_tests/parse_file/tuple_commas.bend",
    "content": "def main:\n  tup = fst(1, lambda x: x), 2\n  return tup, 3, (4, 5)\n\ndef fst(x, y):\n  return x\n"
  },
  {
    "path": "tests/golden_tests/parse_file/tuple_need_parens.bend",
    "content": "def main:\n  if 1, 2:\n    return \"not\"\n  else:\n    return \"hmmm\"\n"
  },
  {
    "path": "tests/golden_tests/prelude/applies_function_to_map.bend",
    "content": "# Checks if a generic map contains a given key, and if it does, applies a function to the value, otherwise it returns the map\ndef test(m: Map(u24), key: u24) -> u24:\n  def addtwo (x: u24) -> u24:\n    return (x + 2)\n  (num, map) = Map/contains(m, key)\n  if (num == 0):\n    return unreachable()\n  else:\n    m = Map/map(m, key, addtwo())\n    (value, map) = Map/get(m, key)\n    return value\ndef main() -> _:\n  m = {3: 255}\n  return test(m, 3)\n"
  },
  {
    "path": "tests/golden_tests/prelude/get_values_from_map.bend",
    "content": "def test1() -> (u24):\n  m = {}\n  m = Map/set(Map/set(Map/set(Map/empty, 3, 4), 2, 3), 1, 2)\n  (val1, map1) = Map/get(m, 1) \n  (val2, map2) = Map/get(map1, val1)\n  return val2\n\ndef main() -> _:\n  return test1()\n"
  },
  {
    "path": "tests/golden_tests/prelude/lists_to_map.bend",
    "content": "# Takes two lists and uses one as keys and the other as values, returning a map\ndef test(m: Map(T), xs: List(u24), ys: List(T)) -> Map(T):\n  match xs:\n    case List/Nil:\n      return Map/Leaf\n    case List/Cons:\n      match ys:\n        case List/Nil:\n          return Map/Leaf\n        case List/Cons:\n          return test(Map/set(m, xs.head, ys.head), xs.tail, ys.tail)\n\ndef main() -> _:\n  return test(Map/Leaf, List/Cons(1, List/Nil), List/Cons(2, List/Nil))\n"
  },
  {
    "path": "tests/golden_tests/prelude/map_checked_test.bend",
    "content": "#Tests the get_check function\ndef main() -> _:\n  m1 = {0: 1, 3: 2} \n  return Map/get_check(m1, 3)\n\n"
  },
  {
    "path": "tests/golden_tests/prelude/map_contains_test.bend",
    "content": "def main() -> _:\n  m1 = {0: 23} \n  return Map/contains(m1, 3)\n"
  },
  {
    "path": "tests/golden_tests/prelude/set_node_when_empty.bend",
    "content": "# Sets a value if the given node is empty, otherwise returns the map\ndef test(m: Map(T), x: u24, v: T) -> Map(T):\n  (val, map) = Map/get_check(m, x)\n  match val:\n    case Maybe/Some:\n      return m\n    case Maybe/None:\n      return Map/set(m, x, v)\n\ndef main() -> _:\n  m = {0: 42, 1:23} \n  return test(m, 3, 4)\n"
  },
  {
    "path": "tests/golden_tests/readback_hvm/addition.bend",
    "content": "a\n& [+2] ~ $(1 a)"
  },
  {
    "path": "tests/golden_tests/readback_hvm/bad_net.bend",
    "content": "b"
  },
  {
    "path": "tests/golden_tests/readback_hvm/bad_net1.bend",
    "content": "(a b)\n& {c b} ~ (c a)"
  },
  {
    "path": "tests/golden_tests/readback_hvm/bad_net3.bend",
    "content": "({a b} (b a))"
  },
  {
    "path": "tests/golden_tests/readback_hvm/complicated_dup.bend",
    "content": "({(a b) (c d)} e)\n& ((f {a c}) b) ~ ((f d) e)\n"
  },
  {
    "path": "tests/golden_tests/readback_hvm/fst_snd.bend",
    "content": "a\n& (b a) ~ ({* c} c)\n& ({{1 3} 2} b) ~ ({d *} d)"
  },
  {
    "path": "tests/golden_tests/readback_hvm/id.bend",
    "content": "(a a)"
  },
  {
    "path": "tests/golden_tests/readback_hvm/invalid_op2_op2.bend",
    "content": "(a b)\n& 1 ~ (c d)\n& $([+1] $(d b)) ~ $(c a)"
  },
  {
    "path": "tests/golden_tests/readback_hvm/match.bend",
    "content": "a\n& 1 ~ ?(((b b) (c c)) a)"
  },
  {
    "path": "tests/golden_tests/readback_hvm/nested_let.bend",
    "content": "a\n& {{* *} {a *}} ~ {{2 4} {3 6}}"
  },
  {
    "path": "tests/golden_tests/readback_hvm/nested_tup.bend",
    "content": "{{1 2} {4 {3 5}}}"
  },
  {
    "path": "tests/golden_tests/readback_hvm/number.bend",
    "content": "10"
  },
  {
    "path": "tests/golden_tests/readback_hvm/simple_tup.bend",
    "content": "{0 42}"
  },
  {
    "path": "tests/golden_tests/readback_hvm/tup_add.bend",
    "content": "a\n& {b c} ~ {1 2}\n& [+] ~ $(b $(c a))\n"
  },
  {
    "path": "tests/golden_tests/run_entrypoint/foo.bend",
    "content": "bar = λx x\n\nfoo = (bar 2)\n"
  },
  {
    "path": "tests/golden_tests/run_file/360_no_scope.bend",
    "content": "main =\n  let $d = ((@$a $c) 360)\n  let $b = ((@$c $a) $b)\n  let #x{#y($e, $f) #y($g, $h)} = #y(#x{$d $f}, #x{$e, $g})\n  $h\n"
  },
  {
    "path": "tests/golden_tests/run_file/addition.bend",
    "content": "(main) = (λx (+ (+ 1 1) x) 8)\n"
  },
  {
    "path": "tests/golden_tests/run_file/adt_match.bend",
    "content": "type Opt = (Some x) | None\n\nOpt/map = @opt @f\n  match opt {\n    Opt/Some: (Opt/Some (f opt.x));\n    Opt/None: Opt/None\n  }\n\ninc = @x (+ x 1)\n\nmain =\n  let opt = (Opt/Some 1);\n  (Opt/map opt inc)\n"
  },
  {
    "path": "tests/golden_tests/run_file/adt_match_wrong_tag.bend",
    "content": "type Option = (Some val) | None\n\nmain = λa #Option (a #wrong_tag λb b *)\n"
  },
  {
    "path": "tests/golden_tests/run_file/adt_option_and.bend",
    "content": "type Option = (Some val) | None\n\nmain = @a @b match a {\n  Option/Some: match b {\n    Option/Some: (Option/Some (a.val, b.val))\n    Option/None: Option/None\n  }\n  Option/None: Option/None\n}\n"
  },
  {
    "path": "tests/golden_tests/run_file/adt_wrong_tag.bend",
    "content": "type Option = (Some val) | None\n\nmain = (@a #Option (a #wrong_tag @x x *))\n"
  },
  {
    "path": "tests/golden_tests/run_file/and.bend",
    "content": "type bool = true | false\n\nand a bool/false = bool/false\nand a bool/true = a\n\nmain = (and bool/true bool/false)\n"
  },
  {
    "path": "tests/golden_tests/run_file/basic_num_ops.bend",
    "content": "List/expand (List/Cons h t) = (List/Cons h (List/expand t))\nList/expand (List/Nil) = (List/Nil)\n\nmain = (List/expand\n  [\n    (+ 20 10)\n    (- 20 10)\n    (* 20 10)\n    (/ 20 10)\n    (% 20 10)\n    (^ 20 10)\n    (& 20 10)\n    (| 20 10)\n    (== 20 10)\n    (!= 20 10)\n    (< 20 10)\n    (> 20 10)\n    (<< 10 2)\n    (>> 10 2)\n\n    0xFFFF\n\n    (+ +20 +10)\n    (- +20 +10)\n    (* +20 +10)\n    (/ +20 +10)\n    (% +20 +10)\n    (^ +20 +10)\n    (& +20 +10)\n    (| +20 +10)\n    (== +20 +10)\n    (!= +20 +10)\n    (< +20 +10)\n    (> +20 +10)\n\n    0xFFFF\n\n    (+ -20 -10)\n    (- -20 -10)\n    (* -20 -10)\n    (/ -20 -10)\n    (% -20 -10)\n    (^ -20 -10)\n    (& -20 -10)\n    (| -20 -10)\n    (== -20 -10)\n    (!= -20 -10)\n    (< -20 -10)\n    (> -20 -10)\n\n    0xFFFF\n\n    (+ +20 -10)\n    (- +20 -10)\n    (* +20 -10)\n    (/ +20 -10)\n    (% +20 -10)\n    (^ +20 -10)\n    (& +20 -10)\n    (| +20 -10)\n    (== +20 -10)\n    (!= +20 -10)\n    (< +20 -10)\n    (> +20 -10)\n\n    0xFFFF\n\n    (+ -20 +10)\n    (- -20 +10)\n    (* -20 +10)\n    (/ -20 +10)\n    (% -20 +10)\n    (^ -20 +10)\n    (& -20 +10)\n    (| -20 +10)\n    (== -20 +10)\n    (!= -20 +10)\n    (< -20 +10)\n    (> -20 +10)\n\n    0xFFFF\n\n    (+ +20.0 +10.0)\n    (- +20.0 +10.0)\n    (* +20.0 +10.0)\n    (/ +20.0 +10.0)\n    (% +20.0 +10.0)\n    (^ +20.0 +10.0)\n    (& +20.0 +10.0)\n    (| +20.0 +10.0)\n    (== +20.0 +10.0)\n    (!= +20.0 +10.0)\n    (< +20.0 +10.0)\n    (> +20.0 +10.0)\n\n    0xFFFF\n\n    (+ -20.0 -10.0)\n    (- -20.0 -10.0)\n    (* -20.0 -10.0)\n    (/ -20.0 -10.0)\n    (% -20.0 -10.0)\n    (^ -20.0 -10.0)\n    (& -20.0 -10.0)\n    (| -20.0 -10.0)\n    (== -20.0 -10.0)\n    (!= -20.0 -10.0)\n    (< -20.0 -10.0)\n    (> -20.0 -10.0)\n\n    0xFFFF\n\n    (+ +20.0 -10.0)\n    (- +20.0 -10.0)\n    (* +20.0 -10.0)\n    (/ +20.0 -10.0)\n    (% +20.0 -10.0)\n    (^ +20.0 -10.0)\n    (& +20.0 -10.0)\n    (| +20.0 -10.0)\n    (== +20.0 -10.0)\n    (!= +20.0 -10.0)\n    (< +20.0 -10.0)\n    (> +20.0 -10.0)\n\n    0xFFFF\n\n    (+ -20.0 +10.0)\n    (- -20.0 +10.0)\n    (* -20.0 +10.0)\n    (/ -20.0 +10.0)\n    (% -20.0 +10.0)\n    (^ -20.0 +10.0)\n    (& -20.0 +10.0)\n    (| -20.0 +10.0)\n    (== -20.0 +10.0)\n    (!= -20.0 +10.0)\n    (< -20.0 +10.0)\n    (> -20.0 +10.0)\n\n    0xFFFF\n\n    (Math/log 2.0 3.0)\n    (Math/atan2 3.0 4.0)\n  ]\n)\n"
  },
  {
    "path": "tests/golden_tests/run_file/bend_fold.bend",
    "content": "# should return (a+b+c) * 2^depth\nmain =\n  let depth = 2\n  let a = 1;\n  let b = 2;\n  let c = 3;\n  let n = 0;\n  let tree = bend n {\n    when (< n depth):\n      ![(fork (+ n 1)) (fork (+ n 1))]\n    else:\n      !c\n  }\n  fold tree {\n    Tree/Node: (+ tree.left tree.right)\n    Tree/Leaf: (+ tree.value (+ a b))\n  }\n"
  },
  {
    "path": "tests/golden_tests/run_file/bitonic_sort.bend",
    "content": "type Error = Err\n\n# Atomic Swapper\n(Swap n a b) = switch n {\n  0: (Tree/Node a b)\n  _: (Tree/Node b a)\n}\n\n# Swaps distant values in parallel; corresponds to a Red Box\n(Warp s (Tree/Leaf a)   (Tree/Leaf b))   = (Swap (^ (> a b) s) (Tree/Leaf a) (Tree/Leaf b))\n(Warp s (Tree/Node a b) (Tree/Node c d)) = (Join (Warp s a c) (Warp s b d))\n(Warp s a b) = Error/Err\n\n# Rebuilds the warped tree in the original order\n(Join (Tree/Node a b) (Tree/Node c d)) = (Tree/Node (Tree/Node a c) (Tree/Node b d))\n(Join a b) = Error/Err\n\n# Recursively warps each sub-tree; corresponds to a Blue/Green Box\n(Flow s (Tree/Leaf a))   = (Tree/Leaf a)\n(Flow s (Tree/Node a b)) = (Down s (Warp s a b))\n\n# Propagates Flow downwards\n(Down s (Tree/Leaf a))   = (Tree/Leaf a)\n(Down s (Tree/Node a b)) = (Tree/Node (Flow s a) (Flow s b))\n\n# Bitonic Sort\n(Sort s (Tree/Leaf a))   = (Tree/Leaf a)\n(Sort s (Tree/Node a b)) = (Flow s (Tree/Node (Sort 0 a) (Sort 1 b)))\n\n# Generates a tree of depth `n`\n(Gen n x) = switch n {\n  0: (Tree/Leaf x)\n  _: (Tree/Node (Gen n-1 (* x 2)) (Gen n-1 (+ (* x 2) 1)))\n}\n\n# Reverses a tree\n(Rev (Tree/Leaf x))   = (Tree/Leaf x)\n(Rev (Tree/Node a b)) = (Tree/Node (Rev b) (Rev a))\n\n# Sums a tree\n(Sum (Tree/Leaf x))   = x\n(Sum (Tree/Node a b)) = (+ (Sum a) (Sum b))\n\nMain = (Sum (Sort 0 (Rev (Gen 4 0))))\n"
  },
  {
    "path": "tests/golden_tests/run_file/bitonic_sort_lam.bend",
    "content": "# type Tree = (Leaf x) | (Node x0 x1)\nLeaf = λx      λl λn (l x)\nNode = λx0 λx1 λl λn (n x0 x1)\n\nswap = λn switch n {\n  0: λx0 λx1 (Node x0 x1)\n  _: λx0 λx1 (Node x1 x0)\n}\n\nwarp = λa\n  let a_leaf = λax λb\n    let b_leaf = λbx λax λs (swap (^ (> ax bx) s) (Leaf ax) (Leaf bx))\n    let b_node = λa0 λa1 λax λs 0\n    ((b b_leaf b_node) ax)\n  let a_node = λa0 λa1 λb\n    let b_leaf = λbx λa0 λa1 λs 0\n    let b_node = λb0 λb1 λa0 λa1 λs (join (warp a0 b0 s) (warp a1 b1 s))\n    ((b b_leaf b_node) a0 a1)\n  (a a_leaf a_node)\n\njoin = λa\n  let a_leaf = λax λb 0\n  let a_node = λa0 λa1 λb\n    let b_leaf = λbx λa0 λa1 0\n    let b_node = λb0 λb1 λa0 λa1 (Node (Node a0 b0) (Node a1 b1))\n    ((b b_leaf b_node) a0 a1)\n  (a a_leaf a_node)\n\nflow = λa\n  let a_leaf = λax λs (Leaf ax)\n  let a_node = λa0 λa1 λs (down (warp a0 a1 s) s)\n  (a a_leaf a_node)\n\ndown = λa\n  let a_leaf = λax λs (Leaf ax)\n  let a_node = λa0 λa1 λs (Node (flow a0 s) (flow a1 s))\n  (a a_leaf a_node)\n\nsort = λa\n  let a_leaf = λax λs (Leaf ax)\n  let a_node = λa0 λa1 λs (flow (Node (sort a0 0) (sort a1 1)) s)\n  (a a_leaf a_node)\n\ngen = λn switch n {\n  0: λx (Leaf x)\n  _: λx (Node (gen n-1 (* x 2)) (gen n-1 (+ (* x 2) 1)))\n}\n\nrev = λa\n  let a_leaf = λax (Leaf ax)\n  let a_node = λa0 λa1 (Node (rev a1) (rev a0))\n  (a a_leaf a_node)\n\nsum = λa\n  let a_leaf = λax ax\n  let a_node = λa0 λa1 (+ (sum a0) (sum a1))\n  (a a_leaf a_node)\n\nmain = (sum (sort (rev (gen 8 0)) 0))\n"
  },
  {
    "path": "tests/golden_tests/run_file/box.bend",
    "content": "type _Box = (Box val)\n\nBox.subst (_Box/Box x) cmp to = switch _ = (cmp x) {\n  0: (_Box/Box x)\n  _: (_Box/Box to)\n}\n\nMain = (Box.subst (_Box/Box 4) @x (== x 4) (_Box/Box 10))\n"
  },
  {
    "path": "tests/golden_tests/run_file/branch_statements_assignment.bend",
    "content": "# Test that branching statements can end with an assignment\ntype MyTree:\n  node { val, ~lft, ~rgt }\n  leaf\n\ndef main:\n  deep = 0\n\n  if deep:\n    n = 20\n  else:\n    n = 2\n\n  bend x = 1, h = 0:\n    when h < n:\n      y = MyTree/node { val: x, lft: fork(2 * x, h + 1), rgt: fork(2 * x + 1, h + 1) }\n    else:\n      y = MyTree/leaf\n\n  fold y:\n    case MyTree/node:\n      z = y.val + y.lft + y.rgt\n    case MyTree/leaf:\n      z = 0\n\n  return z"
  },
  {
    "path": "tests/golden_tests/run_file/callcc.bend",
    "content": "(CC.lang program) =\n  let callcc  = λcallback (λ$garbage($hole) (callback λ$hole(0)))\n  let result  = (program callcc)\n  let garbage = $garbage\n  result\n\nMain = (CC.lang λcallcc\n  (+ 10 (callcc λk(+ (k 42) 1729))))\n"
  },
  {
    "path": "tests/golden_tests/run_file/chars.bend",
    "content": "main = (String/Cons '\\u{1234}' (String/Cons '!' (String/Cons '7' String/Nil)))\n"
  },
  {
    "path": "tests/golden_tests/run_file/chars_forall.bend",
    "content": "main = '∀'\n"
  },
  {
    "path": "tests/golden_tests/run_file/chars_lambda.bend",
    "content": "main = 'λ'\n"
  },
  {
    "path": "tests/golden_tests/run_file/checked_scott_encoding.bend",
    "content": "checked (scott_concat a b) = (a\n  λh λt λcons λnil (cons h (scott_concat t b))\n  b\n)\nmain = scott_concat"
  },
  {
    "path": "tests/golden_tests/run_file/comprehension.bend",
    "content": "def inc_list(list):\n  return [x + 1 for x in list]\n\ndef filter_gt(list, n):\n  return [x for x in list if x > n]\n\ndef main:\n  list = [3, 4, 1, 9, 6, 5]\n  list = inc_list(list)\n  list = filter_gt(list, 4)\n  return list\n"
  },
  {
    "path": "tests/golden_tests/run_file/def_bool_num.bend",
    "content": "type bool = true | false\n\ngo bool/true  0 = 1\ngo bool/false _ = 0\n\nmain = (go bool/true 1)\n"
  },
  {
    "path": "tests/golden_tests/run_file/def_num_bool.bend",
    "content": "type bool = true | false\n\ngo 0 bool/true  = 1\ngo 0 bool/false = 0\n\nmain = (go 1 bool/true)\n"
  },
  {
    "path": "tests/golden_tests/run_file/def_tups.bend",
    "content": "go (a, (b, (c, (d, e)))) = (+ (+ (+ (+ e d) c) b) a)\n\nmain = (go (1, (2, (3, (4, 5)))))\n"
  },
  {
    "path": "tests/golden_tests/run_file/do_block_mixed.bend",
    "content": "# Mixed contents in a `do` block should still work.\nResult/bind r nxt = match r {\n  Result/Ok: ((undefer nxt) r.val)\n  Result/Err: r\n}\n\nmain = with Result {\n  let x = 1\n  let y = (Result/Ok x)\n  ask y = y\n  if (+ x y) {\n    ask w = (Result/Ok x)\n    (Result/Ok w)\n  } else {\n    (Result/Err 0)\n  }\n}\n"
  },
  {
    "path": "tests/golden_tests/run_file/dup_global_lam.bend",
    "content": "(main) = let {x1 x2} = $a; ((λ$a λb b) (x1 x2))\n"
  },
  {
    "path": "tests/golden_tests/run_file/empty.bend",
    "content": ""
  },
  {
    "path": "tests/golden_tests/run_file/encode_decode_utf8.bend",
    "content": "def main:\n  use bytes = [72, 101, 108, 108, 111, 44, 32, 228, 184, 150, 231, 149, 140, 33]\n  use s = \"Hello, 世界!\"\n  return (String/encode_utf8(s), String/decode_utf8(bytes))\n"
  },
  {
    "path": "tests/golden_tests/run_file/erased_side_effect.bend",
    "content": "abc = @x let * = (x 123); *\nmain = let * = (abc @$xyz *); $xyz\n"
  },
  {
    "path": "tests/golden_tests/run_file/escape_sequences.bend",
    "content": "String/from_list [] = \"\"\nString/from_list (List/Cons x xs) = (String/Cons x (String/from_list xs))\n\n(Concat String/Nil         ys) = ys\n(Concat (String/Cons x xs) ys) = (String/Cons x (Concat xs ys))\n\n(Join List/Nil)         = \"\"\n(Join (List/Cons x xs)) = (Concat x (Join xs))\n\n(Expand xs) = fold xs { String/Nil: xs; String/Cons: xs }\n\nmain =\n  let a = (String/from_list ['\\n', '\\r', '\\t', '\\0', '\\\"', '\\'', '\\u{AFE}', '\\\\'])\n  let b = (Join [\"\\n\", \"\\r\", \"\\t\", \"\\0\", \"\\\"\", \"\\'\", \"\\u{AFE}\", \"\\\\\"])\n  (Expand (Concat a b))\n"
  },
  {
    "path": "tests/golden_tests/run_file/eta.bend",
    "content": "Id = λb b\nmain = λa (Id a)\n"
  },
  {
    "path": "tests/golden_tests/run_file/example.bend",
    "content": "# Write definitions like this\n(Def1) = ((λa a) (λb b))\n\n# You can call a definition by just referencing its name\n# It will be substituted in place of the reference\n(Def2) = ((λa a) Def1)\n\n# Definitions and variables can have names in upper and lower case and contain numbers\n# Names defined in a more inner position shadow names in an outer position\n(def3) = ((λDef1 Def1) (λx λx x))\n\n# The language is affine, but if you use a variable more than once the compiler inserts duplications for you\n# Of course you can always do them manually\n(def4) = λz let {z1 z2} = z; (z1 ((λx (x x x x x)) z2))\n\n# You can use machine numbers and some native numeric operations\n# Numeric operations can only reduce numbers, doing (+ (λx x) 1) will not do anything\n(nums) = λx1 λx2 (* (+ x1 1) (/ (- x2 2) 1))\n\n# You can use numbers on the native match expression\n# The `+` arm binds the `scrutinee`-1 variable to the the value of the number -1\n(Num.pred) = λn\n  switch n {\n    0: 0\n    _: n-1\n  }\n\n# Write new data types like this\ntype Option = (Some val) | None\ntype Bool = True | False\n\n# You can have pattern matching on definitions\n# Use `*` to ignore a pattern\n(Option.unwrap_or (Option/Some val) *) = val\n(Option.unwrap_or Option/None      or) = or\n\n(Bool.or Bool/True  *) = Bool/True\n(Bool.or * Bool/True)  = Bool/True\n(Bool.or * *)     = Bool/False\n\n# Or using a match expression\n(Bool.not) = λbool\n  match bool {\n    Bool/True:  Bool/False\n    Bool/False: Bool/True\n  }\n\n# Data types can store values\ntype Boxed = (Box val)\n\n# Types with only one constructor can be destructured using `let` or a single matching definition\n(Box.map (Boxed/Box val) f) = (Boxed/Box (f val))\n\n(Box.unbox) = λbox match box {\n  Boxed/Box: box.val\n}\n\n# Use tuples to store two values together without needing to create a new data type\n(Tuple.new fst snd) =\n  let pair = (fst, snd)\n  pair\n\n# Then you can destructure it inside the definition or using `let`\n(Tuple.fst (fst, snd)) = fst\n\n(Tuple.snd) = λpair\n  let (fst, snd) = pair\n  snd\n\n# All files must have a main definition to be run.\n# You can execute a program in HVM with \"cargo run -- run <path to file>\"\n# Other options are \"check\" (the default mode) to just see if the file is well formed\n# and \"compile\" to output hvm-core code.\n(main) =\n  let tup = (Tuple.new Option/None (Num.pred 5))\n\n  let fst = (Tuple.fst tup)\n  let snd = (Tuple.snd tup)\n\n  let box =     (Boxed/Box fst)\n  let map =     (Box.map box Option.unwrap_or)\n  let unboxed = ((Box.unbox map) snd)\n\n  (nums 3 unboxed)\n"
  },
  {
    "path": "tests/golden_tests/run_file/exp.bend",
    "content": "# Requires different labels in the two duplications of f\nmain = ((λfλx (f (f x))) (λfλx (f (f x))))\n"
  },
  {
    "path": "tests/golden_tests/run_file/expand_main_combinator.bend",
    "content": "# It should reduce to `@a (a 1 2)` if main is expanded correctly.\n# (ctr 1 2) should not be extracted from main into a separate function.\nmain = my_fn\nmy_fn = (@x x (ctr 1 2))\nctr = @a @b @x (x a b)"
  },
  {
    "path": "tests/golden_tests/run_file/expand_main_list.bend",
    "content": "# Should return [1, 2, 3]\nfn1 = (@x x 1)\nfn2 = (@x x 2)\nfn3 = (@x x 3)\n\nmain = [fn1, fn2, fn3]\n"
  },
  {
    "path": "tests/golden_tests/run_file/extracted_match_pred.bend",
    "content": "# We expect the lambda 'p' from the match to be extracted which allows this recursive func\nval = λn (switch n { 0: valZ; _: (valS n-1) })\n  valZ = 0\n  valS = λp (val p)\nmain = (val 1)\n"
  },
  {
    "path": "tests/golden_tests/run_file/filter_bool_id.bend",
    "content": "type Bool:\n  T\n  F\n\ndef filter(f, ls):\n  match ls:\n    case List/Nil:\n      return List/Nil\n    case List/Cons:\n      match f(ls.head):\n        case Bool/T:\n          return List/Cons(ls.head, filter(f, ls.tail))\n        case Bool/F:\n          return filter(f, ls.tail)\n\ndef main:\n  return filter(lambda x: x, [Bool/T])\n"
  },
  {
    "path": "tests/golden_tests/run_file/floating_numbers.bend",
    "content": "def main:\n  return [0x12.129, 0x0.2, 0b101.101, 0xAAAAAAAA.AAAAAAAA, 0xA.__A__]\n"
  },
  {
    "path": "tests/golden_tests/run_file/fold_with_state.bend",
    "content": "def main:\n  y = 1\n  fold x = [0, 0, 0] with y:\n    case List/Cons:\n      return List/Cons(x.head + y, x.tail(y + 1))\n    case List/Nil:\n      return List/Nil\n"
  },
  {
    "path": "tests/golden_tests/run_file/guide_bend_7tree.bend",
    "content": "def main():\n  bend x = 0:\n    when x < 3:\n      tree = ![fork(x + 1), fork(x + 1)]\n    else:\n      tree = !7\n  return tree"
  },
  {
    "path": "tests/golden_tests/run_file/guide_bend_sequential.bend",
    "content": "def foo(_):\n  bend idx = 0:\n    when idx < 10:\n      sum = idx + fork(idx + 1)\n    else:\n      sum = 0\n  return sum\n\ndef main:\n  return foo(*)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_bend_sum_tree.bend",
    "content": "def main():\n  bend d = 0, i = 0:\n    when d < 15: # in the guide its 28, but that takes way too long\n      sum = fork(d+1, i*2+0) + fork(d+1, i*2+1)\n    else:\n      sum = i\n  return sum"
  },
  {
    "path": "tests/golden_tests/run_file/guide_bitonic_sort.bend",
    "content": "def gen(d, x):\n  switch d:\n    case 0:\n      return x\n    case _:\n      return (gen(d-1, x * 2 + 1), gen(d-1, x * 2))\n\ndef sum(d, t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return sum(d-1, t.a) + sum(d-1, t.b)\n\ndef swap(s, a, b):\n  switch s:\n    case 0:\n      return (a,b)\n    case _:\n      return (b,a)\n\ndef warp(d, s, a, b):\n  switch d:\n    case 0:\n      return swap(s ^ (a > b), a, b)\n    case _:\n      (a.a,a.b) = a\n      (b.a,b.b) = b\n      (A.a,A.b) = warp(d-1, s, a.a, b.a)\n      (B.a,B.b) = warp(d-1, s, a.b, b.b)\n      return ((A.a,B.a),(A.b,B.b))\n\ndef flow(d, s, t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return down(d, s, warp(d-1, s, t.a, t.b))\n\ndef down(d,s,t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return (flow(d-1, s, t.a), flow(d-1, s, t.b))\n\ndef sort(d, s, t):\n  switch d:\n    case 0:\n      return t\n    case _:\n      (t.a, t.b) = t\n      return flow(d, s, (sort(d-1, 0, t.a), sort(d-1, 1, t.b)))\n\ndef main:\n  # In the guide it's 18\n  return sum(10, sort(10, 0, gen(10, 0))) "
  },
  {
    "path": "tests/golden_tests/run_file/guide_circle_area.bend",
    "content": "type Shape:\n  Circle { radius }\n  Rectangle { width, height }\n\ndef area(shape):\n  match shape:\n    case Shape/Circle:\n      return 3.14 * shape.radius ** 2.0\n    case Shape/Rectangle:\n      return shape.width * shape.height\n\ndef main:\n  return area(Shape/Circle { radius: 10.0 })"
  },
  {
    "path": "tests/golden_tests/run_file/guide_distance_4args.bend",
    "content": "def distance(ax, ay, bx, by):\n  dx = bx - ax\n  dy = by - ay\n  return (dx * dx + dy * dy) ** 0.5\n\ndef main():\n  return distance(10.0, 10.0, 20.0, 20.0)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_distance_obj.bend",
    "content": "object V2 { x, y }\n\ndef distance(a, b):\n  open V2: a\n  open V2: b\n  dx = b.x - a.x\n  dy = b.y - a.y\n  return (dx * dx + dy * dy) ** 0.5\n\ndef main():\n  return distance(V2 { x: 10.0, y: 10.0 }, V2 { x: 20.0, y: 20.0 })"
  },
  {
    "path": "tests/golden_tests/run_file/guide_distance_tup.bend",
    "content": "def distance(a, b):\n  (ax, ay) = a\n  (bx, by) = b\n  dx = bx - ax\n  dy = by - ay\n  return (dx * dx + dy * dy) ** 0.5\n\ndef main():\n  return distance((10.0, 10.0), (20.0, 20.0))"
  },
  {
    "path": "tests/golden_tests/run_file/guide_enumerate.bend",
    "content": "def enum(tree):\n  idx = 0\n  fold tree with idx:\n    case Tree/Node:\n      return ![tree.left(idx * 2 + 0), tree.right(idx * 2 + 1)]\n    case Tree/Leaf:\n      return !(idx, tree.value)\n\ndef main:\n  tree = ![![!1, !2], ![!3, !4]]\n  return enum(tree)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_if_age.bend",
    "content": "def am_i_old(age):\n  if age < 18:\n    return \"you're a kid\"\n  else:\n    return \"you're an adult\"\n\ndef main():\n  return am_i_old(32)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_is_even_num.bend",
    "content": "def is_even(n):\n  if n % 2 == 0:\n    return 1\n  else:\n    return 0\n\ndef main:\n  return is_even(7)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_is_even_str.bend",
    "content": "def is_even(x):\n  if x % 2 == 0:\n    return \"even\"\n  else:\n    return \"odd\"\n\ndef main:\n  return is_even(7)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_list_ctrs.bend",
    "content": "def main:\n  my_list = List/Cons { head: 1, tail: List/Cons { head: 2, tail: List/Cons { head: 3, tail: List/Nil }}}\n  return my_list"
  },
  {
    "path": "tests/golden_tests/run_file/guide_list_match.bend",
    "content": "def main:\n  my_list = [1, 2, 3]\n  match my_list:\n    case List/Cons:\n      return my_list.head\n    case List/Nil:\n      return 0"
  },
  {
    "path": "tests/golden_tests/run_file/guide_list_sugar.bend",
    "content": "def main:\n  my_list = [1, 2, 3]\n  return my_list"
  },
  {
    "path": "tests/golden_tests/run_file/guide_mul2_inline.bend",
    "content": "def main:\n  mul_2 = lambda x: x * 2\n  return mul_2(7)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_mul2_rec.bend",
    "content": "def slow_mul2(n):\n  switch n:\n    case 0:\n      return 0\n    case _:\n      return 2 + slow_mul2(n-1)\n\ndef main:\n  return slow_mul2(7)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_shader_dummy.bend",
    "content": "# given a shader, returns a square image\ndef render(depth):\n  bend d = 0, i = 0:\n    when d < depth:\n      color = (fork(d+1, i*2+0), fork(d+1, i*2+1))\n    else:\n      width = depth / 2\n      color = demo_shader(i % width, i / width)\n  return color\n\n# given a position, returns a color\n# for this demo, it just busy loops\ndef demo_shader(x, y):\n  bend i = 0:\n    when i < 10:\n      color = fork(i + 1)\n    else:\n      color = 0x000001\n  return color\n\n# renders a 256x256 image using demo_shader\ndef main:\n  return render(5)"
  },
  {
    "path": "tests/golden_tests/run_file/guide_sum.bend",
    "content": "def sum(tree):\n  fold tree:\n    case Tree/Node:\n      return tree.left + tree.right\n    case Tree/Leaf:\n      return tree.value\n\ndef main:\n  tree = ![![!1, !2], ![!3, !4]]\n  return sum(tree)"
  },
  {
    "path": "tests/golden_tests/run_file/hvm_def_cast.bend",
    "content": "# Expected +42.0\nhvm to_f24_:\n  ($([f24] a) a)\n\nmain = (to_f24_ 42)"
  },
  {
    "path": "tests/golden_tests/run_file/hvm_def_two_defs.bend",
    "content": "# Expected result: -0.349\nhvm log_:\n  (x ($([|] $(x ret)) ret))\n\nhvm atan2_:\n  ($([&] $(y ret)) (y ret))\n\nmain = (log_ (atan2_ 1.0 1.0) 2.0)"
  },
  {
    "path": "tests/golden_tests/run_file/id_underscore.bend",
    "content": "id _ = _\n\nmain = (id {2, 3})\n"
  },
  {
    "path": "tests/golden_tests/run_file/imp_empty_literals.bend",
    "content": "def list:\n  return []\n\ndef map:\n  return {}\n\ndef str:\n  return \"\"\n\ndef main:\n  return []"
  },
  {
    "path": "tests/golden_tests/run_file/imp_use_statement.bend",
    "content": "def bar(x, y):\n  return {x, y}\n\ndef main(x):\n  use result = bar(1, x)\n  return {result, result}\n"
  },
  {
    "path": "tests/golden_tests/run_file/kind_compiled_tree_sum.bend",
    "content": "#WARNING: unsolved metas.\n#WARNING: unsolved metas.\n_Char = 0\n_List = λ_T 0\n_List.cons = λ_head λ_tail λ_P λ_cons λ_nil ((_cons _head) _tail)\n_List.nil = λ_P λ_cons λ_nil _nil\n_Nat = 0\n_Nat.succ = λ_n λ_P λ_succ λ_zero (_succ _n)\n_Nat.zero = λ_P λ_succ λ_zero _zero\n_String = (_List _Char)\n_String.cons = λ_head λ_tail λ_P λ_cons λ_nil ((_cons _head) _tail)\n_String.nil = λ_P λ_cons λ_nil _nil\n_Tree = λ_A 0\n\n_Tree.fold =\n  λ_bm λ_nd λ_lf\n  let _bm.P = 0;\n  let _bm.node = λ_bm.val λ_bm.lft λ_bm.rgt λ_nd λ_lf (((_nd _bm.val) (((_Tree.fold _bm.lft) _nd) _lf)) (((_Tree.fold _bm.rgt) _nd) _lf));\n  let _bm.leaf = λ_nd λ_lf _lf;\n  ((((let _bm = _bm (_bm _bm.P) _bm.node) _bm.leaf) _nd) _lf)\n\n_Tree.gen = λ_n λ_x switch _n = _n {\n  0: _Tree.leaf\n  _: let _n-1 = _n-1 (\n    _Tree.node\n    _x\n    (_Tree.gen _n-1 (+ (* _x 2) 1))\n    (_Tree.gen _n-1 (+ (* _x 2) 2))\n  )\n}\n\n_Tree.leaf = λ_P λ_node λ_leaf _leaf\n\n_Tree.node = λ_val λ_lft λ_rgt λ_P λ_node λ_leaf (((_node _val) _lft) _rgt)\n\n_Tree.sum = λ_x\n  let _x.P = 0\n  let _x.node = λ_x.val λ_x.lft λ_x.rgt (+ _x.val (+ _x.lft _x.rgt))\n  let _x.leaf = 0\n  ((let _x = _x (_Tree.fold _x) _x.node) _x.leaf)\n\nmain = (_Tree.sum ((_Tree.gen 16) 0))\n\n"
  },
  {
    "path": "tests/golden_tests/run_file/lam_op2.bend",
    "content": "main = λx (+ x 2)\n"
  },
  {
    "path": "tests/golden_tests/run_file/lam_op2_nested.bend",
    "content": "main = λx (+ (* x x) (+ (+ 2 x) 3))\n"
  },
  {
    "path": "tests/golden_tests/run_file/let_tup_readback.bend",
    "content": "main = λa let (x1, x2) = a; (x1 x2)\n"
  },
  {
    "path": "tests/golden_tests/run_file/linearize_match.bend",
    "content": "main = @a @b let c = (+ a a); switch a {\n  0: b;\n  _: (+ a-1 b);\n}\n"
  },
  {
    "path": "tests/golden_tests/run_file/list_resugar.bend",
    "content": "Main = (List/Cons 42 (List/Cons (List/Cons @x x List/Nil) List/Nil))\n"
  },
  {
    "path": "tests/golden_tests/run_file/list_reverse.bend",
    "content": "type list = (cons h t) | nil\n\nreverse (list/cons h t) = (concat (reverse t) (list/cons h list/nil))\nreverse list/nil = list/nil\n\nconcat (list/cons h t) x = (list/cons h (concat t x))\nconcat list/nil x = x\n\nmain = (reverse (list/cons 3 (list/cons 2 (list/cons 1 list/nil))))\n"
  },
  {
    "path": "tests/golden_tests/run_file/list_reverse_imp.bend",
    "content": "def reverse(list):\n  fold list with acc = []:\n    case List/Nil:\n      return acc\n    case List/Cons:\n      return list.tail(List/Cons(list.head, acc))\n\ndef main:\n  bend n = 5:\n    when n != 0:\n      xs = List/Cons(n, fork(n - 1))\n    else:\n      xs = List/Nil\n  return reverse(xs)"
  },
  {
    "path": "tests/golden_tests/run_file/list_take.bend",
    "content": "Take_ n list =\n  switch _ = (== n 0) {\n  | 0: (Take n list)\n  | _: []\n  }\nTake n (List/Nil) = []\nTake n (List/Cons x xs) = (List/Cons x (Take_ (- n 1) xs))\n\nmain = (Take 2 [3, 2, 1, 5, 5, 5])\n"
  },
  {
    "path": "tests/golden_tests/run_file/list_to_tree.bend",
    "content": "List/len list = (List/len/go list 0)\nList/len/go [] count = count\nList/len/go (List/Cons x xs) count = (List/len/go xs (+ count 1))\n\nTake/go n list =\n  switch _ = (== n 0) {\n  | 0: (Take n list)\n  | _: []\n  }\nTake n [] = []\nTake n (List/Cons x xs) = (List/Cons x (Take/go (- n 1) xs))\n\nDrop/go n list =\n  switch _ = (== n 0) {\n  | 0: (Drop n list)\n  | _: list\n  }\nDrop n [] = []\nDrop n (List/Cons x xs) = (Drop/go (- n 1) xs)\n\nList/toTree [] = *\nList/toTree [x] = x\nList/toTree xs =\n  let half = (/ (List/len xs) 2);\n  let x = (Take half xs);\n  let y = (Drop half xs);\n  {(List/toTree x), (List/toTree y)}\n\nMain = (List/toTree [1, 2, 3, 4, 5])\n"
  },
  {
    "path": "tests/golden_tests/run_file/mapper_syntax.bend",
    "content": "def main:\n  x = 1\n  x @= lambda x: x + 1\n  map = { 0: 3, 1: 4 }\n  map[1] += 1\n  map[1] @= lambda x: x * 2\n  return (x, map[1], map[0])\n"
  },
  {
    "path": "tests/golden_tests/run_file/match.bend",
    "content": "main =\n  switch _ = (+ 0 1) {\n    0: λt λf t\n    _: λt λf f\n  }\n"
  },
  {
    "path": "tests/golden_tests/run_file/match_builtins.bend",
    "content": "Bar [(String/Cons x xs), y] = {xs, y}\nBar * = []\n\nMain = (Bar [\"hello\", \"world\"])\n"
  },
  {
    "path": "tests/golden_tests/run_file/match_mult_linearization.bend",
    "content": "main = @a @b @c @d switch a {\n  0: (+ (+ b c) d);\n  _: (+ (+ (+ a-1 b) c) d);\n}\n"
  },
  {
    "path": "tests/golden_tests/run_file/match_num_adt_tup_parser.bend",
    "content": "# Testing various forms of pattern matching\ntype Result_ = (Ok val) | (Err err)\n\nParse state (String/Cons '{' xs) = (Result_/Ok ('{', xs, state))\nParse state (String/Cons '}' xs) = (Result_/Ok ('}', xs, state))\nParse state (String/Cons '\\n' xs) = (Result_/Ok (0, xs, state))\nParse state xs = (Result_/Err {xs, state})\n\nmain =\n  let str = \"(+\";\n  let state = *;\n  match res = (Parse state str) {\n    Result_/Ok: let (val, xs, state) = res.val; {val, (Parse state xs)}\n    err: err\n  }\n"
  },
  {
    "path": "tests/golden_tests/run_file/match_num_explicit_bind.bend",
    "content": "pred = @n switch n {\n  0: 0\n  _: n-1\n}\n\nmain = (pred 4)\n"
  },
  {
    "path": "tests/golden_tests/run_file/match_num_num_to_char.bend",
    "content": "num_to_char n = switch n {\n  0: '0'\n  1: '1'\n  2: '2'\n  3: '3'\n  4: '4'\n  5: '5'\n  6: '6'\n  7: '7'\n  8: '8'\n  9: '9'\n  _: '\\0'\n}\n\nchar_to_num '9' = 9\nchar_to_num '8' = 8\nchar_to_num '7' = 7\nchar_to_num '6' = 6\nchar_to_num '5' = 5\nchar_to_num '4' = 4\nchar_to_num '3' = 3\nchar_to_num '2' = 2\nchar_to_num '1' = 1\nchar_to_num '0' = 0\nchar_to_num  _  = (- 0 1)\n\nmap f List/Nil = List/Nil\nmap f (List/Cons x xs) = (List/Cons (f x) (map f xs))\n\nmain =\n  let nums = [0 1 2 3 4 5 6 7 8 9 10];\n  let chars = (map num_to_char nums);\n  let nums2 = (map char_to_num chars);\n  {{nums, nums2}, chars}\n"
  },
  {
    "path": "tests/golden_tests/run_file/match_num_succ_complex.bend",
    "content": "min1 * 0 = 0\nmin1 0 * = 0\nmin1 a b = (+ 1 (min1 (- a 1) (- b 1)))\n\nmin2 a b = switch a {\n  0: 0\n  _: switch b {\n    0: 0\n    _: (+ 1 (min2 a-1 b-1))\n  }\n}\n\nmap f xs = match xs {\n  List/Cons: (List/Cons (f xs.head) (map f xs.tail))\n  List/Nil: List/Nil\n}\n\nvals = [(5, 10) (10, 5) (0, 12) (12 0) (0 0) (6 6)]\n\nmain =\n  let f1 = @x let (a, b) = x; (min1 a b)\n  let f2 = @x let (a, b) = x; (min2 a b)\n  let a = [f1 f2]\n  (map @a (map a vals) a)\n "
  },
  {
    "path": "tests/golden_tests/run_file/match_str.bend",
    "content": "(is_as \"As\") = 2\n(is_as \"as\") = 2\n(is_as \"\") = 1\n(is_as *) = 0\n\nmap f (List/Cons x xs) = (List/Cons (f x) (map f xs))\nmap f [] = []\n\nmain = (map is_as [\"As\" \"as\" \"\" \"Asd\" \"qwerty\" \"AAs\"])\n"
  },
  {
    "path": "tests/golden_tests/run_file/match_sup.bend",
    "content": "main =\n  let k = #a{0 1};\n  switch k {\n    0: 1\n    _: (+ k-1 2)\n  }\n"
  },
  {
    "path": "tests/golden_tests/run_file/match_vars.bend",
    "content": "main =\n  match 0 {\n  | true: 1\n  | false: 0\n  }\n"
  },
  {
    "path": "tests/golden_tests/run_file/math.bend",
    "content": "def main:\n  use rad = Math/radians\n  return [\n    Math/sin(rad(30.0)),\n    Math/cos(rad(30.0)),\n    Math/tan(rad(30.0)),\n\n    Math/cot(rad(30.0)),\n    Math/sec(rad(30.0)),\n    Math/csc(rad(30.0)),\n\n    Math/asin(rad(30.0)),\n    Math/acos(rad(30.0)),\n    Math/atan(rad(30.0)),\n\n    rad(67.4),\n    rad(45.0),\n    rad(90.0),\n\n    Math/sqrt(9.0),\n\n    Math/ceil(9.75),\n    Math/floor(9.75),\n    Math/ceil(-8.75),\n    Math/floor(-8.75),\n\n    Math/ceil(1.0),\n    Math/floor(1.0),\n    Math/ceil(0.0),\n    Math/floor(0.0),\n\n    Math/round(5.6),\n    Math/round(5.5),\n    Math/round(5.4),\n  ]\n"
  },
  {
    "path": "tests/golden_tests/run_file/merge_sort.bend",
    "content": "sort (Tree/Leaf v) = (List/Cons v List/Nil)\nsort (Tree/Node a b) = (merge (sort a) (sort b))\n\nmerge (List/Nil) b = b\nmerge (List/Cons x xs) (List/Nil) = (List/Cons x xs)\nmerge (List/Cons x xs) (List/Cons y ys) =\n  let t = switch _ = (< x y) {\n    0: λaλbλcλt(t c a b)\n    _: λaλbλcλt(t a b c)\n  }\n\n  let t = (t (List/Cons x) λx(x) (List/Cons y))\n\n  (t λa λb λc (a (merge (b xs) (c ys))))\n\nsum List/Nil = 0\nsum (List/Cons h t) = (+ h (sum t))\n\nrange n = switch n {\n  0: λx (Tree/Leaf x)\n  _: λx (Tree/Node (range n-1 (+ (* x 2) 1)) (range n-1 (* x 2)))\n}\n\nmain = (sum (sort (range 4 0)))\n"
  },
  {
    "path": "tests/golden_tests/run_file/mixed_syntax.bend",
    "content": "type Bool:\n  True\n  False\n\ntype MyTree = (node ~lft ~rgt) | (leaf val)\n\ndef tree_xor(tree):\n  fold tree:\n    case MyTree/node:\n      return xor(tree.lft, tree.rgt);\n    case MyTree/leaf:\n      return tree.val;\n\n(xor Bool/True Bool/False) = Bool/True\n(xor Bool/False Bool/True) = Bool/True\n(xor * *) = Bool/False\n\nmain =\n  let depth = 10\n  let tree = bend n = 0 {\n    when (< n depth):\n      (MyTree/node (fork (+ n 1)) (fork (+ n 1)))\n    else:\n      if (% n 2) { (MyTree/leaf Bool/True) } else { (MyTree/leaf Bool/False) }\n  }\n  (tree_xor tree)\n"
  },
  {
    "path": "tests/golden_tests/run_file/names_hyphen.bend",
    "content": "id cool-var-name = cool-var-name\n\ntype Done_ = (Done done-var)\n\ntoZero n =\n  switch n {\n    0: (Done_/Done 1)\n    _: (toZero n-1)\n  }\n\nmain =\n  match is-done = (toZero 4) {\n    Done_/Done: is-done.done-var\n  }\n"
  },
  {
    "path": "tests/golden_tests/run_file/names_hyphen_toplevel.bend",
    "content": "type Foo-Bar = (Baz-Qux field-hyph)\n\nfun-with-hyphen = 1\n\nmain = @x (x (Foo-Bar/Baz-Qux 1) fun-with-hyphen)\n"
  },
  {
    "path": "tests/golden_tests/run_file/nat_add.bend",
    "content": "(Nat/add (Nat/Zero)   x) = x\n(Nat/add (Nat/Succ p) x) = (Nat/Succ (Nat/add p x))\n\n(Main) = (Nat/add #25 #9)\n"
  },
  {
    "path": "tests/golden_tests/run_file/nat_add_num.bend",
    "content": "(Nat/add (Nat/Zero)   x) = x\n(Nat/add (Nat/Succ p) x) = (Nat/Succ (Nat/add p x))\n\nmain = (Nat/add #4 0)\n"
  },
  {
    "path": "tests/golden_tests/run_file/nested_list_and_string.bend",
    "content": "main = @a [\n  a,\n  (*, 2),\n  (String/Cons [7, \"1234\", 9] (String/Cons a (String/Cons * (String/Cons '4' (String/Cons '2' String/Nil)))))\n]\n"
  },
  {
    "path": "tests/golden_tests/run_file/nested_map_get.bend",
    "content": "def x:\n  return { 0: 1, 1: 42, 2: 0, 3: 2 }\n\ndef main():\n  return x[x[0]] + x[x[x[3]]]\n"
  },
  {
    "path": "tests/golden_tests/run_file/nested_map_set.bend",
    "content": "def main():\n  map = { 0: 1, 1: 10, 2: 0, 3: 1, 4: 3 }\n  map[map[0]] = 99\n  map[map[2]] = 1\n  return map[map[map[4]]] + map[map[2]]\n"
  },
  {
    "path": "tests/golden_tests/run_file/nested_str.bend",
    "content": "Main = (\n  (String/Cons \"a\" String/Nil),\n  (String/Cons 'a' (String/Cons \"bc\" String/Nil)),\n  (String/Cons \"ab\" (String/Cons 'c' String/Nil)),\n  (String/Cons \"ab\" (String/Cons \"cd\" String/Nil))\n)\n"
  },
  {
    "path": "tests/golden_tests/run_file/num_cast.bend",
    "content": "main: _ = \nuse inf = (** 9.0 (** 9.0 9.0))\n(\n  (i24/to_u24 -1),\n  (i24/to_u24 +1),\n  (i24/to_u24 +0),\n  (i24/to_u24 +400),\n  (f24/to_u24 1.0),\n  (f24/to_u24 1.5),\n  (f24/to_u24 -3.0),\n  (f24/to_u24 -3.5),\n  (f24/to_u24 inf), # inf\n  (f24/to_u24 (* -1.0 inf)), # -inf\n  (f24/to_u24 (/ inf inf)), # nan (inf/inf)\n  99999,\n  (u24/to_i24 0),\n  (u24/to_i24 1),\n  (u24/to_i24 123456),\n  (f24/to_i24 1.0),\n  (f24/to_i24 1.5),\n  (f24/to_i24 -3.0),\n  (f24/to_i24 -3.5),\n  (f24/to_i24 inf), # inf\n  (f24/to_i24 (* -1.0 inf)), # -inf\n  (f24/to_i24 (/ inf inf)), # nan (inf/inf)\n  99999,\n  (u24/to_f24 0),\n  (u24/to_f24 1),\n  (u24/to_f24 123456),\n  (i24/to_f24 -1),\n  (i24/to_f24 +1),\n  (i24/to_f24 +0),\n  (i24/to_f24 +400)\n)"
  },
  {
    "path": "tests/golden_tests/run_file/num_match_missing_var.bend",
    "content": "if 0 t f = f\nif 1 t f = t\n\nif2 n t f = switch n {\n  0: f\n  _: t\n  _: f\n}\n\nif3 n t f = switch n {\n  0: f\n  _: t\n  1: t\n}\n\nmain = (if2 1 2 3)\n"
  },
  {
    "path": "tests/golden_tests/run_file/num_pred.bend",
    "content": "Pred n = switch n {\n  0: 0\n  _: n-1\n}\n\nMain = (Pred 43)\n"
  },
  {
    "path": "tests/golden_tests/run_file/open.bend",
    "content": "type Pair = (new a b)\n\ntype State:\n  new { a, b }\n\ndef with_state(x, s):\n  open State: s\n  return Pair/new(s, x(s.a))\n\nmain =\n  let x = (with_state @x x (State/new 1 2))\n  open Pair x;\n  {x.a x.b}\n"
  },
  {
    "path": "tests/golden_tests/run_file/open_object.bend",
    "content": "object Pair { fst, snd }\n\ndef main:\n  x = Pair(1, 2)\n  open Pair: x\n  return x.fst"
  },
  {
    "path": "tests/golden_tests/run_file/open_too_many_ctrs.bend",
    "content": "type MyTree:\n  node { a, b }\n  leaf { a }\n\ndef main:\n  x = MyTree/node(1, 2)\n  open MyTree: x\n  return x.a"
  },
  {
    "path": "tests/golden_tests/run_file/open_undefined_type.bend",
    "content": "def main:\n  x = 1\n  open MyType: x\n  return x.a"
  },
  {
    "path": "tests/golden_tests/run_file/ops.bend",
    "content": "def main:\n  return [\n    1 + 2         == 3,\n    2 - 1         == 1,\n    -5 + -1       == -6,\n    -3 * -9       == +27,\n    0.250 + 0.125 == 0.375,\n    1 >= 1 == 1,\n    1 <= 0 == 0,\n    42 >= 43 == 0,\n  ]\n"
  },
  {
    "path": "tests/golden_tests/run_file/override_list_ctr.bend",
    "content": "List/Nil = *\n\nmain = [λz λk z]\n"
  },
  {
    "path": "tests/golden_tests/run_file/override_str_ctr.bend",
    "content": "String/Cons = *\n\nmain = (String/Cons \"any\")\n"
  },
  {
    "path": "tests/golden_tests/run_file/pred.bend",
    "content": "Pred = λt switch t {\n  0: 0\n  _: t-1\n}\n\nmain = (Pred 3)\n"
  },
  {
    "path": "tests/golden_tests/run_file/queue.bend",
    "content": "# A cool trick involving HVM's scopeless lambdas is linear qs:\n\n# Qnew : Queue a\nQnew = λx x\n\n# Qadd : a -> Queue a -> Queue a\nQadd = λx λq λk (q λc (c x k))\n\n# Qrem : Queue a -> Pair a (Queue a)\nQrem = λq (q $k λx λxs λp(p x λ$k xs))\n\nNil = λc λn n\nCons = λh λt λc λn (c h t)\n\n# Output: [1, 2, 3]\nmain =\n  let q = Qnew\n  let q = ((Qadd) 1 q)\n  let q = ((Qadd) 2 q)\n  let q = ((Qadd) 3 q)\n  (((Qrem) q) λv0 λq\n  (((Qrem) q) λv1 λq\n  (((Qrem) q) λv2 λq\n  ((Cons) 1 ((Cons) 2 ((Cons) 3 Nil))))))\n"
  },
  {
    "path": "tests/golden_tests/run_file/radix_sort_ctr.bend",
    "content": "type Map_ = Free | Used | (Both a b)\ntype Arr = Null | (Leaf x) | (Node a b)\n\n(Swap s a b) = switch s {\n  0: (Map_/Both a b)\n  _: (Map_/Both b a)\n}\n\n# Sort : Arr -> Arr\n(Sort t) = (ToArr 0 (ToMap t))\n\n# ToMap : Arr -> Map\n(ToMap Arr/Null)       = Map_/Free\n(ToMap (Arr/Leaf a))   = (Radix a)\n(ToMap (Arr/Node a b)) = (Merge (ToMap a) (ToMap b))\n\n# ToArr : U60 -> Map -> Arr\n(ToArr x Map_/Free) = Arr/Null\n(ToArr x Map_/Used) = (Arr/Leaf x)\n(ToArr x (Map_/Both a b)) =\n  let a = (ToArr (+ (* x 2) 0) a)\n  let b = (ToArr (+ (* x 2) 1) b)\n  (Arr/Node a b)\n\n# Merge : Map -> Map -> Map\n(Merge Map_/Free       Map_/Free)       = Map_/Free\n(Merge Map_/Free       Map_/Used)       = Map_/Used\n(Merge Map_/Used       Map_/Free)       = Map_/Used\n(Merge Map_/Used       Map_/Used)       = Map_/Used\n(Merge Map_/Free       (Map_/Both c d)) = (Map_/Both c d)\n(Merge (Map_/Both a b) Map_/Free)       = (Map_/Both a b)\n(Merge (Map_/Both a b) (Map_/Both c d)) = (Map_/Both (Merge a c) (Merge b d))\n(Merge (Map_/Both a b) Map_/Used) = *\n(Merge Map_/Used (Map_/Both a b)) = *\n\n# Radix : U60 -> Map\n(Radix n) =\n  let r = Map_/Used\n  let r = (Swap (& n 1) r Map_/Free)\n  let r = (Swap (& n 2) r Map_/Free)\n  let r = (Swap (& n 4) r Map_/Free)\n  let r = (Swap (& n 8) r Map_/Free)\n  let r = (Swap (& n 16) r Map_/Free)\n  (Radix2 n r)\n\n(Radix2 n r) =\n  let r = (Swap (& n 32) r Map_/Free)\n  let r = (Swap (& n 64) r Map_/Free)\n  let r = (Swap (& n 128) r Map_/Free)\n  let r = (Swap (& n 256) r Map_/Free)\n  let r = (Swap (& n 512) r Map_/Free)\n  (Radix3 n r)\n\n(Radix3 n r) =\n  let r = (Swap (& n 1024) r Map_/Free)\n  let r = (Swap (& n 2048) r Map_/Free)\n  let r = (Swap (& n 4096) r Map_/Free)\n  let r = (Swap (& n 8192) r Map_/Free)\n  let r = (Swap (& n 16384) r Map_/Free)\n  (Radix4 n r)\n\n(Radix4 n r) =\n  let r = (Swap (& n 32768) r Map_/Free)\n  let r = (Swap (& n 65536) r Map_/Free)\n  let r = (Swap (& n 131072) r Map_/Free)\n  let r = (Swap (& n 262144) r Map_/Free)\n  let r = (Swap (& n 524288) r Map_/Free)\n  (Radix5 n r)\n\n(Radix5 n r) =\n  let r = (Swap (& n 1048576) r Map_/Free)\n  let r = (Swap (& n 2097152) r Map_/Free)\n  let r = (Swap (& n 4194304) r Map_/Free)\n  let r = (Swap (& n 8388608) r Map_/Free)\n  r\n\n\n# Reverse : Arr -> Arr\n(Reverse Arr/Null)       = Arr/Null\n(Reverse (Arr/Leaf a))   = (Arr/Leaf a)\n(Reverse (Arr/Node a b)) = (Arr/Node (Reverse b) (Reverse a))\n\n# Sum : Arr -> U60\n(Sum Arr/Null)       = 0\n(Sum (Arr/Leaf x))   = x\n(Sum (Arr/Node a b)) = (+ (Sum a) (Sum b))\n\n# Gen : U60 -> Arr\n(Gen n) = (Gen.go n 0)\n  (Gen.go n x) = switch n {\n    0: (Arr/Leaf x)\n    _:\n      let a = (* x 2)\n      let b = (| (* x 2) 1)\n      (Arr/Node (Gen.go n-1 a) (Gen.go n-1 b))\n  }\n\nMain = (Sum (Sort (Reverse (Gen 4))))\n"
  },
  {
    "path": "tests/golden_tests/run_file/readback_hvm1_main.bend",
    "content": "Main = λa Main\n"
  },
  {
    "path": "tests/golden_tests/run_file/readback_list_other_ctr.bend",
    "content": "# Check that the ctr in the middle are interpreted correctly\ntype tup = (pair a b)\n\nmain = (List/Cons\n  (String/Cons 'a' (tup/pair 'b' (String/Cons 'c' String/Nil)))\n  (List/Cons 1 (tup/pair 2 (List/Cons 3 (List/Cons 4 List/Nil))))\n)\n"
  },
  {
    "path": "tests/golden_tests/run_file/readback_num_ops.bend",
    "content": "main = [\n  @a (+ a 1),\n  @a (+ 1 a),\n  @a @b (+ a b),\n  @a (- a 1),\n  @a (- 1 a),\n  @a @b @c (+ a (- b c))\n  @a @b @c (+ (- a b) c)\n]\n"
  },
  {
    "path": "tests/golden_tests/run_file/recursive_bind.bend",
    "content": "Result/bind (Result/Ok val) f = ((undefer f) val)\nResult/bind err _ = err\n\nBar x = (Result/Err 0)\n\nFoo x y = with Result {\n  ask x = (Bar x);\n  (Foo x y)\n}\n\nMain = (Foo \"a\" 0)\n"
  },
  {
    "path": "tests/golden_tests/run_file/recursive_combinator.bend",
    "content": "# Tests that `(Foo 0)` is correctly extracted as a combinator, otherwise the file would hang when running\nFoo = @x (x (Foo 0) @y (Foo y))\n\nmain = (Foo 0)\n"
  },
  {
    "path": "tests/golden_tests/run_file/recursive_combinator_nested.bend",
    "content": "# Tests that `({Foo @* a} 9)` is correctly extracted as a combinator, otherwise the file would hang when running\nFoo = @a switch a {\n  0: (#a {Foo @* a} 9);\n  _: a-1\n}\n\nmain = (Foo 0)\n"
  },
  {
    "path": "tests/golden_tests/run_file/recursive_match_native.bend",
    "content": "add = λa λb (+ a b)\n\nsum = λn switch n {\n  0: 1\n  _: (add (sum n-1) (sum n-1))\n}\n\nmain = (sum 9)\n"
  },
  {
    "path": "tests/golden_tests/run_file/ref_resolution.bend",
    "content": "x = 0\nid x = x\nmain = (id 42)\n"
  },
  {
    "path": "tests/golden_tests/run_file/repeated_name_truncation.bend",
    "content": "long_name_that_truncates = @a @b long_name_that_truncates2\nlong_name_that_truncates2 = 2\nlong_name_that_truncates_too = @a a\nmain = (long_name_that_truncates long_name_that_truncates_too)\n"
  },
  {
    "path": "tests/golden_tests/run_file/scopeless_discard.bend",
    "content": "main =\n  let * = λ$x 1\n  {2, $x}\n"
  },
  {
    "path": "tests/golden_tests/run_file/str_concat.bend",
    "content": "concat (String/Nil) str = str\nconcat (String/Cons c rest1) str2 = (String/Cons c (concat rest1 str2))\n\nmain = (concat \"hello \" \"world\")\n"
  },
  {
    "path": "tests/golden_tests/run_file/str_inc.bend",
    "content": "(StrInc (len, buf)) = (len, #str λx (StrGo len #str (buf x)))\n\n(StrGo 0 str) = str\n(StrGo x (head, tail)) = ((+ 1 head), (StrGo (- x 1) tail))\n\n# Old str encoding\nHello = (11, #str λx (104, (101, (108, (108, (111, (32, (119, (111, (114, (108, (100, x))))))))))))\n\nmain = (StrInc Hello)\n"
  },
  {
    "path": "tests/golden_tests/run_file/str_inc_eta.bend",
    "content": "(StrInc (len, buf)) = (len, #str λx (StrGo len #str (buf x)))\n\n(StrGo 0  (head, tail)) = (head, tail)\n(StrGo x (head, tail)) = ((+ 1 head), (StrGo (- x 1) tail))\n\n# Old str encoding\nHello = (11, #str λx (104, (101, (108, (108, (111, (32, (119, (111, (114, (108, (100, x))))))))))))\n\nmain = (StrInc Hello)\n"
  },
  {
    "path": "tests/golden_tests/run_file/str_len.bend",
    "content": "String/len s = (String/len/go s 0)\nString/len/go (String/Nil) x = x\nString/len/go (String/Cons hd tl) x = (String/len/go tl (+ x 1))\n\nmain = (String/len \"λx 🐼\")\n"
  },
  {
    "path": "tests/golden_tests/run_file/strict_monad_fn.bend",
    "content": "# This will only work if we make the call to `(Result/foo a b)` lazy (by converting it to a combinator).\nResult/bind = @val @nxt match val {\n  Result/Ok: ((undefer nxt) val.val)\n  Result/Err: (Result/Err val.val)\n}\nResult/foo x y = \n  with Result {\n    ask a = (Result/Ok x)\n    ask b = switch y { 0: (Result/Err a); _: (Result/Ok y-1) }\n    (Result/foo a b)\n  }\n\nmain = (Result/foo 1 2)"
  },
  {
    "path": "tests/golden_tests/run_file/sum_tree.bend",
    "content": "add = λa λb (+ a b)\n\ngen = λn switch n {\n  0: (Tree/Leaf 1)\n  _: (Tree/Node (gen n-1) (gen n-1))\n}\n\nsum = λt\n  match t {\n    Tree/Leaf: t.value\n    Tree/Node: (add (sum t.left) (sum t.right))\n  }\n\nmain = (sum (gen 8))\n"
  },
  {
    "path": "tests/golden_tests/run_file/sup_app.bend",
    "content": "main = ({(λx x) (λx x)} 3)\n"
  },
  {
    "path": "tests/golden_tests/run_file/sup_reconstruction.bend",
    "content": "main = λa let {b c} = a; {b c}\n"
  },
  {
    "path": "tests/golden_tests/run_file/superposed_is_even.bend",
    "content": "type MyNat = (S pred) | Z\ntype MyBool = T | F\n\n(Not MyBool/T) = MyBool/F\n(Not MyBool/F) = MyBool/T\n\n(IsEven n) =\n  match n {\n    MyNat/S: (Not (IsEven n.pred))\n    MyNat/Z: MyBool/T\n  }\n\nN0 = MyNat/Z\nN1 = (MyNat/S N0)\nN2 = (MyNat/S N1)\nN3 = (MyNat/S N2)\n\nMain = (IsEven {{N0 N1} {N2 N3}})\n"
  },
  {
    "path": "tests/golden_tests/run_file/tagged_lam.bend",
    "content": "main = #foo ((#foo @x (+ x 1), #foo @x (* x x)) 2)\n"
  },
  {
    "path": "tests/golden_tests/run_file/tree_to_list.bend",
    "content": "def main:\n  var = Tree/reverse(![![!1, !2],![!3, !4]])\n  return Tree/to_list(var)\n "
  },
  {
    "path": "tests/golden_tests/run_file/tup_list_strings.bend",
    "content": "Main = {[{\"foo\", 0}, {\"foo\", 0}, {\"foo\", 1}], 4}\n"
  },
  {
    "path": "tests/golden_tests/run_file/tup_reconstruction.bend",
    "content": "main = λa let (b, c) = a; (b, c)\n"
  },
  {
    "path": "tests/golden_tests/run_file/tuple_eta.bend",
    "content": "main = (10.0, 10.0)\n"
  },
  {
    "path": "tests/golden_tests/run_file/tuple_rots.bend",
    "content": "MkTup8 = @a @b @c @d @e @f @g @h @MkTup8 (MkTup8 a b c d e f g h)\n\nrot = λx (x λa λb λc λd λe λf λg λh (MkTup8 b c d e f g h a))\n\napp = λn switch n {\n  0: λf λx x\n  _: λf λx (app n-1 f (f x))\n}\n\nmain = (app 100 rot (MkTup8 1 2 3 4 5 6 7 8))\n"
  },
  {
    "path": "tests/golden_tests/run_file/unaplied_str.bend",
    "content": "main = λa λb (String/Cons a (String/Cons 'b' (String/Cons 'c' (String/Cons b  String/Nil))))\n"
  },
  {
    "path": "tests/golden_tests/run_file/unbound_wrap.bend",
    "content": "type Maybe_ = (Some x) | None\n\nMaybe_/bind val nxt = match val {\n  Maybe_/Some: (nxt val.x)\n  Maybe_/None: Maybe_/None\n}\n\nmain = with Maybe_ {\n  (wrap 1)\n}"
  },
  {
    "path": "tests/golden_tests/run_file/unscoped_never_used.bend",
    "content": "type Bool = T | F\n\nmain = @x match x {\n  Bool/T : @$x *\n  Bool/F : @x *\n}\n"
  },
  {
    "path": "tests/golden_tests/run_file/unused_dup_var.bend",
    "content": "X = λx x\n\n# This leaves (b1 X) with an ERA in the return, but the DUP is kept with an unused var\nmain = (\n  (λa λb let {b1 b2} = b; (a (b1 X) (b2 X)))\n  (λa λb b)\n)\n"
  },
  {
    "path": "tests/golden_tests/run_file/unused_main_var.bend",
    "content": "# Despite having an unused variable in main, `map(tt,l)` should not be extracted into a new definition.\ndef map(fn, list):\n  fold list:\n    case List/Cons:\n      return List/Cons(fn(list.head), list.tail)\n    case List/Nil:\n      return []\n\ndef tt(x):\n  return x*2\n\ndef main():\n  l = [5,6,7,8]\n  k = [1,2,3,4]\n  return map(tt,l)"
  },
  {
    "path": "tests/golden_tests/run_file/world.bend",
    "content": "main = (String/Cons '\\u{1F30E}' String/Nil)\n"
  },
  {
    "path": "tests/golden_tests/run_file/wrong_string.bend",
    "content": "Main = (String/Cons (*, 4) (String/Cons * String/Nil))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/addition.bend",
    "content": "(main) = (λx (+ (+ 1 1) x) 8)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/adt_match.bend",
    "content": "data Opt = (Some x) | None\n\nOpt/map = @opt @f\n  match opt {\n    Opt/Some: (Opt/Some (f opt.x));\n    Opt/None: Opt/None\n  }\n\ninc = @x (+ x 1)\n\nmain =\n  let opt = (Opt/Some 1);\n  (Opt/map opt inc)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/adt_match_wrong_tag.bend",
    "content": "data Option = (Some val) | None\n\nmain = λa #Option (a #wrong_tag λb b *)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/adt_option_and.bend",
    "content": "data Option = (Some val) | None\n\nOption/and = @a @b match a {\n  Option/Some: match b {\n    Option/Some: (Option/Some (a.val, b.val))\n    Option/None: Option/None\n  }\n  Option/None: Option/None\n}\n\nmain = Option/and\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/adt_wrong_tag.bend",
    "content": "data Option = (Some val) | None\n\nmain = (@a #Option (a #wrong_tag @x x *)) \n"
  },
  {
    "path": "tests/golden_tests/run_lazy/and.bend",
    "content": "data bool = true | false\n\nand a bool/false = bool/false\nand a bool/true = a\n\nmain = (and bool/true bool/false)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/bitonic_sort.bend",
    "content": "data Tree = (Leaf a) | (Both a b)\ndata Error = Err\n\n# Atomic Swapper\n(Swap n a b) = switch n {\n  0: (Tree/Both a b)\n  _: (Tree/Both b a)\n}\n\n# Swaps distant values in parallel; corresponds to a Red Box\n(Warp s (Tree/Leaf a)   (Tree/Leaf b))   = (Swap (^ (> a b) s) (Tree/Leaf a) (Tree/Leaf b))\n(Warp s (Tree/Both a b) (Tree/Both c d)) = (Join (Warp s a c) (Warp s b d))\n(Warp s a b) = Error/Err\n\n# Rebuilds the warped tree in the original order\n(Join (Tree/Both a b) (Tree/Both c d)) = (Tree/Both (Tree/Both a c) (Tree/Both b d))\n(Join a b) = Error/Err\n\n# Recursively warps each sub-tree; corresponds to a Blue/Green Box\n(Flow s (Tree/Leaf a))   = (Tree/Leaf a)\n(Flow s (Tree/Both a b)) = (Down s (Warp s a b))\n\n# Propagates Flow downwards\n(Down s (Tree/Leaf a))   = (Tree/Leaf a)\n(Down s (Tree/Both a b)) = (Tree/Both (Flow s a) (Flow s b))\n\n# Bitonic Sort\n(Sort s (Tree/Leaf a))   = (Tree/Leaf a)\n(Sort s (Tree/Both a b)) = (Flow s (Tree/Both (Sort 0 a) (Sort 1 b)))\n\n# Generates a tree of depth `n`\n(Gen n x) = switch n {\n  0: (Tree/Leaf x)\n  _: (Tree/Both (Gen n-1 (* x 2)) (Gen n-1 (+ (* x 2) 1)))\n}\n\n# Reverses a tree\n(Rev (Tree/Leaf x))   = (Tree/Leaf x)\n(Rev (Tree/Both a b)) = (Tree/Both (Rev b) (Rev a))\n\n# Sums a tree\n(Sum (Tree/Leaf x))   = x\n(Sum (Tree/Both a b)) = (+ (Sum a) (Sum b))\n\nMain = (Sum (Sort 0 (Rev (Gen 4 0))))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/bitonic_sort_lam.bend",
    "content": "# data Tree = (Leaf x) | (Node x0 x1)\nLeaf = λx      #Tree λl #Tree λn (l x)\nNode = λx0 λx1 #Tree λl #Tree λn (n x0 x1)\n\nswap = λn switch n {\n  0: λx0 λx1 (Node x0 x1)\n  _: λx0 λx1 (Node x1 x0)\n}\n\nwarp = λa\n  let a_leaf = λax λb\n    let b_leaf = λbx λax λs (swap (^ (> ax bx) s) (Leaf ax) (Leaf bx))\n    let b_node = λa0 λa1 λax λs 0\n    (#Tree (b b_leaf b_node) ax)\n  let a_node = λa0 λa1 λb\n    let b_leaf = λbx λa0 λa1 λs 0\n    let b_node = λb0 λb1 λa0 λa1 λs (join (warp a0 b0 s) (warp a1 b1 s))\n    (#Tree (b b_leaf b_node) a0 a1)\n  #Tree (a a_leaf a_node)\n\njoin = λa\n  let a_leaf = λax λb 0\n  let a_node = λa0 λa1 λb\n    let b_leaf = λbx λa0 λa1 0\n    let b_node = λb0 λb1 λa0 λa1 (Node (Node a0 b0) (Node a1 b1))\n    (#Tree (b b_leaf b_node) a0 a1)\n  #Tree (a a_leaf a_node)\n\nflow = λa\n  let a_leaf = λax λs (Leaf ax)\n  let a_node = λa0 λa1 λs (down (warp a0 a1 s) s)\n  #Tree (a a_leaf a_node)\n\ndown = λa\n  let a_leaf = λax λs (Leaf ax)\n  let a_node = λa0 λa1 λs (Node (flow a0 s) (flow a1 s))\n  #Tree (a a_leaf a_node)\n\nsort = λa\n  let a_leaf = λax λs (Leaf ax)\n  let a_node = λa0 λa1 λs (flow (Node (sort a0 0) (sort a1 1)) s)\n  #Tree (a a_leaf a_node)\n\ngen = λn switch n {\n  0: λx (Leaf x)\n  _: λx (Node (gen n-1 (* x 2)) (gen n-1 (+ (* x 2) 1)))\n}\n\nrev = λa\n  let a_leaf = λax (Leaf ax)\n  let a_node = λa0 λa1 (Node (rev a1) (rev a0))\n  #Tree (a a_leaf a_node)\n\nsum = λa\n  let a_leaf = λax ax\n  let a_node = λa0 λa1 (+ (sum a0) (sum a1))\n  #Tree (a a_leaf a_node)\n\nmain = (sum (sort (rev (gen 8 0)) 0))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/box.bend",
    "content": "data _Box = (Box val)\n\nBox/subst (_Box/Box n) from to = (Box/subst/go n (== from n) to)\nBox/subst/go a 0   to = (_Box/Box a)\nBox/subst/go a * to = to\n\nMain = (Box/subst (_Box/Box 4) 4 (_Box/Box 10))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/box2.bend",
    "content": "data _Box = (Box val)\n\nBox/subst (_Box/Box n) from to = (Box/subst/go n (== from n) to)\nBox/subst/go a 0 to = (_Box/Box a)\nBox/subst/go a * to = to\n\nMain = (Box/subst (_Box/Box 4) 8000 (_Box/Box 10))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/callcc.bend",
    "content": "(CC.lang program) =\n  let callcc  = λcallback (λ$garbage($hole) (callback λ$hole(0)))\n  let result  = (program callcc)\n  let garbage = $garbage\n  result\n\nMain = (CC.lang λcallcc\n  (+ 10 (callcc λk(+ (k 42) 1729))))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/chars.bend",
    "content": "main = (String/cons '\\u{1234}' (String/cons '!' (String/cons '7' String/nil)))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/def_tups.bend",
    "content": "go (a, (b, (c, (d, e)))) = (+ (+ (+ (+ e d) c) b) a)\n\ngo2 (a, b, c, d, e) = (+ (+ (+ (+ e d) c) b) a)\n\n\nmain = (\n  (go (1, (2, (3, (4, 5))))),\n  (go2 (1, 2, 3, 4, 5))\n)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/dup_global_lam.bend",
    "content": "(main) = let {x1 x2} = $a; ((λ$a λb b) (x1 x2))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/eta.bend",
    "content": "Id = λb b\nmain = λa (Id a)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/example.bend",
    "content": "# Write definitions like this\n(Def1) = ((λa a) (λb b))\n\n# You can call a definition by just referencing its name\n# It will be substituted in place of the reference\n(Def2) = ((λa a) Def1)\n\n# Definitions and variables can have names in upper and lower case and contain numbers\n# Names defined in a more inner position shadow names in an outer position\n(def3) = ((λDef1 Def1) (λx λx x))\n\n# The language is affine, but if you use a variable more than once the compiler inserts duplications for you\n# Of course you can always do them manually\n(def4) = λz let {z1 z2} = z; (z1 ((λx (x x x x x)) z2))\n\n# You can use machine numbers and some native numeric operations\n# Numeric operations can only reduce numbers, doing (+ (λx x) 1) will not do anything\n(nums) = λx1 λx2 (* (+ x1 1) (/ (- x2 2) 1))\n\n# You can use numbers on the native match expression\n# The `+` arm binds the `scrutinee`-1 variable to the the value of the number -1\n(Num.pred) = λn \n  switch n { \n    0: 0\n    _: n-1\n  }\n\n# Write new data types like this\ndata Option = (Some val) | None\ndata Bool = True | False\n\n# You can have pattern matching on definitions\n# Use `*` to ignore a pattern\n(Option.unwrap_or (Option/Some val) *) = val\n(Option.unwrap_or Option/None      or) = or\n\n(Bool.or Bool/True  *) = Bool/True\n(Bool.or * Bool/True)  = Bool/True\n(Bool.or * *)     = Bool/False\n\n# Or using a match expression\n(Bool.not) = λbool\n  match bool {\n    Bool/True:  Bool/False\n    Bool/False: Bool/True\n  }\n\n# Data types can store values\ndata Boxed = (Box val)\n\n# Types with only one constructor can be destructured using `let` or a single matching definition\n(Box.map (Boxed/Box val) f) = (Boxed/Box (f val))\n\n(Box.unbox) = λbox match box {\n  Boxed/Box: box.val\n}\n\n# Use tuples to store two values together without needing to create a new data type\n(Tuple.new fst snd) =\n  let pair = (fst, snd)\n  pair\n\n# Then you can destructure it inside the definition or using `let`\n(Tuple.fst (fst, snd)) = fst\n\n(Tuple.snd) = λpair\n  let (fst, snd) = pair\n  snd\n\n# All files must have a main definition to be run.\n# You can execute a program in HVM with \"cargo run -- run <path to file>\"\n# Other options are \"check\" (the default mode) to just see if the file is well formed\n# and \"compile\" to output hvm-core code.\n(main) = \n  let tup = (Tuple.new None (Num.pred 5))\n\n  let fst = (Tuple.fst tup)\n  let snd = (Tuple.snd tup)\n\n  let box =     (Boxed/Box fst)\n  let map =     (Box.map box Option.unwrap_or)\n  let unboxed = ((Box.unbox map) snd)\n\n  (nums 3 unboxed)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/exp.bend",
    "content": "main = ((λfλx (f (f x))) (λfλx (f (f x))))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/extracted_match_pred.bend",
    "content": "# We expect the lambda 'p' from the match to be extracted which allows this recursive func\nval = λn (switch n { 0: valZ; _: (valS n-1) })\n  valZ = 0\n  valS = λp (val p)\nmain = (val 1)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/field_vectorization.bend",
    "content": "# Vectorizes if the adts are encoded with tagged scott encoding\ndata Box = (New a)\ndata Bool = T | F\ndata List_ = (Cons x xs) | Nil\ndata Pair = (Tup a b)\n\n(Tup.and (Pair/Tup (Box/New Bool/T) (Box/New Bool/T))) = Bool/T\n(Tup.and (Pair/Tup a b)) = Bool/F\n\n(Not Bool/T) = Bool/F\n(Not Bool/F) = Bool/T\n\nmain = (Not\n  (Tup.and \n    (List_/Cons \n      (Pair/Tup (Box/New Bool/T) (Box/New Bool/F))\n      (List_/Cons \n        (Pair/Tup (Box/New Bool/F) (Box/New Bool/F))\n        (List_/Cons\n          (Pair/Tup (Box/New Bool/T) (Box/New Bool/T))\n          (List_/Cons\n            (Pair/Tup (Box/New Bool/F) (Box/New Bool/T))\n            List_/Nil\n          )\n        )\n      )\n    )\n  )\n)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/lam_op2.bend",
    "content": "main = λx (+ x 2)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/lam_op2_nested.bend",
    "content": "main = λx (+ (* x x) (+ (+ 2 x) 3))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/let_tup_readback.bend",
    "content": "main = λa let (x1, x2) = a; (x1 x2)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/linearize_match.bend",
    "content": "main = @a @b let c = (+ a a); switch a {\n  0: b;\n  _: (+ a-1 b);\n}\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/list_resugar.bend",
    "content": "Main = (List/cons 42 (List/cons (List/cons @x x List/nil) List/nil))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/list_reverse.bend",
    "content": "data list = (cons h t) | nil\n\nreverse (list/cons h t) = (concat (reverse t) (list/cons h list/nil))\nreverse list/nil = list/nil\n\nconcat (list/cons h t) x = (list/cons h (concat t x))\nconcat list/nil x = x\n\nmain = (reverse (list/cons 3 (list/cons 2 (list/cons 1 list/nil))))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/list_take.bend",
    "content": "Take_ n list =\n  switch _ = (== n 0) {\n  | 0: (Take n list)\n  | _: []\n  }\nTake n (List/nil) = []\nTake n (List/cons x xs) = (List/cons x (Take_ (- n 1) xs))\n\nmain = (Take 2 [3, 2, 1, 5, 5, 5])\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/list_to_tree.bend",
    "content": "List/len list = (List/len/go list 0)\nList/len/go [] count = count\nList/len/go (List/cons x xs) count = (List/len/go xs (+ count 1))\n\nTake/go n list =\n  switch _ = (== n 0) {\n  | 0: (Take n list)\n  | _: []\n  }\nTake n [] = []\nTake n (List/cons x xs) = (List/cons x (Take/go (- n 1) xs))\n\nDrop/go n list =\n  switch _ = (== n 0) {\n  | 0: (Drop n list)\n  | _: list\n  }\nDrop n [] = []\nDrop n (List/cons x xs) = (Drop/go (- n 1) xs)\n\nList/toTree [] = *\nList/toTree [x] = x\nList/toTree xs =\n  let half = (/ (List/len xs) 2);\n  let x = (Take half xs);\n  let y = (Drop half xs);\n  {(List/toTree x), (List/toTree y)}\n\nMain = (List/toTree [1, 2, 3, 4, 5])\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/match.bend",
    "content": "main =\n  switch _ = (+ 0 1) {\n    0: λt λf t\n    _: λt λf f\n  }\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/match_builtins.bend",
    "content": "Bar [(String/cons x xs), y] = (xs, y)\nBar * = []\n\nMain = (Bar [\"hello\", \"world\"])\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/match_mult_linearization.bend",
    "content": "main = @a @b @c @d switch a {\n  0: (+ (+ b c) d);\n  _: (+ (+ (+ a-1 b) c) d);\n}\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/match_num_explicit_bind.bend",
    "content": "pred = @n switch n {\n  0: 0\n  _: n-1\n}\n\nmain = (pred 4)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/merge_sort.bend",
    "content": "data Tree = (Leaf x) | (Node x0 x1) \ndata List_ = Nil | (Cons h t)\n\nsort (Tree/Leaf v) = (List_/Cons v List_/Nil)\nsort (Tree/Node a b) = (merge (sort a) (sort b))\n\nmerge (List_/Nil) b = b\nmerge (List_/Cons x xs) (List_/Nil) = (List_/Cons x xs)\nmerge (List_/Cons x xs) (List_/Cons y ys) = \n  let t = switch _ = (< x y) {\n    0: λaλbλcλt(t c a b)\n    _: λaλbλcλt(t a b c)\n  }\n\n  let t = (t (List_/Cons x) λx(x) (List_/Cons y))\n\n  (t λa λb λc (a (merge (b xs) (c ys))))\n\nsum List_/Nil = 0\nsum (List_/Cons h t) = (+ h (sum t))\n\nrange n = switch n {\n  0: λx (Tree/Leaf x)\n  _: λx (Tree/Node (range n-1 (+ (* x 2) 1)) (range n-1 (* x 2)))\n}\n\nmain = (sum (sort (range 4 0)))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/nested_list_and_string.bend",
    "content": "main = @a [\n  a,\n  (*, 2),\n  (String/cons [7, \"1234\", 9] (String/cons a (String/cons * (String/cons '4' (String/cons '2' String/nil)))))\n]\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/nested_str.bend",
    "content": "Main = (\n  (String/cons \"a\"   String/nil),\n  (String/cons 'a'  (String/cons \"bc\" String/nil)),\n  (String/cons \"ab\" (String/cons 'c' String/nil)),\n  (String/cons \"ab\" (String/cons \"cd\" String/nil))\n)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/num_pred.bend",
    "content": "Pred n = switch n {\n  0: 0\n  _: n-1\n}\n\nMain = (Pred 43)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/queue.bend",
    "content": "# A cool trick involving HVM's scopeless lambdas is linear qs:\n\n# Qnew : Queue a\nQnew = λx x\n\n# Qadd : a -> Queue a -> Queue a\nQadd = λx λq λk (q λc (c x k))\n\n# Qrem : Queue a -> Pair a (Queue a)\nQrem = λq (q $k λx λxs λp(p x λ$k xs))\n\nNil = λc λn n\nCons = λh λt λc λn (c h t)\n\n# Output: [1, 2, 3]\nmain =\n  let q = Qnew\n  let q = ((Qadd) 1 q)\n  let q = ((Qadd) 2 q)\n  let q = ((Qadd) 3 q)\n  (((Qrem) q) λv0 λq\n  (((Qrem) q) λv1 λq\n  (((Qrem) q) λv2 λq\n  ((Cons) 1 ((Cons) 2 ((Cons) 3 Nil))))))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/radix_sort_ctr.bend",
    "content": "data Map_ = Free | Used | (Both a b)\ndata Arr = Null | (Leaf x) | (Node a b)\n\n(Swap s a b) = switch s {\n  0: (Map_/Both a b)\n  _: (Map_/Both b a)\n}\n\n# Sort : Arr -> Arr\n(Sort t) = (ToArr 0 (ToMap t))\n\n# ToMap : Arr -> Map\n(ToMap Arr/Null)       = Map_/Free\n(ToMap (Arr/Leaf a))   = (Radix a)\n(ToMap (Arr/Node a b)) = (Merge (ToMap a) (ToMap b))\n\n# ToArr : U60 -> Map -> Arr\n(ToArr x Map_/Free) = Arr/Null\n(ToArr x Map_/Used) = (Arr/Leaf x)\n(ToArr x (Map_/Both a b)) =\n  let a = (ToArr (+ (* x 2) 0) a)\n  let b = (ToArr (+ (* x 2) 1) b)\n  (Arr/Node a b)\n\n# Merge : Map -> Map -> Map\n(Merge Map_/Free       Map_/Free)       = Map_/Free\n(Merge Map_/Free       Map_/Used)       = Map_/Used\n(Merge Map_/Used       Map_/Free)       = Map_/Used\n(Merge Map_/Used       Map_/Used)       = Map_/Used\n(Merge Map_/Free       (Map_/Both c d)) = (Map_/Both c d)\n(Merge (Map_/Both a b) Map_/Free)       = (Map_/Both a b)\n(Merge (Map_/Both a b) (Map_/Both c d)) = (Map_/Both (Merge a c) (Merge b d))\n(Merge (Map_/Both a b) Map_/Used) = *\n(Merge Map_/Used (Map_/Both a b)) = *\n\n# Radix : U60 -> Map\n(Radix n) =\n  let r = Map_/Used\n  let r = (Swap (& n 1) r Map_/Free)\n  let r = (Swap (& n 2) r Map_/Free)\n  let r = (Swap (& n 4) r Map_/Free)\n  let r = (Swap (& n 8) r Map_/Free)\n  let r = (Swap (& n 16) r Map_/Free)\n  (Radix2 n r)\n\n(Radix2 n r) =\n  let r = (Swap (& n 32) r Map_/Free)\n  let r = (Swap (& n 64) r Map_/Free)\n  let r = (Swap (& n 128) r Map_/Free)\n  let r = (Swap (& n 256) r Map_/Free)\n  let r = (Swap (& n 512) r Map_/Free)\n  (Radix3 n r)\n\n(Radix3 n r) =\n  let r = (Swap (& n 1024) r Map_/Free)\n  let r = (Swap (& n 2048) r Map_/Free)\n  let r = (Swap (& n 4096) r Map_/Free)\n  let r = (Swap (& n 8192) r Map_/Free)\n  let r = (Swap (& n 16384) r Map_/Free)\n  (Radix4 n r)\n\n(Radix4 n r) =\n  let r = (Swap (& n 32768) r Map_/Free)\n  let r = (Swap (& n 65536) r Map_/Free)\n  let r = (Swap (& n 131072) r Map_/Free)\n  let r = (Swap (& n 262144) r Map_/Free)\n  let r = (Swap (& n 524288) r Map_/Free)\n  (Radix5 n r)\n\n(Radix5 n r) =\n  let r = (Swap (& n 1048576) r Map_/Free)\n  let r = (Swap (& n 2097152) r Map_/Free)\n  let r = (Swap (& n 4194304) r Map_/Free)\n  let r = (Swap (& n 8388608) r Map_/Free)\n  r\n\n\n# Reverse : Arr -> Arr\n(Reverse Arr/Null)       = Arr/Null\n(Reverse (Arr/Leaf a))   = (Arr/Leaf a)\n(Reverse (Arr/Node a b)) = (Arr/Node (Reverse b) (Reverse a))\n\n# Sum : Arr -> U60\n(Sum Arr/Null)       = 0\n(Sum (Arr/Leaf x))   = x\n(Sum (Arr/Node a b)) = (+ (Sum a) (Sum b))\n\n# Gen : U60 -> Arr\n(Gen n) = (Gen.go n 0)\n  (Gen.go n x) = switch n {\n    0: (Arr/Leaf x)\n    _:\n      let a = (* x 2)\n      let b = (| (* x 2) 1)\n      (Arr/Node (Gen.go n-1 a) (Gen.go n-1 b))\n  }\n\nMain = (Sum (Sort (Reverse (Gen 4))))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/recursive_match_native.bend",
    "content": "add = λa λb (+ a b)\n\nsum = λn switch n {\n  0: 1\n  _: (add (sum n-1) (sum n-1))\n}\n\nmain = (sum 9)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/scopeless_discard.bend",
    "content": "main =\n  let * = λ$x 1\n  (2, $x)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/str_concat.bend",
    "content": "concat (String/nil) str = str\nconcat (String/cons c rest1) str2 = (String/cons c (concat rest1 str2))\n\nmain = (concat \"hello \" \"world\")\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/str_inc.bend",
    "content": "(StrInc (len, buf)) = (len, #str λx (StrGo len #str (buf x)))\n\n(StrGo 0 str) = str\n(StrGo x (head, tail)) = ((+ 1 head), (StrGo (- x 1) tail))\n\n# Old str encoding\nHello = (11, #str λx (104, (101, (108, (108, (111, (32, (119, (111, (114, (108, (100, x))))))))))))\n\nmain = (StrInc Hello)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/str_inc_eta.bend",
    "content": "(StrInc (len, buf)) = (len, #str λx (StrGo len #str (buf x)))\n\n(StrGo 0 (head, tail)) = (head, tail)\n(StrGo x (head, tail)) = ((+ 1 head), (StrGo (- x 1) tail))\n\n# Old str encoding\nHello = (11, #str λx (104, (101, (108, (108, (111, (32, (119, (111, (114, (108, (100, x))))))))))))\n\nmain = (StrInc Hello)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/str_len.bend",
    "content": "String/len s = (String/len/go s 0)\nString/len/go (String/nil) x = x\nString/len/go (String/cons hd tl) x = (String/len/go tl (+ x 1))\n\nmain = (String/len \"λx 🐼\")\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/sum_tree.bend",
    "content": "data Tree = (Leaf x) | (Node x0 x1)\n\nadd = λa λb (+ a b)\n\ngen = λn switch n {\n  0: (Tree/Leaf 1)\n  _: (Tree/Node (gen n-1) (gen n-1))\n}\n\nsum = λt\n  match t {\n    Tree/Leaf: t.x\n    Tree/Node: (add (sum t.x0) (sum t.x1))\n  }\n\nmain = (sum (gen 8))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/sup_app.bend",
    "content": "main = (#id {(λx x) (λx x)} 3)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/sup_reconstruction.bend",
    "content": "main = λa let #s {b c} = a; #s {b c}\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/superposed_is_even.bend",
    "content": "data N = (S pred) | Z\ndata B = T | F\n\n(Not B/T) = B/F\n(Not B/F) = B/T\n\n(IsEven n) =\n  match n {\n    N/S: (Not (IsEven n.pred))\n    N/Z: B/T\n  }\n\nN0 = N/Z\nN1 = (N/S N0)\nN2 = (N/S N1)\nN3 = (N/S N2)\n\nMain = (IsEven {{N0 N1} {N2 N3}})\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/tagged_lam.bend",
    "content": "main = #foo ((#foo @x (+ x 1), #foo @x (* x x)) 2)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/tup_reconstruction.bend",
    "content": "main = λa let (b, c) = a; (b, c)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/tuple_rots.bend",
    "content": "MkTup8 = @a @b @c @d @e @f @g @h @MkTup8 (MkTup8 a b c d e f g h)\n\nrot = λx (x λa λb λc λd λe λf λg λh (MkTup8 b c d e f g h a))\n\napp = λn switch n {\n  0: λf λx x\n  _: λf λx (app n-1 f (f x))\n}\n\nmain = (app 100 rot (MkTup8 1 2 3 4 5 6 7 8))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/unaplied_str.bend",
    "content": "main = λa λb (String/cons a (String/cons 'b' (String/cons 'c' (String/cons b  String/nil))))\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/unused_dup_var.bend",
    "content": "X = λx x\n\n# This leaves (b1 X) with an ERA in the return, but the DUP is kept with an unused var\nmain = (\n  (λa λb let {b1 b2} = b; (a (b1 X) (b2 X)))\n  (λa λb b)\n)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/world.bend",
    "content": "main = (String/cons '\\u{1F30E}' String/nil)\n"
  },
  {
    "path": "tests/golden_tests/run_lazy/wrong_string.bend",
    "content": "Main = (String/cons (*, 4) (String/cons * String/nil))\n"
  },
  {
    "path": "tests/golden_tests/scott_triggers_unused/test.bend",
    "content": "# The test below should not trigger this warning:\n#\n# In definition 'f':\n#   Definition is unused.\n# In definition 't':\n#   Definition is unused.\n#\n# This was happening because the prune algorithm was just collecting constructors\n# by searching for tags.\n\ntype bool = t | f\n\nmain = @b match b { bool/t: 0; bool/f: 1}\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/adt_tup_era.bend",
    "content": "type Tuple = (Pair a b)\n\n(Foo (Tuple/Pair (Tuple/Pair a b) c)) = a\n(Foo *) = 2\n\nMain = (Foo (Tuple/Pair 1 5))\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/already_flat.bend",
    "content": "type Foo = CtrA | (CtrB x)\ntype Bar = (CtrA1 a) | (CtrA2 a1 a2) | (CtrA3 a)\ntype Baz = (CtrB0) | (CtrB1 b) | (CtrB2 b) | (CtrB3 b)\n\nRule1 = λx x\n\nRule2 a = λx x\n\nRule3 a b c d = (a b c d)\n\nRule4 (Foo/CtrA) = λx x\nRule4 (Foo/CtrB x) = x\nRule4 x = x\n\nRule5 (Bar/CtrA1 a) b = (a b)\nRule5 (Bar/CtrA2 a1 a2) b = (a1 a2 b)\nRule5 a (Baz/CtrB0) = a\nRule5 a (Baz/CtrB1 b) = (a b)\nRule5 (Bar/CtrA3 a) (Baz/CtrB3 b) = (a b)\nRule5 a b = (a b)\n\nRule6 a = a\nRule6 b = b\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/bits_dec.bend",
    "content": "type Data/Bits = e | (o t) | (i t)\n\nData.Bits.dec Data/Bits/e = (Data/Bits/e)\nData.Bits.dec (Data/Bits/o (Data/Bits/e)) = (Data/Bits/e)\nData.Bits.dec (Data/Bits/i (Data/Bits/e)) = (Data/Bits/o (Data/Bits/e))\nData.Bits.dec (Data/Bits/i (Data/Bits/o b.pred)) = (Data/Bits/o b.pred)\nData.Bits.dec (Data/Bits/i (Data/Bits/i b.pred)) = (Data/Bits/o b.pred)\nData.Bits.dec (Data/Bits/o (Data/Bits/o b.pred)) = (Data/Bits/i (Data.Bits.dec b.pred))\nData.Bits.dec (Data/Bits/o (Data/Bits/i b.pred)) = (Data/Bits/i (Data.Bits.dec b.pred))\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/complex_with_case.bend",
    "content": "type Tree_ = (Node lt rt rd ld) | (Leaf val)\n\n(map) =\n  λarg1 λarg2 use tree = arg2;\n  use f = arg1;\n  match tree with f {\n    Tree_/Node: (Tree_/Node (map f tree.lt) (map f tree.rt) (map f tree.rd) (map f tree.ld));\n    Tree_/Leaf: (Tree_/Leaf (f tree.val));\n  }\n\nmain = map\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/double_unwrap_box.bend",
    "content": "# Should notice that the second rule is redundant, not create flattened rule for it and not forward the second argument.\ntype Boxed = (Box x)\n\n(DoubleUnbox (Boxed/Box (Boxed/Box x)) *) = x\n(DoubleUnbox * x) = x\n\nMain = (DoubleUnbox (Boxed/Box (Boxed/Box 0)) 5)\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/double_unwrap_maybe.bend",
    "content": "# We want to make sure that the default value is not mistakenly erased in the first level of flattening.\ntype Maybe_ = (Some x) | None\n\n(DoubleUnwrap (Maybe_/Some (Maybe_/Some x)) *) = x\n(DoubleUnwrap * x) = x\n\nMain = (DoubleUnwrap (Maybe_/Some Maybe_/None) 5)\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/flatten_with_terminal.bend",
    "content": "# The flattened rule should only have 1 arg, for matching 'B'\ntype A_t = (A b)\ntype B_t = B\n\n(Foo 0 (A_t/A B_t/B)) = B_t/B\n(Foo * *) = *\n\nmain = (Foo 2 (A_t/A B_t/B))\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/irrefutable_case.bend",
    "content": "l = 1001\n\nv1 = match l {\n  x: x\n}\n\nv2 = match l {\n  x: l\n}\n\nv3 = match [] {\n  x: 2002\n}\n\nv4 = match l = 3003 {\n  x: x\n  y: 0\n}\n\nv5 = match p = 4004 with b = 5005 {\n  x: b\n}\n\nmain = (v1, v2, v3, v4, v5)\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/linearize_match_all.bend",
    "content": "# Testing linearization in different situations\ntype ConsList = (Cons h t) | Nil\n\n# Auto linearized on strict mode\nA = @a @b @c switch a {\n  0: (b c)\n  _: (a-1 b c)\n}\n\n# Manually linearized\nB = @a @b @c switch c with a b {\n  0: (a b)\n  _: (a b c-1)\n}\n\n# Not linearized\nC = @a @b @c switch c {\n  0: (a b)\n  _: (a b c-1)\n}\n\n# Auto linearized, one arg not used\nD = @a @b @c switch a {\n  0: c\n  _: (a-1 c)\n}\n\n# Pattern matching defs linearize all arguments\nE (ConsList/Cons a b) (ConsList/Cons c d) = (a b c d)\nE a b = (a b)\n\nA2 = @a @b @c match a {\n  ConsList/Cons: (a.h a.t b c)\n  ConsList/Nil: (b c)\n}\n\nB2 = @a @b @c match c with a b {\n  ConsList/Cons: (a b c.h c.t)\n  ConsList/Nil: (a b)\n}\n\nC2 = @a @b @c match c {\n  ConsList/Cons: (a b c.h c.t)\n  ConsList/Nil: (a b)\n}\n\nD2 = @a @b @c match a {\n  ConsList/Cons: (a.h a.t b c)\n  ConsList/Nil: (b c)\n}\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/match_str.bend",
    "content": "(is_as \"As\") = 2\n(is_as \"as\") = 2\n(is_as \"\") = 1\n(is_as *) = 0\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/nested.bend",
    "content": "type Foo = (CtrA a b) | (CtrB a)\ntype Bar = (CtrB1 b) | (CtrB2 a b)\ntype Baz = CtrC\n\n(Rule (Foo/CtrA a (Bar/CtrB1 b))) = (a b)\n(Rule (Foo/CtrA a (Bar/CtrB2 (Baz/CtrC) b))) = (a b)\n(Rule (Foo/CtrA a b)) = (a b)\n(Rule (Foo/CtrB b)) = b\n(Rule x) = x\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/nested2.bend",
    "content": "Foo a (List/Cons b (List/Cons c d)) = (a b c d)\nFoo a b = (a b)\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/nested_0ary.bend",
    "content": "type list = (Cons head tail) | Nil\n\nUnpack cmp list/Nil = list/Nil\nUnpack cmp (list/Cons h list/Nil) = h\nUnpack cmp xs = (cmp xs)\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/redundant_with_era.bend",
    "content": "# Should not create flattened rules for the 2 bottom rules and should properly erase the first arg.\n(Fn2 * (*, (*, a))) = a\n(Fn2 0 *) = 0\n(Fn2 a *) = (- a 1)\n\nmain = *\n"
  },
  {
    "path": "tests/golden_tests/simplify_matches/wrong_fn_arity.bend",
    "content": "(Foo a b c) = 0\n(Foo) = 1\n"
  },
  {
    "path": "tests/golden_tests.rs",
    "content": "//! This module runs snapshot tests for compiling and running Bend programs.\n//!\n//! The result of each test is saved as a snapshot and used as golden output\n//! for future tests. This allows us to test regressions in compilation and\n//! have a history of how certain programs compiled and ran.\n//!\n//! These tests use `cargo-insta`. To run the tests, run `cargo insta test`.\n//! If there are any changes to the snapshots, they'll be highlighted by the\n//! CLI tool. Then, run `cargo insta review` to review these changes.\n\nuse bend::{\n  check_book, compile_book, desugar_book,\n  diagnostics::{Diagnostics, DiagnosticsConfig, Severity},\n  fun::{\n    load_book::do_parse_book, net_to_term::net_to_term, parser::ParseBook, term_to_net::Labels, Book, Ctx,\n    Name,\n  },\n  hvm::hvm_book_show_pretty,\n  imports::DefaultLoader,\n  load_to_book,\n  net::hvm_to_net::hvm_to_net,\n  run_book, AdtEncoding, CompileOpts, RunOpts,\n};\nuse insta::assert_snapshot;\nuse itertools::Itertools;\nuse std::{\n  collections::HashMap,\n  fmt::Write,\n  io::Read,\n  path::{Path, PathBuf},\n};\nuse stdext::function_name;\nuse walkdir::WalkDir;\n\n// Since running a program requires messing with stdout and stderr,\n// if we run multiple at the same time, their outputs can get mixed.\n// So we put a mutex to execute only one \"run\" test at a time.\nstatic RUN_MUTEX: std::sync::Mutex<()> = std::sync::Mutex::new(());\n\nconst TESTS_PATH: &str = \"/tests/golden_tests/\";\n\ntype RunFn = dyn Fn(&str, &Path) -> Result<String, Diagnostics>;\n\npub fn parse_book_single_file(code: &str, origin: &Path) -> Result<Book, Diagnostics> {\n  do_parse_book(code, origin, ParseBook::builtins())?.to_fun()\n}\n\nfn run_single_golden_test(path: &Path, run: &[&RunFn]) -> Result<(), String> {\n  println!(\"{}\", path.display());\n  let code = std::fs::read_to_string(path).map_err(|e| e.to_string())?;\n  let file_name = path.to_str().and_then(|path| path.rsplit_once(TESTS_PATH)).unwrap().1;\n\n  // unfortunately we need to do this\n  let file_path = format!(\"{}{}\", &TESTS_PATH[1..], file_name);\n  let file_path = Path::new(&file_path);\n\n  let mut results: HashMap<&Path, Vec<String>> = HashMap::new();\n  for fun in run {\n    let result = fun(&code, file_path).unwrap_or_else(|err| err.to_string());\n    results.entry(file_path).or_default().push(result);\n  }\n  let results = results.into_values().map(|v| v.join(\"\\n\")).collect_vec();\n\n  let mut settings = insta::Settings::clone_current();\n  settings.set_prepend_module_to_snapshot(false);\n  settings.set_omit_expression(true);\n  settings.set_input_file(path);\n\n  settings.bind(|| {\n    for result in results {\n      assert_snapshot!(file_name, result);\n    }\n  });\n\n  Ok(())\n}\n\nfn run_golden_test_dir(test_name: &str, run: &RunFn) {\n  run_golden_test_dir_multiple(test_name, &[run])\n}\n\nfn run_golden_test_dir_multiple(test_name: &str, run: &[&RunFn]) {\n  let root = PathBuf::from(format!(\n    \"{}{TESTS_PATH}{}\",\n    env!(\"CARGO_MANIFEST_DIR\"),\n    test_name.rsplit_once(':').unwrap().1\n  ));\n\n  let walker = WalkDir::new(&root).sort_by_file_name().max_depth(1).into_iter().filter_entry(|e| {\n    let path = e.path();\n    path == root || path.is_dir() || (path.is_file() && path.extension().is_some_and(|x| x == \"bend\"))\n  });\n\n  for entry in walker {\n    let entry = entry.unwrap();\n    let path = entry.path();\n    if path.is_file() {\n      eprintln!(\"Testing {}\", path.display());\n      run_single_golden_test(path, run).unwrap();\n    }\n  }\n}\n\n/* Snapshot/regression/golden tests\n\n Each tests runs all the files in tests/golden_tests/<test name>.\n\n The test functions decide how exactly to process the test programs\n and what to save as a snapshot.\n*/\n\n/// Compiles a file with regular compilation options.\n#[test]\nfn compile_file() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let mut book = parse_book_single_file(code, path)?;\n    let compile_opts = CompileOpts::default();\n    let diagnostics_cfg = DiagnosticsConfig { unused_definition: Severity::Allow, ..Default::default() };\n\n    let res = compile_book(&mut book, compile_opts, diagnostics_cfg, None)?;\n    Ok(format!(\"{}{}\", res.diagnostics, hvm_book_show_pretty(&res.hvm_book)))\n  })\n}\n\n/// Compiles a file with `-Oall` option.\n#[test]\nfn compile_file_o_all() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let mut book = parse_book_single_file(code, path)?;\n    let opts = CompileOpts::default().set_all();\n    let diagnostics_cfg = DiagnosticsConfig {\n      recursion_cycle: Severity::Warning,\n      unused_definition: Severity::Allow,\n      ..Default::default()\n    };\n\n    let res = compile_book(&mut book, opts, diagnostics_cfg, None)?;\n    Ok(format!(\"{}{}\", res.diagnostics, hvm_book_show_pretty(&res.hvm_book)))\n  })\n}\n\n/// Compiles a file with `-Ono-all` option.\n#[test]\nfn compile_file_o_no_all() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let mut book = parse_book_single_file(code, path)?;\n    let compile_opts = CompileOpts::default().set_no_all();\n    let diagnostics_cfg = DiagnosticsConfig::default();\n    let res = compile_book(&mut book, compile_opts, diagnostics_cfg, None)?;\n    Ok(hvm_book_show_pretty(&res.hvm_book).to_string())\n  })\n}\n\n/// Runs a file, but with linear readback enabled.\n#[test]\nfn linear_readback() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let _guard = RUN_MUTEX.lock().unwrap();\n    let book = parse_book_single_file(code, path)?;\n    let compile_opts = CompileOpts::default().set_all();\n    let diagnostics_cfg = DiagnosticsConfig::default();\n    let (term, _, diags) = run_book(\n      book,\n      RunOpts { linear_readback: true, ..Default::default() },\n      compile_opts,\n      diagnostics_cfg,\n      None,\n      \"run\",\n    )?\n    .unwrap();\n    let res = format!(\"{diags}{term}\");\n    Ok(res)\n  });\n}\n\n/// Runs a file with regular compilation options, but rejecting all warnings.\n/// Runs once for each ADT encoding.\n#[test]\nfn run_file() {\n  run_golden_test_dir_multiple(\n    function_name!(),\n    &[(&|code, path| {\n      let _guard = RUN_MUTEX.lock().unwrap();\n      let book = parse_book_single_file(code, path)?;\n      let diagnostics_cfg = DiagnosticsConfig {\n        unused_definition: Severity::Allow,\n        ..DiagnosticsConfig::new(Severity::Error, true)\n      };\n      let run_opts = RunOpts::default();\n\n      let mut res = String::new();\n\n      for adt_encoding in [AdtEncoding::NumScott, AdtEncoding::Scott] {\n        let compile_opts = CompileOpts { adt_encoding, ..CompileOpts::default() };\n        let (term, _, diags) =\n          run_book(book.clone(), run_opts.clone(), compile_opts, diagnostics_cfg, None, \"run\")?.unwrap();\n        res.push_str(&format!(\"{adt_encoding}:\\n{diags}{term}\\n\\n\"));\n      }\n      Ok(res)\n    })],\n  )\n}\n\n/// Runs bend programs, all sharing a common lib to test the import system.\n#[test]\nfn import_system() {\n  run_golden_test_dir_multiple(\n    function_name!(),\n    &[(&|code, path| {\n      let _guard = RUN_MUTEX.lock().unwrap();\n      let diagnostics_cfg = DiagnosticsConfig {\n        unused_definition: Severity::Allow,\n        ..DiagnosticsConfig::new(Severity::Error, true)\n      };\n\n      let book = load_to_book(path, code, DefaultLoader::new(path), diagnostics_cfg)?;\n      let run_opts = RunOpts::default();\n\n      let mut res = String::new();\n\n      let compile_opts = CompileOpts::default();\n      let (term, _, diags) = run_book(book, run_opts, compile_opts, diagnostics_cfg, None, \"run\")?.unwrap();\n      res.push_str(&format!(\"{diags}{term}\\n\\n\"));\n      Ok(res)\n    })],\n  )\n}\n\n/// Reads back an HVM net.\n#[test]\nfn readback_hvm() {\n  run_golden_test_dir(function_name!(), &|code, _| {\n    let mut p = hvm::ast::CoreParser::new(code);\n    let net = p.parse_net()?;\n    let book = Book::default();\n    let compat_net = hvm_to_net(&net);\n    let mut diags = Diagnostics::default();\n    let term = net_to_term(&compat_net, &book, &Labels::default(), false, &mut diags);\n    Ok(format!(\"{}{}\", diags, term))\n  })\n}\n\n/// Runs compilation up to fixing, simplifying and linearizing matches.\n#[test]\nfn simplify_matches() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let diagnostics_cfg = DiagnosticsConfig {\n      unused_definition: Severity::Allow,\n      irrefutable_match: Severity::Warning,\n      unreachable_match: Severity::Warning,\n      ..DiagnosticsConfig::new(Severity::Error, true)\n    };\n    let mut book = parse_book_single_file(code, path)?;\n    let mut ctx = Ctx::new(&mut book, diagnostics_cfg);\n\n    ctx.check_shared_names();\n    ctx.book.encode_adts(AdtEncoding::NumScott);\n    ctx.fix_match_defs()?;\n    ctx.desugar_open()?;\n    ctx.book.encode_builtins();\n    ctx.resolve_refs()?;\n    ctx.resolve_type_ctrs()?;\n    ctx.desugar_match_defs()?;\n    ctx.fix_match_terms()?;\n    ctx.book.lift_local_defs();\n    ctx.desugar_bend()?;\n    ctx.desugar_fold()?;\n    ctx.desugar_with_blocks()?;\n    ctx.check_unbound_vars()?;\n    ctx.book.make_var_names_unique();\n    ctx.book.desugar_use();\n    ctx.book.linearize_match_binds();\n    ctx.book.linearize_match_with();\n    ctx.check_unbound_vars()?;\n    ctx.book.make_var_names_unique();\n    ctx.book.desugar_use();\n    ctx.book.make_var_names_unique();\n    ctx.prune(false);\n\n    Ok(format!(\"{}\\n{}\", ctx.book, ctx.info))\n  })\n}\n\n/// Runs compilation up to encoding `match` terms as lambdas.\n#[test]\nfn encode_pattern_match() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let mut result = String::new();\n    for adt_encoding in [AdtEncoding::Scott, AdtEncoding::NumScott] {\n      let diagnostics_cfg = DiagnosticsConfig::default();\n      let mut book = parse_book_single_file(code, path)?;\n      let mut ctx = Ctx::new(&mut book, diagnostics_cfg);\n      ctx.check_shared_names();\n      ctx.book.encode_adts(adt_encoding);\n      ctx.fix_match_defs()?;\n      ctx.desugar_open()?;\n      ctx.book.encode_builtins();\n      ctx.resolve_refs()?;\n      ctx.desugar_match_defs()?;\n      ctx.fix_match_terms()?;\n      ctx.book.lift_local_defs();\n      ctx.desugar_bend()?;\n      ctx.desugar_fold()?;\n      ctx.desugar_with_blocks()?;\n      ctx.check_unbound_vars()?;\n      ctx.book.make_var_names_unique();\n      ctx.book.desugar_use();\n      ctx.book.linearize_match_binds();\n      ctx.book.linearize_match_with();\n      ctx.book.encode_matches(adt_encoding);\n      ctx.check_unbound_vars()?;\n      ctx.book.make_var_names_unique();\n      ctx.book.desugar_use();\n      ctx.book.make_var_names_unique();\n      ctx.book.linearize_vars();\n      ctx.prune(false);\n\n      writeln!(result, \"{adt_encoding}\\n{}\\n\", ctx.book).unwrap();\n    }\n    Ok(result)\n  })\n}\n\n/// Parses a file, but does not desugar or compile it.\n#[test]\nfn parse_file() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let mut book = parse_book_single_file(code, path)?;\n    let mut ctx = Ctx::new(&mut book, Default::default());\n    ctx.set_entrypoint();\n    ctx.book.encode_adts(AdtEncoding::NumScott);\n    ctx.book.encode_builtins();\n    ctx.resolve_refs().expect(\"Resolve refs\");\n    ctx.prune(false);\n    Ok(book.to_string())\n  })\n}\n\n/// Runs the check command on a file.\n#[test]\nfn check_file() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let compile_opts = CompileOpts::default();\n    let diagnostics_cfg = DiagnosticsConfig {\n      unused_definition: Severity::Allow,\n      ..DiagnosticsConfig::new(Severity::Error, true)\n    };\n    let mut book = parse_book_single_file(code, path)?;\n    check_book(&mut book, diagnostics_cfg, compile_opts)?;\n    Ok(book.to_string())\n  })\n}\n\n/// Runs compilation up to the last term-level pass (`bend desugar` command).\n#[test]\nfn desugar_file() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let compile_opts = CompileOpts::default();\n    let diagnostics_cfg = DiagnosticsConfig {\n      unused_definition: Severity::Allow,\n      ..DiagnosticsConfig::new(Severity::Error, true)\n    };\n    let mut book = parse_book_single_file(code, path)?;\n    desugar_book(&mut book, compile_opts, diagnostics_cfg, None)?;\n    Ok(book.to_string())\n  })\n}\n\n/// Runs a file that is expected to hang.\n#[test]\n#[ignore = \"bug - the subprocess created by run_book leaks\"]\nfn hangs() {\n  let expected_normalization_time = 5;\n\n  run_golden_test_dir(function_name!(), &move |code, path| {\n    let _guard = RUN_MUTEX.lock().unwrap();\n    let book = parse_book_single_file(code, path)?;\n    let compile_opts = CompileOpts::default().set_all();\n    let diagnostics_cfg = DiagnosticsConfig::new(Severity::Allow, false);\n\n    let thread = std::thread::spawn(move || {\n      run_book(book, RunOpts::default(), compile_opts, diagnostics_cfg, None, \"run\")\n    });\n    std::thread::sleep(std::time::Duration::from_secs(expected_normalization_time));\n\n    if !thread.is_finished() {\n      Ok(\"Hangs\".into())\n    } else if let Err(diags) = thread.join().unwrap() {\n      Err(format!(\"Doesn't hang. (Compilation failed)\\n{diags}\").into())\n    } else {\n      Err(\"Doesn't hang. (Ran to the end)\".to_string().into())\n    }\n  })\n}\n\n/// Compiles a file with a custom entrypoint.\n#[test]\nfn compile_entrypoint() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let mut book = parse_book_single_file(code, path)?;\n    book.entrypoint = Some(Name::new(\"foo\"));\n    let diagnostics_cfg = DiagnosticsConfig { ..DiagnosticsConfig::new(Severity::Error, true) };\n    let res = compile_book(&mut book, CompileOpts::default(), diagnostics_cfg, None)?;\n    Ok(format!(\"{}{}\", res.diagnostics, hvm_book_show_pretty(&res.hvm_book)))\n  })\n}\n\n/// Runs a file with a custom entrypoint.\n#[test]\n#[ignore = \"while execution with different entrypoints is not implemented for hvm32\"]\nfn run_entrypoint() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let _guard = RUN_MUTEX.lock().unwrap();\n    let mut book = parse_book_single_file(code, path)?;\n    book.entrypoint = Some(Name::new(\"foo\"));\n    let compile_opts = CompileOpts::default().set_all();\n    let diagnostics_cfg = DiagnosticsConfig { ..DiagnosticsConfig::new(Severity::Error, true) };\n    let (term, _, diags) =\n      run_book(book, RunOpts::default(), compile_opts, diagnostics_cfg, None, \"run\")?.unwrap();\n    let res = format!(\"{diags}{term}\");\n    Ok(res)\n  })\n}\n\n/// Runs a Bend CLI command.\n#[test]\nfn cli() {\n  run_golden_test_dir(function_name!(), &|_code, path| {\n    let _guard = RUN_MUTEX.lock().unwrap();\n    let mut args_path = PathBuf::from(path);\n    assert!(args_path.set_extension(\"args\"));\n\n    let mut args_buf = String::with_capacity(16);\n    let mut args_file = std::fs::File::open(args_path).expect(\"File exists\");\n    args_file.read_to_string(&mut args_buf).expect(\"Read args\");\n    let args = args_buf.lines();\n\n    let output =\n      std::process::Command::new(env!(\"CARGO_BIN_EXE_bend\")).args(args).output().expect(\"Run command\");\n    let res =\n      format!(\"{}{}\", String::from_utf8_lossy(&output.stderr), String::from_utf8_lossy(&output.stdout));\n    Ok(res)\n  })\n}\n\n/// Compiles a file to check for mutual recursion.\n#[test]\nfn mutual_recursion() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let diagnostics_cfg =\n      DiagnosticsConfig { recursion_cycle: Severity::Error, ..DiagnosticsConfig::new(Severity::Allow, true) };\n    let mut book = parse_book_single_file(code, path)?;\n    let opts = CompileOpts { merge: true, ..CompileOpts::default() };\n    let res = compile_book(&mut book, opts, diagnostics_cfg, None)?;\n    Ok(format!(\"{}{}\", res.diagnostics, hvm_book_show_pretty(&res.hvm_book)))\n  })\n}\n\n/// Runs a file that uses IO.\n#[test]\nfn io() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let _guard = RUN_MUTEX.lock().unwrap();\n    let book = parse_book_single_file(code, path)?;\n    let compile_opts = CompileOpts::default();\n    let diagnostics_cfg = DiagnosticsConfig::default();\n    let (term, _, diags) =\n      run_book(book, RunOpts::default(), compile_opts, diagnostics_cfg, None, \"run-c\")?.unwrap();\n    let res = format!(\"{diags}{term}\");\n    Ok(format!(\"Strict mode:\\n{res}\"))\n  })\n}\n\n/// Runs a file that uses the prelude.\n#[test]\nfn prelude() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let _guard = RUN_MUTEX.lock().unwrap();\n    let book = parse_book_single_file(code, path)?;\n    let compile_opts = CompileOpts::default();\n    let diagnostics_cfg = DiagnosticsConfig::new(Severity::Error, true);\n    let (term, _, diags) =\n      run_book(book, RunOpts::default(), compile_opts, diagnostics_cfg, None, \"run-c\")?.unwrap();\n    let res = format!(\"{diags}{term}\");\n    Ok(format!(\"Strict mode:\\n{res}\"))\n  })\n}\n\n/// Runs all examples in the examples folder.\n#[test]\nfn examples() -> Result<(), Diagnostics> {\n  let examples_path = PathBuf::from(env!(\"CARGO_MANIFEST_DIR\")).join(\"examples\");\n\n  for entry in WalkDir::new(examples_path)\n    .min_depth(1)\n    .into_iter()\n    .filter_map(|e| e.ok())\n    .filter(|e| e.path().extension().map_or(false, |ext| ext == \"bend\"))\n  {\n    let _guard = RUN_MUTEX.lock().unwrap_or_else(|e| e.into_inner());\n    let path = entry.path();\n    eprintln!(\"Testing {}\", path.display());\n    let code = std::fs::read_to_string(path).map_err(|e| e.to_string())?;\n\n    let book = parse_book_single_file(&code, path).unwrap();\n    let compile_opts = CompileOpts::default();\n    let diagnostics_cfg = DiagnosticsConfig::default();\n    let (term, _, diags) =\n      run_book(book, RunOpts::default(), compile_opts, diagnostics_cfg, None, \"run-c\")?.unwrap();\n    let res = format!(\"{diags}{term}\");\n\n    let mut settings = insta::Settings::clone_current();\n    settings.set_prepend_module_to_snapshot(false);\n    settings.set_omit_expression(true);\n    settings.set_input_file(path);\n\n    settings.bind(|| {\n      assert_snapshot!(format!(\"examples__{}\", path.file_name().unwrap().to_str().unwrap()), res);\n    });\n  }\n\n  Ok(())\n}\n\n/// Test that the Scott encoding correctly triggers unused definition warnings.\n#[test]\nfn scott_triggers_unused() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let mut book = parse_book_single_file(code, path)?;\n    let opts = CompileOpts::default();\n    let diagnostics_cfg =\n      DiagnosticsConfig { unused_definition: Severity::Error, ..DiagnosticsConfig::default() };\n    let res = compile_book(&mut book, opts, diagnostics_cfg, None)?;\n    Ok(format!(\"{}{}\", res.diagnostics, hvm_book_show_pretty(&res.hvm_book)))\n  })\n}\n\n// TODO: also run the long string file to test the readback\n/// Compiles a file that is very large and takes a long time to compile.\n/// Only outputs if compilation worked without errors.\n#[test]\nfn compile_long() {\n  run_golden_test_dir(function_name!(), &|code, path| {\n    let mut book = parse_book_single_file(code, path)?;\n    let opts = CompileOpts::default().set_all();\n    let diagnostics_cfg = DiagnosticsConfig {\n      recursion_cycle: Severity::Warning,\n      unused_definition: Severity::Allow,\n      ..Default::default()\n    };\n\n    compile_book(&mut book, opts.clone(), diagnostics_cfg, None)?;\n    Ok(\"Compiled\".to_string())\n  })\n}\n"
  },
  {
    "path": "tests/snapshots/check_file__fail_type_bad_rec_fn_adt.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/check_file/fail_type_bad_rec_fn_adt.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nIn λa match a { Box/Box b: (Erase b); }:\n  Can't unify '(Unit -> d)' and '(Box -> d)'.\n"
  },
  {
    "path": "tests/snapshots/check_file__non_exaustive_limit.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/check_file/non_exaustive_limit.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/check_file/non_exaustive_limit.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mBar\u001b[0m\u001b[1m':\u001b[0m\n  Non-exhaustive pattern matching rule. Constructor 'Foo/B' of type 'Foo' not covered\n"
  },
  {
    "path": "tests/snapshots/check_file__type_err_match_arm.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/check_file/type_err_match_arm.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/check_file/type_err_match_arm.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mTest1\u001b[0m\u001b[1m':\u001b[0m\n  In (Nat_/Zero, Nat_/Zero):\n  Can't unify '(Nat_, Nat_)' and '(Unit, Nat_)'.\n"
  },
  {
    "path": "tests/snapshots/cli__compile_all.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/compile_all.bend\n---\n@Pair.get = (a ((@Pair.get__C1 (a b)) b))\n\n@Pair.get__C0 = (a (b ((a (b c)) c)))\n\n@Pair.get__C1 = (?((@Pair.get__C0 *) a) a)\n\n@Pair/Pair = (a (b ((0 (a (b c))) c)))\n\n@main = d\n  & @Pair.get ~ (($([+] $(a b)) (a b)) (c d))\n  & @Pair/Pair ~ (40 (2 c))\n"
  },
  {
    "path": "tests/snapshots/cli__compile_inline.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/compile_inline.bend\n---\n@Era = *\n\n@Num = 42\n\n@RefToRef = *\n\n@main = a\n  & * ~ (42 (* a))\n"
  },
  {
    "path": "tests/snapshots/cli__compile_no_opts.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/compile_no_opts.bend\n---\n@main = *\n"
  },
  {
    "path": "tests/snapshots/cli__compile_pre_reduce.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/compile_pre_reduce.bend\n---\nerror: invalid value 'pre-reduce' for '-O <COMP_OPTS>'\n  [possible values: all, no-all, eta, no-eta, prune, no-prune, linearize-matches, linearize-matches-alt, no-linearize-matches, float-combinators, no-float-combinators, merge, no-merge, inline, no-inline, check-net-size, no-check-net-size, adt-scott, adt-num-scott, type-check, no-type-check]\n\nFor more information, try '--help'.\n"
  },
  {
    "path": "tests/snapshots/cli__compile_strict_loop.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/compile_strict_loop.bend\n---\n@A = (((?((0 (* (* (a b)))) c) c) d) d)\n  & @A ~ (a b)\n\n@List/Cons = (a (b ((@List/Cons/tag (a (b c))) c)))\n\n@List/Cons/tag = 1\n\n@List/Nil = ((@List/Nil/tag a) a)\n\n@List/Nil/tag = 0\n\n@main = c\n  & @A ~ (b c)\n  & @List/Cons ~ (4 (a b))\n  & @List/Cons ~ (4 (@List/Nil a))\n"
  },
  {
    "path": "tests/snapshots/cli__compile_wrong_opt.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/compile_wrong_opt.bend\n---\nerror: invalid value 'foo' for '-O <COMP_OPTS>'\n  [possible values: all, no-all, eta, no-eta, prune, no-prune, linearize-matches, linearize-matches-alt, no-linearize-matches, float-combinators, no-float-combinators, merge, no-merge, inline, no-inline, check-net-size, no-check-net-size, adt-scott, adt-num-scott, type-check, no-type-check]\n\n  tip: a similar value exists: 'float-combinators'\n\nFor more information, try '--help'.\n"
  },
  {
    "path": "tests/snapshots/cli__custom_hvm_bin.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/custom_hvm_bin.bend\n---\nResult: λa a\n"
  },
  {
    "path": "tests/snapshots/cli__debug_list_map.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/debug_list_map.bend\n---\nerror: unexpected argument '-d' found\n\n  tip: to pass '-d' as a value, use '-- -d'\n\nUsage: bend run-c [OPTIONS] <PATH> [ARGUMENTS]...\n\nFor more information, try '--help'.\n"
  },
  {
    "path": "tests/snapshots/cli__debug_u60_to_nat.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/debug_u60_to_nat.bend\n---\nerror: unexpected argument '-d' found\n\n  tip: to pass '-d' as a value, use '-- -d'\n\nUsage: bend run-c [OPTIONS] <PATH> [ARGUMENTS]...\n\nFor more information, try '--help'.\n"
  },
  {
    "path": "tests/snapshots/cli__desugar_bool_scott.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/desugar_bool_scott.bend\n---\nunchecked main: Any\n(main) = λa λ* a\n\nBoolean/True: Boolean\n(Boolean/True) = λa λ* a\n\nBoolean/False: Boolean\n(Boolean/False) = λ* λa a\n"
  },
  {
    "path": "tests/snapshots/cli__desugar_float_combinators.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/desugar_float_combinators.bend\n---\nunchecked Z: Any\n(Z) = λ* λa a\n\nunchecked S: Any\n(S) = λa λb let {c d} = b; λe (c (a d e))\n\nunchecked get: Any\n(get) = λa (a get__C0 0)\n\nunchecked main: Any\n(main) = (get (S (S Z)))\n\nunchecked get__C0: _\n(get__C0) = λa (+ a 1)\n"
  },
  {
    "path": "tests/snapshots/cli__desugar_linearize_matches.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/desugar_linearize_matches.bend\n---\nunchecked main: Any\n(main) = λa λb λc (switch a { 0: λd λ* d; _: λ* λ* λe e; } b c)\n"
  },
  {
    "path": "tests/snapshots/cli__desugar_linearize_matches_alt.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/desugar_linearize_matches_alt.bend\n---\nunchecked main: Any\n(main) = λa switch a { 0: λb b; _: λ* λc c; }\n"
  },
  {
    "path": "tests/snapshots/cli__desugar_merge.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/desugar_merge.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/cli/desugar_merge.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mZ\u001b[0m\u001b[1m':\u001b[0m\n  Definition is unused.\n\nunchecked F__M_Z: _\n(F__M_Z) = λ* λa a\n\nunchecked main: Any\n(main) = λ* λa a\n"
  },
  {
    "path": "tests/snapshots/cli__desugar_pretty.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/desugar_pretty.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/cli/desugar_pretty.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Definition is unused.\n\n(Foo) =\n  λa λb let (c, d) = a;\n  let (e, f) = b;\n  (+ (+ c d) (+ e f))\n\n(main) =\n  λpat%a let (a, b) = pat%a;\n  λpat%b let {c d *} = pat%b;\n  (+ (+ a b) (+ c d))\n"
  },
  {
    "path": "tests/snapshots/cli__desugar_prune.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/desugar_prune.bend\n---\nunchecked main: Any\n(main) = *\n"
  },
  {
    "path": "tests/snapshots/cli__gen_hvm_no_eta_by_default.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/gen_hvm_no_eta_by_default.bend\n---\n@main = a\n  & @make_10 ~ (1 a)\n\n@make_10 = (a b)\n  & @make_list ~ (10 (a b))\n\n@make_list = (?(((* (a a)) @make_list__C0) (b c)) (b c))\n\n@make_list__C0 = (b ({a c} ((a (d e)) e)))\n  & @make_list ~ (b (c d))\n"
  },
  {
    "path": "tests/snapshots/cli__input_file_not_found.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/input_file_not_found.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nThe file 'tests/golden_tests/missing_dir/input_file_not_found.bend' was not found.\n"
  },
  {
    "path": "tests/snapshots/cli__net_size_too_large.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/net_size_too_large.bend\n---\n@Arr/Leaf = (a ((@Arr/Leaf/tag (a b)) b))\n\n@Arr/Leaf/tag = 1\n\n@Arr/Node = (a (b ((@Arr/Node/tag (a (b c))) c)))\n\n@Arr/Node/tag = 2\n\n@Arr/Null = ((@Arr/Null/tag a) a)\n\n@Arr/Null/tag = 0\n\n@Gen = (a b)\n  & @Gen.go ~ (a (0 b))\n\n@Gen.go = (?((@Gen.go__C0 @Gen.go__C1) (a b)) (a b))\n\n@Gen.go__C0 = (a b)\n  & @Arr/Leaf ~ (a b)\n\n@Gen.go__C1 = ({a d} ({$([*0x0000002] $([|0x0000001] e)) $([*0x0000002] b)} g))\n  & @Arr/Node ~ (c (f g))\n  &!@Gen.go ~ (a (b c))\n  &!@Gen.go ~ (d (e f))\n\n@Map_/Both = (a (b ((@Map_/Both/tag (a (b c))) c)))\n\n@Map_/Both/tag = 2\n\n@Map_/Free = ((@Map_/Free/tag a) a)\n\n@Map_/Free/tag = 0\n\n@Map_/Used = ((@Map_/Used/tag a) a)\n\n@Map_/Used/tag = 1\n\n@Merge = ((@Merge__C13 (a b)) (a b))\n\n@Merge__C0 = (* (a (b c)))\n  & @Map_/Both ~ (a (b c))\n\n@Merge__C1 = (?((@Map_/Used @Merge__C0) a) a)\n\n@Merge__C10 = (* (a (b ((@Merge__C8 (a (b c))) c))))\n\n@Merge__C11 = ((@Merge__C2 a) a)\n\n@Merge__C12 = (?((@Merge__C9 @Merge__C10) a) a)\n\n@Merge__C13 = (?((@Merge__C11 @Merge__C12) a) a)\n\n@Merge__C2 = (?((@Map_/Free @Merge__C1) a) a)\n\n@Merge__C3 = (?((@Map_/Used (* (* (* *)))) a) a)\n\n@Merge__C4 = (?((@Map_/Used @Merge__C3) a) a)\n\n@Merge__C5 = (* (b (e (a (d g)))))\n  & @Map_/Both ~ (c (f g))\n  &!@Merge ~ (a (b c))\n  &!@Merge ~ (d (e f))\n\n@Merge__C6 = (a (b c))\n  & @Map_/Both ~ (a (b c))\n\n@Merge__C7 = (?(((* (* *)) @Merge__C5) a) a)\n\n@Merge__C8 = (?((@Merge__C6 @Merge__C7) a) a)\n\n@Merge__C9 = ((@Merge__C4 a) a)\n\n@Radix = ({$([&0x0800000] a) {$([&0x0400000] b) {$([&0x0200000] c) {$([&0x0100000] d) {$([&0x0080000] e) {$([&0x0040000] f) {$([&0x0020000] g) {$([&0x0010000] h) {$([&0x0008000] i) {$([&0x0004000] j) {$([&0x0002000] k) {$([&0x0001000] l) {$([&0x0000800] m) {$([&0x0000400] n) {$([&0x0000200] o) {$([&0x0000100] p) {$([&0x0000080] q) {$([&0x0000040] r) {$([&0x0000020] s) {$([&0x0000010] t) {$([&0x0000008] u) {$([&0x0000004] v) {$([&0x0000002] w) $([&0x0000001] x)}}}}}}}}}}}}}}}}}}}}}}} vb)\n  & @Swap ~ (a (ub (@Map_/Free vb)))\n  & @Swap ~ (b (tb (@Map_/Free ub)))\n  & @Swap ~ (c (sb (@Map_/Free tb)))\n  & @Swap ~ (d (rb (@Map_/Free sb)))\n  & @Swap ~ (e (qb (@Map_/Free rb)))\n  & @Swap ~ (f (pb (@Map_/Free qb)))\n  & @Swap ~ (g (ob (@Map_/Free pb)))\n  & @Swap ~ (h (nb (@Map_/Free ob)))\n  & @Swap ~ (i (mb (@Map_/Free nb)))\n  & @Swap ~ (j (lb (@Map_/Free mb)))\n  & @Swap ~ (k (kb (@Map_/Free lb)))\n  & @Swap ~ (l (jb (@Map_/Free kb)))\n  & @Swap ~ (m (ib (@Map_/Free jb)))\n  & @Swap ~ (n (hb (@Map_/Free ib)))\n  & @Swap ~ (o (gb (@Map_/Free hb)))\n  & @Swap ~ (p (fb (@Map_/Free gb)))\n  & @Swap ~ (q (eb (@Map_/Free fb)))\n  & @Swap ~ (r (db (@Map_/Free eb)))\n  & @Swap ~ (s (cb (@Map_/Free db)))\n  & @Swap ~ (t (bb (@Map_/Free cb)))\n  & @Swap ~ (u (ab (@Map_/Free bb)))\n  & @Swap ~ (v (z (@Map_/Free ab)))\n  & @Swap ~ (w (y (@Map_/Free z)))\n  & @Swap ~ (x (@Map_/Used (@Map_/Free y)))\n\n@Reverse = ((@Reverse__C3 a) a)\n\n@Reverse__C0 = (a b)\n  & @Arr/Leaf ~ (a b)\n\n@Reverse__C1 = (* (c (a e)))\n  & @Arr/Node ~ (b (d e))\n  &!@Reverse ~ (a b)\n  &!@Reverse ~ (c d)\n\n@Reverse__C2 = (?((@Reverse__C0 @Reverse__C1) a) a)\n\n@Reverse__C3 = (?((@Arr/Null @Reverse__C2) a) a)\n\n@Sort = (a c)\n  & @ToArr ~ (0 (b c))\n  & @ToMap ~ (a b)\n\n@Sum = ((@Sum__C2 a) a)\n\n@Sum__C0 = (* (a (b d)))\n  &!@Sum ~ (a $([+] $(c d)))\n  &!@Sum ~ (b c)\n\n@Sum__C1 = (?(((a a) @Sum__C0) b) b)\n\n@Sum__C2 = (?((0 @Sum__C1) a) a)\n\n@Swap = (?((@Swap__C0 @Swap__C1) (a (b c))) (a (b c)))\n\n@Swap__C0 = (a (b c))\n  & @Map_/Both ~ (a (b c))\n\n@Swap__C1 = (* (b (a c)))\n  & @Map_/Both ~ (a (b c))\n\n@ToArr = (a ((@ToArr__C3 (a b)) b))\n\n@ToArr__C0 = (a b)\n  & @Arr/Leaf ~ (a b)\n\n@ToArr__C1 = (* (b (e ({$([*0x0000002] $([+0x0000001] d)) $([*0x0000002] $([+0x0000000] a))} g))))\n  & @Arr/Node ~ (c (f g))\n  &!@ToArr ~ (a (b c))\n  &!@ToArr ~ (d (e f))\n\n@ToArr__C2 = (?((@ToArr__C0 @ToArr__C1) a) a)\n\n@ToArr__C3 = (?(((* @Arr/Null) @ToArr__C2) a) a)\n\n@ToMap = ((@ToMap__C3 a) a)\n\n@ToMap__C0 = (a b)\n  & @Radix ~ (a b)\n\n@ToMap__C1 = (* (a (c e)))\n  & @Merge ~ (b (d e))\n  &!@ToMap ~ (a b)\n  &!@ToMap ~ (c d)\n\n@ToMap__C2 = (?((@ToMap__C0 @ToMap__C1) a) a)\n\n@ToMap__C3 = (?((@Map_/Free @ToMap__C2) a) a)\n\n@main = d\n  & @Sum ~ (c d)\n  & @Sort ~ (b c)\n  & @Reverse ~ (a b)\n  & @Gen ~ (4 a)\n"
  },
  {
    "path": "tests/snapshots/cli__no_check_net_size.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/no_check_net_size.bend\n---\n@Arr/Leaf = (a ((@Arr/Leaf/tag (a b)) b))\n\n@Arr/Leaf/tag = 1\n\n@Arr/Node = (a (b ((@Arr/Node/tag (a (b c))) c)))\n\n@Arr/Node/tag = 2\n\n@Arr/Null = ((@Arr/Null/tag a) a)\n\n@Arr/Null/tag = 0\n\n@Gen = (a b)\n  & @Gen.go ~ (a (0 b))\n\n@Gen.go = (?((@Gen.go__C0 @Gen.go__C1) (a b)) (a b))\n\n@Gen.go__C0 = (a b)\n  & @Arr/Leaf ~ (a b)\n\n@Gen.go__C1 = ({a d} ({$([*0x0000002] $([|0x0000001] e)) $([*0x0000002] b)} g))\n  & @Arr/Node ~ (c (f g))\n  &!@Gen.go ~ (a (b c))\n  &!@Gen.go ~ (d (e f))\n\n@Map_/Both = (a (b ((@Map_/Both/tag (a (b c))) c)))\n\n@Map_/Both/tag = 2\n\n@Map_/Free = ((@Map_/Free/tag a) a)\n\n@Map_/Free/tag = 0\n\n@Map_/Used = ((@Map_/Used/tag a) a)\n\n@Map_/Used/tag = 1\n\n@Merge = ((@Merge__C13 (a b)) (a b))\n\n@Merge__C0 = (* (a (b c)))\n  & @Map_/Both ~ (a (b c))\n\n@Merge__C1 = (?((@Map_/Used @Merge__C0) a) a)\n\n@Merge__C10 = (* (a (b ((@Merge__C8 (a (b c))) c))))\n\n@Merge__C11 = ((@Merge__C2 a) a)\n\n@Merge__C12 = (?((@Merge__C9 @Merge__C10) a) a)\n\n@Merge__C13 = (?((@Merge__C11 @Merge__C12) a) a)\n\n@Merge__C2 = (?((@Map_/Free @Merge__C1) a) a)\n\n@Merge__C3 = (?((@Map_/Used (* (* (* *)))) a) a)\n\n@Merge__C4 = (?((@Map_/Used @Merge__C3) a) a)\n\n@Merge__C5 = (* (b (e (a (d g)))))\n  & @Map_/Both ~ (c (f g))\n  &!@Merge ~ (a (b c))\n  &!@Merge ~ (d (e f))\n\n@Merge__C6 = (a (b c))\n  & @Map_/Both ~ (a (b c))\n\n@Merge__C7 = (?(((* (* *)) @Merge__C5) a) a)\n\n@Merge__C8 = (?((@Merge__C6 @Merge__C7) a) a)\n\n@Merge__C9 = ((@Merge__C4 a) a)\n\n@Radix = ({$([&0x0800000] a) {$([&0x0400000] b) {$([&0x0200000] c) {$([&0x0100000] d) {$([&0x0080000] e) {$([&0x0040000] f) {$([&0x0020000] g) {$([&0x0010000] h) {$([&0x0008000] i) {$([&0x0004000] j) {$([&0x0002000] k) {$([&0x0001000] l) {$([&0x0000800] m) {$([&0x0000400] n) {$([&0x0000200] o) {$([&0x0000100] p) {$([&0x0000080] q) {$([&0x0000040] r) {$([&0x0000020] s) {$([&0x0000010] t) {$([&0x0000008] u) {$([&0x0000004] v) {$([&0x0000002] w) $([&0x0000001] x)}}}}}}}}}}}}}}}}}}}}}}} vb)\n  & @Swap ~ (a (ub (@Map_/Free vb)))\n  & @Swap ~ (b (tb (@Map_/Free ub)))\n  & @Swap ~ (c (sb (@Map_/Free tb)))\n  & @Swap ~ (d (rb (@Map_/Free sb)))\n  & @Swap ~ (e (qb (@Map_/Free rb)))\n  & @Swap ~ (f (pb (@Map_/Free qb)))\n  & @Swap ~ (g (ob (@Map_/Free pb)))\n  & @Swap ~ (h (nb (@Map_/Free ob)))\n  & @Swap ~ (i (mb (@Map_/Free nb)))\n  & @Swap ~ (j (lb (@Map_/Free mb)))\n  & @Swap ~ (k (kb (@Map_/Free lb)))\n  & @Swap ~ (l (jb (@Map_/Free kb)))\n  & @Swap ~ (m (ib (@Map_/Free jb)))\n  & @Swap ~ (n (hb (@Map_/Free ib)))\n  & @Swap ~ (o (gb (@Map_/Free hb)))\n  & @Swap ~ (p (fb (@Map_/Free gb)))\n  & @Swap ~ (q (eb (@Map_/Free fb)))\n  & @Swap ~ (r (db (@Map_/Free eb)))\n  & @Swap ~ (s (cb (@Map_/Free db)))\n  & @Swap ~ (t (bb (@Map_/Free cb)))\n  & @Swap ~ (u (ab (@Map_/Free bb)))\n  & @Swap ~ (v (z (@Map_/Free ab)))\n  & @Swap ~ (w (y (@Map_/Free z)))\n  & @Swap ~ (x (@Map_/Used (@Map_/Free y)))\n\n@Reverse = ((@Reverse__C3 a) a)\n\n@Reverse__C0 = (a b)\n  & @Arr/Leaf ~ (a b)\n\n@Reverse__C1 = (* (c (a e)))\n  & @Arr/Node ~ (b (d e))\n  &!@Reverse ~ (a b)\n  &!@Reverse ~ (c d)\n\n@Reverse__C2 = (?((@Reverse__C0 @Reverse__C1) a) a)\n\n@Reverse__C3 = (?((@Arr/Null @Reverse__C2) a) a)\n\n@Sort = (a c)\n  & @ToArr ~ (0 (b c))\n  & @ToMap ~ (a b)\n\n@Sum = ((@Sum__C2 a) a)\n\n@Sum__C0 = (* (a (b d)))\n  &!@Sum ~ (a $([+] $(c d)))\n  &!@Sum ~ (b c)\n\n@Sum__C1 = (?(((a a) @Sum__C0) b) b)\n\n@Sum__C2 = (?((0 @Sum__C1) a) a)\n\n@Swap = (?((@Swap__C0 @Swap__C1) (a (b c))) (a (b c)))\n\n@Swap__C0 = (a (b c))\n  & @Map_/Both ~ (a (b c))\n\n@Swap__C1 = (* (b (a c)))\n  & @Map_/Both ~ (a (b c))\n\n@ToArr = (a ((@ToArr__C3 (a b)) b))\n\n@ToArr__C0 = (a b)\n  & @Arr/Leaf ~ (a b)\n\n@ToArr__C1 = (* (b (e ({$([*0x0000002] $([+0x0000001] d)) $([*0x0000002] $([+0x0000000] a))} g))))\n  & @Arr/Node ~ (c (f g))\n  &!@ToArr ~ (a (b c))\n  &!@ToArr ~ (d (e f))\n\n@ToArr__C2 = (?((@ToArr__C0 @ToArr__C1) a) a)\n\n@ToArr__C3 = (?(((* @Arr/Null) @ToArr__C2) a) a)\n\n@ToMap = ((@ToMap__C3 a) a)\n\n@ToMap__C0 = (a b)\n  & @Radix ~ (a b)\n\n@ToMap__C1 = (* (a (c e)))\n  & @Merge ~ (b (d e))\n  &!@ToMap ~ (a b)\n  &!@ToMap ~ (c d)\n\n@ToMap__C2 = (?((@ToMap__C0 @ToMap__C1) a) a)\n\n@ToMap__C3 = (?((@Map_/Free @ToMap__C2) a) a)\n\n@main = d\n  & @Sum ~ (c d)\n  & @Sort ~ (b c)\n  & @Reverse ~ (a b)\n  & @Gen ~ (4 a)\n"
  },
  {
    "path": "tests/snapshots/cli__run_add.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/run_add.bend\n---\nResult: 9\n"
  },
  {
    "path": "tests/snapshots/cli__run_pretty.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/run_pretty.bend\n---\nResult:\nλa switch a = a {\n  0: λb switch b = b {\n      0: \"ba\";\n      _: \"ta\";\n    };\n  _: λ* \"ata\";\n}\n"
  },
  {
    "path": "tests/snapshots/cli__tuple_readback.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/tuple_readback.bend\n---\nWarning: Running in strict mode without enabling the float_combinators pass can lead to some functions expanding infinitely.\nResult: (λa (1, a), ((1, 2), (λ* 2, (λb λc *, (λd (2, λe $f), λg λh λi $j)))))\n"
  },
  {
    "path": "tests/snapshots/cli__warn_and_err.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/cli/warn_and_err.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/cli/warn_and_err.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Repeated bind in pattern matching rule: 'a'.\n\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/cli/warn_and_err.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mMain\u001b[0m\u001b[1m':\u001b[0m\n  Unbound variable 'a'.\n"
  },
  {
    "path": "tests/snapshots/compile_entrypoint__foo.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_entrypoint/foo.bend\n---\n@bar = (a a)\n\n@foo = a\n  & @bar ~ (2 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__360_no_scope.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/360_no_scope.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/360_no_scope.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m '='\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m   6 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__add_args.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/add_args.bend\n---\n@add = ($([+] $(a b)) (a b))\n\n@main = a\n  & @add ~ a\n"
  },
  {
    "path": "tests/snapshots/compile_file__addition.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/addition.bend\n---\n@main = c\n  & (a b) ~ (8 c)\n  & $(1 $([+] $(a b))) ~ [+0x0000001]\n"
  },
  {
    "path": "tests/snapshots/compile_file__addition_const.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/addition_const.bend\n---\n@main = a\n  & $(2 a) ~ [+0x0000001]\n"
  },
  {
    "path": "tests/snapshots/compile_file__ask_outside_do.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/ask_outside_do.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/ask_outside_do.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Monadic bind operation 'x <- ...' used outside of a `do` block.\n"
  },
  {
    "path": "tests/snapshots/compile_file__church_one.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/church_one.bend\n---\n@main = f\n  & ((a (b c)) ({(c d) a} (b d))) ~ ((* (e e)) f)\n"
  },
  {
    "path": "tests/snapshots/compile_file__church_zero.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/church_zero.bend\n---\n@main = (* (a a))\n"
  },
  {
    "path": "tests/snapshots/compile_file__complicated_dup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/complicated_dup.bend\n---\n@main = ({(a b) (d e)} f)\n  & ((c {a d}) b) ~ ((c e) f)\n"
  },
  {
    "path": "tests/snapshots/compile_file__crlf.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/crlf.bend\n---\n@a = 1\n\n@main = 2\n"
  },
  {
    "path": "tests/snapshots/compile_file__cyclic_global_lam.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/cyclic_global_lam.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn compiled inet '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Found term that compiles into an inet with a vicious cycle\n"
  },
  {
    "path": "tests/snapshots/compile_file__def_pat_unscoped.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/def_pat_unscoped.bend\n---\n@add = ($([+] $(a b)) (a b))\n\n@main = a\n  & @add ~ (9 (4 a))\n"
  },
  {
    "path": "tests/snapshots/compile_file__dup_apply.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/dup_apply.bend\n---\n@main = ({(a b) a} b)\n"
  },
  {
    "path": "tests/snapshots/compile_file__dup_global_lam.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/dup_global_lam.bend\n---\n@main = d\n  & ({(b c) b} (a a)) ~ (c d)\n"
  },
  {
    "path": "tests/snapshots/compile_file__elif.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/elif.bend\n---\n@main = j\n  & $(2 ?(((?(((?(((?((0 (* 4)) a) a) (* (* 3))) b) b) (* (* (* 2)))) d) d) (* (* (* (* 1))))) (g (h (i j))))) ~ [=0x0000001]\n  & $(1 g) ~ [<0x0000002]\n  & $(2 h) ~ [>0x0000003]\n  & $(2 i) ~ [=0x0000002]\n"
  },
  {
    "path": "tests/snapshots/compile_file__elif_fun.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/elif_fun.bend\n---\n@main = j\n  & $(2 ?(((?(((?(((?((0 (* 4)) a) a) (* (* 3))) b) b) (* (* (* 2)))) d) d) (* (* (* (* 1))))) (g (h (i j))))) ~ [=0x0000001]\n  & $(1 g) ~ [<0x0000002]\n  & $(2 h) ~ [>0x0000003]\n  & $(2 i) ~ [=0x0000002]\n"
  },
  {
    "path": "tests/snapshots/compile_file__elif_no_else.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/elif_no_else.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/elif_no_else.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m 'else' or 'elif'\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  6 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__erased_dup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/erased_dup.bend\n---\n@main = ({* a} a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__error_data_def_name.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/error_data_def_name.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/error_data_def_name.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of constructor 'A/A'.\nLocation:\n\u001b[0m  2 | \u001b[4m\u001b[31mA/A = 0\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__error_messages.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/error_messages.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/error_messages.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Unbound constructor 'C' in pattern matching rule.\n  Unbound constructor 'D' in pattern matching rule.\n\u001b[1mIn definition '\u001b[4mFoo2\u001b[0m\u001b[1m':\u001b[0m\n  Unbound constructor 'E' in pattern matching rule.\n"
  },
  {
    "path": "tests/snapshots/compile_file__f24_oper.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/f24_oper.bend\n---\n@main = b\n  & $(1.2399902 $([/] $(a b))) ~ [*0x042F830]\n  & $(-235.1211 a) ~ [+0x0000000]\n"
  },
  {
    "path": "tests/snapshots/compile_file__fst_snd.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/fst_snd.bend\n---\n@main = d\n  & ((* a) a) ~ (c d)\n  & ((b *) b) ~ (((1 3) 2) c)\n"
  },
  {
    "path": "tests/snapshots/compile_file__global_lam.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/global_lam.bend\n---\n@main = c\n  & (b (a a)) ~ (b c)\n"
  },
  {
    "path": "tests/snapshots/compile_file__i24_oper.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/i24_oper.bend\n---\n@main = b\n  & $(-1 $([*] $(a b))) ~ [+0x0000001]\n  & $(+14 a) ~ [-0x7FFFFF4]\n"
  },
  {
    "path": "tests/snapshots/compile_file__id.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/id.bend\n---\n@main = (a a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__infer_dup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/infer_dup.bend\n---\n@main = ({(a b) a} b)\n"
  },
  {
    "path": "tests/snapshots/compile_file__inlining.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/inlining.bend\n---\n@Era = *\n\n@Num = 42\n\n@RefToRef = @Era\n\n@main = a\n  & @Era ~ (@Num (@RefToRef a))\n"
  },
  {
    "path": "tests/snapshots/compile_file__just_a_name.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/just_a_name.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/just_a_name.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m pattern or '='\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m 1 | asdf\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__just_data.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/just_data.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/just_data.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m Datatype name\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m 1 | type\u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__just_paren.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/just_paren.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/just_paren.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m Function name\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  2 | (\u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__just_rule_paren.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/just_rule_paren.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/just_rule_paren.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m '='\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m 1 | (rule)\u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__let_substitution.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/let_substitution.bend\n---\n@main = ({(a b) a} b)\n"
  },
  {
    "path": "tests/snapshots/compile_file__let_tup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/let_tup.bend\n---\n@main = ((a (* a)) (* (b b)))\n"
  },
  {
    "path": "tests/snapshots/compile_file__lets.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/lets.bend\n---\n@main = o\n  & (a a) ~ (g (j (n o)))\n  & (e e) ~ *\n  & (d d) ~ {(f g) f}\n  & (c c) ~ {(h (i j)) {h i}}\n  & (b b) ~ {(k (l (m n))) {k {l m}}}\n"
  },
  {
    "path": "tests/snapshots/compile_file__long_name.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/long_name.bend\n---\n@WowThis_is_a_very_long_name_no_way_ItFits = (a a)\n\n@main = (* a)\n  & @WowThis_is_a_very_long_name_no_way_ItFits ~ (* a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__match.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/match.bend\n---\n@main = c\n  & $(1 ?(((a (* a)) (* (* (b b)))) c)) ~ [+0x0000000]\n"
  },
  {
    "path": "tests/snapshots/compile_file__mismatched_ask_statements.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/mismatched_ask_statements.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/mismatched_ask_statements.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  'match' arms end with different assignments.\n"
  },
  {
    "path": "tests/snapshots/compile_file__missing_adt_eq.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/missing_adt_eq.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/missing_adt_eq.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m Type variable or '='\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  1 | type Adt\u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__missing_ctrs.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/missing_ctrs.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/missing_ctrs.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m Datatype constructor name\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  1 | type Adt =\u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__missing_pat.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/missing_pat.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/missing_pat.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m name or '*'\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  2 |   \u001b[4m\u001b[31m:\u001b[0m *\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__names_starting_with_keywords.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/names_starting_with_keywords.bend\n---\n@A = (a a)\n\n@B = (a a)\n\n@C = (a a)\n\n@D = (a a)\n\n@E = (a a)\n\n@main = *\n"
  },
  {
    "path": "tests/snapshots/compile_file__nested_ctr_wrong_arity.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/nested_ctr_wrong_arity.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/nested_ctr_wrong_arity.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mfst_fst\u001b[0m\u001b[1m':\u001b[0m\n  Incorrect arity for constructor 'Pair/Pair' of type 'Pair' in pattern matching rule. Expected 2 fields, found 1\n"
  },
  {
    "path": "tests/snapshots/compile_file__nested_let.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/nested_let.bend\n---\n@main = a\n  & ((2 4) (3 6)) ~ (* (a *))\n"
  },
  {
    "path": "tests/snapshots/compile_file__number_too_large.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/number_too_large.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/number_too_large.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mNumber literal outside of range for U24.\u001b[0m\nLocation: end of input\n\u001b[0m  1 | main = \u001b[4m\u001b[31m0x10000000\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__nums.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/nums.bend\n---\n@main = b\n  & $(a b) ~ [+0x0FFFFFF]\n  & $(1000 a) ~ [+0x0000005]\n"
  },
  {
    "path": "tests/snapshots/compile_file__op2.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/op2.bend\n---\n@main = a\n  & $(1 $([=0x0000002] $([&0x0000003] $([|0x0000004] $([<0x0000005] $([>0x0000006] $([:/0x0000007] $([*0x0000008] $([:-0x0000009] $([+0x000000A] $([:%0x000000B] a))))))))))) ~ [!0x0000000]\n"
  },
  {
    "path": "tests/snapshots/compile_file__redex_order.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/redex_order.bend\n---\n@a = (a a)\n\n@b = (a a)\n\n@c = (a a)\n\n@foo = (a d)\n  & @a ~ (c d)\n  & @b ~ (b c)\n  & @c ~ (a b)\n\n@foo2 = c\n  & @a ~ (b c)\n  & @b ~ (a b)\n  & @c ~ (0 a)\n\n@main = a\n  & @foo ~ (@foo2 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__redex_order_recursive.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/redex_order_recursive.bend\n---\n@Foo = (a (b (c ((a (b (c d))) d))))\n\n@List.concat = ((@List.concat__C1 a) a)\n\n@List.concat__C0 = (* (a (b (c e))))\n  & @List/Cons ~ (a (d e))\n  & @List.concat ~ (b (c d))\n\n@List.concat__C1 = (?(((a a) @List.concat__C0) b) b)\n\n@List.fold = ((@List.fold__C1 a) a)\n\n@List.fold__C0 = (* (a (b ({(a (e f)) c} (d f)))))\n  & @List.fold ~ (b (c (d e)))\n\n@List.fold__C1 = (?(((* (a a)) @List.fold__C0) b) b)\n\n@List.len = ((@List.len__C1 a) a)\n\n@List.len__C0 = (* (* (a c)))\n  & $(b c) ~ [+0x0000001]\n  & @List.len ~ (a b)\n\n@List.len__C1 = (?((0 @List.len__C0) a) a)\n\n@List.len_tr = ((@List.len_tr__C1 a) a)\n\n@List.len_tr__C0 = (* (* (a (b d))))\n  & @List.len_tr ~ (a (c d))\n  & $(b c) ~ [+0x0000001]\n\n@List.len_tr__C1 = (?(((a a) @List.len_tr__C0) b) b)\n\n@List.map = ((@List.map__C1 a) a)\n\n@List.map__C0 = (* (a (c ({(a b) d} f))))\n  & @List/Cons ~ (b (e f))\n  & @List.map ~ (c (d e))\n\n@List.map__C1 = (?(((* @List/Nil) @List.map__C0) a) a)\n\n@List.reduce = ((@List.reduce__C1 a) a)\n\n@List.reduce__C0 = (* (d (a ({b (c (d e))} (c f)))))\n  & @List.reduce ~ (a (b (e f)))\n\n@List.reduce__C1 = (?(((* (a a)) @List.reduce__C0) b) b)\n\n@List.reverse_bad = ((@List.reverse_bad__C1 a) a)\n\n@List.reverse_bad__C0 = (* (c (a e)))\n  & @List.concat ~ (b (d e))\n  & @List.reverse_bad ~ (a b)\n  & @List/Cons ~ (c (@List/Nil d))\n\n@List.reverse_bad__C1 = (?((@List/Nil @List.reverse_bad__C0) a) a)\n\n@List.reverse_over = ((@List.reverse_over__C1 a) a)\n\n@List.reverse_over__C0 = (* (b (a (c e))))\n  & @List.reverse_over ~ (a (d e))\n  & @List/Cons ~ (b (c d))\n\n@List.reverse_over__C1 = (?(((a a) @List.reverse_over__C0) b) b)\n\n@List.reverse_tr = (a (* b))\n  & @List.reverse_over ~ (a (@List/Nil b))\n\n@List.sum = ((@List.sum__C1 a) a)\n\n@List.sum__C0 = (* ($([+] $(b c)) (a (b d))))\n  & @List.sum ~ (a (c d))\n\n@List.sum__C1 = (?(((a a) @List.sum__C0) b) b)\n\n@List/Cons = (a (b ((@List/Cons/tag (a (b c))) c)))\n\n@List/Cons/tag = 1\n\n@List/Nil = ((@List/Nil/tag a) a)\n\n@List/Nil/tag = 0\n\n@Tree.flip = ((@Tree.flip__C2 a) a)\n\n@Tree.flip__C0 = (c (a e))\n  & @Tree/Node ~ (b (d e))\n  &!@Tree.flip ~ (a b)\n  &!@Tree.flip ~ (c d)\n\n@Tree.flip__C1 = (* a)\n  & @Tree/Leaf ~ a\n\n@Tree.flip__C2 = (?((@Tree.flip__C0 @Tree.flip__C1) a) a)\n\n@Tree.height = ((@Tree.height__C1 a) a)\n\n@Tree.height__C0 = (a (c f))\n  & $(e f) ~ [+0x0000001]\n  & @max ~ (b (d e))\n  &!@Tree.height ~ (a b)\n  &!@Tree.height ~ (c d)\n\n@Tree.height__C1 = (?((@Tree.height__C0 (* (* 0))) a) a)\n\n@Tree.leaves = ((@Tree.leaves__C1 a) a)\n\n@Tree.leaves__C0 = (a (b d))\n  &!@Tree.leaves ~ (a $([+] $(c d)))\n  &!@Tree.leaves ~ (b c)\n\n@Tree.leaves__C1 = (?((@Tree.leaves__C0 (* (* 1))) a) a)\n\n@Tree.map = ((@Tree.map__C2 a) a)\n\n@Tree.map__C0 = (a (d ({b e} g)))\n  & @Tree/Node ~ (c (f g))\n  &!@Tree.map ~ (a (b c))\n  &!@Tree.map ~ (d (e f))\n\n@Tree.map__C1 = (* (a ((a b) c)))\n  & @Tree/Leaf ~ (b c)\n\n@Tree.map__C2 = (?((@Tree.map__C0 @Tree.map__C1) a) a)\n\n@Tree.nodes = ((@Tree.nodes__C1 a) a)\n\n@Tree.nodes__C0 = (a (b e))\n  & $(d e) ~ [+0x0000001]\n  &!@Tree.nodes ~ (a $([+] $(c d)))\n  &!@Tree.nodes ~ (b c)\n\n@Tree.nodes__C1 = (?((@Tree.nodes__C0 (* (* 0))) a) a)\n\n@Tree/Leaf = (a ((@Tree/Leaf/tag (a b)) b))\n\n@Tree/Leaf/tag = 1\n\n@Tree/Node = (a (b ((@Tree/Node/tag (a (b c))) c)))\n\n@Tree/Node/tag = 0\n\n@add = ((@add__C0 ((a a) b)) b)\n\n@add__C0 = (a (b d))\n  & @add ~ (a (((b c) (* c)) d))\n\n@calc = l\n  & @Foo ~ (f (h (k l)))\n  & 1 ~ {$([+] $(e f)) {$([*] $(a {e {$([*] $(b {$([+] $(g h)) {$([*] $(c {g {$([*] $(d {$([+] $(j k)) {$([*] $(i j)) i}})) d}})) c}})) b}})) a}}\n\n@fold_ = ((@fold___C1 (@fold___C0 a)) a)\n\n@fold___C0 = (((* (a a)) b) (* b))\n\n@fold___C1 = (a (c e))\n  & @add ~ (b (d e))\n  &!@fold_ ~ (a b)\n  &!@fold_ ~ (c d)\n\n@main = *\n\n@max = ({$([>] $(a ?(((* (b b)) (* (c (* c)))) (d (e f))))) d} ({a e} f))\n\n@tail_recursive = ((@tail_recursive__C0 ((* 0) a)) a)\n\n@tail_recursive__C0 = (a (b d))\n  & @tail_recursive ~ (a (c d))\n  & $(b c) ~ [+0x0000001]\n"
  },
  {
    "path": "tests/snapshots/compile_file__ref_to_main.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/ref_to_main.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Main definition can't be referenced inside the program.\n"
  },
  {
    "path": "tests/snapshots/compile_file__ref_to_ref.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/ref_to_ref.bend\n---\n@A1 = @A2\n\n@A2 = 1\n\n@B1 = @B2\n\n@B2 = @B3\n\n@B3 = @B4\n\n@B4 = @B5\n\n@B5 = 2\n\n@C1 = @B4\n\n@main = ((1 2) 2)\n"
  },
  {
    "path": "tests/snapshots/compile_file__repeated_bind_rule.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/repeated_bind_rule.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/repeated_bind_rule.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Repeated bind in pattern matching rule: 'a'.\n\n@Foo = (* (a a))\n\n@main = a\n  & @Foo ~ (1 (2 a))\n"
  },
  {
    "path": "tests/snapshots/compile_file__simple_tup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/simple_tup.bend\n---\n@main = (0 42)\n"
  },
  {
    "path": "tests/snapshots/compile_file__switch_all_patterns.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/switch_all_patterns.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/switch_all_patterns.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m '0'\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  7 |   \u001b[4m\u001b[31m_\u001b[0m: x-1\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__switch_in_switch_arg.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/switch_in_switch_arg.bend\n---\n@main = (?((0 (a a)) ?((0 ($([+0x0000001] b) b)) c)) c)\n"
  },
  {
    "path": "tests/snapshots/compile_file__switch_incomplete.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/switch_incomplete.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/switch_incomplete.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m\n\u001b[0m   2 | main = switch {\u001b[4m\u001b[31m}\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__switch_unscoped_lambda.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/switch_unscoped_lambda.bend\n---\n@lambda_in = (?(((a a) (b (c b))) (c d)) d)\n\n@lambda_out = (?((a (b b)) c) (a c))\n\n@main = *\n"
  },
  {
    "path": "tests/snapshots/compile_file__top_level_name_slashslash.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/top_level_name_slashslash.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/top_level_name_slashslash.bend\u001b[0m\u001b[1m :\u001b[0m\nTop-level names are not allowed to start with \"//\".\nLocation:\n\u001b[0m  4 | def \u001b[4m\u001b[31m//thisshouldfail\u001b[0m():\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__tup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/tup.bend\n---\n@main = ((1 4) (2 3))\n"
  },
  {
    "path": "tests/snapshots/compile_file__tup_add.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/tup_add.bend\n---\n@main = b\n  & (1 2) ~ ($([+] $(a b)) a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__unbound_unscoped_var.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unbound_unscoped_var.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/unbound_unscoped_var.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Unbound unscoped variable '$a'.\n"
  },
  {
    "path": "tests/snapshots/compile_file__unbound_var.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unbound_var.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/unbound_var.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Unbound variable 'a'.\n"
  },
  {
    "path": "tests/snapshots/compile_file__unbound_var_scope.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unbound_var_scope.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/unbound_var_scope.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Unbound variable 'b'.\n"
  },
  {
    "path": "tests/snapshots/compile_file__unbound_with_tup_pattern.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unbound_with_tup_pattern.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/unbound_with_tup_pattern.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Unbound variable 'a'.\n"
  },
  {
    "path": "tests/snapshots/compile_file__underscore.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/underscore.bend\n---\n@const = (* 2)\n\n@main = a\n  & @const ~ (0 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__unexpected_top_char.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unexpected_top_char.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/unexpected_top_char.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m top-level definition\n\u001b[1m- detected:\u001b[0m\n\u001b[0m 1 | \u001b[4m\u001b[31m*\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__unscoped_dup_use.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unscoped_dup_use.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/unscoped_dup_use.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Unscoped variable '$a' used more than once.\n"
  },
  {
    "path": "tests/snapshots/compile_file__unscoped_supercombinator.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unscoped_supercombinator.bend\n---\n@Foo = ((@Foo__C1 (@Foo__C0 a)) a)\n\n@Foo__C0 = (a ((a b) b))\n\n@Foo__C1 = (a ((a b) b))\n\n@main = a\n  & @Foo ~ (* a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__unused_let.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unused_let.bend\n---\n@main = ({$([+] $(b *)) {b a}} a)\n"
  },
  {
    "path": "tests/snapshots/compile_file__unused_unscoped_bind.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/unused_unscoped_bind.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/unused_unscoped_bind.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Unscoped variable from lambda 'λ$a' is never used.\n"
  },
  {
    "path": "tests/snapshots/compile_file__variable_name_double_underscore.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/variable_name_double_underscore.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/variable_name_double_underscore.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m expression\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  2 |   return __this_should_fail__\u001b[4m\u001b[31m(\u001b[0m*)\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__vicious_circles.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/vicious_circles.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn compiled inet '\u001b[4mdisconnected_self_lam\u001b[0m\u001b[1m':\u001b[0m\n  Found term that compiles into an inet with a vicious cycle\n\u001b[1mIn compiled inet '\u001b[4mdup_self\u001b[0m\u001b[1m':\u001b[0m\n  Found term that compiles into an inet with a vicious cycle\n\u001b[1mIn compiled inet '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Found term that compiles into an inet with a vicious cycle\n"
  },
  {
    "path": "tests/snapshots/compile_file__warn_and_err.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/warn_and_err.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/warn_and_err.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Repeated bind in pattern matching rule: 'a'.\n\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/warn_and_err.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mMain\u001b[0m\u001b[1m':\u001b[0m\n  Unbound variable 'a'.\n"
  },
  {
    "path": "tests/snapshots/compile_file__with_clause_parse_err.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/with_clause_parse_err.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/with_clause_parse_err.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m '{'\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  1 | main = @a @b switch b \u001b[4m\u001b[31mw\u001b[0mitha{\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__wrong_ctr_arity.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/wrong_ctr_arity.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/wrong_ctr_arity.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mBar\u001b[0m\u001b[1m':\u001b[0m\n  Incorrect arity for constructor 'Boxed/Box' of type 'Boxed' in pattern matching rule. Expected 1 fields, found 2\n"
  },
  {
    "path": "tests/snapshots/compile_file__wrong_ctr_var_arity.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/wrong_ctr_var_arity.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/wrong_ctr_var_arity.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mfoo\u001b[0m\u001b[1m':\u001b[0m\n  Incorrect arity for constructor 'Tup/pair' of type 'Tup' in pattern matching rule. Expected 2 fields, found 0\n"
  },
  {
    "path": "tests/snapshots/compile_file__wrong_nums.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/wrong_nums.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/wrong_nums.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m valid binary digit\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  1 | main = (+ 0b01\u001b[4m\u001b[31m2\u001b[0m345 0FA)\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file__wrong_unicode_escape.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file/wrong_unicode_escape.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file/wrong_unicode_escape.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m '}'\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  1 | main = (String.cons '\\u{1\u001b[4m\u001b[31m'\u001b[0m \"\\u2}\\u{zxcx}\")\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__addition.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/addition.bend\n---\n@main = c\n  & (a b) ~ (8 c)\n  & $(1 $([+] $(a b))) ~ [+0x0000001]\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__addition_var_fst.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/addition_var_fst.bend\n---\n@main = ($([+0x0000001] a) a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__adt_option_and.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/adt_option_and.bend\n---\n@Option/None = ((1 a) a)\n\n@Option/Some = (a ((0 (a b)) b))\n\n@Option/and = ((@Option/and__C3 a) a)\n\n@Option/and__C0 = (b (a c))\n  & @Option/Some ~ ((a b) c)\n\n@Option/and__C1 = (?((@Option/and__C0 (* (* @Option/None))) a) a)\n\n@Option/and__C2 = (a ((@Option/and__C1 (a b)) b))\n\n@Option/and__C3 = (?((@Option/and__C2 (* (* @Option/None))) a) a)\n\n@main = c\n  & @Option/and ~ (a (b c))\n  & @Option/Some ~ (1 a)\n  & @Option/Some ~ (3 b)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__adt_string.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/adt_string.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/adt_string.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of builtin (type) 'String'.\nLocation:\n\u001b[0m  1 | \u001b[4m\u001b[31mtype String = S\n\u001b[0m  2 | \u001b[4m\u001b[31m\n\u001b[0m  3 | \u001b[4m\u001b[31m\u001b[0mmain = String/S\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__and.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/and.bend\n---\n@and = (a ((@and__C0 (a b)) b))\n\n@and__C0 = (?(((a a) (* (* @bool/false))) b) b)\n\n@bool/false = ((1 a) a)\n\n@bool/true = ((0 a) a)\n\n@main = a\n  & @and ~ (@bool/true (@bool/false a))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__bad_parens_making_erased_let.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/bad_parens_making_erased_let.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/bad_parens_making_erased_let.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Unbound variable 'two'.\n  Unbound variable 'qua'.\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__bool.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/bool.bend\n---\n@Not = ((@fals (@true a)) a)\n\n@fals = (* (a a))\n\n@main = a\n  & @Not ~ (@true a)\n\n@true = (a (* a))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__cyclic_dup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/cyclic_dup.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/cyclic_dup.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Unbound variable 'y1'.\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__double_main.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/double_main.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nFile has both 'main' and 'Main' definitions.\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__eta_chain.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/eta_chain.bend\n---\n@Bar = a\n  & @Baz ~ a\n\n@Baz = ($([+] $(b c)) ($([+] $(a b)) (a c)))\n\n@Foo = a\n  & @Bar ~ a\n\n@main = a\n  & @Foo ~ a\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__ex0.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/ex0.bend\n---\n@C_2 = ({(b c) (a b)} (a c))\n\n@S = (a ((a b) (* b)))\n\n@Z = (* (a a))\n\n@main = a\n  & @C_2 ~ (@S (@Z a))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__ex2.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/ex2.bend\n---\n@E = (* (* (a a)))\n\n@I = (a (* ((a b) (* b))))\n\n@O = (a ((a b) (* (* b))))\n\n@c2 = ({(b c) (a b)} (a c))\n\n@dec = ((@decO (@decI (@E a))) a)\n\n@decI = a\n  & @low ~ a\n\n@decO = (a c)\n  & @I ~ (b c)\n  & @dec ~ (a b)\n\n@low = ((@lowO (@lowI (@E a))) a)\n\n@lowI = (a c)\n  & @O ~ (b c)\n  & @I ~ (a b)\n\n@lowO = (a c)\n  & @O ~ (b c)\n  & @O ~ (a b)\n\n@main = b\n  & @run ~ (a b)\n  & @c2 ~ (@I (@E a))\n\n@run = ((@runO (@runI (@E a))) a)\n\n@runI = (a d)\n  & @run ~ (c d)\n  & @dec ~ (b c)\n  & @I ~ (a b)\n\n@runO = (a d)\n  & @run ~ (c d)\n  & @dec ~ (b c)\n  & @O ~ (a b)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__example.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/example.bend\n---\n@Def1 = c\n  & (a a) ~ ((b b) c)\n\n@Def2 = b\n  & (a a) ~ (@Def1 b)\n\n@main = a\n  & @Def2 ~ (1 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__exp.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/exp.bend\n---\n@main = g\n  & ({(b c) (a b)} (a c)) ~ (({(e f) (d e)} (d f)) g)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__expr.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/expr.bend\n---\n@Expr/App = (a (b ((2 (a (b c))) c)))\n\n@Expr/Dup = (a (b (c (d ((6 (a (b (c (d e))))) e)))))\n\n@Expr/Let = (a (b (c ((5 (a (b (c d)))) d))))\n\n@Expr/Num = (a ((1 (a b)) b))\n\n@Expr/Op2 = (a (b (c ((8 (a (b (c d)))) d))))\n\n@Expr/Var = (a ((0 (a b)) b))\n\n@Op/Mul = ((2 a) a)\n\n@Op/Sub = ((1 a) a)\n\n@main = n\n  & @Expr/Let ~ (a (f (m n)))\n  & @Expr/Var ~ (0 a)\n  & @Expr/Op2 ~ (@Op/Mul (e f))\n  & @Expr/Op2 ~ (@Op/Sub (b (c (d e))))\n  & @Expr/Num ~ (2 b)\n  & @Expr/Num ~ (1 c)\n  & @Expr/Num ~ (3 d)\n  & @Expr/Dup ~ (g (h (i (l m))))\n  & @Expr/Var ~ (1 g)\n  & @Expr/Var ~ (2 h)\n  & @Expr/Var ~ (0 i)\n  & @Expr/App ~ (j (k l))\n  & @Expr/Var ~ (1 j)\n  & @Expr/Var ~ (2 k)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__extracted_match_pred.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/extracted_match_pred.bend\n---\n@main = a\n  & @val ~ (1 a)\n\n@val = (?((0 @val__C0) a) a)\n\n@valS = a\n  & @val ~ a\n\n@val__C0 = a\n  & @valS ~ a\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__fst.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/fst.bend\n---\n@Fst = ((a *) a)\n\n@main = a\n  & @Fst ~ ((4 8) a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__fst_fst.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/fst_fst.bend\n---\n@FstFst = ((a *) ((b *) (a b)))\n\n@main = a\n  & @FstFst ~ ((3 9) ((4 12) a))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__hvm1_main.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/hvm1_main.bend\n---\n@main = (a a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__inline_app.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/inline_app.bend\n---\n@Rul1__M_Rul2 = (a a)\n\n@Rul3 = a\n  & @Rul1__M_Rul2 ~ (@Rul1__M_Rul2 a)\n\n@main = a\n  & @Rul3 ~ (@Rul3 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__inlining.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/inlining.bend\n---\n@main = a\n  & * ~ (42 (* a))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__linearize_match.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/linearize_match.bend\n---\n@main = (?(((a a) ($([+] $(b c)) (b c))) d) d)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__list_merge_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/list_merge_sort.bend\n---\n@If = ((@If__C0 a) a)\n\n@If__C0 = (?(((a (* a)) (* (* (b b)))) c) c)\n\n@List_/Cons = (a (b ((0 (a (b c))) c)))\n\n@List_/Nil = ((1 a) a)\n\n@Map = ((@Map__C1 a) a)\n\n@Map__C0 = (a (c ({(a b) d} f)))\n  & @List_/Cons ~ (b (e f))\n  & @Map ~ (c (d e))\n\n@Map__C1 = (?((@Map__C0 (* (* @List_/Nil))) a) a)\n\n@Merge = (a ((@Merge__C4 (a b)) b))\n\n@MergePair = (a ((@MergePair__C4 (a b)) b))\n\n@MergePair__C0 = (c (f ({a e} (b h))))\n  & @List_/Cons ~ (d (g h))\n  & @Merge ~ (a (b (c d)))\n  & @MergePair ~ (e (f g))\n\n@MergePair__C1 = (* (* (a b)))\n  & @List_/Cons ~ (a (@List_/Nil b))\n\n@MergePair__C2 = (?((@MergePair__C0 @MergePair__C1) a) a)\n\n@MergePair__C3 = (b ((@MergePair__C2 (a (b c))) (a c)))\n\n@MergePair__C4 = (?((@MergePair__C3 (* (* @List_/Nil))) a) a)\n\n@Merge__C0 = ({b {g l}} ({h q} ({(a (b c)) {e m}} ({a {d n}} ({f o} t)))))\n  & @If ~ (c (k (s t)))\n  & @List_/Cons ~ (d (j k))\n  &!@Merge ~ (e (f (i j)))\n  & @List_/Cons ~ (g (h i))\n  & @List_/Cons ~ (l (r s))\n  &!@Merge ~ (m (p (q r)))\n  & @List_/Cons ~ (n (o p))\n\n@Merge__C1 = (* (* a))\n  & @List_/Cons ~ a\n\n@Merge__C2 = (?((@Merge__C0 @Merge__C1) a) a)\n\n@Merge__C3 = (b (c (a ((@Merge__C2 (a (b (c d)))) d))))\n\n@Merge__C4 = (?((@Merge__C3 (* (* (a a)))) b) b)\n\n@Pure = (a b)\n  & @List_/Cons ~ (a (@List_/Nil b))\n\n@Unpack = (a ((@Unpack__C3 (a b)) b))\n\n@Unpack__C0 = (d (e ({a b} (c i))))\n  & @Unpack ~ (a (h i))\n  & @MergePair ~ (b (g h))\n  & @List_/Cons ~ (c (f g))\n  & @List_/Cons ~ (d (e f))\n\n@Unpack__C1 = (?((@Unpack__C0 (* (* (a a)))) b) b)\n\n@Unpack__C2 = (b ((@Unpack__C1 (a (b c))) (a c)))\n\n@Unpack__C3 = (?((@Unpack__C2 (* (* @List_/Nil))) a) a)\n\n@main = (a (b d))\n  & @Unpack ~ (a (c d))\n  & @Map ~ (b (@Pure c))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__list_reverse.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/list_reverse.bend\n---\n@concat = ((@concat__C1 a) a)\n\n@concat__C0 = (a (b (c e)))\n  & @list/cons ~ (a (d e))\n  & @concat ~ (b (c d))\n\n@concat__C1 = (?((@concat__C0 (* (a a))) b) b)\n\n@list/cons = (a (b ((0 (a (b c))) c)))\n\n@list/nil = ((1 a) a)\n\n@main = d\n  & @reverse ~ (c d)\n  & @list/cons ~ (3 (b c))\n  & @list/cons ~ (2 (a b))\n  & @list/cons ~ (1 (@list/nil a))\n\n@reverse = ((@reverse__C1 a) a)\n\n@reverse__C0 = (c (a e))\n  & @concat ~ (b (d e))\n  & @reverse ~ (a b)\n  & @list/cons ~ (c (@list/nil d))\n\n@reverse__C1 = (?((@reverse__C0 (* @list/nil)) a) a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__match_adt_non_exhaustive.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/match_adt_non_exhaustive.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/match_adt_non_exhaustive.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Non-exhaustive 'match' expression of type 'Maybe_'. Case 'Maybe_/Some' not covered.\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__match_dup_and_reconstruction.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/match_dup_and_reconstruction.bend\n---\n@Box/Boxed = (a ((0 (a b)) b))\n\n@Got = ((@Got__C1 a) a)\n\n@Got__C0 = ({a c} (b c))\n  & @Box/Boxed ~ (a b)\n\n@Got__C1 = (?((@Got__C0 *) a) a)\n\n@main = b\n  & @Got ~ (a b)\n  & @Box/Boxed ~ (10 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__match_mult_linearization.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/match_mult_linearization.bend\n---\n@main = (?((($([+] $(a $([+] $(b c)))) (a (b c))) ($([+] $(d $([+] $(e $([+] $(f g)))))) (d (e (f g))))) h) h)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__match_num_explicit_bind.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/match_num_explicit_bind.bend\n---\n@main = a\n  & @pred ~ (4 a)\n\n@pred = (?((0 (a a)) b) b)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__match_tup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/match_tup.bend\n---\n@Sum = (($([+] $(a b)) a) b)\n\n@main = a\n  & @Sum ~ ((7 3) a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__merge_definitions.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/merge_definitions.bend\n---\n@false__M_snd = (* (a a))\n\n@main = (* b)\n  & @true__M_fst ~ (@true__M_fst (a b))\n  & @false__M_snd ~ (@false__M_snd (* a))\n\n@true__M_fst = (a (* a))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__non_exhaustive_and.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/non_exhaustive_and.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/non_exhaustive_and.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mBool.and\u001b[0m\u001b[1m':\u001b[0m\n  Non-exhaustive pattern matching rule. Constructor 'Bool/F' of type 'Bool' not covered\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__non_exhaustive_different_types.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/non_exhaustive_different_types.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/non_exhaustive_different_types.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mfoo\u001b[0m\u001b[1m':\u001b[0m\n  Non-exhaustive pattern matching rule. Constructor 'b3/t3' of type 'b3' not covered\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__non_exhaustive_pattern.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/non_exhaustive_pattern.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/non_exhaustive_pattern.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Non-exhaustive pattern matching rule. Constructor 'Type/A' of type 'Type' not covered\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__non_exhaustive_tree.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/non_exhaustive_tree.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/non_exhaustive_tree.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mWarp\u001b[0m\u001b[1m':\u001b[0m\n  Non-exhaustive pattern matching rule. Constructor 'Tree/Leaf' of type 'Tree' not covered\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__num_pattern_with_var.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/num_pattern_with_var.bend\n---\n@Foo = ((@Foo__C2 a) a)\n\n@Foo__C0 = ($([+0x0000001] a) a)\n\n@Foo__C1 = (* (?((0 @Foo__C0) a) a))\n\n@Foo__C2 = (?(((* 0) @Foo__C1) a) a)\n\n@bool/true = ((1 a) a)\n\n@main = a\n  & @Foo ~ (@bool/true (3 a))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__recursive_combinator_inactive.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/recursive_combinator_inactive.bend\n---\n@Foo = (?((@Foo__C0 (a (* a))) b) b)\n\n@Foo__C0 = {@Foo @Foo}\n\n@main = a\n  & @Foo ~ (0 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__repeated_name_trucation.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/repeated_name_trucation.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * long_name_that_truncates -> long_name_that_truncates\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n\n\n@long_name_that_truncates = (* (* @long_name_that_truncates))\n\n@long_name_that_truncates_too = (a a)\n\n@main = a\n  & @long_name_that_truncates ~ (@long_name_that_truncates_too a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__scrutinee_reconstruction.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/scrutinee_reconstruction.bend\n---\n@Option/None = ((1 a) a)\n\n@Option/Some = (a ((0 (a b)) b))\n\n@Option/or = ((@Option/or__C1 a) a)\n\n@Option/or__C0 = (a (* b))\n  & @Option/Some ~ (a b)\n\n@Option/or__C1 = (?((@Option/or__C0 (* (a a))) b) b)\n\n@main = b\n  & @Option/or ~ (a (@Option/None b))\n  & @Option/Some ~ (5 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__self_ref.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/self_ref.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * Foo -> Foo\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n\n\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nDuring inlining:\n  infinite reference cycle in `@Foo`\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__snd.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/snd.bend\n---\n@main = a\n  & @snd ~ ((0 42) a)\n\n@snd = ((* a) a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__spacing.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/spacing.bend\n---\n@main = ({b c} d)\n  & (a a) ~ (b (c d))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__spacing2.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/spacing2.bend\n---\n@main = c\n  & (a a) ~ ((b b) c)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__str.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/str.bend\n---\n@String/Cons = (a (b ((1 (a (b c))) c)))\n\n@String/Nil = ((0 a) a)\n\n@main = f\n  & @String/Cons ~ (109 (e f))\n  & @String/Cons ~ (97 (d e))\n  & @String/Cons ~ (105 (c d))\n  & @String/Cons ~ (110 (b c))\n  & @String/Cons ~ (32 (a b))\n  & @String/Cons ~ (61 (@String/Nil a))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__sum_predicates.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/sum_predicates.bend\n---\n@main = a\n  & @sum_pred ~ (8 (5 a))\n\n@sum_pred = (?((@sum_pred__C1 @sum_pred__C2) a) a)\n\n@sum_pred__C0 = (a ($([+] $(a b)) b))\n\n@sum_pred__C1 = (?((0 (a a)) b) b)\n\n@sum_pred__C2 = (b (?(((a a) @sum_pred__C0) (b c)) c))\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__tagged_dup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/tagged_dup.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/tagged_dup.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m '='\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  4 |   \u001b[4m\u001b[31ml\u001b[0met #i {e f} = @x x;\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__tagged_lam.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/tagged_lam.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/tagged_lam.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  2 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__tagged_sup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/tagged_sup.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/compile_file_o_all/tagged_sup.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m top-level definition\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  2 | b \u001b[4m\u001b[31m=\u001b[0m #i {λx x λx x}\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__unapplied_eta.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/unapplied_eta.bend\n---\n@Id = (a a)\n\n@main = a\n  & @Id ~ a\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__unscoped_eta.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/unscoped_eta.bend\n---\n@main = (a a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__var_shadows_ref.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/var_shadows_ref.bend\n---\n@a = (a a)\n\n@main = b\n  & @a ~ ((a a) b)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_all__weekday.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_all/weekday.bend\n---\n@Weekday/Saturday = ((5 a) a)\n\n@main = b\n  & (a a) ~ (@Weekday/Saturday b)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_no_all__bitonic_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_no_all/bitonic_sort.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * Down -> Flow -> Down\n  * Warp -> Warp\n  * Gen -> Gen\n  * Rev -> Rev\n  * Sort -> Sort\n  and 1 other cycles...\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_no_all__list_reverse.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_no_all/list_reverse.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * concat -> concat\n  * reverse -> reverse\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_no_all__redex_order.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_no_all/redex_order.bend\n---\n@a = (a a)\n\n@b = (a a)\n\n@bar = i\n  & @a ~ (d (h i))\n  & @b ~ (a (c d))\n  & @c ~ (0 a)\n  & @c ~ (b c)\n  & @d ~ (1 b)\n  & @b ~ (f (g h))\n  & @c ~ (e f)\n  & @d ~ (2 e)\n  & @c ~ (3 g)\n\n@c = (a a)\n\n@d = (a a)\n\n@foo = (a d)\n  & @a ~ (c d)\n  & @b ~ (b c)\n  & @c ~ (a b)\n\n@foo2 = c\n  & @a ~ (b c)\n  & @b ~ (a b)\n  & @c ~ (0 a)\n\n@main = a\n  & @foo ~ (@foo2 a)\n"
  },
  {
    "path": "tests/snapshots/compile_file_o_no_all__sum_tree.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_file_o_no_all/sum_tree.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * gen -> gen\n  * sum -> sum\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n"
  },
  {
    "path": "tests/snapshots/compile_long__huge_tree.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_long/huge_tree.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Definition is too large for HVM C (size=120002, max size=4095). Please break it into smaller pieces.\n"
  },
  {
    "path": "tests/snapshots/compile_long__long_str_file.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/compile_long/long_str_file.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Definition is too large for HVM C (size=1461028, max size=4095). Please break it into smaller pieces.\n"
  },
  {
    "path": "tests/snapshots/desugar_file__ask_branch.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/ask_branch.bend\n---\nIO/MAGIC: (u24, u24)\n(IO/MAGIC) = (13683217, 16719857)\n\nIO/wrap: (a -> (IO a))\n(IO/wrap) = λa (IO/Done IO/MAGIC a)\n\nIO/bind: ((IO a) -> ((c -> c) -> a -> (IO b)) -> (IO b))\n(IO/bind) = λa λb (a IO/bind__C2 b)\n\nundefer: (((a -> a) -> b) -> b)\n(undefer) = λa (a λb b)\n\nunchecked main: Any\n(main) = (IO/bind (Bool/T λa switch a { 0: (IO/wrap 0); _: λ* (IO/wrap 0); }) λb (b λc λd (c d) IO/wrap))\n\nIO/Done/tag: u24\n(IO/Done/tag) = 0\n\nIO/Done: ((u24, u24) -> a -> (IO a))\n(IO/Done) = λa λb λc (c IO/Done/tag a b)\n\nIO/Call/tag: u24\n(IO/Call/tag) = 1\n\nIO/Call: ((u24, u24) -> String -> Any -> ((Result Any (IOError Any)) -> (IO a)) -> (IO a))\n(IO/Call) = λa λb λc λd λe (e IO/Call/tag a b c d)\n\nBool/T/tag: u24\n(Bool/T/tag) = 0\n\nBool/T: Bool\n(Bool/T) = λa (a Bool/T/tag)\n\nBool/F/tag: u24\n(Bool/F/tag) = 1\n\nBool/F: Bool\n(Bool/F) = λa (a Bool/F/tag)\n\nIO/bind__C0: _\n(IO/bind__C0) = λ* λa λb (undefer b a)\n\nIO/bind__C1: _\n(IO/bind__C1) = λ* λa λb λc λd λe (IO/Call a b c λf (IO/bind (d f) e))\n\nIO/bind__C2: _\n(IO/bind__C2) = λa switch a { 0: IO/bind__C0; _: IO/bind__C1; }\n"
  },
  {
    "path": "tests/snapshots/desugar_file__bind_syntax.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/bind_syntax.bend\n---\nunchecked Result/bind: Any\n(Result/bind) = λa λb (a Result/bind__C2 b)\n\nunchecked safe_div: Any\n(safe_div) = λa λb (switch b { 0: λ* (Result/Err (String/Cons 68 (String/Cons 105 (String/Cons 118 (String/Cons 32 (String/Cons 98 (String/Cons 121 (String/Cons 32 (String/Cons 48 String/Nil))))))))); _: safe_div__C0; } a)\n\nunchecked safe_rem: Any\n(safe_rem) = λa λb (switch b { 0: λ* (Result/Err (String/Cons 77 (String/Cons 111 (String/Cons 100 (String/Cons 32 (String/Cons 98 (String/Cons 121 (String/Cons 32 (String/Cons 48 String/Nil))))))))); _: safe_rem__C0; } a)\n\nunchecked Main: Any\n(Main) = (Result/bind (safe_div 3 2) λa (a λb (Result/bind (safe_rem b 0) λc (c λd d))))\n\nundefer: (((a -> a) -> b) -> b)\n(undefer) = λa (a λb b)\n\nString/Nil/tag: u24\n(String/Nil/tag) = 0\n\nString/Nil: String\n(String/Nil) = λa (a String/Nil/tag)\n\nString/Cons/tag: u24\n(String/Cons/tag) = 1\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λa λb λc (c String/Cons/tag a b)\n\nResult/Ok/tag: u24\n(Result/Ok/tag) = 0\n\nResult/Ok: (b -> (Result b a))\n(Result/Ok) = λa λb (b Result/Ok/tag a)\n\nResult/Err/tag: u24\n(Result/Err/tag) = 1\n\nResult/Err: (a -> (Result b a))\n(Result/Err) = λa λb (b Result/Err/tag a)\n\nunchecked Result/bind__C0: _\n(Result/bind__C0) = λa λb (undefer b a)\n\nunchecked Result/bind__C1: _\n(Result/bind__C1) = λ* λa λ* (Result/Err a)\n\nunchecked Result/bind__C2: _\n(Result/bind__C2) = λa switch a { 0: Result/bind__C0; _: Result/bind__C1; }\n\nunchecked safe_div__C0: _\n(safe_div__C0) = λa λb (Result/Ok (/ b (+ a 1)))\n\nunchecked safe_rem__C0: _\n(safe_rem__C0) = λa λb (Result/Ok (% b (+ a 1)))\n"
  },
  {
    "path": "tests/snapshots/desugar_file__combinators.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/combinators.bend\n---\nunchecked foo: Any\n(foo) = λa λ* λ* (foo a)\n\nunchecked bar: Any\n(bar) = λa λb (a bar b)\n\nunchecked List/ignore: Any\n(List/ignore) = λa λ* (a List/ignore__C1)\n\nunchecked baz: Any\n(baz) = {0 1 2 3 λa a foo}\n\nunchecked qux: Any\n(qux) = {0 qux}\n\nunchecked clax: Any\n(clax) = (λa a clax__C0)\n\nunchecked tup: Any\n(tup) = (tup, 1, 0)\n\nunchecked list: Any\n(list) = (List/Cons 0 list__C0)\n\nunchecked A: Any\n(A) = λa (A__C0 a)\n\nunchecked B: Any\n(B) = λa (B__C0 a)\n\nunchecked Main: Any\n(Main) = (List/Cons 0 (List/Cons list List/Nil))\n\nList/Nil/tag: u24\n(List/Nil/tag) = 0\n\nList/Nil: (List a)\n(List/Nil) = λa (a List/Nil/tag)\n\nList/Cons/tag: u24\n(List/Cons/tag) = 1\n\nList/Cons: (a -> (List a) -> (List a))\n(List/Cons) = λa λb λc (c List/Cons/tag a b)\n\nunchecked A__C0: _\n(A__C0) = let {a b} = A; λc (a b c)\n\nunchecked B__C0: _\n(B__C0) = let (a, b) = B; λc (a b c)\n\nunchecked List/ignore__C0: _\n(List/ignore__C0) = λ* λ* λa (List/ignore a List/ignore)\n\nunchecked List/ignore__C1: _\n(List/ignore__C1) = λa switch a { 0: 0; _: List/ignore__C0; }\n\nunchecked clax__C0: _\n(clax__C0) = λ* λ* λ* λa (clax a)\n\nunchecked list__C0: _\n(list__C0) = (List/Cons list List/Nil)\n"
  },
  {
    "path": "tests/snapshots/desugar_file__deref_loop.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/deref_loop.bend\n---\nunchecked foo: Any\n(foo) = λa (a foo__C1)\n\nunchecked bar: Any\n(bar) = (foo 1)\n\nunchecked main: Any\n(main) = (foo 0)\n\nnat/succ/tag: u24\n(nat/succ/tag) = 0\n\nnat/succ: (Any -> nat)\n(nat/succ) = λa λb (b nat/succ/tag a)\n\nnat/zero/tag: u24\n(nat/zero/tag) = 1\n\nnat/zero: nat\n(nat/zero) = λa (a nat/zero/tag)\n\nunchecked foo__C0: _\n(foo__C0) = λ* (bar 0)\n\nunchecked foo__C1: _\n(foo__C1) = λa switch a { 0: λb b; _: foo__C0; }\n"
  },
  {
    "path": "tests/snapshots/desugar_file__dup_linearization.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/dup_linearization.bend\n---\nunchecked main: Any\n(main) = let {a b c d e} = *; (a, e, d, c, b)\n"
  },
  {
    "path": "tests/snapshots/desugar_file__local_def_shadow.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/local_def_shadow.bend\n---\nunchecked main: Any\n(main) = 1\n\nunchecked main__local_0_A__local_0_B: _\n(main__local_0_A__local_0_B) = 0\n\nunchecked main__local_1_A__local_1_B: _\n(main__local_1_A__local_1_B) = 1\n\nunchecked main__local_1_A: _\n(main__local_1_A) = main__local_1_A__local_1_B\n\nunchecked main__local_0_A: _\n(main__local_0_A) = main__local_0_A__local_0_B\n"
  },
  {
    "path": "tests/snapshots/desugar_file__main_aux.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/main_aux.bend\n---\nunchecked main: Any\n(main) = (main__local_0_aux 89 2)\n\nunchecked main__local_0_aux__local_0_aux__local_0_aux: _\n(main__local_0_aux__local_0_aux__local_0_aux) = λa λb (+ b a)\n\nunchecked main__local_0_aux__local_0_aux: _\n(main__local_0_aux__local_0_aux) = λa λb (main__local_0_aux__local_0_aux__local_0_aux a b)\n\nunchecked main__local_0_aux: _\n(main__local_0_aux) = λa λb (main__local_0_aux__local_0_aux a b)\n"
  },
  {
    "path": "tests/snapshots/desugar_file__mapper_syntax.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/mapper_syntax.bend\n---\nMaybe/unwrap: ((Maybe a) -> a)\n(Maybe/unwrap) = λa (a Maybe/unwrap__C0)\n\nMap/empty: (Map a)\n(Map/empty) = Map/Leaf\n\nMap/get: ((Map a) -> u24 -> (a, (Map a)))\n(Map/get) = λa λb (a Map/get__C5 b)\n\nMap/set: ((Map a) -> u24 -> a -> (Map a))\n(Map/set) = λa λb λc (a Map/set__C10 b c)\n\nMap/map: ((Map a) -> u24 -> (a -> a) -> (Map a))\n(Map/map) = λa λb λc (a Map/map__C5 b c)\n\nunreachable: Any\n(unreachable) = *\n\nunchecked main: Any\n(main) = let (c, d) = (Map/get (Map/map (Map/map (Map/set (Map/set Map/empty 0 3) 1 4) 1 λa (+ a 1)) 1 λb (* b 2)) 1); let (e, *) = (Map/get d 0); ((λf (+ f 1) 1), c, e)\n\nMaybe/Some/tag: u24\n(Maybe/Some/tag) = 0\n\nMaybe/Some: (a -> (Maybe a))\n(Maybe/Some) = λa λb (b Maybe/Some/tag a)\n\nMaybe/None/tag: u24\n(Maybe/None/tag) = 1\n\nMaybe/None: (Maybe a)\n(Maybe/None) = λa (a Maybe/None/tag)\n\nMap/Node/tag: u24\n(Map/Node/tag) = 0\n\nMap/Node: ((Maybe a) -> (Map a) -> (Map a) -> (Map a))\n(Map/Node) = λa λb λc λd (d Map/Node/tag a b c)\n\nMap/Leaf/tag: u24\n(Map/Leaf/tag) = 1\n\nMap/Leaf: (Map a)\n(Map/Leaf) = λa (a Map/Leaf/tag)\n\nMap/get__C0: _\n(Map/get__C0) = λa λb λc λd let (e, f) = (Map/get d (/ a 2)); (e, (Map/Node b c f))\n\nMap/get__C1: _\n(Map/get__C1) = λ* λa λb λc λd let (e, f) = (Map/get c (/ a 2)); (e, (Map/Node b f d))\n\nMap/get__C2: _\n(Map/get__C2) = λa let {b c} = a; λd λe λf (switch (== (% b 2) 0) { 0: Map/get__C0; _: Map/get__C1; } c d e f)\n\nMap/get__C3: _\n(Map/get__C3) = λ* λ* λa let {b c} = a; λd λe ((Maybe/unwrap b), (Map/Node c d e))\n\nMap/get__C4: _\n(Map/get__C4) = λa λb λc λd let {e f} = d; (switch (== 0 e) { 0: Map/get__C2; _: Map/get__C3; } f a b c)\n\nMap/get__C5: _\n(Map/get__C5) = λa switch a { 0: Map/get__C4; _: λ* λ* (unreachable, Map/Leaf); }\n\nMap/map__C0: _\n(Map/map__C0) = λa λb λc λd λe (Map/Node c d (Map/map e (/ a 2) b))\n\nMap/map__C1: _\n(Map/map__C1) = λ* λa λb λc λd λe (Map/Node c (Map/map d (/ a 2) b) e)\n\nMap/map__C2: _\n(Map/map__C2) = λa let {b c} = a; λd λe λf λg (switch (== (% b 2) 0) { 0: Map/map__C0; _: Map/map__C1; } c d e f g)\n\nMap/map__C3: _\n(Map/map__C3) = λ* λ* λa λb λc λd (Map/Node (Maybe/Some (a (Maybe/unwrap b))) c d)\n\nMap/map__C4: _\n(Map/map__C4) = λa λb λc λd let {e f} = d; λg (switch (== 0 e) { 0: Map/map__C2; _: Map/map__C3; } f g a b c)\n\nMap/map__C5: _\n(Map/map__C5) = λa switch a { 0: Map/map__C4; _: λ* λ* λ* Map/Leaf; }\n\nMap/set__C0: _\n(Map/set__C0) = λa λb λc λd λe (Map/Node c d (Map/set e (/ a 2) b))\n\nMap/set__C1: _\n(Map/set__C1) = λ* λa λb λc λd λe (Map/Node c (Map/set d (/ a 2) b) e)\n\nMap/set__C10: _\n(Map/set__C10) = λa switch a { 0: Map/set__C8; _: Map/set__C9; }\n\nMap/set__C2: _\n(Map/set__C2) = λa let {b c} = a; λd λe λf λg (switch (== (% b 2) 0) { 0: Map/set__C0; _: Map/set__C1; } c d e f g)\n\nMap/set__C3: _\n(Map/set__C3) = λ* λ* λa λ* λb λc (Map/Node (Maybe/Some a) b c)\n\nMap/set__C4: _\n(Map/set__C4) = λa λb (Map/Node Maybe/None Map/Leaf (Map/set Map/Leaf (/ a 2) b))\n\nMap/set__C5: _\n(Map/set__C5) = λ* λa λb (Map/Node Maybe/None (Map/set Map/Leaf (/ a 2) b) Map/Leaf)\n\nMap/set__C6: _\n(Map/set__C6) = λa let {b c} = a; λd (switch (== (% b 2) 0) { 0: Map/set__C4; _: Map/set__C5; } c d)\n\nMap/set__C7: _\n(Map/set__C7) = λ* λ* λa (Map/Node (Maybe/Some a) Map/Leaf Map/Leaf)\n\nMap/set__C8: _\n(Map/set__C8) = λa λb λc λd let {e f} = d; λg (switch (== 0 e) { 0: Map/set__C2; _: Map/set__C3; } f g a b c)\n\nMap/set__C9: _\n(Map/set__C9) = λ* λa let {b c} = a; λd (switch (== 0 b) { 0: Map/set__C6; _: Map/set__C7; } c d)\n\nMaybe/unwrap__C0: _\n(Maybe/unwrap__C0) = λa switch a { 0: λb b; _: λ* unreachable; }\n"
  },
  {
    "path": "tests/snapshots/desugar_file__switch_with_use.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/switch_with_use.bend\n---\nunchecked main: Any\n(main) = λa λb λc λ* λ* (switch c { 0: λd d; _: λe λf (e f); } (a b))\n"
  },
  {
    "path": "tests/snapshots/desugar_file__tree_syntax.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/tree_syntax.bend\n---\nunchecked fun0: Any\n(fun0) = (Tree/Node (Tree/Leaf 0) (Tree/Node (Tree/Leaf 1) (Tree/Node (Tree/Leaf 2) (Tree/Leaf 3))))\n\nunchecked fun1: Any\n(fun1) = (Tree/Leaf (Tree/Node (Tree/Leaf *) (Tree/Leaf *)))\n\nunchecked fun2: Any\n(fun2) = (Tree/Leaf (Tree/Leaf (Tree/Leaf *)))\n\nunchecked fun3: Any\n(fun3) = (Tree/Leaf 1)\n\nunchecked fun4: Any\n(fun4) = λa switch a { 0: (Tree/Leaf 0); _: fun4__C0; }\n\nunchecked main: Any\n(main) = *\n\nunchecked imp0: Any\n(imp0) = (Tree/Node (Tree/Leaf 0) (Tree/Node (Tree/Leaf 1) (Tree/Node (Tree/Leaf 2) (Tree/Leaf 3))))\n\nunchecked imp1: Any\n(imp1) = (Tree/Leaf (Tree/Node (Tree/Leaf *) (Tree/Leaf *)))\n\nunchecked imp2: Any\n(imp2) = (Tree/Leaf (Tree/Leaf (Tree/Leaf *)))\n\nunchecked imp3: Any\n(imp3) = (Tree/Leaf 1)\n\nunchecked imp4: (Any -> Any)\n(imp4) = λa switch a { 0: (Tree/Leaf 0); _: imp4__C0; }\n\nTree/Node/tag: u24\n(Tree/Node/tag) = 0\n\nTree/Node: ((Tree a) -> (Tree a) -> (Tree a))\n(Tree/Node) = λa λb λc (c Tree/Node/tag a b)\n\nTree/Leaf/tag: u24\n(Tree/Leaf/tag) = 1\n\nTree/Leaf: (a -> (Tree a))\n(Tree/Leaf) = λa λb (b Tree/Leaf/tag a)\n\nunchecked fun4__C0: _\n(fun4__C0) = λa let {b c} = a; (Tree/Node (fun4 b) (fun4 c))\n\nunchecked imp4__C0: _\n(imp4__C0) = λa let {b c} = a; (Tree/Node (imp4 b) (imp4 c))\n"
  },
  {
    "path": "tests/snapshots/desugar_file__use_id.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/use_id.bend\n---\nunchecked Main: Any\n(Main) = (λa a 2 3 (λb b 2 3) (λc c 2 3 (λd d 2 3)))\n"
  },
  {
    "path": "tests/snapshots/desugar_file__use_shadow.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/use_shadow.bend\n---\nunchecked main: Any\n(main) = λa let {b c} = a; λd (b c d)\n"
  },
  {
    "path": "tests/snapshots/desugar_file__used_once_names.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/desugar_file/used_once_names.bend\n---\nunchecked foo: Any\n(foo) = λa λb λc let {d e} = c; (a b (d e))\n\nunchecked main: Any\n(main) = (foo 2 3 λa a)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__adt_tup_era.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/adt_tup_era.bend\n---\nScott\nunchecked Foo: Any\n(Foo) = λa (a λb λc (b λd λ* λ* d c))\n\nunchecked Main: Any\n(Main) = (Foo (Tuple/Pair 1 5))\n\nTuple/Pair: (Any -> Any -> Tuple)\n(Tuple/Pair) = λa λb λc (c a b)\n\nNumScott\nunchecked Foo: Any\n(Foo) = λa (a λb switch b { 0: λc λd (c λe switch e { 0: λf λ* λ* f; _: *; } d); _: *; })\n\nunchecked Main: Any\n(Main) = (Foo (Tuple/Pair 1 5))\n\nTuple/Pair/tag: _\n(Tuple/Pair/tag) = 0\n\nTuple/Pair: (Any -> Any -> Tuple)\n(Tuple/Pair) = λa λb λc (c Tuple/Pair/tag a b)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__and3.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/and3.bend\n---\nScott\nunchecked And: Any\n(And) = λa let (b, c, d) = a; (b λe λf (e λg (g Bool/T Bool/F) λ* Bool/F f) λ* λ* Bool/F c d)\n\nunchecked main: Any\n(main) = (And (Bool/F, Bool/T, Bool/F))\n\nBool/T: Bool\n(Bool/T) = λa λ* a\n\nBool/F: Bool\n(Bool/F) = λ* λb b\n\nNumScott\nunchecked And: Any\n(And) = λa let (b, c, d) = a; (b λe switch e { 0: λf λg (f λh switch h { 0: λi (i λj switch j { 0: Bool/T; _: λ* Bool/F; }); _: λ* λ* Bool/F; } g); _: λ* λ* λ* Bool/F; } c d)\n\nunchecked main: Any\n(main) = (And (Bool/F, Bool/T, Bool/F))\n\nBool/T/tag: _\n(Bool/T/tag) = 0\n\nBool/T: Bool\n(Bool/T) = λa (a Bool/T/tag)\n\nBool/F/tag: _\n(Bool/F/tag) = 1\n\nBool/F: Bool\n(Bool/F) = λa (a Bool/F/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__bool.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/bool.bend\n---\nScott\nunchecked not: Any\n(not) = λa (a bool/false bool/true)\n\nunchecked and: Any\n(and) = λa (a λb (b bool/true bool/false) λd (d bool/false bool/false))\n\nunchecked and2: Any\n(and2) = λa (a λb b λd let * = d; bool/false)\n\nunchecked and3: Any\n(and3) = λa (a λb (b bool/true bool/false) λd let * = d; bool/false)\n\nunchecked and4: Any\n(and4) = λa (a λb (b bool/true bool/false) λd let * = d; bool/false)\n\nbool/true: bool\n(bool/true) = λa λ* a\n\nbool/false: bool\n(bool/false) = λ* λb b\n\nNumScott\nunchecked not: Any\n(not) = λa (a λb switch b { 0: bool/false; _: λ* bool/true; })\n\nunchecked and: Any\n(and) = λa (a λb switch b { 0: λc (c λe switch e { 0: bool/true; _: λ* bool/false; }); _: λ* λf (f λh switch h { 0: bool/false; _: λ* bool/false; }); })\n\nunchecked and2: Any\n(and2) = λa (a λb switch b { 0: λc c; _: λ* λe let * = e; bool/false; })\n\nunchecked and3: Any\n(and3) = λa (a λb switch b { 0: λc (c λe switch e { 0: bool/true; _: λ* bool/false; }); _: λ* λf let * = f; bool/false; })\n\nunchecked and4: Any\n(and4) = λa (a λb switch b { 0: λc (c λe switch e { 0: bool/true; _: λ* bool/false; }); _: λ* λf let * = f; bool/false; })\n\nbool/true/tag: _\n(bool/true/tag) = 0\n\nbool/true: bool\n(bool/true) = λa (a bool/true/tag)\n\nbool/false/tag: _\n(bool/false/tag) = 1\n\nbool/false: bool\n(bool/false) = λa (a bool/false/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__bool_tup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/bool_tup.bend\n---\nScott\nunchecked foo: Any\n(foo) = λa let (b, c) = a; (b λd d λ* Bool/F c)\n\nunchecked main: Any\n(main) = (foo (Bool/F, Bool/T))\n\nBool/T: Bool\n(Bool/T) = λa λ* a\n\nBool/F: Bool\n(Bool/F) = λ* λb b\n\nNumScott\nunchecked foo: Any\n(foo) = λa let (b, c) = a; (b λd switch d { 0: λe e; _: λ* λ* Bool/F; } c)\n\nunchecked main: Any\n(main) = (foo (Bool/F, Bool/T))\n\nBool/T/tag: _\n(Bool/T/tag) = 0\n\nBool/T: Bool\n(Bool/T) = λa (a Bool/T/tag)\n\nBool/F/tag: _\n(Bool/F/tag) = 1\n\nBool/F: Bool\n(Bool/F) = λa (a Bool/F/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__box.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/box.bend\n---\nScott\nunchecked unbox: Any\n(unbox) = λa (a λb b)\n\nbox/new: (Any -> box)\n(box/new) = λa λb (b a)\n\nNumScott\nunchecked unbox: Any\n(unbox) = λa (a λb switch b { 0: λc c; _: *; })\n\nbox/new/tag: _\n(box/new/tag) = 0\n\nbox/new: (Any -> box)\n(box/new) = λa λb (b box/new/tag a)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__common.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/common.bend\n---\nScott\nBox/Filled: (Any -> Box)\n(Box/Filled) = λa λb λ* (b a)\n\nBox/Empty: Box\n(Box/Empty) = λ* λb b\n\nOption/Some: (Any -> Option)\n(Option/Some) = λa λb λ* (b a)\n\nOption/None: Option\n(Option/None) = λ* λb b\n\nResult_/Ok: (Any -> Result_)\n(Result_/Ok) = λa λb λ* (b a)\n\nResult_/Err: (Any -> Result_)\n(Result_/Err) = λa λ* λc (c a)\n\nList_/Cons: (Any -> Any -> List_)\n(List_/Cons) = λa λb λc λ* (c a b)\n\nList_/Nil: List_\n(List_/Nil) = λ* λb b\n\nBool/True: Bool\n(Bool/True) = λa λ* a\n\nBool/False: Bool\n(Bool/False) = λ* λb b\n\nLight/Red: Light\n(Light/Red) = λa λ* λ* a\n\nLight/Yellow: Light\n(Light/Yellow) = λ* λb λ* b\n\nLight/Green: Light\n(Light/Green) = λ* λ* λc c\n\nDirection/North: Direction\n(Direction/North) = λa λ* λ* λ* a\n\nDirection/South: Direction\n(Direction/South) = λ* λb λ* λ* b\n\nDirection/East: Direction\n(Direction/East) = λ* λ* λc λ* c\n\nDirection/West: Direction\n(Direction/West) = λ* λ* λ* λd d\n\nNumScott\nBox/Filled/tag: _\n(Box/Filled/tag) = 0\n\nBox/Filled: (Any -> Box)\n(Box/Filled) = λa λb (b Box/Filled/tag a)\n\nBox/Empty/tag: _\n(Box/Empty/tag) = 1\n\nBox/Empty: Box\n(Box/Empty) = λa (a Box/Empty/tag)\n\nOption/Some/tag: _\n(Option/Some/tag) = 0\n\nOption/Some: (Any -> Option)\n(Option/Some) = λa λb (b Option/Some/tag a)\n\nOption/None/tag: _\n(Option/None/tag) = 1\n\nOption/None: Option\n(Option/None) = λa (a Option/None/tag)\n\nResult_/Ok/tag: _\n(Result_/Ok/tag) = 0\n\nResult_/Ok: (Any -> Result_)\n(Result_/Ok) = λa λb (b Result_/Ok/tag a)\n\nResult_/Err/tag: _\n(Result_/Err/tag) = 1\n\nResult_/Err: (Any -> Result_)\n(Result_/Err) = λa λb (b Result_/Err/tag a)\n\nList_/Cons/tag: _\n(List_/Cons/tag) = 0\n\nList_/Cons: (Any -> Any -> List_)\n(List_/Cons) = λa λb λc (c List_/Cons/tag a b)\n\nList_/Nil/tag: _\n(List_/Nil/tag) = 1\n\nList_/Nil: List_\n(List_/Nil) = λa (a List_/Nil/tag)\n\nBool/True/tag: _\n(Bool/True/tag) = 0\n\nBool/True: Bool\n(Bool/True) = λa (a Bool/True/tag)\n\nBool/False/tag: _\n(Bool/False/tag) = 1\n\nBool/False: Bool\n(Bool/False) = λa (a Bool/False/tag)\n\nLight/Red/tag: _\n(Light/Red/tag) = 0\n\nLight/Red: Light\n(Light/Red) = λa (a Light/Red/tag)\n\nLight/Yellow/tag: _\n(Light/Yellow/tag) = 1\n\nLight/Yellow: Light\n(Light/Yellow) = λa (a Light/Yellow/tag)\n\nLight/Green/tag: _\n(Light/Green/tag) = 2\n\nLight/Green: Light\n(Light/Green) = λa (a Light/Green/tag)\n\nDirection/North/tag: _\n(Direction/North/tag) = 0\n\nDirection/North: Direction\n(Direction/North) = λa (a Direction/North/tag)\n\nDirection/South/tag: _\n(Direction/South/tag) = 1\n\nDirection/South: Direction\n(Direction/South) = λa (a Direction/South/tag)\n\nDirection/East/tag: _\n(Direction/East/tag) = 2\n\nDirection/East: Direction\n(Direction/East) = λa (a Direction/East/tag)\n\nDirection/West/tag: _\n(Direction/West/tag) = 3\n\nDirection/West: Direction\n(Direction/West) = λa (a Direction/West/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__concat.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/concat.bend\n---\nScott\nunchecked String/concat: Any\n(String/concat) = λ* λb b\n\nunchecked main: Any\n(main) = (String/concat (String/Cons 97 (String/Cons 98 String/Nil)) (String/Cons 99 (String/Cons 100 String/Nil)))\n\nString/Nil: String\n(String/Nil) = λa λ* a\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λa λb λ* λd (d a b)\n\nNumScott\nunchecked String/concat: Any\n(String/concat) = λ* λb b\n\nunchecked main: Any\n(main) = (String/concat (String/Cons 97 (String/Cons 98 String/Nil)) (String/Cons 99 (String/Cons 100 String/Nil)))\n\nString/Nil/tag: _\n(String/Nil/tag) = 0\n\nString/Nil: String\n(String/Nil) = λa (a String/Nil/tag)\n\nString/Cons/tag: _\n(String/Cons/tag) = 1\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λa λb λc (c String/Cons/tag a b)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__concat_def.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/concat_def.bend\n---\nScott\nunchecked concat: Any\n(concat) = λa (a λb b λd λe λf (String/Cons d (concat e f)))\n\nunchecked main: Any\n(main) = (concat (String/Cons 97 (String/Cons 98 String/Nil)) (String/Cons 99 (String/Cons 100 String/Nil)))\n\nString/Nil: String\n(String/Nil) = λa λ* a\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λa λb λ* λd (d a b)\n\nNumScott\nunchecked concat: Any\n(concat) = λa (a λb switch b { 0: λc c; _: λ* λe λf λg (String/Cons e (concat f g)); })\n\nunchecked main: Any\n(main) = (concat (String/Cons 97 (String/Cons 98 String/Nil)) (String/Cons 99 (String/Cons 100 String/Nil)))\n\nString/Nil/tag: _\n(String/Nil/tag) = 0\n\nString/Nil: String\n(String/Nil) = λa (a String/Nil/tag)\n\nString/Cons/tag: _\n(String/Cons/tag) = 1\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λa λb λc (c String/Cons/tag a b)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__def_tups.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/def_tups.bend\n---\nScott\nunchecked go: Any\n(go) = λa let (b, c) = a; let (d, e) = c; let (f, g) = e; let (h, i) = g; (+ (+ (+ (+ i h) f) d) b)\n\nunchecked main: Any\n(main) = (go (1, (2, (3, (4, 5)))))\n\nNumScott\nunchecked go: Any\n(go) = λa let (b, c) = a; let (d, e) = c; let (f, g) = e; let (h, i) = g; (+ (+ (+ (+ i h) f) d) b)\n\nunchecked main: Any\n(main) = (go (1, (2, (3, (4, 5)))))\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__definition_merge.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/definition_merge.bend\n---\nScott\nunchecked Foo: Any\n(Foo) = λa (a λb (b λc (c λf (f 1 1) λg (g 2 2)) λh (h λk (k 1 1) λl (l 2 2))) λm (m λn (n λq (q 3 3) λr (r 3 3)) λs (s λv (v 3 3) λw (w 3 3))))\n\nEither/Left: (Any -> Either)\n(Either/Left) = λa λb λ* (b a)\n\nEither/Right: (Any -> Either)\n(Either/Right) = λa λ* λc (c a)\n\nBool/True: Bool\n(Bool/True) = λa λ* a\n\nBool/False: Bool\n(Bool/False) = λ* λb b\n\nNumScott\nunchecked Foo: Any\n(Foo) = λa (a λb switch b { 0: λc (c λd switch d { 0: λe (e λh switch h { 0: λi (i λj switch j { 0: 1; _: λ* 1; }); _: λ* λk (k λl switch l { 0: 2; _: λ* 2; }); }); _: λ* λm (m λp switch p { 0: λq (q λr switch r { 0: 1; _: λ* 1; }); _: λ* λs (s λt switch t { 0: 2; _: λ* 2; }); }); }); _: λ* λu (u λv switch v { 0: λw (w λz switch z { 0: λab (ab λbb switch bb { 0: 3; _: λ* 3; }); _: λ* λcb (cb λdb switch db { 0: 3; _: λ* 3; }); }); _: λ* λeb (eb λhb switch hb { 0: λib (ib λjb switch jb { 0: 3; _: λ* 3; }); _: λ* λkb (kb λlb switch lb { 0: 3; _: λ* 3; }); }); }); })\n\nEither/Left/tag: _\n(Either/Left/tag) = 0\n\nEither/Left: (Any -> Either)\n(Either/Left) = λa λb (b Either/Left/tag a)\n\nEither/Right/tag: _\n(Either/Right/tag) = 1\n\nEither/Right: (Any -> Either)\n(Either/Right) = λa λb (b Either/Right/tag a)\n\nBool/True/tag: _\n(Bool/True/tag) = 0\n\nBool/True: Bool\n(Bool/True) = λa (a Bool/True/tag)\n\nBool/False/tag: _\n(Bool/False/tag) = 1\n\nBool/False: Bool\n(Bool/False) = λa (a Bool/False/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__expr.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/expr.bend\n---\nScott\nExpr/Var: (Any -> Expr)\n(Expr/Var) = λa λb λ* λ* λ* λ* λ* λ* λ* λ* (b a)\n\nExpr/Num: (Any -> Expr)\n(Expr/Num) = λa λ* λc λ* λ* λ* λ* λ* λ* λ* (c a)\n\nExpr/App: (Any -> Any -> Expr)\n(Expr/App) = λa λb λ* λ* λe λ* λ* λ* λ* λ* λ* (e a b)\n\nExpr/Fun: (Any -> Any -> Expr)\n(Expr/Fun) = λa λb λ* λ* λ* λf λ* λ* λ* λ* λ* (f a b)\n\nExpr/If: (Any -> Any -> Any -> Expr)\n(Expr/If) = λa λb λc λ* λ* λ* λ* λh λ* λ* λ* λ* (h a b c)\n\nExpr/Let: (Any -> Any -> Any -> Expr)\n(Expr/Let) = λa λb λc λ* λ* λ* λ* λ* λi λ* λ* λ* (i a b c)\n\nExpr/Dup: (Any -> Any -> Any -> Any -> Expr)\n(Expr/Dup) = λa λb λc λd λ* λ* λ* λ* λ* λ* λk λ* λ* (k a b c d)\n\nExpr/Tup: (Any -> Any -> Expr)\n(Expr/Tup) = λa λb λ* λ* λ* λ* λ* λ* λ* λj λ* (j a b)\n\nExpr/Op2: (Any -> Any -> Any -> Expr)\n(Expr/Op2) = λa λb λc λ* λ* λ* λ* λ* λ* λ* λ* λl (l a b c)\n\nOp/Add: Op\n(Op/Add) = λa λ* λ* λ* a\n\nOp/Sub: Op\n(Op/Sub) = λ* λb λ* λ* b\n\nOp/Mul: Op\n(Op/Mul) = λ* λ* λc λ* c\n\nOp/Div: Op\n(Op/Div) = λ* λ* λ* λd d\n\nNumScott\nExpr/Var/tag: _\n(Expr/Var/tag) = 0\n\nExpr/Var: (Any -> Expr)\n(Expr/Var) = λa λb (b Expr/Var/tag a)\n\nExpr/Num/tag: _\n(Expr/Num/tag) = 1\n\nExpr/Num: (Any -> Expr)\n(Expr/Num) = λa λb (b Expr/Num/tag a)\n\nExpr/App/tag: _\n(Expr/App/tag) = 2\n\nExpr/App: (Any -> Any -> Expr)\n(Expr/App) = λa λb λc (c Expr/App/tag a b)\n\nExpr/Fun/tag: _\n(Expr/Fun/tag) = 3\n\nExpr/Fun: (Any -> Any -> Expr)\n(Expr/Fun) = λa λb λc (c Expr/Fun/tag a b)\n\nExpr/If/tag: _\n(Expr/If/tag) = 4\n\nExpr/If: (Any -> Any -> Any -> Expr)\n(Expr/If) = λa λb λc λd (d Expr/If/tag a b c)\n\nExpr/Let/tag: _\n(Expr/Let/tag) = 5\n\nExpr/Let: (Any -> Any -> Any -> Expr)\n(Expr/Let) = λa λb λc λd (d Expr/Let/tag a b c)\n\nExpr/Dup/tag: _\n(Expr/Dup/tag) = 6\n\nExpr/Dup: (Any -> Any -> Any -> Any -> Expr)\n(Expr/Dup) = λa λb λc λd λe (e Expr/Dup/tag a b c d)\n\nExpr/Tup/tag: _\n(Expr/Tup/tag) = 7\n\nExpr/Tup: (Any -> Any -> Expr)\n(Expr/Tup) = λa λb λc (c Expr/Tup/tag a b)\n\nExpr/Op2/tag: _\n(Expr/Op2/tag) = 8\n\nExpr/Op2: (Any -> Any -> Any -> Expr)\n(Expr/Op2) = λa λb λc λd (d Expr/Op2/tag a b c)\n\nOp/Add/tag: _\n(Op/Add/tag) = 0\n\nOp/Add: Op\n(Op/Add) = λa (a Op/Add/tag)\n\nOp/Sub/tag: _\n(Op/Sub/tag) = 1\n\nOp/Sub: Op\n(Op/Sub) = λa (a Op/Sub/tag)\n\nOp/Mul/tag: _\n(Op/Mul/tag) = 2\n\nOp/Mul: Op\n(Op/Mul) = λa (a Op/Mul/tag)\n\nOp/Div/tag: _\n(Op/Div/tag) = 3\n\nOp/Div: Op\n(Op/Div) = λa (a Op/Div/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__flatten_era_pat.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/flatten_era_pat.bend\n---\nScott\nunchecked Fn1: Any\n(Fn1) = λa λ* let (*, d) = a; let (e, *) = d; e\n\nunchecked Fn2: Any\n(Fn2) = λa let (*, c) = a; let (*, e) = c; let (f, *) = e; f\n\nunchecked Fn3: Any\n(Fn3) = λa let (b, c) = a; (switch b { 0: λ* λe let * = e; 0; _: λg λ* λi let * = i; (+ g 1); } c)\n\nunchecked main: Any\n(main) = (Fn2 ((1, 2), (3, (4, (5, 6)))) 0)\n\nNumScott\nunchecked Fn1: Any\n(Fn1) = λa λ* let (*, d) = a; let (e, *) = d; e\n\nunchecked Fn2: Any\n(Fn2) = λa let (*, c) = a; let (*, e) = c; let (f, *) = e; f\n\nunchecked Fn3: Any\n(Fn3) = λa let (b, c) = a; (switch b { 0: λ* λe let * = e; 0; _: λg λ* λi let * = i; (+ g 1); } c)\n\nunchecked main: Any\n(main) = (Fn2 ((1, 2), (3, (4, (5, 6)))) 0)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__full_map.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/full_map.bend\n---\nScott\nMaybe/unwrap: ((Maybe T) -> T)\n(Maybe/unwrap) = λa (a λb b unreachable)\n\nMap/get: ((Map T) -> u24 -> (T, (Map T)))\n(Map/get) = λa (a λb let {b b_2 b_3 b_4} = b; λc let {c c_2 c_3} = c; λd let {d d_2 d_3} = d; λe let {e e_2 e_3 e_4} = e; switch (== 0 e) { 0: switch (== (% e_2 2) 0) { 0: let (f, g) = (Map/get d (/ e_3 2)); (f, (Map/Node b c g)); _: λ* let (i, j) = (Map/get c_2 (/ e_4 2)); (i, (Map/Node b_2 j d_2)); }; _: λ* ((Maybe/unwrap b_3), (Map/Node b_4 c_3 d_3)); } λ* (unreachable, Map/Leaf))\n\nunreachable: Any\n(unreachable) = *\n\nunchecked prng: (Any -> Any)\n(prng) = λa let {a a_2} = a; let {b b_2} = (^ a (<< a_2 13)); let {c c_2} = (^ b (>> b_2 17)); (^ c (<< c_2 5))\n\nunchecked fullMap: Any\n(fullMap) = (fullMap__bend0 14)\n\nunchecked test: (Any -> Any)\n(test) = λa (test__bend0 0 a)\n\nunchecked main: Any\n(main) = (test fullMap)\n\nMap/Node: ((Maybe T) -> (Map T) -> (Map T) -> (Map T))\n(Map/Node) = λa λb λc λd λ* (d a b c)\n\nMap/Leaf: (Map T)\n(Map/Leaf) = λ* λb b\n\nunchecked fullMap__bend0: _\n(fullMap__bend0) = λa let {a a_2 a_3} = a; switch (> a 0) { 0: Map/Leaf; _: λ* (Map/Node 1 (fullMap__bend0 (- a_2 1)) (fullMap__bend0 (- a_3 1))); }\n\nunchecked test__bend0: _\n(test__bend0) = λa let {a a_2 a_3} = a; switch (< a 1000) { 0: λ* 0; _: λ* λd let (e, f) = (Map/get d (% (prng a_2) 4096)); (+ e (test__bend0 (+ a_3 1) f)); }\n\nNumScott\nMaybe/unwrap: ((Maybe T) -> T)\n(Maybe/unwrap) = λa (a λb switch b { 0: λc c; _: λ* unreachable; })\n\nMap/get: ((Map T) -> u24 -> (T, (Map T)))\n(Map/get) = λa (a λb switch b { 0: λc let {c c_2 c_3 c_4} = c; λd let {d d_2 d_3} = d; λe let {e e_2 e_3} = e; λf let {f f_2 f_3 f_4} = f; switch (== 0 f) { 0: switch (== (% f_2 2) 0) { 0: let (g, h) = (Map/get e (/ f_3 2)); (g, (Map/Node c d h)); _: λ* let (j, k) = (Map/get d_2 (/ f_4 2)); (j, (Map/Node c_2 k e_2)); }; _: λ* ((Maybe/unwrap c_3), (Map/Node c_4 d_3 e_3)); }; _: λ* λ* (unreachable, Map/Leaf); })\n\nunreachable: Any\n(unreachable) = *\n\nunchecked prng: (Any -> Any)\n(prng) = λa let {a a_2} = a; let {b b_2} = (^ a (<< a_2 13)); let {c c_2} = (^ b (>> b_2 17)); (^ c (<< c_2 5))\n\nunchecked fullMap: Any\n(fullMap) = (fullMap__bend0 14)\n\nunchecked test: (Any -> Any)\n(test) = λa (test__bend0 0 a)\n\nunchecked main: Any\n(main) = (test fullMap)\n\nMap/Node/tag: _\n(Map/Node/tag) = 0\n\nMap/Node: ((Maybe T) -> (Map T) -> (Map T) -> (Map T))\n(Map/Node) = λa λb λc λd (d Map/Node/tag a b c)\n\nMap/Leaf/tag: _\n(Map/Leaf/tag) = 1\n\nMap/Leaf: (Map T)\n(Map/Leaf) = λa (a Map/Leaf/tag)\n\nunchecked fullMap__bend0: _\n(fullMap__bend0) = λa let {a a_2 a_3} = a; switch (> a 0) { 0: Map/Leaf; _: λ* (Map/Node 1 (fullMap__bend0 (- a_2 1)) (fullMap__bend0 (- a_3 1))); }\n\nunchecked test__bend0: _\n(test__bend0) = λa let {a a_2 a_3} = a; switch (< a 1000) { 0: λ* 0; _: λ* λd let (e, f) = (Map/get d (% (prng a_2) 4096)); (+ e (test__bend0 (+ a_3 1) f)); }\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__is_some_some.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/is_some_some.bend\n---\nScott\nunchecked some_some: Any\n(some_some) = λa (a λb (b λ* 1 0) 0)\n\nunchecked main: Any\n(main) = (some_some (Option/Some 1))\n\nOption/Some: (Any -> Option)\n(Option/Some) = λa λb λ* (b a)\n\nOption/None: Option\n(Option/None) = λ* λb b\n\nNumScott\nunchecked some_some: Any\n(some_some) = λa (a λb switch b { 0: λc (c λd switch d { 0: λ* 1; _: λ* 0; }); _: λ* 0; })\n\nunchecked main: Any\n(main) = (some_some (Option/Some 1))\n\nOption/Some/tag: _\n(Option/Some/tag) = 0\n\nOption/Some: (Any -> Option)\n(Option/Some) = λa λb (b Option/Some/tag a)\n\nOption/None/tag: _\n(Option/None/tag) = 1\n\nOption/None: Option\n(Option/None) = λa (a Option/None/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__list_merge_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/list_merge_sort.bend\n---\nScott\nunchecked If: Any\n(If) = λa (a λb λc let * = c; b λf λg let * = f; g)\n\nunchecked Pure: Any\n(Pure) = λa (List_/Cons a List_/Nil)\n\nunchecked Map: Any\n(Map) = λa (a λb λc λd let {e e_2} = d; (List_/Cons (e b) (Map c e_2)) λf let * = f; List_/Nil)\n\nunchecked MergeSort: Any\n(MergeSort) = λa λb (Unpack a (Map b Pure))\n\nunchecked Unpack: Any\n(Unpack) = λa λb (b λc λd λe (d λf λg λh let {h h_2} = h; λi (Unpack h (MergePair h_2 (List_/Cons i (List_/Cons f g)))) λ* λk k e c) λ* List_/Nil a)\n\nunchecked MergePair: Any\n(MergePair) = λa λb (b λc λd λe (d λf λg λh let {h h_2} = h; λi (List_/Cons (Merge h i f) (MergePair h_2 g)) λ* λk (List_/Cons k List_/Nil) e c) λ* List_/Nil a)\n\nunchecked Merge: Any\n(Merge) = λa λb (b λc λd λe λf (f λh let {h h_2 h_3} = h; λi let {i i_2} = i; λj let {j j_2 j_3} = j; λk let {k k_2 k_3} = k; λl let {l l_2} = l; (If (j k h) (List_/Cons k_2 (Merge j_2 l (List_/Cons h_2 i))) (List_/Cons h_3 (Merge j_3 (List_/Cons k_3 l_2) i_2))) λ* λp λq (List_/Cons p q) e c d) λ* λs s a)\n\nBool/True: Bool\n(Bool/True) = λa λ* a\n\nBool/False: Bool\n(Bool/False) = λ* λb b\n\nList_/Cons: (Any -> Any -> List_)\n(List_/Cons) = λa λb λc λ* (c a b)\n\nList_/Nil: List_\n(List_/Nil) = λ* λb b\n\nNumScott\nunchecked If: Any\n(If) = λa (a λb switch b { 0: λc λd let * = d; c; _: λ* λg λh let * = g; h; })\n\nunchecked Pure: Any\n(Pure) = λa (List_/Cons a List_/Nil)\n\nunchecked Map: Any\n(Map) = λa (a λb switch b { 0: λc λd λe let {f f_2} = e; (List_/Cons (f c) (Map d f_2)); _: λ* λg let * = g; List_/Nil; })\n\nunchecked MergeSort: Any\n(MergeSort) = λa λb (Unpack a (Map b Pure))\n\nunchecked Unpack: Any\n(Unpack) = λa λb (b λc switch c { 0: λd λe λf (e λg switch g { 0: λh λi λj let {j j_2} = j; λk (Unpack j (MergePair j_2 (List_/Cons k (List_/Cons h i)))); _: λ* λ* λm m; } f d); _: λ* λ* List_/Nil; } a)\n\nunchecked MergePair: Any\n(MergePair) = λa λb (b λc switch c { 0: λd λe λf (e λg switch g { 0: λh λi λj let {j j_2} = j; λk (List_/Cons (Merge j k h) (MergePair j_2 i)); _: λ* λ* λm (List_/Cons m List_/Nil); } f d); _: λ* λ* List_/Nil; } a)\n\nunchecked Merge: Any\n(Merge) = λa λb (b λc switch c { 0: λd λe λf λg (g λi switch i { 0: λj let {j j_2 j_3} = j; λk let {k k_2} = k; λl let {l l_2 l_3} = l; λm let {m m_2 m_3} = m; λn let {n n_2} = n; (If (l m j) (List_/Cons m_2 (Merge l_2 n (List_/Cons j_2 k))) (List_/Cons j_3 (Merge l_3 (List_/Cons m_3 n_2) k_2))); _: λ* λ* λr λs (List_/Cons r s); } f d e); _: λ* λ* λu u; } a)\n\nBool/True/tag: _\n(Bool/True/tag) = 0\n\nBool/True: Bool\n(Bool/True) = λa (a Bool/True/tag)\n\nBool/False/tag: _\n(Bool/False/tag) = 1\n\nBool/False: Bool\n(Bool/False) = λa (a Bool/False/tag)\n\nList_/Cons/tag: _\n(List_/Cons/tag) = 0\n\nList_/Cons: (Any -> Any -> List_)\n(List_/Cons) = λa λb λc (c List_/Cons/tag a b)\n\nList_/Nil/tag: _\n(List_/Nil/tag) = 1\n\nList_/Nil: List_\n(List_/Nil) = λa (a List_/Nil/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__list_str_encoding_undeclared_fn.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/list_str_encoding_undeclared_fn.bend\n---\nScott\nunchecked main: Any\n(main) = *\n\nunchecked Foo: Any\n(Foo) = λa (a 0 λ* λ* 1)\n\nunchecked Bar: Any\n(Bar) = λa (a 1 λ* λ* 0)\n\nNumScott\nunchecked main: Any\n(main) = *\n\nunchecked Foo: Any\n(Foo) = λa (a λb switch b { 0: 0; _: λ* λ* λ* 1; })\n\nunchecked Bar: Any\n(Bar) = λa (a λb switch b { 0: 1; _: λ* λ* λ* 0; })\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__list_str_encoding_undeclared_map.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/list_str_encoding_undeclared_map.bend\n---\nScott\nunchecked main: Any\n(main) = λa λb ((a 2 λ* λ* 1), (b 2 λ* λ* 1))\n\nNumScott\nunchecked main: Any\n(main) = λa λb ((a λc switch c { 0: 2; _: λ* λ* λ* 1; }), (b λg switch g { 0: 2; _: λ* λ* λ* 1; }))\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__match_adt_unscoped_in_arm.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/match_adt_unscoped_in_arm.bend\n---\nScott\nunchecked main: Any\n(main) = λ* λ$x $x\n\nbool/T: bool\n(bool/T) = λa λ* a\n\nbool/F: bool\n(bool/F) = λ* λb b\n\nNumScott\nunchecked main: Any\n(main) = λ* λ$x $x\n\nbool/T/tag: _\n(bool/T/tag) = 0\n\nbool/T: bool\n(bool/T) = λa (a bool/T/tag)\n\nbool/F/tag: _\n(bool/F/tag) = 1\n\nbool/F: bool\n(bool/F) = λa (a bool/F/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__match_adt_unscoped_lambda.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/match_adt_unscoped_lambda.bend\n---\nScott\nunchecked main: Any\n(main) = (Maybe_/Some 1 λ$x * λa a $x)\n\nMaybe_/None: Maybe_\n(Maybe_/None) = λa λ* a\n\nMaybe_/Some: (Any -> Maybe_)\n(Maybe_/Some) = λa λ* λc (c a)\n\nNumScott\nunchecked main: Any\n(main) = (Maybe_/Some 1 λa switch a { 0: λ$x *; _: λ* λb b; } $x)\n\nMaybe_/None/tag: _\n(Maybe_/None/tag) = 0\n\nMaybe_/None: Maybe_\n(Maybe_/None) = λa (a Maybe_/None/tag)\n\nMaybe_/Some/tag: _\n(Maybe_/Some/tag) = 1\n\nMaybe_/Some: (Any -> Maybe_)\n(Maybe_/Some) = λa λb (b Maybe_/Some/tag a)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__match_adt_unscoped_var.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/match_adt_unscoped_var.bend\n---\nScott\nunchecked Foo: Any\n(Foo) = λ$x (Maybe_/Some 1 $x λa a)\n\nunchecked Bar: Any\n(Bar) = (Maybe_/Some 1 $x λa a λ$x *)\n\nunchecked main: Any\n(main) = *\n\nMaybe_/None: Maybe_\n(Maybe_/None) = λa λ* a\n\nMaybe_/Some: (Any -> Maybe_)\n(Maybe_/Some) = λa λ* λc (c a)\n\nNumScott\nunchecked Foo: Any\n(Foo) = λ$x (Maybe_/Some 1 λa switch a { 0: $x; _: λ* λb b; })\n\nunchecked Bar: Any\n(Bar) = (Maybe_/Some 1 λa switch a { 0: $x; _: λ* λb b; } λ$x *)\n\nunchecked main: Any\n(main) = *\n\nMaybe_/None/tag: _\n(Maybe_/None/tag) = 0\n\nMaybe_/None: Maybe_\n(Maybe_/None) = λa (a Maybe_/None/tag)\n\nMaybe_/Some/tag: _\n(Maybe_/Some/tag) = 1\n\nMaybe_/Some: (Any -> Maybe_)\n(Maybe_/Some) = λa λb (b Maybe_/Some/tag a)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__match_auto_linearization.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/match_auto_linearization.bend\n---\nScott\nunchecked switch_linearization: Any\n(switch_linearization) = λa let {a a_2 a_3 a_4} = a; λb let {b b_2 b_3 b_4 b_5} = b; let (c, d) = (a, b); let {d d_2} = d; let {c c_2} = c; switch a_2 { 0: let {e e_2} = 2; let {f g} = e; (b_2 e_2 f g (a_3, b_3) c d); _: λh let {i i_2} = 2; let {j k} = i; (h b_4 i_2 j k (a_4, b_5) c_2 d_2); }\n\nunchecked match_linearization: Any\n(match_linearization) = λa let {a a_2 a_3 a_4} = a; λb let {b b_2 b_3 b_4 b_5} = b; let (c, d) = (a, b); let {d d_2} = d; let {c c_2} = c; (a_2 λe let {f f_2} = 2; let {g h} = f; (e b_2 f_2 g h (a_3, b_3) c d) let {i i_2} = 2; let {j k} = i; (b_4 i_2 j k (a_4, b_5) c_2 d_2))\n\nunchecked switch_shadowed_field: Any\n(switch_shadowed_field) = λa switch a { 0: λb b; _: λc λ* c; }\n\nunchecked match_shadowed_field: Any\n(match_shadowed_field) = λa (a λb λc (List/Cons b c) λd λe λ* λ* (List/Cons d e))\n\nList/Cons: (T -> (List T) -> (List T))\n(List/Cons) = λa λb λ* λd (d a b)\n\nNumScott\nunchecked switch_linearization: Any\n(switch_linearization) = λa let {a a_2 a_3 a_4} = a; λb let {b b_2 b_3 b_4 b_5} = b; let (c, d) = (a, b); let {d d_2} = d; let {c c_2} = c; switch a_2 { 0: let {e e_2} = 2; let {f g} = e; (b_2 e_2 f g (a_3, b_3) c d); _: λh let {i i_2} = 2; let {j k} = i; (h b_4 i_2 j k (a_4, b_5) c_2 d_2); }\n\nunchecked match_linearization: Any\n(match_linearization) = λa let {a a_2 a_3 a_4} = a; λb let {b b_2 b_3 b_4 b_5} = b; let (c, d) = (a, b); let {d d_2} = d; let {c c_2} = c; (a_2 λe switch e { 0: λf let {g g_2} = 2; let {h i} = g; (f b_2 g_2 h i (a_3, b_3) c d); _: λ* let {j j_2} = 2; let {k l} = j; (b_4 j_2 k l (a_4, b_5) c_2 d_2); })\n\nunchecked switch_shadowed_field: Any\n(switch_shadowed_field) = λa switch a { 0: λb b; _: λc λ* c; }\n\nunchecked match_shadowed_field: Any\n(match_shadowed_field) = λa (a λb switch b { 0: λc λd (List/Cons c d); _: λ* λe λf λ* λ* (List/Cons e f); })\n\nList/Cons/tag: _\n(List/Cons/tag) = 1\n\nList/Cons: (T -> (List T) -> (List T))\n(List/Cons) = λa λb λc (c List/Cons/tag a b)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__match_bind.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/match_bind.bend\n---\nScott\nunchecked cheese: Any\n(cheese) = switch (+ 2 3) { 0: 653323; _: λa let {a a_2} = a; (+ (+ a 1) a_2); }\n\nunchecked main: Any\n(main) = cheese\n\nNumScott\nunchecked cheese: Any\n(cheese) = switch (+ 2 3) { 0: 653323; _: λa let {a a_2} = a; (+ (+ a 1) a_2); }\n\nunchecked main: Any\n(main) = cheese\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__match_num_adt_tup_parser.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/match_num_adt_tup_parser.bend\n---\nScott\nunchecked Parse: Any\n(Parse) = λa λb (b λc (Result_/Err (String/Nil, c)) λd λe λf (switch (- d 10) { 0: λg λh (Result_/Ok (0, h, g)); _: λi λj λk (switch (- i 29) { 0: λl λm (Result_/Ok (40, m, l)); _: λn λo λp (switch n { 0: λq λr (Result_/Ok (41, r, q)); _: λs λt λu (Result_/Err ((String/Cons (+ s 42) u), t)); } o p); } j k); } f e) a)\n\nunchecked main: Any\n(main) = (Parse * (String/Cons 40 (String/Cons 43 String/Nil)) λc let (d, e, f) = c; (d, (Parse f e)) λg (Result_/Err g))\n\nString/Nil: String\n(String/Nil) = λa λ* a\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λa λb λ* λd (d a b)\n\nResult_/Ok: (Any -> Result_)\n(Result_/Ok) = λa λb λ* (b a)\n\nResult_/Err: (Any -> Result_)\n(Result_/Err) = λa λ* λc (c a)\n\nNumScott\nunchecked Parse: Any\n(Parse) = λa λb (b λc switch c { 0: λd (Result_/Err (String/Nil, d)); _: λ* λe λf λg (switch (- e 10) { 0: λh λi (Result_/Ok (0, i, h)); _: λj λk λl (switch (- j 29) { 0: λm λn (Result_/Ok (40, n, m)); _: λo λp λq (switch o { 0: λr λs (Result_/Ok (41, s, r)); _: λt λu λv (Result_/Err ((String/Cons (+ t 42) v), u)); } p q); } k l); } g f); } a)\n\nunchecked main: Any\n(main) = (Parse * (String/Cons 40 (String/Cons 43 String/Nil)) λc switch c { 0: λd let (e, f, g) = d; (e, (Parse g f)); _: λ* λh (Result_/Err h); })\n\nString/Nil/tag: _\n(String/Nil/tag) = 0\n\nString/Nil: String\n(String/Nil) = λa (a String/Nil/tag)\n\nString/Cons/tag: _\n(String/Cons/tag) = 1\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λa λb λc (c String/Cons/tag a b)\n\nResult_/Ok/tag: _\n(Result_/Ok/tag) = 0\n\nResult_/Ok: (Any -> Result_)\n(Result_/Ok) = λa λb (b Result_/Ok/tag a)\n\nResult_/Err/tag: _\n(Result_/Err/tag) = 1\n\nResult_/Err: (Any -> Result_)\n(Result_/Err) = λa λb (b Result_/Err/tag a)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__match_num_pred.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/match_num_pred.bend\n---\nScott\nunchecked pred: Any\n(pred) = λa switch a { 0: 0; _: λb b; }\n\nunchecked pred2: Any\n(pred2) = λa switch a { 0: 0; _: λb switch b { 0: 0; _: λc c; }; }\n\nunchecked pred3: Any\n(pred3) = λa switch a { 0: 0; _: λb switch b { 0: 0; _: λc switch c { 0: 0; _: λd d; }; }; }\n\nunchecked zero: Any\n(zero) = λa switch a { 0: 1; _: λb switch b { 0: 0; _: λ* 0; }; }\n\nunchecked main: Any\n(main) = *\n\nNumScott\nunchecked pred: Any\n(pred) = λa switch a { 0: 0; _: λb b; }\n\nunchecked pred2: Any\n(pred2) = λa switch a { 0: 0; _: λb switch b { 0: 0; _: λc c; }; }\n\nunchecked pred3: Any\n(pred3) = λa switch a { 0: 0; _: λb switch b { 0: 0; _: λc switch c { 0: 0; _: λd d; }; }; }\n\nunchecked zero: Any\n(zero) = λa switch a { 0: 1; _: λb switch b { 0: 0; _: λ* 0; }; }\n\nunchecked main: Any\n(main) = *\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__match_syntax.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/match_syntax.bend\n---\nScott\nunchecked head: Any\n(head) = λa (a λb λ* b List_/Nil)\n\nList_/Cons: (Any -> Any -> List_)\n(List_/Cons) = λa λb λc λ* (c a b)\n\nList_/Nil: List_\n(List_/Nil) = λ* λb b\n\nNumScott\nunchecked head: Any\n(head) = λa (a λb switch b { 0: λc λ* c; _: λ* List_/Nil; })\n\nList_/Cons/tag: _\n(List_/Cons/tag) = 0\n\nList_/Cons: (Any -> Any -> List_)\n(List_/Cons) = λa λb λc (c List_/Cons/tag a b)\n\nList_/Nil/tag: _\n(List_/Nil/tag) = 1\n\nList_/Nil: List_\n(List_/Nil) = λa (a List_/Nil/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__merge_recursive.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/merge_recursive.bend\n---\nScott\nunchecked foo_1: Any\n(foo_1) = λa (a foo_2)\n\nunchecked foo_2: Any\n(foo_2) = λa λb (a, b)\n\nunchecked bar_1: Any\n(bar_1) = λa (a bar_2)\n\nunchecked bar_2: Any\n(bar_2) = λa λb (a, b)\n\nNumScott\nunchecked foo_1: Any\n(foo_1) = λa (a foo_2)\n\nunchecked foo_2: Any\n(foo_2) = λa λb (a, b)\n\nunchecked bar_1: Any\n(bar_1) = λa (a bar_2)\n\nunchecked bar_2: Any\n(bar_2) = λa λb (a, b)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__no_patterns.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/no_patterns.bend\n---\nScott\nunchecked Id: Any\n(Id) = λa a\n\nunchecked Id2: Any\n(Id2) = λa a\n\nunchecked Pair: Any\n(Pair) = λa λb (a, b)\n\nNumScott\nunchecked Id: Any\n(Id) = λa a\n\nunchecked Id2: Any\n(Id2) = λa a\n\nunchecked Pair: Any\n(Pair) = λa λb (a, b)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__non_matching_fst_arg.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/non_matching_fst_arg.bend\n---\nScott\nunchecked Foo: Any\n(Foo) = λa λb (b λc let {c c_2} = c; (Foo c c_2) λd d a)\n\nbool/true: bool\n(bool/true) = λa λ* a\n\nbool/false: bool\n(bool/false) = λ* λb b\n\nNumScott\nunchecked Foo: Any\n(Foo) = λa λb (b λc switch c { 0: λd let {d d_2} = d; (Foo d d_2); _: λ* λe e; } a)\n\nbool/true/tag: _\n(bool/true/tag) = 0\n\nbool/true: bool\n(bool/true) = λa (a bool/true/tag)\n\nbool/false/tag: _\n(bool/false/tag) = 1\n\nbool/false: bool\n(bool/false) = λa (a bool/false/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__ntup_sum.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/ntup_sum.bend\n---\nScott\nunchecked ntupSum: Any\n(ntupSum) = λa let (b, c, d, e, f) = a; (+ b (+ c (+ d (+ e f))))\n\nunchecked main: Any\n(main) = (ntupSum (1, 3, 3, 2, 1))\n\nNumScott\nunchecked ntupSum: Any\n(ntupSum) = λa let (b, c, d, e, f) = a; (+ b (+ c (+ d (+ e f))))\n\nunchecked main: Any\n(main) = (ntupSum (1, 3, 3, 2, 1))\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__pattern_match_encoding.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/pattern_match_encoding.bend\n---\nScott\nunchecked Foo: Any\n(Foo) = λa (a λ* 100 λ* 200 λ* 200 λ* λ* 200 λ* λ* 200)\n\nunchecked main: Any\n(main) = (Foo MyType/A 2)\n\nMyType/A: (Any -> MyType)\n(MyType/A) = λa λb λ* λ* λ* λ* (b a)\n\nMyType/B: (Any -> MyType)\n(MyType/B) = λa λ* λc λ* λ* λ* (c a)\n\nMyType/C: (Any -> MyType)\n(MyType/C) = λa λ* λ* λd λ* λ* (d a)\n\nMyType/D: (Any -> Any -> MyType)\n(MyType/D) = λa λb λ* λ* λ* λf λ* (f a b)\n\nMyType/E: (Any -> Any -> MyType)\n(MyType/E) = λa λb λ* λ* λ* λ* λg (g a b)\n\nNumScott\nunchecked Foo: Any\n(Foo) = λa (a λb switch b { 0: λ* 100; _: λd switch d { 0: λ* 200; _: λf switch f { 0: λ* 200; _: λh switch h { 0: λ* λ* 200; _: λ* λ* λ* 200; }; }; }; })\n\nunchecked main: Any\n(main) = (Foo MyType/A 2)\n\nMyType/A/tag: _\n(MyType/A/tag) = 0\n\nMyType/A: (Any -> MyType)\n(MyType/A) = λa λb (b MyType/A/tag a)\n\nMyType/B/tag: _\n(MyType/B/tag) = 1\n\nMyType/B: (Any -> MyType)\n(MyType/B) = λa λb (b MyType/B/tag a)\n\nMyType/C/tag: _\n(MyType/C/tag) = 2\n\nMyType/C: (Any -> MyType)\n(MyType/C) = λa λb (b MyType/C/tag a)\n\nMyType/D/tag: _\n(MyType/D/tag) = 3\n\nMyType/D: (Any -> Any -> MyType)\n(MyType/D) = λa λb λc (c MyType/D/tag a b)\n\nMyType/E/tag: _\n(MyType/E/tag) = 4\n\nMyType/E: (Any -> Any -> MyType)\n(MyType/E) = λa λb λc (c MyType/E/tag a b)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__switch_in_switch_arg.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/switch_in_switch_arg.bend\n---\nScott\nunchecked main: Any\n(main) = λa switch switch a { 0: 0; _: λb b; } { 0: 0; _: λc (+ c 1); }\n\nNumScott\nunchecked main: Any\n(main) = λa switch switch a { 0: 0; _: λb b; } { 0: 0; _: λc (+ c 1); }\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__var_only.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/var_only.bend\n---\nScott\nunchecked Foo: Any\n(Foo) = λa λ* λc (c a)\n\nunchecked main: Any\n(main) = λ* Foo\n\nBool/False: Bool\n(Bool/False) = λa λ* a\n\nBool/True: Bool\n(Bool/True) = λ* λb b\n\nNumScott\nunchecked Foo: Any\n(Foo) = λa λ* λc (c a)\n\nunchecked main: Any\n(main) = λ* Foo\n\nBool/False/tag: _\n(Bool/False/tag) = 0\n\nBool/False: Bool\n(Bool/False) = λa (a Bool/False/tag)\n\nBool/True/tag: _\n(Bool/True/tag) = 1\n\nBool/True: Bool\n(Bool/True) = λa (a Bool/True/tag)\n"
  },
  {
    "path": "tests/snapshots/encode_pattern_match__weekday.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/encode_pattern_match/weekday.bend\n---\nScott\nunchecked main: Any\n(main) = (λa a Weekday/Saturday)\n\nWeekday/Monday: Weekday\n(Weekday/Monday) = λa λ* λ* λ* λ* λ* λ* a\n\nWeekday/Tuesday: Weekday\n(Weekday/Tuesday) = λ* λb λ* λ* λ* λ* λ* b\n\nWeekday/Wednesday: Weekday\n(Weekday/Wednesday) = λ* λ* λc λ* λ* λ* λ* c\n\nWeekday/Thursday: Weekday\n(Weekday/Thursday) = λ* λ* λ* λd λ* λ* λ* d\n\nWeekday/Friday: Weekday\n(Weekday/Friday) = λ* λ* λ* λ* λe λ* λ* e\n\nWeekday/Saturday: Weekday\n(Weekday/Saturday) = λ* λ* λ* λ* λ* λf λ* f\n\nWeekday/Sunday: Weekday\n(Weekday/Sunday) = λ* λ* λ* λ* λ* λ* λg g\n\nNumScott\nunchecked main: Any\n(main) = (λa a Weekday/Saturday)\n\nWeekday/Monday/tag: _\n(Weekday/Monday/tag) = 0\n\nWeekday/Monday: Weekday\n(Weekday/Monday) = λa (a Weekday/Monday/tag)\n\nWeekday/Tuesday/tag: _\n(Weekday/Tuesday/tag) = 1\n\nWeekday/Tuesday: Weekday\n(Weekday/Tuesday) = λa (a Weekday/Tuesday/tag)\n\nWeekday/Wednesday/tag: _\n(Weekday/Wednesday/tag) = 2\n\nWeekday/Wednesday: Weekday\n(Weekday/Wednesday) = λa (a Weekday/Wednesday/tag)\n\nWeekday/Thursday/tag: _\n(Weekday/Thursday/tag) = 3\n\nWeekday/Thursday: Weekday\n(Weekday/Thursday) = λa (a Weekday/Thursday/tag)\n\nWeekday/Friday/tag: _\n(Weekday/Friday/tag) = 4\n\nWeekday/Friday: Weekday\n(Weekday/Friday) = λa (a Weekday/Friday/tag)\n\nWeekday/Saturday/tag: _\n(Weekday/Saturday/tag) = 5\n\nWeekday/Saturday: Weekday\n(Weekday/Saturday) = λa (a Weekday/Saturday/tag)\n\nWeekday/Sunday/tag: _\n(Weekday/Sunday/tag) = 6\n\nWeekday/Sunday: Weekday\n(Weekday/Sunday) = λa (a Weekday/Sunday/tag)\n"
  },
  {
    "path": "tests/snapshots/examples__bitonic_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/bitonic_sort.bend\n---\n16646144\n"
  },
  {
    "path": "tests/snapshots/examples__bubble_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/bubble_sort.bend\n---\n4919\n"
  },
  {
    "path": "tests/snapshots/examples__callcc.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/callcc.bend\n---\n52\n"
  },
  {
    "path": "tests/snapshots/examples__example_fun.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/example_fun.bend\n---\n8\n"
  },
  {
    "path": "tests/snapshots/examples__fib.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/fib.bend\n---\n832040\n"
  },
  {
    "path": "tests/snapshots/examples__fusing_add.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/fusing_add.bend\n---\nλa λb λ* (b λc λ* (c a))\n"
  },
  {
    "path": "tests/snapshots/examples__fusing_not.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/fusing_not.bend\n---\nλa λb λc (a c b)\n"
  },
  {
    "path": "tests/snapshots/examples__gen_tree.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/gen_tree.bend\n---\nλa (a MyTree/Node/tag 1 λb (b MyTree/Node/tag 3 λc (c MyTree/Node/tag 7 λd (d MyTree/Node/tag 15 MyTree/Leaf MyTree/Leaf) λe (e MyTree/Node/tag 16 MyTree/Leaf MyTree/Leaf)) λf (f MyTree/Node/tag 8 λg (g MyTree/Node/tag 17 MyTree/Leaf MyTree/Leaf) λh (h MyTree/Node/tag 18 MyTree/Leaf MyTree/Leaf))) λi (i MyTree/Node/tag 4 λj (j MyTree/Node/tag 9 λk (k MyTree/Node/tag 19 MyTree/Leaf MyTree/Leaf) λl (l MyTree/Node/tag 20 MyTree/Leaf MyTree/Leaf)) λm (m MyTree/Node/tag 10 λn (n MyTree/Node/tag 21 MyTree/Leaf MyTree/Leaf) λo (o MyTree/Node/tag 22 MyTree/Leaf MyTree/Leaf))))\n"
  },
  {
    "path": "tests/snapshots/examples__hello_world.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/hello_world.bend\n---\nλa (a IO/Done/tag IO/MAGIC 0)\n"
  },
  {
    "path": "tests/snapshots/examples__insertion_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/insertion_sort.bend\n---\n[4780, 11739, 35809, 49583, 154358, 177867, 244878, 289211, 318852, 423850]\n"
  },
  {
    "path": "tests/snapshots/examples__list.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/list.bend\n---\nλa (a Result/Ok/tag 5)\n"
  },
  {
    "path": "tests/snapshots/examples__parallel_and.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/parallel_and.bend\n---\nBool/True\n"
  },
  {
    "path": "tests/snapshots/examples__parallel_hello_world.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/parallel_hello_world.bend\n---\n16744448\n"
  },
  {
    "path": "tests/snapshots/examples__parallel_sum.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/parallel_sum.bend\n---\n16744448\n"
  },
  {
    "path": "tests/snapshots/examples__queue.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/queue.bend\n---\n[1, 2, 3]\n"
  },
  {
    "path": "tests/snapshots/examples__quick_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/quick_sort.bend\n---\n12741879\n"
  },
  {
    "path": "tests/snapshots/examples__radix_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: examples/radix_sort.bend\n---\n120\n"
  },
  {
    "path": "tests/snapshots/import_system__import_ctr_syntax.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/import_ctr_syntax.bend\n---\nλa (a lib/ctr_type/Ctr/Foo/tag 2 3)\n"
  },
  {
    "path": "tests/snapshots/import_system__import_main.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/import_main.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nCan not import the entry point of the program.\n"
  },
  {
    "path": "tests/snapshots/import_system__import_main2.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/import_main2.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nCan not import the entry point of the program.\n"
  },
  {
    "path": "tests/snapshots/import_system__import_main3.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/import_main3.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nCan not import the entry point of the program.\n"
  },
  {
    "path": "tests/snapshots/import_system__import_type.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/import_type.bend\n---\nλa (a lib/MyOption/MyOption/Some/tag (1, 2))\n"
  },
  {
    "path": "tests/snapshots/import_system__import_types.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/import_types.bend\n---\nlib/types/Bool/False\n"
  },
  {
    "path": "tests/snapshots/import_system__imports.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/imports.bend\n---\n3\n"
  },
  {
    "path": "tests/snapshots/import_system__imports_alias.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/imports_alias.bend\n---\n3\n"
  },
  {
    "path": "tests/snapshots/import_system__imports_alias_shadow.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/imports_alias_shadow.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nThe import 'lib/nums/two' shadows the imported name 'lib/nums/one'\n"
  },
  {
    "path": "tests/snapshots/import_system__imports_conflict.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/imports_conflict.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nThe imported definition 'lib/a/b/C' conflicts with the definition 'lib/a/b/C'.\nThe imported constructor 'lib/a/b/C' conflicts with the definition 'lib/a/b/C'.\n"
  },
  {
    "path": "tests/snapshots/import_system__imports_file_and_dir.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/imports_file_and_dir.bend\n---\n(1, (3, 4))\n"
  },
  {
    "path": "tests/snapshots/import_system__imports_file_and_dir_conflict.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/imports_file_and_dir_conflict.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nBoth file 'lib/file_and_dir.bend' and folder 'lib/file_and_dir' contains the import 'w'\n"
  },
  {
    "path": "tests/snapshots/import_system__imports_shadow.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/imports_shadow.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nThe import 'lib/myFun/myFun' shadows the imported name 'lib/folder/myFun/myFun'\n"
  },
  {
    "path": "tests/snapshots/import_system__imports_shadow2.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/import_system/imports_shadow2.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nThe import 'lib/folder/myFun/myFun' shadows the imported name 'lib/myFun/myFun'\n"
  },
  {
    "path": "tests/snapshots/io__load.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/io/load.bend\n---\nStrict mode:\nλa (a IO/Done/tag IO/MAGIC λb (b Result/Ok/tag \"Contents\\n\"))\n"
  },
  {
    "path": "tests/snapshots/io__load_fail.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/io/load_fail.bend\n---\nStrict mode:\nλa (a IO/Done/tag IO/MAGIC λb (b Result/Err/tag +2))\n"
  },
  {
    "path": "tests/snapshots/io__read_line_eof.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/io/read_line_eof.bend\n---\nStrict mode:\nλa (a IO/Done/tag IO/MAGIC \"text\")\n"
  },
  {
    "path": "tests/snapshots/io__store.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/io/store.bend\n---\nStrict mode:\nλa (a IO/Done/tag IO/MAGIC λb (b Result/Ok/tag *))\n"
  },
  {
    "path": "tests/snapshots/io__store_fail.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/io/store_fail.bend\n---\nStrict mode:\nλa (a IO/Done/tag IO/MAGIC λb (b Result/Err/tag +2))\n"
  },
  {
    "path": "tests/snapshots/io__utf8.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/io/utf8.bend\n---\nStrict mode:\n[\"hi\", \"(λf ((λx (f (x x))) (λx (f (x x)))))\", \"🌟\", \"Hello 🌎!\", \"𓆈 𓆉 𓆊 𓆋 𓅯\", \"\"]\n"
  },
  {
    "path": "tests/snapshots/linear_readback__church_mul.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/linear_readback/church_mul.bend\n---\nλa λb let {c $g} = (let {d $h} = a; d let {e f} = $h; (e (f {$g b}))); c\n"
  },
  {
    "path": "tests/snapshots/mutual_recursion__a_b_c.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/mutual_recursion/a_b_c.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * A -> B -> C -> A\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n"
  },
  {
    "path": "tests/snapshots/mutual_recursion__len.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/mutual_recursion/len.bend\n---\n@Len = ((@Len__C1 a) a)\n\n@Len__C0 = (* (* (a c)))\n  & $(b c) ~ [+0x0000001]\n  & @Len ~ (a b)\n\n@Len__C1 = (?((0 @Len__C0) a) a)\n\n@List/Cons = (a (b ((@List/Cons/tag (a (b c))) c)))\n\n@List/Cons/tag = 1\n\n@List/Nil = ((@List/Nil/tag a) a)\n\n@List/Nil/tag = 0\n\n@main = g\n  & @Len ~ (f g)\n  & @List/Cons ~ (* (e f))\n  & @List/Cons ~ (* (d e))\n  & @List/Cons ~ (* (c d))\n  & @List/Cons ~ (* (b c))\n  & @List/Cons ~ (* (a b))\n  & @List/Cons ~ (* (@List/Nil a))\n"
  },
  {
    "path": "tests/snapshots/mutual_recursion__merged.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/mutual_recursion/merged.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * Rec -> X -> Rec\n  * Rec -> Y -> Rec\n  * Rec2 -> X -> Rec2\n  * Rec2 -> Y -> Rec2\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n"
  },
  {
    "path": "tests/snapshots/mutual_recursion__multiple.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/mutual_recursion/multiple.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * A -> B -> C -> A\n  * H -> I -> H\n  * M -> M\n  * N -> N\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n"
  },
  {
    "path": "tests/snapshots/mutual_recursion__odd_even.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/mutual_recursion/odd_even.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mThe following functions contain recursive cycles incompatible with HVM's strict evaluation:\u001b[0m\n  * isEven -> isOdd -> isEven\n\nThe greedy eager evaluation of HVM may cause infinite loops.\n\u001b[1mRefactor these functions to use lazy references instead of direct function calls.\u001b[0m\nA reference is strict when it's being called ('(Foo x)') or when it's used non-linearly ('let x = Foo; (x x)').\nIt is lazy when it's an argument ('(x Foo)') or when it's used linearly ('let x = Foo; (x 0)').\n\n\u001b[1mTry one of these strategies:\u001b[0m\n- Use pattern matching with 'match', 'fold', and 'bend' to automatically lift expressions to lazy references.\n- Replace direct calls with combinators. For example, change:\n    'Foo = λa λb (b (λc (Foo a c)) a)'\n  to:\n    'Foo = λa λb (b (λc λa (Foo a c)) (λa a) a)'\n  which is lifted to:\n    'Foo = λa λb (b Foo__C1 Foo__C2 a)'\n- Replace non-linear 'let' expressions with 'use' expressions. For example, change:\n    'Foo = λf let x = Foo; (f x x)'\n  to:\n    'Foo = λf use x = Foo; (f x x)'\n  which inlines to:\n    'Foo = λf (f Foo Foo)'\n- If disabled, re-enable the default 'float-combinators' and 'linearize-matches' compiler options.\n\nFor more information, visit: https://github.com/HigherOrderCO/Bend/blob/main/docs/lazy-definitions.md.\nTo disable this check, use the \"-Arecursion-cycle\" compiler option.\n"
  },
  {
    "path": "tests/snapshots/parse_file__bad_floating.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/bad_floating.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/bad_floating.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m newline\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  2 |   return 0xA.0\u001b[4m\u001b[31mx\u001b[0mA\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__bend_missing_else.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/bend_missing_else.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/bend_missing_else.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m 'else'\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  14 | \u001b[4m\u001b[31md\u001b[0mef main():\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__era.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/era.bend\n---\nunchecked Main: Any\n(Main) = *\n"
  },
  {
    "path": "tests/snapshots/parse_file__fold_missing_case.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/fold_missing_case.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/fold_missing_case.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m 'case'\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  4 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__fun_def.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/fun_def.bend\n---\nunchecked main: Any\n(main) = let base = 0; def (aux (List/Nil)) = base(aux (List/Cons head tail)) = (+ head (aux tail))(aux (List/Cons 1 (List/Cons 2 (List/Cons 3 List/Nil))))\n"
  },
  {
    "path": "tests/snapshots/parse_file__fun_def_name.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/fun_def_name.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/fun_def_name.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of builtin (constructor) 'List/Cons'.\nLocation:\n\u001b[0m  4 |       aux2 \u001b[4m\u001b[31m(List/Cons head tail) = (+ head (aux tail))\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__if_missing_else.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/if_missing_else.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/if_missing_else.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m 'else' or 'elif'\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  5 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__imp_map.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/imp_map.bend\n---\nMaybe/unwrap: ((Maybe T) -> T)\n(Maybe/unwrap m) = match m = m { Maybe/Some: m.value; Maybe/None: unreachable; }\n\nMap/empty: (Map T)\n(Map/empty) = Map/Leaf\n\nMap/get: ((Map T) -> u24 -> (T, (Map T)))\n(Map/get map key) = match map = map { Map/Leaf: (unreachable, map); Map/Node: switch %pred = (== 0 key) { 0: switch %pred = (== (% key 2) 0) { 0: let (got, rest) = (Map/get map.right (/ key 2)); (got, (Map/Node map.value map.left rest)); _ %pred-1: let (got, rest) = (Map/get map.left (/ key 2)); (got, (Map/Node map.value rest map.right)); }; _ %pred-1: ((Maybe/unwrap map.value), map); }; }\n\nMap/set: ((Map T) -> u24 -> T -> (Map T))\n(Map/set map key value) = match map = map { Map/Node: switch %pred = (== 0 key) { 0: switch %pred = (== (% key 2) 0) { 0: (Map/Node map.value map.left (Map/set map.right (/ key 2) value)); _ %pred-1: (Map/Node map.value (Map/set map.left (/ key 2) value) map.right); }; _ %pred-1: (Map/Node (Maybe/Some value) map.left map.right); }; Map/Leaf: switch %pred = (== 0 key) { 0: switch %pred = (== (% key 2) 0) { 0: (Map/Node Maybe/None Map/Leaf (Map/set Map/Leaf (/ key 2) value)); _ %pred-1: (Map/Node Maybe/None (Map/set Map/Leaf (/ key 2) value) Map/Leaf); }; _ %pred-1: (Map/Node (Maybe/Some value) Map/Leaf Map/Leaf); }; }\n\nunreachable: Any\n(unreachable) = *\n\nunchecked main: Any\n(main) = let x = (Map/set (Map/set Map/empty 2 1) 3 2); let (map/get%1, x) = (Map/get x 2); let y = (id map/get%1); let z = 4; let x = (Map/set x z 4); let (map/get%0, x) = (Map/get x z); (+ y map/get%0)\n\nMaybe/Some/tag: _\n(Maybe/Some/tag) = 0\n\nMaybe/Some: (T -> (Maybe T))\n(Maybe/Some) = λvalue λ%x (%x Maybe/Some/tag value)\n\nMaybe/None/tag: _\n(Maybe/None/tag) = 1\n\nMaybe/None: (Maybe T)\n(Maybe/None) = λ%x (%x Maybe/None/tag)\n\nMap/Node/tag: _\n(Map/Node/tag) = 0\n\nMap/Node: ((Maybe T) -> (Map T) -> (Map T) -> (Map T))\n(Map/Node) = λvalue λleft λright λ%x (%x Map/Node/tag value left right)\n\nMap/Leaf/tag: _\n(Map/Leaf/tag) = 1\n\nMap/Leaf: (Map T)\n(Map/Leaf) = λ%x (%x Map/Leaf/tag)\n"
  },
  {
    "path": "tests/snapshots/parse_file__imp_program.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/imp_program.bend\n---\nMaybe/unwrap: ((Maybe T) -> T)\n(Maybe/unwrap m) = match m = m { Maybe/Some: m.value; Maybe/None: unreachable; }\n\nMap/empty: (Map T)\n(Map/empty) = Map/Leaf\n\nMap/get: ((Map T) -> u24 -> (T, (Map T)))\n(Map/get map key) = match map = map { Map/Leaf: (unreachable, map); Map/Node: switch %pred = (== 0 key) { 0: switch %pred = (== (% key 2) 0) { 0: let (got, rest) = (Map/get map.right (/ key 2)); (got, (Map/Node map.value map.left rest)); _ %pred-1: let (got, rest) = (Map/get map.left (/ key 2)); (got, (Map/Node map.value rest map.right)); }; _ %pred-1: ((Maybe/unwrap map.value), map); }; }\n\nMap/set: ((Map T) -> u24 -> T -> (Map T))\n(Map/set map key value) = match map = map { Map/Node: switch %pred = (== 0 key) { 0: switch %pred = (== (% key 2) 0) { 0: (Map/Node map.value map.left (Map/set map.right (/ key 2) value)); _ %pred-1: (Map/Node map.value (Map/set map.left (/ key 2) value) map.right); }; _ %pred-1: (Map/Node (Maybe/Some value) map.left map.right); }; Map/Leaf: switch %pred = (== 0 key) { 0: switch %pred = (== (% key 2) 0) { 0: (Map/Node Maybe/None Map/Leaf (Map/set Map/Leaf (/ key 2) value)); _ %pred-1: (Map/Node Maybe/None (Map/set Map/Leaf (/ key 2) value) Map/Leaf); }; _ %pred-1: (Map/Node (Maybe/Some value) Map/Leaf Map/Leaf); }; }\n\nunreachable: Any\n(unreachable) = *\n\nunchecked symbols: Any\n(symbols) = let x = (Map/set (Map/set Map/empty 49 5) 2 3); let x = (Map/set x 49 2); let x = (Map/set x 2 3); let (map/get%0, x) = (Map/get x 49); (+ map/get%0 8293490)\n\nunchecked mk_point: Any\n(mk_point) = (Point/Point 1 2)\n\nunchecked identity: (Any -> Any)\n(identity x) = x\n\nunchecked inc: (Any -> Any)\n(inc n) = let n = (+ n 1); n\n\nunchecked inc_list: (Any -> Any)\n(inc_list list) = fold %iter = list { List/Nil: List/Nil; List/Cons: let x = %iter.head; (List/Cons (+ x 1) %iter.tail); }\n\nunchecked lam: Any\n(lam) = λx λy x\n\nunchecked do_match: (Any -> Any)\n(do_match b) = match b = b { Bool/True: 1; Bool/False: 0; }\n\nunchecked true: Any\n(true) = Bool/True\n\nunchecked fib: (Any -> Any)\n(fib n) = switch %pred = (< n 2) { 0: (+ (fib (- n 1)) (fib (- n 2))); _ %pred-1: n; }\n\nunchecked swt: (Any -> Any)\n(swt n) = switch n = n { 0: 42; _ n-1: 1; }\n\nunchecked fld: (Any -> Any)\n(fld list) = fold list = list { List/Cons: 1; List/Nil: 2; }\n\nunchecked bnd: Any\n(bnd) = bend x = 0, { when (< x 10): (List/Cons x (fork (+ x 1))); else: List/Nil }\n\nunchecked era: Any\n(era) = let * = (+ 2 3); let the_expr_killer = *; (the_expr_killer 9)\n\nunchecked sup: Any\n(sup) = let x = {(List/Cons 1 (List/Cons 2 List/Nil)) (List/Cons 3 (List/Cons 4 (List/Cons 5 (List/Cons 6 List/Nil))))}; x\n\nunchecked main: Any\n(main) = with IO { ask x = IO.read; x }\n\nList/Nil/tag: _\n(List/Nil/tag) = 0\n\nList/Nil: (List T)\n(List/Nil) = λ%x (%x List/Nil/tag)\n\nList/Cons/tag: _\n(List/Cons/tag) = 1\n\nList/Cons: (T -> (List T) -> (List T))\n(List/Cons) = λhead λtail λ%x (%x List/Cons/tag head tail)\n\nMaybe/Some/tag: _\n(Maybe/Some/tag) = 0\n\nMaybe/Some: (T -> (Maybe T))\n(Maybe/Some) = λvalue λ%x (%x Maybe/Some/tag value)\n\nMaybe/None/tag: _\n(Maybe/None/tag) = 1\n\nMaybe/None: (Maybe T)\n(Maybe/None) = λ%x (%x Maybe/None/tag)\n\nMap/Node/tag: _\n(Map/Node/tag) = 0\n\nMap/Node: ((Maybe T) -> (Map T) -> (Map T) -> (Map T))\n(Map/Node) = λvalue λleft λright λ%x (%x Map/Node/tag value left right)\n\nMap/Leaf/tag: _\n(Map/Leaf/tag) = 1\n\nMap/Leaf: (Map T)\n(Map/Leaf) = λ%x (%x Map/Leaf/tag)\n\nPoint/Point/tag: _\n(Point/Point/tag) = 0\n\nPoint/Point: (Any -> Any -> Point)\n(Point/Point) = λx λy λ%x (%x Point/Point/tag x y)\n\nBool/True/tag: _\n(Bool/True/tag) = 0\n\nBool/True: Bool\n(Bool/True) = λ%x (%x Bool/True/tag)\n\nBool/False/tag: _\n(Bool/False/tag) = 1\n\nBool/False: Bool\n(Bool/False) = λ%x (%x Bool/False/tag)\n"
  },
  {
    "path": "tests/snapshots/parse_file__match_missing_case.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/match_missing_case.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/match_missing_case.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m 'case'\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  4 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__multi_line_comment.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/multi_line_comment.bend\n---\nunchecked X: Any\n(X x x x) = x\n\nunchecked String/is_empty: Any\n(String/is_empty s) = match s = s { String/Nil: 1; String/Cons: 0; }\n\nunchecked main: Any\n(main) = 0\n\nunchecked String/not_empty: (Any -> Any)\n(String/not_empty s) = match s = s { String/Nil: 0; String/Cons: 1; }\n\nFoo/Foo/tag: _\n(Foo/Foo/tag) = 0\n\nFoo/Foo: (Any -> Foo)\n(Foo/Foo) = λfoo λ%x (%x Foo/Foo/tag foo)\n\nBar/tag: _\n(Bar/tag) = 0\n\nBar: (Any -> Bar)\n(Bar) = λbar λ%x (%x Bar/tag bar)\n\nV/V/tag: _\n(V/V/tag) = 0\n\nV/V: V\n(V/V) = λ%x (%x V/V/tag)\n"
  },
  {
    "path": "tests/snapshots/parse_file__redefinition_builtin.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/redefinition_builtin.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/redefinition_builtin.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of builtin (function) 'Map/get'.\nLocation: end of input\n\u001b[0m  1 | \u001b[4m\u001b[31mdef Map/get(m):\n\u001b[0m  2 | \u001b[4m\u001b[31m  return m\n\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__redefinition_ctr_with_fun.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/redefinition_ctr_with_fun.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/redefinition_ctr_with_fun.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of builtin (constructor) 'String/Cons'.\nLocation: end of input\n\u001b[0m  1 | \u001b[4m\u001b[31mdef String/Cons(x):\n\u001b[0m  2 | \u001b[4m\u001b[31m  return x\n\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__redefinition_fun_imp.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/redefinition_fun_imp.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/redefinition_fun_imp.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of function 'A'.\nLocation: end of input\n\u001b[0m  3 | \u001b[4m\u001b[31mdef A:\n\u001b[0m  4 | \u001b[4m\u001b[31m  return 0\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__redefinition_imp_fun.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/redefinition_imp_fun.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/redefinition_imp_fun.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of function 'A'.\nLocation: end of input\n\u001b[0m  5 | \u001b[4m\u001b[31m(A) = 1\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__redefinition_type_with_object.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/redefinition_type_with_object.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/redefinition_type_with_object.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of builtin (type) 'IO'.\nLocation: end of input\n\u001b[0m  1 | \u001b[4m\u001b[31mobject IO { run }\n\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__redefinition_with_def_between.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/redefinition_with_def_between.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/redefinition_with_def_between.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of function 'A'.\nLocation: end of input\n\u001b[0m   4 | \u001b[4m\u001b[31m(A) = @x x\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__redefinition_with_object_between.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/redefinition_with_object_between.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/redefinition_with_object_between.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of function 'A'.\nLocation: end of input\n\u001b[0m  3 | \u001b[4m\u001b[31mA = 1\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__redefinition_with_type_between.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/redefinition_with_type_between.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/redefinition_with_type_between.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of function 'A'.\nLocation:\n\u001b[0m  3 | \u001b[4m\u001b[31mA = 1\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__repeated_adt_name.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/repeated_adt_name.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/repeated_adt_name.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of type 'Foo'.\nLocation:\n\u001b[0m  2 | \u001b[4m\u001b[31mtype Foo = B\n\u001b[0m  3 | \u001b[4m\u001b[31m\n\u001b[0m  4 | \u001b[4m\u001b[31m\u001b[0mmain = *\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__repeated_datatype_name.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/repeated_datatype_name.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/repeated_datatype_name.bend\u001b[0m\u001b[1m :\u001b[0m\nFound a repeated field 'Expr' in constructor Expr/Plus.\nLocation:\n\u001b[0m  3 |   | \u001b[4m\u001b[31m(Plus Expr Expr)\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__scape_chars.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/scape_chars.bend\n---\nunchecked main: Any\n(main) = (String/Cons 92 (String/Cons 32 (String/Cons 10 (String/Cons 32 (String/Cons 9 (String/Cons 32 (String/Cons 34 String/Nil)))))))\n\nString/Nil/tag: _\n(String/Nil/tag) = 0\n\nString/Nil: String\n(String/Nil) = λ%x (%x String/Nil/tag)\n\nString/Cons/tag: _\n(String/Cons/tag) = 1\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λhead λtail λ%x (%x String/Cons/tag head tail)\n"
  },
  {
    "path": "tests/snapshots/parse_file__strange_pattern.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/strange_pattern.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/strange_pattern.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m pattern or '='\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  1 | main \u001b[4m\u001b[31m& \u001b[0m= (a b c)\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__tab.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/tab.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/parse_file/tab.bend\u001b[0m\u001b[1m :\u001b[0m\nTabs are not accepted for indentation.\nLocation:\n\u001b[0m  2 | \u001b[4m\u001b[31m\t\u001b[0mx = 2\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/parse_file__tup_with_signed.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/tup_with_signed.bend\n---\nunchecked main: Any\n(main) = let a = (+1, +1); let b = 1.132; let c = (-6.234, -1); let d = -1; let e = (+6 * λx x); let f = (* λx x); (+ a (+ b (+ c (+ d (- e f)))))\n"
  },
  {
    "path": "tests/snapshots/parse_file__tuple_assign.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/tuple_assign.bend\n---\nunchecked main: Any\n(main) = let (first, second) = (1, (2, 3)); second\n"
  },
  {
    "path": "tests/snapshots/parse_file__tuple_commas.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/tuple_commas.bend\n---\nunchecked main: Any\n(main) = let tup = ((fst 1 λx x), 2); (tup, 3, (4, 5))\n\nunchecked fst: (Any -> Any -> Any)\n(fst x y) = x\n"
  },
  {
    "path": "tests/snapshots/parse_file__tuple_need_parens.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/parse_file/tuple_need_parens.bend\n---\nunchecked main: Any\n(main) = switch %pred = (1, 2) { 0: (String/Cons 104 (String/Cons 109 (String/Cons 109 (String/Cons 109 String/Nil)))); _ %pred-1: (String/Cons 110 (String/Cons 111 (String/Cons 116 String/Nil))); }\n\nString/Nil/tag: _\n(String/Nil/tag) = 0\n\nString/Nil: String\n(String/Nil) = λ%x (%x String/Nil/tag)\n\nString/Cons/tag: _\n(String/Cons/tag) = 1\n\nString/Cons: (u24 -> String -> String)\n(String/Cons) = λhead λtail λ%x (%x String/Cons/tag head tail)\n"
  },
  {
    "path": "tests/snapshots/prelude__applies_function_to_map.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/prelude/applies_function_to_map.bend\n---\nStrict mode:\n257\n"
  },
  {
    "path": "tests/snapshots/prelude__get_values_from_map.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/prelude/get_values_from_map.bend\n---\nStrict mode:\n3\n"
  },
  {
    "path": "tests/snapshots/prelude__lists_to_map.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/prelude/lists_to_map.bend\n---\nStrict mode:\nMap/Leaf\n"
  },
  {
    "path": "tests/snapshots/prelude__map_checked_test.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/prelude/map_checked_test.bend\n---\nStrict mode:\n(λa (a Maybe/Some/tag 2), λb (b Map/Node/tag λc (c Maybe/Some/tag 1) Map/Leaf λd (d Map/Node/tag Maybe/None Map/Leaf λe (e Map/Node/tag λf (f Maybe/Some/tag 2) Map/Leaf Map/Leaf))))\n"
  },
  {
    "path": "tests/snapshots/prelude__map_contains_test.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/prelude/map_contains_test.bend\n---\nStrict mode:\n(0, λa (a Map/Node/tag λb (b Maybe/Some/tag 23) Map/Leaf Map/Leaf))\n"
  },
  {
    "path": "tests/snapshots/prelude__set_node_when_empty.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/prelude/set_node_when_empty.bend\n---\nStrict mode:\nλa (a Map/Node/tag λb (b Maybe/Some/tag 42) Map/Leaf λc (c Map/Node/tag λd (d Maybe/Some/tag 23) Map/Leaf λe (e Map/Node/tag λf (f Maybe/Some/tag 4) Map/Leaf Map/Leaf)))\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__addition.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/addition.bend\n---\n(+ 2 1)\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__bad_net.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/bad_net.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mDuring readback:\u001b[0m\n  Unable to interpret the HVM result as a valid Bend term. (Reached Root)\n\n<Invalid>\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__bad_net1.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/bad_net1.bend\n---\nλa λb a\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__bad_net3.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/bad_net3.bend\n---\nλa λb a\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__complicated_dup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/complicated_dup.bend\n---\nλa (λ$b (a ($b $c)) λ$c (a ($b $c)))\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__fst_snd.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/fst_snd.bend\n---\n(λa a (λb b {{1 3} 2}))\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__id.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/id.bend\n---\nλa a\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__invalid_op2_op2.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/invalid_op2_op2.bend\n---\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mDuring readback:\u001b[0m\n  Encountered an invalid numeric operation. (3 occurrences)\n\nλa <Invalid>\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__match.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/match.bend\n---\nswitch a = 1 { 0: λb b; _: a-1; }\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__nested_let.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/nested_let.bend\n---\n3\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__nested_tup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/nested_tup.bend\n---\n{{1 2} {4 {3 5}}}\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__number.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/number.bend\n---\n10\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__simple_tup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/simple_tup.bend\n---\n{0 42}\n"
  },
  {
    "path": "tests/snapshots/readback_hvm__tup_add.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/readback_hvm/tup_add.bend\n---\n(+ 1 2)\n"
  },
  {
    "path": "tests/snapshots/run_file__360_no_scope.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/360_no_scope.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/360_no_scope.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m '='\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m   6 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__addition.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/addition.bend\n---\nNumScott:\n10\n\nScott:\n10\n"
  },
  {
    "path": "tests/snapshots/run_file__adt_match.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/adt_match.bend\n---\nNumScott:\nλa (a Opt/Some/tag 2)\n\nScott:\nλa λ* (a 2)\n"
  },
  {
    "path": "tests/snapshots/run_file__adt_match_wrong_tag.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/adt_match_wrong_tag.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/adt_match_wrong_tag.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  4 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__adt_option_and.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/adt_option_and.bend\n---\nNumScott:\nλa (a λb switch b = b { 0: λc λd (d λe switch e = e { 0: λf λg λh (h Option/Some/tag λi f); _: λ* Option/None; } c); _: λ* Option/None; })\n\nScott:\nλa (a λb λc (c λd λe λf λ* (f λg d) λ* Option/None b) λ* Option/None)\n"
  },
  {
    "path": "tests/snapshots/run_file__adt_wrong_tag.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/adt_wrong_tag.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/adt_wrong_tag.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  4 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__and.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/and.bend\n---\nNumScott:\nbool/false\n\nScott:\nbool/false\n"
  },
  {
    "path": "tests/snapshots/run_file__basic_num_ops.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/basic_num_ops.bend\n---\nNumScott:\n[30, 10, 200, 2, 0, 30, 0, 30, 0, 1, 0, 1, 40, 2, 65535, +30, +10, +200, +2, +0, +30, +0, +30, 0, 1, 0, 1, 65535, -30, -10, +200, +2, +0, +26, -28, -2, 0, 1, 1, 0, 65535, +10, +30, -200, -2, +0, -30, +20, -10, 0, 1, 0, 1, 65535, -10, -30, -200, -2, +0, -26, +8, -18, 0, 1, 1, 0, 65535, 30.000, 10.000, 200.000, 2.000, 0.000, 10240007340032.000, 1.107, 0.769, 0, 1, 0, 1, 65535, -30.000, -10.000, 200.000, 2.000, -0.000, 0.000, -2.034, NaN, 0, 1, 1, 0, 65535, 10.000, 30.000, -200.000, -2.000, 0.000, 0.000, 2.034, NaN, 0, 1, 0, 1, 65535, -10.000, -30.000, -200.000, -2.000, -0.000, 10240007340032.000, -1.107, NaN, 0, 1, 1, 0, 65535, 0.631, 0.643]\n\nScott:\n[30, 10, 200, 2, 0, 30, 0, 30, 0, 1, 0, 1, 40, 2, 65535, +30, +10, +200, +2, +0, +30, +0, +30, 0, 1, 0, 1, 65535, -30, -10, +200, +2, +0, +26, -28, -2, 0, 1, 1, 0, 65535, +10, +30, -200, -2, +0, -30, +20, -10, 0, 1, 0, 1, 65535, -10, -30, -200, -2, +0, -26, +8, -18, 0, 1, 1, 0, 65535, 30.000, 10.000, 200.000, 2.000, 0.000, 10240007340032.000, 1.107, 0.769, 0, 1, 0, 1, 65535, -30.000, -10.000, 200.000, 2.000, -0.000, 0.000, -2.034, NaN, 0, 1, 1, 0, 65535, 10.000, 30.000, -200.000, -2.000, 0.000, 0.000, 2.034, NaN, 0, 1, 0, 1, 65535, -10.000, -30.000, -200.000, -2.000, -0.000, 10240007340032.000, -1.107, NaN, 0, 1, 1, 0, 65535, 0.631, 0.643]\n"
  },
  {
    "path": "tests/snapshots/run_file__bend_fold.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/bend_fold.bend\n---\nNumScott:\n24\n\nScott:\n24\n"
  },
  {
    "path": "tests/snapshots/run_file__bitonic_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/bitonic_sort.bend\n---\nNumScott:\n120\n\nScott:\n120\n"
  },
  {
    "path": "tests/snapshots/run_file__bitonic_sort_lam.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/bitonic_sort_lam.bend\n---\nNumScott:\n32640\n\nScott:\n32640\n"
  },
  {
    "path": "tests/snapshots/run_file__box.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/box.bend\n---\nNumScott:\nλa (a _Box/Box/tag λb (b _Box/Box/tag 10))\n\nScott:\nλa (a λb (b 10))\n"
  },
  {
    "path": "tests/snapshots/run_file__branch_statements_assignment.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/branch_statements_assignment.bend\n---\nNumScott:\n6\n\nScott:\n6\n"
  },
  {
    "path": "tests/snapshots/run_file__callcc.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/callcc.bend\n---\nNumScott:\n52\n\nScott:\n52\n"
  },
  {
    "path": "tests/snapshots/run_file__chars.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/chars.bend\n---\nNumScott:\n\"ሴ!7\"\n\nScott:\n\"ሴ!7\"\n"
  },
  {
    "path": "tests/snapshots/run_file__chars_forall.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/chars_forall.bend\n---\nNumScott:\n8704\n\nScott:\n8704\n"
  },
  {
    "path": "tests/snapshots/run_file__chars_lambda.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/chars_lambda.bend\n---\nNumScott:\n955\n\nScott:\n955\n"
  },
  {
    "path": "tests/snapshots/run_file__checked_scott_encoding.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/checked_scott_encoding.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nIn λa λb (a λe λf λg λh (g e (scott_concat f b)) b):\n  Can't unify '(e -> c -> j)' and '(((d -> e -> (d -> j -> k) -> g -> k) -> c -> m) -> c -> m)'. Variable 'e' occurs in '((d -> e -> (d -> j -> k) -> g -> k) -> c -> m)'\n"
  },
  {
    "path": "tests/snapshots/run_file__comprehension.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/comprehension.bend\n---\nNumScott:\n[5, 10, 7, 6]\n\nScott:\n[5, 10, 7, 6]\n"
  },
  {
    "path": "tests/snapshots/run_file__def_bool_num.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/def_bool_num.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/def_bool_num.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mgo\u001b[0m\u001b[1m':\u001b[0m\n  Non-exhaustive pattern matching rule. Default case of number type not covered.\n"
  },
  {
    "path": "tests/snapshots/run_file__def_num_bool.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/def_num_bool.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/def_num_bool.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mgo\u001b[0m\u001b[1m':\u001b[0m\n  Non-exhaustive pattern matching rule. Default case of number type not covered.\n"
  },
  {
    "path": "tests/snapshots/run_file__def_tups.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/def_tups.bend\n---\nNumScott:\n15\n\nScott:\n15\n"
  },
  {
    "path": "tests/snapshots/run_file__do_block_mixed.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/do_block_mixed.bend\n---\nNumScott:\nλa (a Result/Ok/tag 1)\n\nScott:\nλa λ* (a 1)\n"
  },
  {
    "path": "tests/snapshots/run_file__dup_global_lam.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/dup_global_lam.bend\n---\nNumScott:\nλa a\n\nScott:\nλa a\n"
  },
  {
    "path": "tests/snapshots/run_file__empty.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/empty.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\nFile has no 'main' definition.\n"
  },
  {
    "path": "tests/snapshots/run_file__encode_decode_utf8.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/encode_decode_utf8.bend\n---\nNumScott:\n([72, 101, 108, 108, 111, 44, 32, 228, 184, 150, 231, 149, 140, 33], \"Hello, 世界!\")\n\nScott:\n([72, 101, 108, 108, 111, 44, 32, 228, 184, 150, 231, 149, 140, 33], \"Hello, 世界!\")\n"
  },
  {
    "path": "tests/snapshots/run_file__erased_side_effect.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/erased_side_effect.bend\n---\nNumScott:\n123\n\nScott:\n123\n"
  },
  {
    "path": "tests/snapshots/run_file__escape_sequences.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/escape_sequences.bend\n---\nNumScott:\n\"\\n\\r\\t\\0\\\"'\\u{afe}\\\\\\n\\r\\t\\0\\\"'\\u{afe}\\\\\"\n\nScott:\n\"\\n\\r\\t\\0\\\"'\\u{afe}\\\\\\n\\r\\t\\0\\\"'\\u{afe}\\\\\"\n"
  },
  {
    "path": "tests/snapshots/run_file__eta.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/eta.bend\n---\nNumScott:\nId\n\nScott:\nId\n"
  },
  {
    "path": "tests/snapshots/run_file__example.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/example.bend\n---\nNumScott:\n8\n\nScott:\n8\n"
  },
  {
    "path": "tests/snapshots/run_file__exp.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/exp.bend\n---\nNumScott:\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mDuring readback:\u001b[0m\n  Unable to interpret the HVM result as a valid Bend term. (Reached Root)\n\nλa λb (<Invalid> λ$c $c $c)\n\nScott:\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mDuring readback:\u001b[0m\n  Unable to interpret the HVM result as a valid Bend term. (Reached Root)\n\nλa λb (<Invalid> λ$c $c $c)\n"
  },
  {
    "path": "tests/snapshots/run_file__expand_main_combinator.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/expand_main_combinator.bend\n---\nNumScott:\nλa (a 1 2)\n\nScott:\nλa (a 1 2)\n"
  },
  {
    "path": "tests/snapshots/run_file__expand_main_list.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/expand_main_list.bend\n---\nNumScott:\n[1, 2, 3]\n\nScott:\n[1, 2, 3]\n"
  },
  {
    "path": "tests/snapshots/run_file__extracted_match_pred.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/extracted_match_pred.bend\n---\nNumScott:\nvalZ\n\nScott:\nvalZ\n"
  },
  {
    "path": "tests/snapshots/run_file__filter_bool_id.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/filter_bool_id.bend\n---\nNumScott:\n[Bool/T]\n\nScott:\n[Bool/T]\n"
  },
  {
    "path": "tests/snapshots/run_file__floating_numbers.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/floating_numbers.bend\n---\nNumScott:\n[18.072, 0.125, 5.625, 2863333376.000, 10.625]\n\nScott:\n[18.072, 0.125, 5.625, 2863333376.000, 10.625]\n"
  },
  {
    "path": "tests/snapshots/run_file__fold_with_state.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/fold_with_state.bend\n---\nNumScott:\n[1, 2, 3]\n\nScott:\n[1, 2, 3]\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_bend_7tree.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_bend_7tree.bend\n---\nNumScott:\nλa (a Tree/Node/tag λb (b Tree/Node/tag λc (c Tree/Node/tag λd (d Tree/Leaf/tag 7) λe (e Tree/Leaf/tag 7)) λf (f Tree/Node/tag λg (g Tree/Leaf/tag 7) λh (h Tree/Leaf/tag 7))) λi (i Tree/Node/tag λj (j Tree/Node/tag λk (k Tree/Leaf/tag 7) λl (l Tree/Leaf/tag 7)) λm (m Tree/Node/tag λn (n Tree/Leaf/tag 7) λo (o Tree/Leaf/tag 7))))\n\nScott:\nλa λ* (a λb λ* (b λc λ* (c λ* λd (d 7) λ* λe (e 7)) λf λ* (f λ* λg (g 7) λ* λh (h 7))) λi λ* (i λj λ* (j λ* λk (k 7) λ* λl (l 7)) λm λ* (m λ* λn (n 7) λ* λo (o 7))))\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_bend_sequential.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_bend_sequential.bend\n---\nNumScott:\n45\n\nScott:\n45\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_bend_sum_tree.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_bend_sum_tree.bend\n---\nNumScott:\n16760832\n\nScott:\n16760832\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_bitonic_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_bitonic_sort.bend\n---\nNumScott:\n523776\n\nScott:\n523776\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_circle_area.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_circle_area.bend\n---\nNumScott:\n314.000\n\nScott:\n314.000\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_distance_4args.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_distance_4args.bend\n---\nNumScott:\n14.142\n\nScott:\n14.142\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_distance_obj.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_distance_obj.bend\n---\nNumScott:\n14.142\n\nScott:\n14.142\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_distance_tup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_distance_tup.bend\n---\nNumScott:\n14.142\n\nScott:\n14.142\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_enumerate.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_enumerate.bend\n---\nNumScott:\nλa (a Tree/Node/tag λb (b Tree/Node/tag λc (c Tree/Leaf/tag (0, 1)) λd (d Tree/Leaf/tag (1, 2))) λe (e Tree/Node/tag λf (f Tree/Leaf/tag (2, 3)) λg (g Tree/Leaf/tag (3, 4))))\n\nScott:\nλa λ* (a λb λ* (b λ* λc (c (0, 1)) λ* λd (d (1, 2))) λe λ* (e λ* λf (f (2, 3)) λ* λg (g (3, 4))))\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_if_age.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_if_age.bend\n---\nNumScott:\n\"you're an adult\"\n\nScott:\n\"you're an adult\"\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_is_even_num.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_is_even_num.bend\n---\nNumScott:\n0\n\nScott:\n0\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_is_even_str.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_is_even_str.bend\n---\nNumScott:\n\"odd\"\n\nScott:\n\"odd\"\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_list_ctrs.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_list_ctrs.bend\n---\nNumScott:\n[1, 2, 3]\n\nScott:\n[1, 2, 3]\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_list_match.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_list_match.bend\n---\nNumScott:\n1\n\nScott:\n1\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_list_sugar.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_list_sugar.bend\n---\nNumScott:\n[1, 2, 3]\n\nScott:\n[1, 2, 3]\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_mul2_inline.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_mul2_inline.bend\n---\nNumScott:\n14\n\nScott:\n14\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_mul2_rec.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_mul2_rec.bend\n---\nNumScott:\n14\n\nScott:\n14\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_shader_dummy.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_shader_dummy.bend\n---\nNumScott:\n(((((1, 1), (1, 1)), ((1, 1), (1, 1))), (((1, 1), (1, 1)), ((1, 1), (1, 1)))), ((((1, 1), (1, 1)), ((1, 1), (1, 1))), (((1, 1), (1, 1)), ((1, 1), (1, 1)))))\n\nScott:\n(((((1, 1), (1, 1)), ((1, 1), (1, 1))), (((1, 1), (1, 1)), ((1, 1), (1, 1)))), ((((1, 1), (1, 1)), ((1, 1), (1, 1))), (((1, 1), (1, 1)), ((1, 1), (1, 1)))))\n"
  },
  {
    "path": "tests/snapshots/run_file__guide_sum.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/guide_sum.bend\n---\nNumScott:\n10\n\nScott:\n10\n"
  },
  {
    "path": "tests/snapshots/run_file__hvm_def_cast.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/hvm_def_cast.bend\n---\nNumScott:\n42.000\n\nScott:\n42.000\n"
  },
  {
    "path": "tests/snapshots/run_file__hvm_def_two_defs.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/hvm_def_two_defs.bend\n---\nNumScott:\n-0.349\n\nScott:\n-0.349\n"
  },
  {
    "path": "tests/snapshots/run_file__id_underscore.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/id_underscore.bend\n---\nNumScott:\n{2 3}\n\nScott:\n{2 3}\n"
  },
  {
    "path": "tests/snapshots/run_file__imp_empty_literals.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/imp_empty_literals.bend\n---\nNumScott:\nλa (a List/Nil/tag)\n\nScott:\nλa λ* a\n"
  },
  {
    "path": "tests/snapshots/run_file__imp_use_statement.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/imp_use_statement.bend\n---\nNumScott:\nλa {{1 a} {1 a}}\n\nScott:\nλa {{1 a} {1 a}}\n"
  },
  {
    "path": "tests/snapshots/run_file__kind_compiled_tree_sum.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/kind_compiled_tree_sum.bend\n---\nNumScott:\n16678913\n\nScott:\n16678913\n"
  },
  {
    "path": "tests/snapshots/run_file__lam_op2.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/lam_op2.bend\n---\nNumScott:\nλa (+ 2 a)\n\nScott:\nλa (+ 2 a)\n"
  },
  {
    "path": "tests/snapshots/run_file__lam_op2_nested.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/lam_op2_nested.bend\n---\nNumScott:\nλa (+ (* a a) (+ 3 (+ 2 a)))\n\nScott:\nλa (+ (* a a) (+ 3 (+ 2 a)))\n"
  },
  {
    "path": "tests/snapshots/run_file__let_tup_readback.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/let_tup_readback.bend\n---\nNumScott:\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mDuring readback:\u001b[0m\n  Unable to interpret the HVM result as a valid Bend term. (Reached Root)\n\nλa ($b (a λc (<Invalid> λ$b c)))\n\nScott:\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mDuring readback:\u001b[0m\n  Unable to interpret the HVM result as a valid Bend term. (Reached Root)\n\nλa ($b (a λc (<Invalid> λ$b c)))\n"
  },
  {
    "path": "tests/snapshots/run_file__linearize_match.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/linearize_match.bend\n---\nNumScott:\nλa switch a = a { 0: λb b; _: λd (+ a-1 d); }\n\nScott:\nλa switch a = a { 0: λb b; _: λd (+ a-1 d); }\n"
  },
  {
    "path": "tests/snapshots/run_file__list_resugar.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/list_resugar.bend\n---\nNumScott:\n[42, [λd d]]\n\nScott:\n[42, [λd d]]\n"
  },
  {
    "path": "tests/snapshots/run_file__list_reverse.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/list_reverse.bend\n---\nNumScott:\nλa (a list/cons/tag 1 λb (b list/cons/tag 2 λc (c list/cons/tag 3 list/nil)))\n\nScott:\nλa λ* (a 1 λb λ* (b 2 λc λ* (c 3 list/nil)))\n"
  },
  {
    "path": "tests/snapshots/run_file__list_reverse_imp.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/list_reverse_imp.bend\n---\nNumScott:\n[1, 2, 3, 4, 5]\n\nScott:\n[1, 2, 3, 4, 5]\n"
  },
  {
    "path": "tests/snapshots/run_file__list_take.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/list_take.bend\n---\nNumScott:\n[3, 2]\n\nScott:\n[3, 2]\n"
  },
  {
    "path": "tests/snapshots/run_file__list_to_tree.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/list_to_tree.bend\n---\nNumScott:\n{{1 2} {3 {4 5}}}\n\nScott:\n{{1 2} {3 {4 5}}}\n"
  },
  {
    "path": "tests/snapshots/run_file__mapper_syntax.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/mapper_syntax.bend\n---\nNumScott:\n(2, (10, 3))\n\nScott:\n(2, (10, 3))\n"
  },
  {
    "path": "tests/snapshots/run_file__match.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match.bend\n---\nNumScott:\nλ* λa a\n\nScott:\nλ* λa a\n"
  },
  {
    "path": "tests/snapshots/run_file__match_builtins.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_builtins.bend\n---\nNumScott:\n{\"ello\" \"world\"}\n\nScott:\n{\"ello\" \"world\"}\n"
  },
  {
    "path": "tests/snapshots/run_file__match_mult_linearization.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_mult_linearization.bend\n---\nNumScott:\nλa switch a = a { 0: λb λc λd (+ (+ b c) d); _: λf λg λh (+ (+ (+ a-1 f) g) h); }\n\nScott:\nλa switch a = a { 0: λb λc λd (+ (+ b c) d); _: λf λg λh (+ (+ (+ a-1 f) g) h); }\n"
  },
  {
    "path": "tests/snapshots/run_file__match_num_adt_tup_parser.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_num_adt_tup_parser.bend\n---\nNumScott:\nλa (a Result_/Err/tag {\"(+\" *})\n\nScott:\nλ* λa (a {\"(+\" *})\n"
  },
  {
    "path": "tests/snapshots/run_file__match_num_explicit_bind.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_num_explicit_bind.bend\n---\nNumScott:\n3\n\nScott:\n3\n"
  },
  {
    "path": "tests/snapshots/run_file__match_num_num_to_char.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_num_num_to_char.bend\n---\nNumScott:\n{{[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16777215]} [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0]}\n\nScott:\n{{[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 16777215]} [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 0]}\n"
  },
  {
    "path": "tests/snapshots/run_file__match_num_succ_complex.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_num_succ_complex.bend\n---\nNumScott:\n[[5, 5, *, *, *, *], [5, 5, *, *, *, *]]\n\nScott:\n[[5, 5, *, *, *, *], [5, 5, *, *, *, *]]\n"
  },
  {
    "path": "tests/snapshots/run_file__match_str.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_str.bend\n---\nNumScott:\n[2, 2, 1, 0, 0, 0]\n\nScott:\n[2, 2, 1, 0, 0, 0]\n"
  },
  {
    "path": "tests/snapshots/run_file__match_sup.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_sup.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/match_sup.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  7 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__match_vars.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/match_vars.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/match_vars.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Irrefutable 'match' expression. All cases after variable pattern 'true' will be ignored.\n  Note that to use a 'match' expression, the matched constructors need to be defined in a 'data' definition.\n  If this is not a mistake, consider using a 'let' expression instead.\n"
  },
  {
    "path": "tests/snapshots/run_file__math.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/math.bend\n---\nNumScott:\n[0.500, 0.866, 0.577, 1.732, 1.155, 2.000, 0.551, 1.020, 0.482, 1.176, 0.785, 1.571, 3.000, 10.000, 9.000, -8.000, -9.000, 1.000, 1.000, 0.000, 0.000, 6.000, 6.000, 5.000]\n\nScott:\n[0.500, 0.866, 0.577, 1.732, 1.155, 2.000, 0.551, 1.020, 0.482, 1.176, 0.785, 1.571, 3.000, 10.000, 9.000, -8.000, -9.000, 1.000, 1.000, 0.000, 0.000, 6.000, 6.000, 5.000]\n"
  },
  {
    "path": "tests/snapshots/run_file__merge_sort.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/merge_sort.bend\n---\nNumScott:\n120\n\nScott:\n120\n"
  },
  {
    "path": "tests/snapshots/run_file__mixed_syntax.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/mixed_syntax.bend\n---\nNumScott:\nBool/False\n\nScott:\nBool/False\n"
  },
  {
    "path": "tests/snapshots/run_file__names_hyphen.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/names_hyphen.bend\n---\nNumScott:\n1\n\nScott:\n1\n"
  },
  {
    "path": "tests/snapshots/run_file__names_hyphen_toplevel.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/names_hyphen_toplevel.bend\n---\nNumScott:\nλa (a λb (b Foo-Bar/Baz-Qux/tag 1) fun-with-hyphen)\n\nScott:\nλa (a λb (b 1) fun-with-hyphen)\n"
  },
  {
    "path": "tests/snapshots/run_file__nat_add.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/nat_add.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/nat_add.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m   5 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__nat_add_num.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/nat_add_num.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/nat_add_num.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m   5 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__nested_list_and_string.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/nested_list_and_string.bend\n---\nNumScott:\nλa [a, λ* 2, λe (e String/Cons/tag [7, \"1234\", 9] λm (m String/Cons/tag a λn (n String/Cons/tag * \"42\")))]\n\nScott:\nλa [a, λ* 2, λ* λe (e [7, \"1234\", 9] λ* λm (m a λ* λn (n * \"42\")))]\n"
  },
  {
    "path": "tests/snapshots/run_file__nested_map_get.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/nested_map_get.bend\n---\nNumScott:\n43\n\nScott:\n43\n"
  },
  {
    "path": "tests/snapshots/run_file__nested_map_set.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/nested_map_set.bend\n---\nNumScott:\n100\n\nScott:\n100\n"
  },
  {
    "path": "tests/snapshots/run_file__nested_str.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/nested_str.bend\n---\nNumScott:\n(λa (a String/Cons/tag \"a\" \"\"), (λc (c String/Cons/tag 97 λd (d String/Cons/tag \"bc\" \"\")), (λg (g String/Cons/tag \"ab\" \"c\"), λk (k String/Cons/tag \"ab\" λn (n String/Cons/tag \"cd\" \"\")))))\n\nScott:\n(λ* λa (a \"a\" \"\"), (λ* λc (c 97 λ* λd (d \"bc\" \"\")), (λ* λg (g \"ab\" \"c\"), λ* λk (k \"ab\" λ* λn (n \"cd\" \"\")))))\n"
  },
  {
    "path": "tests/snapshots/run_file__num_cast.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/num_cast.bend\n---\nNumScott:\n(16777215, (1, (0, (400, (1, (1, (0, (0, (16777215, (0, (0, (99999, (+0, (+1, (+123456, (+1, (+1, (-3, (-3, (+8388607, (-8388608, (+0, (99999, (0.000, (1.000, (123456.000, (-1.000, (1.000, (0.000, 400.000)))))))))))))))))))))))))))))\n\nScott:\n(16777215, (1, (0, (400, (1, (1, (0, (0, (16777215, (0, (0, (99999, (+0, (+1, (+123456, (+1, (+1, (-3, (-3, (+8388607, (-8388608, (+0, (99999, (0.000, (1.000, (123456.000, (-1.000, (1.000, (0.000, 400.000)))))))))))))))))))))))))))))\n"
  },
  {
    "path": "tests/snapshots/run_file__num_match_missing_var.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/num_match_missing_var.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/num_match_missing_var.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m '}'\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  7 |   \u001b[4m\u001b[31m_\u001b[0m: f\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__num_pred.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/num_pred.bend\n---\nNumScott:\n42\n\nScott:\n42\n"
  },
  {
    "path": "tests/snapshots/run_file__open.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/open.bend\n---\nNumScott:\n{λa (a State/new/tag 1 2) 1}\n\nScott:\n{λa (a 1 2) 1}\n"
  },
  {
    "path": "tests/snapshots/run_file__open_object.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/open_object.bend\n---\nNumScott:\n1\n\nScott:\n1\n"
  },
  {
    "path": "tests/snapshots/run_file__open_too_many_ctrs.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/open_too_many_ctrs.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/open_too_many_ctrs.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Type 'MyTree' of an 'open' has more than one constructor\n"
  },
  {
    "path": "tests/snapshots/run_file__open_undefined_type.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/open_undefined_type.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/open_undefined_type.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Type 'MyType' of an 'open' is not defined\n"
  },
  {
    "path": "tests/snapshots/run_file__ops.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/ops.bend\n---\nNumScott:\n[1, 1, 1, 1, 1, 1, 1, 1]\n\nScott:\n[1, 1, 1, 1, 1, 1, 1, 1]\n"
  },
  {
    "path": "tests/snapshots/run_file__override_list_ctr.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/override_list_ctr.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/override_list_ctr.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of builtin (constructor) 'List/Nil'.\nLocation:\n\u001b[0m  1 | \u001b[4m\u001b[31mList/Nil = *\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__override_str_ctr.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/override_str_ctr.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/override_str_ctr.bend\u001b[0m\u001b[1m :\u001b[0m\nRedefinition of builtin (constructor) 'String/Cons'.\nLocation:\n\u001b[0m  1 | \u001b[4m\u001b[31mString/Cons = *\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__pred.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/pred.bend\n---\nNumScott:\n2\n\nScott:\n2\n"
  },
  {
    "path": "tests/snapshots/run_file__queue.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/queue.bend\n---\nNumScott:\nλa λ* (a 1 λb λ* (b 2 λc λ* (c 3 Nil)))\n\nScott:\nλa λ* (a 1 λb λ* (b 2 λc λ* (c 3 Nil)))\n"
  },
  {
    "path": "tests/snapshots/run_file__radix_sort_ctr.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/radix_sort_ctr.bend\n---\nNumScott:\n120\n\nScott:\n120\n"
  },
  {
    "path": "tests/snapshots/run_file__readback_hvm1_main.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/readback_hvm1_main.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn definition '\u001b[4mMain\u001b[0m\u001b[1m':\u001b[0m\n  Main definition can't be referenced inside the program.\n"
  },
  {
    "path": "tests/snapshots/run_file__readback_list_other_ctr.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/readback_list_other_ctr.bend\n---\nNumScott:\nλa (a List/Cons/tag λb (b String/Cons/tag 97 λc (c tup/pair/tag 98 \"c\")) λe (e List/Cons/tag 1 λf (f tup/pair/tag 2 [3, 4])))\n\nScott:\nλ* λa (a λ* λb (b 97 λc (c 98 \"c\")) λ* λe (e 1 λf (f 2 [3, 4])))\n"
  },
  {
    "path": "tests/snapshots/run_file__readback_num_ops.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/readback_num_ops.bend\n---\nNumScott:\n[λb (+ 1 b), λd (+ 1 d), λf λg (+ f g), λi (- i 1), λk (- 1 k), λm λn λo (+ m (- n o)), λq λr λs (+ (- q r) s)]\n\nScott:\n[λb (+ 1 b), λd (+ 1 d), λf λg (+ f g), λi (- i 1), λk (- 1 k), λm λn λo (+ m (- n o)), λq λr λs (+ (- q r) s)]\n"
  },
  {
    "path": "tests/snapshots/run_file__recursive_bind.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/recursive_bind.bend\n---\nNumScott:\nλa (a Result/Err/tag 0)\n\nScott:\nλ* λa (a 0)\n"
  },
  {
    "path": "tests/snapshots/run_file__recursive_combinator.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/recursive_combinator.bend\n---\nNumScott:\n0\n\nScott:\n0\n"
  },
  {
    "path": "tests/snapshots/run_file__recursive_combinator_nested.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/recursive_combinator_nested.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/recursive_combinator_nested.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m\n\u001b[0m   4 |   _\u001b[4m\u001b[31m:\u001b[0m a-1\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__recursive_match_native.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/recursive_match_native.bend\n---\nNumScott:\n512\n\nScott:\n512\n"
  },
  {
    "path": "tests/snapshots/run_file__ref_resolution.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/ref_resolution.bend\n---\nNumScott:\n42\n\nScott:\n42\n"
  },
  {
    "path": "tests/snapshots/run_file__repeated_name_truncation.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/repeated_name_truncation.bend\n---\nNumScott:\nλ* long_name_that_truncates2\n\nScott:\nλ* long_name_that_truncates2\n"
  },
  {
    "path": "tests/snapshots/run_file__scopeless_discard.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/scopeless_discard.bend\n---\nNumScott:\n{2 *}\n\nScott:\n{2 *}\n"
  },
  {
    "path": "tests/snapshots/run_file__str_concat.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/str_concat.bend\n---\nNumScott:\n\"hello world\"\n\nScott:\n\"hello world\"\n"
  },
  {
    "path": "tests/snapshots/run_file__str_inc.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/str_inc.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/str_inc.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m ')'\n\u001b[1m- detected:\u001b[0m\n\u001b[0m  3 | (StrGo 0 str) \u001b[4m\u001b[31m=\u001b[0m str\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__str_inc_eta.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/str_inc_eta.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/str_inc_eta.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m ')'\n\u001b[1m- detected:\u001b[0m\n\u001b[0m   3 | (StrGo 0  (head, tail)) \u001b[4m\u001b[31m=\u001b[0m (head, tail)\u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__str_len.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/str_len.bend\n---\nNumScott:\n4\n\nScott:\n4\n"
  },
  {
    "path": "tests/snapshots/run_file__strict_monad_fn.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/strict_monad_fn.bend\n---\nNumScott:\nλa (a Result/Err/tag 1)\n\nScott:\nλ* λa (a 1)\n"
  },
  {
    "path": "tests/snapshots/run_file__sum_tree.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/sum_tree.bend\n---\nNumScott:\n256\n\nScott:\n256\n"
  },
  {
    "path": "tests/snapshots/run_file__sup_app.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/sup_app.bend\n---\nNumScott:\n{3 3}\n\nScott:\n{3 3}\n"
  },
  {
    "path": "tests/snapshots/run_file__sup_reconstruction.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/sup_reconstruction.bend\n---\nNumScott:\nλa a\n\nScott:\nλa a\n"
  },
  {
    "path": "tests/snapshots/run_file__superposed_is_even.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/superposed_is_even.bend\n---\nNumScott:\n{{MyBool/T MyBool/F} {MyBool/T MyBool/F}}\n\nScott:\n{{MyBool/T MyBool/F} {MyBool/T MyBool/F}}\n"
  },
  {
    "path": "tests/snapshots/run_file__tagged_lam.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/tagged_lam.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/tagged_lam.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1m- expected:\u001b[0m term\n\u001b[1m- detected:\u001b[0m end of input\n\u001b[0m  2 | \u001b[4m\u001b[31m \u001b[0m\n"
  },
  {
    "path": "tests/snapshots/run_file__tree_to_list.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/tree_to_list.bend\n---\nNumScott:\n[4, 3, 2, 1]\n\nScott:\n[4, 3, 2, 1]\n"
  },
  {
    "path": "tests/snapshots/run_file__tup_list_strings.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/tup_list_strings.bend\n---\nNumScott:\n{[{\"foo\" 0}, {\"foo\" 0}, {\"foo\" 1}] 4}\n\nScott:\n{[{\"foo\" 0}, {\"foo\" 0}, {\"foo\" 1}] 4}\n"
  },
  {
    "path": "tests/snapshots/run_file__tup_reconstruction.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/tup_reconstruction.bend\n---\nNumScott:\nλa a\n\nScott:\nλa a\n"
  },
  {
    "path": "tests/snapshots/run_file__tuple_eta.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/tuple_eta.bend\n---\nNumScott:\n(10.000, 10.000)\n\nScott:\n(10.000, 10.000)\n"
  },
  {
    "path": "tests/snapshots/run_file__tuple_rots.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/tuple_rots.bend\n---\nNumScott:\nλa (a 5 6 7 8 1 2 3 4)\n\nScott:\nλa (a 5 6 7 8 1 2 3 4)\n"
  },
  {
    "path": "tests/snapshots/run_file__unaplied_str.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/unaplied_str.bend\n---\nNumScott:\nλa λb λc (c String/Cons/tag a λd (d String/Cons/tag 98 λe (e String/Cons/tag 99 λf (f String/Cons/tag b \"\"))))\n\nScott:\nλa λb λ* λc (c a λ* λd (d 98 λ* λe (e 99 λ* λf (f b \"\"))))\n"
  },
  {
    "path": "tests/snapshots/run_file__unbound_wrap.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/unbound_wrap.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/unbound_wrap.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Reference to undefined function 'Maybe_/wrap'\n"
  },
  {
    "path": "tests/snapshots/run_file__unscoped_never_used.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/unscoped_never_used.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/run_file/unscoped_never_used.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mmain\u001b[0m\u001b[1m':\u001b[0m\n  Unscoped variable from lambda 'λ$x' is never used.\n"
  },
  {
    "path": "tests/snapshots/run_file__unused_dup_var.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/unused_dup_var.bend\n---\nNumScott:\nλa (a X)\n\nScott:\nλa (a X)\n"
  },
  {
    "path": "tests/snapshots/run_file__unused_main_var.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/unused_main_var.bend\n---\nNumScott:\n[10, 12, 14, 16]\n\nScott:\n[10, 12, 14, 16]\n"
  },
  {
    "path": "tests/snapshots/run_file__world.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/world.bend\n---\nNumScott:\n\"🌎\"\n\nScott:\n\"🌎\"\n"
  },
  {
    "path": "tests/snapshots/run_file__wrong_string.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/run_file/wrong_string.bend\n---\nNumScott:\nλa (a String/Cons/tag λ* 4 λb (b String/Cons/tag * \"\"))\n\nScott:\nλ* λa (a λ* 4 λ* λb (b * \"\"))\n"
  },
  {
    "path": "tests/snapshots/scott_triggers_unused__test.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/scott_triggers_unused/test.bend\n---\n@bool/f = ((@bool/f/tag a) a)\n\n@bool/f/tag = 1\n\n@bool/t = ((@bool/t/tag a) a)\n\n@bool/t/tag = 0\n\n@main = (((?((0 (* 1)) a) a) b) b)\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__adt_tup_era.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/adt_tup_era.bend\n---\nunchecked Foo: Any\n(Foo) = λa match a { Tuple/Pair b c: (match b { Tuple/Pair d e: λf d; } c); }\n\nunchecked Main: Any\n(Main) = (Foo (Tuple/Pair 1 5))\n\nTuple/Pair/tag: _\n(Tuple/Pair/tag) = 0\n\nTuple/Pair: (Any -> Any -> Tuple)\n(Tuple/Pair) = λa λb λc (c Tuple/Pair/tag a b)\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/simplify_matches/adt_tup_era.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Unreachable pattern matching rule '(Foo *)' (rule index 1).\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__already_flat.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/already_flat.bend\n---\nunchecked Rule1: Any\n(Rule1) = λa a\n\nunchecked Rule2: Any\n(Rule2) = λa λb b\n\nunchecked Rule3: Any\n(Rule3) = λa λb λc λd (a b c d)\n\nunchecked Rule4: Any\n(Rule4) = λa match a { Foo/CtrA: λb b; Foo/CtrB c: c; }\n\nunchecked Rule5: Any\n(Rule5) = λa match a { Bar/CtrA1 b: λc let d = c; (b d); Bar/CtrA2 e f: λg let h = g; (e f h); Bar/CtrA3 i: λj let k = j; (match k { Baz/CtrB0: λl (Bar/CtrA3 l); Baz/CtrB1 m: λn (Bar/CtrA3 n m); Baz/CtrB2 o: λp (Bar/CtrA3 p (Baz/CtrB2 o)); Baz/CtrB3 q: λr (r q); } i); }\n\nunchecked Rule6: Any\n(Rule6) = λa a\n\nFoo/CtrA/tag: _\n(Foo/CtrA/tag) = 0\n\nFoo/CtrA: Foo\n(Foo/CtrA) = λa (a Foo/CtrA/tag)\n\nFoo/CtrB/tag: _\n(Foo/CtrB/tag) = 1\n\nFoo/CtrB: (Any -> Foo)\n(Foo/CtrB) = λa λb (b Foo/CtrB/tag a)\n\nBar/CtrA1/tag: _\n(Bar/CtrA1/tag) = 0\n\nBar/CtrA1: (Any -> Bar)\n(Bar/CtrA1) = λa λb (b Bar/CtrA1/tag a)\n\nBar/CtrA2/tag: _\n(Bar/CtrA2/tag) = 1\n\nBar/CtrA2: (Any -> Any -> Bar)\n(Bar/CtrA2) = λa λb λc (c Bar/CtrA2/tag a b)\n\nBar/CtrA3/tag: _\n(Bar/CtrA3/tag) = 2\n\nBar/CtrA3: (Any -> Bar)\n(Bar/CtrA3) = λa λb (b Bar/CtrA3/tag a)\n\nBaz/CtrB0/tag: _\n(Baz/CtrB0/tag) = 0\n\nBaz/CtrB0: Baz\n(Baz/CtrB0) = λa (a Baz/CtrB0/tag)\n\nBaz/CtrB1/tag: _\n(Baz/CtrB1/tag) = 1\n\nBaz/CtrB1: (Any -> Baz)\n(Baz/CtrB1) = λa λb (b Baz/CtrB1/tag a)\n\nBaz/CtrB2/tag: _\n(Baz/CtrB2/tag) = 2\n\nBaz/CtrB2: (Any -> Baz)\n(Baz/CtrB2) = λa λb (b Baz/CtrB2/tag a)\n\nBaz/CtrB3/tag: _\n(Baz/CtrB3/tag) = 3\n\nBaz/CtrB3: (Any -> Baz)\n(Baz/CtrB3) = λa λb (b Baz/CtrB3/tag a)\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/simplify_matches/already_flat.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mRule4\u001b[0m\u001b[1m':\u001b[0m\n  Unreachable pattern matching rule '(Rule4 x)' (rule index 2).\n\u001b[1mIn definition '\u001b[4mRule6\u001b[0m\u001b[1m':\u001b[0m\n  Unreachable pattern matching rule '(Rule6 b)' (rule index 1).\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__bits_dec.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/bits_dec.bend\n---\nunchecked Data.Bits.dec: Any\n(Data.Bits.dec) = λa match a { Data/Bits/e: Data/Bits/e; Data/Bits/o b: match b { Data/Bits/e: Data/Bits/e; Data/Bits/o c: (Data/Bits/i (Data.Bits.dec c)); Data/Bits/i d: (Data/Bits/i (Data.Bits.dec d)); }; Data/Bits/i e: match e { Data/Bits/e: (Data/Bits/o Data/Bits/e); Data/Bits/o f: (Data/Bits/o f); Data/Bits/i g: (Data/Bits/o g); }; }\n\nData/Bits/e/tag: _\n(Data/Bits/e/tag) = 0\n\nData/Bits/e: Data/Bits\n(Data/Bits/e) = λa (a Data/Bits/e/tag)\n\nData/Bits/o/tag: _\n(Data/Bits/o/tag) = 1\n\nData/Bits/o: (Any -> Data/Bits)\n(Data/Bits/o) = λa λb (b Data/Bits/o/tag a)\n\nData/Bits/i/tag: _\n(Data/Bits/i/tag) = 2\n\nData/Bits/i: (Any -> Data/Bits)\n(Data/Bits/i) = λa λb (b Data/Bits/i/tag a)\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__complex_with_case.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/complex_with_case.bend\n---\nunchecked map: Any\n(map) = λa λb (match b { Tree_/Node c d e f: λg (Tree_/Node (map g c) (map g d) (map g e) (map g f)); Tree_/Leaf h: λi (Tree_/Leaf (i h)); } a)\n\nunchecked main: Any\n(main) = map\n\nTree_/Node/tag: _\n(Tree_/Node/tag) = 0\n\nTree_/Node: (Any -> Any -> Any -> Any -> Tree_)\n(Tree_/Node) = λa λb λc λd λe (e Tree_/Node/tag a b c d)\n\nTree_/Leaf/tag: _\n(Tree_/Leaf/tag) = 1\n\nTree_/Leaf: (Any -> Tree_)\n(Tree_/Leaf) = λa λb (b Tree_/Leaf/tag a)\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__double_unwrap_box.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/double_unwrap_box.bend\n---\nunchecked DoubleUnbox: Any\n(DoubleUnbox) = λa match a { Boxed/Box b: match b { Boxed/Box c: λd let e = d; let f = e; c; }; }\n\nunchecked Main: Any\n(Main) = (DoubleUnbox (Boxed/Box (Boxed/Box 0)) 5)\n\nBoxed/Box/tag: _\n(Boxed/Box/tag) = 0\n\nBoxed/Box: (Any -> Boxed)\n(Boxed/Box) = λa λb (b Boxed/Box/tag a)\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/simplify_matches/double_unwrap_box.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mDoubleUnbox\u001b[0m\u001b[1m':\u001b[0m\n  Unreachable pattern matching rule '(DoubleUnbox * x)' (rule index 1).\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__double_unwrap_maybe.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/double_unwrap_maybe.bend\n---\nunchecked DoubleUnwrap: Any\n(DoubleUnwrap) = λa match a { Maybe_/Some b: match b { Maybe_/Some c: λd let e = d; let f = e; c; Maybe_/None: λg let h = g; let i = h; i; }; Maybe_/None: λj let k = j; k; }\n\nunchecked Main: Any\n(Main) = (DoubleUnwrap (Maybe_/Some Maybe_/None) 5)\n\nMaybe_/Some/tag: _\n(Maybe_/Some/tag) = 0\n\nMaybe_/Some: (Any -> Maybe_)\n(Maybe_/Some) = λa λb (b Maybe_/Some/tag a)\n\nMaybe_/None/tag: _\n(Maybe_/None/tag) = 1\n\nMaybe_/None: Maybe_\n(Maybe_/None) = λa (a Maybe_/None/tag)\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__flatten_with_terminal.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/flatten_with_terminal.bend\n---\nunchecked Foo: Any\n(Foo) = λa switch a { 0: λb let c = b; match c { A_t/A d: match d { B_t/B: B_t/B; }; }; _ e: λf let g = f; *; }\n\nunchecked main: Any\n(main) = (Foo 2 (A_t/A B_t/B))\n\nA_t/A/tag: _\n(A_t/A/tag) = 0\n\nA_t/A: (Any -> A_t)\n(A_t/A) = λa λb (b A_t/A/tag a)\n\nB_t/B/tag: _\n(B_t/B/tag) = 0\n\nB_t/B: B_t\n(B_t/B) = λa (a B_t/B/tag)\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__irrefutable_case.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/irrefutable_case.bend\n---\nunchecked l: Any\n(l) = 1001\n\nunchecked v1: Any\n(v1) = l\n\nunchecked v2: Any\n(v2) = l\n\nunchecked v3: Any\n(v3) = 2002\n\nunchecked v4: Any\n(v4) = 3003\n\nunchecked v5: Any\n(v5) = (λa a 5005)\n\nunchecked main: Any\n(main) = (v1, v2, v3, v4, v5)\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/simplify_matches/irrefutable_case.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mv1\u001b[0m\u001b[1m':\u001b[0m\n  Irrefutable 'match' expression. All cases after variable pattern 'x' will be ignored.\n  Note that to use a 'match' expression, the matched constructors need to be defined in a 'data' definition.\n  If this is not a mistake, consider using a 'let' expression instead.\n\u001b[1mIn definition '\u001b[4mv2\u001b[0m\u001b[1m':\u001b[0m\n  Irrefutable 'match' expression. All cases after variable pattern 'x' will be ignored.\n  Note that to use a 'match' expression, the matched constructors need to be defined in a 'data' definition.\n  If this is not a mistake, consider using a 'let' expression instead.\n\u001b[1mIn definition '\u001b[4mv3\u001b[0m\u001b[1m':\u001b[0m\n  Irrefutable 'match' expression. All cases after variable pattern 'x' will be ignored.\n  Note that to use a 'match' expression, the matched constructors need to be defined in a 'data' definition.\n  If this is not a mistake, consider using a 'let' expression instead.\n\u001b[1mIn definition '\u001b[4mv4\u001b[0m\u001b[1m':\u001b[0m\n  Irrefutable 'match' expression. All cases after variable pattern 'x' will be ignored.\n  Note that to use a 'match' expression, the matched constructors need to be defined in a 'data' definition.\n  If this is not a mistake, consider using a 'let' expression instead.\n\u001b[1mIn definition '\u001b[4mv5\u001b[0m\u001b[1m':\u001b[0m\n  Irrefutable 'match' expression. All cases after variable pattern 'x' will be ignored.\n  Note that to use a 'match' expression, the matched constructors need to be defined in a 'data' definition.\n  If this is not a mistake, consider using a 'let' expression instead.\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__linearize_match_all.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/linearize_match_all.bend\n---\nunchecked A: Any\n(A) = λa switch a { 0: λb λc (b c); _ d: λe λf (d e f); }\n\nunchecked B: Any\n(B) = λa λb λc (switch c { 0: λd λe (d e); _ f: λg λh (g h f); } a b)\n\nunchecked C: Any\n(C) = λa λb λc switch c { 0: (a b); _ d: (a b d); }\n\nunchecked D: Any\n(D) = λa switch a { 0: λb λc c; _ d: λe λf (d f); }\n\nunchecked E: Any\n(E) = λa match a { ConsList/Cons b c: λd let e = d; (match e { ConsList/Cons f g: λh λi (h i f g); ConsList/Nil: λj λk (ConsList/Cons j k ConsList/Nil); } b c); ConsList/Nil: λl let m = l; (ConsList/Nil m); }\n\nunchecked A2: Any\n(A2) = λa match a { ConsList/Cons b c: λd λe (b c d e); ConsList/Nil: λf λg (f g); }\n\nunchecked B2: Any\n(B2) = λa λb λc (match c { ConsList/Cons d e: λf λg (f g d e); ConsList/Nil: λh λi (h i); } a b)\n\nunchecked C2: Any\n(C2) = λa λb λc match c { ConsList/Cons d e: (a b d e); ConsList/Nil: (a b); }\n\nunchecked D2: Any\n(D2) = λa match a { ConsList/Cons b c: λd λe (b c d e); ConsList/Nil: λf λg (f g); }\n\nunchecked main: Any\n(main) = *\n\nConsList/Cons/tag: _\n(ConsList/Cons/tag) = 0\n\nConsList/Cons: (Any -> Any -> ConsList)\n(ConsList/Cons) = λa λb λc (c ConsList/Cons/tag a b)\n\nConsList/Nil/tag: _\n(ConsList/Nil/tag) = 1\n\nConsList/Nil: ConsList\n(ConsList/Nil) = λa (a ConsList/Nil/tag)\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__match_str.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/match_str.bend\n---\nunchecked is_as: Any\n(is_as) = λa match a { String/Nil: 1; String/Cons b c: (switch (- b 65) { 0: λd match d { String/Nil: 0; String/Cons e f: (switch (- e 115) { 0: λg match g { String/Nil: 2; String/Cons h i: 0; }; _ j: λk 0; } f); }; _ l: λm (switch (- l 31) { 0: λn match n { String/Nil: 0; String/Cons o p: (switch (- o 115) { 0: λq match q { String/Nil: 2; String/Cons r s: 0; }; _ t: λu 0; } p); }; _ v: λw 0; } m); } c); }\n\nunchecked main: Any\n(main) = *\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__nested.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/nested.bend\n---\nunchecked Rule: Any\n(Rule) = λa match a { Foo/CtrA b c: (match c { Bar/CtrB1 d: λe (e d); Bar/CtrB2 f g: λh (match f { Baz/CtrC: λi λj (i j); } h g); } b); Foo/CtrB k: k; }\n\nFoo/CtrA/tag: _\n(Foo/CtrA/tag) = 0\n\nFoo/CtrA: (Any -> Any -> Foo)\n(Foo/CtrA) = λa λb λc (c Foo/CtrA/tag a b)\n\nFoo/CtrB/tag: _\n(Foo/CtrB/tag) = 1\n\nFoo/CtrB: (Any -> Foo)\n(Foo/CtrB) = λa λb (b Foo/CtrB/tag a)\n\nBar/CtrB1/tag: _\n(Bar/CtrB1/tag) = 0\n\nBar/CtrB1: (Any -> Bar)\n(Bar/CtrB1) = λa λb (b Bar/CtrB1/tag a)\n\nBar/CtrB2/tag: _\n(Bar/CtrB2/tag) = 1\n\nBar/CtrB2: (Any -> Any -> Bar)\n(Bar/CtrB2) = λa λb λc (c Bar/CtrB2/tag a b)\n\nBaz/CtrC/tag: _\n(Baz/CtrC/tag) = 0\n\nBaz/CtrC: Baz\n(Baz/CtrC) = λa (a Baz/CtrC/tag)\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/simplify_matches/nested.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mRule\u001b[0m\u001b[1m':\u001b[0m\n  Unreachable pattern matching rule '(Rule (Foo/CtrA a b))' (rule index 2).\n  Unreachable pattern matching rule '(Rule x)' (rule index 4).\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__nested2.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/nested2.bend\n---\nunchecked Foo: Any\n(Foo) = λa λb (match b { List/Nil: λc (c List/Nil); List/Cons d e: λf (match e { List/Nil: λg λh (g (List/Cons h List/Nil)); List/Cons i j: λk λl (k l i j); } f d); } a)\n\nList/Nil/tag: _\n(List/Nil/tag) = 0\n\nList/Nil: (List T)\n(List/Nil) = λa (a List/Nil/tag)\n\nList/Cons/tag: _\n(List/Cons/tag) = 1\n\nList/Cons: (T -> (List T) -> (List T))\n(List/Cons) = λa λb λc (c List/Cons/tag a b)\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__nested_0ary.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/nested_0ary.bend\n---\nunchecked Unpack: Any\n(Unpack) = λa λb (match b { list/Cons c d: λe (match d { list/Cons f g: λh λi (h (list/Cons i (list/Cons f g))); list/Nil: λj λk k; } e c); list/Nil: λl list/Nil; } a)\n\nlist/Cons/tag: _\n(list/Cons/tag) = 0\n\nlist/Cons: (Any -> Any -> list)\n(list/Cons) = λa λb λc (c list/Cons/tag a b)\n\nlist/Nil/tag: _\n(list/Nil/tag) = 1\n\nlist/Nil: list\n(list/Nil) = λa (a list/Nil/tag)\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__redundant_with_era.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/redundant_with_era.bend\n---\nunchecked Fn2: Any\n(Fn2) = λa switch a { 0: λb let c = b; let (d, e) = c; let (f, g) = e; g; _ h: λi let j = i; let (k, l) = j; let (m, n) = l; n; }\n\nunchecked main: Any\n(main) = *\n\u001b[4m\u001b[1m\u001b[33mWarnings:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/simplify_matches/redundant_with_era.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFn2\u001b[0m\u001b[1m':\u001b[0m\n  Unreachable pattern matching rule '(Fn2 0 *)' (rule index 1).\n  Unreachable pattern matching rule '(Fn2 a *)' (rule index 2).\n"
  },
  {
    "path": "tests/snapshots/simplify_matches__wrong_fn_arity.bend.snap",
    "content": "---\nsource: tests/golden_tests.rs\ninput_file: tests/golden_tests/simplify_matches/wrong_fn_arity.bend\n---\n\u001b[4m\u001b[1m\u001b[31mErrors:\u001b[0m\n\u001b[1mIn \u001b[4mtests/golden_tests/simplify_matches/wrong_fn_arity.bend\u001b[0m\u001b[1m :\u001b[0m\n\u001b[1mIn definition '\u001b[4mFoo\u001b[0m\u001b[1m':\u001b[0m\n  Incorrect pattern matching rule arity. Expected 3 args, found 0.\n"
  }
]